siliconcompiler 0.32.3__py3-none-any.whl → 0.33.1__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 (280) hide show
  1. siliconcompiler/__init__.py +19 -2
  2. siliconcompiler/_common.py +5 -0
  3. siliconcompiler/_metadata.py +1 -1
  4. siliconcompiler/apps/sc.py +2 -2
  5. siliconcompiler/apps/sc_install.py +10 -3
  6. siliconcompiler/apps/sc_issue.py +1 -1
  7. siliconcompiler/apps/sc_remote.py +10 -5
  8. siliconcompiler/apps/sc_show.py +2 -2
  9. siliconcompiler/apps/utils/replay.py +5 -3
  10. siliconcompiler/asic.py +120 -0
  11. siliconcompiler/checklist.py +150 -0
  12. siliconcompiler/core.py +299 -299
  13. siliconcompiler/flowgraph.py +803 -515
  14. siliconcompiler/fpga.py +84 -0
  15. siliconcompiler/metric.py +479 -0
  16. siliconcompiler/optimizer/vizier.py +2 -3
  17. siliconcompiler/package/__init__.py +29 -6
  18. siliconcompiler/pdk.py +415 -0
  19. siliconcompiler/record.py +453 -0
  20. siliconcompiler/remote/client.py +15 -5
  21. siliconcompiler/remote/schema.py +116 -112
  22. siliconcompiler/remote/server.py +9 -6
  23. siliconcompiler/report/dashboard/cli/__init__.py +14 -721
  24. siliconcompiler/report/dashboard/cli/board.py +899 -0
  25. siliconcompiler/report/dashboard/web/__init__.py +10 -10
  26. siliconcompiler/report/dashboard/web/components/__init__.py +5 -4
  27. siliconcompiler/report/dashboard/web/components/flowgraph.py +3 -3
  28. siliconcompiler/report/dashboard/web/components/graph.py +6 -3
  29. siliconcompiler/report/dashboard/web/state.py +1 -1
  30. siliconcompiler/report/dashboard/web/utils/__init__.py +4 -3
  31. siliconcompiler/report/html_report.py +2 -3
  32. siliconcompiler/report/report.py +22 -11
  33. siliconcompiler/report/summary_image.py +1 -1
  34. siliconcompiler/report/summary_table.py +3 -3
  35. siliconcompiler/report/utils.py +21 -14
  36. siliconcompiler/scheduler/__init__.py +234 -1206
  37. siliconcompiler/scheduler/run_node.py +2 -1
  38. siliconcompiler/scheduler/send_messages.py +11 -5
  39. siliconcompiler/scheduler/slurm.py +11 -44
  40. siliconcompiler/scheduler/taskscheduler.py +320 -0
  41. siliconcompiler/schema/__init__.py +19 -2
  42. siliconcompiler/schema/baseschema.py +493 -0
  43. siliconcompiler/schema/cmdlineschema.py +250 -0
  44. siliconcompiler/{sphinx_ext → schema/docs}/__init__.py +3 -1
  45. siliconcompiler/{sphinx_ext → schema/docs}/dynamicgen.py +63 -81
  46. siliconcompiler/{sphinx_ext → schema/docs}/schemagen.py +73 -85
  47. siliconcompiler/{sphinx_ext → schema/docs}/utils.py +12 -13
  48. siliconcompiler/schema/editableschema.py +136 -0
  49. siliconcompiler/schema/journalingschema.py +238 -0
  50. siliconcompiler/schema/namedschema.py +41 -0
  51. siliconcompiler/schema/packageschema.py +101 -0
  52. siliconcompiler/schema/parameter.py +791 -0
  53. siliconcompiler/schema/parametertype.py +323 -0
  54. siliconcompiler/schema/parametervalue.py +736 -0
  55. siliconcompiler/schema/safeschema.py +37 -0
  56. siliconcompiler/schema/schema_cfg.py +109 -1789
  57. siliconcompiler/schema/utils.py +5 -68
  58. siliconcompiler/schema_obj.py +119 -0
  59. siliconcompiler/tool.py +1416 -0
  60. siliconcompiler/tools/_common/__init__.py +6 -10
  61. siliconcompiler/tools/_common/asic.py +5 -5
  62. siliconcompiler/tools/_common/sdc/sc_constraints.sdc +1 -1
  63. siliconcompiler/tools/bluespec/convert.py +9 -8
  64. siliconcompiler/tools/builtin/_common.py +9 -2
  65. siliconcompiler/tools/builtin/concatenate.py +7 -3
  66. siliconcompiler/tools/builtin/minimum.py +7 -2
  67. siliconcompiler/tools/builtin/mux.py +8 -2
  68. siliconcompiler/tools/builtin/nop.py +7 -2
  69. siliconcompiler/tools/builtin/verify.py +11 -5
  70. siliconcompiler/tools/chisel/convert.py +10 -10
  71. siliconcompiler/tools/genfasm/bitstream.py +3 -3
  72. siliconcompiler/tools/ghdl/convert.py +1 -1
  73. siliconcompiler/tools/icarus/compile.py +4 -4
  74. siliconcompiler/tools/icepack/bitstream.py +6 -1
  75. siliconcompiler/tools/klayout/convert_drc_db.py +5 -0
  76. siliconcompiler/tools/klayout/drc.py +2 -2
  77. siliconcompiler/tools/klayout/klayout_export.py +0 -1
  78. siliconcompiler/tools/klayout/klayout_show.py +6 -6
  79. siliconcompiler/tools/klayout/klayout_utils.py +15 -22
  80. siliconcompiler/tools/netgen/count_lvs.py +2 -2
  81. siliconcompiler/tools/netgen/lvs.py +1 -1
  82. siliconcompiler/tools/nextpnr/apr.py +6 -1
  83. siliconcompiler/tools/nextpnr/nextpnr.py +4 -4
  84. siliconcompiler/tools/openroad/_apr.py +15 -2
  85. siliconcompiler/tools/openroad/rdlroute.py +3 -3
  86. siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +1 -1
  87. siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +5 -5
  88. siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +2 -2
  89. siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +2 -2
  90. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +2 -2
  91. siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +2 -2
  92. siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +2 -2
  93. siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +2 -2
  94. siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +2 -2
  95. siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +2 -2
  96. siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +2 -2
  97. siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +3 -9
  98. siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +3 -3
  99. siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +2 -2
  100. siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +2 -2
  101. siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +2 -2
  102. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +2 -2
  103. siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +2 -2
  104. siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +2 -2
  105. siliconcompiler/tools/openroad/scripts/common/procs.tcl +75 -1
  106. siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +1 -7
  107. siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +2 -2
  108. siliconcompiler/tools/openroad/scripts/common/write_images.tcl +28 -3
  109. siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +1 -1
  110. siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +3 -3
  111. siliconcompiler/tools/openroad/scripts/sc_show.tcl +6 -6
  112. siliconcompiler/tools/opensta/scripts/sc_timing.tcl +10 -0
  113. siliconcompiler/tools/opensta/timing.py +11 -0
  114. siliconcompiler/tools/slang/__init__.py +13 -13
  115. siliconcompiler/tools/slang/elaborate.py +6 -6
  116. siliconcompiler/tools/slang/lint.py +1 -3
  117. siliconcompiler/tools/surelog/parse.py +4 -4
  118. siliconcompiler/tools/sv2v/convert.py +20 -3
  119. siliconcompiler/tools/verilator/compile.py +2 -2
  120. siliconcompiler/tools/verilator/verilator.py +3 -3
  121. siliconcompiler/tools/vpr/_xml_constraint.py +8 -8
  122. siliconcompiler/tools/vpr/place.py +1 -1
  123. siliconcompiler/tools/vpr/route.py +4 -4
  124. siliconcompiler/tools/vpr/screenshot.py +1 -1
  125. siliconcompiler/tools/vpr/show.py +5 -5
  126. siliconcompiler/tools/vpr/vpr.py +24 -24
  127. siliconcompiler/tools/xdm/convert.py +2 -2
  128. siliconcompiler/tools/xyce/simulate.py +1 -1
  129. siliconcompiler/tools/yosys/prepareLib.py +2 -2
  130. siliconcompiler/tools/yosys/sc_synth_asic.tcl +111 -63
  131. siliconcompiler/tools/yosys/screenshot.py +1 -1
  132. siliconcompiler/tools/yosys/syn_asic.py +7 -7
  133. siliconcompiler/toolscripts/_tools.json +12 -10
  134. siliconcompiler/toolscripts/rhel8/install-chisel.sh +9 -2
  135. siliconcompiler/toolscripts/rhel8/install-icarus.sh +10 -3
  136. siliconcompiler/toolscripts/rhel8/install-klayout.sh +8 -1
  137. siliconcompiler/toolscripts/rhel8/install-magic.sh +9 -2
  138. siliconcompiler/toolscripts/rhel8/install-montage.sh +1 -1
  139. siliconcompiler/toolscripts/rhel8/install-netgen.sh +9 -2
  140. siliconcompiler/toolscripts/rhel8/install-slang.sh +11 -4
  141. siliconcompiler/toolscripts/rhel8/install-surelog.sh +9 -2
  142. siliconcompiler/toolscripts/rhel8/install-sv2v.sh +11 -4
  143. siliconcompiler/toolscripts/rhel8/install-verible.sh +11 -3
  144. siliconcompiler/toolscripts/rhel8/install-verilator.sh +10 -3
  145. siliconcompiler/toolscripts/rhel8/install-xyce.sh +15 -10
  146. siliconcompiler/toolscripts/rhel9/install-chisel.sh +9 -2
  147. siliconcompiler/toolscripts/rhel9/install-ghdl.sh +9 -2
  148. siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +10 -3
  149. siliconcompiler/toolscripts/rhel9/install-icarus.sh +10 -3
  150. siliconcompiler/toolscripts/rhel9/install-klayout.sh +8 -1
  151. siliconcompiler/toolscripts/rhel9/install-magic.sh +9 -2
  152. siliconcompiler/toolscripts/rhel9/install-montage.sh +1 -1
  153. siliconcompiler/toolscripts/rhel9/install-netgen.sh +9 -2
  154. siliconcompiler/toolscripts/rhel9/install-openroad.sh +16 -3
  155. siliconcompiler/toolscripts/rhel9/install-opensta.sh +17 -5
  156. siliconcompiler/toolscripts/rhel9/install-slang.sh +11 -4
  157. siliconcompiler/toolscripts/rhel9/install-surelog.sh +9 -2
  158. siliconcompiler/toolscripts/rhel9/install-sv2v.sh +11 -4
  159. siliconcompiler/toolscripts/rhel9/install-verible.sh +11 -3
  160. siliconcompiler/toolscripts/rhel9/install-verilator.sh +10 -3
  161. siliconcompiler/toolscripts/rhel9/install-vpr.sh +9 -2
  162. siliconcompiler/toolscripts/rhel9/install-xdm.sh +10 -2
  163. siliconcompiler/toolscripts/rhel9/install-xyce.sh +15 -10
  164. siliconcompiler/toolscripts/rhel9/install-yosys-moosic.sh +9 -2
  165. siliconcompiler/toolscripts/rhel9/install-yosys-parmys.sh +10 -3
  166. siliconcompiler/toolscripts/rhel9/install-yosys-slang.sh +10 -2
  167. siliconcompiler/toolscripts/rhel9/install-yosys.sh +9 -2
  168. siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +10 -2
  169. siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +10 -3
  170. siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +9 -2
  171. siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +9 -2
  172. siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +9 -2
  173. siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +9 -2
  174. siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +9 -2
  175. siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +8 -1
  176. siliconcompiler/toolscripts/ubuntu20/install-magic.sh +9 -2
  177. siliconcompiler/toolscripts/ubuntu20/install-montage.sh +1 -1
  178. siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +9 -2
  179. siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +9 -2
  180. siliconcompiler/toolscripts/ubuntu20/install-openroad.sh +16 -3
  181. siliconcompiler/toolscripts/ubuntu20/install-opensta.sh +16 -5
  182. siliconcompiler/toolscripts/ubuntu20/install-slang.sh +11 -4
  183. siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +9 -2
  184. siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +10 -2
  185. siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +11 -4
  186. siliconcompiler/toolscripts/ubuntu20/install-verible.sh +11 -3
  187. siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +9 -2
  188. siliconcompiler/toolscripts/ubuntu20/install-xdm.sh +10 -2
  189. siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +13 -8
  190. siliconcompiler/toolscripts/ubuntu20/install-yosys-moosic.sh +9 -2
  191. siliconcompiler/toolscripts/ubuntu20/install-yosys.sh +9 -2
  192. siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +10 -2
  193. siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +10 -3
  194. siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +9 -2
  195. siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +9 -2
  196. siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +9 -2
  197. siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +9 -2
  198. siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +9 -2
  199. siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +8 -1
  200. siliconcompiler/toolscripts/ubuntu22/install-magic.sh +9 -2
  201. siliconcompiler/toolscripts/ubuntu22/install-montage.sh +1 -1
  202. siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +9 -2
  203. siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +9 -2
  204. siliconcompiler/toolscripts/ubuntu22/install-openroad.sh +16 -3
  205. siliconcompiler/toolscripts/ubuntu22/install-opensta.sh +17 -5
  206. siliconcompiler/toolscripts/ubuntu22/install-slang.sh +11 -4
  207. siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +9 -2
  208. siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +10 -2
  209. siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +11 -4
  210. siliconcompiler/toolscripts/ubuntu22/install-verible.sh +11 -3
  211. siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +9 -2
  212. siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +9 -4
  213. siliconcompiler/toolscripts/ubuntu22/install-xdm.sh +10 -2
  214. siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +13 -8
  215. siliconcompiler/toolscripts/ubuntu22/install-yosys-moosic.sh +9 -2
  216. siliconcompiler/toolscripts/ubuntu22/install-yosys-parmys.sh +10 -3
  217. siliconcompiler/toolscripts/ubuntu22/install-yosys-slang.sh +10 -2
  218. siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +9 -2
  219. siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +12 -4
  220. siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +10 -3
  221. siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +9 -2
  222. siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +9 -2
  223. siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +9 -2
  224. siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +9 -2
  225. siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +9 -2
  226. siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +8 -1
  227. siliconcompiler/toolscripts/ubuntu24/install-magic.sh +9 -2
  228. siliconcompiler/toolscripts/ubuntu24/install-montage.sh +1 -1
  229. siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +9 -2
  230. siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +9 -2
  231. siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +16 -3
  232. siliconcompiler/toolscripts/ubuntu24/install-opensta.sh +17 -5
  233. siliconcompiler/toolscripts/ubuntu24/install-slang.sh +11 -4
  234. siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +9 -2
  235. siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +10 -2
  236. siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +11 -4
  237. siliconcompiler/toolscripts/ubuntu24/install-verible.sh +11 -3
  238. siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +9 -2
  239. siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +9 -4
  240. siliconcompiler/toolscripts/ubuntu24/install-xdm.sh +10 -2
  241. siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +13 -8
  242. siliconcompiler/toolscripts/ubuntu24/install-yosys-moosic.sh +9 -2
  243. siliconcompiler/toolscripts/ubuntu24/install-yosys-parmys.sh +10 -3
  244. siliconcompiler/toolscripts/ubuntu24/install-yosys-slang.sh +10 -2
  245. siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +9 -2
  246. siliconcompiler/utils/__init__.py +19 -112
  247. siliconcompiler/utils/flowgraph.py +244 -0
  248. siliconcompiler/{issue.py → utils/issue.py} +18 -25
  249. siliconcompiler/utils/logging.py +3 -4
  250. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/METADATA +9 -8
  251. siliconcompiler-0.33.1.dist-info/RECORD +488 -0
  252. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/WHEEL +1 -1
  253. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/entry_points.txt +8 -8
  254. siliconcompiler/schema/schema_obj.py +0 -1936
  255. siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +0 -29
  256. siliconcompiler/toolscripts/ubuntu20/install-yosys-parmys.sh +0 -61
  257. siliconcompiler-0.32.3.dist-info/RECORD +0 -470
  258. /siliconcompiler/{templates → data/templates}/__init__.py +0 -0
  259. /siliconcompiler/{templates → data/templates}/email/__init__.py +0 -0
  260. /siliconcompiler/{templates → data/templates}/email/general.j2 +0 -0
  261. /siliconcompiler/{templates → data/templates}/email/summary.j2 +0 -0
  262. /siliconcompiler/{templates → data/templates}/issue/README.txt +0 -0
  263. /siliconcompiler/{templates → data/templates}/issue/__init__.py +0 -0
  264. /siliconcompiler/{templates → data/templates}/issue/run.sh +0 -0
  265. /siliconcompiler/{templates → data/templates}/replay/replay.py.j2 +0 -0
  266. /siliconcompiler/{templates → data/templates}/replay/replay.sh.j2 +0 -0
  267. /siliconcompiler/{templates → data/templates}/replay/requirements.txt +0 -0
  268. /siliconcompiler/{templates → data/templates}/replay/setup.sh +0 -0
  269. /siliconcompiler/{templates → data/templates}/report/__init__.py +0 -0
  270. /siliconcompiler/{templates → data/templates}/report/bootstrap.min.css +0 -0
  271. /siliconcompiler/{templates → data/templates}/report/bootstrap.min.js +0 -0
  272. /siliconcompiler/{templates → data/templates}/report/bootstrap_LICENSE.md +0 -0
  273. /siliconcompiler/{templates → data/templates}/report/sc_report.j2 +0 -0
  274. /siliconcompiler/{templates → data/templates}/slurm/__init__.py +0 -0
  275. /siliconcompiler/{templates → data/templates}/slurm/run.sh +0 -0
  276. /siliconcompiler/{templates → data/templates}/tcl/__init__.py +0 -0
  277. /siliconcompiler/{templates → data/templates}/tcl/manifest.tcl.j2 +0 -0
  278. /siliconcompiler/{units.py → utils/units.py} +0 -0
  279. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/licenses/LICENSE +0 -0
  280. {siliconcompiler-0.32.3.dist-info → siliconcompiler-0.33.1.dist-info}/top_level.txt +0 -0
@@ -70,6 +70,17 @@ def setup(chip):
70
70
  chip.add('tool', tool, 'task', task, 'require', f'constraint,timing,{scenario},file',
71
71
  step=step, index=index)
72
72
 
73
+ # Add the SPEF or SDF files as inputs if provided.
74
+ spef_files = [f for f in input_provides(chip, step, index) if f.endswith(".spef")]
75
+ sdf_files = [f for f in input_provides(chip, step, index) if f.endswith(".sdf")]
76
+ if spef_files and sdf_files:
77
+ # If both SPEF and SDF files are provided, only use the SPEF files.
78
+ chip.add('tool', tool, 'task', task, 'input', spef_files, step=step, index=index)
79
+ elif spef_files:
80
+ chip.add('tool', tool, 'task', task, 'input', spef_files, step=step, index=index)
81
+ elif sdf_files:
82
+ chip.add('tool', tool, 'task', task, 'input', sdf_files, step=step, index=index)
83
+
73
84
  add_common_file(chip, 'opensta_generic_sdc', 'sdc/sc_constraints.sdc')
74
85
 
75
86
 
@@ -70,38 +70,38 @@ def common_runtime_options(chip):
70
70
  'param'])
71
71
 
72
72
  if opts['libext']:
73
- options.append(f'--libext {",".join(opts["libext"])}')
73
+ options.extend(['--libext', f'{",".join(opts["libext"])}'])
74
74
 
75
75
  #####################
76
76
  # Library directories
77
77
  #####################
78
78
  if opts['ydir']:
79
- options.append(f'-y {",".join(opts["ydir"])}')
79
+ options.extend(['-y', f'{",".join(opts["ydir"])}'])
80
80
 
81
81
  #####################
82
82
  # Library files
83
83
  #####################
84
84
  if opts['vlib']:
85
- options.append(f'-libfile {",".join(opts["vlib"])}')
85
+ options.extend(['-libfile', f'{",".join(opts["vlib"])}'])
86
86
 
87
87
  #####################
88
88
  # Include paths
89
89
  #####################
90
90
  if opts['idir']:
91
- options.append(f'--include-directory {",".join(opts["idir"])}')
91
+ options.extend(['--include-directory', f'{",".join(opts["idir"])}'])
92
92
 
93
93
  #######################
94
94
  # Variable Definitions
95
95
  #######################
96
96
  for value in opts['define']:
97
- options.append('-D ' + value)
97
+ options.extend(['-D', value])
98
98
 
99
99
  #######################
100
100
  # Command files
101
101
  #######################
102
102
  cmdfiles = get_input_files(chip, 'input', 'cmdfile', 'f')
103
103
  if cmdfiles:
104
- options.append(f'-F {",".join(cmdfiles)}')
104
+ options.extend(['-F', f'{",".join(cmdfiles)}'])
105
105
 
106
106
  #######################
107
107
  # Sources
@@ -114,7 +114,7 @@ def common_runtime_options(chip):
114
114
  #######################
115
115
  # Top Module
116
116
  #######################
117
- options.append('--top ' + chip.top(step, index))
117
+ options.extend(['--top', chip.top(step, index)])
118
118
 
119
119
  ###############################
120
120
  # Parameters (top module only)
@@ -122,7 +122,7 @@ def common_runtime_options(chip):
122
122
  # Set up user-provided parameters to ensure we elaborate the correct modules
123
123
  for param, value in opts['param']:
124
124
  value = value.replace('"', '\\"')
125
- options.append(f'-G {param}={value}')
125
+ options.extend(['-G', f'{param}={value}'])
126
126
 
127
127
  return options
128
128
 
@@ -133,11 +133,11 @@ def _get_driver(chip, options_func, ignored_diagnotics=None):
133
133
 
134
134
  options = options_func(chip)
135
135
 
136
- parseOpts = pyslang.CommandLineOptions()
137
- parseOpts.ignoreProgramName = True
136
+ parse_options = pyslang.CommandLineOptions()
137
+ parse_options.ignoreProgramName = True
138
138
  opts = " ".join(options)
139
139
  code = 0
140
- if not driver.parseCommandLine(opts, parseOpts):
140
+ if not driver.parseCommandLine(opts, parse_options):
141
141
  code = 1
142
142
 
143
143
  if code == 0 and not driver.processOptions():
@@ -211,5 +211,5 @@ def _diagnostics(chip, driver, compilation):
211
211
  for diag in compilation.getAllDiagnostics():
212
212
  diags.issue(diag)
213
213
 
214
- record_metric(chip, step, index, 'errors', diags.numErrors, [])
215
- record_metric(chip, step, index, 'warnings', diags.numWarnings, [])
214
+ record_metric(chip, step, index, 'errors', diags.numErrors, [f'sc_{step}{index}.log'])
215
+ record_metric(chip, step, index, 'warnings', diags.numWarnings, [f'sc_{step}{index}.log'])
@@ -50,16 +50,16 @@ def __get_files(manager, tree):
50
50
  nodes = Queue(maxsize=0)
51
51
  nodes.put(tree.root)
52
52
 
53
- def procRange(range):
53
+ def proc_range(range):
54
54
  files.add(manager.getFileName(range.start))
55
55
  files.add(manager.getFileName(range.end))
56
56
 
57
57
  while not nodes.empty():
58
58
  node = nodes.get()
59
- procRange(node.sourceRange)
59
+ proc_range(node.sourceRange)
60
60
  for token in node:
61
61
  if isinstance(token, pyslang.Token):
62
- procRange(token.range)
62
+ proc_range(token.range)
63
63
  else:
64
64
  nodes.put(token)
65
65
 
@@ -103,7 +103,7 @@ def run(chip):
103
103
  add_source = chip.get('tool', tool, 'task', task, 'var', 'include_source_paths',
104
104
  step=step, index=index)[0] == 'true'
105
105
 
106
- def printFiles(out, files):
106
+ def print_files(out, files):
107
107
  for src_file in files:
108
108
  out.write(f'// File: {src_file}\n')
109
109
 
@@ -126,12 +126,12 @@ def run(chip):
126
126
 
127
127
  out.write("////////////////////////////////////////////////////////////////\n")
128
128
  out.write("// Start:\n")
129
- printFiles(out, files)
129
+ print_files(out, files)
130
130
 
131
131
  out.write(writer.print(tree).str() + '\n')
132
132
 
133
133
  out.write("// End:\n")
134
- printFiles(out, files)
134
+ print_files(out, files)
135
135
  out.write("////////////////////////////////////////////////////////////////\n")
136
136
 
137
137
  if ok:
@@ -37,9 +37,7 @@ def run(chip):
37
37
  def runtime_options(chip):
38
38
  options = slang.common_runtime_options(chip)
39
39
  options.extend([
40
- "--lint-only",
41
- "-Weverything",
42
- "-Werror"
40
+ "-Weverything"
43
41
  ])
44
42
 
45
43
  return options
@@ -83,13 +83,13 @@ def runtime_options(chip):
83
83
  # Library directories
84
84
  #####################
85
85
  for value in opts['ydir']:
86
- cmdlist.append('-y ' + value)
86
+ cmdlist.extend(['-y', value])
87
87
 
88
88
  #####################
89
89
  # Library files
90
90
  #####################
91
91
  for value in opts['vlib']:
92
- cmdlist.append('-v ' + value)
92
+ cmdlist.extend(['-v', value])
93
93
 
94
94
  #####################
95
95
  # Include paths
@@ -107,7 +107,7 @@ def runtime_options(chip):
107
107
  # Command files
108
108
  #######################
109
109
  for value in get_input_files(chip, 'input', 'cmdfile', 'f'):
110
- cmdlist.append('-f ' + value)
110
+ cmdlist.extend(['-f', + value])
111
111
 
112
112
  #######################
113
113
  # Sources
@@ -120,7 +120,7 @@ def runtime_options(chip):
120
120
  #######################
121
121
  # Top Module
122
122
  #######################
123
- cmdlist.append(f'-top {chip.top(step, index)}')
123
+ cmdlist.extend(['-top', chip.top(step, index)])
124
124
 
125
125
  ###############################
126
126
  # Parameters (top module only)
@@ -23,6 +23,26 @@ def setup(chip):
23
23
  chip.set('tool', tool, 'vswitch', '--numeric-version')
24
24
  chip.set('tool', tool, 'version', '>=0.0.9', clobber=False)
25
25
 
26
+ chip.add('tool', tool, 'task', task, 'require',
27
+ ",".join(['tool', tool, 'task', task, 'var', 'skip_convert']), step=step, index=index)
28
+ chip.set('tool', tool, 'task', task, 'var', 'skip_convert',
29
+ 'true/false, if true will skip converting system verilog to verilog', field='help')
30
+ skip = chip.get('tool', tool, 'task', task, 'var', 'skip_convert', step=step, index=index)
31
+ if skip:
32
+ skip = skip[0] == "true"
33
+ else:
34
+ skip = False
35
+ chip.set('tool', tool, 'task', task, 'var', 'skip_convert', skip,
36
+ step=step, index=index, clobber=False)
37
+
38
+ chip.set('tool', tool, 'task', task, 'input', f'{topmodule}.sv', step=step, index=index)
39
+
40
+ if skip:
41
+ chip.set('tool', tool, 'task', task, 'output', f'{topmodule}.sv', step=step, index=index)
42
+ return "passing system verilog along"
43
+
44
+ chip.set('tool', tool, 'task', task, 'output', f'{topmodule}.v', step=step, index=index)
45
+
26
46
  chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
27
47
  step=step, index=index, clobber=False)
28
48
 
@@ -41,6 +61,3 @@ def setup(chip):
41
61
  step=step, index=index)
42
62
  chip.add('tool', tool, 'task', task, 'option', "--write=outputs/" + topmodule + ".v",
43
63
  step=step, index=index)
44
-
45
- chip.set('tool', tool, 'task', task, 'input', f'{topmodule}.sv', step=step, index=index)
46
- chip.set('tool', tool, 'task', task, 'output', f'{topmodule}.v', step=step, index=index)
@@ -161,12 +161,12 @@ def runtime_options(chip):
161
161
 
162
162
  if c_flags:
163
163
  cflags_str = ' '.join(c_flags)
164
- cmdlist.extend(['-CFLAGS', f'"{cflags_str}"'])
164
+ cmdlist.extend(['-CFLAGS', cflags_str])
165
165
 
166
166
  ld_flags = chip.get('tool', tool, 'task', task, 'var', 'ldflags', step=step, index=index)
167
167
  if ld_flags:
168
168
  ldflags_str = ' '.join(ld_flags)
169
- cmdlist.extend(['-LDFLAGS', f'"{ldflags_str}"'])
169
+ cmdlist.extend(['-LDFLAGS', ldflags_str])
170
170
 
171
171
  for value in get_input_files(chip, 'input', 'hll', 'c'):
172
172
  cmdlist.append(value)
@@ -144,9 +144,9 @@ def runtime_options(chip):
144
144
  cmdlist.append(f'inputs/{design}.v')
145
145
  else:
146
146
  for value in frontend_opts['ydir']:
147
- cmdlist.append(f'-y {value}')
147
+ cmdlist.extend(['-y', value])
148
148
  for value in frontend_opts['vlib']:
149
- cmdlist.append(f'-v {value}')
149
+ cmdlist.extend(['-v', value])
150
150
  for value in frontend_opts['idir']:
151
151
  cmdlist.append(f'-I{value}')
152
152
  for value in frontend_opts['define']:
@@ -160,7 +160,7 @@ def runtime_options(chip):
160
160
  cmdlist.append(value)
161
161
 
162
162
  for value in get_input_files(chip, 'input', 'cmdfile', 'f'):
163
- cmdlist.append(f'-f {value}')
163
+ cmdlist.extend(['-f', value])
164
164
 
165
165
  return cmdlist
166
166
 
@@ -1,4 +1,4 @@
1
- import xml.etree.ElementTree as ET
1
+ from xml.etree import ElementTree
2
2
  import xml.dom.minidom
3
3
 
4
4
 
@@ -10,7 +10,7 @@ def generate_vpr_constraints_xml_file(pin_map, filename):
10
10
 
11
11
  def generate_vpr_constraints_xml(pin_map):
12
12
 
13
- constraints_xml = ET.Element("vpr_constraints")
13
+ constraints_xml = ElementTree.Element("vpr_constraints")
14
14
 
15
15
  # Generate partition list section
16
16
  partition_list = generate_partition_list_xml(pin_map)
@@ -22,7 +22,7 @@ def generate_vpr_constraints_xml(pin_map):
22
22
 
23
23
  def generate_partition_list_xml(pin_map):
24
24
 
25
- partition_list = ET.Element("partition_list")
25
+ partition_list = ElementTree.Element("partition_list")
26
26
 
27
27
  # ***ASSUMPTION: pin map is a dictionary of block names
28
28
  # and tuples, where the tuples specify the
@@ -38,7 +38,7 @@ def generate_partition_list_xml(pin_map):
38
38
 
39
39
  def generate_partition_xml(pin, pin_region):
40
40
 
41
- partition = ET.Element("partition")
41
+ partition = ElementTree.Element("partition")
42
42
 
43
43
  partition_name = generate_partition_name(pin)
44
44
  partition.set("name", partition_name)
@@ -80,7 +80,7 @@ def generate_partition_name(pin):
80
80
 
81
81
  def generate_add_atom_xml(pin_name):
82
82
 
83
- atom_xml = ET.Element("add_atom")
83
+ atom_xml = ElementTree.Element("add_atom")
84
84
 
85
85
  atom_xml.set("name_pattern", str(pin_name))
86
86
 
@@ -89,7 +89,7 @@ def generate_add_atom_xml(pin_name):
89
89
 
90
90
  def generate_add_region_xml(x_low, x_high, y_low, y_high, subtile):
91
91
 
92
- region_xml = ET.Element("add_region")
92
+ region_xml = ElementTree.Element("add_region")
93
93
 
94
94
  region_xml.set("x_low", str(x_low))
95
95
  region_xml.set("y_low", str(y_low))
@@ -100,9 +100,9 @@ def generate_add_region_xml(x_low, x_high, y_low, y_high, subtile):
100
100
  return region_xml
101
101
 
102
102
 
103
- def write_vpr_constraints_xml_file(constraints: ET.Element, filename: str):
103
+ def write_vpr_constraints_xml_file(constraints: ElementTree.Element, filename: str):
104
104
 
105
- dom = xml.dom.minidom.parseString(ET.tostring(constraints))
105
+ dom = xml.dom.minidom.parseString(ElementTree.tostring(constraints))
106
106
  xml_string = dom.toprettyxml()
107
107
 
108
108
  with open(filename, 'w') as xfile:
@@ -62,7 +62,7 @@ def runtime_options(chip):
62
62
  graphics_command_str = " ".join(graphics_commands)
63
63
 
64
64
  options.append("--graphics_commands")
65
- options.append(f"\"{graphics_command_str}\"")
65
+ options.append(graphics_command_str)
66
66
 
67
67
  return options
68
68
 
@@ -62,8 +62,8 @@ def runtime_options(chip):
62
62
 
63
63
  options.append('--route')
64
64
  # To run only the routing step we need to pass in the placement files
65
- options.append(f'--net_file inputs/{design}.net')
66
- options.append(f'--place_file inputs/{design}.place')
65
+ options.extend(['--net_file', f'inputs/{design}.net'])
66
+ options.extend(['--place_file', f'inputs/{design}.place'])
67
67
 
68
68
  enable_images = chip.get('tool', tool, 'task', task, 'var', 'enable_images',
69
69
  step=step, index=index)[0]
@@ -72,7 +72,7 @@ def runtime_options(chip):
72
72
  step=step, index=index)
73
73
 
74
74
  if (len(route_iterations) > 0):
75
- options.append(f'--max_router_iterations {route_iterations[0]}')
75
+ options.extend(['--max_router_iterations', route_iterations[0]])
76
76
 
77
77
  if enable_images == 'true':
78
78
  design = chip.top()
@@ -102,7 +102,7 @@ def runtime_options(chip):
102
102
  graphics_command_str = " ".join(graphics_commands)
103
103
 
104
104
  options.append("--graphics_commands")
105
- options.append(f"\"{graphics_command_str}\"")
105
+ options.append(graphics_command_str)
106
106
 
107
107
  return options
108
108
 
@@ -49,6 +49,6 @@ def runtime_options(chip):
49
49
  raise SiliconCompilerError(f"Incorrect file type {show_type}", chip=chip)
50
50
 
51
51
  options.append("--graphics_commands")
52
- options.append(f"\"{screenshot_command_str}\"")
52
+ options.append(screenshot_command_str)
53
53
 
54
54
  return options
@@ -64,14 +64,14 @@ def generic_show_options(chip):
64
64
  raise SiliconCompilerError("Blif file does not exist", chip=chip)
65
65
 
66
66
  if os.path.exists(net_file):
67
- options.append(f'--net_file {net_file}')
67
+ options.extend(['--net_file', net_file])
68
68
  else:
69
69
  raise SiliconCompilerError("Net file does not exist", chip=chip)
70
70
 
71
71
  if os.path.exists(route_file) and os.path.exists(place_file):
72
72
  options.append('--analysis')
73
- options.append(f'--place_file {place_file}')
74
- options.append(f'--route_file {route_file}')
73
+ options.extend(['--place_file', place_file])
74
+ options.extend(['--route_file', route_file])
75
75
  elif os.path.exists(place_file):
76
76
  # NOTE: This is a workaround to display the VPR GUI on the output of the place step.
77
77
  # VPR GUI can be invoked during the place, route or analysis steps - not after they are run.
@@ -81,8 +81,8 @@ def generic_show_options(chip):
81
81
  # the placed design. Setting max_router_iterations to 0 avoids running routing iterations
82
82
  # and provides a fast way to invoke VPR GUI on the placed design.
83
83
  options.append('--route')
84
- options.append('--max_router_iterations 0')
85
- options.append(f'--place_file {place_file}')
84
+ options.extend(['--max_router_iterations', 0])
85
+ options.extend(['--place_file', place_file])
86
86
  else:
87
87
  raise SiliconCompilerError("Place file does not exist", chip=chip)
88
88
 
@@ -103,15 +103,15 @@ def runtime_options(chip):
103
103
 
104
104
  device_code = chip.get('fpga', part_name, 'var', 'vpr_device_code')
105
105
 
106
- options.append(f"--device {device_code[0]}")
106
+ options.extend(["--device", device_code[0]])
107
107
 
108
108
  # Medium-term solution: VPR performs hash digest checks that
109
109
  # fail if file paths are changed between steps. We wish to
110
110
  # disable the digest checks to work around this
111
- options.append("--verify_file_digests off")
111
+ options.extend(["--verify_file_digests", "off"])
112
112
 
113
- options.append(f"--write_block_usage {__block_file}")
114
- options.append("--outfile_prefix outputs/")
113
+ options.extend(["--write_block_usage", __block_file])
114
+ options.extend(["--outfile_prefix", "outputs/"])
115
115
 
116
116
  if chip.valid('fpga', part_name, 'file', 'archfile') and \
117
117
  chip.get('fpga', part_name, 'file', 'archfile'):
@@ -133,25 +133,25 @@ def runtime_options(chip):
133
133
  "Only one architecture XML file can be passed to VPR", chip=chip)
134
134
 
135
135
  threads = chip.get('tool', tool, 'task', task, 'threads', step=step, index=index)
136
- options.append(f"--num_workers {threads}")
136
+ options.extend(["--num_workers", threads])
137
137
 
138
138
  # For most architectures, constant nets need to be routed
139
139
  # like regular nets to be functionally correct (however inefficient
140
140
  # that might be...); these two options help control that
141
- options.append('--constant_net_method route')
142
- options.append('--const_gen_inference none')
141
+ options.extend(['--constant_net_method', 'route'])
142
+ options.extend(['--const_gen_inference', 'none'])
143
143
 
144
144
  # If we allow VPR to sweep dangling primary I/Os and logic blocks
145
145
  # it can interfere with circuit debugging; so disable that
146
- options.append('--sweep_dangling_primary_ios off')
146
+ options.extend(['--sweep_dangling_primary_ios', 'off'])
147
147
  # If you don't sweep dangling primary I/Os, but sweeping nets
148
148
  # VPR can crash:
149
- options.append('--sweep_dangling_nets off')
149
+ options.extend(['--sweep_dangling_nets', 'off'])
150
150
  # If you don't sweep dangling nets then the timing engine requires
151
151
  # you to set an option allowing dangling nodes
152
- options.append('--allow_dangling_combinational_nodes on')
153
- options.append('--sweep_constant_primary_outputs off')
154
- options.append('--sweep_dangling_blocks off')
152
+ options.extend(['--allow_dangling_combinational_nodes', 'on'])
153
+ options.extend(['--sweep_constant_primary_outputs', 'off'])
154
+ options.extend(['--sweep_dangling_blocks', 'off'])
155
155
 
156
156
  # Explicitly specify the clock modeling type in the part driver
157
157
  # to avoid ambiguity and future-proof against new VPR clock models
@@ -163,11 +163,11 @@ def runtime_options(chip):
163
163
  # When dedicated networks are used, tell VPR to use the two-stage router,
164
164
  # otherwise not.
165
165
  if (selected_clock_model == 'ideal'):
166
- options.append(f'--clock_modeling {selected_clock_model}')
166
+ options.extend(['--clock_modeling', selected_clock_model])
167
167
  elif (selected_clock_model == 'route'):
168
- options.append(f'--clock_modeling {selected_clock_model}')
168
+ options.extend(['--clock_modeling', selected_clock_model])
169
169
  elif (selected_clock_model == 'dedicated_network'):
170
- options.append(f'--clock_modeling {selected_clock_model}')
170
+ options.extend(['--clock_modeling', selected_clock_model])
171
171
  options.append('--two_stage_clock_routing')
172
172
  else:
173
173
  raise SiliconCompilerError(
@@ -181,24 +181,24 @@ def runtime_options(chip):
181
181
  file_not_found_msg="SDC file not found")
182
182
 
183
183
  if sdc_file:
184
- sdc_arg = f"--sdc_file {sdc_file}"
185
- options.append(sdc_arg)
184
+ options.append("--sdc_file")
185
+ options.append(sdc_file)
186
186
 
187
187
  report_type = chip.get('tool', tool, 'task', task, 'var', 'timing_report_type',
188
188
  step=step, index=index)[0]
189
- options.append(f'--timing_report_detail {report_type}')
189
+ options.extend(['--timing_report_detail', report_type])
190
190
  report_paths = chip.get('tool', tool, 'task', task, 'var', 'timing_paths',
191
191
  step=step, index=index)[0]
192
- options.append(f'--timing_report_npaths {report_paths}')
192
+ options.extend(['--timing_report_npaths', report_paths])
193
193
  else:
194
- options.append("--timing_analysis off")
194
+ options.extend(["--timing_analysis", "off"])
195
195
 
196
196
  # Per the scheme implemented in the placement pre-process step,
197
197
  # if a constraints file exists it will always be in the auto_constraints()
198
198
  # location:
199
199
  if (os.path.isfile(auto_constraints())):
200
- pin_constraint_arg = f"--read_vpr_constraints {auto_constraints()}"
201
- options.append(pin_constraint_arg)
200
+ options.append("--read_vpr_constraints")
201
+ options.append(auto_constraints())
202
202
 
203
203
  # Routing graph XML:
204
204
  rr_graph = find_single_file(chip, 'fpga', part_name, 'file', 'graphfile',
@@ -208,7 +208,7 @@ def runtime_options(chip):
208
208
  chip.logger.info("No VPR RR graph file specified")
209
209
  chip.logger.info("Routing architecture will come from architecture XML file")
210
210
  else:
211
- options.append("--read_rr_graph " + rr_graph)
211
+ options.extend(["--read_rr_graph", rr_graph])
212
212
 
213
213
  # ***NOTE: For real FPGA chips you need to specify the routing channel
214
214
  # width explicitly. VPR requires an explicit routing channel
@@ -222,7 +222,7 @@ def runtime_options(chip):
222
222
  if (len(num_routing_channels) == 0):
223
223
  raise SiliconCompilerError("Number of routing channels not specified", chip=chip)
224
224
  elif (len(num_routing_channels) == 1):
225
- options.append("--route_chan_width " + num_routing_channels[0])
225
+ options.extend(["--route_chan_width", num_routing_channels[0]])
226
226
  elif (len(num_routing_channels) > 1):
227
227
  raise SiliconCompilerError(
228
228
  "Only one routing channel width argument can be passed to VPR", chip=chip)
@@ -24,9 +24,9 @@ def setup(chip):
24
24
 
25
25
  chip.add('tool', tool, 'task', task, 'option', '--auto',
26
26
  step=step, index=index)
27
- chip.add('tool', tool, 'task', task, 'option', '--source_file_format hspice',
27
+ chip.add('tool', tool, 'task', task, 'option', ['--source_file_format', 'hspice'],
28
28
  step=step, index=index)
29
- chip.add('tool', tool, 'task', task, 'option', f'--dir_out outputs/{design}.xyce',
29
+ chip.add('tool', tool, 'task', task, 'option', ['--dir_out', f'outputs/{design}.xyce'],
30
30
  step=step, index=index)
31
31
 
32
32
  chip.set('tool', 'xdm', 'task', 'convert', 'var', 'rename', 'true',
@@ -48,7 +48,7 @@ def setup(chip):
48
48
  step=step, index=index) == ['true']:
49
49
  chip.add('tool', tool, 'task', task, 'output', f'{design}.raw',
50
50
  step=step, index=index)
51
- chip.add('tool', tool, 'task', task, 'option', f'-r outputs/{design}.raw',
51
+ chip.add('tool', tool, 'task', task, 'option', ['-r', f'outputs/{design}.raw'],
52
52
  step=step, index=index)
53
53
 
54
54
 
@@ -6,7 +6,7 @@ import gzip
6
6
  import argparse # argument parsing
7
7
 
8
8
 
9
- def processLibertyFile(input_file, logger=None):
9
+ def process_liberty_file(input_file, logger=None):
10
10
  # Read input file
11
11
  if logger:
12
12
  logger.info(f"Opening file for replace: {input_file}")
@@ -56,4 +56,4 @@ if __name__ == "__main__":
56
56
  help='Output File')
57
57
  args = parser.parse_args()
58
58
 
59
- processLibertyFile(args.inputFile, args.outputFile, args.patterns)
59
+ process_liberty_file(args.inputFile, args.outputFile, args.patterns)