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.
Files changed (109) hide show
  1. siliconcompiler/_metadata.py +1 -1
  2. siliconcompiler/apps/sc_remote.py +15 -14
  3. siliconcompiler/apps/sc_show.py +5 -5
  4. siliconcompiler/apps/utils/replay.py +136 -0
  5. siliconcompiler/core.py +14 -12
  6. siliconcompiler/flows/_common.py +11 -13
  7. siliconcompiler/flows/asicflow.py +83 -42
  8. siliconcompiler/remote/__init__.py +11 -0
  9. siliconcompiler/remote/client.py +753 -815
  10. siliconcompiler/report/report.py +2 -0
  11. siliconcompiler/report/summary_table.py +1 -1
  12. siliconcompiler/scheduler/__init__.py +51 -9
  13. siliconcompiler/schema/schema_cfg.py +15 -3
  14. siliconcompiler/schema/schema_obj.py +16 -0
  15. siliconcompiler/sphinx_ext/dynamicgen.py +4 -3
  16. siliconcompiler/targets/gf180_demo.py +3 -3
  17. siliconcompiler/templates/replay/requirements.txt +6 -0
  18. siliconcompiler/templates/replay/run.py.j2 +22 -0
  19. siliconcompiler/templates/replay/setup.sh +17 -0
  20. siliconcompiler/tools/_common/__init__.py +15 -1
  21. siliconcompiler/tools/_common/asic.py +10 -3
  22. siliconcompiler/tools/builtin/concatenate.py +1 -1
  23. siliconcompiler/tools/openroad/__init__.py +103 -0
  24. siliconcompiler/tools/openroad/{openroad.py → _apr.py} +413 -422
  25. siliconcompiler/tools/openroad/antenna_repair.py +78 -0
  26. siliconcompiler/tools/openroad/clock_tree_synthesis.py +64 -0
  27. siliconcompiler/tools/openroad/detailed_placement.py +59 -0
  28. siliconcompiler/tools/openroad/detailed_route.py +62 -0
  29. siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +52 -0
  30. siliconcompiler/tools/openroad/fillercell_insertion.py +58 -0
  31. siliconcompiler/tools/openroad/{dfm.py → fillmetal_insertion.py} +35 -19
  32. siliconcompiler/tools/openroad/global_placement.py +58 -0
  33. siliconcompiler/tools/openroad/global_route.py +63 -0
  34. siliconcompiler/tools/openroad/init_floorplan.py +103 -0
  35. siliconcompiler/tools/openroad/macro_placement.py +65 -0
  36. siliconcompiler/tools/openroad/metrics.py +23 -8
  37. siliconcompiler/tools/openroad/pin_placement.py +56 -0
  38. siliconcompiler/tools/openroad/power_grid.py +65 -0
  39. siliconcompiler/tools/openroad/rcx_bench.py +7 -4
  40. siliconcompiler/tools/openroad/rcx_extract.py +2 -1
  41. siliconcompiler/tools/openroad/rdlroute.py +4 -4
  42. siliconcompiler/tools/openroad/repair_design.py +59 -0
  43. siliconcompiler/tools/openroad/repair_timing.py +63 -0
  44. siliconcompiler/tools/openroad/screenshot.py +9 -20
  45. siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +44 -0
  46. siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +95 -0
  47. siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +51 -0
  48. siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +62 -0
  49. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +41 -0
  50. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +71 -0
  51. siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +55 -0
  52. siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +27 -0
  53. siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +36 -0
  54. siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +26 -0
  55. siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +61 -0
  56. siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +333 -0
  57. siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +123 -0
  58. siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +22 -0
  59. siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +41 -0
  60. siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +60 -0
  61. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +68 -0
  62. siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +83 -0
  63. siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +125 -0
  64. siliconcompiler/tools/openroad/scripts/common/debugging.tcl +28 -0
  65. siliconcompiler/tools/openroad/scripts/common/procs.tcl +675 -0
  66. siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +59 -0
  67. siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +20 -0
  68. siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +16 -0
  69. siliconcompiler/tools/openroad/scripts/common/reports.tcl +180 -0
  70. siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +18 -0
  71. siliconcompiler/tools/openroad/scripts/common/write_images.tcl +395 -0
  72. siliconcompiler/tools/openroad/scripts/{sc_rcx_bench.tcl → rcx/sc_rcx_bench.tcl} +5 -5
  73. siliconcompiler/tools/openroad/scripts/{sc_rcx_extract.tcl → rcx/sc_rcx_extract.tcl} +0 -0
  74. siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +5 -16
  75. siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +51 -51
  76. siliconcompiler/tools/openroad/scripts/sc_show.tcl +105 -0
  77. siliconcompiler/tools/openroad/show.py +28 -23
  78. siliconcompiler/tools/openroad/{export.py → write_data.py} +31 -26
  79. siliconcompiler/tools/opensta/__init__.py +1 -1
  80. siliconcompiler/tools/yosys/syn_asic.py +7 -0
  81. siliconcompiler/tools/yosys/syn_asic.tcl +27 -6
  82. siliconcompiler/tools/yosys/syn_fpga.tcl +26 -18
  83. siliconcompiler/toolscripts/_tools.json +4 -4
  84. {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/METADATA +14 -12
  85. {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/RECORD +90 -63
  86. siliconcompiler/tools/openroad/cts.py +0 -45
  87. siliconcompiler/tools/openroad/floorplan.py +0 -75
  88. siliconcompiler/tools/openroad/physyn.py +0 -27
  89. siliconcompiler/tools/openroad/place.py +0 -41
  90. siliconcompiler/tools/openroad/route.py +0 -45
  91. siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
  92. siliconcompiler/tools/openroad/scripts/sc_apr.tcl +0 -514
  93. siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -68
  94. siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +0 -22
  95. siliconcompiler/tools/openroad/scripts/sc_export.tcl +0 -100
  96. siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +0 -456
  97. siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +0 -1
  98. siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -6
  99. siliconcompiler/tools/openroad/scripts/sc_place.tcl +0 -84
  100. siliconcompiler/tools/openroad/scripts/sc_procs.tcl +0 -494
  101. siliconcompiler/tools/openroad/scripts/sc_report.tcl +0 -189
  102. siliconcompiler/tools/openroad/scripts/sc_route.tcl +0 -143
  103. siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -18
  104. siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +0 -393
  105. /siliconcompiler/tools/openroad/scripts/{sc_write.tcl → common/write_data.tcl} +0 -0
  106. {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/LICENSE +0 -0
  107. {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/WHEEL +0 -0
  108. {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/entry_points.txt +0 -0
  109. {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
+ }