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.
- siliconcompiler/_metadata.py +1 -1
- siliconcompiler/apps/__init__.py +26 -0
- siliconcompiler/apps/sc_install.py +1 -1
- siliconcompiler/apps/utils/replay.py +96 -38
- siliconcompiler/checklists/__init__.py +12 -0
- siliconcompiler/core.py +85 -15
- siliconcompiler/flows/__init__.py +34 -0
- siliconcompiler/flows/showflow.py +1 -1
- siliconcompiler/libs/__init__.py +5 -0
- siliconcompiler/optimizer/__init__.py +199 -0
- siliconcompiler/optimizer/vizier.py +259 -0
- siliconcompiler/pdks/__init__.py +5 -0
- siliconcompiler/scheduler/__init__.py +67 -49
- siliconcompiler/scheduler/send_messages.py +1 -1
- siliconcompiler/schema/schema_cfg.py +2 -2
- siliconcompiler/schema/schema_obj.py +13 -10
- siliconcompiler/schema/utils.py +2 -0
- siliconcompiler/sphinx_ext/__init__.py +85 -0
- siliconcompiler/sphinx_ext/dynamicgen.py +17 -33
- siliconcompiler/sphinx_ext/schemagen.py +3 -2
- siliconcompiler/targets/__init__.py +26 -0
- siliconcompiler/templates/replay/replay.py.j2 +62 -0
- siliconcompiler/templates/replay/requirements.txt +2 -1
- siliconcompiler/templates/replay/setup.sh +119 -6
- siliconcompiler/tools/__init__.py +62 -0
- siliconcompiler/tools/_common/asic.py +77 -6
- siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +2 -2
- siliconcompiler/tools/ghdl/ghdl.py +1 -2
- siliconcompiler/tools/gtkwave/__init__.py +39 -0
- siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +34 -0
- siliconcompiler/tools/gtkwave/show.py +70 -0
- siliconcompiler/tools/icarus/compile.py +4 -0
- siliconcompiler/tools/klayout/convert_drc_db.py +1 -1
- siliconcompiler/tools/klayout/drc.py +1 -1
- siliconcompiler/tools/klayout/export.py +8 -1
- siliconcompiler/tools/klayout/klayout.py +2 -2
- siliconcompiler/tools/klayout/klayout_convert_drc_db.py +2 -2
- siliconcompiler/tools/klayout/klayout_export.py +7 -5
- siliconcompiler/tools/klayout/klayout_operations.py +4 -3
- siliconcompiler/tools/klayout/klayout_show.py +3 -2
- siliconcompiler/tools/klayout/klayout_utils.py +1 -1
- siliconcompiler/tools/klayout/operations.py +8 -0
- siliconcompiler/tools/klayout/screenshot.py +6 -1
- siliconcompiler/tools/klayout/show.py +8 -1
- siliconcompiler/tools/magic/magic.py +1 -1
- siliconcompiler/tools/openroad/__init__.py +1 -1
- siliconcompiler/tools/openroad/_apr.py +11 -2
- siliconcompiler/tools/openroad/global_placement.py +23 -2
- siliconcompiler/tools/openroad/init_floorplan.py +1 -1
- siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +1 -1
- siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +4 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +64 -1
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +4 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +8 -2
- siliconcompiler/tools/openroad/scripts/common/procs.tcl +88 -0
- siliconcompiler/tools/openroad/scripts/common/reports.tcl +1 -1
- siliconcompiler/tools/openroad/scripts/common/write_images.tcl +10 -1
- siliconcompiler/tools/openroad/scripts/sc_show.tcl +5 -0
- siliconcompiler/tools/opensta/__init__.py +1 -1
- siliconcompiler/tools/opensta/check_library.py +27 -0
- siliconcompiler/tools/opensta/scripts/sc_check_library.tcl +255 -0
- siliconcompiler/tools/opensta/scripts/sc_timing.tcl +1 -1
- siliconcompiler/tools/sv2v/sv2v.py +1 -2
- siliconcompiler/tools/verilator/compile.py +11 -0
- siliconcompiler/tools/verilator/verilator.py +7 -8
- siliconcompiler/tools/vivado/vivado.py +1 -1
- siliconcompiler/tools/yosys/__init__.py +149 -0
- siliconcompiler/tools/yosys/lec.py +22 -9
- siliconcompiler/tools/yosys/sc_lec.tcl +94 -49
- siliconcompiler/tools/yosys/sc_syn.tcl +1 -0
- siliconcompiler/tools/yosys/screenshot.py +2 -2
- siliconcompiler/tools/yosys/syn_asic.py +98 -74
- siliconcompiler/tools/yosys/syn_asic.tcl +31 -6
- siliconcompiler/tools/yosys/syn_fpga.py +2 -3
- siliconcompiler/tools/yosys/syn_fpga.tcl +0 -1
- siliconcompiler/toolscripts/_tools.json +8 -3
- siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +40 -0
- siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +28 -0
- siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +28 -0
- siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
- siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +29 -0
- siliconcompiler/utils/__init__.py +7 -3
- siliconcompiler/utils/showtools.py +3 -0
- {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/METADATA +14 -11
- {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/RECORD +88 -91
- {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/WHEEL +1 -1
- {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/entry_points.txt +13 -0
- siliconcompiler/libs/asap7sc7p5t.py +0 -8
- siliconcompiler/libs/gf180mcu.py +0 -8
- siliconcompiler/libs/interposer.py +0 -8
- siliconcompiler/libs/nangate45.py +0 -8
- siliconcompiler/libs/sg13g2_stdcell.py +0 -8
- siliconcompiler/libs/sky130hd.py +0 -8
- siliconcompiler/libs/sky130io.py +0 -8
- siliconcompiler/pdks/asap7.py +0 -8
- siliconcompiler/pdks/freepdk45.py +0 -8
- siliconcompiler/pdks/gf180.py +0 -8
- siliconcompiler/pdks/ihp130.py +0 -8
- siliconcompiler/pdks/interposer.py +0 -8
- siliconcompiler/pdks/skywater130.py +0 -8
- siliconcompiler/templates/replay/run.py.j2 +0 -22
- siliconcompiler/tools/yosys/yosys.py +0 -148
- {siliconcompiler-0.29.0.dist-info → siliconcompiler-0.29.2.dist-info}/LICENSE +0 -0
- {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")
|
|
File without changes
|
|
File without changes
|