siliconcompiler 0.28.9__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.
- siliconcompiler/_metadata.py +1 -1
- siliconcompiler/apps/sc_remote.py +15 -14
- siliconcompiler/apps/sc_show.py +5 -5
- siliconcompiler/apps/utils/replay.py +136 -0
- siliconcompiler/core.py +14 -12
- siliconcompiler/flows/_common.py +11 -13
- siliconcompiler/flows/asicflow.py +83 -42
- siliconcompiler/remote/__init__.py +11 -0
- siliconcompiler/remote/client.py +753 -815
- siliconcompiler/report/report.py +2 -0
- siliconcompiler/report/summary_table.py +1 -1
- siliconcompiler/scheduler/__init__.py +51 -9
- siliconcompiler/schema/schema_cfg.py +15 -3
- siliconcompiler/schema/schema_obj.py +16 -0
- siliconcompiler/sphinx_ext/dynamicgen.py +4 -3
- siliconcompiler/targets/gf180_demo.py +3 -3
- siliconcompiler/templates/replay/requirements.txt +6 -0
- siliconcompiler/templates/replay/run.py.j2 +22 -0
- siliconcompiler/templates/replay/setup.sh +17 -0
- siliconcompiler/tools/_common/__init__.py +15 -1
- siliconcompiler/tools/_common/asic.py +10 -3
- siliconcompiler/tools/builtin/concatenate.py +1 -1
- siliconcompiler/tools/openroad/__init__.py +103 -0
- siliconcompiler/tools/openroad/{openroad.py → _apr.py} +413 -422
- siliconcompiler/tools/openroad/antenna_repair.py +78 -0
- siliconcompiler/tools/openroad/clock_tree_synthesis.py +64 -0
- siliconcompiler/tools/openroad/detailed_placement.py +59 -0
- siliconcompiler/tools/openroad/detailed_route.py +62 -0
- siliconcompiler/tools/openroad/endcap_tapcell_insertion.py +52 -0
- siliconcompiler/tools/openroad/fillercell_insertion.py +58 -0
- siliconcompiler/tools/openroad/{dfm.py → fillmetal_insertion.py} +35 -19
- siliconcompiler/tools/openroad/global_placement.py +58 -0
- siliconcompiler/tools/openroad/global_route.py +63 -0
- siliconcompiler/tools/openroad/init_floorplan.py +103 -0
- siliconcompiler/tools/openroad/macro_placement.py +65 -0
- siliconcompiler/tools/openroad/metrics.py +23 -8
- siliconcompiler/tools/openroad/pin_placement.py +56 -0
- siliconcompiler/tools/openroad/power_grid.py +65 -0
- siliconcompiler/tools/openroad/rcx_bench.py +7 -4
- siliconcompiler/tools/openroad/rcx_extract.py +2 -1
- siliconcompiler/tools/openroad/rdlroute.py +4 -4
- siliconcompiler/tools/openroad/repair_design.py +59 -0
- siliconcompiler/tools/openroad/repair_timing.py +63 -0
- siliconcompiler/tools/openroad/screenshot.py +9 -20
- siliconcompiler/tools/openroad/scripts/apr/postamble.tcl +44 -0
- siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +95 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl +51 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +62 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl +41 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_detailed_route.tcl +71 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_endcap_tapcell_insertion.tcl +55 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl +27 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl +36 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +26 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl +61 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +333 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +123 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl +22 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl +41 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +60 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +68 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +83 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +125 -0
- siliconcompiler/tools/openroad/scripts/common/debugging.tcl +28 -0
- siliconcompiler/tools/openroad/scripts/common/procs.tcl +675 -0
- siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl +59 -0
- siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl +20 -0
- siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl +16 -0
- siliconcompiler/tools/openroad/scripts/common/reports.tcl +180 -0
- siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +18 -0
- siliconcompiler/tools/openroad/scripts/common/write_images.tcl +395 -0
- siliconcompiler/tools/openroad/scripts/{sc_rcx_bench.tcl → rcx/sc_rcx_bench.tcl} +5 -5
- siliconcompiler/tools/openroad/scripts/{sc_rcx_extract.tcl → rcx/sc_rcx_extract.tcl} +0 -0
- siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +5 -16
- siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +51 -51
- siliconcompiler/tools/openroad/scripts/sc_show.tcl +105 -0
- siliconcompiler/tools/openroad/show.py +28 -23
- siliconcompiler/tools/openroad/{export.py → write_data.py} +31 -26
- siliconcompiler/tools/opensta/__init__.py +1 -1
- siliconcompiler/tools/yosys/syn_asic.py +7 -0
- siliconcompiler/tools/yosys/syn_asic.tcl +27 -6
- siliconcompiler/tools/yosys/syn_fpga.tcl +26 -18
- siliconcompiler/toolscripts/_tools.json +4 -4
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/METADATA +14 -12
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/RECORD +90 -63
- siliconcompiler/tools/openroad/cts.py +0 -45
- siliconcompiler/tools/openroad/floorplan.py +0 -75
- siliconcompiler/tools/openroad/physyn.py +0 -27
- siliconcompiler/tools/openroad/place.py +0 -41
- siliconcompiler/tools/openroad/route.py +0 -45
- siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
- siliconcompiler/tools/openroad/scripts/sc_apr.tcl +0 -514
- siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -68
- siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +0 -22
- siliconcompiler/tools/openroad/scripts/sc_export.tcl +0 -100
- siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +0 -456
- siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +0 -1
- siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -6
- siliconcompiler/tools/openroad/scripts/sc_place.tcl +0 -84
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +0 -494
- siliconcompiler/tools/openroad/scripts/sc_report.tcl +0 -189
- siliconcompiler/tools/openroad/scripts/sc_route.tcl +0 -143
- siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -18
- siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +0 -393
- /siliconcompiler/tools/openroad/scripts/{sc_write.tcl → common/write_data.tcl} +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.28.9.dist-info → siliconcompiler-0.29.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
from siliconcompiler import NodeStatus
|
|
2
|
+
|
|
3
|
+
from siliconcompiler.tools._common import get_tool_task, has_pre_post_script
|
|
4
|
+
|
|
5
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
6
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
8
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
9
|
+
define_grt_params, define_dpl_params, define_ant_params
|
|
10
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
11
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def setup(chip):
|
|
15
|
+
'''
|
|
16
|
+
Perform antenna repair
|
|
17
|
+
'''
|
|
18
|
+
|
|
19
|
+
# Generic apr tool setup.
|
|
20
|
+
apr_setup(chip)
|
|
21
|
+
|
|
22
|
+
# Task setup
|
|
23
|
+
step = chip.get('arg', 'step')
|
|
24
|
+
index = chip.get('arg', 'index')
|
|
25
|
+
tool, task = get_tool_task(chip, step, index)
|
|
26
|
+
|
|
27
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_antenna_repair.tcl',
|
|
28
|
+
step=step, index=index)
|
|
29
|
+
|
|
30
|
+
# Setup task IO
|
|
31
|
+
set_pnr_inputs(chip)
|
|
32
|
+
set_pnr_outputs(chip)
|
|
33
|
+
|
|
34
|
+
# set default values for openroad
|
|
35
|
+
define_ord_params(chip)
|
|
36
|
+
define_sta_params(chip)
|
|
37
|
+
define_sdc_params(chip)
|
|
38
|
+
define_ant_params(chip)
|
|
39
|
+
define_grt_params(chip)
|
|
40
|
+
define_dpl_params(chip)
|
|
41
|
+
|
|
42
|
+
set_reports(chip, [
|
|
43
|
+
'setup',
|
|
44
|
+
'hold',
|
|
45
|
+
'unconstrained',
|
|
46
|
+
'clock_skew',
|
|
47
|
+
'power',
|
|
48
|
+
'drv_violations',
|
|
49
|
+
'fmax',
|
|
50
|
+
|
|
51
|
+
# Images
|
|
52
|
+
'placement_density',
|
|
53
|
+
'routing_congestion',
|
|
54
|
+
'power_density',
|
|
55
|
+
'optimization_placement',
|
|
56
|
+
'clock_placement',
|
|
57
|
+
'clock_trees'
|
|
58
|
+
])
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def pre_process(chip):
|
|
62
|
+
step = chip.get('arg', 'step')
|
|
63
|
+
index = chip.get('arg', 'index')
|
|
64
|
+
tool, task = get_tool_task(chip, step, index)
|
|
65
|
+
|
|
66
|
+
if not has_pre_post_script(chip) and \
|
|
67
|
+
chip.get('tool', tool, 'task', task, 'var', 'ant_check',
|
|
68
|
+
step=step, index=index)[0] == 'false':
|
|
69
|
+
chip.set('record', 'status', NodeStatus.SKIPPED, step=step, index=index)
|
|
70
|
+
chip.logger.warning(f'{step}{index} will be skipped since antenna repair is disabled.')
|
|
71
|
+
return
|
|
72
|
+
|
|
73
|
+
define_ord_files(chip)
|
|
74
|
+
build_pex_corners(chip)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def post_process(chip):
|
|
78
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
5
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
6
|
+
define_cts_params, define_dpl_params, define_rsz_params
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup(chip):
|
|
12
|
+
'''
|
|
13
|
+
Perform clock tree synthesis
|
|
14
|
+
'''
|
|
15
|
+
|
|
16
|
+
# Generic apr tool setup.
|
|
17
|
+
apr_setup(chip)
|
|
18
|
+
|
|
19
|
+
# Task setup
|
|
20
|
+
step = chip.get('arg', 'step')
|
|
21
|
+
index = chip.get('arg', 'index')
|
|
22
|
+
tool, task = get_tool_task(chip, step, index)
|
|
23
|
+
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_clock_tree_synthesis.tcl',
|
|
25
|
+
step=step, index=index)
|
|
26
|
+
|
|
27
|
+
# Setup task IO
|
|
28
|
+
set_pnr_inputs(chip)
|
|
29
|
+
set_pnr_outputs(chip)
|
|
30
|
+
|
|
31
|
+
# set default values for openroad
|
|
32
|
+
define_ord_params(chip)
|
|
33
|
+
define_sta_params(chip)
|
|
34
|
+
define_sdc_params(chip)
|
|
35
|
+
define_cts_params(chip)
|
|
36
|
+
define_dpl_params(chip)
|
|
37
|
+
define_rsz_params(chip)
|
|
38
|
+
|
|
39
|
+
set_reports(chip, [
|
|
40
|
+
'setup',
|
|
41
|
+
'hold',
|
|
42
|
+
'unconstrained',
|
|
43
|
+
'clock_skew',
|
|
44
|
+
'power',
|
|
45
|
+
'drv_violations',
|
|
46
|
+
'fmax',
|
|
47
|
+
|
|
48
|
+
# Images
|
|
49
|
+
'placement_density',
|
|
50
|
+
'routing_congestion',
|
|
51
|
+
'power_density',
|
|
52
|
+
'optimization_placement',
|
|
53
|
+
'clock_placement',
|
|
54
|
+
'clock_trees'
|
|
55
|
+
])
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def pre_process(chip):
|
|
59
|
+
define_ord_files(chip)
|
|
60
|
+
build_pex_corners(chip)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def post_process(chip):
|
|
64
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
5
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
6
|
+
define_dpl_params, define_dpo_params
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup(chip):
|
|
12
|
+
'''
|
|
13
|
+
Perform detailed placement
|
|
14
|
+
'''
|
|
15
|
+
|
|
16
|
+
# Generic apr tool setup.
|
|
17
|
+
apr_setup(chip)
|
|
18
|
+
|
|
19
|
+
# Task setup
|
|
20
|
+
step = chip.get('arg', 'step')
|
|
21
|
+
index = chip.get('arg', 'index')
|
|
22
|
+
tool, task = get_tool_task(chip, step, index)
|
|
23
|
+
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_detailed_placement.tcl',
|
|
25
|
+
step=step, index=index)
|
|
26
|
+
|
|
27
|
+
# Setup task IO
|
|
28
|
+
set_pnr_inputs(chip)
|
|
29
|
+
set_pnr_outputs(chip)
|
|
30
|
+
|
|
31
|
+
# set default values for openroad
|
|
32
|
+
define_ord_params(chip)
|
|
33
|
+
define_sta_params(chip)
|
|
34
|
+
define_sdc_params(chip)
|
|
35
|
+
define_dpl_params(chip)
|
|
36
|
+
define_dpo_params(chip)
|
|
37
|
+
|
|
38
|
+
set_reports(chip, [
|
|
39
|
+
'setup',
|
|
40
|
+
'unconstrained',
|
|
41
|
+
'power',
|
|
42
|
+
'drv_violations',
|
|
43
|
+
'fmax',
|
|
44
|
+
|
|
45
|
+
# Images
|
|
46
|
+
'placement_density',
|
|
47
|
+
'routing_congestion',
|
|
48
|
+
'power_density',
|
|
49
|
+
'optimization_placement'
|
|
50
|
+
])
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def pre_process(chip):
|
|
54
|
+
define_ord_files(chip)
|
|
55
|
+
build_pex_corners(chip)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def post_process(chip):
|
|
59
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
5
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
6
|
+
define_drt_params
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup(chip):
|
|
12
|
+
'''
|
|
13
|
+
Perform detailed routing
|
|
14
|
+
'''
|
|
15
|
+
|
|
16
|
+
# Generic apr tool setup.
|
|
17
|
+
apr_setup(chip)
|
|
18
|
+
|
|
19
|
+
# Task setup
|
|
20
|
+
step = chip.get('arg', 'step')
|
|
21
|
+
index = chip.get('arg', 'index')
|
|
22
|
+
tool, task = get_tool_task(chip, step, index)
|
|
23
|
+
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_detailed_route.tcl',
|
|
25
|
+
step=step, index=index)
|
|
26
|
+
|
|
27
|
+
# Setup task IO
|
|
28
|
+
set_pnr_inputs(chip)
|
|
29
|
+
set_pnr_outputs(chip)
|
|
30
|
+
|
|
31
|
+
# set default values for openroad
|
|
32
|
+
define_ord_params(chip)
|
|
33
|
+
define_sta_params(chip)
|
|
34
|
+
define_sdc_params(chip)
|
|
35
|
+
define_drt_params(chip)
|
|
36
|
+
|
|
37
|
+
set_reports(chip, [
|
|
38
|
+
'setup',
|
|
39
|
+
'hold',
|
|
40
|
+
'unconstrained',
|
|
41
|
+
'clock_skew',
|
|
42
|
+
'power',
|
|
43
|
+
'drv_violations',
|
|
44
|
+
'fmax',
|
|
45
|
+
|
|
46
|
+
# Images
|
|
47
|
+
'placement_density',
|
|
48
|
+
'routing_congestion',
|
|
49
|
+
'power_density',
|
|
50
|
+
'optimization_placement',
|
|
51
|
+
'clock_placement',
|
|
52
|
+
'clock_trees'
|
|
53
|
+
])
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def pre_process(chip):
|
|
57
|
+
define_ord_files(chip)
|
|
58
|
+
build_pex_corners(chip)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def post_process(chip):
|
|
62
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
5
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
6
|
+
define_tapcell_params, define_tiecell_params
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, \
|
|
8
|
+
define_ord_files, define_tapcell_files
|
|
9
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def setup(chip):
|
|
13
|
+
'''
|
|
14
|
+
Perform endcap and tap cell insertion
|
|
15
|
+
'''
|
|
16
|
+
|
|
17
|
+
# Generic apr tool setup.
|
|
18
|
+
apr_setup(chip)
|
|
19
|
+
|
|
20
|
+
# Task setup
|
|
21
|
+
step = chip.get('arg', 'step')
|
|
22
|
+
index = chip.get('arg', 'index')
|
|
23
|
+
tool, task = get_tool_task(chip, step, index)
|
|
24
|
+
|
|
25
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_endcap_tapcell_insertion.tcl',
|
|
26
|
+
step=step, index=index)
|
|
27
|
+
|
|
28
|
+
# Setup task IO
|
|
29
|
+
set_pnr_inputs(chip)
|
|
30
|
+
set_pnr_outputs(chip)
|
|
31
|
+
|
|
32
|
+
# set default values for openroad
|
|
33
|
+
define_ord_params(chip)
|
|
34
|
+
define_sta_params(chip)
|
|
35
|
+
define_sdc_params(chip)
|
|
36
|
+
define_tapcell_params(chip)
|
|
37
|
+
define_tiecell_params(chip)
|
|
38
|
+
|
|
39
|
+
set_reports(chip, [
|
|
40
|
+
# Images
|
|
41
|
+
'placement_density'
|
|
42
|
+
])
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def pre_process(chip):
|
|
46
|
+
define_ord_files(chip)
|
|
47
|
+
define_tapcell_files(chip)
|
|
48
|
+
build_pex_corners(chip)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def post_process(chip):
|
|
52
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
5
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
6
|
+
define_dpl_params
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup(chip):
|
|
12
|
+
'''
|
|
13
|
+
Perform filler cell insertion
|
|
14
|
+
'''
|
|
15
|
+
|
|
16
|
+
# Generic apr tool setup.
|
|
17
|
+
apr_setup(chip)
|
|
18
|
+
|
|
19
|
+
# Task setup
|
|
20
|
+
step = chip.get('arg', 'step')
|
|
21
|
+
index = chip.get('arg', 'index')
|
|
22
|
+
tool, task = get_tool_task(chip, step, index)
|
|
23
|
+
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_fillercell_insertion.tcl',
|
|
25
|
+
step=step, index=index)
|
|
26
|
+
|
|
27
|
+
# Setup task IO
|
|
28
|
+
set_pnr_inputs(chip)
|
|
29
|
+
set_pnr_outputs(chip)
|
|
30
|
+
|
|
31
|
+
# set default values for openroad
|
|
32
|
+
define_ord_params(chip)
|
|
33
|
+
define_sta_params(chip)
|
|
34
|
+
define_sdc_params(chip)
|
|
35
|
+
define_dpl_params(chip)
|
|
36
|
+
|
|
37
|
+
set_reports(chip, [
|
|
38
|
+
'setup',
|
|
39
|
+
'hold',
|
|
40
|
+
'unconstrained',
|
|
41
|
+
'power',
|
|
42
|
+
'drv_violations',
|
|
43
|
+
'fmax',
|
|
44
|
+
|
|
45
|
+
# Images
|
|
46
|
+
'placement_density',
|
|
47
|
+
'routing_congestion',
|
|
48
|
+
'power_density'
|
|
49
|
+
])
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def pre_process(chip):
|
|
53
|
+
define_ord_files(chip)
|
|
54
|
+
build_pex_corners(chip)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def post_process(chip):
|
|
58
|
+
extract_metrics(chip)
|
|
@@ -1,26 +1,44 @@
|
|
|
1
|
+
from siliconcompiler import NodeStatus
|
|
1
2
|
|
|
2
|
-
from siliconcompiler.tools.
|
|
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
|
-
from siliconcompiler.tools._common import get_tool_task
|
|
3
|
+
from siliconcompiler.tools._common import get_tool_task, has_pre_post_script
|
|
8
4
|
from siliconcompiler.tools._common.asic import get_mainlib
|
|
9
|
-
|
|
5
|
+
|
|
6
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
9
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
10
|
+
define_fin_params
|
|
11
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
12
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
10
13
|
|
|
11
14
|
|
|
12
15
|
def setup(chip):
|
|
13
16
|
'''
|
|
14
|
-
|
|
17
|
+
Perform fill metal insertion
|
|
15
18
|
'''
|
|
16
19
|
|
|
17
|
-
# Generic tool setup.
|
|
18
|
-
|
|
20
|
+
# Generic apr tool setup.
|
|
21
|
+
apr_setup(chip)
|
|
19
22
|
|
|
23
|
+
# Task setup
|
|
24
|
+
step = chip.get('arg', 'step')
|
|
25
|
+
index = chip.get('arg', 'index')
|
|
26
|
+
tool, task = get_tool_task(chip, step, index)
|
|
27
|
+
|
|
28
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_fillmetal_insertion.tcl',
|
|
29
|
+
step=step, index=index)
|
|
30
|
+
|
|
31
|
+
# Setup task IO
|
|
20
32
|
set_pnr_inputs(chip)
|
|
21
33
|
set_pnr_outputs(chip)
|
|
22
34
|
|
|
23
|
-
|
|
35
|
+
# set default values for openroad
|
|
36
|
+
define_ord_params(chip)
|
|
37
|
+
define_sta_params(chip)
|
|
38
|
+
define_sdc_params(chip)
|
|
39
|
+
define_fin_params(chip)
|
|
40
|
+
|
|
41
|
+
set_reports(chip, [
|
|
24
42
|
'setup',
|
|
25
43
|
'hold',
|
|
26
44
|
'unconstrained',
|
|
@@ -33,9 +51,9 @@ def setup(chip):
|
|
|
33
51
|
'placement_density',
|
|
34
52
|
'routing_congestion',
|
|
35
53
|
'power_density',
|
|
54
|
+
'optimization_placement',
|
|
36
55
|
'clock_placement',
|
|
37
|
-
'clock_trees'
|
|
38
|
-
'optimization_placement'
|
|
56
|
+
'clock_trees'
|
|
39
57
|
])
|
|
40
58
|
|
|
41
59
|
|
|
@@ -43,10 +61,7 @@ def pre_process(chip):
|
|
|
43
61
|
step = chip.get('arg', 'step')
|
|
44
62
|
index = chip.get('arg', 'index')
|
|
45
63
|
tool, task = get_tool_task(chip, step, index)
|
|
46
|
-
if not chip
|
|
47
|
-
step=step, index=index) and \
|
|
48
|
-
not chip.find_files('tool', tool, 'task', task, 'postscript',
|
|
49
|
-
step=step, index=index) and \
|
|
64
|
+
if not has_pre_post_script(chip) and \
|
|
50
65
|
chip.get('tool', tool, 'task', task, 'var', 'fin_add_fill',
|
|
51
66
|
step=step, index=index) == ["true"]:
|
|
52
67
|
pdk = chip.get('option', 'pdk')
|
|
@@ -57,10 +72,11 @@ def pre_process(chip):
|
|
|
57
72
|
if not chip.find_files('pdk', pdk, 'aprtech', tool, stackup, libtype, 'fill'):
|
|
58
73
|
chip.set('record', 'status', NodeStatus.SKIPPED, step=step, index=index)
|
|
59
74
|
chip.logger.warning(f'{step}{index} will be skipped since there is nothing to do.')
|
|
75
|
+
return
|
|
60
76
|
|
|
61
|
-
|
|
77
|
+
define_ord_files(chip)
|
|
62
78
|
build_pex_corners(chip)
|
|
63
79
|
|
|
64
80
|
|
|
65
81
|
def post_process(chip):
|
|
66
|
-
|
|
82
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
5
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
6
|
+
define_gpl_params, define_grt_params, define_rsz_params
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup(chip):
|
|
12
|
+
'''
|
|
13
|
+
Perform global placement
|
|
14
|
+
'''
|
|
15
|
+
|
|
16
|
+
# Generic apr tool setup.
|
|
17
|
+
apr_setup(chip)
|
|
18
|
+
|
|
19
|
+
# Task setup
|
|
20
|
+
step = chip.get('arg', 'step')
|
|
21
|
+
index = chip.get('arg', 'index')
|
|
22
|
+
tool, task = get_tool_task(chip, step, index)
|
|
23
|
+
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_global_placement.tcl',
|
|
25
|
+
step=step, index=index)
|
|
26
|
+
|
|
27
|
+
# Setup task IO
|
|
28
|
+
set_pnr_inputs(chip)
|
|
29
|
+
set_pnr_outputs(chip)
|
|
30
|
+
|
|
31
|
+
# set default values for openroad
|
|
32
|
+
define_ord_params(chip)
|
|
33
|
+
define_sta_params(chip)
|
|
34
|
+
define_sdc_params(chip)
|
|
35
|
+
define_gpl_params(chip)
|
|
36
|
+
define_grt_params(chip)
|
|
37
|
+
define_rsz_params(chip)
|
|
38
|
+
|
|
39
|
+
set_reports(chip, [
|
|
40
|
+
'setup',
|
|
41
|
+
'unconstrained',
|
|
42
|
+
'power',
|
|
43
|
+
'fmax',
|
|
44
|
+
|
|
45
|
+
# Images
|
|
46
|
+
'placement_density',
|
|
47
|
+
'routing_congestion',
|
|
48
|
+
'power_density'
|
|
49
|
+
])
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def pre_process(chip):
|
|
53
|
+
define_ord_files(chip)
|
|
54
|
+
build_pex_corners(chip)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def post_process(chip):
|
|
58
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
2
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
3
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
5
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
6
|
+
define_grt_params, define_drt_params
|
|
7
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
8
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup(chip):
|
|
12
|
+
'''
|
|
13
|
+
Perform global routing
|
|
14
|
+
'''
|
|
15
|
+
|
|
16
|
+
# Generic apr tool setup.
|
|
17
|
+
apr_setup(chip)
|
|
18
|
+
|
|
19
|
+
# Task setup
|
|
20
|
+
step = chip.get('arg', 'step')
|
|
21
|
+
index = chip.get('arg', 'index')
|
|
22
|
+
tool, task = get_tool_task(chip, step, index)
|
|
23
|
+
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_global_route.tcl',
|
|
25
|
+
step=step, index=index)
|
|
26
|
+
|
|
27
|
+
# Setup task IO
|
|
28
|
+
set_pnr_inputs(chip)
|
|
29
|
+
set_pnr_outputs(chip)
|
|
30
|
+
|
|
31
|
+
# set default values for openroad
|
|
32
|
+
define_ord_params(chip)
|
|
33
|
+
define_sta_params(chip)
|
|
34
|
+
define_sdc_params(chip)
|
|
35
|
+
define_grt_params(chip, load_all=True)
|
|
36
|
+
define_drt_params(chip)
|
|
37
|
+
|
|
38
|
+
set_reports(chip, [
|
|
39
|
+
'setup',
|
|
40
|
+
'hold',
|
|
41
|
+
'unconstrained',
|
|
42
|
+
'clock_skew',
|
|
43
|
+
'power',
|
|
44
|
+
'drv_violations',
|
|
45
|
+
'fmax',
|
|
46
|
+
|
|
47
|
+
# Images
|
|
48
|
+
'placement_density',
|
|
49
|
+
'routing_congestion',
|
|
50
|
+
'power_density',
|
|
51
|
+
'optimization_placement',
|
|
52
|
+
'clock_placement',
|
|
53
|
+
'clock_trees'
|
|
54
|
+
])
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def pre_process(chip):
|
|
58
|
+
define_ord_files(chip)
|
|
59
|
+
build_pex_corners(chip)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def post_process(chip):
|
|
63
|
+
extract_metrics(chip)
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import input_provides, add_common_file, get_tool_task
|
|
2
|
+
from siliconcompiler.tools._common.asic import set_tool_task_var
|
|
3
|
+
|
|
4
|
+
from siliconcompiler.tools.openroad._apr import setup as apr_setup
|
|
5
|
+
from siliconcompiler.tools.openroad._apr import set_reports, set_pnr_inputs, set_pnr_outputs
|
|
6
|
+
from siliconcompiler.tools.openroad._apr import \
|
|
7
|
+
define_ord_params, define_sta_params, define_sdc_params, \
|
|
8
|
+
define_tiecell_params, define_pad_params, define_ppl_params
|
|
9
|
+
from siliconcompiler.tools.openroad._apr import build_pex_corners, define_ord_files
|
|
10
|
+
from siliconcompiler.tools.openroad._apr import extract_metrics
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def setup(chip):
|
|
14
|
+
'''
|
|
15
|
+
Perform floorplanning and initial pin placements
|
|
16
|
+
'''
|
|
17
|
+
|
|
18
|
+
# Generic apr tool setup.
|
|
19
|
+
apr_setup(chip)
|
|
20
|
+
|
|
21
|
+
# Task setup
|
|
22
|
+
design = chip.top()
|
|
23
|
+
step = chip.get('arg', 'step')
|
|
24
|
+
index = chip.get('arg', 'index')
|
|
25
|
+
tool, task = get_tool_task(chip, step, index)
|
|
26
|
+
|
|
27
|
+
chip.set('tool', tool, 'task', task, 'script', 'apr/sc_init_floorplan.tcl',
|
|
28
|
+
step=step, index=index)
|
|
29
|
+
|
|
30
|
+
# Setup task IO
|
|
31
|
+
set_pnr_inputs(chip)
|
|
32
|
+
set_pnr_outputs(chip)
|
|
33
|
+
add_common_file(chip, 'sc_pin_constraint', 'tcl/sc_pin_constraints.tcl')
|
|
34
|
+
|
|
35
|
+
# set default values for task
|
|
36
|
+
define_ord_params(chip)
|
|
37
|
+
define_sta_params(chip)
|
|
38
|
+
define_sdc_params(chip)
|
|
39
|
+
define_pad_params(chip)
|
|
40
|
+
define_ppl_params(chip)
|
|
41
|
+
define_tiecell_params(chip)
|
|
42
|
+
|
|
43
|
+
set_tool_task_var(chip, param_key='ifp_snap_strategy',
|
|
44
|
+
default_value='site',
|
|
45
|
+
schelp='Snapping strategy to use when placing macros. '
|
|
46
|
+
'Allowed values: none, site, manufacturing_grid')
|
|
47
|
+
|
|
48
|
+
set_tool_task_var(chip, param_key='remove_synth_buffers',
|
|
49
|
+
default_value=True,
|
|
50
|
+
schelp='remove buffers inserted by synthesis')
|
|
51
|
+
|
|
52
|
+
set_tool_task_var(chip, param_key='remove_dead_logic',
|
|
53
|
+
default_value=False,
|
|
54
|
+
schelp='remove logic which does not drive a primary output')
|
|
55
|
+
|
|
56
|
+
# Handle additional input files
|
|
57
|
+
if chip.valid('input', 'asic', 'floorplan') and \
|
|
58
|
+
chip.get('input', 'asic', 'floorplan', step=step, index=index):
|
|
59
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
60
|
+
",".join(['input', 'asic', 'floorplan']),
|
|
61
|
+
step=step, index=index)
|
|
62
|
+
|
|
63
|
+
if f'{design}.vg' in input_provides(chip, step, index):
|
|
64
|
+
chip.add('tool', tool, 'task', task, 'input', f'{design}.vg',
|
|
65
|
+
step=step, index=index)
|
|
66
|
+
else:
|
|
67
|
+
chip.add('tool', tool, 'task', task, 'require', 'input,netlist,verilog',
|
|
68
|
+
step=step, index=index)
|
|
69
|
+
|
|
70
|
+
set_reports(chip, [
|
|
71
|
+
'check_setup',
|
|
72
|
+
'setup',
|
|
73
|
+
'unconstrained',
|
|
74
|
+
'power'
|
|
75
|
+
])
|
|
76
|
+
|
|
77
|
+
# Setup required
|
|
78
|
+
for component in chip.getkeys('constraint', 'component'):
|
|
79
|
+
for key in chip.getkeys('constraint', 'component', component):
|
|
80
|
+
if chip.get('constraint', 'component', component, key, step=step, index=index):
|
|
81
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
82
|
+
','.join(['constraint', 'component', component, key]),
|
|
83
|
+
step=step, index=index)
|
|
84
|
+
for pin in chip.getkeys('constraint', 'pin'):
|
|
85
|
+
for key in chip.getkeys('constraint', 'pin', pin):
|
|
86
|
+
if chip.get('constraint', 'pin', pin, key, step=step, index=index):
|
|
87
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
88
|
+
','.join(['constraint', 'pin', pin, key]),
|
|
89
|
+
step=step, index=index)
|
|
90
|
+
for ifp in ('aspectratio', 'density', 'corearea', 'coremargin', 'outline'):
|
|
91
|
+
if chip.get('constraint', ifp, step=step, index=index):
|
|
92
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
93
|
+
','.join(['constraint', ifp]),
|
|
94
|
+
step=step, index=index)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def pre_process(chip):
|
|
98
|
+
build_pex_corners(chip)
|
|
99
|
+
define_ord_files(chip)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def post_process(chip):
|
|
103
|
+
extract_metrics(chip)
|