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,62 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Clock tree synthesis
|
|
16
|
+
# (skip if no clocks defined)
|
|
17
|
+
###############################
|
|
18
|
+
|
|
19
|
+
if { [llength [all_clocks]] > 0 } {
|
|
20
|
+
# Clone clock tree inverters next to register loads
|
|
21
|
+
# so cts does not try to buffer the inverted clocks.
|
|
22
|
+
repair_clock_inverters
|
|
23
|
+
|
|
24
|
+
set sc_cts_arguments []
|
|
25
|
+
if { [lindex [sc_cfg_tool_task_get var cts_balance_levels] 0] == "true" } {
|
|
26
|
+
lappend sc_cts_arguments "-balance_levels"
|
|
27
|
+
}
|
|
28
|
+
if { [lindex [sc_cfg_tool_task_get var cts_obstruction_aware] 0] == "true" } {
|
|
29
|
+
lappend sc_cts_arguments "-obstruction_aware"
|
|
30
|
+
}
|
|
31
|
+
if { [llength [sc_cfg_get library $sc_mainlib asic cells clkbuf]] > 0 } {
|
|
32
|
+
lappend sc_cts_arguments "-buf_list" [sc_cfg_get library $sc_mainlib asic cells clkbuf]
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
set cts_distance_between_buffers \
|
|
36
|
+
[lindex [sc_cfg_tool_task_get var cts_distance_between_buffers] 0]
|
|
37
|
+
clock_tree_synthesis \
|
|
38
|
+
-sink_clustering_enable \
|
|
39
|
+
-sink_clustering_size [lindex [sc_cfg_tool_task_get var cts_cluster_size] 0] \
|
|
40
|
+
-sink_clustering_max_diameter [lindex [sc_cfg_tool_task_get var cts_cluster_diameter] 0] \
|
|
41
|
+
-distance_between_buffers $cts_distance_between_buffers \
|
|
42
|
+
{*}$sc_cts_arguments
|
|
43
|
+
|
|
44
|
+
set_propagated_clock [all_clocks]
|
|
45
|
+
|
|
46
|
+
estimate_parasitics -placement
|
|
47
|
+
|
|
48
|
+
repair_clock_nets
|
|
49
|
+
|
|
50
|
+
sc_detailed_placement
|
|
51
|
+
|
|
52
|
+
global_connect
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# estimate for metrics
|
|
56
|
+
estimate_parasitics -placement
|
|
57
|
+
|
|
58
|
+
###############################
|
|
59
|
+
# Task Postamble
|
|
60
|
+
###############################
|
|
61
|
+
|
|
62
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# DETAILED PLACEMENT
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
sc_detailed_placement
|
|
19
|
+
|
|
20
|
+
if { [lindex [sc_cfg_tool_task_get var dpo_enable] 0] == "true" } {
|
|
21
|
+
improve_placement \
|
|
22
|
+
-max_displacement [lindex [sc_cfg_tool_task_get var dpo_max_displacement] 0]
|
|
23
|
+
|
|
24
|
+
# Do another detailed placement in case DPO leaves violations behind
|
|
25
|
+
sc_detailed_placement
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
optimize_mirroring
|
|
29
|
+
|
|
30
|
+
check_placement -verbose
|
|
31
|
+
|
|
32
|
+
global_connect
|
|
33
|
+
|
|
34
|
+
# estimate for metrics
|
|
35
|
+
estimate_parasitics -placement
|
|
36
|
+
|
|
37
|
+
###############################
|
|
38
|
+
# Task Postamble
|
|
39
|
+
###############################
|
|
40
|
+
|
|
41
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Detailed Routing
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
set drt_arguments []
|
|
19
|
+
if { [lindex [sc_cfg_tool_task_get {var} drt_disable_via_gen] 0] == "true" } {
|
|
20
|
+
lappend drt_arguments "-disable_via_gen"
|
|
21
|
+
}
|
|
22
|
+
set drt_process_node [lindex [sc_cfg_tool_task_get {var} drt_process_node] 0]
|
|
23
|
+
if { $drt_process_node != "" } {
|
|
24
|
+
lappend drt_arguments "-db_process_node" $drt_process_node
|
|
25
|
+
}
|
|
26
|
+
set drt_via_in_pin_bottom_layer \
|
|
27
|
+
[sc_get_layer_name [lindex [sc_cfg_tool_task_get {var} drt_via_in_pin_bottom_layer] 0]]
|
|
28
|
+
if { $drt_via_in_pin_bottom_layer != "" } {
|
|
29
|
+
lappend drt_arguments "-via_in_pin_bottom_layer" $drt_via_in_pin_bottom_layer
|
|
30
|
+
}
|
|
31
|
+
set drt_via_in_pin_top_layer \
|
|
32
|
+
[sc_get_layer_name [lindex [sc_cfg_tool_task_get {var} drt_via_in_pin_top_layer] 0]]
|
|
33
|
+
if { $drt_via_in_pin_top_layer != "" } {
|
|
34
|
+
lappend drt_arguments "-via_in_pin_top_layer" $drt_via_in_pin_top_layer
|
|
35
|
+
}
|
|
36
|
+
set drt_repair_pdn_vias \
|
|
37
|
+
[sc_get_layer_name [lindex [sc_cfg_tool_task_get {var} drt_repair_pdn_vias] 0]]
|
|
38
|
+
if { $drt_repair_pdn_vias != "" } {
|
|
39
|
+
lappend drt_arguments "-repair_pdn_vias" $drt_repair_pdn_vias
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
set sc_minmetal [sc_cfg_get pdk $sc_pdk minlayer $sc_stackup]
|
|
43
|
+
set sc_minmetal [sc_get_layer_name $sc_minmetal]
|
|
44
|
+
set sc_maxmetal [sc_cfg_get pdk $sc_pdk maxlayer $sc_stackup]
|
|
45
|
+
set sc_maxmetal [sc_get_layer_name $sc_maxmetal]
|
|
46
|
+
|
|
47
|
+
detailed_route \
|
|
48
|
+
-save_guide_updates \
|
|
49
|
+
-output_drc "reports/${sc_design}_drc.rpt" \
|
|
50
|
+
-output_maze "reports/${sc_design}_maze.log" \
|
|
51
|
+
-bottom_routing_layer $sc_minmetal \
|
|
52
|
+
-top_routing_layer $sc_maxmetal \
|
|
53
|
+
-verbose 1 \
|
|
54
|
+
{*}$drt_arguments
|
|
55
|
+
|
|
56
|
+
# Remove routing obstructions
|
|
57
|
+
set removed_obs 0
|
|
58
|
+
foreach obstruction [[ord::get_db_block] getObstructions] {
|
|
59
|
+
odb::dbObstruction_destroy $obstruction
|
|
60
|
+
incr removed_obs
|
|
61
|
+
}
|
|
62
|
+
utl::info FLW 1 "Deleted $removed_obs routing obstructions"
|
|
63
|
+
|
|
64
|
+
# estimate for metrics
|
|
65
|
+
estimate_parasitics -global_routing
|
|
66
|
+
|
|
67
|
+
###############################
|
|
68
|
+
# Task Postamble
|
|
69
|
+
###############################
|
|
70
|
+
|
|
71
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Error checking
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
if { [sc_design_has_unplaced_macros] } {
|
|
19
|
+
utl::error FLW 1 "Design contains unplaced macros."
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
###############################
|
|
23
|
+
# Insert tie cells
|
|
24
|
+
###############################
|
|
25
|
+
|
|
26
|
+
foreach tie_type "high low" {
|
|
27
|
+
if { [sc_has_tie_cell $tie_type] } {
|
|
28
|
+
insert_tiecells [sc_get_tie_cell $tie_type]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
global_connect
|
|
32
|
+
|
|
33
|
+
###############################
|
|
34
|
+
# Tap Cells
|
|
35
|
+
###############################
|
|
36
|
+
|
|
37
|
+
if {
|
|
38
|
+
[sc_cfg_tool_task_exists {file} ifp_tapcell] &&
|
|
39
|
+
[llength [sc_cfg_tool_task_get {file} ifp_tapcell]] > 0
|
|
40
|
+
} {
|
|
41
|
+
foreach tapcell_file [sc_cfg_tool_task_get {file} ifp_tapcell] {
|
|
42
|
+
puts "Sourcing tapcell file: ${tapcell_file}"
|
|
43
|
+
source $tapcell_file
|
|
44
|
+
}
|
|
45
|
+
global_connect
|
|
46
|
+
} else {
|
|
47
|
+
utl::warn FLW 1 "Tapcell configuration not provided"
|
|
48
|
+
cut_rows
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
###############################
|
|
52
|
+
# Task Postamble
|
|
53
|
+
###############################
|
|
54
|
+
|
|
55
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Add fillers
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
sc_insert_fillers
|
|
19
|
+
|
|
20
|
+
# estimate for metrics
|
|
21
|
+
estimate_parasitics -placement
|
|
22
|
+
|
|
23
|
+
###############################
|
|
24
|
+
# Task Postamble
|
|
25
|
+
###############################
|
|
26
|
+
|
|
27
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Do fill
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
set sc_libtype [sc_cfg_get library $sc_mainlib asic libarch]
|
|
19
|
+
|
|
20
|
+
if {
|
|
21
|
+
$openroad_fin_add_fill == "true" &&
|
|
22
|
+
[sc_cfg_exists pdk $sc_pdk aprtech openroad $sc_stackup $sc_libtype fill]
|
|
23
|
+
} {
|
|
24
|
+
set sc_fillrules \
|
|
25
|
+
[lindex [sc_cfg_get pdk $sc_pdk aprtech openroad $sc_stackup $sc_libtype fill] 0]
|
|
26
|
+
density_fill -rules $sc_fillrules
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# estimate for metrics
|
|
30
|
+
estimate_parasitics -global_routing
|
|
31
|
+
|
|
32
|
+
###############################
|
|
33
|
+
# Task Postamble
|
|
34
|
+
###############################
|
|
35
|
+
|
|
36
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Global Placement
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
sc_global_placement
|
|
19
|
+
|
|
20
|
+
estimate_parasitics -placement
|
|
21
|
+
|
|
22
|
+
###############################
|
|
23
|
+
# Task Postamble
|
|
24
|
+
###############################
|
|
25
|
+
|
|
26
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl > /dev/null
|
|
6
|
+
|
|
7
|
+
###############################
|
|
8
|
+
# Task Preamble
|
|
9
|
+
###############################
|
|
10
|
+
|
|
11
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
12
|
+
source -echo "$sc_refdir/apr/preamble.tcl"
|
|
13
|
+
|
|
14
|
+
###############################
|
|
15
|
+
# Pin access
|
|
16
|
+
###############################
|
|
17
|
+
|
|
18
|
+
if { [lindex [sc_cfg_tool_task_get {var} grt_use_pin_access] 0] == "true" } {
|
|
19
|
+
set sc_minmetal [sc_cfg_get pdk $sc_pdk minlayer $sc_stackup]
|
|
20
|
+
set sc_minmetal [sc_get_layer_name $sc_minmetal]
|
|
21
|
+
set sc_maxmetal [sc_cfg_get pdk $sc_pdk maxlayer $sc_stackup]
|
|
22
|
+
set sc_maxmetal [sc_get_layer_name $sc_maxmetal]
|
|
23
|
+
|
|
24
|
+
set pin_access_args []
|
|
25
|
+
if { [lindex [sc_cfg_tool_task_get {var} drt_process_node] 0] != "false" } {
|
|
26
|
+
lappend pin_access_args "-db_process_node" \
|
|
27
|
+
[lindex [sc_cfg_tool_task_get {var} drt_process_node] 0]
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
pin_access \
|
|
31
|
+
-bottom_routing_layer $sc_minmetal \
|
|
32
|
+
-top_routing_layer $sc_maxmetal \
|
|
33
|
+
{*}$pin_access_args
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
###############################
|
|
37
|
+
# Global route
|
|
38
|
+
###############################
|
|
39
|
+
|
|
40
|
+
set sc_grt_arguments []
|
|
41
|
+
if { [lindex [sc_cfg_tool_task_get {var} grt_allow_congestion] 0] == "true" } {
|
|
42
|
+
lappend sc_grt_arguments "-allow_congestion"
|
|
43
|
+
}
|
|
44
|
+
if { [lindex [sc_cfg_tool_task_get {var} grt_allow_overflow] 0] == "true" } {
|
|
45
|
+
lappend sc_grt_arguments "-allow_overflow"
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
global_route -guide_file "reports/route.guide" \
|
|
49
|
+
-congestion_iterations [lindex [sc_cfg_tool_task_get {var} grt_overflow_iter] 0] \
|
|
50
|
+
-congestion_report_file "reports/${sc_design}_congestion.rpt" \
|
|
51
|
+
-verbose \
|
|
52
|
+
{*}$sc_grt_arguments
|
|
53
|
+
|
|
54
|
+
# estimate for metrics
|
|
55
|
+
estimate_parasitics -global_routing
|
|
56
|
+
|
|
57
|
+
###############################
|
|
58
|
+
# Task Postamble
|
|
59
|
+
###############################
|
|
60
|
+
|
|
61
|
+
source -echo "$sc_refdir/apr/postamble.tcl"
|