siliconcompiler 0.29.0__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 (104) hide show
  1. siliconcompiler/_metadata.py +1 -1
  2. siliconcompiler/apps/__init__.py +26 -0
  3. siliconcompiler/apps/sc_install.py +1 -1
  4. siliconcompiler/apps/utils/replay.py +96 -38
  5. siliconcompiler/checklists/__init__.py +12 -0
  6. siliconcompiler/core.py +85 -15
  7. siliconcompiler/flows/__init__.py +34 -0
  8. siliconcompiler/flows/showflow.py +1 -1
  9. siliconcompiler/libs/__init__.py +5 -0
  10. siliconcompiler/optimizer/__init__.py +199 -0
  11. siliconcompiler/optimizer/vizier.py +259 -0
  12. siliconcompiler/pdks/__init__.py +5 -0
  13. siliconcompiler/scheduler/__init__.py +67 -49
  14. siliconcompiler/scheduler/send_messages.py +1 -1
  15. siliconcompiler/schema/schema_cfg.py +2 -2
  16. siliconcompiler/schema/schema_obj.py +13 -10
  17. siliconcompiler/schema/utils.py +2 -0
  18. siliconcompiler/sphinx_ext/__init__.py +85 -0
  19. siliconcompiler/sphinx_ext/dynamicgen.py +17 -33
  20. siliconcompiler/sphinx_ext/schemagen.py +3 -2
  21. siliconcompiler/targets/__init__.py +26 -0
  22. siliconcompiler/templates/replay/replay.py.j2 +62 -0
  23. siliconcompiler/templates/replay/requirements.txt +2 -1
  24. siliconcompiler/templates/replay/setup.sh +119 -6
  25. siliconcompiler/tools/__init__.py +62 -0
  26. siliconcompiler/tools/_common/asic.py +77 -6
  27. siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +2 -2
  28. siliconcompiler/tools/ghdl/ghdl.py +1 -2
  29. siliconcompiler/tools/gtkwave/__init__.py +39 -0
  30. siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +34 -0
  31. siliconcompiler/tools/gtkwave/show.py +70 -0
  32. siliconcompiler/tools/icarus/compile.py +4 -0
  33. siliconcompiler/tools/klayout/convert_drc_db.py +1 -1
  34. siliconcompiler/tools/klayout/drc.py +1 -1
  35. siliconcompiler/tools/klayout/export.py +8 -1
  36. siliconcompiler/tools/klayout/klayout.py +2 -2
  37. siliconcompiler/tools/klayout/klayout_convert_drc_db.py +2 -2
  38. siliconcompiler/tools/klayout/klayout_export.py +7 -5
  39. siliconcompiler/tools/klayout/klayout_operations.py +4 -3
  40. siliconcompiler/tools/klayout/klayout_show.py +3 -2
  41. siliconcompiler/tools/klayout/klayout_utils.py +1 -1
  42. siliconcompiler/tools/klayout/operations.py +8 -0
  43. siliconcompiler/tools/klayout/screenshot.py +6 -1
  44. siliconcompiler/tools/klayout/show.py +8 -1
  45. siliconcompiler/tools/magic/magic.py +1 -1
  46. siliconcompiler/tools/openroad/__init__.py +1 -1
  47. siliconcompiler/tools/openroad/_apr.py +11 -2
  48. siliconcompiler/tools/openroad/global_placement.py +23 -2
  49. siliconcompiler/tools/openroad/init_floorplan.py +1 -1
  50. siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +1 -1
  51. siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +4 -0
  52. siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +64 -1
  53. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +4 -0
  54. siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +8 -2
  55. siliconcompiler/tools/openroad/scripts/common/procs.tcl +88 -0
  56. siliconcompiler/tools/openroad/scripts/common/reports.tcl +1 -1
  57. siliconcompiler/tools/openroad/scripts/common/write_images.tcl +10 -1
  58. siliconcompiler/tools/openroad/scripts/sc_show.tcl +5 -0
  59. siliconcompiler/tools/opensta/__init__.py +1 -1
  60. siliconcompiler/tools/opensta/check_library.py +27 -0
  61. siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +255 -0
  62. siliconcompiler/tools/opensta/scripts/sc_timing.tcl +1 -1
  63. siliconcompiler/tools/sv2v/sv2v.py +1 -2
  64. siliconcompiler/tools/verilator/compile.py +11 -0
  65. siliconcompiler/tools/verilator/verilator.py +7 -8
  66. siliconcompiler/tools/vivado/vivado.py +1 -1
  67. siliconcompiler/tools/yosys/__init__.py +149 -0
  68. siliconcompiler/tools/yosys/lec.py +22 -9
  69. siliconcompiler/tools/yosys/sc_lec.tcl +94 -49
  70. siliconcompiler/tools/yosys/sc_syn.tcl +1 -0
  71. siliconcompiler/tools/yosys/screenshot.py +2 -2
  72. siliconcompiler/tools/yosys/syn_asic.py +98 -74
  73. siliconcompiler/tools/yosys/syn_asic.tcl +31 -6
  74. siliconcompiler/tools/yosys/syn_fpga.py +2 -3
  75. siliconcompiler/tools/yosys/syn_fpga.tcl +0 -1
  76. siliconcompiler/toolscripts/_tools.json +8 -3
  77. siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +40 -0
  78. siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +28 -0
  79. siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +28 -0
  80. siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
  81. siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +29 -0
  82. siliconcompiler/utils/__init__.py +7 -3
  83. siliconcompiler/utils/showtools.py +3 -0
  84. {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/METADATA +14 -11
  85. {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/RECORD +88 -91
  86. {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/WHEEL +1 -1
  87. {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/entry_points.txt +13 -0
  88. siliconcompiler/libs/asap7sc7p5t.py +0 -8
  89. siliconcompiler/libs/gf180mcu.py +0 -8
  90. siliconcompiler/libs/interposer.py +0 -8
  91. siliconcompiler/libs/nangate45.py +0 -8
  92. siliconcompiler/libs/sg13g2_stdcell.py +0 -8
  93. siliconcompiler/libs/sky130hd.py +0 -8
  94. siliconcompiler/libs/sky130io.py +0 -8
  95. siliconcompiler/pdks/asap7.py +0 -8
  96. siliconcompiler/pdks/freepdk45.py +0 -8
  97. siliconcompiler/pdks/gf180.py +0 -8
  98. siliconcompiler/pdks/ihp130.py +0 -8
  99. siliconcompiler/pdks/interposer.py +0 -8
  100. siliconcompiler/pdks/skywater130.py +0 -8
  101. siliconcompiler/templates/replay/run.py.j2 +0 -22
  102. siliconcompiler/tools/yosys/yosys.py +0 -148
  103. {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/LICENSE +0 -0
  104. {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/top_level.txt +0 -0
@@ -1,148 +0,0 @@
1
- '''
2
- Yosys is a framework for RTL synthesis that takes synthesizable
3
- Verilog-2005 design and converts it to BLIF, EDIF, BTOR, SMT,
4
- Verilog netlist etc. The tool supports logical synthesis and
5
- tech mapping to ASIC standard cell libraries, FPGA architectures.
6
- In addition it has built in formal methods for property and
7
- equivalence checking.
8
-
9
- Documentation: https://yosyshq.readthedocs.io/projects/yosys/en/latest/
10
-
11
- Sources: https://github.com/YosysHQ/yosys
12
-
13
- Installation: https://github.com/YosysHQ/yosys
14
- '''
15
-
16
- import re
17
- import json
18
- from siliconcompiler import sc_open
19
- from siliconcompiler.tools._common import get_tool_task, record_metric
20
- from siliconcompiler.targets import asap7_demo
21
-
22
-
23
- ######################################################################
24
- # Make Docs
25
- ######################################################################
26
- def make_docs(chip):
27
- chip.use(asap7_demo)
28
-
29
-
30
- ################################
31
- # Setup Tool (pre executable)
32
- ################################
33
- def setup(chip):
34
- ''' Tool specific function to run before step execution
35
- '''
36
-
37
- # If the 'lock' bit is set, don't reconfigure.
38
- tool = 'yosys'
39
- refdir = 'tools/' + tool
40
- step = chip.get('arg', 'step')
41
- index = chip.get('arg', 'index')
42
- _, task = get_tool_task(chip, step, index)
43
-
44
- # Standard Setup
45
- chip.set('tool', tool, 'exe', 'yosys')
46
- chip.set('tool', tool, 'vswitch', '--version')
47
- chip.set('tool', tool, 'version', '>=0.41', clobber=False)
48
- chip.set('tool', tool, 'format', 'tcl', clobber=False)
49
-
50
- # Task Setup
51
- # common to all
52
- option = []
53
- if chip.get('option', 'breakpoint', step=step, index=index):
54
- option.append('-C')
55
- option.append('-c')
56
- chip.set('tool', tool, 'task', task, 'option', option, step=step, index=index, clobber=False)
57
- chip.set('tool', tool, 'task', task, 'refdir', refdir, step=step, index=index,
58
- package='siliconcompiler', clobber=False)
59
- chip.set('tool', tool, 'task', task, 'regex', 'warnings', "Warning:",
60
- step=step, index=index, clobber=False)
61
- chip.set('tool', tool, 'task', task, 'regex', 'errors', "^ERROR",
62
- step=step, index=index, clobber=False)
63
-
64
-
65
- ################################
66
- # Version Check
67
- ################################
68
- def parse_version(stdout):
69
- # Yosys 0.9+3672 (git sha1 014c7e26, gcc 7.5.0-3ubuntu1~18.04 -fPIC -Os)
70
- return stdout.split()[1]
71
-
72
-
73
- def normalize_version(version):
74
- # Replace '+', which represents a "local version label", with '-', which is
75
- # an "implicit post release number".
76
- return version.replace('+', '-')
77
-
78
-
79
- def syn_setup(chip):
80
- ''' Helper method for configs specific to synthesis tasks.
81
- '''
82
-
83
- # Generic tool setup.
84
- setup(chip)
85
-
86
- tool = 'yosys'
87
- step = chip.get('arg', 'step')
88
- index = chip.get('arg', 'index')
89
- _, task = get_tool_task(chip, step, index)
90
- design = chip.top()
91
-
92
- # Set yosys script path.
93
- chip.set('tool', tool, 'task', task, 'script', 'sc_syn.tcl',
94
- step=step, index=index, clobber=False)
95
-
96
- # Input/output requirements.
97
- chip.set('tool', tool, 'task', task, 'input', design + '.v', step=step, index=index)
98
- chip.set('tool', tool, 'task', task, 'output', design + '.vg', step=step, index=index)
99
-
100
-
101
- ##################################################
102
- def syn_post_process(chip):
103
- ''' Tool specific function to run after step execution
104
- '''
105
-
106
- step = chip.get('arg', 'step')
107
- index = chip.get('arg', 'index')
108
-
109
- with sc_open("reports/stat.json") as f:
110
- metrics = json.load(f)
111
- if "design" in metrics:
112
- metrics = metrics["design"]
113
-
114
- if "area" in metrics:
115
- record_metric(chip, step, index, 'cellarea',
116
- float(metrics["area"]),
117
- "reports/stat.json",
118
- source_unit='um^2')
119
- if "num_cells" in metrics:
120
- record_metric(chip, step, index, 'cells',
121
- metrics["num_cells"],
122
- "reports/stat.json")
123
- if "num_wire_bits" in metrics:
124
- record_metric(chip, step, index, 'nets',
125
- metrics["num_wire_bits"],
126
- "reports/stat.json")
127
- if "num_port_bits" in metrics:
128
- record_metric(chip, step, index, 'pins',
129
- metrics["num_port_bits"],
130
- "reports/stat.json")
131
-
132
- registers = None
133
- with sc_open(f"{step}.log") as f:
134
- for line in f:
135
- line_registers = re.findall(r"^\s*mapped ([0-9]+) \$_DFF.*", line)
136
- if line_registers:
137
- if registers is None:
138
- registers = 0
139
- registers += int(line_registers[0])
140
- if registers is not None:
141
- record_metric(chip, step, index, 'registers', registers, f"{step}.log")
142
-
143
-
144
- ##################################################
145
- if __name__ == "__main__":
146
-
147
- chip = make_docs()
148
- chip.write_manifest("yosys.json")