Skip to content

Commit b35736b

Browse files
authored
Merge pull request #339 from The-OpenROAD-Project-staging/ol-asap7
Add files for preliminary openlane asap7 support
2 parents 913dcb9 + 6f52c70 commit b35736b

File tree

5 files changed

+403
-0
lines changed

5 files changed

+403
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
This is for an experimental integration of OpenROAD-flow-scripts into
2+
OpenLane. These files are not used directly by ORFS.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
set current_folder [file dirname [file normalize [info script]]]
2+
# Technology lib
3+
4+
set libs_ref "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)"
5+
6+
set libs_tech "$::env(PDK_ROOT)/$::env(PDK)/libs.tech"
7+
8+
set ::env(LIB_FASTEST) ""
9+
set ::env(LIB_TYPICAL) ""
10+
set ::env(LIB_SLOWEST) ""
11+
12+
set lib_path "$libs_ref/lib"
13+
foreach lib {"AO" "INVBUF" "OA" "SEQ" "SIMPLE"} {
14+
append ::env(LIB_FASTEST) "$lib_path/asap7sc7p5t_${lib}_RVT_FF_nldm_201020.lib "
15+
append ::env(LIB_TYPICAL) "$lib_path/asap7sc7p5t_${lib}_RVT_TT_nldm_201020.lib "
16+
append ::env(LIB_SLOWEST) "$lib_path/asap7sc7p5t_${lib}_RVT_SS_nldm_201020.lib "
17+
}
18+
19+
set ::env(LIB_SYNTH) $::env(LIB_TYPICAL)
20+
set ::env(LIB_RESIZER_OPT) $::env(LIB_SYNTH)
21+
22+
set ::env(DFF_LIB_SYNTH) "$lib_path/asap7sc7p5t_SEQ_RVT_TT_nldm_201020.lib"
23+
24+
set ::env(LIB_CTS) $::env(LIB_TYPICAL)
25+
26+
# Placement site for core cells
27+
# This can be found in the technology lef
28+
set ::env(PLACE_SITE) "asap7sc7p5t"
29+
set ::env(PLACE_SITE_WIDTH) 0.054
30+
set ::env(PLACE_SITE_HEIGHT) 0.270
31+
32+
# welltap and endcap cells
33+
set ::env(FP_WELLTAP_CELL) "TAPCELL_ASAP7_75t_R"
34+
set ::env(FP_ENDCAP_CELL) "TAPCELL_ASAP7_75t_R"
35+
36+
# defaults (can be overridden by designs):
37+
set ::env(SYNTH_DRIVING_CELL) "BUFx2_ASAP7_75t_R"
38+
set ::env(SYNTH_DRIVING_CELL_PIN) "Y"
39+
set ::env(SYNTH_CAP_LOAD) "4.61057" ; # femtofarad INVx8_ASAP7_75t_R pin A cap
40+
set ::env(SYNTH_MIN_BUF_PORT) "BUFx2_ASAP7_75t_R A Y"
41+
set ::env(SYNTH_TIEHI_PORT) "TIEHIx1_ASAP7_75t_R H"
42+
set ::env(SYNTH_TIELO_PORT) "TIELOx1_ASAP7_75t_R L"
43+
44+
# cts defaults
45+
set ::env(CTS_ROOT_BUFFER) BUFx4_ASAP7_75t_R
46+
set ::env(CELL_CLK_PORT) CLK
47+
48+
# Placement defaults
49+
set ::env(PL_LIB) $::env(LIB_TYPICAL)
50+
51+
# Fillcell insertion
52+
set ::env(FILL_CELL) "FILLERxp5_ASAP7_75t_R"
53+
set ::env(DECAP_CELL) "DECAPx1_ASAP7_75t_R"
54+
set ::env(RE_BUFFER_CELL) ""
55+
56+
set ::env(CELL_PAD) 2
57+
set ::env(CELL_PAD_EXCLUDE) ""
58+
59+
# Clk Buffers info CTS data
60+
set ::env(ROOT_CLK_BUFFER) BUFx4_ASAP7_75t_R
61+
set ::env(CLK_BUFFER) BUFx4_ASAP7_75t_R
62+
set ::env(CLK_BUFFER_INPUT) A
63+
set ::env(CLK_BUFFER_OUTPUT) Y
64+
set ::env(CTS_CLK_BUFFER_LIST) "BUFx4_ASAP7_75t_R"
65+
set ::env(FP_PDN_RAIL_WIDTH) 0.48
66+
# Determined from BUFx24_ASAP7_75t_R
67+
set ::env(CTS_MAX_CAP) 1474.56
68+
set ::env(DEFAULT_MAX_TRAN) 320
69+
70+
set ::env(PDN_CFG) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/$::env(STD_CELL_LIBRARY)/grid_strategy-M2-M5-M7.cfg"
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
A2O1A1Ixp33_ASAP7_75t_R
2+
A2O1A1O1Ixp25_ASAP7_75t_R
3+
AO21x1_ASAP7_75t_R
4+
AO221x1_ASAP7_75t_R
5+
AO22x1_ASAP7_75t_R
6+
AO32x1_ASAP7_75t_R
7+
AO331x1_ASAP7_75t_R
8+
AO332x1_ASAP7_75t_R
9+
AO333x1_ASAP7_75t_R
10+
AOI211x1_ASAP7_75t_R
11+
AOI211xp5_ASAP7_75t_R
12+
AOI21x1_ASAP7_75t_R
13+
AOI21xp33_ASAP7_75t_R
14+
AOI21xp5_ASAP7_75t_R
15+
AOI221x1_ASAP7_75t_R
16+
AOI221xp5_ASAP7_75t_R
17+
AOI222xp33_ASAP7_75t_R
18+
AOI22x1_ASAP7_75t_R
19+
AOI22xp33_ASAP7_75t_R
20+
AOI22xp5_ASAP7_75t_R
21+
AOI311xp33_ASAP7_75t_R
22+
AOI31xp33_ASAP7_75t_R
23+
AOI31xp67_ASAP7_75t_R
24+
AOI321xp33_ASAP7_75t_R
25+
AOI322xp5_ASAP7_75t_R
26+
AOI32xp33_ASAP7_75t_R
27+
AOI331xp33_ASAP7_75t_R
28+
AOI332xp33_ASAP7_75t_R
29+
AOI333xp33_ASAP7_75t_R
30+
AOI33xp33_ASAP7_75t_R
31+
HB1xp67_ASAP7_75t_R
32+
HB2xp67_ASAP7_75t_R
33+
HB3xp67_ASAP7_75t_R
34+
HB4xp67_ASAP7_75t_R
35+
INVx1_ASAP7_75t_R
36+
INVxp33_ASAP7_75t_R
37+
INVxp67_ASAP7_75t_R
38+
O2A1O1Ixp33_ASAP7_75t_R
39+
O2A1O1Ixp5_ASAP7_75t_R
40+
OA331x1_ASAP7_75t_R
41+
OA332x1_ASAP7_75t_R
42+
OA333x1_ASAP7_75t_R
43+
OAI211xp5_ASAP7_75t_R
44+
OAI21x1_ASAP7_75t_R
45+
OAI21xp33_ASAP7_75t_R
46+
OAI21xp5_ASAP7_75t_R
47+
OAI221xp5_ASAP7_75t_R
48+
OAI222xp33_ASAP7_75t_R
49+
OAI22x1_ASAP7_75t_R
50+
OAI22xp33_ASAP7_75t_R
51+
OAI22xp5_ASAP7_75t_R
52+
OAI311xp33_ASAP7_75t_R
53+
OAI31xp33_ASAP7_75t_R
54+
OAI31xp67_ASAP7_75t_R
55+
OAI321xp33_ASAP7_75t_R
56+
OAI322xp33_ASAP7_75t_R
57+
OAI32xp33_ASAP7_75t_R
58+
OAI331xp33_ASAP7_75t_R
59+
OAI332xp33_ASAP7_75t_R
60+
OAI333xp33_ASAP7_75t_R
61+
OAI33xp33_ASAP7_75t_R
62+
ASYNC_DFFHx1_ASAP7_75t_R
63+
DFFHQNx1_ASAP7_75t_R
64+
DFFHQNx2_ASAP7_75t_R
65+
DFFHQNx3_ASAP7_75t_R
66+
DFFHQx4_ASAP7_75t_R
67+
DFFLQNx1_ASAP7_75t_R
68+
DHLx1_ASAP7_75t_R
69+
DLLx1_ASAP7_75t_R
70+
ICGx1_ASAP7_75t_R
71+
ICGx2_ASAP7_75t_R
72+
ICGx2p67DC_ASAP7_75t_R
73+
ICGx3_ASAP7_75t_R
74+
ICGx4DC_ASAP7_75t_R
75+
ICGx4_ASAP7_75t_R
76+
ICGx5_ASAP7_75t_R
77+
ICGx5p33DC_ASAP7_75t_R
78+
ICGx6p67DC_ASAP7_75t_R
79+
ICGx8DC_ASAP7_75t_R
80+
SDFHx1_ASAP7_75t_R
81+
SDFHx2_ASAP7_75t_R
82+
SDFHx3_ASAP7_75t_R
83+
SDFHx4_ASAP7_75t_R
84+
SDFLx1_ASAP7_75t_R
85+
SDFLx2_ASAP7_75t_R
86+
SDFLx3_ASAP7_75t_R
87+
SDFLx4_ASAP7_75t_R
88+
AND3x1_ASAP7_75t_R
89+
AND4x1_ASAP7_75t_R
90+
AND5x1_ASAP7_75t_R
91+
FAx1_ASAP7_75t_R
92+
HAxp5_ASAP7_75t_R
93+
MAJIxp5_ASAP7_75t_R
94+
NAND2x1_ASAP7_75t_R
95+
NAND2x1p5_ASAP7_75t_R
96+
NAND2xp33_ASAP7_75t_R
97+
NAND2xp5_ASAP7_75t_R
98+
NAND2xp67_ASAP7_75t_R
99+
NAND3x1_ASAP7_75t_R
100+
NAND3xp33_ASAP7_75t_R
101+
NAND4xp25_ASAP7_75t_R
102+
NAND4xp75_ASAP7_75t_R
103+
NAND5xp2_ASAP7_75t_R
104+
NOR2x1_ASAP7_75t_R
105+
NOR2x1p5_ASAP7_75t_R
106+
NOR2xp33_ASAP7_75t_R
107+
NOR2xp67_ASAP7_75t_R
108+
NOR3x1_ASAP7_75t_R
109+
NOR3xp33_ASAP7_75t_R
110+
NOR4xp25_ASAP7_75t_R
111+
NOR4xp75_ASAP7_75t_R
112+
NOR5xp2_ASAP7_75t_R
113+
OR3x1_ASAP7_75t_R
114+
OR4x1_ASAP7_75t_R
115+
OR5x1_ASAP7_75t_R
116+
TIEHIx1_ASAP7_75t_R
117+
TIELOx1_ASAP7_75t_R
118+
XNOR2x1_ASAP7_75t_R
119+
XNOR2xp5_ASAP7_75t_R
120+
XOR2x1_ASAP7_75t_R
121+
XOR2xp5_ASAP7_75t_R
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
# Process node
2+
set ::env(PROCESS) 7
3+
set ::env(DEF_UNITS_PER_MICRON) 1000
4+
5+
# Placement site for core cells
6+
# This can be found in the technology lef
7+
8+
set ::env(VDD_PIN) "VDD"
9+
set ::env(GND_PIN) "VSS"
10+
11+
set ::env(STD_CELL_POWER_PINS) "VDD"
12+
set ::env(STD_CELL_GROUND_PINS) "VSS"
13+
14+
# Technology LEF
15+
set ::env(TECH_LEF) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/techlef/asap7_tech_1x_201209.lef"
16+
set ::env(CELLS_LEF) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lef/*.lef"]
17+
set ::env(GDS_FILES) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/gds/*.gds"]
18+
set ::env(STD_CELL_LIBRARY_CDL) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/cdl/$::env(STD_CELL_LIBRARY).cdl"
19+
20+
set ::env(GPIO_PADS_LEF) ""
21+
22+
set ::env(GPIO_PADS_VERILOG) ""
23+
24+
# Optimization library
25+
set ::env(TECH_LEF_OPT) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY_OPT)/techlef/$::env(STD_CELL_LIBRARY_OPT).tlef"
26+
set ::env(CELLS_LEF_OPT) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY_OPT)/lef/*.lef"]
27+
set ::env(GDS_FILES_OPT) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY_OPT)/gds/*.gds"]
28+
set ::env(STD_CELL_LIBRARY_OPT_CDL) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY_OPT)/cdl/$::env(STD_CELL_LIBRARY_OPT).cdl"
29+
30+
31+
# Optimization library slowest corner
32+
set tmp $::env(STD_CELL_LIBRARY)
33+
set ::env(STD_CELL_LIBRARY) $::env(STD_CELL_LIBRARY_OPT)
34+
source "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/$::env(STD_CELL_LIBRARY_OPT)/config.tcl"
35+
set ::env(LIB_SLOWEST_OPT) $::env(LIB_SLOWEST)
36+
set ::env(STD_CELL_LIBRARY) $tmp
37+
source "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/$::env(STD_CELL_LIBRARY)/config.tcl"
38+
39+
set ::env(GPIO_PADS_LEF_CORE_SIDE) ""
40+
41+
# magic setup
42+
#set ::env(MAGIC_MAGICRC) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/sky130A.magicrc"
43+
#set ::env(MAGIC_TECH_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/sky130A.tech"
44+
set ::env(RUN_MAGIC) false
45+
set ::env(RUN_KLAYOUT_XOR) false ;# nothing to XOR with from magic
46+
47+
# Klayout setup
48+
set ::env(KLAYOUT_TECH) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/$::env(PDK).lyt"
49+
set ::env(KLAYOUT_PROPERTIES) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/$::env(PDK).lyp"
50+
#set ::env(KLAYOUT_DRC_TECH_SCRIPT) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/$::env(PDK)_mr.drc"
51+
#set ::env(KLAYOUT_DRC_TECH) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/$::env(PDK).lydrc"
52+
53+
# netgen setup
54+
#set ::env(NETGEN_SETUP_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/netgen/sky130A_setup.tcl"
55+
56+
set ::env(FP_TAPCELL_DIST) 25
57+
58+
# Tracks info - suppress .info conversion and use make_tracks.tcl directly
59+
set ::env(TRACKS_INFO_FILE) ""
60+
set ::env(TRACKS_INFO_FILE_PROCESSED) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/$::env(STD_CELL_LIBRARY)/make_tracks.tcl"
61+
62+
# Latch mapping
63+
set ::env(SYNTH_LATCH_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/$::env(STD_CELL_LIBRARY)/cells_latch.v"
64+
65+
# Tri-state buffer mapping
66+
set ::env(TRISTATE_BUFFER_MAP) ""
67+
68+
# Full adder mapping
69+
set ::env(FULL_ADDER_MAP) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/$::env(STD_CELL_LIBRARY)/cells_adders.v"
70+
71+
# Ripple carry adder mapping
72+
set ::env(RIPPLE_CARRY_ADDER_MAP) ""
73+
74+
# Carry select adder mapping
75+
set ::env(CARRY_SELECT_ADDER_MAP) ""
76+
77+
# Default No Synth List
78+
set ::env(NO_SYNTH_CELL_LIST) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/$::env(STD_CELL_LIBRARY)/no_synth.cells"
79+
80+
# Default DRC Exclude List
81+
set ::env(DRC_EXCLUDE_CELL_LIST) ""
82+
83+
# DRC Exclude List for Optimization library
84+
set ::env(DRC_EXCLUDE_CELL_LIST_OPT) ""
85+
86+
# Open-RCX Rules File
87+
set ::env(RCX_RULES) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/rcx_patterns.rules"
88+
89+
# VIAS RC Values
90+
set ::env(VIAS_RC) "\
91+
V1 1.00E-02,\
92+
V2 1.00E-02,\
93+
V3 1.00E-02,\
94+
V4 1.00E-02,\
95+
V5 1.00E-02,\
96+
V6 1.00E-02,\
97+
V7 1.00E-02,\
98+
V8 1.00E-02,\
99+
V9 1.00E-02"
100+
101+
# Layer RC Values
102+
set ::env(LAYERS_RC) "\
103+
M1 1.1368e-01 1.3889e-01,\
104+
M2 1.3426e-01 2.4222e-02,\
105+
M3 1.2918e-01 2.4222e-02,\
106+
M4 1.1396e-01 1.6778e-02,\
107+
M5 1.3323e-01 1.4677e-02,\
108+
M6 1.1575e-01 1.0371e-02,\
109+
M7 1.3293e-01 9.6720e-03,\
110+
M8 1.1822e-01 7.4310e-03,\
111+
M9 1.3497e-01 6.8740e-03"
112+
113+
# Extra PDN configs
114+
set ::env(FP_PDN_RAILS_LAYER) met1
115+
set ::env(FP_PDN_LOWER_LAYER) met4
116+
set ::env(FP_PDN_UPPER_LAYER) met5
117+
set ::env(FP_PDN_RAIL_OFFSET) 0
118+
set ::env(FP_PDN_VWIDTH) 1.6
119+
set ::env(FP_PDN_HWIDTH) 1.6
120+
set ::env(FP_PDN_VSPACING) 1.7
121+
set ::env(FP_PDN_HSPACING) 1.7
122+
123+
# Core Ring PDN defaults
124+
set ::env(FP_PDN_CORE_RING_VWIDTH) 1.6
125+
set ::env(FP_PDN_CORE_RING_HWIDTH) 1.6
126+
set ::env(FP_PDN_CORE_RING_VSPACING) 1.7
127+
set ::env(FP_PDN_CORE_RING_HSPACING) 1.7
128+
set ::env(FP_PDN_CORE_RING_VOFFSET) 6
129+
set ::env(FP_PDN_CORE_RING_HOFFSET) 6
130+
131+
# PDN Macro blockages list
132+
set ::env(MACRO_BLOCKAGES_LAYER) "li1 met1 met2 met3 met4"
133+
134+
# Used for parasitics estimation, IR drop analysis, etc
135+
set ::env(WIRE_RC_LAYER) "M3"
136+
set ::env(DATA_WIRE_RC_LAYER) "M3"
137+
set ::env(CLOCK_WIRE_RC_LAYER) "M3"
138+
139+
# I/O Layer info
140+
set ::env(FP_IO_HLAYER) "M4"
141+
set ::env(FP_IO_VLAYER) "M5"
142+
143+
# Routing Layer Info
144+
set ::env(GLB_RT_LAYER_ADJUSTMENTS) "0.5,0.5,0.5,0.5,0.5,0.5"
145+
146+
set ::env(RT_MIN_LAYER) "M2"
147+
set ::env(RT_MAX_LAYER) "M7"
148+
149+
# Use OR default
150+
set ::env(FP_IO_MIN_DISTANCE) ""
151+
152+
# Asap7 has no antenna rules nor diode cells
153+
set ::env(DIODE_INSERTION_STRATEGY) 0

0 commit comments

Comments
 (0)