Skip to content

Commit 01b05f4

Browse files
committed
Merge remote-tracking branch 'private/master' into secure-gpl-avoid-td-during-rd
2 parents 1efe4d2 + 3dc9e66 commit 01b05f4

File tree

15 files changed

+163
-80
lines changed

15 files changed

+163
-80
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,13 @@ To build from your own git repository:
107107
cd /home/me/myproject
108108
make --file=~/OpenROAD-flow-scripts/flow/Makefile DESIGN_CONFIG=somefolder/config.mk ...
109109

110+
## Running a quick smoke-test of ORFS on your own Verilog
111+
112+
You can [run ORFS on your own Verilog files](./flow/designs/asap7/minimal/README.md)
113+
without setting up a project or moving your Verilog files and even learn
114+
a thing or two about floorplan, placement and routing
115+
before you create an .sdc file and a config.mk file.
116+
110117
## Citing this Work
111118

112119
If you use this software in any published work, we would appreciate a citation!
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# Report on a design prior to setting up a configuration
2+
3+
This configuration allows running synthesis and floorplan
4+
to extract some basic information useful when setting
5+
up a config.mk file from scratch.
6+
7+
Below, instructions are given to run synthesis, floorplan, placement and
8+
global route, then examine the results in the GUI to see what a
9+
realistic floorplan and settings might be for your Verilog files.
10+
11+
The example below uses the designs/src/aes/*.v Verilog files, but
12+
the Verilog files do not have to be located in the OpenROAD-flow-scripts
13+
git repository, adjust the VERILOG_FILES argument to point to your Verilog
14+
files:
15+
16+
```
17+
make DESIGN_CONFIG=designs/asap7/minimal/config.mk DESIGN_NAME=aes_cipher_top VERILOG_FILES="$(ls designs/src/aes/*.v | xargs)" clean_synth synth gui_synth
18+
```
19+
20+
Where, the exploratory config.mk file to be replaced
21+
by a design specific config.mk file is:
22+
23+
```
24+
DESIGN_CONFIG=designs/asap7/minimal/config.mk
25+
```
26+
27+
Verilog files that to be investigated are specified by:
28+
29+
```
30+
VERILOG_FILES="$(ls designs/src/aes/*.v | xargs)"
31+
```
32+
33+
The Verilog top module name is specified by:
34+
35+
```
36+
DESIGN_NAME=aes_cipher_top
37+
```
38+
39+
Synthesis cleaned and re-run by:
40+
41+
```
42+
clean_synth synth
43+
```
44+
45+
The GUI is opened by the makefile target:
46+
47+
```
48+
gui_synth
49+
```
50+
51+
## `make gui_synth` OpenROAD GUI information
52+
53+
![Alt text](gui_synth.png)
54+
55+
The module hierarchy can here be examined to give a sense of
56+
area required for the default placement density.
57+
58+
## `make gui_floorplan` OpenROAD GUI information
59+
60+
Next to iterate on floorplan settings:
61+
62+
```
63+
make DESIGN_CONFIG=designs/asap7/minimal/config.mk DESIGN_NAME=aes_cipher_top VERILOG_FILES="$(ls designs/src/aes/*.v | xargs)" clean_floorplan floorplan gui_floorplan
64+
```
65+
66+
A few more things can be learned from looking at this minimal floorplan:
67+
68+
- The pins are placed randomly on the edges and at least there
69+
is enough space on the edges to fit the top level pins
70+
- Check that the floorplan size is not completely unreasonable and
71+
at least there is a chance that this design could go through
72+
placement with this density.
73+
74+
![Alt text](gui_floorplan.png)
75+
76+
## `make gui_place` OpenROAD GUI information
77+
78+
Next to iterate on placement settings:
79+
80+
```
81+
make DESIGN_CONFIG=designs/asap7/minimal/config.mk DESIGN_NAME=aes_cipher_top VERILOG_FILES="$(ls designs/src/aes/*.v | xargs)" clean_place place gui_place
82+
```
83+
84+
![Alt text](gui_place_heatmap.png)
85+
86+
![Alt text](gui_place_module.png)
87+
88+
From placement more information about how to set up the config.mk
89+
file can be learned:
90+
91+
- Examine estimated routing congestion to get a sense if there
92+
is a chance that the design can be routed.
93+
- Get a sense of size and location of modules
94+
95+
## CTS(Clock tree Synthesis)
96+
97+
After placement, CTS (clock tree synthesis is run). However the minimal design does
98+
not have a clock, so CTS runs quickly, but does nothing.
99+
100+
## `make gui_grt` OpenROAD GUI information
101+
102+
For non-trivial designs, some more work will need to be done in floorplan and
103+
placement before there is a chance that global routing will complete:
104+
105+
```
106+
make DESIGN_CONFIG=designs/asap7/minimal/config.mk DESIGN_NAME=aes_cipher_top VERILOG_FILES="$(ls designs/src/aes/*.v | xargs)" clean_place place gui_place
107+
```
108+
109+
![Alt text](gui_grt.png)
110+
111+
Global routing congestion heatmap can be examined in the GUI.
112+
113+
## Next steps
114+
115+
Start creating a config.mk file for your design, write an .sdc file to
116+
examine timing and find reasonable values for the CORE_UTILIZATION
117+
and PLACE_DENSITY for your design considering routing congestion.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
export DESIGN_NICKNAME = minimal
2+
export SDC_FILE = $(FLOW_HOME)/designs/asap7/minimal/empty.sdc
3+
export PLATFORM = asap7
4+
# Faster build and more information in GUI with hierarchical synthesis
5+
export SYNTH_HIERARCHICAL ?= 1
6+
# Keep all modules so we can examine the full hierarchy
7+
export MAX_UNGROUP_SIZE ?= 0
8+
9+
# Set the core utilization to 10% for the minimal design to
10+
# maximize chances of getting an initial floorplan. This
11+
# provides a generous area, yet not so big as to make making
12+
# floorplan problematic
13+
export CORE_UTILIZATION ?= 10
14+
# Low placement density to maximize chances of getting a floorplan
15+
export PLACE_DENSITY ?= 0.20
16+
17+
# This won't work with an empty .sdc file
18+
export SKIP_REPORT_METRICS = 1
19+
20+
# Faster build, remove these in your own config.mk
21+
export SKIP_CTS_REPAIR_TIMING = 1
22+
export REMOVE_ABC_BUFFERS = 1
23+
export SKIP_INCREMENTAL_REPAIR = 1
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Creating a basic .sdc file is beyond the scope of
2+
# simple configuration, much as writing Verilog is.
201 KB
Loading
601 KB
Loading
853 KB
Loading
593 KB
Loading
250 KB
Loading

flow/designs/gf180/ibex/autotuner.json

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@
2424
],
2525
"step": 0
2626
},
27-
"CORE_MARGIN": {
28-
"type": "int",
29-
"minmax": [
30-
2,
31-
2
32-
],
33-
"step": 0
34-
},
3527
"CELL_PAD_IN_SITES_GLOBAL_PLACEMENT": {
3628
"type": "int",
3729
"minmax": [
@@ -64,14 +56,6 @@
6456
],
6557
"step": 0
6658
},
67-
"_PINS_DISTANCE": {
68-
"type": "int",
69-
"minmax": [
70-
1,
71-
1
72-
],
73-
"step": 1
74-
},
7559
"CTS_CLUSTER_SIZE": {
7660
"type": "int",
7761
"minmax": [

0 commit comments

Comments
 (0)