Skip to content

Commit 191816d

Browse files
committed
designs/asap7/minimal: getting started README.md
Signed-off-by: Øyvind Harboe <[email protected]>
1 parent 461ad79 commit 191816d

File tree

8 files changed

+139
-0
lines changed

8 files changed

+139
-0
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
Report on a design prior to setting up a configuration
2+
======================================================
3+
4+
This configuration allows running synthesis and floorplan
5+
to extract some basic information useful when setting
6+
up a config.mk file from scratch.
7+
8+
Below, instructions are given to run synthesis, floorplan, placement and
9+
global route, then examine the results in the GUI to see what a
10+
realistic floorplan and settings might be for your Verilog files.
11+
12+
The example below uses the designs/src/aes/*.v Verilog files, but
13+
the Verilog files do not have to be located in the OpenROAD-flow-scripts
14+
git repository, adjust the VERILOG_FILES argument to point to your Verilog
15+
files:
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+
Where, the exploratory config.mk file to be replaced
20+
by a design specific config.mk file is:
21+
22+
DESIGN_CONFIG=designs/asap7/minimal/config.mk
23+
24+
Verilog files that to be investigated are specified by:
25+
26+
VERILOG_FILES="$(ls designs/src/aes/*.v | xargs)"
27+
28+
The Verilog top module name is specified by:
29+
30+
DESIGN_NAME=aes_cipher_top
31+
32+
Synthesis cleaned and re-run by:
33+
34+
clean_synth synth
35+
36+
The GUI is opened by the makefile target:
37+
38+
gui_synth
39+
40+
`make gui_synth` OpenROAD GUI information
41+
-----------------------------------------
42+
43+
![Alt text](gui_synth.png)
44+
45+
The module hierarchy can here be examined to give a sense of
46+
area required for the default placement density.
47+
48+
`make gui_floorplan` OpenROAD GUI information
49+
---------------------------------------------
50+
51+
Next to iterate on floorplan settings:
52+
53+
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
54+
55+
A few more things can be learned from looking at this minimal floorplan:
56+
57+
- The pins are placed randomly on the edges and at least there
58+
is enough space on the edges to fit the top level pins
59+
- Check that the floorplan size is not completely unreasonable and
60+
at least there is a chance that this design could go through
61+
placement with this density.
62+
63+
![Alt text](gui_floorplan.png)
64+
65+
`make gui_place` OpenROAD GUI information
66+
-----------------------------------------
67+
68+
Next to iterate on placement settings:
69+
70+
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
71+
72+
![Alt text](gui_place_heatmap.png)
73+
74+
![Alt text](gui_place_module.png)
75+
76+
From placement more information about how to set up the config.mk
77+
file can be learned:
78+
79+
- Examine estimated routing congestion to get a sense if there
80+
is a chance that the design can be routed.
81+
- Get a sense of size and location of modules
82+
83+
CTS(Clock tree Synthesis)
84+
-------------------------
85+
86+
After placement, CTS (clock tree synthesis is run). However the minimal design does
87+
not have a clock, so CTS runs quickly, but does nothing.
88+
89+
`make gui_grt` OpenROAD GUI information
90+
-----------------------------------------
91+
92+
For non-trivial designs, some more work will need to be done in floorplan and
93+
placement before there is a chance that global routing will complete:
94+
95+
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
96+
97+
![Alt text](gui_grt.png)
98+
99+
Global routing congestion heatmap can be examined in the GUI.
100+
101+
Next steps
102+
----------
103+
104+
Start creating a config.mk file for your design, write an .sdc file to
105+
examine timing and find reasonable values for the CORE_UTILIZATION
106+
and PLACE_DENSITY for your design considering routing congestion.
107+
108+
Building from your own git repository
109+
=====================================
110+
111+
ORFS, OpenROAD-flow-scripts, supports setting up a config.mk file
112+
in your own git repository without the need to fork ORFS. It is
113+
also possible to perform some preliminary builds of your Verilog
114+
files to examine the results in the OpenROAD GUI.
115+
116+
To build from your own git repository:
117+
118+
FLOW_HOME=~/OpenROAD-flow-scripts/flow make --file=~/OpenROAD-flow-scripts/flow/Makefile DESIGN_CONFIG=config.mk ...
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
export DESIGN_NICKNAME = minimal
2+
export SDC_FILE = 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+
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

0 commit comments

Comments
 (0)