Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local FPGA Support - Arty/VCU118 #747

Merged
merged 98 commits into from
Jan 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
a8834c7
First draft of local FPGA support, targeting ARTY. Able to build veri…
Sep 2, 2020
3b6d584
Adding submodule update script for FPGA tools.
Sep 2, 2020
0656c5d
First pass on using CY make system
abejgonzalez Sep 4, 2020
5a885fd
Delete old makefiles | Full switch to CY make system
abejgonzalez Sep 4, 2020
9903629
Simple makefile variable fix to allow make mcs
Sep 4, 2020
8eb807a
Use DigitalTop in Platform | Use Chipyard BootRom
abejgonzalez Sep 5, 2020
1fa1b6d
Small makefile cleanup
abejgonzalez Sep 5, 2020
b6a54ea
Merge pull request #669 from ucb-bar/local-fpga-arty-abe
abejgonzalez Sep 7, 2020
a8083aa
First pass at fpga-shells with IOBinders
abejgonzalez Sep 7, 2020
c49eef3
Small cleanup to CY DigitalTop | Move E300 configs to unique folder
abejgonzalez Sep 7, 2020
2580073
Comment cleanup
abejgonzalez Sep 7, 2020
56eead4
NOT WORKING: VCU118 Commit
abejgonzalez Sep 9, 2020
e98a0f1
Connected UART nicely
abejgonzalez Sep 11, 2020
382e5f1
Add forgotten file
abejgonzalez Sep 12, 2020
69bf39b
Added more overlays | Closer to bringup platform
abejgonzalez Sep 13, 2020
72c0f4b
Add GPIO Overlay
abejgonzalez Sep 13, 2020
f1b40d5
Connected clocks | Exposed Master TL port
abejgonzalez Sep 15, 2020
9135cda
Bypassing AON for system.reset. Using reset_core in ArtyShell test ha…
Sep 17, 2020
afc085a
Removed AON block from E300 design. Debug over JTAG still functioning.
Oct 5, 2020
9664b84
Pointing common.mk's SOURCE_DIR to subdirectories of fpga, to avoid c…
Oct 6, 2020
309b9ee
Merge remote-tracking branch 'upstream/dev' into local-fpga-arty-abe
Oct 6, 2020
a673189
Bumping submodules to upstream dev's commits.
Oct 7, 2020
252f9c6
Beginning to modify Arty TestHarness to conform with HarnessBinders. …
Oct 7, 2020
7d1a153
Initial pass at HarnessBinders for Arty.
Oct 10, 2020
54acfe7
Some HarnessBinder testing with Jerry's debug suggestions.
Oct 10, 2020
dca56cd
Removing redefinitions of HasHarnessSignalReferences and HasTestHarne…
Oct 11, 2020
895dcd6
referencing fully qualified chipyard.harness.OverrideHarnessBinder to…
Oct 11, 2020
8257775
Connect DDR from harness
abejgonzalez Oct 13, 2020
9c298ee
Support evaluation of HarnessBinders in LazyModule context
jerryz123 Oct 13, 2020
5bbd865
Add MMC Device section to the DTS
abejgonzalez Oct 13, 2020
341a6cc
Merge remote-tracking branch 'origin/lazy-harnessbinders' into local-…
abejgonzalez Oct 13, 2020
dda7622
temp commit
abejgonzalez Oct 14, 2020
949d605
Revert "Support evaluation of HarnessBinders in LazyModule context"
abejgonzalez Oct 14, 2020
dcac9b7
Basic working with UART
abejgonzalez Oct 14, 2020
7f387a2
Working up until the MMC attachment
abejgonzalez Oct 15, 2020
9ba4918
Inject MMCDevice into TLSPI Node
abejgonzalez Oct 15, 2020
dd358f4
UART Working... Bumped to newer fpga-shells
abejgonzalez Oct 19, 2020
db73cab
Add BootROM | Fix ResetWrangler for DDR | Add scripts
abejgonzalez Oct 21, 2020
a07369a
Merge remote-tracking branch 'ch/lazy-iobinders' into local-fpga-temp
abejgonzalez Oct 21, 2020
3c42e2c
Fixed BootROM | Updated HarnessBinders
abejgonzalez Oct 27, 2020
0eca51b
Reorganize into bringup/simple | Bump sifive-blocks
abejgonzalez Oct 27, 2020
c619df2
Merge branch 'local-fpga-temp' into local-fpga-support
abejgonzalez Nov 5, 2020
3994bce
Merge remote-tracking branch 'secret/local-fpga-arty-harnessbinders' …
abejgonzalez Nov 5, 2020
356fa70
Update fpga-shells submodule | Fix Arty Makefile lines
abejgonzalez Nov 5, 2020
a7ab0da
Updated VCU118 | Bumped naming on Arty
abejgonzalez Nov 5, 2020
a281869
Fix Arty merge and errors from CY bump
abejgonzalez Nov 5, 2020
43e64de
Readd ignore fpga-shells in main submodule setup
abejgonzalez Nov 5, 2020
083f34a
Revert Chipyard system | Create new VCU118 Chipyard system
abejgonzalez Nov 5, 2020
255e88f
Initial outline of FPGA prototyping docs
abejgonzalez Nov 6, 2020
9a5b67b
Use Chipyard configs as a base (VCU118)
abejgonzalez Nov 6, 2020
b0fc045
Use Chipyard configs as base (Arty)
abejgonzalez Nov 6, 2020
313fa4f
Merge branch 'local-fpga-support' into local-fpga-support-docs
abejgonzalez Nov 6, 2020
84508be
More FPGA prototyping docs
abejgonzalez Nov 6, 2020
c721d89
Point to SiFive license | Add require on Arty
abejgonzalez Nov 6, 2020
b0eed50
[temp] start integrating tsi host widget
abejgonzalez Nov 6, 2020
b7ef848
Add some docs on debugging
abejgonzalez Nov 6, 2020
6aae66c
Add TSI Host Widget
abejgonzalez Nov 6, 2020
7baa134
Use 2nd system clock for TSI DDR | Small cleanups
abejgonzalez Nov 7, 2020
98fcea7
Adding initial Arty documentation; will be expanded further.
Nov 7, 2020
e20311d
Adding implementation details for the Arty.
Nov 7, 2020
8fb76dd
Fixed syntax.
Nov 7, 2020
9144e3c
Fix pin mappings for TSI DDR
abejgonzalez Nov 7, 2020
c5e8fec
Small renaming and cleanup
abejgonzalez Nov 7, 2020
a9b9054
Merge pull request #5 from ucb-bar/local-fpga-temp
abejgonzalez Nov 7, 2020
5a4cad0
Merge pull request #6 from ucb-bar/local-fpga-support-docs
abejgonzalez Nov 7, 2020
9c12ce0
Create new prototyping section | Address some comments | Small clarif…
abejgonzalez Nov 8, 2020
38a6bae
Add CI for Arty/VCU118 (just verilog)
abejgonzalez Nov 8, 2020
244205e
Separate new sys_clk and ddr2 from TSI
abejgonzalez Nov 9, 2020
082b230
Add missing file
abejgonzalez Nov 9, 2020
4145465
Merge pull request #7 from ucb-bar/local-fpga-support-more-modular
abejgonzalez Nov 9, 2020
714fb56
Addressing PR comments in docs.
Nov 9, 2020
7ca3be2
Bump bringup VCU118 | Ignore HTIF if no-debug module
abejgonzalez Nov 12, 2020
d5a0fd1
Address CircleCI
abejgonzalez Nov 12, 2020
999ae05
Address some docs, build.sbt, .gitmodules
abejgonzalez Nov 12, 2020
55f19f7
Address fpga srcs
abejgonzalez Nov 12, 2020
63b3d42
Change NotSimulator to NoSimulator
abejgonzalez Nov 12, 2020
d4d989c
Rename make target to bitstream | Delete unused make stuff / tcl
abejgonzalez Nov 12, 2020
1b4826a
Generalize debug-bitstream
abejgonzalez Nov 13, 2020
61e1730
Small fix to docs
abejgonzalez Nov 13, 2020
f8bd8ea
Small fix to run_impl_bitstream
abejgonzalez Nov 13, 2020
c8add48
Reduce BOOM default freq. (play it safe)
abejgonzalez Nov 15, 2020
d94a8ef
Fix TLMemPort comment | Use Option instead of NoSimulator
abejgonzalez Nov 15, 2020
95e8365
Small change to Arty reset binder name, per Jerry's PR comment.
Nov 19, 2020
661a770
Share DigitalTop/ChipyardSystem | Fix small naming compile error
abejgonzalez Nov 23, 2020
8f6de22
Fixed TinyRocketConfig | Small cleanup to VCU118/Arty configs
abejgonzalez Nov 24, 2020
f1fdab5
Move TL mem switch frag to CY | Add require to not have TL/AXI backin…
abejgonzalez Nov 24, 2020
ca723f1
Merge branch 'dev' into local-fpga-support
abejgonzalez Dec 28, 2020
7a0ca12
Bump build.sbt
abejgonzalez Dec 28, 2020
b797077
Fix Arty documentation link
abejgonzalez Dec 28, 2020
cb488b8
Init fpga-shells submod in CI
abejgonzalez Dec 28, 2020
fbb8ad3
Fix small documentation errors
abejgonzalez Dec 28, 2020
b1cedf2
Make TinyRocketConfig work with multi-clock work
abejgonzalez Dec 28, 2020
a6ca3d2
Bump testchipip
abejgonzalez Dec 29, 2020
5099a96
Bump fpga-shells (to sifive/master)
abejgonzalez Dec 29, 2020
0509c0c
Merge remote-tracking branch 'origin/dev' into local-fpga-support
abejgonzalez Dec 30, 2020
c8cbfbe
Small documentation addition on bringup
abejgonzalez Dec 31, 2020
4d3ff26
Bump testchipip
abejgonzalez Jan 4, 2021
5505aef
Bump sifive-blocks
abejgonzalez Jan 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions .circleci/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,19 @@ Here the key is built from a string where the `checksum` portion converts the fi
This directory contains all the collateral for the Chipyard CI to work.
The following is included:

`build-toolchains.sh` # build either riscv-tools or esp-tools
`create-hash.sh` # create hashes of riscv-tools/esp-tools so circleci caching can work
`do-rtl-build.sh` # use verilator to build a sim executable (remotely)
`config.yml` # main circleci config script to enumerate jobs/workflows
`defaults.sh` # default variables used
`build-toolchains.sh` # build either riscv-tools or esp-tools
`create-hash.sh` # create hashes of riscv-tools/esp-tools so circleci caching can work
`do-rtl-build.sh` # use verilator to build a sim executable (remotely)
`config.yml` # main circleci config script to enumerate jobs/workflows
`defaults.sh` # default variables used
`check-commit.sh` # check that submodule commits are valid
`build-extra-tests.sh` # build default chipyard tests located in tests/
`clean-old-files.sh` # clean up build server files
`do-fpga-rtl-build.sh` # similar to `do-rtl-build` but using fpga/
`install-verilator.sh` # install verilator on build server
`run-firesim-scala-tests.sh` # run firesim scala tests
`run-tests.sh # run tests for a specific set of designs
`images/` # docker image used in CI

How things are setup for Chipyard
---------------------------------
Expand Down
4 changes: 4 additions & 0 deletions .circleci/check-commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ dir="vlsi"
branches=("master")
search

submodules=("fpga-shells")
dir="fpga"
branches=("master")
search

# turn off verbose printing to make this easier to read
set +x
Expand Down
15 changes: 14 additions & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,15 @@ commands:
build-script:
type: string
default: "do-rtl-build.sh"
build-type:
type: string
default: "sim"
steps:
- setup-tools:
tools-version: "<< parameters.tools-version >>"
- run:
name: Building << parameters.group-key >> subproject using Verilator
command: .circleci/<< parameters.build-script >> << parameters.group-key >>
command: .circleci/<< parameters.build-script >> << parameters.group-key >> << parameters.build-type >>
no_output_timeout: << parameters.timeout >>
- save_cache:
key: << parameters.group-key >>-{{ .Branch }}-{{ .Revision }}
Expand Down Expand Up @@ -368,6 +371,12 @@ jobs:
project-key: "firesim-multiclock"
run-script: "run-firesim-scala-tests.sh"
timeout: "20m"
prepare-chipyard-fpga:
executor: main-env
steps:
- prepare-rtl:
group-key: "group-fpga"
build-type: "fpga"

# Order and dependencies of jobs to run
workflows:
Expand Down Expand Up @@ -507,4 +516,8 @@ workflows:
- install-verilator
- build-extra-tests

# Prepare the fpga builds (just Verilog)
- prepare-chipyard-fpga:
requires:
- install-riscv-toolchain

5 changes: 5 additions & 0 deletions .circleci/defaults.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ REMOTE_ESP_DIR=$REMOTE_WORK_DIR/esp-tools-install
REMOTE_CHIPYARD_DIR=$REMOTE_WORK_DIR/chipyard
REMOTE_SIM_DIR=$REMOTE_CHIPYARD_DIR/sims/verilator
REMOTE_FIRESIM_DIR=$REMOTE_CHIPYARD_DIR/sims/firesim/sim
REMOTE_FPGA_DIR=$REMOTE_CHIPYARD_DIR/fpga
REMOTE_JAVA_OPTS="-Xmx10G -Xss8M"
# Disable the supershell to greatly improve the readability of SBT output when captured by Circle CI
REMOTE_SBT_OPTS="-Dsbt.ivy.home=$REMOTE_WORK_DIR/.ivy2 -Dsbt.supershell=false -Dsbt.global.base=$REMOTE_WORK_DIR/.sbt -Dsbt.boot.directory=$REMOTE_WORK_DIR/.sbt/boot"
Expand All @@ -53,6 +54,7 @@ grouping["group-peripherals"]="chipyard-dmirocket chipyard-blkdev chipyard-spifl
grouping["group-accels"]="chipyard-nvdla chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-streaming-fir chipyard-streaming-passthrough"
grouping["group-tracegen"]="tracegen tracegen-boom"
grouping["group-other"]="icenet testchipip"
grouping["group-fpga"]="arty vcu118"

# key value store to get the build strings
declare -A mapping
Expand Down Expand Up @@ -83,3 +85,6 @@ mapping["firesim-multiclock"]="SCALA_TEST=firesim.firesim.RocketMulticlockF1Test
mapping["fireboom"]="SCALA_TEST=firesim.firesim.BoomF1Tests"
mapping["icenet"]="SUB_PROJECT=icenet"
mapping["testchipip"]="SUB_PROJECT=testchipip"

mapping["arty"]="SUB_PROJECT=arty verilog"
mapping["vcu118"]="SUB_PROJECT=vcu118 verilog"
30 changes: 24 additions & 6 deletions .circleci/do-rtl-build.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
#!/bin/bash

# create the different verilator builds
# argument is the make command string
# usage:
# do-rtl-build.sh <make command string> sim
# run rtl build for simulations and copy back results
# do-rtl-build.sh <make command string> fpga
# run rtl build for fpga and don't copy back results

# turn echo on and error on earliest command
set -ex
Expand All @@ -15,6 +19,7 @@ trap clean EXIT

cd $LOCAL_CHIPYARD_DIR
./scripts/init-submodules-no-riscv-tools.sh
./scripts/init-fpga.sh

# set stricthostkeychecking to no (must happen before rsync)
run "echo \"Ping $SERVER\""
Expand Down Expand Up @@ -50,9 +55,19 @@ else
copy $LOCAL_RISCV_DIR/ $SERVER:$REMOTE_RISCV_DIR
fi

# choose what make dir to use
case $2 in
"sim")
REMOTE_MAKE_DIR=$REMOTE_SIM_DIR
;;
"fpga")
REMOTE_MAKE_DIR=$REMOTE_FPGA_DIR
;;
esac

# enter the verilator directory and build the specific config on remote server
run "export RISCV=\"$TOOLS_DIR\"; \
make -C $REMOTE_SIM_DIR clean;"
make -C $REMOTE_MAKE_DIR clean;"

read -a keys <<< ${grouping[$1]}

Expand All @@ -64,11 +79,14 @@ do
export PATH=\"$REMOTE_VERILATOR_DIR/bin:\$PATH\"; \
export VERILATOR_ROOT=\"$REMOTE_VERILATOR_DIR\"; \
export COURSIER_CACHE=\"$REMOTE_WORK_DIR/.coursier-cache\"; \
make -j$REMOTE_MAKE_NPROC -C $REMOTE_SIM_DIR FIRRTL_LOGLEVEL=info JAVA_OPTS=\"$REMOTE_JAVA_OPTS\" SBT_OPTS=\"$REMOTE_SBT_OPTS\" ${mapping[$key]}"
make -j$REMOTE_MAKE_NPROC -C $REMOTE_MAKE_DIR FIRRTL_LOGLEVEL=info JAVA_OPTS=\"$REMOTE_JAVA_OPTS\" SBT_OPTS=\"$REMOTE_SBT_OPTS\" ${mapping[$key]}"
done

run "rm -rf $REMOTE_CHIPYARD_DIR/project"

# copy back the final build
mkdir -p $LOCAL_CHIPYARD_DIR
copy $SERVER:$REMOTE_CHIPYARD_DIR/ $LOCAL_CHIPYARD_DIR
# choose to copy back results
if [ $2 = "sim" ]; then
# copy back the final build
mkdir -p $LOCAL_CHIPYARD_DIR
copy $SERVER:$REMOTE_CHIPYARD_DIR/ $LOCAL_CHIPYARD_DIR
fi
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,6 @@
[submodule "generators/riscv-sodor"]
path = generators/riscv-sodor
url = https://github.com/ucb-bar/riscv-sodor.git
[submodule "fpga/fpga-shells"]
path = fpga/fpga-shells
url = https://github.com/sifive/fpga-shells.git
202 changes: 202 additions & 0 deletions LICENSE.SiFive
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright 2016-2017 SiFive, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
8 changes: 8 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -311,3 +311,11 @@ lazy val firechip = (project in file("generators/firechip"))
testGrouping in Test := isolateAllTests( (definedTests in Test).value ),
testOptions in Test += Tests.Argument("-oF")
)
lazy val fpga_shells = (project in file("./fpga/fpga-shells"))
.dependsOn(rocketchip, sifive_blocks)
.settings(libraryDependencies ++= rocketLibDeps.value)
.settings(commonSettings)

lazy val fpga_platforms = (project in file("./fpga"))
.dependsOn(chipyard, fpga_shells)
.settings(commonSettings)
2 changes: 1 addition & 1 deletion common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ include $(base_dir)/tools/dromajo/dromajo.mk
# Returns a list of files in directory $1 with file extension $2.
lookup_srcs = $(shell find -L $(1)/ -name target -prune -o -iname "*.$(2)" -print 2> /dev/null)

SOURCE_DIRS = $(addprefix $(base_dir)/,generators sims/firesim/sim tools/barstools/iocell)
SOURCE_DIRS = $(addprefix $(base_dir)/,generators sims/firesim/sim tools/barstools/iocell fpga/fpga-shells fpga/src)
SCALA_SOURCES = $(call lookup_srcs,$(SOURCE_DIRS),scala)
VLOG_SOURCES = $(call lookup_srcs,$(SOURCE_DIRS),sv) $(call lookup_srcs,$(SOURCE_DIRS),v)
# This assumes no SBT meta-build sources
Expand Down
Loading