siliconcompiler 0.28.9__py3-none-any.whl → 0.29.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- siliconcompiler/_metadata.py +1 -1
- siliconcompiler/apps/__init__.py +26 -0
- siliconcompiler/apps/sc_remote.py +15 -14
- siliconcompiler/apps/sc_show.py +5 -5
- siliconcompiler/apps/utils/replay.py +194 -0
- siliconcompiler/checklists/__init__.py +12 -0
- siliconcompiler/core.py +89 -22
- siliconcompiler/flows/__init__.py +34 -0
- siliconcompiler/flows/_common.py +11 -13
- siliconcompiler/flows/asicflow.py +83 -42
- siliconcompiler/flows/showflow.py +1 -1
- siliconcompiler/libs/__init__.py +5 -0
- siliconcompiler/optimizer/__init__.py +199 -0
- siliconcompiler/optimizer/vizier.py +259 -0
- siliconcompiler/pdks/__init__.py +5 -0
- siliconcompiler/remote/__init__.py +11 -0
- siliconcompiler/remote/client.py +753 -815
- siliconcompiler/report/report.py +2 -0
- siliconcompiler/report/summary_table.py +1 -1
- siliconcompiler/scheduler/__init__.py +118 -58
- siliconcompiler/scheduler/send_messages.py +1 -1
- siliconcompiler/schema/schema_cfg.py +16 -4
- siliconcompiler/schema/schema_obj.py +29 -10
- siliconcompiler/schema/utils.py +2 -0
- siliconcompiler/sphinx_ext/__init__.py +85 -0
- siliconcompiler/sphinx_ext/dynamicgen.py +19 -34
- siliconcompiler/sphinx_ext/schemagen.py +3 -2
- siliconcompiler/targets/__init__.py +26 -0
- siliconcompiler/targets/gf180_demo.py +3 -3
- siliconcompiler/templates/replay/replay.py.j2 +62 -0
- siliconcompiler/templates/replay/requirements.txt +7 -0
- siliconcompiler/templates/replay/setup.sh +130 -0
- siliconcompiler/tools/__init__.py +60 -0
- siliconcompiler/tools/_common/__init__.py +15 -1
- siliconcompiler/tools/_common/asic.py +17 -9
- siliconcompiler/tools/builtin/concatenate.py +1 -1
- siliconcompiler/tools/ghdl/ghdl.py +1 -2
- siliconcompiler/tools/klayout/convert_drc_db.py +1 -1
- siliconcompiler/tools/klayout/drc.py +1 -1
- siliconcompiler/tools/klayout/export.py +8 -1
- siliconcompiler/tools/klayout/klayout.py +2 -2
- siliconcompiler/tools/klayout/klayout_convert_drc_db.py +2 -2
- siliconcompiler/tools/klayout/klayout_export.py +7 -5
- siliconcompiler/tools/klayout/klayout_operations.py +4 -3
- siliconcompiler/tools/klayout/klayout_show.py +3 -2
- siliconcompiler/tools/klayout/klayout_utils.py +1 -1
- siliconcompiler/tools/klayout/operations.py +8 -0
- siliconcompiler/tools/klayout/screenshot.py +6 -1
- siliconcompiler/tools/klayout/show.py +8 -1
- siliconcompiler/tools/magic/magic.py +1 -1
- siliconcompiler/tools/openroad/__init__.py +103 -0
- siliconcompiler/tools/openroad/{openroad.py → _apr.py} +415 -423
- siliconcompiler/tools/openroad/antenna_repair.py +78 -0
- siliconcompiler/tools/openroad/clock_tree_synthesis.py +64 -0
- siliconcompiler/tools/openroad/detailed_placement.py +59 -0
- siliconcompiler/tools/openroad/detailed_route.py +62 -0
- siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +52 -0
- siliconcompiler/tools/openroad/fillercell_insertion.py +58 -0
- siliconcompiler/tools/openroad/{dfm.py → fillmetal_insertion.py} +35 -19
- siliconcompiler/tools/openroad/global_placement.py +58 -0
- siliconcompiler/tools/openroad/global_route.py +63 -0
- siliconcompiler/tools/openroad/init_floorplan.py +103 -0
- siliconcompiler/tools/openroad/macro_placement.py +65 -0
- siliconcompiler/tools/openroad/metrics.py +23 -8
- siliconcompiler/tools/openroad/pin_placement.py +56 -0
- siliconcompiler/tools/openroad/power_grid.py +65 -0
- siliconcompiler/tools/openroad/rcx_bench.py +7 -4
- siliconcompiler/tools/openroad/rcx_extract.py +2 -1
- siliconcompiler/tools/openroad/rdlroute.py +4 -4
- siliconcompiler/tools/openroad/repair_design.py +59 -0
- siliconcompiler/tools/openroad/repair_timing.py +63 -0
- siliconcompiler/tools/openroad/screenshot.py +9 -20
- siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +44 -0
- siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +95 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +51 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +66 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +41 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +71 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +55 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +27 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +36 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +26 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +61 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +333 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +123 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +22 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +41 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +60 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +68 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +83 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +125 -0
- siliconcompiler/tools/openroad/scripts/common/debugging.tcl +28 -0
- siliconcompiler/tools/openroad/scripts/common/procs.tcl +727 -0
- siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +59 -0
- siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +20 -0
- siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +16 -0
- siliconcompiler/tools/openroad/scripts/common/reports.tcl +180 -0
- siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +18 -0
- siliconcompiler/tools/openroad/scripts/common/write_images.tcl +395 -0
- siliconcompiler/tools/openroad/scripts/{sc_rcx_bench.tcl → rcx/sc_rcx_bench.tcl} +5 -5
- siliconcompiler/tools/openroad/scripts/{sc_rcx_extract.tcl → rcx/sc_rcx_extract.tcl} +0 -0
- siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +5 -16
- siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +51 -51
- siliconcompiler/tools/openroad/scripts/sc_show.tcl +110 -0
- siliconcompiler/tools/openroad/show.py +28 -23
- siliconcompiler/tools/openroad/{export.py → write_data.py} +31 -26
- siliconcompiler/tools/opensta/__init__.py +2 -2
- siliconcompiler/tools/opensta/check_library.py +27 -0
- siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +255 -0
- siliconcompiler/tools/opensta/scripts/sc_timing.tcl +1 -1
- siliconcompiler/tools/sv2v/sv2v.py +1 -2
- siliconcompiler/tools/verilator/verilator.py +6 -7
- siliconcompiler/tools/vivado/vivado.py +1 -1
- siliconcompiler/tools/yosys/__init__.py +149 -0
- siliconcompiler/tools/yosys/lec.py +22 -9
- siliconcompiler/tools/yosys/sc_lec.tcl +94 -49
- siliconcompiler/tools/yosys/sc_syn.tcl +1 -0
- siliconcompiler/tools/yosys/screenshot.py +2 -2
- siliconcompiler/tools/yosys/syn_asic.py +105 -74
- siliconcompiler/tools/yosys/syn_asic.tcl +58 -12
- siliconcompiler/tools/yosys/syn_fpga.py +2 -3
- siliconcompiler/tools/yosys/syn_fpga.tcl +26 -19
- siliconcompiler/toolscripts/_tools.json +5 -5
- siliconcompiler/utils/__init__.py +7 -3
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.1.dist-info}/METADATA +22 -17
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.1.dist-info}/RECORD +131 -114
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.1.dist-info}/WHEEL +1 -1
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.1.dist-info}/entry_points.txt +13 -0
- siliconcompiler/libs/asap7sc7p5t.py +0 -8
- siliconcompiler/libs/gf180mcu.py +0 -8
- siliconcompiler/libs/interposer.py +0 -8
- siliconcompiler/libs/nangate45.py +0 -8
- siliconcompiler/libs/sg13g2_stdcell.py +0 -8
- siliconcompiler/libs/sky130hd.py +0 -8
- siliconcompiler/libs/sky130io.py +0 -8
- siliconcompiler/pdks/asap7.py +0 -8
- siliconcompiler/pdks/freepdk45.py +0 -8
- siliconcompiler/pdks/gf180.py +0 -8
- siliconcompiler/pdks/ihp130.py +0 -8
- siliconcompiler/pdks/interposer.py +0 -8
- siliconcompiler/pdks/skywater130.py +0 -8
- siliconcompiler/tools/openroad/cts.py +0 -45
- siliconcompiler/tools/openroad/floorplan.py +0 -75
- siliconcompiler/tools/openroad/physyn.py +0 -27
- siliconcompiler/tools/openroad/place.py +0 -41
- siliconcompiler/tools/openroad/route.py +0 -45
- siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
- siliconcompiler/tools/openroad/scripts/sc_apr.tcl +0 -514
- siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -68
- siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +0 -22
- siliconcompiler/tools/openroad/scripts/sc_export.tcl +0 -100
- siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +0 -456
- siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +0 -1
- siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -6
- siliconcompiler/tools/openroad/scripts/sc_place.tcl +0 -84
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +0 -494
- siliconcompiler/tools/openroad/scripts/sc_report.tcl +0 -189
- siliconcompiler/tools/openroad/scripts/sc_route.tcl +0 -143
- siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -18
- siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +0 -393
- siliconcompiler/tools/yosys/yosys.py +0 -148
- /siliconcompiler/tools/openroad/scripts/{sc_write.tcl → common/write_data.tcl} +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.1.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.1.dist-info}/top_level.txt +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#https://github.com/The-OpenROAD-Project/OpenROAD/blob/9b52b1d9cfb532f9872739ffe482afb5ac9def92/src/rcx/calibration/script/generate_rules.tcl
|
|
2
2
|
|
|
3
3
|
set openroad_bench_length \
|
|
4
|
-
|
|
4
|
+
[lindex [sc_cfg_tool_task_get {var} bench_length] 0]
|
|
5
5
|
|
|
6
6
|
set sc_maxmetal \
|
|
7
|
-
|
|
7
|
+
[sc_get_layer_name [lindex [sc_cfg_tool_task_get {var} max_layer] 0]]
|
|
8
8
|
set openroad_top_metal_number [[[ord::get_db_tech] findLayer $sc_maxmetal] getRoutingLevel]
|
|
9
9
|
|
|
10
10
|
# Creates the patterns and
|
|
11
11
|
# store it in the database
|
|
12
12
|
bench_wires \
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
-len $openroad_bench_length \
|
|
14
|
+
-met_cnt $openroad_top_metal_number \
|
|
15
|
+
-all
|
|
16
16
|
|
|
17
17
|
# Writes the verilog netlist
|
|
18
18
|
# of the patterns
|
|
File without changes
|
|
@@ -8,16 +8,9 @@ source ./sc_manifest.tcl > /dev/null
|
|
|
8
8
|
# Schema Helper functions
|
|
9
9
|
###############################
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if { $layer == "NULL" } {
|
|
15
|
-
utl::error FLW 1 "$name is not a valid routing layer."
|
|
16
|
-
}
|
|
17
|
-
return [$layer getName]
|
|
18
|
-
}
|
|
19
|
-
return $name
|
|
20
|
-
}
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
|
|
13
|
+
source "${sc_refdir}/common/procs.tcl"
|
|
21
14
|
|
|
22
15
|
##############################
|
|
23
16
|
# Schema Adapter
|
|
@@ -29,8 +22,6 @@ set sc_index [sc_cfg_get arg index]
|
|
|
29
22
|
set sc_flow [sc_cfg_get option flow]
|
|
30
23
|
set sc_task [sc_cfg_get flowgraph $sc_flow $sc_step $sc_index task]
|
|
31
24
|
|
|
32
|
-
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
33
|
-
|
|
34
25
|
# Design
|
|
35
26
|
set sc_design [sc_top]
|
|
36
27
|
set sc_pdk [sc_cfg_get option pdk]
|
|
@@ -42,8 +33,6 @@ set sc_libtype [lindex [sc_cfg_tool_task_get {var} libtype] 0]
|
|
|
42
33
|
# PDK Design Rules
|
|
43
34
|
set sc_techlef [sc_cfg_get pdk $sc_pdk aprtech openroad $sc_stackup $sc_libtype lef]
|
|
44
35
|
|
|
45
|
-
set sc_threads [sc_cfg_tool_task_get threads]
|
|
46
|
-
|
|
47
36
|
###############################
|
|
48
37
|
# Read Files
|
|
49
38
|
###############################
|
|
@@ -56,8 +45,8 @@ read_lef $sc_techlef
|
|
|
56
45
|
# Run task
|
|
57
46
|
###############################
|
|
58
47
|
|
|
59
|
-
set_thread_count
|
|
48
|
+
set_thread_count [sc_cfg_tool_task_get threads]
|
|
60
49
|
|
|
61
50
|
utl::set_metrics_stage "sc__step__{}"
|
|
62
|
-
source -echo "${sc_refdir}/sc_${sc_task}.tcl"
|
|
51
|
+
source -echo "${sc_refdir}/rcx/sc_${sc_task}.tcl"
|
|
63
52
|
utl::pop_metrics_stage
|
|
@@ -40,22 +40,22 @@ set sc_macrolibs [sc_get_asic_libraries macro]
|
|
|
40
40
|
###############################
|
|
41
41
|
|
|
42
42
|
foreach msg [sc_cfg_tool_task_get warningoff] {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
set or_msg [split $msg "-"]
|
|
44
|
+
if { [llength $or_msg] != 2 } {
|
|
45
|
+
utl::warn FLW 1 "$msg is not a valid message id"
|
|
46
|
+
} else {
|
|
47
|
+
set or_tool [lindex $or_msg 0]
|
|
48
|
+
set or_msg_id [expr { int([lindex $or_msg 1]) }]
|
|
49
|
+
utl::info FLW 1 "Suppressing $msg messages"
|
|
50
|
+
suppress_message $or_tool $or_msg_id
|
|
51
|
+
}
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
###############################
|
|
55
55
|
# Source helper functions
|
|
56
56
|
###############################
|
|
57
57
|
|
|
58
|
-
source "$sc_refdir/
|
|
58
|
+
source "$sc_refdir/common/procs.tcl"
|
|
59
59
|
|
|
60
60
|
###############################
|
|
61
61
|
# Common Setup
|
|
@@ -69,21 +69,21 @@ read_lef $sc_techlef
|
|
|
69
69
|
|
|
70
70
|
# Read Lefs
|
|
71
71
|
foreach lib "$sc_macrolibs" {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
foreach lef_file [sc_cfg_get library $lib output $sc_stackup lef] {
|
|
73
|
+
puts "Reading lef: ${lef_file}"
|
|
74
|
+
read_lef $lef_file
|
|
75
|
+
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
# Read Verilog
|
|
79
79
|
if { [file exists "inputs/${sc_design}.vg"] } {
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
puts "Reading netlist verilog: inputs/${sc_design}.vg"
|
|
81
|
+
read_verilog "inputs/${sc_design}.vg"
|
|
82
82
|
} else {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
foreach netlist [sc_cfg_get input netlist verilog] {
|
|
84
|
+
puts "Reading netlist verilog: ${netlist}"
|
|
85
|
+
read_verilog $netlist
|
|
86
|
+
}
|
|
87
87
|
}
|
|
88
88
|
link_design $sc_design
|
|
89
89
|
|
|
@@ -93,10 +93,10 @@ link_design $sc_design
|
|
|
93
93
|
|
|
94
94
|
utl::push_metrics_stage "sc__prestep__{}"
|
|
95
95
|
if { [sc_cfg_tool_task_exists prescript] } {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
foreach sc_pre_script [sc_cfg_tool_task_get prescript] {
|
|
97
|
+
puts "Sourcing pre script: ${sc_pre_script}"
|
|
98
|
+
source -echo $sc_pre_script
|
|
99
|
+
}
|
|
100
100
|
}
|
|
101
101
|
utl::pop_metrics_stage
|
|
102
102
|
|
|
@@ -107,23 +107,23 @@ utl::push_metrics_stage "sc__step__{}"
|
|
|
107
107
|
###########################
|
|
108
108
|
|
|
109
109
|
if { [sc_cfg_exists input asic floorplan] } {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
set def [lindex [sc_cfg_get input asic floorplan] 0]
|
|
111
|
+
puts "Reading floorplan DEF: ${def}"
|
|
112
|
+
read_def -floorplan_initialize $def
|
|
113
113
|
} else {
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
#NOTE: assuming a two tuple value as lower left, upper right
|
|
115
|
+
set sc_diearea [sc_cfg_get constraint outline]
|
|
116
116
|
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
# Use die and core sizes
|
|
118
|
+
set sc_diesize "[lindex $sc_diearea 0] [lindex $sc_diearea 1]"
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
set outline [odb::Rect]
|
|
121
|
+
$outline set_xlo [ord::microns_to_dbu [lindex $sc_diesize 0]]
|
|
122
|
+
$outline set_ylo [ord::microns_to_dbu [lindex $sc_diesize 1]]
|
|
123
|
+
$outline set_xhi [ord::microns_to_dbu [lindex $sc_diesize 2]]
|
|
124
|
+
$outline set_yhi [ord::microns_to_dbu [lindex $sc_diesize 3]]
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
[ord::get_db_block] setDieArea $outline
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
puts "Floorplan information:"
|
|
@@ -140,8 +140,8 @@ make_tracks
|
|
|
140
140
|
# RDL Routing
|
|
141
141
|
###########################
|
|
142
142
|
foreach rdl_file [sc_cfg_tool_task_get {file} rdlroute] {
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
puts "Sourcing rdlroute: ${rdl_file}"
|
|
144
|
+
source $rdl_file
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
######################
|
|
@@ -150,28 +150,28 @@ foreach rdl_file [sc_cfg_tool_task_get {file} rdlroute] {
|
|
|
150
150
|
|
|
151
151
|
set removed_obs 0
|
|
152
152
|
foreach obstruction [[ord::get_db_block] getObstructions] {
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
odb::dbObstruction_destroy $obstruction
|
|
154
|
+
incr removed_obs
|
|
155
155
|
}
|
|
156
156
|
utl::info FLW 1 "Deleted $removed_obs routing obstructions"
|
|
157
157
|
|
|
158
158
|
if {
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
[lindex [sc_cfg_tool_task_get var fin_add_fill] 0] == "true" &&
|
|
160
|
+
[sc_cfg_exists pdk $sc_pdk aprtech openroad $sc_stackup $sc_libtype fill]
|
|
161
161
|
} {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
162
|
+
set sc_fillrules \
|
|
163
|
+
[lindex [sc_cfg_get pdk $sc_pdk aprtech openroad $sc_stackup $sc_libtype fill] 0]
|
|
164
|
+
density_fill -rules $sc_fillrules
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
utl::pop_metrics_stage
|
|
168
168
|
|
|
169
169
|
utl::push_metrics_stage "sc__poststep__{}"
|
|
170
170
|
if { [sc_cfg_tool_task_exists postscript] } {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
171
|
+
foreach sc_post_script [sc_cfg_tool_task_get postscript] {
|
|
172
|
+
puts "Sourcing post script: ${sc_post_script}"
|
|
173
|
+
source -echo $sc_post_script
|
|
174
|
+
}
|
|
175
175
|
}
|
|
176
176
|
utl::pop_metrics_stage
|
|
177
177
|
|
|
@@ -180,5 +180,5 @@ utl::pop_metrics_stage
|
|
|
180
180
|
###############################
|
|
181
181
|
|
|
182
182
|
utl::push_metrics_stage "sc__write__{}"
|
|
183
|
-
source "$sc_refdir/
|
|
183
|
+
source "$sc_refdir/common/write_data.tcl"
|
|
184
184
|
utl::pop_metrics_stage
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
##############################
|
|
8
|
+
# Schema Adapter
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_step [sc_cfg_get arg step]
|
|
12
|
+
set sc_index [sc_cfg_get arg index]
|
|
13
|
+
set sc_flow [sc_cfg_get option flow]
|
|
14
|
+
set sc_tool [sc_cfg_get flowgraph $sc_flow $sc_step $sc_index tool]
|
|
15
|
+
set sc_task [sc_cfg_get flowgraph $sc_flow $sc_step $sc_index task]
|
|
16
|
+
|
|
17
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
18
|
+
|
|
19
|
+
##############################
|
|
20
|
+
# Setup debugging
|
|
21
|
+
###############################
|
|
22
|
+
|
|
23
|
+
source -echo "$sc_refdir/common/debugging.tcl"
|
|
24
|
+
|
|
25
|
+
###############################
|
|
26
|
+
# Setup helper functions
|
|
27
|
+
###############################
|
|
28
|
+
|
|
29
|
+
source "$sc_refdir/common/procs.tcl"
|
|
30
|
+
|
|
31
|
+
###############################
|
|
32
|
+
# Setup GUI title early
|
|
33
|
+
###############################
|
|
34
|
+
sc_set_gui_title
|
|
35
|
+
|
|
36
|
+
###############################
|
|
37
|
+
# Design information
|
|
38
|
+
###############################
|
|
39
|
+
|
|
40
|
+
# Design
|
|
41
|
+
set sc_design [sc_top]
|
|
42
|
+
set sc_optmode [sc_cfg_get option optmode]
|
|
43
|
+
set sc_pdk [sc_cfg_get option pdk]
|
|
44
|
+
set sc_stackup [sc_cfg_get option stackup]
|
|
45
|
+
|
|
46
|
+
# APR Parameters
|
|
47
|
+
set sc_targetlibs [sc_get_asic_libraries logic]
|
|
48
|
+
set sc_mainlib [lindex $sc_targetlibs 0]
|
|
49
|
+
set sc_delaymodel [sc_cfg_get asic delaymodel]
|
|
50
|
+
|
|
51
|
+
# Hard macro libraries
|
|
52
|
+
set sc_macrolibs [sc_get_asic_libraries macro]
|
|
53
|
+
|
|
54
|
+
# Threads
|
|
55
|
+
set_thread_count [sc_cfg_tool_task_get threads]
|
|
56
|
+
|
|
57
|
+
###############################
|
|
58
|
+
# Read Files
|
|
59
|
+
###############################
|
|
60
|
+
|
|
61
|
+
source -echo "$sc_refdir/common/read_liberty.tcl"
|
|
62
|
+
|
|
63
|
+
source -echo "$sc_refdir/common/read_input_files.tcl"
|
|
64
|
+
|
|
65
|
+
source -echo "$sc_refdir/common/read_timing_constraints.tcl"
|
|
66
|
+
|
|
67
|
+
###############################
|
|
68
|
+
# Common Setup
|
|
69
|
+
###############################
|
|
70
|
+
|
|
71
|
+
sc_setup_sta
|
|
72
|
+
|
|
73
|
+
sc_setup_parasitics
|
|
74
|
+
|
|
75
|
+
set_dont_use [sc_cfg_get library $sc_mainlib asic cells dontuse]
|
|
76
|
+
|
|
77
|
+
###############################
|
|
78
|
+
# Source Step Script
|
|
79
|
+
###############################
|
|
80
|
+
|
|
81
|
+
report_units_metric
|
|
82
|
+
|
|
83
|
+
utl::push_metrics_stage "sc__prestep__{}"
|
|
84
|
+
if { [sc_cfg_tool_task_exists prescript] } {
|
|
85
|
+
foreach sc_pre_script [sc_cfg_tool_task_get prescript] {
|
|
86
|
+
puts "Sourcing pre script: ${sc_pre_script}"
|
|
87
|
+
source -echo $sc_pre_script
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
utl::pop_metrics_stage
|
|
91
|
+
|
|
92
|
+
utl::push_metrics_stage "sc__step__{}"
|
|
93
|
+
|
|
94
|
+
set openroad_dont_touch {}
|
|
95
|
+
if { [sc_cfg_tool_task_exists {var} dont_touch] } {
|
|
96
|
+
set openroad_dont_touch [sc_cfg_tool_task_get {var} dont_touch]
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if { [llength $openroad_dont_touch] > 0 } {
|
|
100
|
+
# set don't touch list
|
|
101
|
+
set_dont_touch $openroad_dont_touch
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if { $sc_task == "screenshot" } {
|
|
105
|
+
source -echo "$sc_refdir/common/screenshot.tcl"
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if { [lindex [sc_cfg_tool_task_get {var} show_exit] 0] == "true" } {
|
|
109
|
+
exit
|
|
110
|
+
}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import shutil
|
|
2
2
|
import os
|
|
3
3
|
|
|
4
|
-
from siliconcompiler.tools.openroad import
|
|
5
|
-
from siliconcompiler.tools.openroad.
|
|
6
|
-
from siliconcompiler.tools.openroad.
|
|
7
|
-
from siliconcompiler.tools.openroad.
|
|
4
|
+
from siliconcompiler.tools.openroad import make_docs as or_make_docs
|
|
5
|
+
from siliconcompiler.tools.openroad._apr import setup as tool_setup
|
|
6
|
+
from siliconcompiler.tools.openroad._apr import set_reports
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
8
8
|
from siliconcompiler.tools._common import find_incoming_ext, input_provides, get_tool_task
|
|
9
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
10
|
+
define_ord_params, define_sta_params, define_sdc_params
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
####################################################################
|
|
12
14
|
# Make Docs
|
|
13
15
|
####################################################################
|
|
14
16
|
def make_docs(chip):
|
|
15
|
-
|
|
17
|
+
or_make_docs(chip)
|
|
16
18
|
chip.set('tool', 'openroad', 'task', 'show', 'var', 'show_filepath', '<path>')
|
|
17
19
|
|
|
18
20
|
|
|
@@ -20,22 +22,26 @@ def setup(chip):
|
|
|
20
22
|
'''
|
|
21
23
|
Show a design in openroad
|
|
22
24
|
'''
|
|
25
|
+
generic_show_setup(chip, False)
|
|
23
26
|
|
|
24
|
-
# Generic tool setup.
|
|
25
|
-
setup_tool(chip)
|
|
26
|
-
|
|
27
|
-
generic_show_setup(chip, 'show', False)
|
|
28
27
|
|
|
28
|
+
def generic_show_setup(chip, exit):
|
|
29
|
+
# Generic tool setup.
|
|
30
|
+
tool_setup(chip, exit=exit)
|
|
29
31
|
|
|
30
|
-
def generic_show_setup(chip, task, exit):
|
|
31
|
-
tool = 'openroad'
|
|
32
|
-
design = chip.top()
|
|
33
32
|
step = chip.get('arg', 'step')
|
|
34
33
|
index = chip.get('arg', 'index')
|
|
34
|
+
tool, task = get_tool_task(chip, step, index)
|
|
35
|
+
design = chip.top()
|
|
36
|
+
|
|
37
|
+
chip.set('tool', tool, 'task', task, 'script', 'sc_show.tcl',
|
|
38
|
+
step=step, index=index)
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
# Add GUI option
|
|
41
|
+
chip.add('tool', tool, 'task', task, 'option', '-gui',
|
|
42
|
+
step=step, index=index)
|
|
37
43
|
|
|
38
|
-
chip.set('tool', tool, 'task', task, 'var', 'show_exit',
|
|
44
|
+
chip.set('tool', tool, 'task', task, 'var', 'show_exit', exit,
|
|
39
45
|
step=step, index=index, clobber=False)
|
|
40
46
|
if chip.valid('tool', tool, 'task', task, 'var', 'show_filepath'):
|
|
41
47
|
chip.add('tool', tool, 'task', task, 'require',
|
|
@@ -51,25 +57,24 @@ def generic_show_setup(chip, task, exit):
|
|
|
51
57
|
chip.add('tool', tool, 'task', task, 'input', f'{design}.sdc',
|
|
52
58
|
step=step, index=index)
|
|
53
59
|
|
|
54
|
-
#
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
chip
|
|
58
|
-
|
|
60
|
+
# set default values for task
|
|
61
|
+
define_ord_params(chip)
|
|
62
|
+
define_sta_params(chip)
|
|
63
|
+
define_sdc_params(chip)
|
|
64
|
+
|
|
65
|
+
set_reports(chip, [])
|
|
59
66
|
|
|
60
67
|
|
|
61
68
|
def pre_process(chip):
|
|
62
|
-
or_pre_process(chip)
|
|
63
69
|
copy_show_files(chip)
|
|
70
|
+
define_ord_files(chip)
|
|
64
71
|
build_pex_corners(chip)
|
|
65
72
|
|
|
66
73
|
|
|
67
74
|
def copy_show_files(chip):
|
|
68
|
-
|
|
69
|
-
tool = 'openroad'
|
|
70
75
|
step = chip.get('arg', 'step')
|
|
71
76
|
index = chip.get('arg', 'index')
|
|
72
|
-
|
|
77
|
+
tool, task = get_tool_task(chip, step, index)
|
|
73
78
|
|
|
74
79
|
if chip.valid('tool', tool, 'task', task, 'var', 'show_filepath'):
|
|
75
80
|
show_file = chip.get('tool', tool, 'task', task, 'var', 'show_filepath',
|
|
@@ -1,41 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
from siliconcompiler.tools.openroad.openroad import setup as setup_tool
|
|
3
|
-
from siliconcompiler.tools.openroad.openroad import build_pex_corners
|
|
4
|
-
from siliconcompiler.tools.openroad.openroad import post_process as or_post_process
|
|
5
|
-
from siliconcompiler.tools.openroad.openroad import pre_process as or_pre_process
|
|
6
|
-
from siliconcompiler.tools._common.asic import set_tool_task_var, get_libraries
|
|
7
|
-
from siliconcompiler.tools.openroad.openroad import _set_reports, set_pnr_inputs, set_pnr_outputs
|
|
8
1
|
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools._common.asic import get_libraries, set_tool_task_var
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
5
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
6
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
7
|
+
define_pex_params, define_psm_params
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
9
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
def setup(chip):
|
|
12
13
|
'''
|
|
13
|
-
|
|
14
|
-
circuit descriptions (CDL), and parasitic annotation files (SPEF)
|
|
14
|
+
Write output files
|
|
15
15
|
'''
|
|
16
16
|
|
|
17
|
-
# Generic tool setup.
|
|
18
|
-
|
|
17
|
+
# Generic apr tool setup.
|
|
18
|
+
apr_setup(chip)
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
set_pnr_outputs(chip)
|
|
22
|
-
|
|
23
|
-
tool = 'openroad'
|
|
20
|
+
# Task setup
|
|
24
21
|
design = chip.top()
|
|
25
22
|
step = chip.get('arg', 'step')
|
|
26
23
|
index = chip.get('arg', 'index')
|
|
27
|
-
|
|
24
|
+
tool, task = get_tool_task(chip, step, index)
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
chip.set('tool', tool, 'task', task, 'threads', 1,
|
|
32
|
-
step=step, index=index, clobber=True)
|
|
26
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_write_data.tcl',
|
|
27
|
+
step=step, index=index)
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
# Setup task IO
|
|
30
|
+
set_pnr_inputs(chip)
|
|
31
|
+
set_pnr_outputs(chip)
|
|
36
32
|
|
|
33
|
+
# set default values for openroad
|
|
34
|
+
define_ord_params(chip)
|
|
35
|
+
define_sta_params(chip)
|
|
36
|
+
define_sdc_params(chip)
|
|
37
|
+
define_pex_params(chip)
|
|
38
|
+
define_psm_params(chip)
|
|
39
|
+
|
|
40
|
+
pdkname = chip.get('option', 'pdk')
|
|
37
41
|
targetlibs = get_libraries(chip, 'logic')
|
|
38
42
|
macrolibs = get_libraries(chip, 'macro')
|
|
43
|
+
stackup = chip.get('option', 'stackup')
|
|
39
44
|
|
|
40
45
|
# Determine if exporting the cdl
|
|
41
46
|
set_tool_task_var(chip, param_key='write_cdl',
|
|
@@ -65,7 +70,7 @@ def setup(chip):
|
|
|
65
70
|
for corner in chip.get('tool', tool, 'task', task, 'var', 'pex_corners',
|
|
66
71
|
step=step, index=index):
|
|
67
72
|
chip.add('tool', tool, 'task', task, 'require',
|
|
68
|
-
",".join(['pdk',
|
|
73
|
+
",".join(['pdk', pdkname, 'pexmodel', 'openroad-openrcx', stackup, corner]),
|
|
69
74
|
step=step, index=index)
|
|
70
75
|
|
|
71
76
|
# Add outputs SPEF in the format {design}.{pexcorner}.spef
|
|
@@ -102,7 +107,7 @@ def setup(chip):
|
|
|
102
107
|
chip.add('tool', tool, 'task', task, 'output', design + '.' + corner + '.sdf',
|
|
103
108
|
step=step, index=index)
|
|
104
109
|
|
|
105
|
-
|
|
110
|
+
set_reports(chip, [
|
|
106
111
|
'setup',
|
|
107
112
|
'hold',
|
|
108
113
|
'unconstrained',
|
|
@@ -123,9 +128,9 @@ def setup(chip):
|
|
|
123
128
|
|
|
124
129
|
|
|
125
130
|
def pre_process(chip):
|
|
126
|
-
|
|
131
|
+
define_ord_files(chip)
|
|
127
132
|
build_pex_corners(chip)
|
|
128
133
|
|
|
129
134
|
|
|
130
135
|
def post_process(chip):
|
|
131
|
-
|
|
136
|
+
extract_metrics(chip)
|
|
@@ -9,16 +9,16 @@ Installation: https://github.com/The-OpenROAD-Project/OpenSTA (also installed wi
|
|
|
9
9
|
'''
|
|
10
10
|
|
|
11
11
|
import os
|
|
12
|
-
from siliconcompiler.tools.openroad.
|
|
12
|
+
from siliconcompiler.tools.openroad._apr import get_library_timing_keypaths
|
|
13
13
|
from siliconcompiler.tools._common import get_tool_task
|
|
14
14
|
from siliconcompiler.tools._common.asic import get_libraries
|
|
15
|
-
from siliconcompiler.targets import asap7_demo
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
####################################################################
|
|
19
18
|
# Make Docs
|
|
20
19
|
####################################################################
|
|
21
20
|
def make_docs(chip):
|
|
21
|
+
from siliconcompiler.targets import asap7_demo
|
|
22
22
|
chip.use(asap7_demo)
|
|
23
23
|
|
|
24
24
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from siliconcompiler.tools.opensta import setup as tool_setup
|
|
2
|
+
from siliconcompiler.tools.opensta import runtime_options as tool_runtime_options
|
|
3
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def setup(chip):
|
|
7
|
+
'''
|
|
8
|
+
Check setup information about the timing libraries.
|
|
9
|
+
'''
|
|
10
|
+
step = chip.get('arg', 'step')
|
|
11
|
+
index = chip.get('arg', 'index')
|
|
12
|
+
tool, task = get_tool_task(chip, step, index)
|
|
13
|
+
|
|
14
|
+
tool_setup(chip)
|
|
15
|
+
|
|
16
|
+
chip.set('tool', tool, 'task', task, 'script', 'sc_check_library.tcl',
|
|
17
|
+
step=step, index=index, clobber=False)
|
|
18
|
+
|
|
19
|
+
chip.set('tool', tool, 'task', task, 'threads', 1,
|
|
20
|
+
step=step, index=index)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
################################
|
|
24
|
+
# Runtime options
|
|
25
|
+
################################
|
|
26
|
+
def runtime_options(chip):
|
|
27
|
+
return tool_runtime_options(chip)
|