siliconcompiler 0.28.9__py3-none-any.whl → 0.29.0__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/sc_remote.py +15 -14
- siliconcompiler/apps/sc_show.py +5 -5
- siliconcompiler/apps/utils/replay.py +136 -0
- siliconcompiler/core.py +14 -12
- siliconcompiler/flows/_common.py +11 -13
- siliconcompiler/flows/asicflow.py +83 -42
- 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 +51 -9
- siliconcompiler/schema/schema_cfg.py +15 -3
- siliconcompiler/schema/schema_obj.py +16 -0
- siliconcompiler/sphinx_ext/dynamicgen.py +4 -3
- siliconcompiler/targets/gf180_demo.py +3 -3
- siliconcompiler/templates/replay/requirements.txt +6 -0
- siliconcompiler/templates/replay/run.py.j2 +22 -0
- siliconcompiler/templates/replay/setup.sh +17 -0
- siliconcompiler/tools/_common/__init__.py +15 -1
- siliconcompiler/tools/_common/asic.py +10 -3
- siliconcompiler/tools/builtin/concatenate.py +1 -1
- siliconcompiler/tools/openroad/__init__.py +103 -0
- siliconcompiler/tools/openroad/{openroad.py → _apr.py} +413 -422
- 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 +62 -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 +675 -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 +105 -0
- siliconcompiler/tools/openroad/show.py +28 -23
- siliconcompiler/tools/openroad/{export.py → write_data.py} +31 -26
- siliconcompiler/tools/opensta/__init__.py +1 -1
- siliconcompiler/tools/yosys/syn_asic.py +7 -0
- siliconcompiler/tools/yosys/syn_asic.tcl +27 -6
- siliconcompiler/tools/yosys/syn_fpga.tcl +26 -18
- siliconcompiler/toolscripts/_tools.json +4 -4
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/METADATA +14 -12
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/RECORD +90 -63
- 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/openroad/scripts/{sc_write.tcl → common/write_data.tcl} +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Timing Repair
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
set rsz_setup_slack_margin [lindex [sc_cfg_tool_task_get {var} rsz_setup_slack_margin] 0]
|
|
19
|
+
set rsz_hold_slack_margin [lindex [sc_cfg_tool_task_get {var} rsz_hold_slack_margin] 0]
|
|
20
|
+
set rsz_slew_margin [lindex [sc_cfg_tool_task_get {var} rsz_slew_margin] 0]
|
|
21
|
+
set rsz_cap_margin [lindex [sc_cfg_tool_task_get {var} rsz_cap_margin] 0]
|
|
22
|
+
set rsz_repair_tns [lindex [sc_cfg_tool_task_get {var} rsz_repair_tns] 0]
|
|
23
|
+
|
|
24
|
+
set repair_timing_args []
|
|
25
|
+
if { [lindex [sc_cfg_tool_task_get {var} rsz_skip_pin_swap] 0] == "true" } {
|
|
26
|
+
lappend repair_timing_args "-skip_pin_swap"
|
|
27
|
+
}
|
|
28
|
+
if { [lindex [sc_cfg_tool_task_get {var} rsz_skip_gate_cloning] 0] == "true" } {
|
|
29
|
+
lappend repair_timing_args "-skip_gate_cloning"
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if { [lindex [sc_cfg_tool_task_get var rsz_skip_setup_repair] 0] != "true" } {
|
|
33
|
+
###############################
|
|
34
|
+
# Setup Repair
|
|
35
|
+
###############################
|
|
36
|
+
|
|
37
|
+
estimate_parasitics -placement
|
|
38
|
+
|
|
39
|
+
repair_timing \
|
|
40
|
+
-setup \
|
|
41
|
+
-verbose \
|
|
42
|
+
-setup_margin $rsz_setup_slack_margin \
|
|
43
|
+
-hold_margin $rsz_hold_slack_margin \
|
|
44
|
+
-repair_tns $rsz_repair_tns \
|
|
45
|
+
{*}$repair_timing_args
|
|
46
|
+
|
|
47
|
+
sc_detailed_placement
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if { [lindex [sc_cfg_tool_task_get var rsz_skip_hold_repair] 0] != "true" } {
|
|
51
|
+
###############################
|
|
52
|
+
# Hold Repair
|
|
53
|
+
###############################
|
|
54
|
+
|
|
55
|
+
estimate_parasitics -placement
|
|
56
|
+
|
|
57
|
+
# Enable hold cells
|
|
58
|
+
unset_dont_use [sc_cfg_get library $sc_mainlib asic cells hold]
|
|
59
|
+
|
|
60
|
+
repair_timing \
|
|
61
|
+
-hold \
|
|
62
|
+
-verbose \
|
|
63
|
+
-setup_margin $rsz_setup_slack_margin \
|
|
64
|
+
-hold_margin $rsz_hold_slack_margin \
|
|
65
|
+
-repair_tns $rsz_repair_tns \
|
|
66
|
+
{*}$repair_timing_args
|
|
67
|
+
|
|
68
|
+
sc_detailed_placement
|
|
69
|
+
|
|
70
|
+
# Restore dont use
|
|
71
|
+
set_dont_use [sc_cfg_get library $sc_mainlib asic cells dontuse]
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
global_connect
|
|
75
|
+
|
|
76
|
+
# estimate for metrics
|
|
77
|
+
estimate_parasitics -placement
|
|
78
|
+
|
|
79
|
+
###############################
|
|
80
|
+
# Task Postamble
|
|
81
|
+
###############################
|
|
82
|
+
|
|
83
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Generate LEF
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
set lef_args []
|
|
19
|
+
if {
|
|
20
|
+
[lindex [sc_cfg_tool_task_get {var} ord_abstract_lef_bloat_layers] 0]
|
|
21
|
+
== "true"
|
|
22
|
+
} {
|
|
23
|
+
lappend lef_args "-bloat_occupied_layers"
|
|
24
|
+
} else {
|
|
25
|
+
lappend lef_args \
|
|
26
|
+
"-bloat_factor" \
|
|
27
|
+
[lindex [sc_cfg_tool_task_get {var} ord_abstract_lef_bloat_factor] 0]
|
|
28
|
+
}
|
|
29
|
+
write_abstract_lef {*}$lef_args "outputs/${sc_design}.lef"
|
|
30
|
+
|
|
31
|
+
###############################
|
|
32
|
+
# Generate CDL
|
|
33
|
+
###############################
|
|
34
|
+
|
|
35
|
+
if { [lindex [sc_cfg_tool_task_get {var} write_cdl] 0] == "true" } {
|
|
36
|
+
# Write CDL
|
|
37
|
+
set sc_cdl_masters []
|
|
38
|
+
foreach lib "$sc_targetlibs $sc_macrolibs" {
|
|
39
|
+
#CDL files
|
|
40
|
+
if { [sc_cfg_exists library $lib output $sc_stackup cdl] } {
|
|
41
|
+
foreach cdl_file [sc_cfg_get library $lib output $sc_stackup cdl] {
|
|
42
|
+
lappend sc_cdl_masters $cdl_file
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
write_cdl -masters $sc_cdl_masters "outputs/${sc_design}.cdl"
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
###############################
|
|
50
|
+
# Generate SPEF
|
|
51
|
+
###############################
|
|
52
|
+
|
|
53
|
+
if { [lindex [sc_cfg_tool_task_get {var} write_spef] 0] == "true" } {
|
|
54
|
+
# just need to define a corner
|
|
55
|
+
define_process_corner -ext_model_index 0 X
|
|
56
|
+
foreach pexcorner [sc_cfg_tool_task_get {var} pex_corners] {
|
|
57
|
+
set sc_pextool "${sc_tool}-openrcx"
|
|
58
|
+
set pex_model \
|
|
59
|
+
[lindex [sc_cfg_get pdk $sc_pdk pexmodel $sc_pextool $sc_stackup $pexcorner] 0]
|
|
60
|
+
puts "Writing SPEF for $pexcorner"
|
|
61
|
+
extract_parasitics -ext_model_file $pex_model
|
|
62
|
+
write_spef "outputs/${sc_design}.${pexcorner}.spef"
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if { [lindex [sc_cfg_tool_task_get {var} use_spef] 0] == "true" } {
|
|
66
|
+
set lib_pex [dict create]
|
|
67
|
+
foreach scenario $sc_scenarios {
|
|
68
|
+
set pexcorner [sc_cfg_get constraint timing $scenario pexcorner]
|
|
69
|
+
|
|
70
|
+
dict set lib_pex $scenario $pexcorner
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
# read in spef for timing corners
|
|
74
|
+
foreach corner $sc_scenarios {
|
|
75
|
+
set pexcorner [dict get $lib_pex $corner]
|
|
76
|
+
|
|
77
|
+
puts "Reading SPEF for $pexcorner into $corner"
|
|
78
|
+
read_spef -corner $corner \
|
|
79
|
+
"outputs/${sc_design}.${pexcorner}.spef"
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
# estimate for metrics
|
|
83
|
+
estimate_parasitics -global_routing
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
# estimate for metrics
|
|
87
|
+
estimate_parasitics -global_routing
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
###############################
|
|
91
|
+
# Write Timing Models
|
|
92
|
+
###############################
|
|
93
|
+
|
|
94
|
+
foreach corner $sc_scenarios {
|
|
95
|
+
if { [lindex [sc_cfg_tool_task_get {var} write_liberty] 0] == "true" } {
|
|
96
|
+
puts "Writing timing model for $corner"
|
|
97
|
+
write_timing_model -library_name "${sc_design}_${corner}" \
|
|
98
|
+
-corner $corner \
|
|
99
|
+
"outputs/${sc_design}.${corner}.lib"
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if { [lindex [sc_cfg_tool_task_get {var} write_sdf] 0] == "true" } {
|
|
103
|
+
puts "Writing SDF for $corner"
|
|
104
|
+
write_sdf -corner $corner \
|
|
105
|
+
-include_typ \
|
|
106
|
+
"outputs/${sc_design}.${corner}.sdf"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
###############################
|
|
111
|
+
# Check Power Network
|
|
112
|
+
###############################
|
|
113
|
+
|
|
114
|
+
foreach net [sc_psm_check_nets] {
|
|
115
|
+
foreach corner $sc_scenarios {
|
|
116
|
+
puts "Analyzing supply net: $net on $corner"
|
|
117
|
+
analyze_power_grid -net $net -corner $corner
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
###############################
|
|
122
|
+
# Task Postamble
|
|
123
|
+
###############################
|
|
124
|
+
|
|
125
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Setup debugging if requested
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
if { [llength [sc_cfg_tool_task_get {var} debug_level]] > 0 } {
|
|
6
|
+
foreach debug [sc_cfg_tool_task_get {var} debug_level] {
|
|
7
|
+
lassign [split $debug " "] debug_tool debug_category debug_level
|
|
8
|
+
|
|
9
|
+
utl::info FLW 1 "Setting debugging for $debug_tool/$debug_category/$debug_level"
|
|
10
|
+
set_debug_level $debug_tool $debug_category $debug_level
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Suppress messages if requested
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
foreach msg [sc_cfg_tool_task_get warningoff] {
|
|
19
|
+
set or_msg [split $msg "-"]
|
|
20
|
+
if { [llength $or_msg] != 2 } {
|
|
21
|
+
utl::warn FLW 1 "$msg is not a valid message id"
|
|
22
|
+
} else {
|
|
23
|
+
set or_tool [lindex $or_msg 0]
|
|
24
|
+
set or_msg_id [expr { int([lindex $or_msg 1]) }]
|
|
25
|
+
utl::info FLW 1 "Suppressing $msg messages"
|
|
26
|
+
suppress_message $or_tool $or_msg_id
|
|
27
|
+
}
|
|
28
|
+
}
|