siliconcompiler 0.35.1__py3-none-any.whl → 0.35.3__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 +1 -1
- siliconcompiler/apps/sc_issue.py +8 -16
- siliconcompiler/apps/smake.py +106 -100
- siliconcompiler/checklist.py +349 -91
- siliconcompiler/design.py +8 -1
- siliconcompiler/flowgraph.py +419 -130
- siliconcompiler/flows/showflow.py +1 -2
- siliconcompiler/library.py +6 -5
- siliconcompiler/package/https.py +10 -5
- siliconcompiler/project.py +87 -37
- siliconcompiler/remote/client.py +17 -6
- siliconcompiler/scheduler/scheduler.py +284 -59
- siliconcompiler/scheduler/schedulernode.py +154 -102
- siliconcompiler/schema/__init__.py +3 -2
- siliconcompiler/schema/_metadata.py +1 -1
- siliconcompiler/schema/baseschema.py +210 -93
- siliconcompiler/schema/namedschema.py +21 -13
- siliconcompiler/schema/parameter.py +8 -1
- siliconcompiler/schema/safeschema.py +18 -7
- siliconcompiler/schema_support/dependencyschema.py +23 -3
- siliconcompiler/schema_support/filesetschema.py +10 -4
- siliconcompiler/schema_support/option.py +37 -34
- siliconcompiler/schema_support/pathschema.py +7 -2
- siliconcompiler/schema_support/record.py +5 -4
- siliconcompiler/targets/asap7_demo.py +4 -1
- siliconcompiler/tool.py +100 -8
- siliconcompiler/tools/__init__.py +10 -7
- siliconcompiler/tools/bambu/convert.py +19 -0
- siliconcompiler/tools/builtin/__init__.py +3 -2
- siliconcompiler/tools/builtin/filter.py +108 -0
- siliconcompiler/tools/builtin/importfiles.py +154 -0
- siliconcompiler/tools/execute/exec_input.py +4 -3
- siliconcompiler/tools/gtkwave/show.py +6 -2
- siliconcompiler/tools/icarus/compile.py +1 -0
- siliconcompiler/tools/klayout/scripts/klayout_show.py +1 -1
- siliconcompiler/tools/klayout/show.py +17 -5
- siliconcompiler/tools/openroad/screenshot.py +0 -1
- siliconcompiler/tools/openroad/scripts/common/screenshot.tcl +1 -1
- siliconcompiler/tools/openroad/scripts/common/write_images.tcl +2 -0
- siliconcompiler/tools/openroad/show.py +10 -0
- siliconcompiler/tools/surfer/show.py +7 -2
- siliconcompiler/tools/verilator/compile.py +2 -2
- siliconcompiler/tools/yosys/prepareLib.py +7 -2
- siliconcompiler/tools/yosys/syn_asic.py +20 -2
- siliconcompiler/toolscripts/_tools.json +5 -5
- siliconcompiler/toolscripts/rhel9/{install-yosys-wildebeest.sh → install-wildebeest.sh} +5 -5
- siliconcompiler/toolscripts/ubuntu22/{install-yosys-wildebeest.sh → install-wildebeest.sh} +5 -5
- siliconcompiler/toolscripts/ubuntu24/{install-yosys-wildebeest.sh → install-wildebeest.sh} +5 -5
- siliconcompiler/utils/__init__.py +1 -2
- siliconcompiler/utils/issue.py +38 -45
- {siliconcompiler-0.35.1.dist-info → siliconcompiler-0.35.3.dist-info}/METADATA +4 -4
- {siliconcompiler-0.35.1.dist-info → siliconcompiler-0.35.3.dist-info}/RECORD +57 -55
- {siliconcompiler-0.35.1.dist-info → siliconcompiler-0.35.3.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.35.1.dist-info → siliconcompiler-0.35.3.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.35.1.dist-info → siliconcompiler-0.35.3.dist-info}/licenses/LICENSE +0 -0
- {siliconcompiler-0.35.1.dist-info → siliconcompiler-0.35.3.dist-info}/top_level.txt +0 -0
|
@@ -188,6 +188,7 @@ proc sc_image_estimated_routing_congestion { } {
|
|
|
188
188
|
sc_image_setup_default
|
|
189
189
|
|
|
190
190
|
suppress_message GRT 10
|
|
191
|
+
suppress_message GRT 42
|
|
191
192
|
catch {
|
|
192
193
|
sc_image_heatmap "Estimated Congestion (RUDY)" \
|
|
193
194
|
"RUDY" \
|
|
@@ -197,6 +198,7 @@ proc sc_image_estimated_routing_congestion { } {
|
|
|
197
198
|
0
|
|
198
199
|
} err
|
|
199
200
|
unsuppress_message GRT 10
|
|
201
|
+
unsuppress_message GRT 42
|
|
200
202
|
}
|
|
201
203
|
|
|
202
204
|
proc sc_image_power_density { } {
|
|
@@ -22,6 +22,16 @@ class ShowTask(ShowTask, APRTask, OpenROADSTAParameter):
|
|
|
22
22
|
self.unset("input")
|
|
23
23
|
self.unset("output")
|
|
24
24
|
|
|
25
|
+
# Add input file requirements
|
|
26
|
+
if f"{self.design_topmodule}.odb" in self.get_files_from_input_nodes():
|
|
27
|
+
self.add_input_file(ext="odb")
|
|
28
|
+
elif f"{self.design_topmodule}.def" in self.get_files_from_input_nodes():
|
|
29
|
+
self.add_input_file(ext="def")
|
|
30
|
+
else:
|
|
31
|
+
self.add_required_key("var", "showfilepath")
|
|
32
|
+
if f"{self.design_topmodule}.sdc" in self.get_files_from_input_nodes():
|
|
33
|
+
self.add_input_file(ext="sdc")
|
|
34
|
+
|
|
25
35
|
self.set_script("sc_show.tcl")
|
|
26
36
|
|
|
27
37
|
self.set("var", "showexit", False, clobber=False)
|
|
@@ -12,7 +12,7 @@ class ShowTask(ShowTask):
|
|
|
12
12
|
return stdout.strip().split()[1]
|
|
13
13
|
|
|
14
14
|
def get_supported_show_extentions(self):
|
|
15
|
-
return ["vcd"]
|
|
15
|
+
return ["vcd", "fst"]
|
|
16
16
|
|
|
17
17
|
def setup(self):
|
|
18
18
|
super().setup()
|
|
@@ -22,15 +22,20 @@ class ShowTask(ShowTask):
|
|
|
22
22
|
|
|
23
23
|
if f"{self.design_topmodule}.vcd" in self.get_files_from_input_nodes():
|
|
24
24
|
self.add_input_file(ext="vcd")
|
|
25
|
+
elif f"{self.design_topmodule}.fst" in self.get_files_from_input_nodes():
|
|
26
|
+
self.add_input_file(ext="fst")
|
|
25
27
|
else:
|
|
26
28
|
self.add_required_key("var", "showfilepath")
|
|
27
29
|
|
|
28
30
|
def runtime_options(self):
|
|
29
31
|
options = super().runtime_options()
|
|
30
32
|
|
|
31
|
-
# Get VCD file
|
|
32
33
|
if os.path.exists(f'inputs/{self.design_topmodule}.vcd'):
|
|
34
|
+
# Get VCD file
|
|
33
35
|
dump = f'inputs/{self.design_topmodule}.vcd'
|
|
36
|
+
elif os.path.exists(f'inputs/{self.design_topmodule}.fst'):
|
|
37
|
+
# Get FST file
|
|
38
|
+
dump = f'inputs/{self.design_topmodule}.fst'
|
|
34
39
|
else:
|
|
35
40
|
dump = self.find_files('var', 'showfilepath')
|
|
36
41
|
options.append(dump)
|
|
@@ -110,9 +110,9 @@ class CompileTask(VerilatorTask):
|
|
|
110
110
|
options.append(trace_opt)
|
|
111
111
|
|
|
112
112
|
# add siliconcompiler specific defines
|
|
113
|
-
c_flags.append("-DSILICONCOMPILER_TRACE_DIR
|
|
113
|
+
c_flags.append("-DSILICONCOMPILER_TRACE_DIR=\"reports\"")
|
|
114
114
|
c_flags.append(
|
|
115
|
-
f"-DSILICONCOMPILER_TRACE_FILE
|
|
115
|
+
f"-DSILICONCOMPILER_TRACE_FILE=\"reports/{self.design_topmodule}.{ext}\"")
|
|
116
116
|
|
|
117
117
|
if c_includes:
|
|
118
118
|
c_flags.extend([f'-I{include}' for include in c_includes])
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# Based on https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/84545863573a90bca3612298361adb35bf39e692/flow/util/markDontUse.py # noqa E501
|
|
3
3
|
|
|
4
|
+
import bz2
|
|
4
5
|
import re
|
|
5
6
|
import gzip
|
|
6
7
|
import argparse # argument parsing
|
|
@@ -12,10 +13,14 @@ def process_liberty_file(input_file, logger=None):
|
|
|
12
13
|
logger.info(f"Opening file for replace: {input_file}")
|
|
13
14
|
if input_file.endswith(".gz") or input_file.endswith(".GZ"):
|
|
14
15
|
f = gzip.open(input_file, 'rt', encoding="utf-8")
|
|
16
|
+
elif input_file.endswith(".bz2") or input_file.endswith(".BZ2"):
|
|
17
|
+
f = bz2.open(input_file, 'rt', encoding="utf-8")
|
|
15
18
|
else:
|
|
16
19
|
f = open(input_file, encoding="utf-8")
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
try:
|
|
21
|
+
content = f.read().encode("ascii", "ignore").decode("ascii")
|
|
22
|
+
finally:
|
|
23
|
+
f.close()
|
|
19
24
|
|
|
20
25
|
# Yosys-abc throws an error if original_pin is found within the liberty file.
|
|
21
26
|
# removing
|
|
@@ -32,6 +32,18 @@ class _ASICTask(ASICTask, YosysTask):
|
|
|
32
32
|
self.add_required_key("var", "synthesis_corner")
|
|
33
33
|
self._determine_synthesis_corner()
|
|
34
34
|
|
|
35
|
+
self.add_required_key("asic", "delaymodel")
|
|
36
|
+
self.add_required_key("asic", "asiclib")
|
|
37
|
+
|
|
38
|
+
delaymodel = self.project.get("asic", "delaymodel")
|
|
39
|
+
for lib in self.project.get("asic", "asiclib"):
|
|
40
|
+
lib_obj = self.project.get("library", lib, field="schema")
|
|
41
|
+
for corner in self.get("var", "synthesis_corner"):
|
|
42
|
+
if lib_obj.get("asic", "libcornerfileset", corner, delaymodel):
|
|
43
|
+
self.add_required_key(lib_obj, "asic", "libcornerfileset", corner, delaymodel)
|
|
44
|
+
for fileset in lib_obj.get("asic", "libcornerfileset", corner, delaymodel):
|
|
45
|
+
self.add_required_key(lib_obj, "fileset", fileset, "file", "liberty")
|
|
46
|
+
|
|
35
47
|
def _determine_synthesis_corner(self):
|
|
36
48
|
if self.get("var", "synthesis_corner"):
|
|
37
49
|
return
|
|
@@ -294,8 +306,6 @@ class ASICSynthesis(_ASICTask, YosysTask):
|
|
|
294
306
|
self.set_script("sc_synth_asic.tcl")
|
|
295
307
|
|
|
296
308
|
self.add_required_key("asic", "mainlib")
|
|
297
|
-
self.add_required_key("asic", "asiclib")
|
|
298
|
-
self.add_required_key("asic", "delaymodel")
|
|
299
309
|
|
|
300
310
|
design = self.project.design
|
|
301
311
|
fileset = self.project.get("option", "fileset")[0]
|
|
@@ -330,6 +340,14 @@ class ASICSynthesis(_ASICTask, YosysTask):
|
|
|
330
340
|
self.add_required_key(mainlib, "tool", "yosys", "driver_cell")
|
|
331
341
|
self.add_required_key("var", "abc_constraint_driver")
|
|
332
342
|
self.set("var", "abc_constraint_driver", lib_driver)
|
|
343
|
+
if self.get("var", "abc_clock_period"):
|
|
344
|
+
self.add_required_key("var", "abc_clock_period")
|
|
345
|
+
else:
|
|
346
|
+
self.add_required_key(mainlib, "tool", "yosys", "abc_clock_multiplier")
|
|
347
|
+
self.add_required_key("var", "abc_clock_derating")
|
|
348
|
+
for lib, fileset in self.project.get_filesets():
|
|
349
|
+
if lib.has_file(fileset=fileset, filetype="sdc"):
|
|
350
|
+
self.add_required_key(lib, "fileset", fileset, "file", "sdc")
|
|
333
351
|
|
|
334
352
|
if mainlib.get("tool", "yosys", "tristatebuffermap"):
|
|
335
353
|
self.add_required_key(mainlib, "tool", "yosys", "tristatebuffermap")
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"openroad": {
|
|
3
3
|
"git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
|
|
4
|
-
"git-commit": "
|
|
4
|
+
"git-commit": "f22f811d9d338b1dbc6fe854d35b53757596449d",
|
|
5
5
|
"docker-cmds": [
|
|
6
6
|
"# Remove OR-Tools files",
|
|
7
7
|
"RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"opensta": {
|
|
19
19
|
"git-url": "https://github.com/parallaxsw/OpenSTA.git",
|
|
20
|
-
"git-commit": "
|
|
20
|
+
"git-commit": "cf903f4db688e6f89d732ef28cce7b8185587201",
|
|
21
21
|
"auto-update": true
|
|
22
22
|
},
|
|
23
23
|
"netgen": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"sv2v": {
|
|
57
57
|
"git-url": "https://github.com/zachjs/sv2v.git",
|
|
58
|
-
"git-commit": "
|
|
58
|
+
"git-commit": "c1ce7d067b0a7edf8d1589dcb5731265c854c490",
|
|
59
59
|
"auto-update": true
|
|
60
60
|
},
|
|
61
61
|
"verilator": {
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
},
|
|
146
146
|
"yosys-slang": {
|
|
147
147
|
"git-url": "https://github.com/povik/yosys-slang.git",
|
|
148
|
-
"git-commit": "
|
|
148
|
+
"git-commit": "f44908907726e684965ba71959cc147df50c0357",
|
|
149
149
|
"docker-depends": "yosys",
|
|
150
150
|
"auto-update": true
|
|
151
151
|
},
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
"docker-depends": "yosys",
|
|
156
156
|
"auto-update": true
|
|
157
157
|
},
|
|
158
|
-
"
|
|
158
|
+
"wildebeest": {
|
|
159
159
|
"git-url": "https://github.com/zeroasiccorp/wildebeest.git",
|
|
160
160
|
"git-commit": "d79f06403b500b95b4cb33288f520e4e24fb9c47",
|
|
161
161
|
"docker-depends": "yosys",
|
|
@@ -10,13 +10,13 @@ sudo yum install -y git
|
|
|
10
10
|
mkdir -p deps
|
|
11
11
|
cd deps
|
|
12
12
|
|
|
13
|
-
python3 -m venv .
|
|
14
|
-
. .
|
|
13
|
+
python3 -m venv .wildebeest --clear
|
|
14
|
+
. .wildebeest/bin/activate
|
|
15
15
|
python3 -m pip install cmake==3.31.6
|
|
16
16
|
|
|
17
|
-
git clone $(python3 ${src_path}/_tools.py --tool
|
|
18
|
-
cd
|
|
19
|
-
git checkout $(python3 ${src_path}/_tools.py --tool
|
|
17
|
+
git clone $(python3 ${src_path}/_tools.py --tool wildebeest --field git-url) wildebeest
|
|
18
|
+
cd wildebeest
|
|
19
|
+
git checkout $(python3 ${src_path}/_tools.py --tool wildebeest --field git-commit)
|
|
20
20
|
|
|
21
21
|
cmake -S . -B build
|
|
22
22
|
cmake --build build
|
|
@@ -11,13 +11,13 @@ sudo apt-get install -y git
|
|
|
11
11
|
mkdir -p deps
|
|
12
12
|
cd deps
|
|
13
13
|
|
|
14
|
-
python3 -m venv .
|
|
15
|
-
. .
|
|
14
|
+
python3 -m venv .wildebeest --clear
|
|
15
|
+
. .wildebeest/bin/activate
|
|
16
16
|
python3 -m pip install cmake==3.31.6
|
|
17
17
|
|
|
18
|
-
git clone $(python3 ${src_path}/_tools.py --tool
|
|
19
|
-
cd
|
|
20
|
-
git checkout $(python3 ${src_path}/_tools.py --tool
|
|
18
|
+
git clone $(python3 ${src_path}/_tools.py --tool wildebeest --field git-url) wildebeest
|
|
19
|
+
cd wildebeest
|
|
20
|
+
git checkout $(python3 ${src_path}/_tools.py --tool wildebeest --field git-commit)
|
|
21
21
|
|
|
22
22
|
cmake -S . -B build
|
|
23
23
|
cmake --build build
|
|
@@ -11,13 +11,13 @@ sudo apt-get install -y git
|
|
|
11
11
|
mkdir -p deps
|
|
12
12
|
cd deps
|
|
13
13
|
|
|
14
|
-
python3 -m venv .
|
|
15
|
-
. .
|
|
14
|
+
python3 -m venv .wildebeest --clear
|
|
15
|
+
. .wildebeest/bin/activate
|
|
16
16
|
python3 -m pip install cmake==3.31.6
|
|
17
17
|
|
|
18
|
-
git clone $(python3 ${src_path}/_tools.py --tool
|
|
19
|
-
cd
|
|
20
|
-
git checkout $(python3 ${src_path}/_tools.py --tool
|
|
18
|
+
git clone $(python3 ${src_path}/_tools.py --tool wildebeest --field git-url) wildebeest
|
|
19
|
+
cd wildebeest
|
|
20
|
+
git checkout $(python3 ${src_path}/_tools.py --tool wildebeest --field git-commit)
|
|
21
21
|
|
|
22
22
|
cmake -S . -B build
|
|
23
23
|
cmake --build build
|
|
@@ -40,8 +40,7 @@ def link_symlink_copy(srcfile, dstfile):
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def link_copy(srcfile, dstfile):
|
|
43
|
-
# first try hard linking
|
|
44
|
-
# and finally just copy the file
|
|
43
|
+
# first try hard linking or just copy the file
|
|
45
44
|
for method in [os.link, shutil.copy2]:
|
|
46
45
|
try:
|
|
47
46
|
# create link
|
siliconcompiler/utils/issue.py
CHANGED
|
@@ -9,7 +9,12 @@ import tempfile
|
|
|
9
9
|
|
|
10
10
|
import os.path
|
|
11
11
|
|
|
12
|
+
from typing import Optional, List, TYPE_CHECKING
|
|
13
|
+
|
|
12
14
|
from datetime import datetime, timezone
|
|
15
|
+
|
|
16
|
+
import siliconcompiler
|
|
17
|
+
|
|
13
18
|
from siliconcompiler.utils import get_file_template
|
|
14
19
|
from siliconcompiler.utils.curation import collect
|
|
15
20
|
from siliconcompiler.schema_support.record import RecordSchema
|
|
@@ -18,24 +23,26 @@ from siliconcompiler.schema import __version__ as schema_version
|
|
|
18
23
|
from siliconcompiler import __version__ as sc_version
|
|
19
24
|
from siliconcompiler.utils.paths import workdir, jobdir, collectiondir
|
|
20
25
|
|
|
26
|
+
if TYPE_CHECKING:
|
|
27
|
+
from siliconcompiler.project import Project
|
|
28
|
+
from siliconcompiler import Task
|
|
21
29
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
verbose_collect=True):
|
|
30
|
+
|
|
31
|
+
def generate_testcase(project: "Project",
|
|
32
|
+
step: str,
|
|
33
|
+
index: str,
|
|
34
|
+
archive_name: Optional[str] = None,
|
|
35
|
+
archive_directory: Optional[str] = None,
|
|
36
|
+
include_libraries: bool = True,
|
|
37
|
+
include_specific_libraries: Optional[List[str]] = None,
|
|
38
|
+
hash_files: bool = False,
|
|
39
|
+
verbose_collect: bool = True):
|
|
33
40
|
# Save original schema since it will be modified
|
|
34
41
|
project = project.copy()
|
|
35
42
|
|
|
36
43
|
issue_dir = tempfile.TemporaryDirectory(prefix='sc_issue_')
|
|
37
44
|
|
|
38
|
-
project.
|
|
45
|
+
project.option.set_continue(True)
|
|
39
46
|
if hash_files:
|
|
40
47
|
for key in project.allkeys():
|
|
41
48
|
if key[0] == 'history':
|
|
@@ -45,29 +52,28 @@ def generate_testcase(project,
|
|
|
45
52
|
continue
|
|
46
53
|
if key[-2] == 'option' and key[-1] == 'cachedir':
|
|
47
54
|
continue
|
|
48
|
-
sc_type = project.get(*key, field='type')
|
|
55
|
+
sc_type: str = project.get(*key, field='type')
|
|
49
56
|
if 'file' not in sc_type and 'dir' not in sc_type:
|
|
50
57
|
continue
|
|
51
58
|
for _, key_step, key_index in project.get(*key, field=None).getvalues():
|
|
52
59
|
project.hash_files(
|
|
53
60
|
*key,
|
|
54
61
|
check=False,
|
|
55
|
-
allow_cache=True,
|
|
56
62
|
verbose=False,
|
|
57
|
-
|
|
63
|
+
missing_ok=True,
|
|
58
64
|
step=key_step, index=key_index)
|
|
59
65
|
|
|
60
66
|
manifest_path = os.path.join(issue_dir.name, 'orig_manifest.json')
|
|
61
67
|
project.write_manifest(manifest_path)
|
|
62
68
|
|
|
63
|
-
flow = project.
|
|
64
|
-
tool = project.get('flowgraph', flow, step, index, 'tool')
|
|
65
|
-
task = project.get('flowgraph', flow, step, index, 'task')
|
|
69
|
+
flow = project.option.get_flow()
|
|
70
|
+
tool: str = project.get('flowgraph', flow, step, index, 'tool')
|
|
71
|
+
task: str = project.get('flowgraph', flow, step, index, 'task')
|
|
66
72
|
|
|
67
|
-
task_requires = project.get('tool', tool, 'task', task, 'require',
|
|
68
|
-
|
|
73
|
+
task_requires: List[str] = project.get('tool', tool, 'task', task, 'require',
|
|
74
|
+
step=step, index=index)
|
|
69
75
|
|
|
70
|
-
def determine_copy(*keypath, in_require):
|
|
76
|
+
def determine_copy(*keypath: str, in_require: bool):
|
|
71
77
|
copy = in_require
|
|
72
78
|
|
|
73
79
|
if keypath[0] == 'library':
|
|
@@ -78,18 +84,9 @@ def generate_testcase(project,
|
|
|
78
84
|
copy = include_libraries
|
|
79
85
|
|
|
80
86
|
copy = copy and determine_copy(*keypath[2:], in_require=in_require)
|
|
81
|
-
elif keypath[0] == 'pdk':
|
|
82
|
-
# only copy pdks if selected
|
|
83
|
-
if include_specific_pdks and keypath[1] in include_specific_pdks:
|
|
84
|
-
copy = True
|
|
85
|
-
else:
|
|
86
|
-
copy = include_pdks
|
|
87
87
|
elif keypath[0] == 'history':
|
|
88
88
|
# Skip history
|
|
89
89
|
copy = False
|
|
90
|
-
elif keypath[0] == 'package':
|
|
91
|
-
# Skip packages
|
|
92
|
-
copy = False
|
|
93
90
|
elif keypath[0] == 'tool':
|
|
94
91
|
# Only grab tool / tasks
|
|
95
92
|
copy = False
|
|
@@ -107,9 +104,6 @@ def generate_testcase(project,
|
|
|
107
104
|
elif keypath[1] == 'cachedir':
|
|
108
105
|
# Avoid cache directory
|
|
109
106
|
copy = False
|
|
110
|
-
elif keypath[1] == 'cfg':
|
|
111
|
-
# Avoid all of cfg, since we are getting the manifest separately
|
|
112
|
-
copy = False
|
|
113
107
|
elif keypath[1] == 'credentials':
|
|
114
108
|
# Exclude credentials file
|
|
115
109
|
copy = False
|
|
@@ -120,7 +114,7 @@ def generate_testcase(project,
|
|
|
120
114
|
if 'default' in keypath:
|
|
121
115
|
continue
|
|
122
116
|
|
|
123
|
-
sctype = project.get(*keypath, field='type')
|
|
117
|
+
sctype: str = project.get(*keypath, field='type')
|
|
124
118
|
if 'file' not in sctype and 'dir' not in sctype:
|
|
125
119
|
continue
|
|
126
120
|
|
|
@@ -133,10 +127,10 @@ def generate_testcase(project,
|
|
|
133
127
|
# Collect files
|
|
134
128
|
work_dir = workdir(project, step=step, index=index)
|
|
135
129
|
|
|
136
|
-
builddir = project.
|
|
130
|
+
builddir = project.option.get_builddir()
|
|
137
131
|
if os.path.isabs(builddir):
|
|
138
132
|
# If build is an abs path, grab last directory
|
|
139
|
-
project.
|
|
133
|
+
project.option.set_builddir(os.path.basename(builddir))
|
|
140
134
|
|
|
141
135
|
# Temporarily change current directory to appear to be issue_dir
|
|
142
136
|
original_cwd = project._Project__cwd
|
|
@@ -161,20 +155,20 @@ def generate_testcase(project,
|
|
|
161
155
|
current_work_dir = os.getcwd()
|
|
162
156
|
os.chdir(new_work_dir)
|
|
163
157
|
|
|
164
|
-
flow = project.
|
|
158
|
+
flow = project.option.get_flow()
|
|
165
159
|
|
|
166
|
-
task_class = project.get("tool", tool, "task", task, field="schema")
|
|
160
|
+
task_class: "Task" = project.get("tool", tool, "task", task, field="schema")
|
|
167
161
|
|
|
168
162
|
with task_class.runtime(SchedulerNode(project, step, index), relpath=new_work_dir) as task_obj:
|
|
169
163
|
# Rewrite replay.sh
|
|
170
|
-
prev_quiet = project.
|
|
171
|
-
project.
|
|
164
|
+
prev_quiet = project.option.get_quiet(step=step, index=index)
|
|
165
|
+
project.option.set_quiet(True, step=step, index=index)
|
|
172
166
|
try:
|
|
173
167
|
# Rerun pre_process
|
|
174
168
|
task_obj.pre_process()
|
|
175
169
|
except Exception:
|
|
176
170
|
pass
|
|
177
|
-
project.
|
|
171
|
+
project.option.set_quiet(prev_quiet, step=step, index=index)
|
|
178
172
|
|
|
179
173
|
is_python_tool = task_obj.get_exe() is None
|
|
180
174
|
if not is_python_tool:
|
|
@@ -193,7 +187,7 @@ def generate_testcase(project,
|
|
|
193
187
|
git_data = {}
|
|
194
188
|
try:
|
|
195
189
|
# Check git information
|
|
196
|
-
repo = git.Repo(path=os.path.join(
|
|
190
|
+
repo = git.Repo(path=os.path.join(os.path.dirname(siliconcompiler.__file__), '..'))
|
|
197
191
|
commit = repo.head.commit
|
|
198
192
|
git_data['commit'] = commit.hexsha
|
|
199
193
|
git_data['date'] = time.strftime('%Y-%m-%d %H:%M:%S',
|
|
@@ -201,7 +195,7 @@ def generate_testcase(project,
|
|
|
201
195
|
git_data['author'] = f'{commit.author.name} <{commit.author.email}>'
|
|
202
196
|
git_data['msg'] = commit.message
|
|
203
197
|
# Count number of commits ahead of version
|
|
204
|
-
version_tag = repo.tag(f'v{
|
|
198
|
+
version_tag = repo.tag(f'v{siliconcompiler.__version__}')
|
|
205
199
|
count = 0
|
|
206
200
|
for c in commit.iter_parents():
|
|
207
201
|
count += 1
|
|
@@ -224,7 +218,6 @@ def generate_testcase(project,
|
|
|
224
218
|
issue_information['run'] = {'step': step,
|
|
225
219
|
'index': index,
|
|
226
220
|
'libraries_included': include_libraries,
|
|
227
|
-
'pdks_included': include_pdks,
|
|
228
221
|
'tool': tool,
|
|
229
222
|
'toolversion': project.get('record', 'toolversion',
|
|
230
223
|
step=step, index=index),
|
|
@@ -276,7 +269,7 @@ def generate_testcase(project,
|
|
|
276
269
|
add_files = [manifest_path,
|
|
277
270
|
issue_path,
|
|
278
271
|
readme_path]
|
|
279
|
-
if not is_python_tool:
|
|
272
|
+
if not is_python_tool and run_path:
|
|
280
273
|
add_files.append(run_path)
|
|
281
274
|
for path in add_files:
|
|
282
275
|
tar.add(os.path.abspath(path),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: siliconcompiler
|
|
3
|
-
Version: 0.35.
|
|
3
|
+
Version: 0.35.3
|
|
4
4
|
Summary: A compiler framework that automates translation from source code to silicon.
|
|
5
5
|
Author: Zero ASIC
|
|
6
6
|
License: Apache License 2.0
|
|
@@ -37,7 +37,7 @@ Requires-Dist: PyYAML<7.0.0,>=6.0.0
|
|
|
37
37
|
Requires-Dist: GitPython<3.2,>=3.1.44
|
|
38
38
|
Requires-Dist: PyGithub<2.9.0,>=2.8.0
|
|
39
39
|
Requires-Dist: urllib3>=1.26.0
|
|
40
|
-
Requires-Dist: lambdapdk>=0.2.
|
|
40
|
+
Requires-Dist: lambdapdk>=0.2.4
|
|
41
41
|
Requires-Dist: fasteners>=0.20
|
|
42
42
|
Requires-Dist: pandas>=1.1.5
|
|
43
43
|
Requires-Dist: psutil>=5.8.0
|
|
@@ -63,8 +63,8 @@ Requires-Dist: flake8==7.3.0; extra == "lint"
|
|
|
63
63
|
Requires-Dist: tclint==0.6.1; extra == "lint"
|
|
64
64
|
Requires-Dist: codespell==2.4.1; extra == "lint"
|
|
65
65
|
Provides-Extra: docs
|
|
66
|
-
Requires-Dist: Sphinx
|
|
67
|
-
Requires-Dist: pip-licenses==5.
|
|
66
|
+
Requires-Dist: Sphinx<8.3,>=7.4; extra == "docs"
|
|
67
|
+
Requires-Dist: pip-licenses==5.5.0; extra == "docs"
|
|
68
68
|
Requires-Dist: pydata-sphinx-theme==0.16.1; extra == "docs"
|
|
69
69
|
Requires-Dist: sc-leflib>=0.2.0; extra == "docs"
|
|
70
70
|
Provides-Extra: optimizer
|