Skip to content
New issue

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

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

Already on GitHub? # to your account

Flatten barstools into Chipyard #1855

Merged
merged 322 commits into from
Apr 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
322 commits
Select commit Hold shift + click to select a range
513da4e
Support non-prefixed ports
edwardcwang Aug 1, 2017
a177c89
Finish rewriting in new format
edwardcwang Aug 1, 2017
f854c6c
Nuke hardcoded JSON tests from orbit
edwardcwang Aug 1, 2017
0f2d00e
Add some documentation
edwardcwang Aug 1, 2017
5d14f19
Start cost function refactor
edwardcwang Aug 1, 2017
122e433
Bump mdf again
edwardcwang Aug 1, 2017
0e474da
Add external metric
edwardcwang Aug 1, 2017
ffd7893
Implement cost selection from command line
edwardcwang Aug 1, 2017
00c99f5
Add sbt-assembly for making jar
edwardcwang Aug 1, 2017
923a08d
Fix typo
edwardcwang Aug 1, 2017
a25c84f
Specify cost function from command line
edwardcwang Aug 1, 2017
0203aa9
Move notes to main file since they apply there as well
edwardcwang Aug 1, 2017
0f46837
Add cost function selection test
edwardcwang Aug 1, 2017
4013b19
Implement command line cost metric selection
edwardcwang Aug 2, 2017
df8b581
Trim redundant MDF field
edwardcwang Aug 2, 2017
f9edbfe
Move cost metric to its own file
edwardcwang Aug 2, 2017
e89079f
Test for non-empty Verilog
edwardcwang Aug 2, 2017
e726dae
Bump mdf
edwardcwang Aug 2, 2017
676b8e7
Add rocket-chip inspired tests
edwardcwang Aug 3, 2017
5d3bebd
Re-implement parallel mapping
edwardcwang Aug 9, 2017
af67540
Add test from Donggyu
edwardcwang Aug 9, 2017
43d2427
Enable some more tests
edwardcwang Aug 9, 2017
11bd811
Bump mdf
edwardcwang Aug 9, 2017
13d8a0f
Add strict mode
edwardcwang Aug 9, 2017
4eca53b
Bump mdf again
edwardcwang Aug 9, 2017
d2b1050
Not a scaladoc
edwardcwang Aug 9, 2017
bc26f5e
Address review comments
edwardcwang Aug 28, 2017
e09f8b1
Fix grammar
edwardcwang Oct 3, 2017
c91d98d
Bump mdf for the last time, for now
edwardcwang Oct 3, 2017
e1499fc
Update command line help
edwardcwang Oct 3, 2017
c884a2f
Correct multi-ported memory compilation (#27)
edwardcwang Oct 7, 2017
8a30579
Support firrtl output in command line for MacroCompiler (#28)
edwardcwang Dec 4, 2017
79c8c28
Add memory compiler to macros (#29)
azidar Feb 17, 2018
1ccd8f6
Bump mdf to match master
edwardcwang Feb 17, 2018
f7634b8
Include macro compiler JAR compilation instructions
edwardcwang Mar 21, 2018
93bf789
Fix corner case in compiling a small mem using a large lib (#32)
edwardcwang Apr 26, 2018
74ca2bc
Remove deprecated run-main
edwardcwang Oct 31, 2018
d1c1b3f
Overhaul CompilerMode parsing
edwardcwang Apr 26, 2018
4727d47
Add options to force certain memories to lib or synflops
edwardcwang Apr 26, 2018
f310d45
Refactor barstools for new versions of things.
grebe Dec 19, 2018
801abd9
Fix null pointer exception in options parser
grebe Feb 6, 2019
7bbf7f0
Run transforms in slightly different order
grebe Feb 7, 2019
22e6d9c
Fix repl-seq-mem
grebe Feb 7, 2019
c8efc5e
Refactor the harness generation; use upstream arguments and passes wh…
jwright6323 Feb 7, 2019
79b8fd3
This compiles and works correctly, but is kind of hacky, and will bre…
jwright6323 Feb 8, 2019
12842cb
Add MemConf and change MacroCompiler to use a conf file instead of MD…
jwright6323 Feb 12, 2019
d861fdd
Don't run DCE && Profit
jwright6323 Feb 12, 2019
f0c7bab
Use the correct 'magic values' for the port names
jwright6323 Feb 12, 2019
efd2f09
Naming consistency (memMode -> memFormat)
jwright6323 Feb 13, 2019
1f58ea1
Style/Comments from review of #35
jwright6323 Feb 13, 2019
9d505d6
Fixed index offset in mask port mapping. (#38)
jamesdunn Feb 13, 2019
a10a6cc
Add SimDTM to list of extmodules
colinschmidt Mar 2, 2019
45278a6
Make SRAM per port clocks optional
colinschmidt Mar 11, 2019
a0510e6
Change cost to double from BigInt and fix default metric
colinschmidt Mar 15, 2019
98a4108
Filter compiler libraries before mapping
colinschmidt Mar 16, 2019
6cdf978
Fix forms of passes to happen before replseqmem
colinschmidt Mar 17, 2019
44e9782
Fix cost metric for non Compiler libs
colinschmidt Mar 17, 2019
0b9d74a
Fix unit tests update cost function once more
colinschmidt Mar 18, 2019
f5b4522
Avoid using the github redirect for mdf
colinschmidt Mar 18, 2019
de94c23
Add Travis (#48)
colinschmidt Mar 18, 2019
817726f
stop exceptions on empty conf files (#43)
abejgonzalez Mar 18, 2019
fdad525
HighForm has whens so we need to check for instances there (#49)
colinschmidt Mar 18, 2019
affd033
Emit hammer IR from MacroCompiler (#50)
colinschmidt Mar 26, 2019
8f7af5b
Fix annos (#53)
colinschmidt Mar 28, 2019
e548210
Add options to emit top/harness firrtl and annotations (#54)
jwright6323 Mar 29, 2019
c23b2b6
SRAM depth to bigint
colinschmidt May 2, 2019
82636b3
Upstream MemConf and use it (with some slight tweaks)
jwright6323 Mar 5, 2019
e3c8227
Filter all EmittedAnnotations from JSON emission (#64)
albert-magyar Jul 30, 2019
26096e0
Coordinate Top and Harness generation (#63)
albert-magyar Jul 31, 2019
76f6c8a
remove large annotations
abejgonzalez Aug 17, 2019
76ccb75
Filter out all deleted annotations
albert-magyar Aug 19, 2019
c96a5e5
Print the firrtl exception if we get one
colinschmidt Oct 24, 2019
7f0828c
Fix macrocompiler for RW mask port
abejgonzalez Oct 26, 2019
c100479
Use x instead of e to match other case
colinschmidt Oct 28, 2019
be3b05a
add test case
abejgonzalez Oct 28, 2019
6c59cac
fix spacing
abejgonzalez Oct 28, 2019
8b0ef4d
Merge pull request #69 from ucb-bar/abejgonzalez-patch-1
abejgonzalez Nov 4, 2019
46e2ecb
Fix MacroCompiler for CE-less Library Memories
abejgonzalez Nov 5, 2019
3498480
enforce re is disabled when we is enabled
abejgonzalez Nov 5, 2019
4db4ebb
Merge pull request #66 from ucb-bar/large-anno-remove
abejgonzalez Nov 6, 2019
ecc52b9
add test case for we bug
abejgonzalez Nov 6, 2019
7a0246b
Merge pull request #70 from ucb-bar/abejgonzalez-patch-1
abejgonzalez Nov 7, 2019
1e114d0
Match inner variables
abejgonzalez Nov 7, 2019
3bba55c
Merge pull request #68 from ucb-bar/print-firrtl-exception
abejgonzalez Nov 7, 2019
e4cce07
Fix issues after chisel update for august 2019
colinschmidt Oct 23, 2019
e008120
Updates for rocket-chip bump
colinschmidt Oct 31, 2019
5198b38
Merge pull request #73 from ucb-bar/rc-bump-aug-2019
colinschmidt Dec 12, 2019
8ca8765
Correctly specify width of default zero output value (#74)
albert-magyar Feb 12, 2020
7de4c47
Update to chisel 3.2.x
colinschmidt Feb 18, 2020
db0efd3
Fix CI tests
colinschmidt Feb 20, 2020
a00771d
Merge branch 'master' into bump_chisel_3.2.x
colinschmidt Feb 20, 2020
5fcae01
Fix width of zeros after #74
colinschmidt Feb 20, 2020
63d74bc
Merge pull request #75 from ucb-bar/bump_chisel_3.2.x
colinschmidt Feb 26, 2020
84c880d
WIP; does not compile, but useful as a code review starting point
jwright6323 Mar 17, 2020
8a38171
First pass that works
jwright6323 Mar 19, 2020
f6057ff
Allow naming, make the auto-clone IO method work
jwright6323 Mar 19, 2020
a6731f6
Rename example -> generic
jwright6323 Mar 30, 2020
62df799
Remove type casts; use a tuple match instead
jwright6323 Mar 30, 2020
bc3f8a4
Forgot to update the verilog modules
jwright6323 Mar 30, 2020
c043f34
Code review feedback
jwright6323 Mar 31, 2020
6638f5c
More CR feedback, fix bug introduced in previous commit
jwright6323 Mar 31, 2020
db67763
Merge pull request #78 from ucb-bar/iocells
jwright6323 Mar 31, 2020
e230e8c
Update IOCell gen to handle abstract and async reset (#79)
davidbiancolin Apr 18, 2020
acda0a3
Changes to tapeout transforms to support FIRRTL 1.3
albert-magyar May 6, 2020
757c39a
Change macrocompiler to support FIRRTL 1.3 -- not backwards compatible
albert-magyar May 6, 2020
c4e5f66
Provide MidForm circuit to MacroCompilerTransform
albert-magyar May 13, 2020
b1c1f01
Fix direction of output enable in output io cell
colinschmidt May 29, 2020
7e6e19b
Merge pull request #82 from ucb-bar/fix-output-iocell
abejgonzalez May 30, 2020
aa1c90c
Fix IOCells generation
jerryz123 Jun 30, 2020
f791073
Merge pull request #85 from ucb-bar/iocells_fix
jerryz123 Jul 3, 2020
ba68167
Clean up IOCell types and parameterization
jerryz123 Sep 4, 2020
e4cd2b0
This is mess clean it up
chick Sep 10, 2020
67de39e
Refactor tapeout for Chisel 3.4, Firrtl 1.4
chick Sep 12, 2020
d06d8cc
- FoundryPadsYaml would not parse yaml
chick Sep 14, 2020
e6e1ed8
Merge pull request #86 from ucb-bar/iocell-params
jerryz123 Sep 14, 2020
31590a7
Undo regression in iocell flexibility
jerryz123 Sep 14, 2020
1435f09
Merge pull request #88 from ucb-bar/iocell-fix
jerryz123 Sep 15, 2020
847f72e
Support plusarg_reader blackbox in the harness
jerryz123 Sep 15, 2020
4a5c75f
Add explicit naming of IOs generated by generateIOFromSignal
jerryz123 Sep 17, 2020
382cefc
Merge pull request #89 from ucb-bar/support-plusargs
jerryz123 Sep 18, 2020
0430403
- Simplest way to make custom transforms run in same place as they di…
chick Sep 28, 2020
f51156b
- Fixed ResetNSpec
chick Sep 28, 2020
1a82c08
- Make transfrorms run in as close to same order as before
chick Sep 29, 2020
8903c04
- fix call to `ceilLog2` in macros
chick Sep 29, 2020
a1dfd4f
Remove all of the PadStuff
chick Sep 30, 2020
fc3a3ea
Update MacroCompiler for Chisel 3.4
timsnyder-siv Oct 21, 2020
aca4bd5
update build.sbt for Chisel3.4/FIRRTL1.4
timsnyder-siv Oct 23, 2020
446cb84
fixup! Update MacroCompiler for Chisel 3.4
timsnyder-siv Oct 23, 2020
20d370b
Merge branch 'firrtl-1.4-remove-clk-stuff' into chisel34
timsnyder-siv Oct 23, 2020
8e5757b
Merge pull request #92 from sifive/chisel34
chick Nov 13, 2020
845af06
Merge remote-tracking branch 'origin/master' into firrtl-1.4-remove-c…
abejgonzalez Nov 20, 2020
9be550e
Bump to new dep. API | Automatically avoid renaming ExtMod's and circ…
abejgonzalez Nov 26, 2020
fa699af
Add missing dependency to put AvoidExtModuleCollisions before ReplSeqMem
abejgonzalez Nov 28, 2020
3a29f53
Use stable dep. versions | Small bumps/cleanup
abejgonzalez Dec 1, 2020
15fa68b
Bump MDF for updated scala version
davidbiancolin Dec 11, 2020
62f3116
Fix ResetInv test
abejgonzalez Dec 11, 2020
26dce44
Generate LowFirrtl for Retime tests
abejgonzalez Dec 11, 2020
689ebdc
Add invalidates=false to RetimeTransform
abejgonzalez Dec 11, 2020
8c93874
Merge pull request #87 from ucb-bar/firrtl-1.4-remove-clk-stuff
abejgonzalez Dec 13, 2020
0672411
bump mdf for ucb-bar/plsi-mdf#7
timsnyder-siv Dec 24, 2020
1761d50
Get rid of scalastyle checkers.
chick Feb 1, 2021
0faa16d
Merge pull request #94 from ucb-bar/get-rid-of-scala-style-checkers
chick Feb 2, 2021
19e51f3
Make the directory structure match the packages
chick Feb 4, 2021
93f86a5
Reformat all scala files in iocells
chick Feb 4, 2021
68c3425
Reformat all scala files in macros
chick Feb 4, 2021
caa1467
Reformat all scala files in tapeout
chick Feb 4, 2021
d9d9d0f
Move to scalatest 3.2
chick Feb 4, 2021
ca4013b
Remove deprecated Driver stuff macros package
chick Feb 8, 2021
afcdcc6
Modernize deprecated Chisel/Firrtl constructs
chick Feb 9, 2021
e650d5b
- changed directory path to iocells to use directories rather than do…
chick Feb 9, 2021
4ef162f
Merge pull request #97 from ucb-bar/fix-deprecations-1
chick Feb 10, 2021
f37385c
Merge branch 'master' into fix-deprecations-3
chick Feb 10, 2021
5616b9d
- remove unused harnessTransforms
chick Feb 14, 2021
c052f79
- Add rocketchip dependency to try and fix run problem in chipyard si…
chick Feb 14, 2021
0558008
- Don't carry over OutputFileAnnotaton to the harness phase of Genera…
chick Feb 15, 2021
5040e0d
- Pull rocket dependency back out
chick Feb 15, 2021
7c2d7ab
Add in missing transforms
chick Feb 16, 2021
bbc8800
Get topAnnos into the mix
chick Feb 17, 2021
8a93d8b
Ignore GenerateTopAndHarness test for now
chick Feb 19, 2021
ddea198
Macrocompiler should prioritize memories with no masks with DefaultCo…
jerryz123 Feb 22, 2021
bca3896
Merge remote-tracking branch 'origin/master' into mask_penalty
jerryz123 Feb 22, 2021
a3711c4
Remove fully commented out original file Generate.scala
chick Feb 22, 2021
12d0c25
Merge pull request #98 from ucb-bar/fix-deprecations-3
abejgonzalez Feb 23, 2021
c8f3d34
Merge pull request #99 from ucb-bar/mask_penalty
jerryz123 Mar 12, 2021
1d6486f
Use github actions for testing
chick Jul 1, 2021
3d571b2
Use github actions for testing
chick Jul 1, 2021
ea7663d
Merge pull request #93 from sifive/bump_mdf
chick Jul 1, 2021
61ab39f
Restore proper naming of harness annotation file
jwright6323 Jul 12, 2021
f196c38
Merge pull request #104 from ucb-bar/harness_anno_fix
jwright6323 Jul 12, 2021
731a529
Merge pull request #103 from ucb-bar/use-github-actions-for-ci
chick Jul 13, 2021
479e63c
Fix bug that prunes InstanceTargets out of the AnnotationSeq in RePar…
jwright6323 Jul 12, 2021
53a2d69
Also make ReParentCircuit work on ReferenceTargets
jwright6323 Jul 13, 2021
66eee23
Fix harness .fir file output location
jwright6323 Jul 13, 2021
0971920
Merge pull request #105 from ucb-bar/fix_reparent_circuit
jwright6323 Jul 20, 2021
cdd8af4
Merge pull request #106 from ucb-bar/fix_harness_fir
jwright6323 Jul 20, 2021
c907a73
Moved a zillion files all over the place so that everything is now
chick Aug 6, 2021
db2739b
iocell won't run without this syntax
chick Aug 9, 2021
b107a6b
Add some missing resources
chick Aug 9, 2021
e113a7b
Add setting to have `sbt` not exit
chick Aug 10, 2021
352fa91
IOCell toBool => asBool
chick Aug 10, 2021
74d5da6
Move src/ from tapeout to top level
chick Aug 10, 2021
08eba27
MultiPort remove random println
chick Aug 10, 2021
b2cee7c
GenerateTopSpec get rid of `Console.withOut`
chick Aug 11, 2021
acfbe42
Merge pull request #109 from ucb-bar/move-src-to-toplevel
chick Aug 12, 2021
ae01e17
Adding support for Scala 2.13
chick Aug 16, 2021
4e9b44c
Merge pull request #111 from ucb-bar/scala-2.13
ekiwi Aug 16, 2021
edb1537
Formatting code to chisel standard
chick Aug 16, 2021
143af1a
Fix all warnings in barstool.macros._
chick Aug 17, 2021
db54d55
This file seems to have missed a scalafmt pass
chick Aug 17, 2021
c519b26
Fix scalafmt check
chick Aug 17, 2021
6f62c58
Oops, missed `needs` in all steps passed
chick Aug 17, 2021
314d807
Merge pull request #112 from ucb-bar/macro-code-cleanup
chick Aug 18, 2021
4f1f9fc
Remove sbt subproject "tapeout"
Feb 2, 2022
d1de92d
Make readme consistent with new sbt setup
Feb 2, 2022
a0d1fdb
Add Chisel compiler plugin
Feb 3, 2022
adaca59
Bump Chisel versions to x.5.1
Feb 8, 2022
064c8be
Merge pull request #118 from tymcauley/remove-sbt-subproject
abejgonzalez Feb 11, 2022
2635bb4
No-op barstools SFC compiler
abejgonzalez Oct 8, 2022
cf75889
Attempt at checking for Fixed types
abejgonzalez Oct 10, 2022
d1295e6
Add back HarnessConf
joonho3020 Dec 23, 2022
850f613
Remove CheckForUnsupportedFirtoolTypes
joonho3020 Dec 24, 2022
2dfa184
Fix formatting
joonho3020 Dec 24, 2022
13e2bb9
Remove GenerateTopSpec.scala test as the FIRRTL passes are removed
joonho3020 Dec 24, 2022
5af7f21
Remove executeTop & make everything to execute
joonho3020 Dec 28, 2022
723bab7
Revert "Remove executeTop & make everything to execute"
joonho3020 Dec 28, 2022
899387f
Fix dump to dumpAnnos
joonho3020 Dec 28, 2022
e340f12
Remove all passes again | rename GenerateTopAndHarness to GenerateMod…
joonho3020 Dec 29, 2022
06db605
Fixes test for CI
joonho3020 Dec 29, 2022
b71c31e
Merge pull request #123 from ucb-bar/remove-barstools-compiler
jerryz123 Jan 9, 2023
df3232f
Run RemoveValidIf pass for updated CIRCT
abejgonzalez Feb 6, 2023
653989c
Merge remote-tracking branch 'origin/master' into run-extra-passes
abejgonzalez Feb 6, 2023
9760528
Merge pull request #125 from ucb-bar/run-extra-passes
harrisonliew Feb 10, 2023
a9f9068
remove duplicate compiler annotation
joonho3020 Feb 21, 2023
4e398da
Update scala/sbt/chisel versions
tymcauley Feb 23, 2023
20587cf
Run scalafmt after scala version update
tymcauley Feb 23, 2023
d9317d6
Remove unused test file
tymcauley Feb 23, 2023
c58458e
Merge pull request #127 from tymcauley/use-scala-2.13
abejgonzalez Mar 1, 2023
3090096
merge master
joonho3020 Mar 1, 2023
39b4af7
Merge pull request #126 from ucb-bar/rm-duplicate-compiler-anno
abejgonzalez Mar 2, 2023
fe81afe
Update build.sbt for sbt-assembly
abejgonzalez Mar 3, 2023
0a4466d
Add name to IOCell definition
Mar 18, 2023
0df6e34
formatting fix
Mar 18, 2023
cc4f841
Code improvement; define IOCell name as Option and place in trait to …
Mar 18, 2023
96155c8
format IOCell.scala
Mar 18, 2023
de5c7d3
Merge pull request #129 from kevindna/master
kevindna Mar 18, 2023
2ef368b
Merge pull request #130 from ucb-bar/sbt-assembly
abejgonzalez May 18, 2023
400ce78
move iocells to separate "project" root
ethanwu10 May 31, 2023
2d45407
asBool() to asBool
jerryz123 Jun 21, 2023
deb28e6
Merge pull request #131 from ucb-bar/move-iocells
jerryz123 Jul 9, 2023
29a2d91
Merge remote-tracking branch 'origin/master' into chisel3.6
jerryz123 Jul 10, 2023
27f4b83
Remove firrtl_interpreter tests
jerryz123 Jul 12, 2023
c0a6c2c
Merge pull request #132 from ucb-bar/chisel3.6
jerryz123 Jul 26, 2023
368dde4
Generate 1 file per generic IOCell
jerryz123 Jul 30, 2023
c8723f4
Macrocompiler: FIRRTL-elab macros 1-at-a-time
jerryz123 Jul 30, 2023
f5fe37c
Delete IOCell.v
jerryz123 Jul 31, 2023
887c1c9
Merge pull request #133 from ucb-bar/fixes
jerryz123 Jul 31, 2023
eef5efb
Dump per macro verilog (overridden by final verilog output)
abejgonzalez Oct 16, 2023
60a1be9
Merge pull request #134 from ucb-bar/intermediate-dump-vlog
abejgonzalez Oct 16, 2023
7819dc6
Emit a empty HammerIR JSON when no macros to avoid downstream tool pr…
jerryz123 Oct 19, 2023
32b329b
Merge pull request #135 from ucb-bar/empty-hammerir
harrisonliew Oct 19, 2023
16b5637
Update deprecated APIs to prepare for Chisel 5
tymcauley Jan 3, 2024
7b68cd7
Merge pull request #136 from tymcauley/chisel-5-prep
jerryz123 Jan 3, 2024
277dc92
Merge remote-tracking branch 'barstools/master' into flatten-barstools
jerryz123 Apr 19, 2024
c97627c
Move IOCell files
jerryz123 Apr 19, 2024
4830ebf
Delete useless files from barstools merge
jerryz123 Apr 19, 2024
33a1fe3
Move barstools tapeout src to tools/tapeout
jerryz123 Apr 19, 2024
ac11f6d
Remove barstools tests
jerryz123 Apr 19, 2024
d7060f4
Delete barstools submodule
jerryz123 Apr 19, 2024
9436aea
Fixes for in-tree barstools
jerryz123 Apr 19, 2024
088460f
Update docs to reflect in-tree barstools
jerryz123 Apr 19, 2024
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
2 changes: 1 addition & 1 deletion .github/scripts/check-commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ dir="software"
branches=("master" "dev")
search

submodules=("DRAMSim2" "axe" "barstools" "dsptools" "rocket-dsp-utils" "torture" "fixedpoint" "cde")
submodules=("DRAMSim2" "axe" "dsptools" "rocket-dsp-utils" "torture" "fixedpoint" "cde")
dir="tools"
branches=("master" "dev" "main")
search
Expand Down
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,6 @@
[submodule "tools/axe"]
path = tools/axe
url = https://github.com/CTSRD-CHERI/axe.git
[submodule "tools/barstools"]
path = tools/barstools
url = https://github.com/ucb-bar/barstools.git
[submodule "tools/cde"]
path = tools/cde
url = https://github.com/chipsalliance/cde.git
Expand Down
9 changes: 3 additions & 6 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ lazy val testchipip = (project in file("generators/testchipip"))
.settings(commonSettings)

lazy val chipyard = (project in file("generators/chipyard"))
.dependsOn(testchipip, rocketchip, boom, hwacha, rocketchip_blocks, rocketchip_inclusive_cache, iocell,
.dependsOn(testchipip, rocketchip, boom, hwacha, rocketchip_blocks, rocketchip_inclusive_cache,
sha3, // On separate line to allow for cleaner tutorial-setup patches
dsptools, rocket_dsp_utils,
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
Expand Down Expand Up @@ -256,13 +256,10 @@ lazy val rocc_acc_utils = (project in file("generators/rocc-acc-utils"))
.settings(libraryDependencies ++= rocketLibDeps.value)
.settings(commonSettings)

lazy val iocell = Project(id = "iocell", base = file("./tools/barstools/") / "iocell")
.settings(chiselSettings)
.settings(commonSettings)

lazy val tapeout = (project in file("./tools/barstools/"))
lazy val tapeout = (project in file("./tools/tapeout/"))
.settings(chiselSettings)
.settings(commonSettings)
.settings(libraryDependencies ++= Seq("com.typesafe.play" %% "play-json" % "2.9.2"))

lazy val fixedpoint = (project in file("./tools/fixedpoint/"))
.settings(chiselSettings)
Expand Down
16 changes: 8 additions & 8 deletions common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ VLOG_EXT = sv v
CHIPYARD_SOURCE_DIRS = $(addprefix $(base_dir)/,generators sims/firesim/sim fpga/fpga-shells fpga/src)
CHIPYARD_SCALA_SOURCES = $(call lookup_srcs_by_multiple_type,$(CHIPYARD_SOURCE_DIRS),$(SCALA_EXT))
CHIPYARD_VLOG_SOURCES = $(call lookup_srcs_by_multiple_type,$(CHIPYARD_SOURCE_DIRS),$(VLOG_EXT))
BARSTOOLS_SOURCE_DIRS = $(addprefix $(base_dir)/,tools/barstools)
BARSTOOLS_SCALA_SOURCES = $(call lookup_srcs_by_multiple_type,$(BARSTOOLS_SOURCE_DIRS),$(SCALA_EXT))
BARSTOOLS_VLOG_SOURCES = $(call lookup_srcs_by_multiple_type,$(BARSTOOLS_SOURCE_DIRS),$(VLOG_EXT))
TAPEOUT_SOURCE_DIRS = $(addprefix $(base_dir)/,tools/tapeout)
TAPEOUT_SCALA_SOURCES = $(call lookup_srcs_by_multiple_type,$(TAPEOUT_SOURCE_DIRS),$(SCALA_EXT))
TAPEOUT_VLOG_SOURCES = $(call lookup_srcs_by_multiple_type,$(TAPEOUT_SOURCE_DIRS),$(VLOG_EXT))
# This assumes no SBT meta-build sources
SBT_SOURCE_DIRS = $(addprefix $(base_dir)/,generators sims/firesim/sim tools)
SBT_SOURCES = $(call lookup_srcs,$(SBT_SOURCE_DIRS),sbt) $(base_dir)/build.sbt $(base_dir)/project/plugins.sbt $(base_dir)/project/build.properties
Expand Down Expand Up @@ -127,7 +127,7 @@ $(CHIPYARD_CLASSPATH_TARGETS) &: $(CHIPYARD_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEP
$(call run_sbt_assembly,$(SBT_PROJECT),$(CHIPYARD_CLASSPATH))

# order only dependency between sbt runs needed to avoid concurrent sbt runs
$(TAPEOUT_CLASSPATH_TARGETS) &: $(BARSTOOLS_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(BARSTOOLS_VLOG_SOURCES) | $(CHIPYARD_CLASSPATH_TARGETS)
$(TAPEOUT_CLASSPATH_TARGETS) &: $(TAPEOUT_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(TAPEOUT_VLOG_SOURCES) | $(CHIPYARD_CLASSPATH_TARGETS)
mkdir -p $(dir $@)
$(call run_sbt_assembly,tapeout,$(TAPEOUT_CLASSPATH))

Expand Down Expand Up @@ -165,7 +165,7 @@ define sfc_extra_low_transforms_anno_contents
[
{
"class": "firrtl.stage.RunFirrtlTransformAnnotation",
"transform": "barstools.tapeout.transforms.ExtraLowTransforms"
"transform": "tapeout.transforms.ExtraLowTransforms"
}
]
endef
Expand Down Expand Up @@ -232,7 +232,7 @@ $(FINAL_ANNO_FILE): $(EXTRA_ANNO_FILE) $(SFC_EXTRA_ANNO_FILE) $(SFC_LEVEL)
$(SFC_MFC_TARGETS) &: private TMP_DIR := $(shell mktemp -d -t cy-XXXXXXXX)
$(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(SFC_LEVEL) $(EXTRA_FIRRTL_OPTIONS) $(MFC_LOWERING_OPTIONS)
rm -rf $(GEN_COLLATERAL_DIR)
$(call run_jar_scala_main,$(TAPEOUT_CLASSPATH),barstools.tapeout.transforms.GenerateModelStageMain,\
$(call run_jar_scala_main,$(TAPEOUT_CLASSPATH),tapeout.transforms.GenerateModelStageMain,\
--no-dedup \
--output-file $(SFC_FIRRTL_BASENAME) \
--output-annotation-file $(SFC_ANNO_FILE) \
Expand Down Expand Up @@ -297,12 +297,12 @@ $(TOP_SMEMS_CONF) $(MODEL_SMEMS_CONF) &: $(MFC_SMEMS_CONF) $(MFC_MODEL_HRCHY_JS
# This file is for simulation only. VLSI flows should replace this file with one containing hard SRAMs
TOP_MACROCOMPILER_MODE ?= --mode synflops
$(TOP_SMEMS_FILE) $(TOP_SMEMS_FIR) &: $(TAPEOUT_CLASSPATH_TARGETS) $(TOP_SMEMS_CONF)
$(call run_jar_scala_main,$(TAPEOUT_CLASSPATH),barstools.macros.MacroCompiler,-n $(TOP_SMEMS_CONF) -v $(TOP_SMEMS_FILE) -f $(TOP_SMEMS_FIR) $(TOP_MACROCOMPILER_MODE))
$(call run_jar_scala_main,$(TAPEOUT_CLASSPATH),tapeout.macros.MacroCompiler,-n $(TOP_SMEMS_CONF) -v $(TOP_SMEMS_FILE) -f $(TOP_SMEMS_FIR) $(TOP_MACROCOMPILER_MODE))
touch $(TOP_SMEMS_FILE) $(TOP_SMEMS_FIR)

MODEL_MACROCOMPILER_MODE = --mode synflops
$(MODEL_SMEMS_FILE) $(MODEL_SMEMS_FIR) &: $(TAPEOUT_CLASSPATH_TARGETS) $(MODEL_SMEMS_CONF)
$(call run_jar_scala_main,$(TAPEOUT_CLASSPATH),barstools.macros.MacroCompiler, -n $(MODEL_SMEMS_CONF) -v $(MODEL_SMEMS_FILE) -f $(MODEL_SMEMS_FIR) $(MODEL_MACROCOMPILER_MODE))
$(call run_jar_scala_main,$(TAPEOUT_CLASSPATH),tapeout.macros.MacroCompiler, -n $(MODEL_SMEMS_CONF) -v $(MODEL_SMEMS_FILE) -f $(MODEL_SMEMS_FIR) $(MODEL_MACROCOMPILER_MODE))
touch $(MODEL_SMEMS_FILE) $(MODEL_SMEMS_FIR)

########################################################################################
Expand Down
4 changes: 0 additions & 4 deletions docs/Advanced-Concepts/Resources.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,3 @@ For example:
lazy val myAwesomeAccel = (project in file("generators/myAwesomeAccelFolder"))
.dependsOn(rocketchip)
.settings(commonSettings)

lazy val tapeout = conditionalDependsOn(project in file("./tools/barstools/tapeout/"))
.dependsOn(myAwesomeAccel)
.settings(commonSettings)
4 changes: 2 additions & 2 deletions docs/Chipyard-Basics/Chipyard-Components.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ Tools
FIRRTL enables digital circuits manipulation between Chisel elaboration and Verilog generation.
See :ref:`Tools/FIRRTL:FIRRTL` for more information.

**Barstools**
**Tapeout-Tools (Formerly Barstools)**
A collection of common FIRRTL transformations used to manipulate a digital circuit without changing the generator source RTL.
See :ref:`Tools/Barstools:Barstools` for more information.
See :ref:`Tools/Tapeout-Tools:Tapeout-Tools` for more information.

**Dsptools**
A Chisel library for writing custom signal processing hardware, as well as integrating custom signal processing hardware into an SoC (especially a Rocket-based SoC).
Expand Down
2 changes: 1 addition & 1 deletion docs/Customization/Custom-Chisel.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ should look something like this:
.. code-block:: scala

lazy val chipyard = (project in file("generators/chipyard"))
.dependsOn(testchipip, rocketchip, boom, hwacha, rocketchip_blocks, rocketchip_inclusive_cache, iocell,
.dependsOn(testchipip, rocketchip, boom, hwacha, rocketchip_blocks, rocketchip_inclusive_cache,
sha3, dsptools, `rocket-dsp-utils`,
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
yourproject, // <- added to the middle of the list for simplicity
Expand Down
6 changes: 3 additions & 3 deletions docs/Customization/Firrtl-Transforms.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ Where to add transforms

In Chipyard, the FIRRTL compiler is called multiple times to create a "Top" file that contains the DUT and a "Model" file containing the test harness, which instantiates the DUT.
The "Model" file does not contain the DUT's module definition or any of its submodules.
This is done by the ``tapeout`` SBT project (located in ``tools/barstools/tapeout``) which calls ``GenerateModelStageMain`` (a function that wraps the multiple FIRRTL compiler calls and extra transforms).
This is done by the ``tapeout`` SBT project (located in ``tools/tapeout``) which calls ``GenerateModelStageMain`` (a function that wraps the multiple FIRRTL compiler calls and extra transforms).

.. literalinclude:: ../../common.mk
:language: make
:start-after: DOC include start: FirrtlCompiler
:end-before: DOC include end: FirrtlCompiler

If you look inside of the `tools/barstools/tapeout/src/main/scala/transforms/GenerateModelStageMain.scala <https://github.com/ucb-bar/barstools/blob/master/tapeout/src/main/scala/transforms/GenerateModelStageMain.scala>`__ file,
If you look inside of the ``tools/tapeout/src/main/scala/transforms/GenerateModelStageMain.scala`` file,
you can see that FIRRTL is invoked for "Model". Currently, the FIRRTL compiler is agnostic to the ``TOP`` and ``MODEL`` differentiation,
and the user is responsible for providing annotations that will inform the compiler where(``TOP`` vs ``MODEL``) to perform the custom FIRRTL transformations.

For more information on Barstools, please visit the :ref:`Tools/Barstools:Barstools` section.
For more information on the Tapeout sub-project, please visit the :ref:`Tools/Tapeout-Tools:Tapeout-Tools` section.

Examples of transforms
----------------------
Expand Down
13 changes: 0 additions & 13 deletions docs/Customization/Incorporating-Verilog-Blocks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,6 @@ different directory from Chisel (Scala) sources.
vsrc/
YourFile.v

In addition to the steps outlined in the previous section on adding a
project to the ``build.sbt`` at the top level, it is also necessary to
add any projects that contain Verilog IP as dependencies to the
``tapeout`` project. This ensures that the Verilog sources are visible
to the downstream FIRRTL passes that provide utilities for integrating
Verilog files into the build process, which are part of the
``tapeout`` package in ``barstools/tapeout``.

.. code-block:: scala

lazy val tapeout = conditionalDependsOn(project in file("./tools/barstools/tapeout/"))
.dependsOn(chisel_testers, example, yourproject)
.settings(commonSettings)

For this concrete GCD example, we will be using a ``GCDMMIOBlackBox``
Verilog module that is defined in the ``chipyard`` project. The Scala
Expand Down
14 changes: 7 additions & 7 deletions docs/Tools/Barstools.rst → docs/Tools/Tapeout-Tools.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Barstools
Tapeout-Tools
===============================

Barstools is a collection of useful FIRRTL transformations and compilers to help the build process.
Tapeout-Tools is a collection of useful FIRRTL transformations and compilers to help the build process.
Included in the tools are a MacroCompiler (used to map Chisel memory constructs to vendor SRAMs), FIRRTL transforms (to separate harness and top-level SoC files), and more.

Mapping technology SRAMs (MacroCompiler)
Expand All @@ -23,16 +23,16 @@ An external module reference is a FIRRTL construct that enables a design to refe
A list of unique SRAM configurations is output to a ``.conf`` file by FIRRTL, which is used to map technology SRAMs.
Without this transform, FIRRTL will map all ``SeqMem`` s to flip-flop arrays with equivalent behavior, which may lead to a design that is difficult to route.

The ``.conf`` file is consumed by a tool called MacroCompiler, which is part of the :ref:`Tools/Barstools:Barstools` scala package.
The ``.conf`` file is consumed by a tool called MacroCompiler, which is part of the :ref:`Tools/Tapeout-Tools:Tapeout-Tools` scala package.
MacroCompiler is also passed an ``.mdf`` file that describes the available list of technology SRAMs or the capabilities of the SRAM compiler, if one is provided by the foundry.
Typically a foundry SRAM compiler will be able to generate a set of different SRAMs collateral based on some requirements on size, aspect ratio, etc. (see :ref:`Tools/Barstools:SRAM MDF Fields`).
Typically a foundry SRAM compiler will be able to generate a set of different SRAMs collateral based on some requirements on size, aspect ratio, etc. (see :ref:`Tools/Tapeout-Tools:SRAM MDF Fields`).
Using a user-customizable cost function, MacroCompiler will select the SRAMs that are the best fit for each dimensionality in the ``.conf`` file.
This may include over provisioning (e.g. using a 64x1024 SRAM for a requested 60x1024, if the latter is not available) or arraying.
Arraying can be done in both width and depth, as well as to solve masking constraints.
For example, a 128x2048 array could be composed of four 64x1024 arrays, with two macros in parallel to create two 128x1024 virtual SRAMs which are combinationally muxed to add depth.
If this macro requires byte-granularity write masking, but no technology SRAMs support masking, then the tool may choose to use thirty-two 8x1024 arrays in a similar configuration.
You may wish to create a cache of your available SRAM macros either manually, or via a script. A reference script for creating a JSON of your SRAM macros is in the `asap7 technology library folder <https://github.com/ucb-bar/hammer/blob/8fd1486499b875d56f09b060f03a62775f0a6aa7/src/hammer-vlsi/technology/asap7/sram-cache-gen.py>`__.
For information on writing ``.mdf`` files, look at `MDF on github <https://github.com/ucb-bar/plsi-mdf>`__ and a brief description in :ref:`Tools/Barstools:SRAM MDF Fields` section.
For information on writing ``.mdf`` files, look at `MDF on github <https://github.com/ucb-bar/plsi-mdf>`__ and a brief description in :ref:`Tools/Tapeout-Tools:SRAM MDF Fields` section.

The output of MacroCompiler is a Verilog file containing modules that wrap the technology SRAMs into the specified interface names from the ``.conf``.
If the technology supports an SRAM compiler, then MacroCompiler will also emit HammerIR that can be passed to Hammer to run the compiler itself and generate design collateral.
Expand Down Expand Up @@ -105,7 +105,7 @@ This is necessary to facilitate post-synthesis and post-place-and-route simulati
Simulations, after your design goes through a VLSI flow, will use the verilog netlist generated from the flow and will need an untouched test harness to drive it.
Separating these components into separate files makes this straightforward.
Without the separation the file that included the test harness would also redefine the DUT which is often disallowed in simulation tools.
To do this, there is a FIRRTL ``App`` in :ref:`Tools/Barstools:Barstools` called ``GenerateTopAndHarness``, which runs the appropriate transforms to elaborate the modules separately.
To do this, there is a FIRRTL ``App`` in :ref:`Tools/Tapeout-Tools:Tapeout-Tools` called ``GenerateTopAndHarness``, which runs the appropriate transforms to elaborate the modules separately.
This also renames modules in the test harness so that any modules that are instantiated in both the test harness and the chip are uniquified.

.. Note:: For VLSI projects, this ``App`` is run instead of the normal FIRRTL ``App`` to elaborate Verilog.
Expand Down Expand Up @@ -133,5 +133,5 @@ This, unfortunately, breaks the process-agnostic RTL abstraction, so it is recom
The simplest way to do this is to have a config fragment that when included updates instantiates the IO cells and connects them in the test harness.
When simulating chip-specific designs, it is important to include the IO cells.
The IO cell behavioral models will often assert if they are connected incorrectly, which is a useful runtime check.
They also keep the IO interface at the chip and test harness boundary (see :ref:`Tools/Barstools:Separating the Top module from the TestHarness module`) consistent after synthesis and place-and-route,
They also keep the IO interface at the chip and test harness boundary (see :ref:`Tools/Tapeout-Tools:Separating the Top module from the TestHarness module`) consistent after synthesis and place-and-route,
which allows the RTL simulation test harness to be reused.
2 changes: 1 addition & 1 deletion docs/Tools/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ The following pages will introduce them, and how we can use them in order to gen
FIRRTL
Treadle
Dsptools
Barstools
Tapeout-Tools
2 changes: 1 addition & 1 deletion docs/VLSI/Basic-Flow.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ We will do so by calling ``make buildfile`` with appropriate Chipyard configurat
As in the rest of the Chipyard flows, we specify our SoC configuration using the ``CONFIG`` make variable.
However, unlike the rest of the Chipyard flows, in the case of physical design we might be interested in working in a hierarchical fashion and therefore we would like to work on a single module.
Therefore, we can also specify a ``VLSI_TOP`` make variable with the same of a specific Verilog module (which should also match the name of the equivalent Chisel module) which we would like to work on.
The makefile will automatically call tools such as Barstools and the MacroCompiler (:ref:`Tools/Barstools:barstools`) in order to make the generated Verilog more VLSI friendly.
The makefile will automatically call tools such as Tapeout-Tools and the MacroCompiler (:ref:`Tools/Tapeout-Tools:Tapeout-Tools`) in order to make the generated Verilog more VLSI friendly.
By default, the MacroCompiler will attempt to map memories into the SRAM options within the Hammer technology plugin. However, if you are working with a new process technology and prefer to work with flip-flop arrays, you can configure the MacroCompiler using the ``TOP_MACROCOMPILER_MODE`` make variable. For example, if your technology plugin does not have an SRAM compiler ready, you can use the ``TOP_MACROCOMPILER_MODE='--mode synflops'`` option (Note that synthesizing a design with only flipflops is very slow and will often may not meet constraints).

We call the ``make buildfile`` command while also specifying the name of the process technology we are working with (same ``tech_name`` for the configuration files and plugin name) and the configuration files we created. Note, in the ASAP7 tutorial ((:ref:`tutorial`)) these configuration files are merged into a single file called ``example-asap7.yml``.
Expand Down
2 changes: 1 addition & 1 deletion docs/VLSI/Building-A-Chip.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Transforming the RTL
--------------------

Building a chip requires specializing the generic verilog emitted by FIRRTL to adhere to the constraints imposed by the technology used for fabrication.
This includes mapping Chisel memories to available technology macros such as SRAMs, mapping the input and output of your chip to connect to technology IO cells, see :ref:`Tools/Barstools:Barstools`.
This includes mapping Chisel memories to available technology macros such as SRAMs, mapping the input and output of your chip to connect to technology IO cells, see :ref:`Tools/Tapeout-Tools:Tapeout-tools`.
In addition to these required transformations, it may also be beneficial to transform the RTL to make it more amenable to hierarchical physical design easier.
This often includes modifying the logical hierarchy to match the physical hierarchy through grouping components together or flattening components into a single larger module.

Expand Down
11 changes: 11 additions & 0 deletions generators/chipyard/src/main/resources/vsrc/Analog.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// See LICENSE for license details

`timescale 1ns/1ps

module AnalogConst #(CONST, WIDTH) (
output [WIDTH-1:0] io
);

assign io = CONST;

endmodule
2 changes: 1 addition & 1 deletion generators/chipyard/src/main/scala/ChipTop.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, LazyRawModuleI
import freechips.rocketchip.util.{DontTouch}
import chipyard.iobinders._

import barstools.iocell.chisel._
import chipyard.iocell._

case object BuildSystem extends Field[Parameters => LazyModule]((p: Parameters) => new DigitalTop()(p))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import freechips.rocketchip.prci._
import freechips.rocketchip.diplomacy._
import freechips.rocketchip.subsystem._
import freechips.rocketchip.tilelink._
import barstools.iocell.chisel._
import chipyard.iocell._

// This uses the FakePLL, which uses a ClockAtFreq Verilog blackbox to generate
// the requested clocks. This also adds TileLink ClockDivider and ClockSelector
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import chipyard.iobinders._
import org.chipsalliance.cde.config._
import freechips.rocketchip.diplomacy.{InModuleBody}
import freechips.rocketchip.subsystem.{PBUS, HasTileLinkLocations}
import barstools.iocell.chisel._
import chipyard.iocell._
import chipyard._
import chipyard.harness.{BuildTop}
import sifive.blocks.devices.uart._
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import chipyard.{BuildSystem, DigitalTop}
import chipyard.harness.{BuildTop}
import chipyard.clocking._
import chipyard.iobinders._
import barstools.iocell.chisel._
import chipyard.iocell._
import testchipip.serdes.{SerialTLKey}

class WithFlatChipTop extends Config((site, here, up) => {
Expand Down
Loading
Loading