siliconcompiler 0.32.2__py3-none-any.whl → 0.32.3__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 (172) hide show
  1. siliconcompiler/_metadata.py +3 -2
  2. siliconcompiler/core.py +52 -56
  3. siliconcompiler/issue.py +3 -1
  4. siliconcompiler/remote/client.py +55 -16
  5. siliconcompiler/report/__init__.py +3 -2
  6. siliconcompiler/report/dashboard/__init__.py +61 -170
  7. siliconcompiler/report/dashboard/cli/__init__.py +788 -0
  8. siliconcompiler/report/dashboard/web/__init__.py +196 -0
  9. siliconcompiler/report/dashboard/{components → web/components}/__init__.py +4 -4
  10. siliconcompiler/report/dashboard/{components → web/components}/graph.py +1 -1
  11. siliconcompiler/report/dashboard/{layouts → web/layouts}/__init__.py +3 -3
  12. siliconcompiler/report/dashboard/{layouts → web/layouts}/_common.py +1 -1
  13. siliconcompiler/report/dashboard/{layouts → web/layouts}/vertical_flowgraph.py +5 -5
  14. siliconcompiler/report/dashboard/{layouts → web/layouts}/vertical_flowgraph_node_tab.py +6 -6
  15. siliconcompiler/report/dashboard/{layouts → web/layouts}/vertical_flowgraph_sac_tabs.py +6 -6
  16. siliconcompiler/report/dashboard/{viewer.py → web/viewer.py} +4 -4
  17. siliconcompiler/scheduler/__init__.py +8 -6
  18. siliconcompiler/templates/replay/replay.sh.j2 +2 -2
  19. siliconcompiler/tools/_common/__init__.py +2 -0
  20. siliconcompiler/tools/openroad/_apr.py +4 -0
  21. siliconcompiler/tools/openroad/fillmetal_insertion.py +14 -14
  22. siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +1 -1
  23. siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +1 -1
  24. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +1 -1
  25. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +1 -1
  26. siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +1 -1
  27. siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +1 -1
  28. siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +2 -2
  29. siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +1 -1
  30. siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +1 -1
  31. siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +1 -1
  32. siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +1 -1
  33. siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +1 -1
  34. siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +1 -1
  35. siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +1 -1
  36. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +1 -1
  37. siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +2 -2
  38. siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +1 -1
  39. siliconcompiler/tools/openroad/scripts/common/procs.tcl +1 -1
  40. siliconcompiler/tools/openroad/scripts/common/reports.tcl +2 -2
  41. siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +1 -1
  42. siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +1 -1
  43. siliconcompiler/tools/openroad/scripts/sc_show.tcl +1 -1
  44. siliconcompiler/tools/opensta/__init__.py +1 -1
  45. siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +1 -1
  46. siliconcompiler/tools/opensta/scripts/sc_procs.tcl +16 -0
  47. siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +1 -1
  48. siliconcompiler/tools/opensta/scripts/sc_timing.tcl +35 -7
  49. siliconcompiler/tools/opensta/timing.py +6 -2
  50. siliconcompiler/tools/yosys/sc_synth_asic.tcl +36 -28
  51. siliconcompiler/tools/yosys/syn_asic.py +11 -2
  52. siliconcompiler/toolscripts/_tools.json +9 -4
  53. siliconcompiler/toolscripts/rhel8/install-chisel.sh +2 -0
  54. siliconcompiler/toolscripts/rhel8/install-icarus.sh +1 -0
  55. siliconcompiler/toolscripts/rhel8/install-klayout.sh +2 -0
  56. siliconcompiler/toolscripts/rhel8/install-magic.sh +1 -2
  57. siliconcompiler/toolscripts/rhel8/install-netgen.sh +1 -1
  58. siliconcompiler/toolscripts/rhel8/install-slang.sh +2 -0
  59. siliconcompiler/toolscripts/rhel8/install-surelog.sh +3 -1
  60. siliconcompiler/toolscripts/rhel8/install-sv2v.sh +1 -0
  61. siliconcompiler/toolscripts/rhel8/install-verible.sh +2 -0
  62. siliconcompiler/toolscripts/rhel8/install-verilator.sh +1 -0
  63. siliconcompiler/toolscripts/rhel8/install-xyce.sh +2 -0
  64. siliconcompiler/toolscripts/rhel9/install-chisel.sh +2 -0
  65. siliconcompiler/toolscripts/rhel9/install-ghdl.sh +1 -0
  66. siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +1 -0
  67. siliconcompiler/toolscripts/rhel9/install-icarus.sh +1 -0
  68. siliconcompiler/toolscripts/rhel9/install-klayout.sh +2 -0
  69. siliconcompiler/toolscripts/rhel9/install-magic.sh +1 -2
  70. siliconcompiler/toolscripts/rhel9/install-netgen.sh +1 -1
  71. siliconcompiler/toolscripts/rhel9/install-openroad.sh +2 -0
  72. siliconcompiler/toolscripts/rhel9/install-opensta.sh +76 -0
  73. siliconcompiler/toolscripts/rhel9/install-slang.sh +3 -1
  74. siliconcompiler/toolscripts/rhel9/install-surelog.sh +2 -1
  75. siliconcompiler/toolscripts/rhel9/install-sv2v.sh +1 -0
  76. siliconcompiler/toolscripts/rhel9/install-verible.sh +2 -0
  77. siliconcompiler/toolscripts/rhel9/install-verilator.sh +1 -0
  78. siliconcompiler/toolscripts/rhel9/install-vpr.sh +2 -0
  79. siliconcompiler/toolscripts/rhel9/install-xdm.sh +2 -0
  80. siliconcompiler/toolscripts/rhel9/install-xyce.sh +2 -0
  81. siliconcompiler/toolscripts/rhel9/install-yosys-moosic.sh +2 -0
  82. siliconcompiler/toolscripts/rhel9/install-yosys-parmys.sh +2 -0
  83. siliconcompiler/toolscripts/rhel9/install-yosys-slang.sh +3 -1
  84. siliconcompiler/toolscripts/rhel9/install-yosys.sh +2 -0
  85. siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +2 -0
  86. siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +2 -0
  87. siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +2 -0
  88. siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +2 -0
  89. siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +2 -0
  90. siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +2 -0
  91. siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +2 -0
  92. siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +2 -0
  93. siliconcompiler/toolscripts/ubuntu20/install-magic.sh +2 -0
  94. siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +2 -0
  95. siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +1 -3
  96. siliconcompiler/toolscripts/ubuntu20/install-openroad.sh +2 -0
  97. siliconcompiler/toolscripts/ubuntu20/install-opensta.sh +72 -0
  98. siliconcompiler/toolscripts/ubuntu20/install-slang.sh +3 -1
  99. siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +2 -0
  100. siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +3 -1
  101. siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +1 -1
  102. siliconcompiler/toolscripts/ubuntu20/install-verible.sh +2 -0
  103. siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +2 -0
  104. siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +2 -0
  105. siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +2 -0
  106. siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +2 -0
  107. siliconcompiler/toolscripts/ubuntu20/install-yosys-moosic.sh +2 -0
  108. siliconcompiler/toolscripts/ubuntu20/install-yosys-parmys.sh +2 -0
  109. siliconcompiler/toolscripts/ubuntu20/install-yosys.sh +2 -0
  110. siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +2 -0
  111. siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +2 -0
  112. siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +2 -0
  113. siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +2 -0
  114. siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +2 -0
  115. siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +2 -0
  116. siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +2 -0
  117. siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +2 -0
  118. siliconcompiler/toolscripts/ubuntu22/install-magic.sh +2 -0
  119. siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +2 -0
  120. siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +1 -2
  121. siliconcompiler/toolscripts/ubuntu22/install-openroad.sh +2 -0
  122. siliconcompiler/toolscripts/ubuntu22/install-opensta.sh +72 -0
  123. siliconcompiler/toolscripts/ubuntu22/install-slang.sh +3 -1
  124. siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +2 -0
  125. siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +3 -1
  126. siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +1 -1
  127. siliconcompiler/toolscripts/ubuntu22/install-verible.sh +2 -0
  128. siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +2 -0
  129. siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +2 -0
  130. siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +2 -0
  131. siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +2 -0
  132. siliconcompiler/toolscripts/ubuntu22/install-yosys-moosic.sh +2 -0
  133. siliconcompiler/toolscripts/ubuntu22/install-yosys-parmys.sh +2 -0
  134. siliconcompiler/toolscripts/ubuntu22/install-yosys-slang.sh +3 -1
  135. siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +2 -0
  136. siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +2 -0
  137. siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +2 -0
  138. siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +2 -0
  139. siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +2 -0
  140. siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +2 -0
  141. siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +2 -0
  142. siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +2 -0
  143. siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +2 -0
  144. siliconcompiler/toolscripts/ubuntu24/install-magic.sh +2 -0
  145. siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +2 -0
  146. siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +1 -3
  147. siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +2 -0
  148. siliconcompiler/toolscripts/ubuntu24/install-opensta.sh +72 -0
  149. siliconcompiler/toolscripts/ubuntu24/install-slang.sh +3 -1
  150. siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +2 -0
  151. siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +3 -1
  152. siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +1 -1
  153. siliconcompiler/toolscripts/ubuntu24/install-verible.sh +2 -0
  154. siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +2 -0
  155. siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +2 -0
  156. siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +2 -0
  157. siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +2 -0
  158. siliconcompiler/toolscripts/ubuntu24/install-yosys-moosic.sh +2 -0
  159. siliconcompiler/toolscripts/ubuntu24/install-yosys-parmys.sh +2 -0
  160. siliconcompiler/toolscripts/ubuntu24/install-yosys-slang.sh +3 -1
  161. siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +2 -0
  162. siliconcompiler/utils/logging.py +87 -33
  163. {siliconcompiler-0.32.2.dist-info → siliconcompiler-0.32.3.dist-info}/METADATA +5 -4
  164. {siliconcompiler-0.32.2.dist-info → siliconcompiler-0.32.3.dist-info}/RECORD +172 -166
  165. /siliconcompiler/report/dashboard/{components → web/components}/flowgraph.py +0 -0
  166. /siliconcompiler/report/dashboard/{state.py → web/state.py} +0 -0
  167. /siliconcompiler/report/dashboard/{utils → web/utils}/__init__.py +0 -0
  168. /siliconcompiler/report/dashboard/{utils → web/utils}/file_utils.py +0 -0
  169. {siliconcompiler-0.32.2.dist-info → siliconcompiler-0.32.3.dist-info}/WHEEL +0 -0
  170. {siliconcompiler-0.32.2.dist-info → siliconcompiler-0.32.3.dist-info}/entry_points.txt +0 -0
  171. {siliconcompiler-0.32.2.dist-info → siliconcompiler-0.32.3.dist-info}/licenses/LICENSE +0 -0
  172. {siliconcompiler-0.32.2.dist-info → siliconcompiler-0.32.3.dist-info}/top_level.txt +0 -0
@@ -28,7 +28,7 @@ if { [sc_cfg_tool_task_check_in_list setup var reports] } {
28
28
  "report_tns"
29
29
  report_tns_metric -setup
30
30
 
31
- if { [sc_check_version 19519] } {
31
+ if { [sc_check_version 19519] && [llength [all_clocks]] > 0 } {
32
32
  tee -quiet -file reports/timing/setup.histogram.rpt \
33
33
  "report_timing_histogram -num_bins 20 -setup"
34
34
  }
@@ -48,7 +48,7 @@ if { [sc_cfg_tool_task_check_in_list hold var reports] } {
48
48
 
49
49
  report_tns_metric -hold
50
50
 
51
- if { [sc_check_version 19519] } {
51
+ if { [sc_check_version 19519] && [llength [all_clocks]] > 0 } {
52
52
  tee -quiet -file reports/timing/hold.histogram.rpt \
53
53
  "report_timing_histogram -num_bins 20 -hold"
54
54
  }
@@ -2,7 +2,7 @@
2
2
  # Reading SC Schema
3
3
  ###############################
4
4
 
5
- source ./sc_manifest.tcl > /dev/null
5
+ source ./sc_manifest.tcl
6
6
 
7
7
  ##############################
8
8
  # Schema Helper functions
@@ -2,7 +2,7 @@
2
2
  # Reading SC Schema
3
3
  ###############################
4
4
 
5
- source ./sc_manifest.tcl > /dev/null
5
+ source ./sc_manifest.tcl
6
6
 
7
7
  ##############################
8
8
  # Schema Adapter
@@ -2,7 +2,7 @@
2
2
  # Reading SC Schema
3
3
  ###############################
4
4
 
5
- source ./sc_manifest.tcl > /dev/null
5
+ source ./sc_manifest.tcl
6
6
 
7
7
  ##############################
8
8
  # Schema Adapter
@@ -32,7 +32,7 @@ def setup(chip):
32
32
 
33
33
  chip.set('tool', tool, 'exe', 'sta')
34
34
  chip.set('tool', tool, 'vswitch', '-version')
35
- chip.set('tool', tool, 'version', '>=v2.5.0', clobber=False)
35
+ chip.set('tool', tool, 'version', '>=v2.6.2', clobber=False)
36
36
  chip.set('tool', tool, 'format', 'tcl')
37
37
 
38
38
  targetlibs = get_libraries(chip, 'logic')
@@ -2,7 +2,7 @@
2
2
  # Reading SC Schema
3
3
  ###############################
4
4
 
5
- source ./sc_manifest.tcl > /dev/null
5
+ source ./sc_manifest.tcl
6
6
 
7
7
  ##############################
8
8
  # Schema Adapter
@@ -44,3 +44,19 @@ proc sc_display_report { report } {
44
44
  close $fid
45
45
  puts $report_content
46
46
  }
47
+
48
+ proc sc_path_group { args } {
49
+ sta::parse_key_args "sc_path_group" args \
50
+ keys {-name -to -from} \
51
+ flags {}
52
+
53
+ sta::check_argc_eq0 "sc_path_group" $args
54
+
55
+ if { [llength $keys(-from)] == 0 } {
56
+ return
57
+ }
58
+ if { [llength $keys(-to)] == 0 } {
59
+ return
60
+ }
61
+ group_path -name $keys(-name) -from $keys(-from) -to $keys(-to)
62
+ }
@@ -2,7 +2,7 @@
2
2
  # Reading SC Schema
3
3
  ###############################
4
4
 
5
- source ./sc_manifest.tcl > /dev/null
5
+ source ./sc_manifest.tcl
6
6
 
7
7
  ##############################
8
8
  # Schema Adapter
@@ -2,7 +2,7 @@
2
2
  # Reading SC Schema
3
3
  ###############################
4
4
 
5
- source ./sc_manifest.tcl > /dev/null
5
+ source ./sc_manifest.tcl
6
6
 
7
7
  ##############################
8
8
  # Schema Adapter
@@ -38,6 +38,12 @@ foreach corner [dict keys [sc_cfg_get constraint timing]] {
38
38
  # MACROS
39
39
  set sc_macrolibs [sc_get_asic_libraries macro]
40
40
 
41
+ ###############################
42
+ # Source helper functions
43
+ ###############################
44
+
45
+ source "$sc_refdir/sc_procs.tcl"
46
+
41
47
  ###############################
42
48
  # Read Files
43
49
  ###############################
@@ -104,6 +110,34 @@ if { [file exists "inputs/${sc_design}.sdc"] } {
104
110
  read_sdc "${sdc}"
105
111
  }
106
112
 
113
+ # Create path groups
114
+ if { [llength [sta::path_group_names]] == 0 } {
115
+ sc_path_group -name in2out -from [all_inputs -no_clocks] -to [all_outputs]
116
+
117
+ if {
118
+ [llength [all_clocks]] == 1 ||
119
+ [lindex [sc_cfg_tool_task_get var unique_path_groups_per_clock] 0] == "false"
120
+ } {
121
+ sc_path_group -name in2reg -from [all_inputs -no_clocks] -to [all_registers]
122
+ sc_path_group -name reg2reg -from [all_registers] -to [all_registers]
123
+ sc_path_group -name reg2out -from [all_registers] -to [all_outputs]
124
+ } else {
125
+ foreach clock [all_clocks] {
126
+ set clk_name [get_property $clock name]
127
+ sc_path_group -name in2reg.${clk_name} \
128
+ -from [all_inputs -no_clocks] \
129
+ -to [all_registers -clock $clock]
130
+ sc_path_group -name reg2reg.${clk_name} \
131
+ -from [all_registers -clock $clock] \
132
+ -to [all_registers -clock $clock]
133
+ sc_path_group -name reg2out.${clk_name} \
134
+ -from [all_registers -clock $clock] \
135
+ -to [all_outputs]
136
+ }
137
+ }
138
+ }
139
+ puts "Timing path groups: [sta::path_group_names]"
140
+
107
141
  ###############################
108
142
 
109
143
  foreach corner $sc_scenarios {
@@ -116,12 +150,6 @@ foreach corner $sc_scenarios {
116
150
  }
117
151
  }
118
152
 
119
- ###############################
120
- # Source helper functions
121
- ###############################
122
-
123
- source "$sc_refdir/sc_procs.tcl"
124
-
125
153
  ###############################
126
154
  # Report Metrics
127
155
  ###############################
@@ -45,6 +45,10 @@ def setup(chip):
45
45
  set_tool_task_var(chip, param_key='top_n_paths',
46
46
  default_value='10',
47
47
  schelp='number of paths to report timing for')
48
+ set_tool_task_var(chip, param_key='unique_path_groups_per_clock',
49
+ default_value=False,
50
+ skip=['pdk', 'lib'],
51
+ schelp='true/false, if true will generate separate path groups per clock')
48
52
 
49
53
  modes = get_timing_modes(chip)
50
54
 
@@ -165,13 +169,13 @@ def post_process(chip):
165
169
  metric = None
166
170
  elif metric in ('holdslack', 'setupslack'):
167
171
  if slack:
168
- record_metric(chip, step, index, metric, float(slack.group(1)),
172
+ record_metric(chip, step, index, metric, float(slack.group(1).split()[-1]),
169
173
  __report_map(chip, metric, logfile),
170
174
  source_unit=timescale)
171
175
  metric = None
172
176
  elif metric in ('setuptns', 'holdtns'):
173
177
  if tns:
174
- record_metric(chip, step, index, metric, float(tns.group(1)),
178
+ record_metric(chip, step, index, metric, float(tns.group(1).split()[-1]),
175
179
  __report_map(chip, metric, logfile),
176
180
  source_unit=timescale)
177
181
  metric = None
@@ -37,38 +37,46 @@ source "$sc_refdir/procs.tcl"
37
37
  ########################################################
38
38
 
39
39
  set input_verilog "inputs/$sc_design.v"
40
- if { [file exists $input_verilog] } {
41
- if { [lindex [sc_cfg_tool_task_get var use_slang] 0] == "true" && [sc_load_plugin slang] } {
42
- # This needs some reordering of loaded to ensure blackboxes are handled
43
- # before this
44
- set slang_params []
45
- if { [sc_cfg_exists option param] } {
46
- dict for {key value} [sc_cfg_get option param] {
47
- if { ![string is integer $value] } {
48
- set value [concat \"$value\"]
49
- }
50
-
51
- lappend slang_params -G "${key}=${value}"
40
+ if { ![file exists $input_verilog] } {
41
+ set input_verilog []
42
+ if { [sc_cfg_exists input rtl systemverilog] } {
43
+ lappend input_verilog {*}[sc_cfg_get input rtl systemverilog]
44
+ }
45
+ if { [sc_cfg_exists input rtl verilog] } {
46
+ lappend input_verilog {*}[sc_cfg_get input rtl verilog]
47
+ }
48
+ }
49
+
50
+ if { [lindex [sc_cfg_tool_task_get var use_slang] 0] == "true" && [sc_load_plugin slang] } {
51
+ # This needs some reordering of loaded to ensure blackboxes are handled
52
+ # before this
53
+ set slang_params []
54
+ if { [sc_cfg_exists option param] } {
55
+ dict for {key value} [sc_cfg_get option param] {
56
+ if { ![string is integer $value] } {
57
+ set value [concat \"$value\"]
52
58
  }
59
+
60
+ lappend slang_params -G "${key}=${value}"
53
61
  }
54
- yosys read_slang \
55
- -D SYNTHESIS \
56
- --keep-hierarchy \
57
- --top $sc_design \
58
- {*}$slang_params \
59
- $input_verilog
60
- } else {
61
- # Use -noblackbox to correctly interpret empty modules as empty,
62
- # actual black boxes are read in later
63
- # https://github.com/YosysHQ/yosys/issues/1468
64
- yosys read_verilog -noblackbox -sv $input_verilog
62
+ }
63
+ yosys read_slang \
64
+ -D SYNTHESIS \
65
+ --keep-hierarchy \
66
+ --top $sc_design \
67
+ {*}$slang_params \
68
+ {*}$input_verilog
69
+ } else {
70
+ # Use -noblackbox to correctly interpret empty modules as empty,
71
+ # actual black boxes are read in later
72
+ # https://github.com/YosysHQ/yosys/issues/1468
73
+ yosys read_verilog -noblackbox -sv {*}$input_verilog
65
74
 
66
- ########################################################
67
- # Override top level parameters
68
- ########################################################
75
+ ########################################################
76
+ # Override top level parameters
77
+ ########################################################
69
78
 
70
- sc_apply_params
71
- }
79
+ sc_apply_params
72
80
  }
73
81
 
74
82
  ####################
@@ -8,7 +8,7 @@ from siliconcompiler import utils
8
8
  from siliconcompiler.tools._common.asic import set_tool_task_var, get_libraries, get_mainlib, \
9
9
  CellArea
10
10
  from siliconcompiler.tools._common.asic_clock import get_clock_period
11
- from siliconcompiler.tools._common import get_tool_task
11
+ from siliconcompiler.tools._common import get_tool_task, input_provides, add_require_input
12
12
 
13
13
 
14
14
  def make_docs(chip):
@@ -34,7 +34,16 @@ def setup(chip):
34
34
  step=step, index=index, clobber=False)
35
35
 
36
36
  # Input/output requirements.
37
- chip.set('tool', tool, 'task', task, 'input', design + '.v', step=step, index=index)
37
+ if f'{design}.v' in input_provides(chip, step, index):
38
+ chip.set('tool', tool, 'task', task, 'input', design + '.v', step=step, index=index)
39
+ else:
40
+ added = False
41
+ added |= add_require_input(chip, 'input', 'rtl', 'systemverilog',
42
+ include_library_files=False)
43
+ added |= add_require_input(chip, 'input', 'rtl', 'verilog',
44
+ include_library_files=False)
45
+ if not added:
46
+ chip.add('tool', tool, 'task', task, 'require', 'input,rtl,verilog')
38
47
  chip.set('tool', tool, 'task', task, 'output', design + '.vg', step=step, index=index)
39
48
  chip.add('tool', tool, 'task', task, 'output', design + '.netlist.json', step=step, index=index)
40
49
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "openroad": {
3
3
  "git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
4
- "git-commit": "10c0e05959e169ec9740d83e80bb4f2395afcc7b",
4
+ "git-commit": "e78e29127134a0b95ebcd5661895c6dc4651e641",
5
5
  "docker-cmds": [
6
6
  "# Remove OR-Tools files",
7
7
  "RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
@@ -15,6 +15,11 @@
15
15
  "git-commit": "v1.84",
16
16
  "auto-update": true
17
17
  },
18
+ "opensta": {
19
+ "git-url": "https://github.com/parallaxsw/OpenSTA.git",
20
+ "git-commit": "109bc9ab5e35b830db9569f741db09e468704e6b",
21
+ "auto-update": true
22
+ },
18
23
  "netgen": {
19
24
  "git-url": "https://github.com/RTimothyEdwards/netgen.git",
20
25
  "git-commit": "fb7876c7a6f9d58a3d88a49e302e682c1d12e00d",
@@ -45,7 +50,7 @@
45
50
  },
46
51
  "sv2v": {
47
52
  "git-url": "https://github.com/zachjs/sv2v.git",
48
- "git-commit": "e5effb5e1ea4e0cf9b4af2c769d364e0ed4b6d84",
53
+ "git-commit": "d30c7e7f4e9018b9d4a565207ff752460c81eeb4",
49
54
  "auto-update": true
50
55
  },
51
56
  "verilator": {
@@ -91,7 +96,7 @@
91
96
  },
92
97
  "yosys": {
93
98
  "git-url": "https://github.com/YosysHQ/yosys.git",
94
- "git-commit": "v0.51",
99
+ "git-commit": "v0.52",
95
100
  "version-prefix": "",
96
101
  "auto-update": true
97
102
  },
@@ -139,7 +144,7 @@
139
144
  },
140
145
  "yosys-slang": {
141
146
  "git-url": "https://github.com/povik/yosys-slang.git",
142
- "git-commit": "e23228f4b4ec5ec0b4b17f1f675debfa29458665",
147
+ "git-commit": "a95ef24f0307230ae25ea6f2216d2fe8b8ece0be",
143
148
  "docker-depends": "yosys",
144
149
  "auto-update": true
145
150
  },
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y wget
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
@@ -6,6 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum group install -y "Development Tools"
9
+ sudo yum install -y wget git
9
10
 
10
11
  args=
11
12
  if [ ! -z ${PREFIX} ]; then
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y wget
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
@@ -6,8 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum group install -y "Development Tools"
9
- sudo yum install -y tcl-devel tk-devel tcsh csh
10
- # sudo apt-get install -y build-essential m4 tcsh csh libx11-dev tcl-dev tk-dev
9
+ sudo yum install -y tcl-devel tk-devel tcsh csh git
11
10
 
12
11
  mkdir -p deps
13
12
  cd deps
@@ -6,7 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum group install -y "Development Tools"
9
- sudo yum install -y tcl-devel tk-devel
9
+ sudo yum install -y tcl-devel tk-devel git
10
10
 
11
11
  mkdir -p deps
12
12
  cd deps
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y git
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y git
9
+
8
10
  # These dependencies are up-to-date with instructions from the INSTALL.md from the commit we are pinned to below
9
11
  sudo yum install -y gcc-toolset-12
10
12
  sudo dnf config-manager --set-enabled devel || true
@@ -17,7 +19,7 @@ cd deps
17
19
  python3 -m venv .surelog --clear
18
20
  . .surelog/bin/activate
19
21
  python3 -m pip install --upgrade pip
20
- python3 -m pip install cmake
22
+ python3 -m pip install cmake==3.28.4
21
23
  python3 -m pip install orderedmultidict
22
24
 
23
25
  git clone $(python3 ${src_path}/_tools.py --tool surelog --field git-url) surelog
@@ -8,6 +8,7 @@ src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
8
8
  mkdir -p deps
9
9
  cd deps
10
10
 
11
+ sudo yum install -y git curl
11
12
  sudo yum group install -y "Development Tools"
12
13
  sudo yum install -y gmp-devel xz
13
14
 
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y wget
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
@@ -6,6 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum group install -y "Development Tools"
9
+ sudo yum install -y git wget
9
10
 
10
11
  mkdir -p deps
11
12
  cd deps
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y wget
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y wget
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
@@ -6,6 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum install -y gcc-gnat zlib-devel diffutils
9
+ sudo yum install -y git
9
10
 
10
11
  mkdir -p deps
11
12
  cd deps
@@ -8,6 +8,7 @@ src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
8
8
  sudo yum group install -y "Development Tools"
9
9
  sudo yum install -y gtk3-devel \
10
10
  bzip2-devel xz-devel tcl-devel tk-devel
11
+ sudo yum install -y wget git
11
12
  sudo dnf config-manager --set-enabled devel || true
12
13
  sudo yum install -y Judy-devel
13
14
  sudo dnf config-manager --set-disabled devel || true
@@ -6,6 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum group install -y "Development Tools"
9
+ sudo yum install -y wget git
9
10
 
10
11
  args=
11
12
  if [ ! -z ${PREFIX} ]; then
@@ -5,6 +5,8 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y wget
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
@@ -6,8 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum group install -y "Development Tools"
9
- sudo yum install -y tcl-devel tk-devel tcsh csh
10
- # sudo apt-get install -y build-essential m4 tcsh csh libx11-dev tcl-dev tk-dev
9
+ sudo yum install -y tcl-devel tk-devel tcsh csh git
11
10
 
12
11
  mkdir -p deps
13
12
  cd deps
@@ -6,7 +6,7 @@ set -e
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
8
  sudo yum group install -y "Development Tools"
9
- sudo yum install -y tcl-devel tk-devel
9
+ sudo yum install -y tcl-devel tk-devel git
10
10
 
11
11
  mkdir -p deps
12
12
  cd deps
@@ -4,6 +4,8 @@ set -e
4
4
 
5
5
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
6
6
 
7
+ sudo yum install -y git
8
+
7
9
  mkdir -p deps
8
10
  cd deps
9
11
 
@@ -0,0 +1,76 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
6
+
7
+ sudo yum install -y git gcc-c++ wget
8
+ sudo yum install -y tcl-tclreadline-devel \
9
+ bison flex zlib-devel automake autoconf
10
+ sudo yum install -y \
11
+ https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/flex-2.6.4-9.el9.x86_64.rpm \
12
+ https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/readline-devel-8.1-4.el9.x86_64.rpm \
13
+ https://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/tcl-devel-8.6.10-7.el9.x86_64.rpm
14
+
15
+ mkdir -p deps
16
+ cd deps
17
+
18
+ python3 -m venv .opensta --clear
19
+ . .opensta/bin/activate
20
+ python3 -m pip install cmake==3.31.6
21
+
22
+ if [ ! -z ${PREFIX} ]; then
23
+ cmake_args="-DCMAKE_INSTALL_PREFIX=$PREFIX"
24
+ config_prefix="--prefix=$PREFIX"
25
+ fi
26
+
27
+ # eigen
28
+ mkdir -p eigen3
29
+ cd eigen3
30
+ git clone --depth=1 -b 3.4 https://gitlab.com/libeigen/eigen.git
31
+ cd eigen
32
+ mkdir build
33
+ cd build
34
+ cmake $cmake_args ..
35
+ make -j$(nproc)
36
+ sudo make install
37
+
38
+ cd ../../..
39
+ # cudd
40
+ mkdir -p cudd
41
+ cd cudd
42
+ git clone --depth=1 -b 3.0.0 https://github.com/The-OpenROAD-Project/cudd.git
43
+ cd cudd
44
+ autoreconf
45
+ ./configure $config_prefix
46
+ make -j$(nproc)
47
+ sudo make install
48
+
49
+ cd ../..
50
+ #swig
51
+ wget -O swig.tar.gz https://github.com/swig/swig/archive/v4.1.0.tar.gz
52
+ tar xfz swig.tar.gz
53
+ cd swig-4.1.0
54
+
55
+ wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz
56
+ ./Tools/pcre-build.sh
57
+
58
+ ./autogen.sh
59
+ ./configure $config_prefix
60
+ make -j$(nproc)
61
+ sudo make -j$(nproc) install
62
+
63
+ cd ../..
64
+ # opensta
65
+ git clone $(python3 ${src_path}/_tools.py --tool opensta --field git-url) opensta
66
+ cd opensta
67
+ git checkout $(python3 ${src_path}/_tools.py --tool opensta --field git-commit)
68
+ git submodule update --init --recursive
69
+
70
+ mkdir -p build
71
+ cd build
72
+ cmake .. $cmake_args
73
+ make -j$(nproc)
74
+ sudo make install
75
+
76
+ cd -
@@ -5,13 +5,15 @@ set -e
5
5
  # Get directory of script
6
6
  src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
7
 
8
+ sudo yum install -y git
9
+
8
10
  mkdir -p deps
9
11
  cd deps
10
12
 
11
13
  python3 -m venv .slang --clear
12
14
  . .slang/bin/activate
13
15
  python3 -m pip install --upgrade pip
14
- python3 -m pip install cmake
16
+ python3 -m pip install cmake==3.31.6
15
17
 
16
18
  sudo yum install -y gcc-toolset-12
17
19
 
@@ -10,6 +10,7 @@ sudo yum install -y gcc-toolset-12
10
10
  sudo dnf config-manager --set-enabled devel || true
11
11
  sudo yum install -y libuuid-devel java-11-openjdk-devel python3 zlib-static openssl-devel
12
12
  sudo dnf config-manager --set-disabled devel || true
13
+ sudo yum install -y git
13
14
 
14
15
  mkdir -p deps
15
16
  cd deps
@@ -17,7 +18,7 @@ cd deps
17
18
  python3 -m venv .surelog --clear
18
19
  . .surelog/bin/activate
19
20
  python3 -m pip install --upgrade pip
20
- python3 -m pip install cmake
21
+ python3 -m pip install cmake==3.31.6
21
22
  python3 -m pip install orderedmultidict
22
23
 
23
24
  git clone $(python3 ${src_path}/_tools.py --tool surelog --field git-url) surelog