siliconcompiler 0.28.8__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 (122) 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/scheduler/send_messages.py +37 -33
  14. siliconcompiler/scheduler/validation/email_credentials.json +7 -0
  15. siliconcompiler/schema/schema_cfg.py +15 -3
  16. siliconcompiler/schema/schema_obj.py +16 -0
  17. siliconcompiler/sphinx_ext/dynamicgen.py +4 -3
  18. siliconcompiler/targets/fpgaflow_demo.py +6 -7
  19. siliconcompiler/targets/gf180_demo.py +3 -3
  20. siliconcompiler/templates/replay/requirements.txt +6 -0
  21. siliconcompiler/templates/replay/run.py.j2 +22 -0
  22. siliconcompiler/templates/replay/setup.sh +17 -0
  23. siliconcompiler/tools/_common/__init__.py +17 -3
  24. siliconcompiler/tools/_common/asic.py +10 -3
  25. siliconcompiler/tools/builtin/concatenate.py +1 -1
  26. siliconcompiler/tools/openroad/__init__.py +103 -0
  27. siliconcompiler/tools/openroad/{openroad.py → _apr.py} +413 -422
  28. siliconcompiler/tools/openroad/antenna_repair.py +78 -0
  29. siliconcompiler/tools/openroad/clock_tree_synthesis.py +64 -0
  30. siliconcompiler/tools/openroad/detailed_placement.py +59 -0
  31. siliconcompiler/tools/openroad/detailed_route.py +62 -0
  32. siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +52 -0
  33. siliconcompiler/tools/openroad/fillercell_insertion.py +58 -0
  34. siliconcompiler/tools/openroad/{dfm.py → fillmetal_insertion.py} +35 -19
  35. siliconcompiler/tools/openroad/global_placement.py +58 -0
  36. siliconcompiler/tools/openroad/global_route.py +63 -0
  37. siliconcompiler/tools/openroad/init_floorplan.py +103 -0
  38. siliconcompiler/tools/openroad/macro_placement.py +65 -0
  39. siliconcompiler/tools/openroad/metrics.py +23 -8
  40. siliconcompiler/tools/openroad/pin_placement.py +56 -0
  41. siliconcompiler/tools/openroad/power_grid.py +65 -0
  42. siliconcompiler/tools/openroad/rcx_bench.py +7 -4
  43. siliconcompiler/tools/openroad/rcx_extract.py +2 -1
  44. siliconcompiler/tools/openroad/rdlroute.py +4 -4
  45. siliconcompiler/tools/openroad/repair_design.py +59 -0
  46. siliconcompiler/tools/openroad/repair_timing.py +63 -0
  47. siliconcompiler/tools/openroad/screenshot.py +9 -20
  48. siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +44 -0
  49. siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +95 -0
  50. siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +51 -0
  51. siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +62 -0
  52. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +41 -0
  53. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +71 -0
  54. siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +55 -0
  55. siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +27 -0
  56. siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +36 -0
  57. siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +26 -0
  58. siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +61 -0
  59. siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +333 -0
  60. siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +123 -0
  61. siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +22 -0
  62. siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +41 -0
  63. siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +60 -0
  64. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +68 -0
  65. siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +83 -0
  66. siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +125 -0
  67. siliconcompiler/tools/openroad/scripts/common/debugging.tcl +28 -0
  68. siliconcompiler/tools/openroad/scripts/common/procs.tcl +675 -0
  69. siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +59 -0
  70. siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +20 -0
  71. siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +16 -0
  72. siliconcompiler/tools/openroad/scripts/common/reports.tcl +180 -0
  73. siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +18 -0
  74. siliconcompiler/tools/openroad/scripts/common/write_images.tcl +395 -0
  75. siliconcompiler/tools/openroad/scripts/{sc_rcx_bench.tcl → rcx/sc_rcx_bench.tcl} +5 -5
  76. siliconcompiler/tools/openroad/scripts/{sc_rcx_extract.tcl → rcx/sc_rcx_extract.tcl} +0 -0
  77. siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +5 -16
  78. siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +51 -51
  79. siliconcompiler/tools/openroad/scripts/sc_show.tcl +105 -0
  80. siliconcompiler/tools/openroad/show.py +28 -23
  81. siliconcompiler/tools/openroad/{export.py → write_data.py} +31 -26
  82. siliconcompiler/tools/opensta/__init__.py +1 -1
  83. siliconcompiler/tools/vivado/bitstream.py +8 -2
  84. siliconcompiler/tools/vivado/place.py +6 -2
  85. siliconcompiler/tools/vivado/route.py +6 -2
  86. siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +1 -1
  87. siliconcompiler/tools/vivado/scripts/sc_place.tcl +1 -1
  88. siliconcompiler/tools/vivado/scripts/sc_route.tcl +1 -1
  89. siliconcompiler/tools/vivado/scripts/sc_run.tcl +4 -2
  90. siliconcompiler/tools/vivado/syn_fpga.py +5 -1
  91. siliconcompiler/tools/vivado/vivado.py +26 -10
  92. siliconcompiler/tools/vpr/vpr.py +5 -0
  93. siliconcompiler/tools/yosys/syn_asic.py +7 -0
  94. siliconcompiler/tools/yosys/syn_asic.tcl +27 -6
  95. siliconcompiler/tools/yosys/syn_fpga.tcl +26 -18
  96. siliconcompiler/toolscripts/_tools.json +5 -5
  97. {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.29.0.dist-info}/METADATA +50 -48
  98. {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.29.0.dist-info}/RECORD +103 -76
  99. {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.29.0.dist-info}/WHEEL +1 -1
  100. siliconcompiler/tools/openroad/cts.py +0 -45
  101. siliconcompiler/tools/openroad/floorplan.py +0 -75
  102. siliconcompiler/tools/openroad/physyn.py +0 -27
  103. siliconcompiler/tools/openroad/place.py +0 -41
  104. siliconcompiler/tools/openroad/route.py +0 -45
  105. siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
  106. siliconcompiler/tools/openroad/scripts/sc_apr.tcl +0 -514
  107. siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -68
  108. siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +0 -22
  109. siliconcompiler/tools/openroad/scripts/sc_export.tcl +0 -100
  110. siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +0 -456
  111. siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +0 -1
  112. siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -6
  113. siliconcompiler/tools/openroad/scripts/sc_place.tcl +0 -84
  114. siliconcompiler/tools/openroad/scripts/sc_procs.tcl +0 -494
  115. siliconcompiler/tools/openroad/scripts/sc_report.tcl +0 -189
  116. siliconcompiler/tools/openroad/scripts/sc_route.tcl +0 -143
  117. siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -18
  118. siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +0 -393
  119. /siliconcompiler/tools/openroad/scripts/{sc_write.tcl → common/write_data.tcl} +0 -0
  120. {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.29.0.dist-info}/LICENSE +0 -0
  121. {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.29.0.dist-info}/entry_points.txt +0 -0
  122. {siliconcompiler-0.28.8.dist-info → siliconcompiler-0.29.0.dist-info}/top_level.txt +0 -0
@@ -67,36 +67,52 @@ def normalize_version(version):
67
67
 
68
68
 
69
69
  def _parse_qor_summary(chip, step, index):
70
- if not os.path.isfile('qor_summary.json'):
70
+ if not os.path.isfile('reports/qor_summary.json'):
71
71
  return
72
72
 
73
- with sc_open('qor_summary.json') as f:
73
+ with sc_open('reports/qor_summary.json') as f:
74
74
  data = json.load(f)
75
75
 
76
76
  # Data is organized as list of tasks that Vivado has completed, with
77
77
  # metrics associated with each. The tasks appear to be in chronological
78
78
  # order, so we pull metrics from the last one.
79
79
  task = data['Design QoR Summary'][-1]
80
- setup_wns = task['Wns(ns)']
81
- setup_tns = task['Tns(ns)']
82
- hold_wns = task['Whs(ns)']
83
- hold_tns = task['Ths(ns)']
80
+ setup_wns = None
81
+ for metric in ('Wns(ns)', 'WNS(ns)'):
82
+ if metric in task:
83
+ setup_wns = task[metric]
84
+ break
85
+ setup_tns = None
86
+ for metric in ('Tns(ns)', 'TNS(ns)'):
87
+ if metric in task:
88
+ setup_tns = task[metric]
89
+ break
90
+ hold_wns = None
91
+ for metric in ('Whs(ns)', 'WHS(ns)'):
92
+ if metric in task:
93
+ hold_wns = task[metric]
94
+ break
95
+ hold_tns = None
96
+ for metric in ('Ths(ns)', 'THS(ns)'):
97
+ if metric in task:
98
+ hold_tns = task[metric]
99
+ break
84
100
 
85
101
  if setup_wns:
86
102
  record_metric(chip, step, index, 'setupwns', setup_wns,
87
- 'qor_summary.json',
103
+ 'reports/qor_summary.json',
88
104
  source_unit='ns')
89
105
  if setup_tns:
90
106
  record_metric(chip, step, index, 'setuptns', setup_tns,
91
- 'qor_summary.json',
107
+ 'reports/qor_summary.json',
92
108
  source_unit='ns')
93
109
  if hold_wns:
94
110
  record_metric(chip, step, index, 'holdwns', hold_wns,
95
- 'qor_summary.json',
111
+ 'reports/qor_summary.json',
96
112
  source_unit='ns')
97
113
  if hold_tns:
98
114
  record_metric(chip, step, index, 'holdtns', hold_tns,
99
- 'qor_summary.json',
115
+ 'reports/qor_summary.json',
100
116
  source_unit='ns')
101
117
 
102
118
 
@@ -94,6 +94,11 @@ def runtime_options(chip):
94
94
 
95
95
  options.append(f"--device {device_code[0]}")
96
96
 
97
+ # Medium-term solution: VPR performs hash digest checks that
98
+ # fail if file paths are changed between steps. We wish to
99
+ # disable the digest checks to work around this
100
+ options.append("--verify_file_digests off")
101
+
97
102
  options.append(f"--write_block_usage {__block_file}")
98
103
  options.append("--outfile_prefix outputs/")
99
104
 
@@ -108,6 +108,13 @@ def setup_asic(chip):
108
108
  chip.add('tool', tool, 'task', task, 'require',
109
109
  ",".join(['library', mainlib, 'option', 'file', 'yosys_addermap']),
110
110
  step=step, index=index)
111
+ library_has_tbufmap = \
112
+ chip.valid('library', mainlib, 'option', 'file', 'yosys_tbufmap') and \
113
+ chip.get('library', mainlib, 'option', 'file', 'yosys_tbufmap')
114
+ if library_has_tbufmap:
115
+ chip.add('tool', tool, 'task', task, 'require',
116
+ ",".join(['library', mainlib, 'option', 'file', 'yosys_tbufmap']),
117
+ step=step, index=index)
111
118
 
112
119
  for var0, var1 in [('memory_libmap', 'memory_techmap')]:
113
120
  key0 = ['tool', tool, 'tak', task, 'file', var0]
@@ -120,7 +120,7 @@ if { [sc_cfg_tool_task_exists file memory_techmap] } {
120
120
  # Schema helper functions
121
121
  #########################
122
122
 
123
- proc has_tie_cell { type } {
123
+ proc sc_has_tie_cell { type } {
124
124
  upvar sc_cfg sc_cfg
125
125
  upvar sc_mainlib sc_mainlib
126
126
  upvar sc_tool sc_tool
@@ -131,7 +131,7 @@ proc has_tie_cell { type } {
131
131
  }]
132
132
  }
133
133
 
134
- proc get_tie_cell { type } {
134
+ proc sc_get_tie_cell { type } {
135
135
  upvar sc_cfg sc_cfg
136
136
  upvar sc_mainlib sc_mainlib
137
137
  upvar sc_tool sc_tool
@@ -209,6 +209,18 @@ yosys hierarchy -top $sc_design
209
209
  # Mark modules to keep from getting removed in flattening
210
210
  preserve_modules
211
211
 
212
+ # Handle tristate buffers
213
+ set sc_tbuf "false"
214
+ if {
215
+ [sc_cfg_exists library $sc_mainlib option file yosys_tbufmap] &&
216
+ [llength [sc_cfg_get library $sc_mainlib option file yosys_tbufmap]] != 0
217
+ } {
218
+ set sc_tbuf "true"
219
+
220
+ yosys tribuf
221
+ yosys stat
222
+ }
223
+
212
224
  set flatten_design [expr {
213
225
  [lindex [sc_cfg_tool_task_get var flatten] 0]
214
226
  == "true"
@@ -260,6 +272,15 @@ yosys opt -purge
260
272
  # Technology Mapping
261
273
  ########################################################
262
274
 
275
+ # Handle tristate buffers
276
+ if { $sc_tbuf == "true" } {
277
+ set sc_tbuf_techmap \
278
+ [lindex [sc_cfg_get library $sc_mainlib option file yosys_tbufmap] 0]
279
+ # Map tristate buffers
280
+ yosys techmap -map $sc_tbuf_techmap
281
+ post_techmap -fast
282
+ }
283
+
263
284
  if { [sc_cfg_tool_task_get var map_adders] == "true" } {
264
285
  set sc_adder_techmap \
265
286
  [lindex [sc_cfg_get library $sc_mainlib option {file} yosys_addermap] 0]
@@ -356,11 +377,11 @@ yosys splitnets
356
377
  yosys clean -purge
357
378
 
358
379
  set yosys_hilomap_args []
359
- if { [has_tie_cell low] } {
360
- lappend yosys_hilomap_args -locell {*}[get_tie_cell low]
380
+ if { [sc_has_tie_cell low] } {
381
+ lappend yosys_hilomap_args -locell {*}[sc_get_tie_cell low]
361
382
  }
362
- if { [has_tie_cell high] } {
363
- lappend yosys_hilomap_args -hicell {*}[get_tie_cell high]
383
+ if { [sc_has_tie_cell high] } {
384
+ lappend yosys_hilomap_args -hicell {*}[sc_get_tie_cell high]
364
385
  }
365
386
  if { [llength $yosys_hilomap_args] != 0 } {
366
387
  yosys hilomap -singleton {*}$yosys_hilomap_args
@@ -125,6 +125,30 @@ if { [string match {ice*} $sc_partname] } {
125
125
  yosys proc
126
126
  yosys flatten
127
127
 
128
+ # Note there are two possibilities for how macro mapping might be done:
129
+ # using the extract command (to pattern match user RTL against
130
+ # the techmap) or using the techmap command. The latter is better
131
+ # for mapping simple multipliers; the former is better (for now)
132
+ # for mapping more complex DSP blocks (MAC, pipelined blocks, etc).
133
+ # and is also more easily extensible to arbitrary hard macros.
134
+ # Run separate passes of both to get best of both worlds
135
+
136
+ # An extract pass needs to happen prior to other optimizations,
137
+ # otherwise yosys can transform its internal model into something
138
+ # that doesn't match the patterns defined in the extract library
139
+ if { [sc_cfg_exists fpga $sc_partname file yosys_extractlib] } {
140
+ set sc_syn_extractlibs \
141
+ [sc_cfg_get fpga $sc_partname file yosys_extractlib]
142
+
143
+ foreach extractlib $sc_syn_extractlibs {
144
+ yosys log "Run extract with $extractlib"
145
+ yosys extract -map $extractlib
146
+ }
147
+ }
148
+
149
+ # Other hard macro passes can happen after the generic optimization
150
+ # passes take place.
151
+
128
152
  #Generic optimization passes; this is a fusion of the VTR reference
129
153
  #flow and the Yosys synth_ice40 flow
130
154
  yosys opt_expr
@@ -141,28 +165,12 @@ if { [string match {ice*} $sc_partname] } {
141
165
  yosys opt_expr
142
166
  yosys opt_clean
143
167
 
168
+ # Here is a remaining customization pass for DSP tech mapping
169
+
144
170
  #Map DSP blocks before doing anything else,
145
171
  #so that we don't convert any math blocks
146
172
  #into other primitives
147
173
 
148
- # Note there are two possibilities for how mapping might be done:
149
- # using the extract command (to pattern match user RTL against
150
- # the techmap) or using the techmap command. The latter is better
151
- # for mapping simple multipliers; the former is better (for now)
152
- # for mapping more complex DSP blocks (MAC, pipelined blocks, etc).
153
- # and also more extensible to arbitrary hard macros. Run separate
154
- # passes of both to get best of both worlds
155
-
156
- if { [sc_cfg_exists fpga $sc_partname file yosys_extractlib] } {
157
- set sc_syn_extractlibs \
158
- [sc_cfg_get fpga $sc_partname file yosys_extractlib]
159
-
160
- foreach extractlib $sc_syn_extractlibs {
161
- yosys log "Run extract with $extractlib"
162
- yosys extract -map $extractlib
163
- }
164
- }
165
-
166
174
  if { [sc_cfg_exists fpga $sc_partname file yosys_dsp_techmap] } {
167
175
  set sc_syn_dsp_library \
168
176
  [sc_cfg_get fpga $sc_partname file yosys_dsp_techmap]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "openroad": {
3
3
  "git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
4
- "git-commit": "c3e802e73aa2ca2974874e487ae481fc4f2cb8c3",
4
+ "git-commit": "8495fc80c78f4ab98bebd8cf2050fa63bc0b93c1",
5
5
  "docker-cmds": [
6
6
  "# Remove OR-Tools files",
7
7
  "RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
@@ -36,7 +36,7 @@
36
36
  "auto-update": false
37
37
  },
38
38
  "klayout": {
39
- "version": "0.29.8",
39
+ "version": "0.29.10",
40
40
  "git-url": "https://github.com/KLayout/klayout.git",
41
41
  "docker-skip": true,
42
42
  "auto-update": true,
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "sv2v": {
47
47
  "git-url": "https://github.com/zachjs/sv2v.git",
48
- "git-commit": "7808819c48c167978aeb5ef34c6e5ed416e90875",
48
+ "git-commit": "5a636724d783edd403ac4618d6cc4def72e39cbc",
49
49
  "auto-update": true
50
50
  },
51
51
  "verilator": {
@@ -66,7 +66,7 @@
66
66
  },
67
67
  "vpr": {
68
68
  "git-url": "https://github.com/verilog-to-routing/vtr-verilog-to-routing.git",
69
- "git-commit": "9dd5ff66e3ab43238f5a4cb14cafe17bc4afe527",
69
+ "git-commit": "de31f094aa4f894a5e6e0dc32c66365f4b341190",
70
70
  "auto-update": false
71
71
  },
72
72
  "icepack": {
@@ -91,7 +91,7 @@
91
91
  },
92
92
  "yosys": {
93
93
  "git-url": "https://github.com/YosysHQ/yosys.git",
94
- "git-commit": "0.47",
94
+ "git-commit": "v0.48",
95
95
  "version-prefix": "",
96
96
  "auto-update": true
97
97
  },
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siliconcompiler
3
- Version: 0.28.8
3
+ Version: 0.29.0
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
@@ -25,55 +25,57 @@ Classifier: Topic :: Software Development :: Build Tools
25
25
  Requires-Python: >=3.8
26
26
  Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
- Requires-Dist: requests ==2.32.3
29
- Requires-Dist: PyYAML ==6.0.2
30
- Requires-Dist: pandas >=1.1.5
31
- Requires-Dist: Jinja2 >=2.11.3
32
- Requires-Dist: graphviz ==0.20.3
33
- Requires-Dist: distro ==1.9.0
34
- Requires-Dist: packaging <24,>=21.3
35
- Requires-Dist: psutil >=5.8.0
36
- Requires-Dist: GitPython ==3.1.43
37
- Requires-Dist: lambdapdk >=0.1.38
38
- Requires-Dist: PyGithub ==2.5.0
39
- Requires-Dist: urllib3 >=1.26.0
40
- Requires-Dist: fasteners ==0.19
41
- Requires-Dist: fastjsonschema ==2.20.0
42
- Requires-Dist: docker ==7.1.0
43
- Requires-Dist: sc-surelog ==1.84.1
44
- Requires-Dist: orjson ==3.10.11
45
- Requires-Dist: streamlit ==1.40.1 ; python_full_version != "3.9.7"
46
- Requires-Dist: streamlit-agraph ==0.0.45 ; python_full_version != "3.9.7"
47
- Requires-Dist: streamlit-antd-components ==0.3.2 ; python_full_version != "3.9.7"
48
- Requires-Dist: streamlit-javascript ==0.1.5 ; python_full_version != "3.9.7"
49
- Requires-Dist: streamlit-autorefresh ==1.0.1 ; python_full_version != "3.9.7"
50
- Requires-Dist: importlib-metadata ; python_version < "3.10"
51
- Requires-Dist: aiohttp ==3.10.11 ; python_version <= "3.8"
52
- Requires-Dist: Pillow ==10.4.0 ; python_version <= "3.8"
53
- Requires-Dist: aiohttp ==3.11.2 ; python_version >= "3.9"
54
- Requires-Dist: Pillow ==11.0.0 ; python_version >= "3.9"
28
+ Requires-Dist: aiohttp==3.10.11; python_version <= "3.8"
29
+ Requires-Dist: aiohttp==3.11.10; python_version >= "3.9"
30
+ Requires-Dist: requests==2.32.3
31
+ Requires-Dist: PyYAML==6.0.2
32
+ Requires-Dist: pandas>=1.1.5
33
+ Requires-Dist: Jinja2>=2.11.3
34
+ Requires-Dist: graphviz==0.20.3
35
+ Requires-Dist: distro==1.9.0
36
+ Requires-Dist: packaging<25,>=21.3
37
+ Requires-Dist: psutil>=5.8.0
38
+ Requires-Dist: Pillow==10.4.0; python_version <= "3.8"
39
+ Requires-Dist: Pillow==11.0.0; python_version >= "3.9"
40
+ Requires-Dist: GitPython==3.1.43
41
+ Requires-Dist: lambdapdk>=0.1.40
42
+ Requires-Dist: PyGithub==2.5.0
43
+ Requires-Dist: urllib3>=1.26.0
44
+ Requires-Dist: fasteners==0.19
45
+ Requires-Dist: fastjsonschema==2.21.1
46
+ Requires-Dist: docker==7.1.0
47
+ Requires-Dist: importlib_metadata; python_version < "3.10"
48
+ Requires-Dist: sc-surelog==1.84.1
49
+ Requires-Dist: orjson==3.10.12
50
+ Requires-Dist: streamlit==1.40.1; python_version <= "3.8"
51
+ Requires-Dist: streamlit==1.40.2; python_version >= "3.9" and python_full_version != "3.9.7"
52
+ Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
53
+ Requires-Dist: streamlit-antd-components==0.3.2; python_full_version != "3.9.7"
54
+ Requires-Dist: streamlit_javascript==0.1.5; python_full_version != "3.9.7"
55
+ Requires-Dist: streamlit-autorefresh==1.0.1; python_full_version != "3.9.7"
56
+ Provides-Extra: test
57
+ Requires-Dist: pytest==8.3.4; extra == "test"
58
+ Requires-Dist: pytest-xdist==3.6.1; extra == "test"
59
+ Requires-Dist: pytest-timeout==2.3.1; extra == "test"
60
+ Requires-Dist: pytest-asyncio==0.24.0; extra == "test"
61
+ Requires-Dist: pytest-cov==5.0.0; python_version <= "3.8" and extra == "test"
62
+ Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "test"
63
+ Requires-Dist: responses==0.25.3; extra == "test"
64
+ Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
65
+ Provides-Extra: lint
66
+ Requires-Dist: flake8==7.1.1; extra == "lint"
67
+ Requires-Dist: tclint==0.5.0; extra == "lint"
68
+ Requires-Dist: codespell==2.3.0; extra == "lint"
55
69
  Provides-Extra: docs
56
- Requires-Dist: Sphinx ==8.1.3 ; extra == 'docs'
57
- Requires-Dist: pip-licenses ==5.0.0 ; extra == 'docs'
58
- Requires-Dist: pydata-sphinx-theme ==0.16.0 ; extra == 'docs'
59
- Requires-Dist: sc-leflib >=0.2.0 ; extra == 'docs'
60
- Provides-Extra: examples
61
- Requires-Dist: migen ==0.9.2 ; extra == 'examples'
62
- Requires-Dist: lambdalib ==0.3.1 ; extra == 'examples'
70
+ Requires-Dist: Sphinx==8.1.3; extra == "docs"
71
+ Requires-Dist: pip-licenses==5.0.0; extra == "docs"
72
+ Requires-Dist: pydata-sphinx-theme==0.16.0; extra == "docs"
73
+ Requires-Dist: sc-leflib>=0.2.0; extra == "docs"
63
74
  Provides-Extra: profile
64
- Requires-Dist: gprof2dot ==2024.6.6 ; extra == 'profile'
65
- Provides-Extra: test
66
- Requires-Dist: pytest ==8.3.3 ; extra == 'test'
67
- Requires-Dist: pytest-xdist ==3.6.1 ; extra == 'test'
68
- Requires-Dist: pytest-timeout ==2.3.1 ; extra == 'test'
69
- Requires-Dist: pytest-asyncio ==0.24.0 ; extra == 'test'
70
- Requires-Dist: responses ==0.25.3 ; extra == 'test'
71
- Requires-Dist: PyVirtualDisplay ==3.0 ; extra == 'test'
72
- Requires-Dist: flake8 ==7.1.1 ; extra == 'test'
73
- Requires-Dist: tclint ==0.4.2 ; extra == 'test'
74
- Requires-Dist: codespell ==2.3.0 ; extra == 'test'
75
- Requires-Dist: pytest-cov ==5.0.0 ; (python_version <= "3.8") and extra == 'test'
76
- Requires-Dist: pytest-cov ==6.0.0 ; (python_version >= "3.9") and extra == 'test'
75
+ Requires-Dist: gprof2dot==2024.6.6; extra == "profile"
76
+ Provides-Extra: examples
77
+ Requires-Dist: migen==0.9.2; extra == "examples"
78
+ Requires-Dist: lambdalib==0.3.2; extra == "examples"
77
79
 
78
80
  ![SiliconCompiler](https://raw.githubusercontent.com/siliconcompiler/siliconcompiler/main/docs/_static/sc_logo_with_text.png)
79
81