siliconcompiler 0.28.1__py3-none-any.whl → 0.28.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/sc_install.py +192 -0
- siliconcompiler/core.py +15 -0
- siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +6 -5
- siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +1 -1
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +16 -16
- siliconcompiler/tools/openroad/scripts/sc_route.tcl +1 -1
- siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +10 -10
- siliconcompiler/tools/opensta/scripts/sc_procs.tcl +3 -3
- siliconcompiler/tools/yosys/syn_asic.tcl +1 -1
- siliconcompiler/toolscripts/_tools.json +131 -0
- siliconcompiler/toolscripts/_tools.py +222 -0
- siliconcompiler/toolscripts/ubuntu20/install-bambu.sh +49 -0
- siliconcompiler/toolscripts/ubuntu20/install-bluespec.sh +35 -0
- siliconcompiler/toolscripts/ubuntu20/install-chisel.sh +26 -0
- siliconcompiler/toolscripts/ubuntu20/install-ghdl.sh +25 -0
- siliconcompiler/toolscripts/ubuntu20/install-icarus.sh +25 -0
- siliconcompiler/toolscripts/ubuntu20/install-icepack.sh +22 -0
- siliconcompiler/toolscripts/ubuntu20/install-klayout.sh +29 -0
- siliconcompiler/toolscripts/ubuntu20/install-magic.sh +24 -0
- siliconcompiler/toolscripts/ubuntu20/install-montage.sh +5 -0
- siliconcompiler/toolscripts/ubuntu20/install-netgen.sh +24 -0
- siliconcompiler/toolscripts/ubuntu20/install-nextpnr.sh +32 -0
- siliconcompiler/toolscripts/ubuntu20/install-openroad.sh +31 -0
- siliconcompiler/toolscripts/ubuntu20/install-slang.sh +38 -0
- siliconcompiler/toolscripts/ubuntu20/install-slurm.sh +32 -0
- siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +30 -0
- siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +26 -0
- siliconcompiler/toolscripts/ubuntu20/install-verible.sh +24 -0
- siliconcompiler/toolscripts/ubuntu20/install-verilator.sh +34 -0
- siliconcompiler/toolscripts/ubuntu20/install-vpr.sh +27 -0
- siliconcompiler/toolscripts/ubuntu20/install-xyce.sh +65 -0
- siliconcompiler/toolscripts/ubuntu20/install-yosys.sh +24 -0
- siliconcompiler/toolscripts/ubuntu22/install-bambu.sh +49 -0
- siliconcompiler/toolscripts/ubuntu22/install-bluespec.sh +35 -0
- siliconcompiler/toolscripts/ubuntu22/install-chisel.sh +26 -0
- siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh +25 -0
- siliconcompiler/toolscripts/ubuntu22/install-icarus.sh +25 -0
- siliconcompiler/toolscripts/ubuntu22/install-icepack.sh +22 -0
- siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +29 -0
- siliconcompiler/toolscripts/ubuntu22/install-magic.sh +24 -0
- siliconcompiler/toolscripts/ubuntu22/install-montage.sh +5 -0
- siliconcompiler/toolscripts/ubuntu22/install-netgen.sh +24 -0
- siliconcompiler/toolscripts/ubuntu22/install-nextpnr.sh +32 -0
- siliconcompiler/toolscripts/ubuntu22/install-openroad.sh +31 -0
- siliconcompiler/toolscripts/ubuntu22/install-slang.sh +28 -0
- siliconcompiler/toolscripts/ubuntu22/install-slurm.sh +32 -0
- siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +25 -0
- siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +26 -0
- siliconcompiler/toolscripts/ubuntu22/install-verible.sh +24 -0
- siliconcompiler/toolscripts/ubuntu22/install-verilator.sh +34 -0
- siliconcompiler/toolscripts/ubuntu22/install-vpr.sh +27 -0
- siliconcompiler/toolscripts/ubuntu22/install-xyce.sh +65 -0
- siliconcompiler/toolscripts/ubuntu22/install-yosys.sh +24 -0
- siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +49 -0
- siliconcompiler/toolscripts/ubuntu24/install-bluespec.sh +35 -0
- siliconcompiler/toolscripts/ubuntu24/install-chisel.sh +26 -0
- siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh +25 -0
- siliconcompiler/toolscripts/ubuntu24/install-icarus.sh +25 -0
- siliconcompiler/toolscripts/ubuntu24/install-icepack.sh +22 -0
- siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +29 -0
- siliconcompiler/toolscripts/ubuntu24/install-magic.sh +24 -0
- siliconcompiler/toolscripts/ubuntu24/install-montage.sh +5 -0
- siliconcompiler/toolscripts/ubuntu24/install-netgen.sh +24 -0
- siliconcompiler/toolscripts/ubuntu24/install-nextpnr.sh +32 -0
- siliconcompiler/toolscripts/ubuntu24/install-openroad.sh +31 -0
- siliconcompiler/toolscripts/ubuntu24/install-slang.sh +28 -0
- siliconcompiler/toolscripts/ubuntu24/install-slurm.sh +32 -0
- siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +25 -0
- siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +26 -0
- siliconcompiler/toolscripts/ubuntu24/install-verible.sh +24 -0
- siliconcompiler/toolscripts/ubuntu24/install-verilator.sh +34 -0
- siliconcompiler/toolscripts/ubuntu24/install-vpr.sh +27 -0
- siliconcompiler/toolscripts/ubuntu24/install-xyce.sh +65 -0
- siliconcompiler/toolscripts/ubuntu24/install-yosys.sh +24 -0
- {siliconcompiler-0.28.1.dist-info → siliconcompiler-0.28.2.dist-info}/METADATA +3 -3
- {siliconcompiler-0.28.1.dist-info → siliconcompiler-0.28.2.dist-info}/RECORD +81 -15
- {siliconcompiler-0.28.1.dist-info → siliconcompiler-0.28.2.dist-info}/entry_points.txt +1 -0
- {siliconcompiler-0.28.1.dist-info → siliconcompiler-0.28.2.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.1.dist-info → siliconcompiler-0.28.2.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.28.1.dist-info → siliconcompiler-0.28.2.dist-info}/top_level.txt +0 -0
siliconcompiler/_metadata.py
CHANGED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Copyright 2024 Silicon Compiler Authors. All Rights Reserved.
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import glob
|
|
5
|
+
import subprocess
|
|
6
|
+
import sys
|
|
7
|
+
import shutil
|
|
8
|
+
import re
|
|
9
|
+
import os.path
|
|
10
|
+
from collections.abc import Container
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
import siliconcompiler
|
|
13
|
+
from siliconcompiler.scheduler import _get_machine_info
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ChoiceOptional(Container):
|
|
17
|
+
def __init__(self, choices):
|
|
18
|
+
super().__init__()
|
|
19
|
+
|
|
20
|
+
self.__choices = set(choices)
|
|
21
|
+
|
|
22
|
+
def __contains__(self, item):
|
|
23
|
+
if not item:
|
|
24
|
+
# allow empty value
|
|
25
|
+
return True
|
|
26
|
+
return item in self.__choices
|
|
27
|
+
|
|
28
|
+
def __iter__(self):
|
|
29
|
+
return self.__choices.__iter__()
|
|
30
|
+
|
|
31
|
+
def get_items(self, choices):
|
|
32
|
+
items = set(choices)
|
|
33
|
+
return sorted(list(items))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def install_tool(tool, script, build_dir, prefix):
|
|
37
|
+
# Ensure build dir is available
|
|
38
|
+
build_dir = Path(build_dir) / tool
|
|
39
|
+
shutil.rmtree(str(build_dir), ignore_errors=True)
|
|
40
|
+
build_dir.mkdir(parents=True, exist_ok=True)
|
|
41
|
+
|
|
42
|
+
# setup environment
|
|
43
|
+
env = os.environ.copy()
|
|
44
|
+
env["PREFIX"] = prefix
|
|
45
|
+
|
|
46
|
+
# run
|
|
47
|
+
ret = subprocess.call(script, env=env, cwd=build_dir)
|
|
48
|
+
if ret != 0:
|
|
49
|
+
print(f"Error occurred while building/installing {tool}")
|
|
50
|
+
return False
|
|
51
|
+
return True
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def show_tool(tool, script):
|
|
55
|
+
def print_header(head):
|
|
56
|
+
border_len = max(80, len(script) + 2)
|
|
57
|
+
border = border_len*"#"
|
|
58
|
+
print(border)
|
|
59
|
+
print(f"# {tool} script / {head}")
|
|
60
|
+
if head == "start":
|
|
61
|
+
print(f"# {script}")
|
|
62
|
+
print(border)
|
|
63
|
+
|
|
64
|
+
print_header("start")
|
|
65
|
+
|
|
66
|
+
with open(script) as f:
|
|
67
|
+
for line in f:
|
|
68
|
+
print(line.rstrip())
|
|
69
|
+
|
|
70
|
+
print_header("end")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _get_tools_list():
|
|
74
|
+
tools_root = Path(siliconcompiler.__file__).parent / "toolscripts"
|
|
75
|
+
|
|
76
|
+
machine_info = _get_machine_info()
|
|
77
|
+
script_dir = None
|
|
78
|
+
if machine_info['system'].lower() == 'linux':
|
|
79
|
+
if machine_info['distro'].lower() == 'ubuntu':
|
|
80
|
+
version, _ = machine_info['osversion'].split('.')
|
|
81
|
+
script_dir = f"{machine_info['distro'].lower()}{version}"
|
|
82
|
+
if script_dir:
|
|
83
|
+
script_dir = tools_root / script_dir
|
|
84
|
+
if not script_dir.exists():
|
|
85
|
+
script_dir = None
|
|
86
|
+
|
|
87
|
+
tools = {}
|
|
88
|
+
if script_dir:
|
|
89
|
+
for script in glob.glob(str(script_dir / "install-*.sh")):
|
|
90
|
+
tool = re.match(r"install-(.*)\.sh", os.path.basename(script).lower())
|
|
91
|
+
tools[tool.group(1)] = script
|
|
92
|
+
|
|
93
|
+
return tools
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _recommended_tool_groups():
|
|
97
|
+
return {
|
|
98
|
+
"asic": {"surelog", "sv2v", "yosys", "openroad", "klayout"},
|
|
99
|
+
"fpga": {"surelog", "sv2v", "yosys", "vpr"},
|
|
100
|
+
"digital-simulation": {"verilator", "icarus"},
|
|
101
|
+
"analog-simulation": {"xyce"}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def main():
|
|
106
|
+
progname = "sc-install"
|
|
107
|
+
description = """
|
|
108
|
+
-----------------------------------------------------------
|
|
109
|
+
SC app install supported tools.
|
|
110
|
+
|
|
111
|
+
To install a single tool:
|
|
112
|
+
sc-install openroad
|
|
113
|
+
|
|
114
|
+
To install multiple tools:
|
|
115
|
+
sc-install openroad yosys klayout
|
|
116
|
+
|
|
117
|
+
To install a group of tools:
|
|
118
|
+
sc-install -group asic
|
|
119
|
+
|
|
120
|
+
To install tools in a different location:
|
|
121
|
+
sc-install -prefix /usr/local yosys
|
|
122
|
+
|
|
123
|
+
To build tools in a different location:
|
|
124
|
+
sc-install -build_dir /tmp yosys
|
|
125
|
+
|
|
126
|
+
To show the install script:
|
|
127
|
+
sc-install -show openroad
|
|
128
|
+
-----------------------------------------------------------
|
|
129
|
+
"""
|
|
130
|
+
parser = argparse.ArgumentParser(
|
|
131
|
+
prog=progname,
|
|
132
|
+
description=description,
|
|
133
|
+
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
134
|
+
|
|
135
|
+
tools = _get_tools_list()
|
|
136
|
+
|
|
137
|
+
tool_choices = ChoiceOptional(tools.keys())
|
|
138
|
+
parser.add_argument(
|
|
139
|
+
"tool",
|
|
140
|
+
nargs="*",
|
|
141
|
+
choices=tool_choices,
|
|
142
|
+
help="tool to install")
|
|
143
|
+
|
|
144
|
+
parser.add_argument(
|
|
145
|
+
"-group",
|
|
146
|
+
nargs="+",
|
|
147
|
+
choices=_recommended_tool_groups().keys(),
|
|
148
|
+
help="tool group to install")
|
|
149
|
+
|
|
150
|
+
parser.add_argument(
|
|
151
|
+
"-prefix",
|
|
152
|
+
default=Path.home() / ".local",
|
|
153
|
+
help="Prefix to use when installing tool",
|
|
154
|
+
metavar="<path>")
|
|
155
|
+
|
|
156
|
+
parser.add_argument(
|
|
157
|
+
"-build_dir",
|
|
158
|
+
default=Path.home() / ".sc" / "tool_build",
|
|
159
|
+
help="Directory to build the tool in",
|
|
160
|
+
metavar="<path>")
|
|
161
|
+
|
|
162
|
+
parser.add_argument(
|
|
163
|
+
"-show",
|
|
164
|
+
action="store_true",
|
|
165
|
+
help="Show the install script and exit")
|
|
166
|
+
|
|
167
|
+
args = parser.parse_args()
|
|
168
|
+
|
|
169
|
+
if not args.tool:
|
|
170
|
+
args.tool = []
|
|
171
|
+
|
|
172
|
+
args.tool = list(args.tool)
|
|
173
|
+
if args.group:
|
|
174
|
+
for group in args.group:
|
|
175
|
+
args.tool.extend(_recommended_tool_groups()[group])
|
|
176
|
+
|
|
177
|
+
tools_handled = set()
|
|
178
|
+
for tool in args.tool:
|
|
179
|
+
if tool in tools_handled:
|
|
180
|
+
continue
|
|
181
|
+
tools_handled.add(tool)
|
|
182
|
+
if args.show:
|
|
183
|
+
show_tool(tool, tools[tool])
|
|
184
|
+
else:
|
|
185
|
+
if not install_tool(tool, tools[tool], args.build_dir, args.prefix):
|
|
186
|
+
return 1
|
|
187
|
+
|
|
188
|
+
return 0
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
if __name__ == "__main__":
|
|
192
|
+
sys.exit(main())
|
siliconcompiler/core.py
CHANGED
|
@@ -1108,6 +1108,21 @@ class Chip:
|
|
|
1108
1108
|
Performs a lookup in the io map for the fileset and filetype
|
|
1109
1109
|
and will use those if they are not provided in the arguments
|
|
1110
1110
|
'''
|
|
1111
|
+
# Handle list inputs
|
|
1112
|
+
if isinstance(filename, (list, tuple)):
|
|
1113
|
+
for file in filename:
|
|
1114
|
+
self._add_input_output(
|
|
1115
|
+
category,
|
|
1116
|
+
file,
|
|
1117
|
+
fileset=fileset,
|
|
1118
|
+
filetype=filetype,
|
|
1119
|
+
iomap=iomap,
|
|
1120
|
+
step=step,
|
|
1121
|
+
index=index,
|
|
1122
|
+
package=package,
|
|
1123
|
+
quiet=quiet)
|
|
1124
|
+
return
|
|
1125
|
+
|
|
1111
1126
|
# Normalize value to string in case we receive a pathlib.Path
|
|
1112
1127
|
filename = str(filename)
|
|
1113
1128
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
proc sc_collect_pin_constraints {
|
|
2
|
-
placement_pins_arg
|
|
3
|
-
ordered_pins_arg
|
|
4
|
-
sc_side_layer_func
|
|
5
|
-
{ print_func puts }
|
|
1
|
+
proc sc_collect_pin_constraints {
|
|
2
|
+
placement_pins_arg
|
|
3
|
+
ordered_pins_arg
|
|
4
|
+
sc_side_layer_func
|
|
5
|
+
{ print_func puts }
|
|
6
|
+
} {
|
|
6
7
|
upvar 1 $placement_pins_arg placement_pins
|
|
7
8
|
upvar 1 $ordered_pins_arg ordered_pins
|
|
8
9
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Global Placement
|
|
3
3
|
#######################
|
|
4
4
|
|
|
5
|
-
proc sc_global_placement_density {} {
|
|
5
|
+
proc sc_global_placement_density { } {
|
|
6
6
|
global openroad_gpl_padding
|
|
7
7
|
global openroad_gpl_place_density
|
|
8
8
|
global openroad_gpl_uniform_placement_adjustment
|
|
@@ -82,7 +82,7 @@ proc sc_global_placement { args } {
|
|
|
82
82
|
# Detailed Placement
|
|
83
83
|
###########################
|
|
84
84
|
|
|
85
|
-
proc sc_detailed_placement {} {
|
|
85
|
+
proc sc_detailed_placement { } {
|
|
86
86
|
global openroad_dpl_padding
|
|
87
87
|
global openroad_dpl_padding
|
|
88
88
|
global openroad_dpl_disallow_one_site
|
|
@@ -149,7 +149,7 @@ proc sc_pin_placement { args } {
|
|
|
149
149
|
# Check if OR has a GUI
|
|
150
150
|
###########################
|
|
151
151
|
|
|
152
|
-
proc sc_has_gui {} {
|
|
152
|
+
proc sc_has_gui { } {
|
|
153
153
|
return [gui::supported]
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -157,7 +157,7 @@ proc sc_has_gui {} {
|
|
|
157
157
|
# Check if design has placed instances
|
|
158
158
|
###########################
|
|
159
159
|
|
|
160
|
-
proc sc_has_placed_instances {} {
|
|
160
|
+
proc sc_has_placed_instances { } {
|
|
161
161
|
foreach inst [[ord::get_db_block] getInsts] {
|
|
162
162
|
if { [$inst isPlaced] } {
|
|
163
163
|
return true
|
|
@@ -170,7 +170,7 @@ proc sc_has_placed_instances {} {
|
|
|
170
170
|
# Check if design has unplaced instances
|
|
171
171
|
###########################
|
|
172
172
|
|
|
173
|
-
proc sc_has_unplaced_instances {} {
|
|
173
|
+
proc sc_has_unplaced_instances { } {
|
|
174
174
|
foreach inst [[ord::get_db_block] getInsts] {
|
|
175
175
|
if { ![$inst isPlaced] } {
|
|
176
176
|
return true
|
|
@@ -183,7 +183,7 @@ proc sc_has_unplaced_instances {} {
|
|
|
183
183
|
# Check if design has routing
|
|
184
184
|
###########################
|
|
185
185
|
|
|
186
|
-
proc sc_has_routing {} {
|
|
186
|
+
proc sc_has_routing { } {
|
|
187
187
|
foreach net [[ord::get_db_block] getNets] {
|
|
188
188
|
if { [$net getWire] != "NULL" } {
|
|
189
189
|
return true
|
|
@@ -196,7 +196,7 @@ proc sc_has_routing {} {
|
|
|
196
196
|
# Check if design has global routing
|
|
197
197
|
###########################
|
|
198
198
|
|
|
199
|
-
proc sc_has_global_routing {} {
|
|
199
|
+
proc sc_has_global_routing { } {
|
|
200
200
|
foreach net [[ord::get_db_block] getNets] {
|
|
201
201
|
if { [llength [$net getGuides]] != 0 } {
|
|
202
202
|
return true
|
|
@@ -211,7 +211,7 @@ proc sc_has_global_routing {} {
|
|
|
211
211
|
|
|
212
212
|
# Function adapted from OpenROAD:
|
|
213
213
|
# https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/ca3004b85e0d4fbee3470115e63b83c498cfed85/flow/scripts/macro_place.tcl#L26
|
|
214
|
-
proc sc_design_has_unplaced_macros {} {
|
|
214
|
+
proc sc_design_has_unplaced_macros { } {
|
|
215
215
|
foreach inst [[ord::get_db_block] getInsts] {
|
|
216
216
|
if { [$inst isBlock] && ![$inst isFixed] } {
|
|
217
217
|
return true
|
|
@@ -224,7 +224,7 @@ proc sc_design_has_unplaced_macros {} {
|
|
|
224
224
|
# Design has unplaced pads
|
|
225
225
|
###########################
|
|
226
226
|
|
|
227
|
-
proc sc_design_has_unplaced_pads {} {
|
|
227
|
+
proc sc_design_has_unplaced_pads { } {
|
|
228
228
|
foreach inst [[ord::get_db_block] getInsts] {
|
|
229
229
|
if { [$inst isPad] && ![$inst isFixed] } {
|
|
230
230
|
return true
|
|
@@ -237,7 +237,7 @@ proc sc_design_has_unplaced_pads {} {
|
|
|
237
237
|
# Design has placable IOs
|
|
238
238
|
###########################
|
|
239
239
|
|
|
240
|
-
proc sc_design_has_placeable_ios {} {
|
|
240
|
+
proc sc_design_has_placeable_ios { } {
|
|
241
241
|
foreach bterm [[ord::get_db_block] getBTerms] {
|
|
242
242
|
if {
|
|
243
243
|
[$bterm getFirstPinPlacementStatus] != "FIXED" &&
|
|
@@ -284,7 +284,7 @@ proc sc_find_net_regex { net_name } {
|
|
|
284
284
|
# Get supply nets in design
|
|
285
285
|
###########################
|
|
286
286
|
|
|
287
|
-
proc sc_supply_nets {} {
|
|
287
|
+
proc sc_supply_nets { } {
|
|
288
288
|
set nets []
|
|
289
289
|
|
|
290
290
|
foreach net [[ord::get_db_block] getNets] {
|
|
@@ -301,7 +301,7 @@ proc sc_supply_nets {} {
|
|
|
301
301
|
# Get nets for PSM to check
|
|
302
302
|
###########################
|
|
303
303
|
|
|
304
|
-
proc sc_psm_check_nets {} {
|
|
304
|
+
proc sc_psm_check_nets { } {
|
|
305
305
|
global openroad_psm_enable
|
|
306
306
|
global openroad_psm_skip_nets
|
|
307
307
|
|
|
@@ -343,7 +343,7 @@ proc sc_save_image { title path { pixels 1000 } } {
|
|
|
343
343
|
# Get the image bounding box
|
|
344
344
|
###########################
|
|
345
345
|
|
|
346
|
-
proc sc_image_area {} {
|
|
346
|
+
proc sc_image_area { } {
|
|
347
347
|
set box [[ord::get_db_block] getDieArea]
|
|
348
348
|
set width [$box dx]
|
|
349
349
|
set height [$box dy]
|
|
@@ -373,7 +373,7 @@ proc sc_image_resolution { pixels } {
|
|
|
373
373
|
# Clear gui selections
|
|
374
374
|
###########################
|
|
375
375
|
|
|
376
|
-
proc sc_image_clear_selection {} {
|
|
376
|
+
proc sc_image_clear_selection { } {
|
|
377
377
|
gui::clear_highlights -1
|
|
378
378
|
gui::clear_selections
|
|
379
379
|
}
|
|
@@ -382,7 +382,7 @@ proc sc_image_clear_selection {} {
|
|
|
382
382
|
# Setup default GUI setting for images
|
|
383
383
|
###########################
|
|
384
384
|
|
|
385
|
-
proc sc_image_setup_default {} {
|
|
385
|
+
proc sc_image_setup_default { } {
|
|
386
386
|
gui::restore_display_controls
|
|
387
387
|
|
|
388
388
|
sc_image_clear_selection
|
|
@@ -406,7 +406,7 @@ proc sc_image_setup_default {} {
|
|
|
406
406
|
# Count the logic depth of the critical path
|
|
407
407
|
###########################
|
|
408
408
|
|
|
409
|
-
proc count_logic_depth {} {
|
|
409
|
+
proc count_logic_depth { } {
|
|
410
410
|
set count 0
|
|
411
411
|
set paths [find_timing_paths -sort_by_slack]
|
|
412
412
|
if { [llength $paths] == 0 } {
|
|
@@ -54,7 +54,7 @@ proc sc_image_heatmap { name ident image_name title { allow_bin_adjust 1 } } {
|
|
|
54
54
|
gui::set_display_controls "Heat Maps/${name}" visible false
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
proc sc_image_placement {} {
|
|
57
|
+
proc sc_image_placement { } {
|
|
58
58
|
if { ![sc_has_placed_instances] } {
|
|
59
59
|
return
|
|
60
60
|
}
|
|
@@ -70,7 +70,7 @@ proc sc_image_placement {} {
|
|
|
70
70
|
sc_save_image "placement" reports/images/${sc_design}.placement.png
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
proc sc_image_routing {} {
|
|
73
|
+
proc sc_image_routing { } {
|
|
74
74
|
if { ![sc_has_routing] } {
|
|
75
75
|
return
|
|
76
76
|
}
|
|
@@ -85,7 +85,7 @@ proc sc_image_routing {} {
|
|
|
85
85
|
sc_save_image "routing" reports/images/${sc_design}.routing.png
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
proc sc_image_everything {} {
|
|
88
|
+
proc sc_image_everything { } {
|
|
89
89
|
global sc_design
|
|
90
90
|
|
|
91
91
|
sc_image_setup_default
|
|
@@ -134,7 +134,7 @@ proc sc_image_irdrop { net corner } {
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
proc sc_image_routing_congestion {} {
|
|
137
|
+
proc sc_image_routing_congestion { } {
|
|
138
138
|
if { ![sc_has_global_routing] } {
|
|
139
139
|
return
|
|
140
140
|
}
|
|
@@ -148,7 +148,7 @@ proc sc_image_routing_congestion {} {
|
|
|
148
148
|
0
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
proc sc_image_estimated_routing_congestion {} {
|
|
151
|
+
proc sc_image_estimated_routing_congestion { } {
|
|
152
152
|
if { ![sc_has_placed_instances] } {
|
|
153
153
|
return
|
|
154
154
|
}
|
|
@@ -166,7 +166,7 @@ proc sc_image_estimated_routing_congestion {} {
|
|
|
166
166
|
unsuppress_message GRT 10
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
proc sc_image_power_density {} {
|
|
169
|
+
proc sc_image_power_density { } {
|
|
170
170
|
if { ![sc_has_placed_instances] } {
|
|
171
171
|
return
|
|
172
172
|
}
|
|
@@ -188,7 +188,7 @@ proc sc_image_power_density {} {
|
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
proc sc_image_placement_density {} {
|
|
191
|
+
proc sc_image_placement_density { } {
|
|
192
192
|
if { ![sc_has_placed_instances] } {
|
|
193
193
|
return
|
|
194
194
|
}
|
|
@@ -201,7 +201,7 @@ proc sc_image_placement_density {} {
|
|
|
201
201
|
"placement density"
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
-
proc sc_image_clocks {} {
|
|
204
|
+
proc sc_image_clocks { } {
|
|
205
205
|
if { ![sc_has_placed_instances] } {
|
|
206
206
|
return
|
|
207
207
|
}
|
|
@@ -223,7 +223,7 @@ proc sc_image_clocks {} {
|
|
|
223
223
|
sc_save_image "clocks" reports/images/${sc_design}.clocks.png
|
|
224
224
|
}
|
|
225
225
|
|
|
226
|
-
proc sc_image_clocktree {} {
|
|
226
|
+
proc sc_image_clocktree { } {
|
|
227
227
|
gui::show_widget "Clock Tree Viewer"
|
|
228
228
|
global sc_scenarios
|
|
229
229
|
|
|
@@ -263,7 +263,7 @@ proc sc_image_clocktree {} {
|
|
|
263
263
|
gui::hide_widget "Clock Tree Viewer"
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
proc sc_image_optimizer {} {
|
|
266
|
+
proc sc_image_optimizer { } {
|
|
267
267
|
global sc_design
|
|
268
268
|
sc_image_setup_default
|
|
269
269
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Count the logic depth of the critical path
|
|
3
3
|
###########################
|
|
4
4
|
|
|
5
|
-
proc sc_count_logic_depth {} {
|
|
5
|
+
proc sc_count_logic_depth { } {
|
|
6
6
|
set count 0
|
|
7
7
|
set paths [find_timing_paths -sort_by_slack]
|
|
8
8
|
if { [llength $paths] == 0 } {
|
|
@@ -24,7 +24,7 @@ proc sc_count_logic_depth {} {
|
|
|
24
24
|
return [expr { $count - 1 }]
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
proc sc_design_area {} {
|
|
27
|
+
proc sc_design_area { } {
|
|
28
28
|
set area 0
|
|
29
29
|
foreach inst [get_cells -hierarchical *] {
|
|
30
30
|
set lib_cell [$inst liberty_cell]
|
|
@@ -35,7 +35,7 @@ proc sc_design_area {} {
|
|
|
35
35
|
return $area
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
proc sc_display_report {report} {
|
|
38
|
+
proc sc_display_report { report } {
|
|
39
39
|
if { ![file exists $report] } {
|
|
40
40
|
return
|
|
41
41
|
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openroad": {
|
|
3
|
+
"git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
|
|
4
|
+
"git-commit": "81c8892339ff090147b9e769195f32489cba38f9",
|
|
5
|
+
"docker-cmds": [
|
|
6
|
+
"# Remove OR-Tools files",
|
|
7
|
+
"RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
|
|
8
|
+
"# Remove OpenROAD Env file",
|
|
9
|
+
"RUN rm -f $SC_PREFIX/env.sh"
|
|
10
|
+
],
|
|
11
|
+
"auto-update": true
|
|
12
|
+
},
|
|
13
|
+
"surelog": {
|
|
14
|
+
"git-url": "https://github.com/chipsalliance/Surelog.git",
|
|
15
|
+
"git-commit": "v1.84",
|
|
16
|
+
"auto-update": true
|
|
17
|
+
},
|
|
18
|
+
"netgen": {
|
|
19
|
+
"git-url": "https://github.com/RTimothyEdwards/netgen.git",
|
|
20
|
+
"git-commit": "fb7876c7a6f9d58a3d88a49e302e682c1d12e00d",
|
|
21
|
+
"auto-update": false
|
|
22
|
+
},
|
|
23
|
+
"ghdl": {
|
|
24
|
+
"git-url": "https://github.com/ghdl/ghdl.git",
|
|
25
|
+
"git-commit": "v4.1.0",
|
|
26
|
+
"auto-update": false
|
|
27
|
+
},
|
|
28
|
+
"magic": {
|
|
29
|
+
"git-url": "https://github.com/RTimothyEdwards/magic.git",
|
|
30
|
+
"git-commit": "c7f11d2169f6af8751ae22b5d70250b331e1a667",
|
|
31
|
+
"auto-update": false
|
|
32
|
+
},
|
|
33
|
+
"bluespec": {
|
|
34
|
+
"git-url": "https://github.com/B-Lang-org/bsc.git",
|
|
35
|
+
"git-commit": "4cac6ebae076e8b8378597aba1d2119aa29ec419",
|
|
36
|
+
"auto-update": false
|
|
37
|
+
},
|
|
38
|
+
"klayout": {
|
|
39
|
+
"version": "0.29.7",
|
|
40
|
+
"git-url": "https://github.com/KLayout/klayout.git",
|
|
41
|
+
"docker-skip": true,
|
|
42
|
+
"auto-update": true,
|
|
43
|
+
"run-version": "source version.sh && echo $KLAYOUT_VERSION",
|
|
44
|
+
"release-notes": "https://www.klayout.de/development.html"
|
|
45
|
+
},
|
|
46
|
+
"sv2v": {
|
|
47
|
+
"git-url": "https://github.com/zachjs/sv2v.git",
|
|
48
|
+
"git-commit": "5374679e4bb26e115b9a9b4a2d8ef4253d7a8bf3",
|
|
49
|
+
"auto-update": true
|
|
50
|
+
},
|
|
51
|
+
"verilator": {
|
|
52
|
+
"git-url": "https://github.com/verilator/verilator.git",
|
|
53
|
+
"git-commit": "563faeb33f3b9b5374f558f54adfea11873f1cd7",
|
|
54
|
+
"auto-update": true
|
|
55
|
+
},
|
|
56
|
+
"bambu": {
|
|
57
|
+
"git-url": "https://github.com/ferrandi/PandA-bambu.git",
|
|
58
|
+
"git-commit": "v2024.03",
|
|
59
|
+
"auto-update": false,
|
|
60
|
+
"docker-cmds": [
|
|
61
|
+
"# Remove ORFS Stuff",
|
|
62
|
+
"RUN rm -rf $SC_PREFIX/share/panda/asap7",
|
|
63
|
+
"RUN rm -rf $SC_PREFIX/share/panda/nangate45",
|
|
64
|
+
"RUN rm -rf $SC_PREFIX/share/panda/scripts"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"vpr": {
|
|
68
|
+
"git-url": "https://github.com/verilog-to-routing/vtr-verilog-to-routing.git",
|
|
69
|
+
"git-commit": "9dd5ff66e3ab43238f5a4cb14cafe17bc4afe527",
|
|
70
|
+
"auto-update": false
|
|
71
|
+
},
|
|
72
|
+
"icepack": {
|
|
73
|
+
"git-url": "https://github.com/YosysHQ/icestorm.git",
|
|
74
|
+
"git-commit": "d20a5e9001f46262bf0cef220f1a6943946e421d",
|
|
75
|
+
"auto-update": false
|
|
76
|
+
},
|
|
77
|
+
"nextpnr": {
|
|
78
|
+
"git-url": "https://github.com/YosysHQ/nextpnr.git",
|
|
79
|
+
"git-commit": "f89b959b5f56ba8d91e1e7f8a645b267a5a7bb89",
|
|
80
|
+
"docker-depends": "icepack"
|
|
81
|
+
},
|
|
82
|
+
"chisel": {
|
|
83
|
+
"version": "1.8.0",
|
|
84
|
+
"git-url": "https://github.com/sbt/sbt.git",
|
|
85
|
+
"auto-update": false
|
|
86
|
+
},
|
|
87
|
+
"icarus": {
|
|
88
|
+
"git-url": "https://github.com/steveicarus/iverilog.git",
|
|
89
|
+
"git-commit": "01441687235135d1c12eeef920f75d97995da333",
|
|
90
|
+
"auto-update": false
|
|
91
|
+
},
|
|
92
|
+
"yosys": {
|
|
93
|
+
"git-url": "https://github.com/YosysHQ/yosys.git",
|
|
94
|
+
"git-commit": "yosys-0.44",
|
|
95
|
+
"version-prefix": "yosys-",
|
|
96
|
+
"auto-update": true
|
|
97
|
+
},
|
|
98
|
+
"xyce": {
|
|
99
|
+
"git-url": "https://github.com/Xyce/Xyce.git",
|
|
100
|
+
"version": "7.8.0",
|
|
101
|
+
"auto-update": false
|
|
102
|
+
},
|
|
103
|
+
"slurm": {
|
|
104
|
+
"version": "22.05.7",
|
|
105
|
+
"git-url": "https://github.com/SchedMD/slurm.git",
|
|
106
|
+
"auto-update": false,
|
|
107
|
+
"docker-extra-files": [
|
|
108
|
+
"docker/slurm"
|
|
109
|
+
],
|
|
110
|
+
"docker-cmds": [
|
|
111
|
+
"COPY slurm $SC_PREFIX/slurm_cfg",
|
|
112
|
+
"RUN mv $SC_PREFIX/slurm_cfg/install-slurm.sh $SC_PREFIX/",
|
|
113
|
+
"RUN chmod +x $SC_PREFIX/install-slurm.sh"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"montage": {
|
|
117
|
+
"version": "6.9.11",
|
|
118
|
+
"auto-update": false,
|
|
119
|
+
"docker-skip": true
|
|
120
|
+
},
|
|
121
|
+
"verible": {
|
|
122
|
+
"version": "v0.0-3303-gd87f2420",
|
|
123
|
+
"git-url": "https://github.com/chipsalliance/verible.git",
|
|
124
|
+
"auto-update": false
|
|
125
|
+
},
|
|
126
|
+
"slang": {
|
|
127
|
+
"git-commit": "v7.0",
|
|
128
|
+
"git-url": "https://github.com/MikePopoloski/slang.git",
|
|
129
|
+
"auto-update": true
|
|
130
|
+
}
|
|
131
|
+
}
|