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,62 @@
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
+ # Clock tree synthesis
16
+ # (skip if no clocks defined)
17
+ ###############################
18
+
19
+ if { [llength [all_clocks]] > 0 } {
20
+ # Clone clock tree inverters next to register loads
21
+ # so cts does not try to buffer the inverted clocks.
22
+ repair_clock_inverters
23
+
24
+ set sc_cts_arguments []
25
+ if { [lindex [sc_cfg_tool_task_get var cts_balance_levels] 0] == "true" } {
26
+ lappend sc_cts_arguments "-balance_levels"
27
+ }
28
+ if { [lindex [sc_cfg_tool_task_get var cts_obstruction_aware] 0] == "true" } {
29
+ lappend sc_cts_arguments "-obstruction_aware"
30
+ }
31
+ if { [llength [sc_cfg_get library $sc_mainlib asic cells clkbuf]] > 0 } {
32
+ lappend sc_cts_arguments "-buf_list" [sc_cfg_get library $sc_mainlib asic cells clkbuf]
33
+ }
34
+
35
+ set cts_distance_between_buffers \
36
+ [lindex [sc_cfg_tool_task_get var cts_distance_between_buffers] 0]
37
+ clock_tree_synthesis \
38
+ -sink_clustering_enable \
39
+ -sink_clustering_size [lindex [sc_cfg_tool_task_get var cts_cluster_size] 0] \
40
+ -sink_clustering_max_diameter [lindex [sc_cfg_tool_task_get var cts_cluster_diameter] 0] \
41
+ -distance_between_buffers $cts_distance_between_buffers \
42
+ {*}$sc_cts_arguments
43
+
44
+ set_propagated_clock [all_clocks]
45
+
46
+ estimate_parasitics -placement
47
+
48
+ repair_clock_nets
49
+
50
+ sc_detailed_placement
51
+
52
+ global_connect
53
+ }
54
+
55
+ # estimate for metrics
56
+ estimate_parasitics -placement
57
+
58
+ ###############################
59
+ # Task Postamble
60
+ ###############################
61
+
62
+ source -echo "$sc_refdir/apr/postamble.tcl"
@@ -0,0 +1,41 @@
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
+ # DETAILED PLACEMENT
16
+ ###############################
17
+
18
+ sc_detailed_placement
19
+
20
+ if { [lindex [sc_cfg_tool_task_get var dpo_enable] 0] == "true" } {
21
+ improve_placement \
22
+ -max_displacement [lindex [sc_cfg_tool_task_get var dpo_max_displacement] 0]
23
+
24
+ # Do another detailed placement in case DPO leaves violations behind
25
+ sc_detailed_placement
26
+ }
27
+
28
+ optimize_mirroring
29
+
30
+ check_placement -verbose
31
+
32
+ global_connect
33
+
34
+ # estimate for metrics
35
+ estimate_parasitics -placement
36
+
37
+ ###############################
38
+ # Task Postamble
39
+ ###############################
40
+
41
+ source -echo "$sc_refdir/apr/postamble.tcl"
@@ -0,0 +1,71 @@
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
+ # Detailed Routing
16
+ ###############################
17
+
18
+ set drt_arguments []
19
+ if { [lindex [sc_cfg_tool_task_get {var} drt_disable_via_gen] 0] == "true" } {
20
+ lappend drt_arguments "-disable_via_gen"
21
+ }
22
+ set drt_process_node [lindex [sc_cfg_tool_task_get {var} drt_process_node] 0]
23
+ if { $drt_process_node != "" } {
24
+ lappend drt_arguments "-db_process_node" $drt_process_node
25
+ }
26
+ set drt_via_in_pin_bottom_layer \
27
+ [sc_get_layer_name [lindex [sc_cfg_tool_task_get {var} drt_via_in_pin_bottom_layer] 0]]
28
+ if { $drt_via_in_pin_bottom_layer != "" } {
29
+ lappend drt_arguments "-via_in_pin_bottom_layer" $drt_via_in_pin_bottom_layer
30
+ }
31
+ set drt_via_in_pin_top_layer \
32
+ [sc_get_layer_name [lindex [sc_cfg_tool_task_get {var} drt_via_in_pin_top_layer] 0]]
33
+ if { $drt_via_in_pin_top_layer != "" } {
34
+ lappend drt_arguments "-via_in_pin_top_layer" $drt_via_in_pin_top_layer
35
+ }
36
+ set drt_repair_pdn_vias \
37
+ [sc_get_layer_name [lindex [sc_cfg_tool_task_get {var} drt_repair_pdn_vias] 0]]
38
+ if { $drt_repair_pdn_vias != "" } {
39
+ lappend drt_arguments "-repair_pdn_vias" $drt_repair_pdn_vias
40
+ }
41
+
42
+ set sc_minmetal [sc_cfg_get pdk $sc_pdk minlayer $sc_stackup]
43
+ set sc_minmetal [sc_get_layer_name $sc_minmetal]
44
+ set sc_maxmetal [sc_cfg_get pdk $sc_pdk maxlayer $sc_stackup]
45
+ set sc_maxmetal [sc_get_layer_name $sc_maxmetal]
46
+
47
+ detailed_route \
48
+ -save_guide_updates \
49
+ -output_drc "reports/${sc_design}_drc.rpt" \
50
+ -output_maze "reports/${sc_design}_maze.log" \
51
+ -bottom_routing_layer $sc_minmetal \
52
+ -top_routing_layer $sc_maxmetal \
53
+ -verbose 1 \
54
+ {*}$drt_arguments
55
+
56
+ # Remove routing obstructions
57
+ set removed_obs 0
58
+ foreach obstruction [[ord::get_db_block] getObstructions] {
59
+ odb::dbObstruction_destroy $obstruction
60
+ incr removed_obs
61
+ }
62
+ utl::info FLW 1 "Deleted $removed_obs routing obstructions"
63
+
64
+ # estimate for metrics
65
+ estimate_parasitics -global_routing
66
+
67
+ ###############################
68
+ # Task Postamble
69
+ ###############################
70
+
71
+ source -echo "$sc_refdir/apr/postamble.tcl"
@@ -0,0 +1,55 @@
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
+ # Error checking
16
+ ###############################
17
+
18
+ if { [sc_design_has_unplaced_macros] } {
19
+ utl::error FLW 1 "Design contains unplaced macros."
20
+ }
21
+
22
+ ###############################
23
+ # Insert tie cells
24
+ ###############################
25
+
26
+ foreach tie_type "high low" {
27
+ if { [sc_has_tie_cell $tie_type] } {
28
+ insert_tiecells [sc_get_tie_cell $tie_type]
29
+ }
30
+ }
31
+ global_connect
32
+
33
+ ###############################
34
+ # Tap Cells
35
+ ###############################
36
+
37
+ if {
38
+ [sc_cfg_tool_task_exists {file} ifp_tapcell] &&
39
+ [llength [sc_cfg_tool_task_get {file} ifp_tapcell]] > 0
40
+ } {
41
+ foreach tapcell_file [sc_cfg_tool_task_get {file} ifp_tapcell] {
42
+ puts "Sourcing tapcell file: ${tapcell_file}"
43
+ source $tapcell_file
44
+ }
45
+ global_connect
46
+ } else {
47
+ utl::warn FLW 1 "Tapcell configuration not provided"
48
+ cut_rows
49
+ }
50
+
51
+ ###############################
52
+ # Task Postamble
53
+ ###############################
54
+
55
+ source -echo "$sc_refdir/apr/postamble.tcl"
@@ -0,0 +1,27 @@
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
+ # Add fillers
16
+ ###############################
17
+
18
+ sc_insert_fillers
19
+
20
+ # estimate for metrics
21
+ estimate_parasitics -placement
22
+
23
+ ###############################
24
+ # Task Postamble
25
+ ###############################
26
+
27
+ source -echo "$sc_refdir/apr/postamble.tcl"
@@ -0,0 +1,36 @@
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
+ # Do fill
16
+ ###############################
17
+
18
+ set sc_libtype [sc_cfg_get library $sc_mainlib asic libarch]
19
+
20
+ if {
21
+ $openroad_fin_add_fill == "true" &&
22
+ [sc_cfg_exists pdk $sc_pdk aprtech openroad $sc_stackup $sc_libtype fill]
23
+ } {
24
+ set sc_fillrules \
25
+ [lindex [sc_cfg_get pdk $sc_pdk aprtech openroad $sc_stackup $sc_libtype fill] 0]
26
+ density_fill -rules $sc_fillrules
27
+ }
28
+
29
+ # estimate for metrics
30
+ estimate_parasitics -global_routing
31
+
32
+ ###############################
33
+ # Task Postamble
34
+ ###############################
35
+
36
+ source -echo "$sc_refdir/apr/postamble.tcl"
@@ -0,0 +1,26 @@
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
+ # Global Placement
16
+ ###############################
17
+
18
+ sc_global_placement
19
+
20
+ estimate_parasitics -placement
21
+
22
+ ###############################
23
+ # Task Postamble
24
+ ###############################
25
+
26
+ source -echo "$sc_refdir/apr/postamble.tcl"
@@ -0,0 +1,61 @@
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
+ # Pin access
16
+ ###############################
17
+
18
+ if { [lindex [sc_cfg_tool_task_get {var} grt_use_pin_access] 0] == "true" } {
19
+ set sc_minmetal [sc_cfg_get pdk $sc_pdk minlayer $sc_stackup]
20
+ set sc_minmetal [sc_get_layer_name $sc_minmetal]
21
+ set sc_maxmetal [sc_cfg_get pdk $sc_pdk maxlayer $sc_stackup]
22
+ set sc_maxmetal [sc_get_layer_name $sc_maxmetal]
23
+
24
+ set pin_access_args []
25
+ if { [lindex [sc_cfg_tool_task_get {var} drt_process_node] 0] != "false" } {
26
+ lappend pin_access_args "-db_process_node" \
27
+ [lindex [sc_cfg_tool_task_get {var} drt_process_node] 0]
28
+ }
29
+
30
+ pin_access \
31
+ -bottom_routing_layer $sc_minmetal \
32
+ -top_routing_layer $sc_maxmetal \
33
+ {*}$pin_access_args
34
+ }
35
+
36
+ ###############################
37
+ # Global route
38
+ ###############################
39
+
40
+ set sc_grt_arguments []
41
+ if { [lindex [sc_cfg_tool_task_get {var} grt_allow_congestion] 0] == "true" } {
42
+ lappend sc_grt_arguments "-allow_congestion"
43
+ }
44
+ if { [lindex [sc_cfg_tool_task_get {var} grt_allow_overflow] 0] == "true" } {
45
+ lappend sc_grt_arguments "-allow_overflow"
46
+ }
47
+
48
+ global_route -guide_file "reports/route.guide" \
49
+ -congestion_iterations [lindex [sc_cfg_tool_task_get {var} grt_overflow_iter] 0] \
50
+ -congestion_report_file "reports/${sc_design}_congestion.rpt" \
51
+ -verbose \
52
+ {*}$sc_grt_arguments
53
+
54
+ # estimate for metrics
55
+ estimate_parasitics -global_routing
56
+
57
+ ###############################
58
+ # Task Postamble
59
+ ###############################
60
+
61
+ source -echo "$sc_refdir/apr/postamble.tcl"