siliconcompiler 0.29.1__py3-none-any.whl → 0.29.2__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 (33) hide show
  1. siliconcompiler/_metadata.py +1 -1
  2. siliconcompiler/apps/sc_install.py +1 -1
  3. siliconcompiler/core.py +10 -5
  4. siliconcompiler/tools/__init__.py +2 -0
  5. siliconcompiler/tools/_common/asic.py +70 -0
  6. siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +2 -2
  7. siliconcompiler/tools/gtkwave/__init__.py +39 -0
  8. siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +34 -0
  9. siliconcompiler/tools/gtkwave/show.py +70 -0
  10. siliconcompiler/tools/icarus/compile.py +4 -0
  11. siliconcompiler/tools/openroad/_apr.py +9 -1
  12. siliconcompiler/tools/openroad/global_placement.py +23 -2
  13. siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +1 -1
  14. siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +64 -1
  15. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +4 -0
  16. siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +7 -1
  17. siliconcompiler/tools/openroad/scripts/common/procs.tcl +38 -2
  18. siliconcompiler/tools/openroad/scripts/common/write_images.tcl +10 -1
  19. siliconcompiler/tools/verilator/compile.py +11 -0
  20. siliconcompiler/tools/verilator/verilator.py +1 -1
  21. siliconcompiler/toolscripts/_tools.json +6 -1
  22. siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +40 -0
  23. siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +28 -0
  24. siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +28 -0
  25. siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  26. siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +29 -0
  27. siliconcompiler/utils/showtools.py +3 -0
  28. {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.2.dist-info}/METADATA +5 -5
  29. {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.2.dist-info}/RECORD +32 -25
  30. {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.2.dist-info}/LICENSE +0 -0
  31. {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.2.dist-info}/WHEEL +0 -0
  32. {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.2.dist-info}/entry_points.txt +0 -0
  33. {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.2.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  # Version number following semver standard.
2
- version = '0.29.1'
2
+ version = '0.29.2'
3
3
 
4
4
  # Default server address for remote runs, if unspecified.
5
5
  default_server = 'https://server.siliconcompiler.com'
@@ -126,7 +126,7 @@ def _recommended_tool_groups(tools):
126
126
  groups = {
127
127
  "asic": {"surelog", "sv2v", "yosys", "openroad", "klayout"},
128
128
  "fpga": {"surelog", "sv2v", "yosys", "vpr"},
129
- "digital-simulation": {"verilator", "icarus"},
129
+ "digital-simulation": {"verilator", "icarus", "gtkwave"},
130
130
  "analog-simulation": {"xyce"}
131
131
  }
132
132
 
siliconcompiler/core.py CHANGED
@@ -500,6 +500,9 @@ class Chip:
500
500
  'dependency-caching-rebase')
501
501
  """
502
502
 
503
+ if os.path.isfile(path):
504
+ path = os.path.dirname(os.path.abspath(path))
505
+
503
506
  preset_path = self.get('package', 'source', name, 'path')
504
507
  preset_ref = self.get('package', 'source', name, 'ref')
505
508
  if preset_path and preset_path != path or preset_ref and preset_ref != ref:
@@ -3200,6 +3203,7 @@ class Chip:
3200
3203
  sc_step = self.get('arg', 'step')
3201
3204
  sc_index = self.get('arg', 'index')
3202
3205
  sc_job = self.get('option', 'jobname')
3206
+ flow = self.get('option', 'flow')
3203
3207
 
3204
3208
  has_filename = filename is not None
3205
3209
  # Finding last layout if no argument specified
@@ -3210,14 +3214,15 @@ class Chip:
3210
3214
  if sc_step and sc_index:
3211
3215
  search_nodes.append((sc_step, sc_index))
3212
3216
  elif sc_step:
3213
- for check_step, check_index in nodes_to_execute(self, self.get('option', 'flow')):
3217
+ for check_step, check_index in nodes_to_execute(self, flow):
3214
3218
  if sc_step == check_step:
3215
3219
  search_nodes.append((check_step, check_index))
3216
3220
  else:
3217
- for nodes in _get_flowgraph_execution_order(self,
3218
- self.get('option', 'flow'),
3219
- reverse=True):
3220
- search_nodes.extend(nodes)
3221
+ if flow is not None:
3222
+ for nodes in _get_flowgraph_execution_order(self,
3223
+ flow,
3224
+ reverse=True):
3225
+ search_nodes.extend(nodes)
3221
3226
 
3222
3227
  for ext in self._showtools.keys():
3223
3228
  if extension and extension != ext:
@@ -5,6 +5,7 @@ from siliconcompiler.tools.chisel import chisel
5
5
  from siliconcompiler.tools.execute import execute
6
6
  from siliconcompiler.tools.genfasm import genfasm
7
7
  from siliconcompiler.tools.ghdl import ghdl
8
+ from siliconcompiler.tools import gtkwave
8
9
  from siliconcompiler.tools.icarus import icarus
9
10
  from siliconcompiler.tools.icepack import icepack
10
11
  from siliconcompiler.tools.klayout import klayout
@@ -38,6 +39,7 @@ def get_tools():
38
39
  execute,
39
40
  genfasm,
40
41
  ghdl,
42
+ gtkwave,
41
43
  icarus,
42
44
  icepack,
43
45
  klayout,
@@ -135,6 +135,76 @@ def set_tool_task_var(chip,
135
135
  return value
136
136
 
137
137
 
138
+ def set_tool_task_lib_var(chip,
139
+ param_key,
140
+ default_value=None,
141
+ schelp=None,
142
+ option_key=None,
143
+ lib_key=None):
144
+ '''
145
+ Set parameter from libraries -> option -> default_value
146
+ '''
147
+ step = chip.get('arg', 'step')
148
+ index = chip.get('arg', 'index')
149
+ tool, task = get_tool_task(chip, step, index)
150
+
151
+ if schelp:
152
+ chip.set('tool', tool, 'task', task, 'var', param_key,
153
+ schelp, field='help')
154
+
155
+ if not option_key:
156
+ option_key = f'{tool}_{param_key}'
157
+ require_key, value = pick_key(chip, [('option', 'var', option_key)], step=step, index=index)
158
+
159
+ def check_value(val):
160
+ if isinstance(val, (list, tuple, set)):
161
+ return len(val) > 0
162
+ return val is not None
163
+
164
+ if check_value(value):
165
+ chip.set('tool', tool, 'task', task, 'var', param_key, value,
166
+ step=step, index=index, clobber=False)
167
+
168
+ if require_key:
169
+ chip.add('tool', tool, 'task', task, 'require',
170
+ ','.join(('option', option_key)),
171
+ step=step, index=index)
172
+
173
+ return value
174
+
175
+ # Add library key
176
+ if not lib_key:
177
+ lib_key = f'{tool}_{param_key}'
178
+ lib_keys = []
179
+ for lib in get_libraries(chip, 'logic'):
180
+ if chip.valid('library', lib, 'option', 'var', lib_key) and \
181
+ chip.get('library', lib, 'option', 'var', lib_key):
182
+ lib_keys.append(('library', lib, 'option', 'var', lib_key))
183
+
184
+ values = set()
185
+ for lib_key in lib_keys:
186
+ chip.add('tool', tool, 'task', task, 'require', ','.join(lib_key), step=step, index=index)
187
+
188
+ get_step = step
189
+ get_index = index
190
+
191
+ if chip.get(*lib_key, field='pernode') == 'never':
192
+ get_step = None
193
+ get_index = None
194
+
195
+ values.update(chip.get(*lib_key, step=get_step, index=get_index))
196
+
197
+ if check_value(values):
198
+ chip.set('tool', tool, 'task', task, 'var', param_key, values,
199
+ step=step, index=index, clobber=False)
200
+
201
+ chip.add('tool', tool, 'task', task, 'require',
202
+ ','.join(['tool', tool, 'task', task, 'var', param_key]),
203
+ step=step, index=index)
204
+
205
+ return values
206
+
207
+
138
208
  def get_tool_task_var(chip,
139
209
  param_key,
140
210
  option_key=None,
@@ -49,8 +49,8 @@ proc sc_collect_pin_constraints {
49
49
  }
50
50
 
51
51
  set side_pin_order []
52
- dict for {index pin} $pins {
53
- lappend side_pin_order {*}$pin
52
+ foreach index [lsort -integer [dict keys $pins]] {
53
+ lappend side_pin_order {*}[dict get $pins $index]
54
54
  }
55
55
 
56
56
  set pin_layer_ordering [dict create]
@@ -0,0 +1,39 @@
1
+ '''
2
+ GTKWave is a fully featured GTK+ based wave viewer for Unix, Win32, and
3
+ Mac OSX which reads LXT, LXT2, VZT, FST, and GHW files as well as standard
4
+ Verilog VCD/EVCD files and allows their viewing.
5
+
6
+ Documentation: https://gtkwave.github.io/gtkwave/
7
+
8
+ Sources: https://github.com/gtkwave/gtkwave
9
+
10
+ Installation: https://github.com/gtkwave/gtkwave
11
+ '''
12
+
13
+ from siliconcompiler.tools._common import \
14
+ get_tool_task
15
+
16
+
17
+ def setup(chip):
18
+ step = chip.get('arg', 'step')
19
+ index = chip.get('arg', 'index')
20
+ tool, task = get_tool_task(chip, step, index)
21
+
22
+ chip.set('tool', tool, 'exe', 'gtkwave')
23
+ chip.set('tool', tool, 'vswitch', '--version')
24
+ chip.set('tool', tool, 'version', '>=v3.3.116', clobber=False)
25
+ chip.set('tool', tool, 'format', 'tcl', clobber=False)
26
+
27
+
28
+ ################################
29
+ # Version Check
30
+ ################################
31
+ def parse_version(stdout):
32
+ # First line: GTKWave Analyzer v3.3.116 (w)1999-2023 BSI
33
+ return stdout.split()[2]
34
+
35
+
36
+ def normalize_version(version):
37
+ if version[0] == 'v':
38
+ return version[1:]
39
+ return version
@@ -0,0 +1,34 @@
1
+ ###############################
2
+ # Reading SC Schema
3
+ ###############################
4
+
5
+ source ./sc_manifest.tcl
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
+ ###############################
18
+ # Source pre-scripts
19
+ ###############################
20
+
21
+ if { [sc_cfg_tool_task_exists prescript] } {
22
+ foreach sc_pre_script [sc_cfg_tool_task_get prescript] {
23
+ puts "Sourcing pre script: ${sc_pre_script}"
24
+ source $sc_pre_script
25
+ }
26
+ }
27
+
28
+ ###############################
29
+ # Handle exit
30
+ ###############################
31
+
32
+ if { [lindex [sc_cfg_tool_task_get {var} show_exit] 0] == "true" } {
33
+ exit
34
+ }
@@ -0,0 +1,70 @@
1
+ import os
2
+
3
+ from siliconcompiler.tools.gtkwave import setup as tool_setup
4
+ from siliconcompiler.tools._common import \
5
+ add_require_input, get_tool_task, input_provides
6
+
7
+
8
+ def setup(chip):
9
+ '''
10
+ Show a VCD file.
11
+ '''
12
+
13
+ tool_setup(chip)
14
+
15
+ step = chip.get('arg', 'step')
16
+ index = chip.get('arg', 'index')
17
+ tool, task = get_tool_task(chip, step, index)
18
+
19
+ chip.set('tool', tool, 'task', task, 'threads', os.cpu_count(),
20
+ step=step, index=index)
21
+
22
+ chip.set('tool', tool, 'task', task, 'refdir',
23
+ 'tools/gtkwave/scripts',
24
+ step=step, index=index, package='siliconcompiler')
25
+
26
+ chip.set('tool', tool, 'task', task, 'refdir',
27
+ 'tools/gtkwave/scripts',
28
+ step=step, index=index, package='siliconcompiler')
29
+ chip.set('tool', tool, 'task', task, 'script', 'sc_show.tcl',
30
+ step=step, index=index)
31
+
32
+ if f'{chip.top()}.vcd' in input_provides(chip, step, index):
33
+ chip.set('tool', tool, 'task', task, 'input', f'{chip.top()}.vcd', step=step, index=index)
34
+ elif chip.valid('tool', tool, 'task', task, 'var', 'show_filepath') and \
35
+ chip.get('tool', tool, 'task', task, 'var', 'show_filepath', step=step, index=index):
36
+ chip.add('tool', tool, 'task', task, 'require',
37
+ ",".join(['tool', tool, 'task', task, 'var', 'show_filepath']),
38
+ step=step, index=index)
39
+ else:
40
+ add_require_input(chip, 'input', 'waveform', 'vcd')
41
+
42
+ chip.set('tool', tool, 'task', task, 'var', 'show_exit', False,
43
+ step=step, index=index, clobber=False)
44
+
45
+
46
+ def runtime_options(chip):
47
+ step = chip.get('arg', 'step')
48
+ index = chip.get('arg', 'index')
49
+ tool, task = get_tool_task(chip, step, index)
50
+
51
+ options = []
52
+
53
+ threads = chip.get('tool', tool, 'task', task, 'threads', step=step, index=index)
54
+ if threads:
55
+ options.append(f'--cpu={threads}')
56
+
57
+ script = chip.find_files('tool', tool, 'task', task, 'script', step=step, index=index)[0]
58
+ options.append(f'--script={script}')
59
+
60
+ if os.path.exists(f'inputs/{chip.top()}.vcd'):
61
+ dump = f'inputs/{chip.top()}.vcd'
62
+ elif chip.valid('tool', tool, 'task', task, 'var', 'show_filepath') and \
63
+ chip.get('tool', tool, 'task', task, 'var', 'show_filepath', step=step, index=index):
64
+ dump = chip.get('tool', tool, 'task', task, 'var', 'show_filepath',
65
+ step=step, index=index)[0]
66
+ else:
67
+ dump = chip.find_files('input', 'waveform', 'vcd', step=step, index=index)[0]
68
+ options.append(f'--dump={dump}')
69
+
70
+ return options
@@ -75,6 +75,10 @@ def runtime_options(chip):
75
75
  cmdlist.append('-I' + value)
76
76
  for value in opts['define']:
77
77
  cmdlist.append('-D' + value)
78
+
79
+ # add siliconcompiler specific defines
80
+ cmdlist.append(f"-DSILICONCOMPILER_TRACE_FILE=\\\"reports/{design}.vcd\\\"")
81
+
78
82
  for value in get_input_files(chip, 'input', 'cmdfile', 'f'):
79
83
  cmdlist.append('-f ' + value)
80
84
  for value in get_input_files(chip, 'input', 'rtl', 'netlist'):
@@ -5,7 +5,7 @@ from siliconcompiler import utils
5
5
  from siliconcompiler.tools._common import input_provides, add_common_file, \
6
6
  get_tool_task, record_metric
7
7
  from siliconcompiler.tools._common.asic import get_mainlib, set_tool_task_var, get_libraries, \
8
- CellArea
8
+ CellArea, set_tool_task_lib_var
9
9
  from siliconcompiler.tools.openroad import setup as tool_setup
10
10
 
11
11
 
@@ -894,6 +894,14 @@ def define_ord_params(chip):
894
894
  require=['key'],
895
895
  schelp='number of Y bins to use for heatmap image generation')
896
896
 
897
+ set_tool_task_lib_var(chip, param_key='scan_chain_cells',
898
+ default_value=None,
899
+ schelp='cells to use for scan chain insertion')
900
+
901
+ set_tool_task_lib_var(chip, param_key='multibit_ff_cells',
902
+ default_value=None,
903
+ schelp='multibit flipflop cells')
904
+
897
905
 
898
906
  def define_ord_files(chip):
899
907
  step = chip.get('arg', 'step')
@@ -1,9 +1,11 @@
1
1
  from siliconcompiler.tools._common import get_tool_task
2
2
  from siliconcompiler.tools.openroad._apr import setup as apr_setup
3
- from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
3
+ from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs, \
4
+ set_tool_task_var
4
5
  from siliconcompiler.tools.openroad._apr import \
5
6
  define_ord_params, define_sta_params, define_sdc_params, \
6
- define_gpl_params, define_grt_params, define_rsz_params
7
+ define_gpl_params, define_grt_params, define_rsz_params, \
8
+ define_ppl_params
7
9
  from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
8
10
  from siliconcompiler.tools.openroad._apr import extract_metrics
9
11
 
@@ -35,6 +37,7 @@ def setup(chip):
35
37
  define_gpl_params(chip)
36
38
  define_grt_params(chip)
37
39
  define_rsz_params(chip)
40
+ define_ppl_params(chip)
38
41
 
39
42
  set_reports(chip, [
40
43
  'setup',
@@ -48,6 +51,24 @@ def setup(chip):
48
51
  'power_density'
49
52
  ])
50
53
 
54
+ set_tool_task_var(chip, param_key='enable_multibit_clustering',
55
+ default_value=False,
56
+ schelp='true/false, when true multibit clustering will be performed.')
57
+
58
+ set_tool_task_var(chip, param_key='enable_scan_chains',
59
+ default_value=False,
60
+ schelp='true/false, when true scan chains will be inserted.')
61
+
62
+ set_tool_task_var(chip, param_key='scan_enable_port_pattern',
63
+ schelp='pattern of the scan chain enable port.',
64
+ skip=['pdk', 'lib'])
65
+ set_tool_task_var(chip, param_key='scan_in_port_pattern',
66
+ schelp='pattern of the scan chain in port.',
67
+ skip=['pdk', 'lib'])
68
+ set_tool_task_var(chip, param_key='scan_out_port_pattern',
69
+ schelp='pattern of the scan chain out port.',
70
+ skip=['pdk', 'lib'])
71
+
51
72
 
52
73
  def pre_process(chip):
53
74
  define_ord_files(chip)
@@ -17,7 +17,7 @@ source -echo "$sc_refdir/apr/preamble.tcl"
17
17
  ###############################
18
18
 
19
19
  if { [llength [all_clocks]] > 0 } {
20
- sc_set_dont_use -clock
20
+ sc_set_dont_use -clock -report dont_use.clock_tree_synthesis
21
21
 
22
22
  # Clone clock tree inverters next to register loads
23
23
  # so cts does not try to buffer the inverted clocks.
@@ -11,16 +11,79 @@ source ./sc_manifest.tcl > /dev/null
11
11
  set sc_refdir [sc_cfg_tool_task_get refdir]
12
12
  source -echo "$sc_refdir/apr/preamble.tcl"
13
13
 
14
+ set dont_use_args []
15
+
16
+ if { [lindex [sc_cfg_tool_task_get var enable_scan_chains] 0] == "true" } {
17
+ lappend dont_use_args -scanchain
18
+ }
19
+ if { [lindex [sc_cfg_tool_task_get var enable_multibit_clustering] 0] == "true" } {
20
+ lappend dont_use_args -multibit
21
+ }
22
+
23
+ sc_set_dont_use {*}$dont_use_args -report dont_use.global_placement
24
+
25
+ ###############################
26
+ # Scan Chain Preparation
27
+ ###############################
28
+
29
+ if { [lindex [sc_cfg_tool_task_get var enable_scan_chains] 0] == "true" } {
30
+ set dft_args []
31
+ if { [sc_cfg_tool_task_get var scan_in_port_pattern] != [] } {
32
+ lappend dft_args -scan_in_name_pattern \
33
+ [lindex [sc_cfg_tool_task_get var scan_in_port_pattern] 0]
34
+ }
35
+ if { [sc_cfg_tool_task_get var scan_out_port_pattern] != [] } {
36
+ lappend dft_args -scan_out_name_pattern \
37
+ [lindex [sc_cfg_tool_task_get var scan_out_port_pattern] 0]
38
+ }
39
+ if { [sc_cfg_tool_task_get var scan_enable_port_pattern] != [] } {
40
+ lappend dft_args -scan_enable_name_pattern \
41
+ [lindex [sc_cfg_tool_task_get var scan_enable_port_pattern] 0]
42
+ }
43
+
44
+ set_dft_config -clock_mixing clock_mix {*}$dft_args
45
+ tee -file reports/scan_chain_config.rpt {report_dft_config}
46
+ scan_replace
47
+ }
48
+
49
+ ###############################
50
+ # Perform multi-bit clustering
51
+ ###############################
52
+
53
+ if { [lindex [sc_cfg_tool_task_get var enable_multibit_clustering] 0] == "true" } {
54
+ cluster_flops
55
+ }
56
+
14
57
  ###############################
15
58
  # Global Placement
16
59
  ###############################
17
60
 
18
61
  sc_global_placement
19
62
 
20
- estimate_parasitics -placement
63
+ ###############################
64
+ # Scan Chain Finalize
65
+ ###############################
66
+
67
+ if { [lindex [sc_cfg_tool_task_get var enable_scan_chains] 0] == "true" } {
68
+ tee -file reports/scan_chain.rpt {preview_dft -verbose}
69
+ insert_dft
70
+
71
+ set new_ios [sc_get_unplaced_io_nets]
72
+ if { [llength $new_ios] > 0 } {
73
+ foreach net $new_ios {
74
+ utl::report "New IO net [$net getName]"
75
+ }
76
+ utl::warn FLW 1 "Scan chain generated new ports, rerunning pin placement"
77
+ sc_pin_placement
78
+ }
79
+ }
21
80
 
22
81
  ###############################
23
82
  # Task Postamble
24
83
  ###############################
25
84
 
85
+ sc_set_dont_use
86
+
87
+ estimate_parasitics -placement
88
+
26
89
  source -echo "$sc_refdir/apr/postamble.tcl"
@@ -28,6 +28,8 @@ estimate_parasitics -placement
28
28
  # Repair DRVs
29
29
  ###############################
30
30
 
31
+ sc_set_dont_use -scanchain -multibit -report dont_use.repair_drv
32
+
31
33
  set repair_design_args []
32
34
 
33
35
  set rsz_cap_margin [lindex [sc_cfg_tool_task_get {var} rsz_cap_margin] 0]
@@ -43,6 +45,8 @@ repair_design \
43
45
  -verbose \
44
46
  {*}$repair_design_args
45
47
 
48
+ sc_set_dont_use
49
+
46
50
  ###############################
47
51
  # Tie-off cell insertion
48
52
  ###############################
@@ -34,6 +34,9 @@ if { [lindex [sc_cfg_tool_task_get var rsz_skip_setup_repair] 0] != "true" } {
34
34
  # Setup Repair
35
35
  ###############################
36
36
 
37
+ # Enable ffs for resizing
38
+ sc_set_dont_use -scanchain -multibit -report dont_use.repair_timing.setup
39
+
37
40
  estimate_parasitics -placement
38
41
 
39
42
  repair_timing \
@@ -45,6 +48,9 @@ if { [lindex [sc_cfg_tool_task_get var rsz_skip_setup_repair] 0] != "true" } {
45
48
  {*}$repair_timing_args
46
49
 
47
50
  sc_detailed_placement
51
+
52
+ # Restore dont use
53
+ sc_set_dont_use
48
54
  }
49
55
 
50
56
  if { [lindex [sc_cfg_tool_task_get var rsz_skip_hold_repair] 0] != "true" } {
@@ -55,7 +61,7 @@ if { [lindex [sc_cfg_tool_task_get var rsz_skip_hold_repair] 0] != "true" } {
55
61
  estimate_parasitics -placement
56
62
 
57
63
  # Enable hold cells
58
- sc_set_dont_use -hold
64
+ sc_set_dont_use -hold -scanchain -multibit -report dont_use.repair_timing.hold
59
65
 
60
66
  repair_timing \
61
67
  -hold \
@@ -300,6 +300,23 @@ proc sc_bterm_has_placed_io { net } {
300
300
  return false
301
301
  }
302
302
 
303
+ ###########################
304
+ # Get nets with unplaced bterms
305
+ ###########################
306
+
307
+ proc sc_get_unplaced_io_nets { } {
308
+ set nets []
309
+ foreach bterm [[ord::get_db_block] getBTerms] {
310
+ if {
311
+ [$bterm getFirstPinPlacementStatus] == "UNPLACED" ||
312
+ [$bterm getFirstPinPlacementStatus] == "NONE"
313
+ } {
314
+ lappend nets [$bterm getNet]
315
+ }
316
+ }
317
+ return $nets
318
+ }
319
+
303
320
  ###########################
304
321
  # Find nets regex
305
322
  ###########################
@@ -701,13 +718,17 @@ proc sc_set_gui_title { } {
701
718
 
702
719
  proc sc_set_dont_use { args } {
703
720
  sta::parse_key_args "sc_set_dont_use" args \
704
- keys {} \
705
- flags {-hold -clock}
721
+ keys {-report} \
722
+ flags {-hold -clock -multibit -scanchain}
706
723
 
707
724
  sta::check_argc_eq0 "sc_set_dont_use" $args
708
725
 
709
726
  global sc_mainlib
710
727
 
728
+ if { [sc_check_version 18171] } {
729
+ reset_dont_use
730
+ }
731
+
711
732
  set_dont_use [sc_cfg_get library $sc_mainlib asic cells dontuse]
712
733
 
713
734
  set clk_groups "clkbuf clkgate clklogic"
@@ -724,4 +745,19 @@ proc sc_set_dont_use { args } {
724
745
  unset_dont_use [sc_cfg_get library $sc_mainlib asic cells $group]
725
746
  }
726
747
  }
748
+ if { [info exists flags(-clock)] } {
749
+ foreach group $clk_groups {
750
+ unset_dont_use [sc_cfg_get library $sc_mainlib asic cells $group]
751
+ }
752
+ }
753
+ if { [info exists flags(-multibit)] } {
754
+ unset_dont_use [sc_cfg_tool_task_get var multibit_ff_cells]
755
+ }
756
+ if { [info exists flags(-scanchain)] } {
757
+ unset_dont_use [sc_cfg_tool_task_get var scan_chain_cells]
758
+ }
759
+
760
+ if { [info exists keys(-report)] } {
761
+ tee -file reports/$keys(-report).rpt {report_dont_use}
762
+ }
727
763
  }
@@ -93,6 +93,10 @@ proc sc_image_everything { } {
93
93
  }
94
94
 
95
95
  proc sc_image_irdrop { net corner } {
96
+ if { ![sc_cfg_tool_task_check_in_list power var reports] } {
97
+ return
98
+ }
99
+
96
100
  if { ![sc_has_placed_instances] || [sc_has_unplaced_instances] } {
97
101
  return
98
102
  }
@@ -107,7 +111,12 @@ proc sc_image_irdrop { net corner } {
107
111
  foreach msg $msgs {
108
112
  suppress_message PSM $msg
109
113
  }
110
- set failed [catch { analyze_power_grid -net $net -corner $corner -source_type STRAPS } err]
114
+ set analyze_args []
115
+ lappend analyze_args -source_type STRAPS
116
+ if { [sc_check_version 18074] } {
117
+ lappend analyze_args -allow_reuse
118
+ }
119
+ set failed [catch { analyze_power_grid -net $net -corner $corner {*}$analyze_args } err]
111
120
  foreach msg $msgs {
112
121
  unsuppress_message PSM $msg
113
122
  }
@@ -97,6 +97,12 @@ def setup(chip):
97
97
  "'vcd' or 'fst'. Defaults to 'vcd'.",
98
98
  field='help')
99
99
 
100
+ chip.set('tool', tool, 'task', task, 'var', 'initialize_random',
101
+ 'true/false, when true registers will reset with a random value.',
102
+ field='help')
103
+ chip.set('tool', tool, 'task', task, 'var', 'initialize_random', False,
104
+ step=step, index=index, clobber=False)
105
+
100
106
 
101
107
  def runtime_options(chip):
102
108
  tool = 'verilator'
@@ -107,6 +113,11 @@ def runtime_options(chip):
107
113
 
108
114
  cmdlist = runtime_options_tool(chip)
109
115
 
116
+ random_init = chip.get('tool', tool, 'task', task, 'var',
117
+ 'initialize_random', step=step, index=index)
118
+ if random_init == ['true']:
119
+ cmdlist.extend(['--x-assign', 'unique'])
120
+
110
121
  cmdlist.extend(['--exe', '--build'])
111
122
 
112
123
  threads = chip.get('tool', tool, 'task', task, 'threads', step=step, index=index)
@@ -77,7 +77,7 @@ def setup(chip):
77
77
  chip.set('tool', tool, 'task', task, 'var', 'enable_assert',
78
78
  'true/false, when true assertions are enabled in Verilator.',
79
79
  field='help')
80
- chip.set('tool', tool, 'task', task, 'var', 'enable_assert', 'false',
80
+ chip.set('tool', tool, 'task', task, 'var', 'enable_assert', False,
81
81
  step=step, index=index, clobber=False)
82
82
 
83
83
  if chip.get('tool', tool, 'task', task, 'var', 'enable_assert', step=step, index=index):
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "openroad": {
3
3
  "git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
4
- "git-commit": "1ed6a7edfda56bef82938573bf0fadc48bd8ff34",
4
+ "git-commit": "beba944a7c9eaface2ae88040ac721272b22e9d3",
5
5
  "docker-cmds": [
6
6
  "# Remove OR-Tools files",
7
7
  "RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
@@ -131,5 +131,10 @@
131
131
  "git-commit": "v7.0",
132
132
  "git-url": "https://github.com/MikePopoloski/slang.git",
133
133
  "auto-update": true
134
+ },
135
+ "gtkwave": {
136
+ "git-commit": "v3.3.116",
137
+ "git-url": "https://github.com/gtkwave/gtkwave.git",
138
+ "auto-update": false
134
139
  }
135
140
  }
@@ -0,0 +1,40 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ # Get directory of script
6
+ src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
+
8
+ sudo yum group install -y "Development Tools"
9
+ sudo yum install -y gtk3-devel \
10
+ bzip2-devel xz-devel tcl-devel tk-devel
11
+ sudo dnf config-manager --set-enabled devel || true
12
+ sudo yum install -y Judy-devel
13
+ sudo dnf config-manager --set-disabled devel || true
14
+
15
+ mkdir -p deps
16
+ cd deps
17
+
18
+ args=
19
+ if [ ! -z ${PREFIX} ]; then
20
+ args=--prefix="$PREFIX"
21
+ fi
22
+
23
+ wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz
24
+ tar xvf gperf-3.1.tar.gz
25
+ cd gperf-3.1
26
+ ./configure $args
27
+ make -j$(nproc)
28
+ sudo make install
29
+ cd ..
30
+
31
+ git clone $(python3 ${src_path}/_tools.py --tool gtkwave --field git-url) gtkwave
32
+ cd gtkwave
33
+ git checkout $(python3 ${src_path}/_tools.py --tool gtkwave --field git-commit)
34
+
35
+ cd gtkwave3-gtk3
36
+
37
+ ./autogen.sh
38
+ ./configure --enable-gtk3 $args
39
+ make -j$(nproc)
40
+ sudo make install
@@ -0,0 +1,28 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ # Get directory of script
6
+ src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
+
8
+ sudo apt-get install -y build-essential gperf libgtk-3-dev \
9
+ libbz2-dev libjudy-dev liblzma-dev tcl-dev tk-dev
10
+
11
+ mkdir -p deps
12
+ cd deps
13
+
14
+ git clone $(python3 ${src_path}/_tools.py --tool gtkwave --field git-url) gtkwave
15
+ cd gtkwave
16
+ git checkout $(python3 ${src_path}/_tools.py --tool gtkwave --field git-commit)
17
+
18
+ args=
19
+ if [ ! -z ${PREFIX} ]; then
20
+ args=--prefix="$PREFIX"
21
+ fi
22
+
23
+ cd gtkwave3-gtk3
24
+
25
+ ./autogen.sh
26
+ ./configure --enable-gtk3 $args
27
+ make -j$(nproc)
28
+ sudo make install
@@ -0,0 +1,28 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ # Get directory of script
6
+ src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
+
8
+ sudo apt-get install -y build-essential gperf libgtk-3-dev \
9
+ libbz2-dev libjudy-dev liblzma-dev tcl-dev tk-dev
10
+
11
+ mkdir -p deps
12
+ cd deps
13
+
14
+ git clone $(python3 ${src_path}/_tools.py --tool gtkwave --field git-url) gtkwave
15
+ cd gtkwave
16
+ git checkout $(python3 ${src_path}/_tools.py --tool gtkwave --field git-commit)
17
+
18
+ args=
19
+ if [ ! -z ${PREFIX} ]; then
20
+ args=--prefix="$PREFIX"
21
+ fi
22
+
23
+ cd gtkwave3-gtk3
24
+
25
+ ./autogen.sh
26
+ ./configure --enable-gtk3 $args
27
+ make -j$(nproc)
28
+ sudo make install
File without changes
@@ -0,0 +1,29 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ # Get directory of script
6
+ src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
7
+
8
+ sudo apt-get install -y build-essential gperf libgtk-3-dev \
9
+ libbz2-dev libjudy-dev liblzma-dev tcl-dev tk-dev autotools-dev \
10
+ automake
11
+
12
+ mkdir -p deps
13
+ cd deps
14
+
15
+ git clone $(python3 ${src_path}/_tools.py --tool gtkwave --field git-url) gtkwave
16
+ cd gtkwave
17
+ git checkout $(python3 ${src_path}/_tools.py --tool gtkwave --field git-commit)
18
+
19
+ args=
20
+ if [ ! -z ${PREFIX} ]; then
21
+ args=--prefix="$PREFIX"
22
+ fi
23
+
24
+ cd gtkwave3-gtk3
25
+
26
+ ./autogen.sh
27
+ ./configure --enable-gtk3 $args
28
+ make -j$(nproc)
29
+ sudo make install
@@ -5,6 +5,7 @@ from siliconcompiler.tools.openroad import screenshot as openroad_screenshot
5
5
  from siliconcompiler.tools.vpr import show as vpr_show
6
6
  from siliconcompiler.tools.vpr import screenshot as vpr_screenshot
7
7
  from siliconcompiler.tools.yosys import screenshot as yosys_screenshot
8
+ from siliconcompiler.tools.gtkwave import show as gtkwave_show
8
9
 
9
10
 
10
11
  def setup(chip):
@@ -29,3 +30,5 @@ def setup(chip):
29
30
 
30
31
  chip.register_showtool('v', yosys_screenshot)
31
32
  chip.register_showtool('vg', yosys_screenshot)
33
+
34
+ chip.register_showtool('vcd', gtkwave_show)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: siliconcompiler
3
- Version: 0.29.1
3
+ Version: 0.29.2
4
4
  Summary: A compiler framework that automates translation from source code to silicon.
5
5
  Author-email: Andreas Olofsson <andreas.d.olofsson@gmail.com>
6
6
  License: Apache License 2.0
@@ -46,7 +46,7 @@ Requires-Dist: fastjsonschema==2.21.1
46
46
  Requires-Dist: docker==7.1.0
47
47
  Requires-Dist: importlib_metadata; python_version < "3.10"
48
48
  Requires-Dist: sc-surelog==1.84.1
49
- Requires-Dist: orjson==3.10.13
49
+ Requires-Dist: orjson==3.10.14
50
50
  Requires-Dist: streamlit==1.40.1; python_version <= "3.8"
51
51
  Requires-Dist: streamlit==1.41.1; python_version >= "3.9" and python_full_version != "3.9.7"
52
52
  Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
@@ -58,10 +58,10 @@ Requires-Dist: pytest==8.3.4; extra == "test"
58
58
  Requires-Dist: pytest-xdist==3.6.1; extra == "test"
59
59
  Requires-Dist: pytest-timeout==2.3.1; extra == "test"
60
60
  Requires-Dist: pytest-asyncio==0.24.0; python_version <= "3.8" and extra == "test"
61
- Requires-Dist: pytest-asyncio==0.25.1; python_version >= "3.9" and extra == "test"
61
+ Requires-Dist: pytest-asyncio==0.25.2; python_version >= "3.9" and extra == "test"
62
62
  Requires-Dist: pytest-cov==5.0.0; python_version <= "3.8" and extra == "test"
63
63
  Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "test"
64
- Requires-Dist: responses==0.25.3; extra == "test"
64
+ Requires-Dist: responses==0.25.5; extra == "test"
65
65
  Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
66
66
  Provides-Extra: lint
67
67
  Requires-Dist: flake8==7.1.1; extra == "lint"
@@ -78,7 +78,7 @@ Provides-Extra: examples
78
78
  Requires-Dist: migen==0.9.2; extra == "examples"
79
79
  Requires-Dist: lambdalib==0.3.2; extra == "examples"
80
80
  Provides-Extra: optimizer
81
- Requires-Dist: google-vizier[jax]==0.1.20; python_version >= "3.10" and extra == "optimizer"
81
+ Requires-Dist: google-vizier[jax]==0.1.21; python_version >= "3.10" and extra == "optimizer"
82
82
 
83
83
  ![SiliconCompiler](https://raw.githubusercontent.com/siliconcompiler/siliconcompiler/main/docs/_static/sc_logo_with_text.png)
84
84
 
@@ -1,8 +1,8 @@
1
1
  siliconcompiler/__init__.py,sha256=Ke_Bcryj9N6MoUq_5z_IDW3qMrUzR-3-kJVsvUenYzY,511
2
2
  siliconcompiler/__main__.py,sha256=JwWkcvaNngqgMWprEQ1cFy2Wdq9GMvk46UGTHyh_qvM,170
3
3
  siliconcompiler/_common.py,sha256=c6r0SbI2xTpNOZayFsyCDo0riJGNJSPN-0zW8R7rDBI,1488
4
- siliconcompiler/_metadata.py,sha256=kPvJIFXnUPizIvOkvbIg_mwRbUdpikCUi183Peg-EOA,1264
5
- siliconcompiler/core.py,sha256=u9-O6y_mzftKTrJmOa1VRr45bWlACo-bxotPdpLNZBQ,138165
4
+ siliconcompiler/_metadata.py,sha256=MoETJ1685hRQ-2QGN29A0X6yb699qRcwYlCl7JkjRwQ,1264
5
+ siliconcompiler/core.py,sha256=Paw0dfQjkhu_4piY-Ajcl7MQGekbV0gG20pRdQazIwQ,138308
6
6
  siliconcompiler/flowgraph.py,sha256=WLcbBWFj5DdYRRIxNy_Djm2v4yN9WELQM_ypNPB5QVM,21963
7
7
  siliconcompiler/issue.py,sha256=9ZpdEBh8QB56-bZ1YXRnjqgg9hwnFty2u1o5oI66W7M,11125
8
8
  siliconcompiler/package.py,sha256=nGFzYI63dwO6ULEyEGHu_Pd-8QYMWu8BtpzgwEmppag,14111
@@ -12,7 +12,7 @@ siliconcompiler/apps/__init__.py,sha256=6LuAljPtVB6g5yXl_58ODoB4Svb6UfKaDbX1e0aN
12
12
  siliconcompiler/apps/_common.py,sha256=Ph-cD-t9lCzavak3s4YCXXmA_ouf-jJ-7WIEGkSsjOg,3770
13
13
  siliconcompiler/apps/sc.py,sha256=7wKQ89DZLVXMNbjAgIu9F8Erb_NmrBkV4lJNjBUt8_c,3215
14
14
  siliconcompiler/apps/sc_dashboard.py,sha256=kGyMYbgKgZMBUrTyft6mEvRnmcrKA7JunrkWZ8VwSwM,3478
15
- siliconcompiler/apps/sc_install.py,sha256=aFCFXaXarREvt_rTAcOZoqDwj-Df620dLBxO2Fda9so,6273
15
+ siliconcompiler/apps/sc_install.py,sha256=Az2gOq-7MbCnPCLyvtiLo1sslNa_ZiNwyUVvfev-5Xo,6284
16
16
  siliconcompiler/apps/sc_issue.py,sha256=PUXFWne6MWY0Ntak3PnMZ84tpEZ5S1Pta5B3AkxMdoY,6404
17
17
  siliconcompiler/apps/sc_remote.py,sha256=jsQWEqZnoKrJI9FcA2ILZYJ8F7uvLuwYI4N23dRwVRs,7241
18
18
  siliconcompiler/apps/sc_server.py,sha256=d3SCfKtNneIBiAk7Udc5SqXvSIoFSK40iHWcKuY7unk,894
@@ -130,13 +130,13 @@ siliconcompiler/templates/slurm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
130
130
  siliconcompiler/templates/slurm/run.sh,sha256=uXs91H0vjLB8G8vaezxXSr3XNR2EUiXH1dyfOSHYYnk,214
131
131
  siliconcompiler/templates/tcl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
132
  siliconcompiler/templates/tcl/manifest.tcl.j2,sha256=XT2pKuPSaa2GPJj1IpEl3Al5N70yqQS8jZecmpyeV4o,3547
133
- siliconcompiler/tools/__init__.py,sha256=0cgbHWC0cLI9e01x3X6w_bAm0vMZGdsqTkPWj3C3R9s,1816
133
+ siliconcompiler/tools/__init__.py,sha256=MZrsqpW_OonmSq1LjGNbB0OQkqNOEtyjmgsOEtk1qJc,1879
134
134
  siliconcompiler/tools/_common/__init__.py,sha256=NP1YLZn6wyOXRWZwzDnJUKzrJ-eD88X94nXzXcj-ALg,15012
135
- siliconcompiler/tools/_common/asic.py,sha256=6dcjW3tAlu99YmBDbCDb5E1bh7vbleXS8NWdpeKXKkE,6693
135
+ siliconcompiler/tools/_common/asic.py,sha256=fFbu2lzvovqAyG8Z-9cINJJCNkiroTgQEhx--ZAqEUk,9002
136
136
  siliconcompiler/tools/_common/sdc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
137
  siliconcompiler/tools/_common/sdc/sc_constraints.sdc,sha256=Hz6OLebi14UTcfGXgJoNJeFo0BH_4N5XwjFe2mrey8g,2827
138
138
  siliconcompiler/tools/_common/tcl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
- siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl,sha256=33tB8P-x-XcKM-2hwIiNvo1TzRaeSDlYGObOLVjZzD8,2061
139
+ siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl,sha256=Q6L9hd3rP2h71dGoxWDAYyHSfgeja2JqNJpQhfvJGYw,2102
140
140
  siliconcompiler/tools/bambu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
141
  siliconcompiler/tools/bambu/bambu.py,sha256=hodIBmILSE7xvfIc74r0Qc0dZI42TwHhrKmWLom-hc0,1159
142
142
  siliconcompiler/tools/bambu/convert.py,sha256=5yez6N-y5Aia8ygvD9O8sfx5GcMsRg9nN5KzXcR-Tio,2316
@@ -167,8 +167,11 @@ siliconcompiler/tools/genfasm/genfasm.py,sha256=ysiFWhfoZ6F551dnE4BTgdbG7VHdCxwI
167
167
  siliconcompiler/tools/ghdl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
168
  siliconcompiler/tools/ghdl/convert.py,sha256=uzNu4AHI7whpa0WaE8nDGSAZY5t1Shmv4DhwREpamn4,2977
169
169
  siliconcompiler/tools/ghdl/ghdl.py,sha256=E0YJtb6ounqnW34hpz_bpLCIeNFxF429DJMHswMs4xE,1186
170
+ siliconcompiler/tools/gtkwave/__init__.py,sha256=knumeAY5DeW60NwxcMYFnSsMVQjqgjaernR3O3dF9Ic,1084
171
+ siliconcompiler/tools/gtkwave/show.py,sha256=IIZrID6wOxstdsYkkjqQo5TwFdpCuBcpCkDr9DqW1Ak,2599
172
+ siliconcompiler/tools/gtkwave/scripts/sc_show.tcl,sha256=fKQLNyPCvPOXmgRRtzpsZfXUTqBsehgKCEwT2m3z7C4,879
170
173
  siliconcompiler/tools/icarus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
- siliconcompiler/tools/icarus/compile.py,sha256=WH3qJ751bS9RfMl0M63xMA_zKzcSITqf5_3RvIBUI90,3056
174
+ siliconcompiler/tools/icarus/compile.py,sha256=MFS15jDYVp56MMWvinSNTWApCBX7pa1lS2iXprFXBFc,3182
172
175
  siliconcompiler/tools/icarus/icarus.py,sha256=d1-5s-Z_HaCw6lTCSWRD5oTcPdPrT3rTiSoCpV7y0tU,911
173
176
  siliconcompiler/tools/icepack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
177
  siliconcompiler/tools/icepack/bitstream.py,sha256=GSpBcabGfFJmRuo1770EosWMDVJHVjUsxluxZQorsTc,641
@@ -205,7 +208,7 @@ siliconcompiler/tools/nextpnr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
205
208
  siliconcompiler/tools/nextpnr/apr.py,sha256=dCMLDS4xnwqCoBtCKd3kwCxjIRqPn_zq3f7pkWPw5mw,802
206
209
  siliconcompiler/tools/nextpnr/nextpnr.py,sha256=B5kr-ZLnt2vDFtS4veIdf0_Cm6yvfS1QVqWhxYa8R24,1712
207
210
  siliconcompiler/tools/openroad/__init__.py,sha256=aJLiAfdleczGD9QXw7TYBGrWFiEJhaAWbQJcNlYCOts,3250
208
- siliconcompiler/tools/openroad/_apr.py,sha256=keAQlByWzCaMdhIRI-uR51fkmj8gfs2DNSzuNW_XGvs,48936
211
+ siliconcompiler/tools/openroad/_apr.py,sha256=Jvx37yBqYYc2dZrQjn6F2eUNt5gtXEPyhMYMDaeIkiM,49312
209
212
  siliconcompiler/tools/openroad/antenna_repair.py,sha256=VwHwiNOuaF8vQj2D_Rcfk2cRV45lA8h0JHdItk4y2dE,2225
210
213
  siliconcompiler/tools/openroad/clock_tree_synthesis.py,sha256=slqlMBJnVauTqzOdw4pNOhgN9bJCpwtTj2FV0YmpGgE,1687
211
214
  siliconcompiler/tools/openroad/detailed_placement.py,sha256=IsTuZH7780qXQYB7ZEpima2KbK8VWYTD3lBUehcMBX8,1548
@@ -213,7 +216,7 @@ siliconcompiler/tools/openroad/detailed_route.py,sha256=JVm3E8BVEABRG29lyyRNiW5V
213
216
  siliconcompiler/tools/openroad/endcap_tapcell_insertion.py,sha256=Clus1qkvUwlyfD4W4rZ_TvbK8vxHt9c6luN4wTSJcz4,1449
214
217
  siliconcompiler/tools/openroad/fillercell_insertion.py,sha256=ac3HDUMbd065jn82s6km3ZSRtJbpp-yMHJIcvHBDO-0,1488
215
218
  siliconcompiler/tools/openroad/fillmetal_insertion.py,sha256=CPYQ2LFtHlZ5yPUc3xefjDisk62woXgnx_ac6wNNk4Y,2511
216
- siliconcompiler/tools/openroad/global_placement.py,sha256=hCJLkydal6UqK3A3UBdnM8JCsn6cloM37wfgnzjuoRo,1531
219
+ siliconcompiler/tools/openroad/global_placement.py,sha256=19r19S1BlzlmfMu93B-QYvLRzl26iLo9WS-i85Oznp0,2529
217
220
  siliconcompiler/tools/openroad/global_route.py,sha256=JQwZDheM26E29hDaqkJ3eHWo-1BBYYts0kd8yQfbJfQ,1641
218
221
  siliconcompiler/tools/openroad/init_floorplan.py,sha256=BxsRvmPUfsp0HGIueLPLWh6f8_CXLxhX1_mOQSVjSuI,4015
219
222
  siliconcompiler/tools/openroad/macro_placement.py,sha256=jXrdTQLt-OtV66UWYyZ35jOQdDfkqN-rjWLiGnjjNYI,1941
@@ -234,31 +237,31 @@ siliconcompiler/tools/openroad/scripts/sc_show.tcl,sha256=JYgw9nRMqP-LzvS9ZAM-Jz
234
237
  siliconcompiler/tools/openroad/scripts/apr/postamble.tcl,sha256=9CLpG_DLvRKMgFRQMR5xWSzGIF9QERIBMkKTxcDYaWA,1130
235
238
  siliconcompiler/tools/openroad/scripts/apr/preamble.tcl,sha256=0SHdMGDFSWYa92igsU5hVEit1fVnXVYZId7zVBOYo0k,2348
236
239
  siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl,sha256=Zyd9w7Md6iyCIBmDl-mTYPWkXIx5T0NE9qid339KqLA,1489
237
- siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl,sha256=bX3B_GTRJ7eIDupcoXZa9JtL9ms8TY2oSe2qfbadtbo,1910
240
+ siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl,sha256=e-siDFpyJksLl-pwKMJGTXIue72MuZFVkilLeOrfvg4,1948
238
241
  siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl,sha256=Xcvz-kilJTsrcvNmVZZSzYtCWkC2I1EWYLMVy6DjSxw,924
239
242
  siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl,sha256=GlFud8C-89kktBVck4YdSpr_QBDZw62vkEERLyKNzAI,2314
240
243
  siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl,sha256=A_eiApMbYlT0WOvreVtqkS-Ou1rdRu-m0Vtj7yKCGFg,1288
241
244
  siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl,sha256=uc7MdGV64PWeH_MAkxx2jrzXVXeoOAVYyYIGgMilPDk,571
242
245
  siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl,sha256=Qk16mhbcVo1g4wBKjYwV4aNr2zAEFXsF8XnehA9xbWY,896
243
- siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl,sha256=wADPZeYFGVsmfNN11U6JCdGjqonsNcWhpuRO9TchE7A,555
246
+ siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl,sha256=obZTbXhfzipP1RSs0LMVYb99w574qRnANgELjdrpnmw,2549
244
247
  siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl,sha256=v8149E4GbJrdDAc7i_WFhh2dQomuzSlf149DNqm1DVI,1853
245
248
  siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl,sha256=j3sY5GMGtriQks2yaAEzxrcWhvFIsOrH8cfh5wj_aRQ,10431
246
249
  siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl,sha256=RWQRQaFEtrlmaYah4FBwTMldL55FowefsPoq_rgurAw,5087
247
250
  siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl,sha256=Y3EtUBTT1XJIM6CgnXqGAoRg46GNYuMG3dJ6tw-2ShE,500
248
251
  siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl,sha256=FpHZ7b88rH-sxlg0w9PpWrmAZIj3Q6yLNiEFFm9wzkw,1114
249
252
  siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl,sha256=1yV9CZjE7iT99nInjc_cdYe5z2iCmtIJCAqlOkBy7k0,1503
250
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl,sha256=MGX50YV22tulRiCaSLGcU_m6fB5h8lbasQQZdBm7M5E,1687
251
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl,sha256=Q-BpX6Q-W4YePmTcxc2tiSWgjz8NQrmZtF6nkSK9Lfg,2266
253
+ siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl,sha256=2ihiPk3FBK9milXitFr2giN-mrSbeNZgk9Pd3UGVwdg,1770
254
+ siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl,sha256=D2wIj3qL4qmCgvKvzViimFbLkK5K0b7HYeFMw0H9JGo,2476
252
255
  siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl,sha256=q0I3s-hBZtoiFkZHCfeEHBQGNbbgUmiMJ7U7Gsr1pQI,3696
253
256
  siliconcompiler/tools/openroad/scripts/common/debugging.tcl,sha256=i4oNtC0rQq3JaFf1-oKyr_jZQyu5ZF_--zskvG0hdKg,943
254
- siliconcompiler/tools/openroad/scripts/common/procs.tcl,sha256=ENSWIz6fkwGlILbOQe6C0-lRy-HGKRcY2QqujSRvGOc,21770
257
+ siliconcompiler/tools/openroad/scripts/common/procs.tcl,sha256=ZmRr6Z-7eRt5_Wr-WaZC81c3snDI7Mq0mc5H49ggePY,22801
255
258
  siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl,sha256=sEL4hvDS30E5oHdkyDC2wqdYCKUY3bja4tobzSzWsDw,2020
256
259
  siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl,sha256=GeXZ8H3a8fg8o-4KyfZj2N4Db_P9XArZl2T4apfMSZI,778
257
260
  siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl,sha256=fsHSSGXkrqOKXjwH7U8XMLMnEPoZpavBVkl4qzLugOU,515
258
261
  siliconcompiler/tools/openroad/scripts/common/reports.tcl,sha256=AY9k4oiBKacgsFW8EoOIbWp1lNOZ1b0ohD_o1xC1b1k,6101
259
262
  siliconcompiler/tools/openroad/scripts/common/screenshot.tcl,sha256=OEE4JpafdOK1cVJw3sie_Fvo03ZkheElhPpvKsgCV0E,447
260
263
  siliconcompiler/tools/openroad/scripts/common/write_data.tcl,sha256=5N7ZKWU_8NdEYO-n6tuTXCmWCYtClDjHykOidKyFWdk,168
261
- siliconcompiler/tools/openroad/scripts/common/write_images.tcl,sha256=lP9ycPyQ4p-etIuir-fGWr4vq1UqT6LZiy5cRhLZQh8,11031
264
+ siliconcompiler/tools/openroad/scripts/common/write_images.tcl,sha256=4SOSYfakxKk_UNPUDR5C89JSj0VDVb5dRu6sPjBPLqo,11270
262
265
  siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl,sha256=95p_XiRPA1PnofMTMUTesI4JniHnvB8f9_oANGRuC8M,692
263
266
  siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_extract.tcl,sha256=Aj9J_8aiOR1WqcQvdx99WyUDcN8RafxXwtrexcS5UcU,489
264
267
  siliconcompiler/tools/openroad/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -284,10 +287,10 @@ siliconcompiler/tools/sv2v/sv2v.py,sha256=23lP1FRk0Yc0nuQSdbURB0eXHz4BrCyeB-NpxS
284
287
  siliconcompiler/tools/template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
285
288
  siliconcompiler/tools/template/template.py,sha256=amTwsGC2rAqM0S0n34ThFaLCMgmiiCl50GSjpoZOaUo,3406
286
289
  siliconcompiler/tools/verilator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
287
- siliconcompiler/tools/verilator/compile.py,sha256=g6CXzJgyMglq8IGJ7Im9CyDHGPQw3t9jVbqp4Hpsbw0,6958
290
+ siliconcompiler/tools/verilator/compile.py,sha256=7A0Pkdhxf-wSOCsMzYP4z7DN6PafvPC_eCi3_pbJ5E4,7479
288
291
  siliconcompiler/tools/verilator/lint.py,sha256=Lp-PXk6kYtnemN2cMuvCyZxodDIDzLEmKE3__nGKD1s,520
289
292
  siliconcompiler/tools/verilator/parse.py,sha256=ZAYNgcK7wxRabW1mcgdGfmrcn6cLusPgK1X9vJkWUok,806
290
- siliconcompiler/tools/verilator/verilator.py,sha256=H3IPi04f8UdLXoEC-rNYeFcU_hSuBxGKJ9NslkOSlTY,6376
293
+ siliconcompiler/tools/verilator/verilator.py,sha256=h1spXwxJuRzavW_uRT6ZDEMGB9SaBZQwl2ZiURImy0M,6374
291
294
  siliconcompiler/tools/vivado/__init__.py,sha256=f3DdiwAnqqXZZMWp8AAzljLE2pp0Gqarhv9LxzP1ruE,115
292
295
  siliconcompiler/tools/vivado/bitstream.py,sha256=361b51W7S_0umzGx_Q7VaXFRHpmanrJiNZCXTS5sXkg,972
293
296
  siliconcompiler/tools/vivado/place.py,sha256=tvD4-pPeJ-pjptaytY7jTrbllYyYgsDv59NWPvH-eSU,844
@@ -329,7 +332,7 @@ siliconcompiler/tools/yosys/techmaps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
329
332
  siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v,sha256=M4T-ygiKmlsprl5eGGLaV5w6HVqlEepn0wlUDmOkapg,773
330
333
  siliconcompiler/tools/yosys/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
334
  siliconcompiler/tools/yosys/templates/abc.const,sha256=TAq9ThdLMYCJGrtToEU0gWcLuEtjE4Gk8huBbTm1v-I,116
332
- siliconcompiler/toolscripts/_tools.json,sha256=uF8eqlEFhHAdKrKaRJJDNm9_eGVihGP-qu4GvoIzE6I,3927
335
+ siliconcompiler/toolscripts/_tools.json,sha256=fpQI_5FICve7z4h_8VkbzAp3Y_aDAEpp75nf0f7agE4,4059
333
336
  siliconcompiler/toolscripts/_tools.py,sha256=P30KY_xbbjl8eHGsPAxDcAzWvJJpiL07ZfGZZDQbdR8,7174
334
337
  siliconcompiler/toolscripts/rhel8/install-chisel.sh,sha256=lPORZN7vlBX6sJSv01JOIiDE9-_7GcCZGA7EP5ri3MQ,525
335
338
  siliconcompiler/toolscripts/rhel8/install-ghdl.sh,sha256=xCLeEUuJVI_6PVEvnTwBsTWoEHiQg0TY3x-tJXfg6Zk,459
@@ -347,6 +350,7 @@ siliconcompiler/toolscripts/rhel8/install-xyce.sh,sha256=rVAt5gIDJNW6gCtuyuRN0VC
347
350
  siliconcompiler/toolscripts/rhel8/install-yosys.sh,sha256=zNqotSJPNRQUzj16GRhxujpRHPnc-7BOub1rJuSMy2c,641
348
351
  siliconcompiler/toolscripts/rhel9/install-chisel.sh,sha256=lPORZN7vlBX6sJSv01JOIiDE9-_7GcCZGA7EP5ri3MQ,525
349
352
  siliconcompiler/toolscripts/rhel9/install-ghdl.sh,sha256=lVBBvBOu4WInmZ4asSGObggjlDRslSN0MiQs3qPOHtU,469
353
+ siliconcompiler/toolscripts/rhel9/install-gtkwave.sh,sha256=dQa8nY6c2okYOHCkxi5FMJciIjmO-NdjxWH8CUyqiOY,882
350
354
  siliconcompiler/toolscripts/rhel9/install-icarus.sh,sha256=4N2Y2H01impqJy0k5aUDFrF9Z2oonGqPGeHCXey-2VM,771
351
355
  siliconcompiler/toolscripts/rhel9/install-klayout.sh,sha256=WRIUDQo62q8X_Ps6oxJ6_5ntHTAo-QC3P5f675qSTzA,397
352
356
  siliconcompiler/toolscripts/rhel9/install-magic.sh,sha256=ugiH7ybdxQggs0ucUHiVtCOO142XOh5OhOmmt_aZXRs,609
@@ -364,6 +368,7 @@ siliconcompiler/toolscripts/ubuntu20/install-bambu.sh,sha256=GfDqGuOJt_kUwgtVyiB
364
368
  siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh,sha256=MlylMZfFsZq74LnHWgWOiRQKxumm2wK5bZ1Z2A4jwn4,962
365
369
  siliconcompiler/toolscripts/ubuntu20/install-chisel.sh,sha256=lPORZN7vlBX6sJSv01JOIiDE9-_7GcCZGA7EP5ri3MQ,525
366
370
  siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh,sha256=BrvE2Y3VvUIH4U4lScMb2aRKx0TMEscynHswYUslY6U,467
371
+ siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh,sha256=HWMBTiLzWd9G4x8HnZwnID3qTO7TWRjKtdoO81cxSig,586
367
372
  siliconcompiler/toolscripts/ubuntu20/install-icarus.sh,sha256=KHIjKwwA2C9s5jkYzcWWifHpiSc-ewywjyqLk-giB0U,525
368
373
  siliconcompiler/toolscripts/ubuntu20/install-icepack.sh,sha256=Qb4_M7Pe8ho3XLlXziRyH0YC_fyiGGbdT1x14s-dZC0,668
369
374
  siliconcompiler/toolscripts/ubuntu20/install-klayout.sh,sha256=_g_yETpqGJchbWtV-Sne4ZrvGL3Km7UcR7OYfkZDaz4,781
@@ -386,6 +391,7 @@ siliconcompiler/toolscripts/ubuntu22/install-bambu.sh,sha256=ZQhExOWbLNghy_wmoFx
386
391
  siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh,sha256=MlylMZfFsZq74LnHWgWOiRQKxumm2wK5bZ1Z2A4jwn4,962
387
392
  siliconcompiler/toolscripts/ubuntu22/install-chisel.sh,sha256=lPORZN7vlBX6sJSv01JOIiDE9-_7GcCZGA7EP5ri3MQ,525
388
393
  siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh,sha256=BrvE2Y3VvUIH4U4lScMb2aRKx0TMEscynHswYUslY6U,467
394
+ siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh,sha256=HWMBTiLzWd9G4x8HnZwnID3qTO7TWRjKtdoO81cxSig,586
389
395
  siliconcompiler/toolscripts/ubuntu22/install-icarus.sh,sha256=KHIjKwwA2C9s5jkYzcWWifHpiSc-ewywjyqLk-giB0U,525
390
396
  siliconcompiler/toolscripts/ubuntu22/install-icepack.sh,sha256=PM7gT42Ew8mSE5G_AA_jl_9oL3M_qcvT92xDdFRJoZ0,661
391
397
  siliconcompiler/toolscripts/ubuntu22/install-klayout.sh,sha256=_g_yETpqGJchbWtV-Sne4ZrvGL3Km7UcR7OYfkZDaz4,781
@@ -408,6 +414,7 @@ siliconcompiler/toolscripts/ubuntu24/install-bambu.sh,sha256=ZQhExOWbLNghy_wmoFx
408
414
  siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh,sha256=MlylMZfFsZq74LnHWgWOiRQKxumm2wK5bZ1Z2A4jwn4,962
409
415
  siliconcompiler/toolscripts/ubuntu24/install-chisel.sh,sha256=lPORZN7vlBX6sJSv01JOIiDE9-_7GcCZGA7EP5ri3MQ,525
410
416
  siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh,sha256=BrvE2Y3VvUIH4U4lScMb2aRKx0TMEscynHswYUslY6U,467
417
+ siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh,sha256=F_eeWegI7RHlEnzwyGEE6jdrpNccd-z666xf2ufuuuo,615
411
418
  siliconcompiler/toolscripts/ubuntu24/install-icarus.sh,sha256=KHIjKwwA2C9s5jkYzcWWifHpiSc-ewywjyqLk-giB0U,525
412
419
  siliconcompiler/toolscripts/ubuntu24/install-icepack.sh,sha256=PM7gT42Ew8mSE5G_AA_jl_9oL3M_qcvT92xDdFRJoZ0,661
413
420
  siliconcompiler/toolscripts/ubuntu24/install-klayout.sh,sha256=f4l-Z86LAkjdo5NLq89ORfkjE0Mjygyp84VYi7gEWUU,906
@@ -428,10 +435,10 @@ siliconcompiler/toolscripts/ubuntu24/install-xyce.sh,sha256=33Iq99sLdiVWFl4zpD2h
428
435
  siliconcompiler/toolscripts/ubuntu24/install-yosys.sh,sha256=zpyt0MVI7tY8kGY2GIIZvWlXOXm0T7N9IMIZ18Oe26E,713
429
436
  siliconcompiler/utils/__init__.py,sha256=9tcYLpWLSbArmlF6qU0KPiFcziaWkzqlQTl6cOl5qpI,14260
430
437
  siliconcompiler/utils/asic.py,sha256=cMLs7dneSmh5BlHS0-bZ1tLUpvghTw__gNaUCMpyBds,4986
431
- siliconcompiler/utils/showtools.py,sha256=qc5HLqCQxUITdhp9rESf0w_blAkKVYL6JpkXQdrew00,1406
432
- siliconcompiler-0.29.1.dist-info/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
433
- siliconcompiler-0.29.1.dist-info/METADATA,sha256=4aIpaR_zTPyGLWmieWdKKd3EAmtAPYoLXqlnLI9euNk,11169
434
- siliconcompiler-0.29.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
435
- siliconcompiler-0.29.1.dist-info/entry_points.txt,sha256=asA4fgXLVcZtdoZ16bL4z8t229gnA6MxO_cFFlaBtGs,947
436
- siliconcompiler-0.29.1.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
437
- siliconcompiler-0.29.1.dist-info/RECORD,,
438
+ siliconcompiler/utils/showtools.py,sha256=-Ka2hoPDHD4yy5XkJQvEnv5NccAujwNGjQYfahPbW7g,1518
439
+ siliconcompiler-0.29.2.dist-info/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
440
+ siliconcompiler-0.29.2.dist-info/METADATA,sha256=ysB8fHzpHKb9gLsKihURZ2Zlw6iB2894Eibq2f7-B4I,11169
441
+ siliconcompiler-0.29.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
442
+ siliconcompiler-0.29.2.dist-info/entry_points.txt,sha256=asA4fgXLVcZtdoZ16bL4z8t229gnA6MxO_cFFlaBtGs,947
443
+ siliconcompiler-0.29.2.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
444
+ siliconcompiler-0.29.2.dist-info/RECORD,,