siliconcompiler 0.36.2__py3-none-any.whl → 0.36.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/project.py +6 -4
- siliconcompiler/schema/baseschema.py +7 -4
- siliconcompiler/schema/docschema.py +3 -3
- siliconcompiler/schema/editableschema.py +1 -1
- siliconcompiler/schema/namedschema.py +6 -6
- siliconcompiler/schema_support/cmdlineschema.py +5 -3
- siliconcompiler/tool.py +4 -2
- siliconcompiler/tools/builtin/wait.py +16 -0
- siliconcompiler/tools/klayout/export.py +0 -2
- siliconcompiler/tools/klayout/merge.py +95 -0
- siliconcompiler/tools/klayout/scripts/klayout_merge.py +79 -0
- siliconcompiler/toolscripts/_tools.json +4 -4
- {siliconcompiler-0.36.2.dist-info → siliconcompiler-0.36.3.dist-info}/METADATA +2 -2
- {siliconcompiler-0.36.2.dist-info → siliconcompiler-0.36.3.dist-info}/RECORD +19 -16
- {siliconcompiler-0.36.2.dist-info → siliconcompiler-0.36.3.dist-info}/WHEEL +1 -1
- {siliconcompiler-0.36.2.dist-info → siliconcompiler-0.36.3.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.36.2.dist-info → siliconcompiler-0.36.3.dist-info}/licenses/LICENSE +0 -0
- {siliconcompiler-0.36.2.dist-info → siliconcompiler-0.36.3.dist-info}/top_level.txt +0 -0
siliconcompiler/_metadata.py
CHANGED
siliconcompiler/project.py
CHANGED
|
@@ -4,7 +4,7 @@ import uuid
|
|
|
4
4
|
|
|
5
5
|
import os.path
|
|
6
6
|
|
|
7
|
-
from typing import Union, List, Tuple, TextIO, Optional, Dict, Set
|
|
7
|
+
from typing import Type, Union, List, Tuple, TextIO, Optional, Dict, Set, TypeVar
|
|
8
8
|
|
|
9
9
|
from siliconcompiler.schema import BaseSchema, NamedSchema, EditableSchema, Parameter, Scope, \
|
|
10
10
|
__version__ as schema_version, \
|
|
@@ -33,6 +33,8 @@ from siliconcompiler.utils.multiprocessing import MPManager
|
|
|
33
33
|
from siliconcompiler.utils.paths import jobdir, workdir
|
|
34
34
|
from siliconcompiler.flows.showflow import ShowFlow
|
|
35
35
|
|
|
36
|
+
TProject = TypeVar("TProject", bound="Project")
|
|
37
|
+
|
|
36
38
|
|
|
37
39
|
class Project(PathSchemaBase, CommandLineSchema, BaseSchema):
|
|
38
40
|
"""
|
|
@@ -236,7 +238,7 @@ class Project(PathSchemaBase, CommandLineSchema, BaseSchema):
|
|
|
236
238
|
return self.get("option", field="schema")
|
|
237
239
|
|
|
238
240
|
@classmethod
|
|
239
|
-
def convert(cls, obj: "Project") ->
|
|
241
|
+
def convert(cls: Type[TProject], obj: "Project") -> TProject:
|
|
240
242
|
"""
|
|
241
243
|
Converts a project from one type to another (e.g., Project to Sim).
|
|
242
244
|
|
|
@@ -526,7 +528,7 @@ class Project(PathSchemaBase, CommandLineSchema, BaseSchema):
|
|
|
526
528
|
f"{', '.join([f'{step}/{index}' for step, index in breakpoints])}")
|
|
527
529
|
self.__dashboard.stop()
|
|
528
530
|
|
|
529
|
-
def run(self) ->
|
|
531
|
+
def run(self) -> TProject:
|
|
530
532
|
'''
|
|
531
533
|
Executes the compilation flow defined in the project's flowgraph.
|
|
532
534
|
|
|
@@ -1238,7 +1240,7 @@ class Project(PathSchemaBase, CommandLineSchema, BaseSchema):
|
|
|
1238
1240
|
return None
|
|
1239
1241
|
|
|
1240
1242
|
# Create copy of project to avoid changing user project
|
|
1241
|
-
proj
|
|
1243
|
+
proj = self.copy()
|
|
1242
1244
|
proj.set_flow(ShowFlow(task))
|
|
1243
1245
|
|
|
1244
1246
|
# Setup options:
|
|
@@ -26,12 +26,15 @@ import os.path
|
|
|
26
26
|
|
|
27
27
|
from enum import Enum, auto
|
|
28
28
|
from functools import cache
|
|
29
|
-
from typing import Dict, Type, Tuple, Union, Set, Callable, List, Optional,
|
|
29
|
+
from typing import Dict, Type, Tuple, TypeVar, Union, Set, Callable, List, Optional, \
|
|
30
|
+
TextIO, Iterable, Any
|
|
30
31
|
|
|
31
32
|
from .parameter import Parameter, NodeValue
|
|
32
33
|
from .journal import Journal
|
|
33
34
|
from ._metadata import version
|
|
34
35
|
|
|
36
|
+
TSchema = TypeVar('TSchema', bound='BaseSchema')
|
|
37
|
+
|
|
35
38
|
|
|
36
39
|
class LazyLoad(Enum):
|
|
37
40
|
"""
|
|
@@ -286,10 +289,10 @@ class BaseSchema:
|
|
|
286
289
|
|
|
287
290
|
# Manifest methods
|
|
288
291
|
@classmethod
|
|
289
|
-
def from_manifest(cls,
|
|
292
|
+
def from_manifest(cls: Type[TSchema],
|
|
290
293
|
filepath: Union[None, str] = None,
|
|
291
294
|
cfg: Union[None, Dict] = None,
|
|
292
|
-
lazyload: bool = True) ->
|
|
295
|
+
lazyload: bool = True) -> TSchema:
|
|
293
296
|
'''
|
|
294
297
|
Create a new schema based on the provided source files.
|
|
295
298
|
|
|
@@ -849,7 +852,7 @@ class BaseSchema:
|
|
|
849
852
|
return manifest
|
|
850
853
|
|
|
851
854
|
# Utility functions
|
|
852
|
-
def copy(self, key: Optional[Tuple[str, ...]] = None) ->
|
|
855
|
+
def copy(self: TSchema, key: Optional[Tuple[str, ...]] = None) -> TSchema:
|
|
853
856
|
"""
|
|
854
857
|
Returns a copy of this schema.
|
|
855
858
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from typing import Union, List
|
|
1
|
+
from typing import Type, Union, List
|
|
2
2
|
|
|
3
|
-
from .baseschema import BaseSchema
|
|
3
|
+
from .baseschema import BaseSchema, TSchema
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class DocsSchema(BaseSchema):
|
|
@@ -11,7 +11,7 @@ class DocsSchema(BaseSchema):
|
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
@classmethod
|
|
14
|
-
def make_docs(cls) -> Union[
|
|
14
|
+
def make_docs(cls: Type[TSchema]) -> Union[TSchema, List[TSchema]]:
|
|
15
15
|
"""Generate the documentation representation for this schema.
|
|
16
16
|
|
|
17
17
|
By default, this method returns a standard instance of the class itself.
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
# SC dependencies outside of its directory, since it may be used by tool drivers
|
|
5
5
|
# that have isolated Python environments.
|
|
6
6
|
|
|
7
|
-
from typing import Dict, Tuple, Optional, Set, Union, List
|
|
7
|
+
from typing import Dict, Tuple, Optional, Set, Type, Union, List
|
|
8
8
|
|
|
9
|
-
from .baseschema import BaseSchema, LazyLoad
|
|
9
|
+
from .baseschema import BaseSchema, LazyLoad, TSchema
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class NamedSchema(BaseSchema):
|
|
@@ -76,11 +76,11 @@ class NamedSchema(BaseSchema):
|
|
|
76
76
|
return cfg.get("__meta__", {}).get("name", None)
|
|
77
77
|
|
|
78
78
|
@classmethod
|
|
79
|
-
def from_manifest(cls,
|
|
79
|
+
def from_manifest(cls: Type[TSchema],
|
|
80
80
|
filepath: Union[None, str] = None,
|
|
81
81
|
cfg: Union[None, Dict] = None,
|
|
82
82
|
lazyload: bool = True,
|
|
83
|
-
name: Optional[str] = None):
|
|
83
|
+
name: Optional[str] = None) -> TSchema:
|
|
84
84
|
'''
|
|
85
85
|
Create a new schema based on the provided source files.
|
|
86
86
|
|
|
@@ -115,8 +115,8 @@ class NamedSchema(BaseSchema):
|
|
|
115
115
|
|
|
116
116
|
return super()._from_dict(manifest, keypath, version=version, lazyload=lazyload)
|
|
117
117
|
|
|
118
|
-
def copy(self, key: Optional[Tuple[str, ...]] = None) ->
|
|
119
|
-
copy
|
|
118
|
+
def copy(self: TSchema, key: Optional[Tuple[str, ...]] = None) -> TSchema:
|
|
119
|
+
copy = super().copy(key=key)
|
|
120
120
|
|
|
121
121
|
if key and key[-1] != "default":
|
|
122
122
|
copy.__name = key[-1]
|
|
@@ -4,12 +4,14 @@ import sys
|
|
|
4
4
|
|
|
5
5
|
import os.path
|
|
6
6
|
|
|
7
|
-
from typing import Set, List, Optional, Union
|
|
7
|
+
from typing import Set, List, Optional, Type, Union, TypeVar
|
|
8
8
|
|
|
9
9
|
from siliconcompiler.schema import BaseSchema, EditableSchema, Parameter, Scope, PerNode
|
|
10
10
|
from siliconcompiler.schema.utils import trim
|
|
11
11
|
from siliconcompiler import _metadata
|
|
12
12
|
|
|
13
|
+
TCmdSchema = TypeVar("TCmdSchema", bound="CommandLineSchema")
|
|
14
|
+
|
|
13
15
|
|
|
14
16
|
class CommandLineSchema(BaseSchema):
|
|
15
17
|
'''
|
|
@@ -68,14 +70,14 @@ class CommandLineSchema(BaseSchema):
|
|
|
68
70
|
EditableSchema(self).insert("cmdarg", name, Parameter(type, **kwargs))
|
|
69
71
|
|
|
70
72
|
@classmethod
|
|
71
|
-
def create_cmdline(cls,
|
|
73
|
+
def create_cmdline(cls: Type[TCmdSchema],
|
|
72
74
|
progname: Optional[str] = None,
|
|
73
75
|
description: Optional[str] = None,
|
|
74
76
|
switchlist: Optional[Union[List[str], Set[str]]] = None,
|
|
75
77
|
version: Optional[str] = None,
|
|
76
78
|
print_banner: bool = True,
|
|
77
79
|
use_cfg: bool = False,
|
|
78
|
-
use_sources: bool = True) ->
|
|
80
|
+
use_sources: bool = True) -> TCmdSchema:
|
|
79
81
|
"""
|
|
80
82
|
Creates an SC command line interface.
|
|
81
83
|
|
siliconcompiler/tool.py
CHANGED
|
@@ -53,7 +53,8 @@ if TYPE_CHECKING:
|
|
|
53
53
|
from siliconcompiler.scheduler import SchedulerNode
|
|
54
54
|
from siliconcompiler import Project
|
|
55
55
|
|
|
56
|
-
TTask = TypeVar('TTask')
|
|
56
|
+
TTask = TypeVar('TTask', bound='Task')
|
|
57
|
+
TShowTask = TypeVar('TShowTask', bound='ShowTask')
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
class TaskError(Exception):
|
|
@@ -2177,7 +2178,8 @@ class ShowTask(Task):
|
|
|
2177
2178
|
cls.register_task(c)
|
|
2178
2179
|
|
|
2179
2180
|
@classmethod
|
|
2180
|
-
def get_task(cls, ext: Optional[str]) ->
|
|
2181
|
+
def get_task(cls: Type[TShowTask], ext: Optional[str]) -> \
|
|
2182
|
+
Union[Optional[TShowTask], Set[Type[TShowTask]]]:
|
|
2181
2183
|
"""
|
|
2182
2184
|
Retrieves a suitable show task instance for a given file extension.
|
|
2183
2185
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from siliconcompiler.tools.builtin import BuiltinTask
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Wait(BuiltinTask):
|
|
5
|
+
'''
|
|
6
|
+
A wait task that stalls the flow until all inputs are available.
|
|
7
|
+
'''
|
|
8
|
+
def __init__(self):
|
|
9
|
+
super().__init__()
|
|
10
|
+
|
|
11
|
+
def _set_io_files(self):
|
|
12
|
+
# No file IO needed for wait task
|
|
13
|
+
return
|
|
14
|
+
|
|
15
|
+
def task(self):
|
|
16
|
+
return "wait"
|
|
@@ -79,8 +79,6 @@ class ExportTask(KLayoutTask, ScreenshotParams):
|
|
|
79
79
|
self.add_output_file(ext="lyt")
|
|
80
80
|
self.add_output_file(ext="lyp")
|
|
81
81
|
|
|
82
|
-
self.add_required_key("var", "stream")
|
|
83
|
-
|
|
84
82
|
sc_stream_order = [default_stream, *[s for s in ("gds", "oas") if s != default_stream]]
|
|
85
83
|
req_set = False
|
|
86
84
|
for s in sc_stream_order:
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
from typing import Optional, Union
|
|
2
|
+
|
|
3
|
+
from siliconcompiler.tools.klayout import KLayoutTask
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Merge(KLayoutTask):
|
|
7
|
+
"""
|
|
8
|
+
Klayout task to merge multiple GDS files and provide prefixing for cell names.
|
|
9
|
+
"""
|
|
10
|
+
def __init__(self):
|
|
11
|
+
super().__init__()
|
|
12
|
+
|
|
13
|
+
self.add_parameter("reference", "(<fs,input>,str,str)",
|
|
14
|
+
"Reference fileset or input node for merge operation, structured as "
|
|
15
|
+
"(fs, library name, fileset) or (input, step, index)")
|
|
16
|
+
self.add_parameter("merge", "[(<fs,input>,str,str,str)]",
|
|
17
|
+
"Fileset or input node to be merge with prefix, structured as "
|
|
18
|
+
"(fs, library name, fileset) or (input, step, index) along with prefix "
|
|
19
|
+
"string")
|
|
20
|
+
|
|
21
|
+
def __fix_type(self, type: str) -> str:
|
|
22
|
+
if type == "fileset":
|
|
23
|
+
return "fs"
|
|
24
|
+
return type
|
|
25
|
+
|
|
26
|
+
def set_klayout_reference(self, type: str, source0: str, source1: str,
|
|
27
|
+
step: Optional[str] = None,
|
|
28
|
+
index: Optional[Union[str, int]] = None):
|
|
29
|
+
"""
|
|
30
|
+
Sets the reference file for the merge operation.
|
|
31
|
+
Args:
|
|
32
|
+
type (str): The reference fileset or input node.
|
|
33
|
+
source0 (str): The first part of the source (library name or step).
|
|
34
|
+
source1 (str): The second part of the source (fileset name or index).
|
|
35
|
+
step (Optional[str]): The specific step to apply this configuration to.
|
|
36
|
+
index (Optional[Union[str, int]]): The specific index to apply this configuration to.
|
|
37
|
+
"""
|
|
38
|
+
self.set("var", "reference", (self.__fix_type(type), source0, source1),
|
|
39
|
+
step=step, index=index)
|
|
40
|
+
|
|
41
|
+
def add_klayout_merge(self, type: str, source0: str, source1: str, prefix: str,
|
|
42
|
+
step: Optional[str] = None,
|
|
43
|
+
index: Optional[Union[str, int]] = None, clobber: bool = False):
|
|
44
|
+
"""
|
|
45
|
+
Adds a file to be merged with the reference file.
|
|
46
|
+
Args:
|
|
47
|
+
type (str): The fileset or input node to be merged.
|
|
48
|
+
prefix (str): The prefix to apply during the merge.
|
|
49
|
+
source0 (str): The first part of the source (library name or step).
|
|
50
|
+
source1 (str): The second part of the source (fileset name or index).
|
|
51
|
+
step (Optional[str]): The specific step to apply this configuration to.
|
|
52
|
+
index (Optional[Union[str, int]]): The specific index to apply this configuration to.
|
|
53
|
+
clobber (bool, optional): If True, overwrites the existing list of merge files.
|
|
54
|
+
If False, appends to the list. Defaults to False.
|
|
55
|
+
"""
|
|
56
|
+
if clobber:
|
|
57
|
+
self.set("var", "merge", (self.__fix_type(type), source0, source1, prefix),
|
|
58
|
+
step=step, index=index)
|
|
59
|
+
else:
|
|
60
|
+
self.add("var", "merge", (self.__fix_type(type), source0, source1, prefix),
|
|
61
|
+
step=step, index=index)
|
|
62
|
+
|
|
63
|
+
def task(self) -> str:
|
|
64
|
+
return 'merge'
|
|
65
|
+
|
|
66
|
+
def setup(self) -> None:
|
|
67
|
+
super().setup()
|
|
68
|
+
|
|
69
|
+
self.set_script("klayout_merge.py")
|
|
70
|
+
|
|
71
|
+
self.add_required_key("var", "reference")
|
|
72
|
+
self.add_required_key("var", "merge")
|
|
73
|
+
|
|
74
|
+
if self.get("var", "reference"):
|
|
75
|
+
ref_type, ref_source0, ref_source1 = self.get("var", "reference")
|
|
76
|
+
if ref_type == 'input':
|
|
77
|
+
step, index = ref_source0, ref_source1
|
|
78
|
+
self.add_input_file(
|
|
79
|
+
self.compute_input_file_node_name(f"{self.design_topmodule}.gds",
|
|
80
|
+
step, index))
|
|
81
|
+
else:
|
|
82
|
+
lib_name, fileset = ref_source0, ref_source1
|
|
83
|
+
self.add_required_key("library", lib_name, "fileset", fileset, "file", "gds")
|
|
84
|
+
for merge_entry in self.get("var", "merge"):
|
|
85
|
+
merge_type, merge_source0, merge_source1, _ = merge_entry
|
|
86
|
+
if merge_type == 'input':
|
|
87
|
+
step, index = merge_source0, merge_source1
|
|
88
|
+
self.add_input_file(
|
|
89
|
+
self.compute_input_file_node_name(f"{self.design_topmodule}.gds",
|
|
90
|
+
step, index))
|
|
91
|
+
else:
|
|
92
|
+
lib_name, fileset = merge_source0, merge_source1
|
|
93
|
+
self.add_required_key("library", lib_name, "fileset", fileset, "file", "gds")
|
|
94
|
+
|
|
95
|
+
self.add_output_file(ext="gds")
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import pya
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
import os.path
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
if __name__ == "__main__":
|
|
8
|
+
# SC_ROOT provided by CLI
|
|
9
|
+
sys.path.append(SC_KLAYOUT_ROOT) # noqa: F821
|
|
10
|
+
sys.path.append(SC_TOOLS_ROOT) # noqa: F821
|
|
11
|
+
sys.path.append(SC_ROOT) # noqa: F821
|
|
12
|
+
|
|
13
|
+
from klayout_utils import (
|
|
14
|
+
technology,
|
|
15
|
+
get_schema,
|
|
16
|
+
generate_metrics
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
from klayout_operations import (
|
|
20
|
+
read_layout,
|
|
21
|
+
write_stream
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
schema = get_schema(manifest='sc_manifest.json')
|
|
25
|
+
|
|
26
|
+
# Extract info from manifest
|
|
27
|
+
sc_step = schema.get('arg', 'step')
|
|
28
|
+
sc_index = schema.get('arg', 'index')
|
|
29
|
+
sc_tool = 'klayout'
|
|
30
|
+
sc_task = 'merge'
|
|
31
|
+
|
|
32
|
+
design_name = schema.get('option', 'design')
|
|
33
|
+
fileset = schema.get("option", "fileset")[0]
|
|
34
|
+
design = schema.get("library", design_name, "fileset", fileset, "topmodule")
|
|
35
|
+
|
|
36
|
+
ref_type, ref_source0, ref_source1 = schema.get("tool", sc_tool, "task", sc_task,
|
|
37
|
+
"var", "reference",
|
|
38
|
+
step=sc_step, index=sc_index)
|
|
39
|
+
if ref_type == 'input':
|
|
40
|
+
step, index = ref_source0, ref_source1
|
|
41
|
+
input_file = os.path.join('inputs', f"{design}.{ref_source0}{ref_source1}.gds")
|
|
42
|
+
else:
|
|
43
|
+
input_file = schema.get("library", ref_source0, "fileset", ref_source1, "file", "gds")[0]
|
|
44
|
+
|
|
45
|
+
merge_files = []
|
|
46
|
+
for merge_type, merge_source0, merge_source1, prefix in \
|
|
47
|
+
schema.get("tool", sc_tool, "task", sc_task, "var", "merge",
|
|
48
|
+
step=sc_step, index=sc_index):
|
|
49
|
+
if merge_type == 'input':
|
|
50
|
+
merge_file = os.path.join('inputs', f"{design}.{merge_source0}{merge_source1}.gds")
|
|
51
|
+
else:
|
|
52
|
+
merge_file = schema.get("library", merge_source0, "fileset", merge_source1,
|
|
53
|
+
"file", "gds")[0]
|
|
54
|
+
merge_files.append((prefix, merge_file))
|
|
55
|
+
|
|
56
|
+
tech = technology(design, schema)
|
|
57
|
+
base_layout = read_layout(input_file)
|
|
58
|
+
top_cell = base_layout.top_cell()
|
|
59
|
+
base_layout.technology_name = tech.name
|
|
60
|
+
|
|
61
|
+
for prefix, merge_file in merge_files:
|
|
62
|
+
print(f"[INFO] Merging file '{merge_file}' with prefix '{prefix}'")
|
|
63
|
+
merge_layout = read_layout(merge_file)
|
|
64
|
+
|
|
65
|
+
merge_top = merge_layout.top_cell()
|
|
66
|
+
|
|
67
|
+
new_cell_name = f"{prefix}{merge_top.name}"
|
|
68
|
+
if base_layout.cell(new_cell_name):
|
|
69
|
+
print(f"[WARN] Cell '{new_cell_name}' already exists in base layout. Skipping.")
|
|
70
|
+
continue
|
|
71
|
+
print(f"[INFO] Adding cell '{merge_top.name}' as '{new_cell_name}'")
|
|
72
|
+
new_cell = base_layout.create_cell(new_cell_name)
|
|
73
|
+
new_cell.copy_tree(merge_top)
|
|
74
|
+
cell_inst = pya.CellInstArray(new_cell.cell_index(), pya.Trans())
|
|
75
|
+
top_cell.insert(cell_inst)
|
|
76
|
+
|
|
77
|
+
write_stream(base_layout, f"outputs/{design}.gds", True)
|
|
78
|
+
|
|
79
|
+
generate_metrics()
|
|
@@ -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": "11bd3ead9d12211b72706ac7c8653234cc136b8b",
|
|
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": "dda887bc6e5160fd7c15489cc5845eaff72b5252",
|
|
21
21
|
"auto-update": true
|
|
22
22
|
},
|
|
23
23
|
"netgen": {
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
},
|
|
169
169
|
"keplerformal": {
|
|
170
170
|
"git-url": "https://github.com/keplertech/kepler-formal.git",
|
|
171
|
-
"git-commit": "
|
|
171
|
+
"git-commit": "d647673f3b3960256069a79e8d92d36a3b89d9a4",
|
|
172
172
|
"auto-update": false
|
|
173
173
|
}
|
|
174
|
-
}
|
|
174
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: siliconcompiler
|
|
3
|
-
Version: 0.36.
|
|
3
|
+
Version: 0.36.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
|
|
@@ -43,7 +43,7 @@ Requires-Dist: fasteners>=0.20
|
|
|
43
43
|
Requires-Dist: pandas>=1.1.5
|
|
44
44
|
Requires-Dist: psutil>=5.8.0
|
|
45
45
|
Requires-Dist: Jinja2>=2.11.3
|
|
46
|
-
Requires-Dist: pyslang==
|
|
46
|
+
Requires-Dist: pyslang==10.0.0
|
|
47
47
|
Requires-Dist: importlib_metadata; python_version < "3.10"
|
|
48
48
|
Requires-Dist: streamlit==1.46.1; python_full_version != "3.9.7"
|
|
49
49
|
Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
siliconcompiler/__init__.py,sha256=I1RN8BMRpuAx9tdx5CLNlpIqT-xg2EwvOB8TcqHQSN0,1114
|
|
2
2
|
siliconcompiler/_common.py,sha256=1bY1qdFxnstAyhJrkJCBhSlZ614dlmcwL0Bf7NOneyY,1047
|
|
3
|
-
siliconcompiler/_metadata.py,sha256=
|
|
3
|
+
siliconcompiler/_metadata.py,sha256=Mw0XQppBx_7N8sQxilBZVpf15z6xqTjfKwipi4VAjs4,1286
|
|
4
4
|
siliconcompiler/asic.py,sha256=IFKPCZrhXHtyp9qieRqVA1jhKPPmVmYBnC1DvCXpPTo,28836
|
|
5
5
|
siliconcompiler/checklist.py,sha256=MD0cVYm5RrxSDCBVO1nakGC6LH5hWnzisaF4e0V6eV8,24909
|
|
6
6
|
siliconcompiler/design.py,sha256=dUQolB1fzQX20WWGxxl8LMaDma0DITv_OY6_qIgPk5M,34766
|
|
@@ -8,9 +8,9 @@ siliconcompiler/flowgraph.py,sha256=oGWC84amHIcx2gUO7QMkJ7vphfaOzrkp0LXHPsIZVpU,
|
|
|
8
8
|
siliconcompiler/fpga.py,sha256=8uvmIyvWOWx5X1JP3xaSpkA9hVyox4l-hK63aYzN8-w,9075
|
|
9
9
|
siliconcompiler/library.py,sha256=pPzUaVZXizS6eRLsnSrILwCgBtHfOzWk9CwC5COoHOk,16065
|
|
10
10
|
siliconcompiler/pdk.py,sha256=rENDQve5edt7EkdgnNfW-mfgJVklShLbvYddaEA1-_k,31581
|
|
11
|
-
siliconcompiler/project.py,sha256=
|
|
11
|
+
siliconcompiler/project.py,sha256=tOeyuf6IcovZBSyXcyaRXw3BQLj9frmWPm1q1k01cQ4,52260
|
|
12
12
|
siliconcompiler/schematic.py,sha256=0PVFqZvJZW_e2NRGvv6DJPHGjwOlao1qHgZLhgCaEcQ,18385
|
|
13
|
-
siliconcompiler/tool.py,sha256=
|
|
13
|
+
siliconcompiler/tool.py,sha256=zdr3Sl019PC0BnCuc_q6XOCvNs-vaZCmMTSMjd1bHdw,111877
|
|
14
14
|
siliconcompiler/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
siliconcompiler/apps/_common.py,sha256=uldDgTeAEfo1Y0X_hxpr0yjSW0W0c5UaiuSpgk7aUuk,8605
|
|
16
16
|
siliconcompiler/apps/sc_dashboard.py,sha256=BU3hPC7OzfUpkKEVsBD_46zd4OzHO86eJMB5CaWpVf0,3496
|
|
@@ -140,11 +140,11 @@ siliconcompiler/scheduler/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
|
140
140
|
siliconcompiler/scheduler/validation/email_credentials.json,sha256=hkJs0U2h2Bgm1zxeXvanIJ-prPhpn_aU6e3qwIs7qA0,1997
|
|
141
141
|
siliconcompiler/schema/__init__.py,sha256=z5zc_4MG53d-Io5ZOFQT0suHkW8oN5CrdpJx28mwGUk,547
|
|
142
142
|
siliconcompiler/schema/_metadata.py,sha256=5k36T56kA9lriGp2gWKsM_Hc9rfD-Ya_yLd_gXYI4Pw,63
|
|
143
|
-
siliconcompiler/schema/baseschema.py,sha256=
|
|
144
|
-
siliconcompiler/schema/docschema.py,sha256=
|
|
145
|
-
siliconcompiler/schema/editableschema.py,sha256=
|
|
143
|
+
siliconcompiler/schema/baseschema.py,sha256=73b8IW8tDM-0hBbxXnIdkOsLcI0Z1CVY6Y1B2ZUfinE,51769
|
|
144
|
+
siliconcompiler/schema/docschema.py,sha256=sm9O2Y9_fQ0Ksg30EdgUG5-lJw8cVgIOBewReknnLAc,948
|
|
145
|
+
siliconcompiler/schema/editableschema.py,sha256=TaHMMeVnqzLDh33agRyy9fgzzQiA_yzQHtiV7GbIfy4,6075
|
|
146
146
|
siliconcompiler/schema/journal.py,sha256=i3TYcuqdwq-FCCit8M02W8YbIUsY61mlPHSS-7Y0axc,6538
|
|
147
|
-
siliconcompiler/schema/namedschema.py,sha256=
|
|
147
|
+
siliconcompiler/schema/namedschema.py,sha256=SJRZavuEHGtmdh5r_ZwaTVILlylPlcRG75Y_2RSV0Kc,3762
|
|
148
148
|
siliconcompiler/schema/parameter.py,sha256=Y-TfK__m6NsudJXG3iTZHr5XlUg8JbIUZsg-VG6jnPo,34721
|
|
149
149
|
siliconcompiler/schema/parametertype.py,sha256=oEkZN81sftAgnEEv84M9Vz8UPxwIRioxE6sJszV1A8o,11549
|
|
150
150
|
siliconcompiler/schema/parametervalue.py,sha256=uqzWZ9lEmvqZsc0izkCd-anQVjdlLLitj4utEQQQzCY,30163
|
|
@@ -154,7 +154,7 @@ siliconcompiler/schema/docs/__init__.py,sha256=alRd_dr35ryJDKRaMx1dPpQ-NMBI-ldwH
|
|
|
154
154
|
siliconcompiler/schema/docs/schemagen.py,sha256=rLHnCabkvy0cTzkuzxXSCuI4qRaefdpTI_ijjZBrdfs,20859
|
|
155
155
|
siliconcompiler/schema/docs/utils.py,sha256=SCR9hYlQHUWbC6fT7LttKIfktzhMfrCL0BVxynYWtLc,10142
|
|
156
156
|
siliconcompiler/schema_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
157
|
-
siliconcompiler/schema_support/cmdlineschema.py,sha256
|
|
157
|
+
siliconcompiler/schema_support/cmdlineschema.py,sha256=-JGL-6Kzi2BbqlnufYmNUbKu7Xw4JLo8ndQ2Jjk-JhI,10787
|
|
158
158
|
siliconcompiler/schema_support/dependencyschema.py,sha256=LY6RhtxLOxjOBj7FBw88i0TlLd7WZlNh5omHBtU5VO8,9895
|
|
159
159
|
siliconcompiler/schema_support/filesetschema.py,sha256=ouKKUSNCry7ggzya8wGFvbEf2u3GwyERMhyYxUf3fmM,11675
|
|
160
160
|
siliconcompiler/schema_support/metric.py,sha256=mLzdtpM76l2cPINGWONrAjBMU28ZnQR_yLOGMYBLBV4,16158
|
|
@@ -189,6 +189,7 @@ siliconcompiler/tools/builtin/minimum.py,sha256=B5l6VD55S1a5GqIxBrXYspBBVwHevpmb
|
|
|
189
189
|
siliconcompiler/tools/builtin/mux.py,sha256=N4lkAHo4jemBqkRkWCb07b3TAV7s6B1FURUvt6w0L9g,2895
|
|
190
190
|
siliconcompiler/tools/builtin/nop.py,sha256=t93mTLPO0t0oXlYEn8DtHol2SLJIJSM73QVTlCl6RWQ,243
|
|
191
191
|
siliconcompiler/tools/builtin/verify.py,sha256=zR_OgvJkLytOdR0cAPNJ1vgaWzR7EVLTgxtEKFZhZYc,2389
|
|
192
|
+
siliconcompiler/tools/builtin/wait.py,sha256=sUThkSbEioJhGuH7Ds41c7FEpGY1NclTLRcmmNTofTY,347
|
|
192
193
|
siliconcompiler/tools/chisel/__init__.py,sha256=3wiW0b3cPj_ULHM63pBIxcW-aLmNeSafSlyYHhHw7Lk,632
|
|
193
194
|
siliconcompiler/tools/chisel/convert.py,sha256=2P7rth3gxKLa1VP0S2ItGQvMEvCcsvKBF6VBEVQvP4Y,7282
|
|
194
195
|
siliconcompiler/tools/chisel/template/SCDriver.scala,sha256=lTQ6EQURgCtVJferGIKyeOntPVAr2P1itLP24njVT7w,193
|
|
@@ -214,12 +215,14 @@ siliconcompiler/tools/keplerformal/lec.py,sha256=SePSOeQm-VbpnblcZXU7KyfK8MWzk4M
|
|
|
214
215
|
siliconcompiler/tools/klayout/__init__.py,sha256=t2WHhiUAltGLFkw0N7wzs0m9Hx1xZo2tGx4d3uKSusY,8670
|
|
215
216
|
siliconcompiler/tools/klayout/convert_drc_db.py,sha256=ekzfQJ5Gef0Xo9KzrbXgCC4P5KpGKS4ZSfWHrM9Gmic,812
|
|
216
217
|
siliconcompiler/tools/klayout/drc.py,sha256=DgdUMVmNEQ56Imd2Z5LYkuBr7yUAK-wy6_cBGAUGc9E,3530
|
|
217
|
-
siliconcompiler/tools/klayout/export.py,sha256=
|
|
218
|
+
siliconcompiler/tools/klayout/export.py,sha256=oxBFGrfFk2svpwzHoqhWGlupfCfygnWIMYEgRMyE-RY,4959
|
|
219
|
+
siliconcompiler/tools/klayout/merge.py,sha256=c3ic52b26vom9VT08lSW-Of7AzABs04w9_jIWF34os0,4481
|
|
218
220
|
siliconcompiler/tools/klayout/operations.py,sha256=sUSHDPsgDm6PnehgANQIlDP6K2rnNLgMpQEXVakBQ3c,8681
|
|
219
221
|
siliconcompiler/tools/klayout/screenshot.py,sha256=hpUfZJ6dcgYypyLtcgfWByJOCPh4r16UvmoX_DgbOgg,4979
|
|
220
222
|
siliconcompiler/tools/klayout/show.py,sha256=Lkmf90qOomLvrYELRhSSzH9F2i7cgsAfETHU2lVRxDs,1494
|
|
221
223
|
siliconcompiler/tools/klayout/scripts/klayout_convert_drc_db.py,sha256=QHsaiKybpj6Uisq7wLapx5xjABA1OMvxXYBHoaopPV4,5791
|
|
222
224
|
siliconcompiler/tools/klayout/scripts/klayout_export.py,sha256=CpoVfoK1sjC5P0tSIEWHZrQP1D4aQdGWovbUFutAL_Y,6457
|
|
225
|
+
siliconcompiler/tools/klayout/scripts/klayout_merge.py,sha256=eLBjV17EzONquNtDdl6qoznhxLEcw1Y8WkW8SMAEMfc,2838
|
|
223
226
|
siliconcompiler/tools/klayout/scripts/klayout_operations.py,sha256=whe-S6APZ9kreybanTvGGotd043NgatbFg6NEd6eka0,13264
|
|
224
227
|
siliconcompiler/tools/klayout/scripts/klayout_show.py,sha256=o3aFDSWcotaE3Qb27gh-5uzl0OsMsH_7dkSC2stztzE,10306
|
|
225
228
|
siliconcompiler/tools/klayout/scripts/klayout_utils.py,sha256=9TiI-39WOGqXKsdjZDRhjtpsextORuZnuAMYbcRfaKM,7877
|
|
@@ -360,7 +363,7 @@ siliconcompiler/tools/yosys/techmaps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
|
360
363
|
siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v,sha256=M4T-ygiKmlsprl5eGGLaV5w6HVqlEepn0wlUDmOkapg,773
|
|
361
364
|
siliconcompiler/tools/yosys/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
362
365
|
siliconcompiler/tools/yosys/templates/abc.const,sha256=TAq9ThdLMYCJGrtToEU0gWcLuEtjE4Gk8huBbTm1v-I,116
|
|
363
|
-
siliconcompiler/toolscripts/_tools.json,sha256=
|
|
366
|
+
siliconcompiler/toolscripts/_tools.json,sha256=PACi-gc0JzK4NBl2nm4BbiVPpKC7mvvX_knoSLR0Plo,5272
|
|
364
367
|
siliconcompiler/toolscripts/_tools.py,sha256=P30KY_xbbjl8eHGsPAxDcAzWvJJpiL07ZfGZZDQbdR8,7174
|
|
365
368
|
siliconcompiler/toolscripts/rhel8/install-chisel.sh,sha256=RJ7BiZhsXBLTgQhHUcRZmHqhKB6syVaC2nvVoGrIXOI,709
|
|
366
369
|
siliconcompiler/toolscripts/rhel8/install-icarus.sh,sha256=EW7308IUGYOx7A22s7s0tNq90nHhrpHHUMrx3cd9lMM,962
|
|
@@ -481,9 +484,9 @@ siliconcompiler/utils/paths.py,sha256=322TbbEaU5wM-06Xo-E8IlzMNV3DRi4GKDwg2EgTry
|
|
|
481
484
|
siliconcompiler/utils/settings.py,sha256=8Zj5LDP32RAg8xisMJFgTxaoY7NWT90nAxaggk7K0sA,5819
|
|
482
485
|
siliconcompiler/utils/showtools.py,sha256=ZWD2frgt0t2Eh8S9Hl3CwGEa1cnNiQx-06pWtyDTiic,1375
|
|
483
486
|
siliconcompiler/utils/units.py,sha256=mppo7T5xI2P2S7SweE_qsOuoTc7RezVX61G2whCzpV4,6261
|
|
484
|
-
siliconcompiler-0.36.
|
|
485
|
-
siliconcompiler-0.36.
|
|
486
|
-
siliconcompiler-0.36.
|
|
487
|
-
siliconcompiler-0.36.
|
|
488
|
-
siliconcompiler-0.36.
|
|
489
|
-
siliconcompiler-0.36.
|
|
487
|
+
siliconcompiler-0.36.3.dist-info/licenses/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
|
|
488
|
+
siliconcompiler-0.36.3.dist-info/METADATA,sha256=XoPtXhszKPVyjamqz-arGRyPZIz2kOzQO0mGwo85L4I,11303
|
|
489
|
+
siliconcompiler-0.36.3.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
490
|
+
siliconcompiler-0.36.3.dist-info/entry_points.txt,sha256=5I-z7cmFNPRpD_x1dMQnm-oLwTPOMURxD5frvUM0GE8,832
|
|
491
|
+
siliconcompiler-0.36.3.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
|
|
492
|
+
siliconcompiler-0.36.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|