siliconcompiler 0.26.5__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/__init__.py +24 -0
- siliconcompiler/__main__.py +12 -0
- siliconcompiler/_common.py +49 -0
- siliconcompiler/_metadata.py +36 -0
- siliconcompiler/apps/__init__.py +0 -0
- siliconcompiler/apps/_common.py +76 -0
- siliconcompiler/apps/sc.py +92 -0
- siliconcompiler/apps/sc_dashboard.py +94 -0
- siliconcompiler/apps/sc_issue.py +178 -0
- siliconcompiler/apps/sc_remote.py +199 -0
- siliconcompiler/apps/sc_server.py +39 -0
- siliconcompiler/apps/sc_show.py +142 -0
- siliconcompiler/apps/smake.py +232 -0
- siliconcompiler/checklists/__init__.py +0 -0
- siliconcompiler/checklists/oh_tapeout.py +41 -0
- siliconcompiler/core.py +3221 -0
- siliconcompiler/data/RobotoMono/LICENSE.txt +202 -0
- siliconcompiler/data/RobotoMono/RobotoMono-Regular.ttf +0 -0
- siliconcompiler/data/heartbeat.v +18 -0
- siliconcompiler/data/logo.png +0 -0
- siliconcompiler/flowgraph.py +570 -0
- siliconcompiler/flows/__init__.py +0 -0
- siliconcompiler/flows/_common.py +67 -0
- siliconcompiler/flows/asicflow.py +180 -0
- siliconcompiler/flows/asictopflow.py +38 -0
- siliconcompiler/flows/dvflow.py +86 -0
- siliconcompiler/flows/fpgaflow.py +202 -0
- siliconcompiler/flows/generate_openroad_rcx.py +66 -0
- siliconcompiler/flows/lintflow.py +35 -0
- siliconcompiler/flows/screenshotflow.py +51 -0
- siliconcompiler/flows/showflow.py +59 -0
- siliconcompiler/flows/signoffflow.py +53 -0
- siliconcompiler/flows/synflow.py +128 -0
- siliconcompiler/fpgas/__init__.py +0 -0
- siliconcompiler/fpgas/lattice_ice40.py +42 -0
- siliconcompiler/fpgas/vpr_example.py +109 -0
- siliconcompiler/issue.py +300 -0
- siliconcompiler/libs/__init__.py +0 -0
- siliconcompiler/libs/asap7sc7p5t.py +8 -0
- siliconcompiler/libs/gf180mcu.py +8 -0
- siliconcompiler/libs/nangate45.py +8 -0
- siliconcompiler/libs/sky130hd.py +8 -0
- siliconcompiler/libs/sky130io.py +8 -0
- siliconcompiler/package.py +412 -0
- siliconcompiler/pdks/__init__.py +0 -0
- siliconcompiler/pdks/asap7.py +8 -0
- siliconcompiler/pdks/freepdk45.py +8 -0
- siliconcompiler/pdks/gf180.py +8 -0
- siliconcompiler/pdks/skywater130.py +8 -0
- siliconcompiler/remote/__init__.py +36 -0
- siliconcompiler/remote/client.py +891 -0
- siliconcompiler/remote/schema.py +106 -0
- siliconcompiler/remote/server.py +507 -0
- siliconcompiler/remote/server_schema/requests/cancel_job.json +51 -0
- siliconcompiler/remote/server_schema/requests/check_progress.json +61 -0
- siliconcompiler/remote/server_schema/requests/check_server.json +38 -0
- siliconcompiler/remote/server_schema/requests/delete_job.json +51 -0
- siliconcompiler/remote/server_schema/requests/get_results.json +48 -0
- siliconcompiler/remote/server_schema/requests/remote_run.json +40 -0
- siliconcompiler/remote/server_schema/responses/cancel_job.json +18 -0
- siliconcompiler/remote/server_schema/responses/check_progress.json +30 -0
- siliconcompiler/remote/server_schema/responses/check_server.json +32 -0
- siliconcompiler/remote/server_schema/responses/delete_job.json +18 -0
- siliconcompiler/remote/server_schema/responses/get_results.json +21 -0
- siliconcompiler/remote/server_schema/responses/remote_run.json +25 -0
- siliconcompiler/report/__init__.py +13 -0
- siliconcompiler/report/html_report.py +74 -0
- siliconcompiler/report/report.py +355 -0
- siliconcompiler/report/streamlit_report.py +137 -0
- siliconcompiler/report/streamlit_viewer.py +944 -0
- siliconcompiler/report/summary_image.py +117 -0
- siliconcompiler/report/summary_table.py +105 -0
- siliconcompiler/report/utils.py +163 -0
- siliconcompiler/scheduler/__init__.py +2092 -0
- siliconcompiler/scheduler/docker_runner.py +253 -0
- siliconcompiler/scheduler/run_node.py +138 -0
- siliconcompiler/scheduler/send_messages.py +178 -0
- siliconcompiler/scheduler/slurm.py +208 -0
- siliconcompiler/scheduler/validation/email_credentials.json +54 -0
- siliconcompiler/schema/__init__.py +7 -0
- siliconcompiler/schema/schema_cfg.py +4014 -0
- siliconcompiler/schema/schema_obj.py +1841 -0
- siliconcompiler/schema/utils.py +93 -0
- siliconcompiler/sphinx_ext/__init__.py +0 -0
- siliconcompiler/sphinx_ext/dynamicgen.py +1006 -0
- siliconcompiler/sphinx_ext/schemagen.py +221 -0
- siliconcompiler/sphinx_ext/utils.py +166 -0
- siliconcompiler/targets/__init__.py +0 -0
- siliconcompiler/targets/asap7_demo.py +68 -0
- siliconcompiler/targets/asic_demo.py +38 -0
- siliconcompiler/targets/fpgaflow_demo.py +47 -0
- siliconcompiler/targets/freepdk45_demo.py +59 -0
- siliconcompiler/targets/gf180_demo.py +77 -0
- siliconcompiler/targets/skywater130_demo.py +70 -0
- siliconcompiler/templates/email/general.j2 +66 -0
- siliconcompiler/templates/email/summary.j2 +43 -0
- siliconcompiler/templates/issue/README.txt +26 -0
- siliconcompiler/templates/issue/run.sh +6 -0
- siliconcompiler/templates/report/bootstrap.min.css +7 -0
- siliconcompiler/templates/report/bootstrap.min.js +7 -0
- siliconcompiler/templates/report/bootstrap_LICENSE.md +24 -0
- siliconcompiler/templates/report/sc_report.j2 +427 -0
- siliconcompiler/templates/slurm/run.sh +9 -0
- siliconcompiler/templates/tcl/manifest.tcl.j2 +137 -0
- siliconcompiler/tools/__init__.py +0 -0
- siliconcompiler/tools/_common/__init__.py +432 -0
- siliconcompiler/tools/_common/asic.py +115 -0
- siliconcompiler/tools/_common/sdc/sc_constraints.sdc +76 -0
- siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +63 -0
- siliconcompiler/tools/bambu/bambu.py +32 -0
- siliconcompiler/tools/bambu/convert.py +77 -0
- siliconcompiler/tools/bluespec/bluespec.py +40 -0
- siliconcompiler/tools/bluespec/convert.py +103 -0
- siliconcompiler/tools/builtin/_common.py +155 -0
- siliconcompiler/tools/builtin/builtin.py +26 -0
- siliconcompiler/tools/builtin/concatenate.py +85 -0
- siliconcompiler/tools/builtin/join.py +27 -0
- siliconcompiler/tools/builtin/maximum.py +46 -0
- siliconcompiler/tools/builtin/minimum.py +57 -0
- siliconcompiler/tools/builtin/mux.py +70 -0
- siliconcompiler/tools/builtin/nop.py +38 -0
- siliconcompiler/tools/builtin/verify.py +83 -0
- siliconcompiler/tools/chisel/SCDriver.scala +10 -0
- siliconcompiler/tools/chisel/build.sbt +27 -0
- siliconcompiler/tools/chisel/chisel.py +37 -0
- siliconcompiler/tools/chisel/convert.py +140 -0
- siliconcompiler/tools/execute/exec_input.py +41 -0
- siliconcompiler/tools/execute/execute.py +17 -0
- siliconcompiler/tools/genfasm/bitstream.py +61 -0
- siliconcompiler/tools/genfasm/genfasm.py +40 -0
- siliconcompiler/tools/ghdl/convert.py +87 -0
- siliconcompiler/tools/ghdl/ghdl.py +41 -0
- siliconcompiler/tools/icarus/compile.py +87 -0
- siliconcompiler/tools/icarus/icarus.py +36 -0
- siliconcompiler/tools/icepack/bitstream.py +20 -0
- siliconcompiler/tools/icepack/icepack.py +43 -0
- siliconcompiler/tools/klayout/export.py +117 -0
- siliconcompiler/tools/klayout/klayout.py +119 -0
- siliconcompiler/tools/klayout/klayout_export.py +205 -0
- siliconcompiler/tools/klayout/klayout_operations.py +363 -0
- siliconcompiler/tools/klayout/klayout_show.py +242 -0
- siliconcompiler/tools/klayout/klayout_utils.py +176 -0
- siliconcompiler/tools/klayout/operations.py +194 -0
- siliconcompiler/tools/klayout/screenshot.py +98 -0
- siliconcompiler/tools/klayout/show.py +101 -0
- siliconcompiler/tools/magic/drc.py +49 -0
- siliconcompiler/tools/magic/extspice.py +19 -0
- siliconcompiler/tools/magic/magic.py +85 -0
- siliconcompiler/tools/magic/sc_drc.tcl +96 -0
- siliconcompiler/tools/magic/sc_extspice.tcl +54 -0
- siliconcompiler/tools/magic/sc_magic.tcl +47 -0
- siliconcompiler/tools/montage/montage.py +30 -0
- siliconcompiler/tools/montage/tile.py +66 -0
- siliconcompiler/tools/netgen/count_lvs.py +132 -0
- siliconcompiler/tools/netgen/lvs.py +90 -0
- siliconcompiler/tools/netgen/netgen.py +36 -0
- siliconcompiler/tools/netgen/sc_lvs.tcl +46 -0
- siliconcompiler/tools/nextpnr/apr.py +24 -0
- siliconcompiler/tools/nextpnr/nextpnr.py +59 -0
- siliconcompiler/tools/openfpgaloader/openfpgaloader.py +39 -0
- siliconcompiler/tools/openroad/__init__.py +0 -0
- siliconcompiler/tools/openroad/cts.py +45 -0
- siliconcompiler/tools/openroad/dfm.py +66 -0
- siliconcompiler/tools/openroad/export.py +131 -0
- siliconcompiler/tools/openroad/floorplan.py +70 -0
- siliconcompiler/tools/openroad/openroad.py +977 -0
- siliconcompiler/tools/openroad/physyn.py +27 -0
- siliconcompiler/tools/openroad/place.py +41 -0
- siliconcompiler/tools/openroad/rcx_bench.py +95 -0
- siliconcompiler/tools/openroad/rcx_extract.py +34 -0
- siliconcompiler/tools/openroad/route.py +45 -0
- siliconcompiler/tools/openroad/screenshot.py +60 -0
- siliconcompiler/tools/openroad/scripts/sc_apr.tcl +499 -0
- siliconcompiler/tools/openroad/scripts/sc_cts.tcl +64 -0
- siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +20 -0
- siliconcompiler/tools/openroad/scripts/sc_export.tcl +98 -0
- siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +413 -0
- siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +158 -0
- siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +7 -0
- siliconcompiler/tools/openroad/scripts/sc_place.tcl +84 -0
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +423 -0
- siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +63 -0
- siliconcompiler/tools/openroad/scripts/sc_rcx_bench.tcl +20 -0
- siliconcompiler/tools/openroad/scripts/sc_rcx_extract.tcl +12 -0
- siliconcompiler/tools/openroad/scripts/sc_route.tcl +133 -0
- siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +21 -0
- siliconcompiler/tools/openroad/scripts/sc_write.tcl +5 -0
- siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +361 -0
- siliconcompiler/tools/openroad/show.py +94 -0
- siliconcompiler/tools/openroad/templates/pex.tcl +8 -0
- siliconcompiler/tools/opensta/__init__.py +101 -0
- siliconcompiler/tools/opensta/report_libraries.py +28 -0
- siliconcompiler/tools/opensta/scripts/sc_procs.tcl +47 -0
- siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl +74 -0
- siliconcompiler/tools/opensta/scripts/sc_timing.tcl +268 -0
- siliconcompiler/tools/opensta/timing.py +214 -0
- siliconcompiler/tools/slang/__init__.py +49 -0
- siliconcompiler/tools/slang/lint.py +101 -0
- siliconcompiler/tools/surelog/__init__.py +123 -0
- siliconcompiler/tools/surelog/parse.py +183 -0
- siliconcompiler/tools/surelog/templates/output.v +7 -0
- siliconcompiler/tools/sv2v/convert.py +46 -0
- siliconcompiler/tools/sv2v/sv2v.py +37 -0
- siliconcompiler/tools/template/template.py +125 -0
- siliconcompiler/tools/verilator/compile.py +139 -0
- siliconcompiler/tools/verilator/lint.py +19 -0
- siliconcompiler/tools/verilator/parse.py +27 -0
- siliconcompiler/tools/verilator/verilator.py +172 -0
- siliconcompiler/tools/vivado/__init__.py +7 -0
- siliconcompiler/tools/vivado/bitstream.py +21 -0
- siliconcompiler/tools/vivado/place.py +21 -0
- siliconcompiler/tools/vivado/route.py +21 -0
- siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +6 -0
- siliconcompiler/tools/vivado/scripts/sc_place.tcl +2 -0
- siliconcompiler/tools/vivado/scripts/sc_route.tcl +4 -0
- siliconcompiler/tools/vivado/scripts/sc_run.tcl +45 -0
- siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +25 -0
- siliconcompiler/tools/vivado/syn_fpga.py +20 -0
- siliconcompiler/tools/vivado/vivado.py +147 -0
- siliconcompiler/tools/vpr/_json_constraint.py +63 -0
- siliconcompiler/tools/vpr/_xml_constraint.py +109 -0
- siliconcompiler/tools/vpr/place.py +137 -0
- siliconcompiler/tools/vpr/route.py +124 -0
- siliconcompiler/tools/vpr/screenshot.py +54 -0
- siliconcompiler/tools/vpr/show.py +88 -0
- siliconcompiler/tools/vpr/vpr.py +357 -0
- siliconcompiler/tools/xyce/xyce.py +36 -0
- siliconcompiler/tools/yosys/lec.py +56 -0
- siliconcompiler/tools/yosys/prepareLib.py +59 -0
- siliconcompiler/tools/yosys/sc_lec.tcl +84 -0
- siliconcompiler/tools/yosys/sc_syn.tcl +79 -0
- siliconcompiler/tools/yosys/syn_asic.py +565 -0
- siliconcompiler/tools/yosys/syn_asic.tcl +377 -0
- siliconcompiler/tools/yosys/syn_asic_fpga_shared.tcl +31 -0
- siliconcompiler/tools/yosys/syn_fpga.py +146 -0
- siliconcompiler/tools/yosys/syn_fpga.tcl +233 -0
- siliconcompiler/tools/yosys/syn_strategies.tcl +81 -0
- siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v +39 -0
- siliconcompiler/tools/yosys/templates/abc.const +2 -0
- siliconcompiler/tools/yosys/yosys.py +147 -0
- siliconcompiler/units.py +259 -0
- siliconcompiler/use.py +177 -0
- siliconcompiler/utils/__init__.py +423 -0
- siliconcompiler/utils/asic.py +158 -0
- siliconcompiler/utils/showtools.py +25 -0
- siliconcompiler-0.26.5.dist-info/LICENSE +190 -0
- siliconcompiler-0.26.5.dist-info/METADATA +195 -0
- siliconcompiler-0.26.5.dist-info/RECORD +251 -0
- siliconcompiler-0.26.5.dist-info/WHEEL +5 -0
- siliconcompiler-0.26.5.dist-info/entry_points.txt +12 -0
- siliconcompiler-0.26.5.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
|
|
2
|
+
from siliconcompiler.tools.openroad.openroad import setup as setup_tool
|
|
3
|
+
from siliconcompiler.tools.openroad.openroad import build_pex_corners
|
|
4
|
+
from siliconcompiler.tools.openroad.openroad import post_process as or_post_process
|
|
5
|
+
from siliconcompiler.tools.openroad.openroad import pre_process as or_pre_process
|
|
6
|
+
from siliconcompiler.tools.openroad.openroad import set_pnr_inputs, set_pnr_outputs
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def setup(chip):
|
|
10
|
+
'''
|
|
11
|
+
Not implemented yet
|
|
12
|
+
'''
|
|
13
|
+
|
|
14
|
+
# Generic tool setup.
|
|
15
|
+
setup_tool(chip)
|
|
16
|
+
|
|
17
|
+
set_pnr_inputs(chip)
|
|
18
|
+
set_pnr_outputs(chip)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def pre_process(chip):
|
|
22
|
+
or_pre_process(chip)
|
|
23
|
+
build_pex_corners(chip)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def post_process(chip):
|
|
27
|
+
or_post_process(chip)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
from siliconcompiler.tools.openroad.openroad import setup as setup_tool
|
|
3
|
+
from siliconcompiler.tools.openroad.openroad import build_pex_corners
|
|
4
|
+
from siliconcompiler.tools.openroad.openroad import post_process as or_post_process
|
|
5
|
+
from siliconcompiler.tools.openroad.openroad import pre_process as or_pre_process
|
|
6
|
+
from siliconcompiler.tools.openroad.openroad import _set_reports, set_pnr_inputs, set_pnr_outputs
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def setup(chip):
|
|
10
|
+
'''
|
|
11
|
+
Perform global and detail placements along with design violation repairs
|
|
12
|
+
'''
|
|
13
|
+
|
|
14
|
+
# Generic tool setup.
|
|
15
|
+
setup_tool(chip)
|
|
16
|
+
|
|
17
|
+
set_pnr_inputs(chip)
|
|
18
|
+
set_pnr_outputs(chip)
|
|
19
|
+
|
|
20
|
+
_set_reports(chip, [
|
|
21
|
+
'setup',
|
|
22
|
+
'unconstrained',
|
|
23
|
+
'power',
|
|
24
|
+
'drv_violations',
|
|
25
|
+
'fmax',
|
|
26
|
+
|
|
27
|
+
# Images
|
|
28
|
+
'placement_density',
|
|
29
|
+
'routing_congestion',
|
|
30
|
+
'power_density',
|
|
31
|
+
'optimization_placement'
|
|
32
|
+
])
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def pre_process(chip):
|
|
36
|
+
or_pre_process(chip)
|
|
37
|
+
build_pex_corners(chip)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def post_process(chip):
|
|
41
|
+
or_post_process(chip)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
from siliconcompiler.tools.openroad import openroad
|
|
2
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def setup_tool(chip):
|
|
6
|
+
''' Helper method for configs specific to extraction tasks.
|
|
7
|
+
'''
|
|
8
|
+
|
|
9
|
+
openroad.setup(chip)
|
|
10
|
+
|
|
11
|
+
step = chip.get('arg', 'step')
|
|
12
|
+
index = chip.get('arg', 'index')
|
|
13
|
+
tool, task = get_tool_task(chip, step, index)
|
|
14
|
+
|
|
15
|
+
chip.set('tool', tool, 'task', task, 'script', 'sc_rcx.tcl', step=step, index=index)
|
|
16
|
+
chip.set('tool', tool, 'task', task, 'threads', 1, step=step, index=index)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def setup_task(chip):
|
|
20
|
+
# Generic tool setup.
|
|
21
|
+
setup_tool(chip)
|
|
22
|
+
|
|
23
|
+
step = chip.get('arg', 'step')
|
|
24
|
+
index = chip.get('arg', 'index')
|
|
25
|
+
tool, task = get_tool_task(chip, step, index)
|
|
26
|
+
|
|
27
|
+
pdk = chip.get('option', 'pdk')
|
|
28
|
+
stackup = chip.get('option', 'stackup')
|
|
29
|
+
|
|
30
|
+
chip.set('tool', tool, 'task', task, 'var', 'libtype',
|
|
31
|
+
list(chip.getkeys('pdk', pdk, 'aprtech', tool, stackup))[0],
|
|
32
|
+
clobber=False, step=step, index=index)
|
|
33
|
+
chip.set('tool', tool, 'task', task, 'var', 'libtype',
|
|
34
|
+
'Library type used to select the lef file',
|
|
35
|
+
field='help')
|
|
36
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
37
|
+
",".join(['tool', tool, 'task', task, 'var', 'libtype']),
|
|
38
|
+
step=step, index=index)
|
|
39
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
40
|
+
",".join(['pdk',
|
|
41
|
+
pdk,
|
|
42
|
+
'aprtech',
|
|
43
|
+
tool,
|
|
44
|
+
stackup,
|
|
45
|
+
chip.get('tool', tool, 'task', task, 'var', 'libtype',
|
|
46
|
+
step=step, index=index)[0],
|
|
47
|
+
'lef']),
|
|
48
|
+
step=step, index=index)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def setup(chip):
|
|
52
|
+
''' Helper method for configs specific to extraction tasks.
|
|
53
|
+
'''
|
|
54
|
+
|
|
55
|
+
# Generic tool setup.
|
|
56
|
+
setup_task(chip)
|
|
57
|
+
|
|
58
|
+
design = chip.top()
|
|
59
|
+
|
|
60
|
+
step = chip.get('arg', 'step')
|
|
61
|
+
index = chip.get('arg', 'index')
|
|
62
|
+
tool, task = get_tool_task(chip, step, index)
|
|
63
|
+
|
|
64
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.def', step=step, index=index)
|
|
65
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.vg', step=step, index=index)
|
|
66
|
+
|
|
67
|
+
pdk = chip.get('option', 'pdk')
|
|
68
|
+
stackup = chip.get('option', 'stackup')
|
|
69
|
+
|
|
70
|
+
if chip.valid('pdk', pdk, 'var', 'openroad', 'rcx_bench_max_layer', stackup):
|
|
71
|
+
chip.set('tool', tool, 'task', task, 'var', 'max_layer',
|
|
72
|
+
chip.get('pdk', pdk, 'var', 'openroad', 'rcx_bench_max_layer', stackup)[0],
|
|
73
|
+
clobber=False, step=step, index=index)
|
|
74
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
75
|
+
",".join(['pdk', pdk, 'var', 'openroad', 'rcx_bench_max_layer', stackup]),
|
|
76
|
+
step=step, index=index)
|
|
77
|
+
else:
|
|
78
|
+
chip.set('tool', tool, 'task', task, 'var', 'max_layer',
|
|
79
|
+
chip.get('pdk', pdk, 'maxlayer', stackup),
|
|
80
|
+
clobber=False, step=step, index=index)
|
|
81
|
+
chip.set('tool', tool, 'task', task, 'var', 'max_layer',
|
|
82
|
+
'Maximum layer to generate extraction bench for',
|
|
83
|
+
field='help')
|
|
84
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
85
|
+
",".join(['tool', tool, 'task', task, 'var', 'max_layer']),
|
|
86
|
+
step=step, index=index)
|
|
87
|
+
|
|
88
|
+
chip.set('tool', tool, 'task', task, 'var', 'bench_length', '100',
|
|
89
|
+
clobber=False, step=step, index=index)
|
|
90
|
+
chip.set('tool', tool, 'task', task, 'var', 'bench_length',
|
|
91
|
+
'Length of bench wires',
|
|
92
|
+
field='help')
|
|
93
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
94
|
+
",".join(['tool', tool, 'task', task, 'var', 'bench_length']),
|
|
95
|
+
step=step, index=index)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from siliconcompiler.tools.openroad.rcx_bench import setup_task
|
|
2
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def setup(chip):
|
|
6
|
+
''' Helper method for configs specific to extraction tasks.
|
|
7
|
+
'''
|
|
8
|
+
|
|
9
|
+
# Generic tool setup.
|
|
10
|
+
setup_task(chip)
|
|
11
|
+
|
|
12
|
+
design = chip.top()
|
|
13
|
+
|
|
14
|
+
step = chip.get('arg', 'step')
|
|
15
|
+
index = chip.get('arg', 'index')
|
|
16
|
+
tool, task = get_tool_task(chip, step, index)
|
|
17
|
+
|
|
18
|
+
chip.set('tool', tool, 'task', task, 'var', 'corner',
|
|
19
|
+
'Parasitic corner to generate RCX file for',
|
|
20
|
+
field='help')
|
|
21
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
22
|
+
",".join(['tool', tool, 'task', task, 'var', 'corner']),
|
|
23
|
+
step=step, index=index)
|
|
24
|
+
|
|
25
|
+
if chip.valid('tool', tool, 'task', task, 'var', 'corner') and \
|
|
26
|
+
chip.get('tool', tool, 'task', task, 'var', 'corner', step=step, index=index):
|
|
27
|
+
corner = chip.get('tool', tool, 'task', task, 'var', 'corner', step=step, index=index)[0]
|
|
28
|
+
else:
|
|
29
|
+
# Placeholder since require will cause this to fail
|
|
30
|
+
corner = 'corner'
|
|
31
|
+
|
|
32
|
+
chip.add('tool', tool, 'task', task, 'input', f'{design}.def', step=step, index=index)
|
|
33
|
+
chip.add('tool', tool, 'task', task, 'input', f'{design}.{corner}.spef', step=step, index=index)
|
|
34
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.{corner}.rcx', step=step, index=index)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
from siliconcompiler.tools.openroad.openroad import setup as setup_tool
|
|
3
|
+
from siliconcompiler.tools.openroad.openroad import build_pex_corners
|
|
4
|
+
from siliconcompiler.tools.openroad.openroad import post_process as or_post_process
|
|
5
|
+
from siliconcompiler.tools.openroad.openroad import pre_process as or_pre_process
|
|
6
|
+
from siliconcompiler.tools.openroad.openroad import _set_reports, set_pnr_inputs, set_pnr_outputs
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def setup(chip):
|
|
10
|
+
'''
|
|
11
|
+
Performs filler insertion, global routing, antenna repair, and detailed routing
|
|
12
|
+
'''
|
|
13
|
+
|
|
14
|
+
# Generic tool setup.
|
|
15
|
+
setup_tool(chip)
|
|
16
|
+
|
|
17
|
+
set_pnr_inputs(chip)
|
|
18
|
+
set_pnr_outputs(chip)
|
|
19
|
+
|
|
20
|
+
_set_reports(chip, [
|
|
21
|
+
'setup',
|
|
22
|
+
'hold',
|
|
23
|
+
'unconstrained',
|
|
24
|
+
'clock_skew',
|
|
25
|
+
'power',
|
|
26
|
+
'drv_violations',
|
|
27
|
+
'fmax',
|
|
28
|
+
|
|
29
|
+
# Images
|
|
30
|
+
'placement_density',
|
|
31
|
+
'routing_congestion',
|
|
32
|
+
'power_density',
|
|
33
|
+
'clock_placement',
|
|
34
|
+
'clock_trees',
|
|
35
|
+
'optimization_placement'
|
|
36
|
+
])
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def pre_process(chip):
|
|
40
|
+
or_pre_process(chip)
|
|
41
|
+
build_pex_corners(chip)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def post_process(chip):
|
|
45
|
+
or_post_process(chip)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from siliconcompiler.tools.openroad import openroad
|
|
2
|
+
from siliconcompiler.tools.openroad.openroad import setup as setup_tool
|
|
3
|
+
from siliconcompiler.tools.openroad.openroad import build_pex_corners
|
|
4
|
+
from siliconcompiler.tools.openroad.show import copy_show_files, generic_show_setup
|
|
5
|
+
from siliconcompiler.tools.openroad.openroad import pre_process as or_pre_process
|
|
6
|
+
from siliconcompiler.tools.openroad.openroad import _set_reports
|
|
7
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
####################################################################
|
|
11
|
+
# Make Docs
|
|
12
|
+
####################################################################
|
|
13
|
+
def make_docs(chip):
|
|
14
|
+
openroad.make_docs(chip)
|
|
15
|
+
chip.set('tool', 'openroad', 'task', 'screenshot', 'var', 'show_filepath', '<path>')
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def setup(chip):
|
|
19
|
+
'''
|
|
20
|
+
Generate a PNG file from a layout file
|
|
21
|
+
'''
|
|
22
|
+
|
|
23
|
+
tool = 'openroad'
|
|
24
|
+
design = chip.top()
|
|
25
|
+
step = chip.get('arg', 'step')
|
|
26
|
+
index = chip.get('arg', 'index')
|
|
27
|
+
_, task = get_tool_task(chip, step, index)
|
|
28
|
+
|
|
29
|
+
# Generic tool setup.
|
|
30
|
+
setup_tool(chip)
|
|
31
|
+
|
|
32
|
+
generic_show_setup(chip, task, True)
|
|
33
|
+
|
|
34
|
+
chip.add('tool', tool, 'task', task, 'output', design + '.png', step=step, index=index)
|
|
35
|
+
|
|
36
|
+
chip.set('tool', tool, 'task', task, 'var', 'show_vertical_resolution', '1024',
|
|
37
|
+
step=step, index=index, clobber=False)
|
|
38
|
+
|
|
39
|
+
chip.set('tool', tool, 'task', task, 'var', 'include_report_images', 'false',
|
|
40
|
+
step=step, index=index, clobber=False)
|
|
41
|
+
chip.set('tool', tool, 'task', task, 'var', 'include_report_images',
|
|
42
|
+
'true/false, include the images in reports/',
|
|
43
|
+
field='help')
|
|
44
|
+
|
|
45
|
+
_set_reports(chip, [
|
|
46
|
+
# Images
|
|
47
|
+
'placement_density',
|
|
48
|
+
'routing_congestion',
|
|
49
|
+
'power_density',
|
|
50
|
+
'ir_drop',
|
|
51
|
+
'clock_placement',
|
|
52
|
+
'clock_trees',
|
|
53
|
+
'optimization_placement'
|
|
54
|
+
])
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def pre_process(chip):
|
|
58
|
+
or_pre_process(chip)
|
|
59
|
+
copy_show_files(chip)
|
|
60
|
+
build_pex_corners(chip)
|