Skip to content
This repository has been archived by the owner on Apr 20, 2024. It is now read-only.

Add floorplan compiler #107

Draft
wants to merge 74 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
a95b530
Add a rough draft of the floorplan IR and plumbing to generate annota…
jwright6323 Oct 23, 2019
d7de182
This emits the right firrtl collateral, but barstools does not accept…
jwright6323 Oct 24, 2019
3781cf2
Fix FPIR serialization
jwright6323 Oct 25, 2019
1fce410
Add basic compiler App
jwright6323 Oct 29, 2019
f8bcd99
Updates for rocket-chip bump
colinschmidt Oct 31, 2019
e3ab2ff
Move aoplib from fcl-floorplan
colinschmidt Oct 31, 2019
cff1c41
Refactor IR/Constraints a bit
jwright6323 Oct 31, 2019
0662a6f
Fix? generate floorplan IR pass
colinschmidt Nov 1, 2019
fa1f331
Clean up firrtl pass
jwright6323 Nov 1, 2019
f678f50
Make grids work in the Chisel API
jwright6323 Nov 1, 2019
96eef70
Aspect compatibility
jwright6323 Nov 1, 2019
7c7af90
Fix naming and serialization; still need to figure out how to seriali…
jwright6323 Nov 2, 2019
3de7de0
Clean up the Floorplan IR emission pass
jwright6323 Nov 6, 2019
a16cafe
Make the MultiTargetAnnotation stuff work; TODO: get rid of some of t…
jwright6323 Nov 7, 2019
3585157
Start adding compiler infrastructure
jwright6323 Nov 7, 2019
4fba4d9
Add Layouts
jwright6323 Nov 7, 2019
de22a6a
Rename relative placement to ratio, add length layout
jwright6323 Nov 8, 2019
81c32f2
Add preliminary README
jwright6323 Apr 6, 2020
ac48635
Start working on new Aspects stuff, WIP
jwright6323 May 12, 2020
8141fca
Some API tweaks
jwright6323 May 14, 2020
62ae72f
Merge commit 'a3711c4' into floorplan
jwright6323 Jul 11, 2021
760d7ea
Update build.sbt
jwright6323 Jul 11, 2021
9a99477
Make something that actually produces floorplan IR
jwright6323 Jul 11, 2021
d6698c7
Merge branch 'master' of github.com:ucb-bar/barstools into floorplan
jwright6323 Jul 12, 2021
45fe477
chisel API cleanup
jwright6323 Jul 12, 2021
a5f7340
Fix bug that prunes InstanceTargets out of the AnnotationSeq in RePar…
jwright6323 Jul 12, 2021
1ed4d1a
Merge branch 'fix_reparent_circuit' into floorplan
jwright6323 Jul 12, 2021
d0af80e
Fix relative pathing
jwright6323 Jul 12, 2021
5fd1f86
Fix harness .fir file output location
jwright6323 Jul 13, 2021
93530d8
Also make ReParentCircuit work on ReferenceTargets
jwright6323 Jul 13, 2021
6899511
Start adding Mem support
jwright6323 Jul 13, 2021
e8c5939
Style
jwright6323 Jul 13, 2021
6ecb3a1
Handle ReplSeqMem in the records
jwright6323 Jul 13, 2021
65561e7
Add text file that lists the macrocompiler mapping
jwright6323 Jul 13, 2021
d3d8ac2
Merge branch 'master' of github.com:ucb-bar/barstools into floorplan
jwright6323 Jul 13, 2021
b2a5c71
Remove aoplib
jwright6323 Jul 13, 2021
8bada68
Make SRAM replacement work
jwright6323 Jul 14, 2021
4565ce3
Move floorplan
jwright6323 Jul 14, 2021
431c912
Get top-level annotations working
jwright6323 Jul 16, 2021
b63b715
Replace MemElementArray with MemMacroArray
jwright6323 Jul 17, 2021
e14ff50
Clean up names
jwright6323 Jul 17, 2021
f9d5f00
Add first pass at HammerIR serialization
jwright6323 Jul 18, 2021
33472d0
Simplify units, no longer separate area and length
jwright6323 Jul 18, 2021
8685fc6
Add ofModule to hierarchical elements
jwright6323 Jul 18, 2021
2ee4e6c
Add grid elements
jwright6323 Jul 18, 2021
145953e
Get sideband annotations working
jwright6323 Jul 18, 2021
5bc82c7
Clean up ofModule
jwright6323 Jul 18, 2021
e8edf22
try to un-break sbt test
jwright6323 Jul 18, 2021
066de86
Add parents to IR
jwright6323 Jul 18, 2021
a96e1f9
Implement ReplaceHierarchicalPass
jwright6323 Jul 18, 2021
66d1e50
Temporary commit, this compiles but some implementations are intentio…
jwright6323 Jul 19, 2021
a29571b
Fix unimplemented methods
jwright6323 Jul 19, 2021
f872b8d
Some constraint prop works
jwright6323 Jul 19, 2021
506dc1d
Remove accidental println
jwright6323 Jul 19, 2021
570466c
API tweak
jwright6323 Jul 21, 2021
3e23571
weights -> [xy]Weights
jwright6323 Jul 21, 2021
798f801
Sideband->OutOfBand
jwright6323 Jul 25, 2021
8cd3ac5
root->scope
jwright6323 Jul 25, 2021
52b8bd7
Remove unnecessary Abstract*Grid
jwright6323 Jul 25, 2021
15176be
FloorplanElementRecord->FloorplanRecord
jwright6323 Jul 25, 2021
ebf8163
ConstrainedHierarchicalTop should be level 2
jwright6323 Jul 26, 2021
770c755
Change PlacedHierarchicalTop topGroup to elements
jwright6323 Aug 9, 2021
5c2b98b
Add weighted grid to chisel API
jwright6323 Aug 9, 2021
66571f8
Clean up constraint prop
jwright6323 Aug 10, 2021
eeba825
Add basic mem array implementation
jwright6323 Aug 10, 2021
b332e2e
Temporary commit, this compiles but we need to fix elements
jwright6323 Aug 10, 2021
f6b1002
Remove options from elements arrays
jwright6323 Aug 10, 2021
74c480c
Add some basic implementations of resolve constraints
jwright6323 Aug 10, 2021
e5e10f1
Comment cleanup
jwright6323 Aug 10, 2021
3bcdb5b
First pass of CalculatePlacementsPass
jwright6323 Aug 10, 2021
f9758a9
Legalize placements (crudely) and fix HammerIR serialization of enums
jwright6323 Aug 10, 2021
0cfd7ea
HammerIR compliance
jwright6323 Aug 10, 2021
48afa8f
fix bug in placement calculation
jwright6323 Aug 10, 2021
27ad1a0
Add mirroring
jwright6323 Aug 11, 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
9 changes: 8 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ lazy val commonSettings = Seq(
},
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.2.2" % "test",
"org.json4s" %% "json4s-jackson" % "3.6.1",
"org.json4s" %% "json4s-ext" % "3.6.1",
"org.json4s" %% "json4s-native" % "3.6.1",
),
resolvers ++= Seq(
Resolver.sonatypeRepo("snapshots"),
Expand All @@ -34,8 +37,12 @@ lazy val macros = (project in file("macros"))
)
.enablePlugins(sbtassembly.AssemblyPlugin)

lazy val floorplan = (project in file("floorplan"))
.settings(commonSettings)

lazy val tapeout = (project in file("tapeout"))
.dependsOn(floorplan)
.settings(commonSettings)
.settings(scalacOptions in Test ++= Seq("-language:reflectiveCalls"))

lazy val root = (project in file(".")).aggregate(macros, tapeout)
lazy val root = (project in file(".")).aggregate(macros, tapeout, floorplan)
61 changes: 61 additions & 0 deletions floorplan/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

Placement/Boundary constraints


Schema:

- `Element` is the base abstract class

- `Primitive` extends `Element` (abstract)
- name (String)
- target (InstanceTarget) ?? (some way of tying this to an instance)

- `Rect` extends `Primitive` (abstract)
- x (LengthUnit)
- y (LengthUnit)
- w (LengthUnit)
- h (LengthUnit)
- rot (Rotation)

- `Macro` extends `Rect`

- `RouteBlockage` extends `Rect`
- layer (String)

- `PlaceBlockage` extends `Rect`

- `SeqMem` extends `Rect`

- `Group` extends `Element` (abstract)

- `Grid` extends `Group`
- elements (Array2D[Element])

- `HorizontalArray` extends `Array`
- elements.height = 1

- `VerticalArray` extends `Array`
- elements.width = 1

- `LayoutOptions` extends `Element` (abstract)
- layouts (List[Group])

- `PriorityLayoutOptions` extends `LayoutOptions`



IR Level 0
- `Rect`s must contain x, y, rot


IR Level 1
- `Rect`s must contain w, h


IR Level 2
- `Rect`s must contain name, target, type



- Need to have an "inline" way of saying "Replace the floorplan of this block with some external hammer IR"

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
barstools.floorplan.firrtl.GenerateFloorplanIRPass
Loading