siliconcompiler 0.28.3__py3-none-any.whl → 0.28.4__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_dashboard.py +1 -1
- siliconcompiler/core.py +93 -55
- siliconcompiler/fpgas/vpr_example.py +8 -0
- siliconcompiler/package.py +3 -2
- siliconcompiler/report/dashboard/__init__.py +9 -0
- siliconcompiler/report/dashboard/components/__init__.py +13 -1
- siliconcompiler/report/dashboard/layouts/vertical_flowgraph.py +4 -3
- siliconcompiler/report/dashboard/layouts/vertical_flowgraph_node_tab.py +4 -1
- siliconcompiler/report/dashboard/layouts/vertical_flowgraph_sac_tabs.py +4 -1
- siliconcompiler/report/dashboard/state.py +3 -1
- siliconcompiler/report/summary_table.py +1 -2
- siliconcompiler/report/utils.py +1 -2
- siliconcompiler/scheduler/__init__.py +2 -0
- siliconcompiler/sphinx_ext/dynamicgen.py +6 -0
- siliconcompiler/tools/_common/__init__.py +44 -6
- siliconcompiler/tools/_common/asic.py +79 -23
- siliconcompiler/tools/genfasm/genfasm.py +7 -0
- siliconcompiler/tools/ghdl/convert.py +7 -0
- siliconcompiler/tools/klayout/convert_drc_db.py +60 -0
- siliconcompiler/tools/klayout/drc.py +156 -0
- siliconcompiler/tools/klayout/export.py +2 -0
- siliconcompiler/tools/klayout/klayout.py +0 -1
- siliconcompiler/tools/klayout/klayout_convert_drc_db.py +182 -0
- siliconcompiler/tools/klayout/operations.py +2 -0
- siliconcompiler/tools/klayout/screenshot.py +2 -0
- siliconcompiler/tools/klayout/show.py +4 -4
- siliconcompiler/tools/magic/drc.py +21 -0
- siliconcompiler/tools/magic/extspice.py +21 -0
- siliconcompiler/tools/magic/magic.py +29 -0
- siliconcompiler/tools/magic/sc_drc.tcl +2 -12
- siliconcompiler/tools/magic/sc_extspice.tcl +3 -15
- siliconcompiler/tools/openroad/openroad.py +44 -2
- siliconcompiler/tools/openroad/scripts/sc_apr.tcl +15 -0
- siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +55 -9
- siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +10 -0
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +3 -1
- siliconcompiler/tools/openroad/scripts/sc_route.tcl +8 -2
- siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +0 -5
- siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +36 -6
- siliconcompiler/tools/surelog/__init__.py +12 -0
- siliconcompiler/tools/verilator/compile.py +27 -0
- siliconcompiler/tools/verilator/verilator.py +9 -0
- siliconcompiler/tools/vpr/vpr.py +18 -0
- siliconcompiler/tools/yosys/{syn_asic_fpga_shared.tcl → procs.tcl} +23 -0
- siliconcompiler/tools/yosys/sc_screenshot.tcl +104 -0
- siliconcompiler/tools/yosys/sc_syn.tcl +7 -9
- siliconcompiler/tools/yosys/screenshot.py +153 -0
- siliconcompiler/tools/yosys/syn_asic.py +3 -0
- siliconcompiler/tools/yosys/syn_asic.tcl +1 -3
- siliconcompiler/tools/yosys/syn_fpga.tcl +3 -2
- siliconcompiler/toolscripts/_tools.json +3 -3
- siliconcompiler/utils/__init__.py +30 -1
- siliconcompiler/utils/showtools.py +4 -0
- {siliconcompiler-0.28.3.dist-info → siliconcompiler-0.28.4.dist-info}/METADATA +16 -3
- {siliconcompiler-0.28.3.dist-info → siliconcompiler-0.28.4.dist-info}/RECORD +60 -55
- {siliconcompiler-0.28.3.dist-info → siliconcompiler-0.28.4.dist-info}/WHEEL +1 -1
- {siliconcompiler-0.28.3.dist-info → siliconcompiler-0.28.4.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.3.dist-info → siliconcompiler-0.28.4.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.28.3.dist-info → siliconcompiler-0.28.4.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
###############################
|
|
2
|
+
# Reading SC Schema
|
|
3
|
+
###############################
|
|
4
|
+
|
|
5
|
+
source ./sc_manifest.tcl
|
|
6
|
+
|
|
7
|
+
yosys echo on
|
|
8
|
+
|
|
9
|
+
###############################
|
|
10
|
+
# Schema Adapter
|
|
11
|
+
###############################
|
|
12
|
+
|
|
13
|
+
set sc_tool yosys
|
|
14
|
+
set sc_step [sc_cfg_get arg step]
|
|
15
|
+
set sc_index [sc_cfg_get arg index]
|
|
16
|
+
set sc_flow [sc_cfg_get option flow]
|
|
17
|
+
set sc_task [sc_cfg_get flowgraph $sc_flow $sc_step $sc_index task]
|
|
18
|
+
set sc_refdir [sc_cfg_tool_task_get refdir]
|
|
19
|
+
|
|
20
|
+
####################
|
|
21
|
+
# DESIGNER's CHOICE
|
|
22
|
+
####################
|
|
23
|
+
|
|
24
|
+
set sc_design [sc_top]
|
|
25
|
+
|
|
26
|
+
########################################################
|
|
27
|
+
# Helper function
|
|
28
|
+
########################################################
|
|
29
|
+
|
|
30
|
+
source "$sc_refdir/procs.tcl"
|
|
31
|
+
|
|
32
|
+
########################################################
|
|
33
|
+
# Design Inputs
|
|
34
|
+
########################################################
|
|
35
|
+
|
|
36
|
+
if { [file exists "inputs/$sc_design.v"] } {
|
|
37
|
+
set input_verilog "inputs/$sc_design.v"
|
|
38
|
+
yosys read_verilog -noblackbox -sv $input_verilog
|
|
39
|
+
set file_type "v"
|
|
40
|
+
} elseif { [file exists "inputs/$sc_design.vg"] } {
|
|
41
|
+
set input_verilog "inputs/$sc_design.vg"
|
|
42
|
+
yosys read_verilog -noblackbox -sv $input_verilog
|
|
43
|
+
set file_type "vg"
|
|
44
|
+
} elseif { [sc_cfg_tool_task_exists var show_filepath] } {
|
|
45
|
+
yosys read_verilog -noblackbox -sv [sc_cfg_tool_task_get var show_filepath]
|
|
46
|
+
set file_type [lindex [sc_cfg_tool_task_get var show_filetype] 0]
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
########################################################
|
|
50
|
+
# Override top level parameters
|
|
51
|
+
########################################################
|
|
52
|
+
|
|
53
|
+
sc_apply_params
|
|
54
|
+
|
|
55
|
+
########################################################
|
|
56
|
+
# Read Libraries
|
|
57
|
+
########################################################
|
|
58
|
+
|
|
59
|
+
set sc_logiclibs [sc_get_asic_libraries logic]
|
|
60
|
+
set sc_macrolibs [sc_get_asic_libraries macro]
|
|
61
|
+
|
|
62
|
+
set sc_libraries [sc_cfg_tool_task_get {file} synthesis_libraries]
|
|
63
|
+
if { [sc_cfg_tool_task_exists {file} synthesis_libraries_macros] } {
|
|
64
|
+
set sc_macro_libraries \
|
|
65
|
+
[sc_cfg_tool_task_get {file} synthesis_libraries_macros]
|
|
66
|
+
} else {
|
|
67
|
+
set sc_macro_libraries []
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
set sc_blackboxes []
|
|
71
|
+
foreach lib $sc_macrolibs {
|
|
72
|
+
if { [sc_cfg_exists library $lib output blackbox verilog] } {
|
|
73
|
+
foreach lib_f [sc_cfg_get library $lib output blackbox verilog] {
|
|
74
|
+
lappend sc_blackboxes $lib_f
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
foreach lib_file "$sc_libraries $sc_macro_libraries" {
|
|
80
|
+
yosys read_liberty -lib $lib_file
|
|
81
|
+
}
|
|
82
|
+
foreach bb_file $sc_blackboxes {
|
|
83
|
+
yosys log "Reading blackbox model file: $bb_file"
|
|
84
|
+
yosys read_verilog -sv $bb_file
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
########################################################
|
|
88
|
+
# Screenshot
|
|
89
|
+
########################################################
|
|
90
|
+
|
|
91
|
+
yosys hierarchy -top $sc_design
|
|
92
|
+
|
|
93
|
+
if { $file_type == "v" } {
|
|
94
|
+
yosys proc
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
yosys show \
|
|
98
|
+
-nobg \
|
|
99
|
+
-format png \
|
|
100
|
+
-width \
|
|
101
|
+
-signed \
|
|
102
|
+
-stretch \
|
|
103
|
+
-prefix outputs/${sc_design} \
|
|
104
|
+
$sc_design
|
|
@@ -26,6 +26,12 @@ set sc_flow [sc_cfg_get option flow]
|
|
|
26
26
|
set sc_optmode [sc_cfg_get option optmode]
|
|
27
27
|
set sc_pdk [sc_cfg_get option pdk]
|
|
28
28
|
|
|
29
|
+
########################################################
|
|
30
|
+
# Helper function
|
|
31
|
+
########################################################
|
|
32
|
+
|
|
33
|
+
source "$sc_refdir/procs.tcl"
|
|
34
|
+
|
|
29
35
|
########################################################
|
|
30
36
|
# Design Inputs
|
|
31
37
|
########################################################
|
|
@@ -57,15 +63,7 @@ if { [file exists "inputs/$sc_design.v"] } {
|
|
|
57
63
|
# Override top level parameters
|
|
58
64
|
########################################################
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
if { [sc_cfg_exists option param] } {
|
|
62
|
-
dict for {key value} [sc_cfg_get option param] {
|
|
63
|
-
if { ![string is integer $value] } {
|
|
64
|
-
set value [concat \"$value\"]
|
|
65
|
-
}
|
|
66
|
-
yosys chparam -set $key $value $sc_design
|
|
67
|
-
}
|
|
68
|
-
}
|
|
66
|
+
sc_apply_params
|
|
69
67
|
|
|
70
68
|
########################################################
|
|
71
69
|
# Synthesis based on mode
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
from siliconcompiler.tools.yosys.yosys import setup as tool_setup
|
|
2
|
+
import os
|
|
3
|
+
import siliconcompiler.tools.yosys.prepareLib as prepareLib
|
|
4
|
+
from siliconcompiler.tools._common.asic import get_libraries
|
|
5
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
6
|
+
from siliconcompiler.targets import asap7_demo
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def make_docs(chip):
|
|
10
|
+
chip.use(asap7_demo)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def setup(chip):
|
|
14
|
+
'''
|
|
15
|
+
Generate a screenshot of the design
|
|
16
|
+
'''
|
|
17
|
+
|
|
18
|
+
# Generic tool setup.
|
|
19
|
+
tool_setup(chip)
|
|
20
|
+
|
|
21
|
+
# ASIC-specific setup.
|
|
22
|
+
# setup_asic(chip)
|
|
23
|
+
|
|
24
|
+
step = chip.get('arg', 'step')
|
|
25
|
+
index = chip.get('arg', 'index')
|
|
26
|
+
tool, task = get_tool_task(chip, step, index)
|
|
27
|
+
chip.set('tool', tool, 'task', task, 'input', [], step=step, index=index)
|
|
28
|
+
chip.set('tool', tool, 'task', task, 'script', 'sc_screenshot.tcl',
|
|
29
|
+
step=step, index=index)
|
|
30
|
+
|
|
31
|
+
design = chip.top()
|
|
32
|
+
chip.set('tool', tool, 'task', task, 'output', [design + '.dot', design + '.png'],
|
|
33
|
+
step=step, index=index)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
################################
|
|
37
|
+
# format liberty files for yosys
|
|
38
|
+
################################
|
|
39
|
+
def prepare_asic_libraries(chip):
|
|
40
|
+
step = chip.get('arg', 'step')
|
|
41
|
+
index = chip.get('arg', 'index')
|
|
42
|
+
tool, task = get_tool_task(chip, step, index)
|
|
43
|
+
|
|
44
|
+
# Clear in case of rerun
|
|
45
|
+
for libtype in ('synthesis_libraries', 'synthesis_libraries_macros'):
|
|
46
|
+
chip.set('tool', tool, 'task', task, 'file', libtype, [],
|
|
47
|
+
step=step, index=index)
|
|
48
|
+
|
|
49
|
+
# Generate synthesis_libraries and synthesis_macro_libraries for Yosys use
|
|
50
|
+
|
|
51
|
+
# mark libs with dont_use since ABC cannot get this information via its commands
|
|
52
|
+
# this also ensures the liberty files have been decompressed and corrected formatting
|
|
53
|
+
# issues that generally cannot be handled by yosys or yosys-abc
|
|
54
|
+
def get_synthesis_libraries(lib):
|
|
55
|
+
keypath = _get_synthesis_library_key(chip, lib)
|
|
56
|
+
if keypath and chip.valid(*keypath):
|
|
57
|
+
return chip.find_files(*keypath, step=step, index=index)
|
|
58
|
+
return []
|
|
59
|
+
|
|
60
|
+
for libtype in ('logic', 'macro'):
|
|
61
|
+
for lib in get_libraries(chip, libtype):
|
|
62
|
+
lib_content = {}
|
|
63
|
+
# Mark dont use
|
|
64
|
+
for lib_file in get_synthesis_libraries(lib):
|
|
65
|
+
# Ensure a unique name is used for library
|
|
66
|
+
lib_file_name_base = os.path.basename(lib_file)
|
|
67
|
+
if lib_file_name_base.lower().endswith('.gz'):
|
|
68
|
+
lib_file_name_base = lib_file_name_base[0:-3]
|
|
69
|
+
if lib_file_name_base.lower().endswith('.lib'):
|
|
70
|
+
lib_file_name_base = lib_file_name_base[0:-4]
|
|
71
|
+
|
|
72
|
+
lib_file_name = lib_file_name_base
|
|
73
|
+
unique_ident = 0
|
|
74
|
+
while lib_file_name in lib_content:
|
|
75
|
+
lib_file_name = f'{lib_file_name_base}_{unique_ident}'
|
|
76
|
+
unique_ident += 1
|
|
77
|
+
|
|
78
|
+
lib_content[lib_file_name] = prepareLib.processLibertyFile(
|
|
79
|
+
lib_file,
|
|
80
|
+
logger=None if chip.get('option', 'quiet',
|
|
81
|
+
step=step, index=index) else chip.logger)
|
|
82
|
+
|
|
83
|
+
if not lib_content:
|
|
84
|
+
continue
|
|
85
|
+
|
|
86
|
+
var_name = 'synthesis_libraries'
|
|
87
|
+
if libtype == "macro":
|
|
88
|
+
var_name = 'synthesis_libraries_macros'
|
|
89
|
+
|
|
90
|
+
for file, content in lib_content.items():
|
|
91
|
+
output_file = os.path.join(
|
|
92
|
+
chip.getworkdir(step=step, index=index),
|
|
93
|
+
'inputs',
|
|
94
|
+
f'sc_{libtype}_{lib}_{file}.lib'
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
with open(output_file, 'w') as f:
|
|
98
|
+
f.write(content)
|
|
99
|
+
|
|
100
|
+
chip.add('tool', tool, 'task', task, 'file', var_name, output_file,
|
|
101
|
+
step=step, index=index)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def get_synthesis_corner(chip):
|
|
105
|
+
tool = 'yosys'
|
|
106
|
+
step = chip.get('arg', 'step')
|
|
107
|
+
index = chip.get('arg', 'index')
|
|
108
|
+
_, task = get_tool_task(chip, step, index)
|
|
109
|
+
|
|
110
|
+
syn_corners = chip.get('tool', tool, 'task', task, 'var', 'synthesis_corner',
|
|
111
|
+
step=step, index=index)
|
|
112
|
+
if syn_corners:
|
|
113
|
+
return syn_corners
|
|
114
|
+
|
|
115
|
+
# determine corner based on setup corner from constraints
|
|
116
|
+
corner = None
|
|
117
|
+
for constraint in chip.getkeys('constraint', 'timing'):
|
|
118
|
+
checks = chip.get('constraint', 'timing', constraint, 'check', step=step, index=index)
|
|
119
|
+
if "setup" in checks and not corner:
|
|
120
|
+
corner = chip.get('constraint', 'timing', constraint, 'libcorner',
|
|
121
|
+
step=step, index=index)
|
|
122
|
+
|
|
123
|
+
if not corner:
|
|
124
|
+
# try getting it from first constraint with a valid libcorner
|
|
125
|
+
for constraint in chip.getkeys('constraint', 'timing'):
|
|
126
|
+
if not corner:
|
|
127
|
+
corner = chip.get('constraint', 'timing', constraint, 'libcorner',
|
|
128
|
+
step=step, index=index)
|
|
129
|
+
|
|
130
|
+
return corner
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def _get_synthesis_library_key(chip, lib):
|
|
134
|
+
if chip.valid('library', lib, 'option', 'file', 'yosys_synthesis_libraries'):
|
|
135
|
+
return ('library', lib, 'option', 'file', 'yosys_synthesis_libraries')
|
|
136
|
+
|
|
137
|
+
step = chip.get('arg', 'step')
|
|
138
|
+
index = chip.get('arg', 'index')
|
|
139
|
+
delaymodel = chip.get('asic', 'delaymodel', step=step, index=index)
|
|
140
|
+
|
|
141
|
+
for corner in chip.getkeys('library', lib, 'output'):
|
|
142
|
+
if chip.valid('library', lib, 'output', corner, delaymodel):
|
|
143
|
+
return ('library', lib, 'output', corner, delaymodel)
|
|
144
|
+
|
|
145
|
+
return None
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
##################################################
|
|
149
|
+
def pre_process(chip):
|
|
150
|
+
''' Tool specific function to run before step execution
|
|
151
|
+
'''
|
|
152
|
+
|
|
153
|
+
prepare_asic_libraries(chip)
|
|
@@ -74,6 +74,7 @@ def setup_asic(chip):
|
|
|
74
74
|
mainlib = get_mainlib(chip)
|
|
75
75
|
for option, value in [
|
|
76
76
|
('flatten', "true"),
|
|
77
|
+
('auto_flatten', "true"),
|
|
77
78
|
('hier_iterations', "10"),
|
|
78
79
|
('hier_threshold', "1000"),
|
|
79
80
|
('autoname', "true"),
|
|
@@ -171,6 +172,8 @@ def setup_asic(chip):
|
|
|
171
172
|
chip.set('tool', tool, 'task', task, 'var', 'add_buffers',
|
|
172
173
|
'true/false, flag to indicate whether to add buffers or not.', field='help')
|
|
173
174
|
|
|
175
|
+
chip.set('tool', tool, 'task', task, 'var', 'auto_flatten',
|
|
176
|
+
'true/false, attempt to determine how to flatten the design', field='help')
|
|
174
177
|
chip.set('tool', tool, 'task', task, 'var', 'hier_iterations',
|
|
175
178
|
'Number of iterations to attempt to determine the hierarchy to flatten',
|
|
176
179
|
field='help')
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
####################
|
|
2
2
|
# Helper functions
|
|
3
3
|
####################
|
|
4
|
-
source "$sc_refdir/syn_asic_fpga_shared.tcl"
|
|
5
|
-
|
|
6
4
|
proc preserve_modules { } {
|
|
7
5
|
global sc_cfg
|
|
8
6
|
global sc_tool
|
|
@@ -232,7 +230,7 @@ yosys synth {*}$synth_args -top $sc_design -run begin:fine
|
|
|
232
230
|
sc_map_memory $sc_memory_libmap_files $sc_memory_techmap_files 0
|
|
233
231
|
|
|
234
232
|
# Perform hierarchy flattening
|
|
235
|
-
if { !$flatten_design } {
|
|
233
|
+
if { !$flatten_design && [lindex [sc_cfg_tool_task_get var auto_flatten] 0] == "true" } {
|
|
236
234
|
set sc_hier_iterations \
|
|
237
235
|
[lindex [sc_cfg_tool_task_get var hier_iterations] 0]
|
|
238
236
|
set sc_hier_threshold \
|
|
@@ -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": "ea63b9aa612f296523b0ec8a6b51dec94de8839c",
|
|
5
5
|
"docker-cmds": [
|
|
6
6
|
"# Remove OR-Tools files",
|
|
7
7
|
"RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"auto-update": false
|
|
37
37
|
},
|
|
38
38
|
"klayout": {
|
|
39
|
-
"version": "0.29.
|
|
39
|
+
"version": "0.29.8",
|
|
40
40
|
"git-url": "https://github.com/KLayout/klayout.git",
|
|
41
41
|
"docker-skip": true,
|
|
42
42
|
"auto-update": true,
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"sv2v": {
|
|
47
47
|
"git-url": "https://github.com/zachjs/sv2v.git",
|
|
48
|
-
"git-commit": "
|
|
48
|
+
"git-commit": "7808819c48c167978aeb5ef34c6e5ed416e90875",
|
|
49
49
|
"auto-update": true
|
|
50
50
|
},
|
|
51
51
|
"verilator": {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import contextlib
|
|
2
|
+
import hashlib
|
|
2
3
|
import os
|
|
3
4
|
import re
|
|
4
5
|
import psutil
|
|
5
6
|
import shutil
|
|
6
|
-
from pathlib import Path
|
|
7
|
+
from pathlib import Path, PurePosixPath
|
|
7
8
|
from siliconcompiler._metadata import version as sc_version
|
|
8
9
|
from jinja2 import Environment, FileSystemLoader
|
|
9
10
|
|
|
@@ -421,3 +422,31 @@ def truncate_text(text, width):
|
|
|
421
422
|
text = text[:break_at-1] + '...' + text[break_at+3:]
|
|
422
423
|
|
|
423
424
|
return text
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
def get_hashed_filename(path, package=None, hash=hashlib.sha1):
|
|
428
|
+
'''
|
|
429
|
+
Utility to map collected file to an unambiguous name based on its path.
|
|
430
|
+
|
|
431
|
+
The mapping looks like:
|
|
432
|
+
path/to/file.ext => file_<hash('path/to/file')>.ext
|
|
433
|
+
'''
|
|
434
|
+
path = PurePosixPath(path)
|
|
435
|
+
ext = ''.join(path.suffixes)
|
|
436
|
+
|
|
437
|
+
# strip off all file suffixes to get just the bare name
|
|
438
|
+
barepath = path
|
|
439
|
+
while barepath.suffix:
|
|
440
|
+
barepath = PurePosixPath(barepath.stem)
|
|
441
|
+
filename = str(barepath.parts[-1])
|
|
442
|
+
|
|
443
|
+
if not package:
|
|
444
|
+
package = ''
|
|
445
|
+
else:
|
|
446
|
+
package = f'{package}:'
|
|
447
|
+
|
|
448
|
+
path_to_hash = f'{package}{str(path)}'
|
|
449
|
+
|
|
450
|
+
pathhash = hash(path_to_hash.encode('utf-8')).hexdigest()
|
|
451
|
+
|
|
452
|
+
return f'{filename}_{pathhash}{ext}'
|
|
@@ -4,6 +4,7 @@ from siliconcompiler.tools.openroad import show as openroad_show
|
|
|
4
4
|
from siliconcompiler.tools.openroad import screenshot as openroad_screenshot
|
|
5
5
|
from siliconcompiler.tools.vpr import show as vpr_show
|
|
6
6
|
from siliconcompiler.tools.vpr import screenshot as vpr_screenshot
|
|
7
|
+
from siliconcompiler.tools.yosys import screenshot as yosys_screenshot
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
def setup(chip):
|
|
@@ -23,3 +24,6 @@ def setup(chip):
|
|
|
23
24
|
chip.register_showtool('route', vpr_screenshot)
|
|
24
25
|
chip.register_showtool('place', vpr_show)
|
|
25
26
|
chip.register_showtool('place', vpr_screenshot)
|
|
27
|
+
|
|
28
|
+
chip.register_showtool('v', yosys_screenshot)
|
|
29
|
+
chip.register_showtool('vg', yosys_screenshot)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: siliconcompiler
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.4
|
|
4
4
|
Summary: A compiler framework that automates translation from source code to silicon.
|
|
5
5
|
Author-email: Andreas Olofsson <andreas.d.olofsson@gmail.com>
|
|
6
6
|
License: Apache License 2.0
|
|
@@ -9,6 +9,19 @@ Project-URL: Documentation, https://docs.siliconcompiler.com
|
|
|
9
9
|
Project-URL: Repository, https://github.com/siliconcompiler/siliconcompiler
|
|
10
10
|
Project-URL: Issues, https://github.com/siliconcompiler/siliconcompiler/issues
|
|
11
11
|
Project-URL: Discussion, https://github.com/siliconcompiler/siliconcompiler/discussions
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
+
Classifier: Operating System :: MacOS
|
|
22
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
|
|
24
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
12
25
|
Requires-Python: >=3.8
|
|
13
26
|
Description-Content-Type: text/markdown
|
|
14
27
|
License-File: LICENSE
|
|
@@ -30,7 +43,7 @@ Requires-Dist: fasteners ==0.19
|
|
|
30
43
|
Requires-Dist: fastjsonschema ==2.20.0
|
|
31
44
|
Requires-Dist: docker ==7.1.0
|
|
32
45
|
Requires-Dist: sc-surelog ==1.84.1
|
|
33
|
-
Requires-Dist: orjson ==3.10.
|
|
46
|
+
Requires-Dist: orjson ==3.10.10
|
|
34
47
|
Requires-Dist: streamlit ==1.39.0
|
|
35
48
|
Requires-Dist: streamlit-agraph ==0.0.45
|
|
36
49
|
Requires-Dist: streamlit-antd-components ==0.3.2
|
|
@@ -40,7 +53,7 @@ Requires-Dist: importlib-metadata ; python_version < "3.10"
|
|
|
40
53
|
Provides-Extra: docs
|
|
41
54
|
Requires-Dist: Sphinx ==8.1.3 ; extra == 'docs'
|
|
42
55
|
Requires-Dist: pip-licenses ==5.0.0 ; extra == 'docs'
|
|
43
|
-
Requires-Dist: pydata-sphinx-theme ==0.
|
|
56
|
+
Requires-Dist: pydata-sphinx-theme ==0.16.0 ; extra == 'docs'
|
|
44
57
|
Requires-Dist: sc-leflib >=0.2.0 ; extra == 'docs'
|
|
45
58
|
Provides-Extra: examples
|
|
46
59
|
Requires-Dist: migen ==0.9.2 ; extra == 'examples'
|