Update all
This commit is contained in:
69
common.mk
69
common.mk
@@ -111,22 +111,25 @@ $(FIRRTL_FILE) $(ANNO_FILE) &: $(SCALA_SOURCES) $(sim_files) $(SCALA_BUILDTOOL_D
|
|||||||
--legacy-configs $(CONFIG_PACKAGE):$(CONFIG) \
|
--legacy-configs $(CONFIG_PACKAGE):$(CONFIG) \
|
||||||
$(EXTRA_CHISEL_OPTIONS))
|
$(EXTRA_CHISEL_OPTIONS))
|
||||||
|
|
||||||
|
define firtool_extra_anno_contents
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"class":"sifive.enterprise.firrtl.MarkDUTAnnotation",
|
||||||
|
"target":"~$(MODEL)|$(TOP)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "sifive.enterprise.firrtl.TestHarnessHierarchyAnnotation",
|
||||||
|
"filename": "$(FIRTOOL_TB_MOD_HIER_JSON)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"class": "sifive.enterprise.firrtl.ModuleHierarchyAnnotation",
|
||||||
|
"filename": "$(FIRTOOL_MOD_HIER_JSON)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
endef
|
||||||
|
export firtool_extra_anno_contents
|
||||||
$(FINAL_ANNO_FILE) $(FIRTOOL_EXTRA_ANNO_FILE): $(ANNO_FILE)
|
$(FINAL_ANNO_FILE) $(FIRTOOL_EXTRA_ANNO_FILE): $(ANNO_FILE)
|
||||||
echo " \
|
echo "$$firtool_extra_anno_contents" > $(FIRTOOL_EXTRA_ANNO_FILE)
|
||||||
[\
|
|
||||||
{\
|
|
||||||
\"class\":\"sifive.enterprise.firrtl.MarkDUTAnnotation\",\
|
|
||||||
\"target\":\"~$(MODEL)|$(TOP)\"\
|
|
||||||
},\
|
|
||||||
{\
|
|
||||||
\"class\": \"sifive.enterprise.firrtl.TestHarnessHierarchyAnnotation\",\
|
|
||||||
\"filename\": \"$(FIRTOOL_TB_MOD_HIER_JSON)\"\
|
|
||||||
},\
|
|
||||||
{\
|
|
||||||
\"class\": \"sifive.enterprise.firrtl.ModuleHierarchyAnnotation\",\
|
|
||||||
\"filename\": \"$(FIRTOOL_MOD_HIER_JSON)\"\
|
|
||||||
}
|
|
||||||
]" > $(FIRTOOL_EXTRA_ANNO_FILE)
|
|
||||||
jq -s '[.[][]]' $(ANNO_FILE) $(FIRTOOL_EXTRA_ANNO_FILE) > $@
|
jq -s '[.[][]]' $(ANNO_FILE) $(FIRTOOL_EXTRA_ANNO_FILE) > $@
|
||||||
|
|
||||||
.PHONY: firrtl
|
.PHONY: firrtl
|
||||||
@@ -135,7 +138,7 @@ firrtl: $(FIRRTL_FILE) $(FINAL_ANNO_FILE)
|
|||||||
#########################################################################################
|
#########################################################################################
|
||||||
# create verilog files rules and variables
|
# create verilog files rules and variables
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
CIRCT_TARGETS = $(TOP_SMEMS_CONF) $(FIRTOOL_MOD_HIER_JSON) $(FIRTOOL_TB_MOD_HIER_JSON)
|
CIRCT_TARGETS = $(FIRTOOL_SMEMS_CONF) $(FIRTOOL_MOD_HIER_JSON) $(FIRTOOL_TB_MOD_HIER_JSON) $(FIRTOOL_SMEMS_JSON) $(FIRTOOL_TB_SMEMS_JSON)
|
||||||
|
|
||||||
# DOC include start: FirrtlCompiler
|
# DOC include start: FirrtlCompiler
|
||||||
$(TOP_TARGETS) $(HARNESS_TARGETS) &: $(FIRRTL_FILE) $(ANNO_FILE) $(VLOG_SOURCES)
|
$(TOP_TARGETS) $(HARNESS_TARGETS) &: $(FIRRTL_FILE) $(ANNO_FILE) $(VLOG_SOURCES)
|
||||||
@@ -165,17 +168,19 @@ $(TOP_TARGETS) $(HARNESS_TARGETS) &: $(FIRRTL_FILE) $(ANNO_FILE) $(VLOG_SOURCES)
|
|||||||
$(CIRCT_TARGETS): firrtl_temp
|
$(CIRCT_TARGETS): firrtl_temp
|
||||||
@echo "" > /dev/null
|
@echo "" > /dev/null
|
||||||
|
|
||||||
|
# hack: lower to middle firrtl if Fixed types are found
|
||||||
firrtl_temp: $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(VLOG_SOURCES)
|
firrtl_temp: $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(VLOG_SOURCES)
|
||||||
$(call run_scala_main,tapeout,barstools.tapeout.transforms.GenerateTop,\
|
$(call run_scala_main,tapeout,barstools.tapeout.transforms.GenerateTop,\
|
||||||
|
--output-file $(SFC_FIRRTL_FILE) \
|
||||||
|
--target-dir $(build_dir) \
|
||||||
--input-file $(FIRRTL_FILE) \
|
--input-file $(FIRRTL_FILE) \
|
||||||
--annotation-file $(FINAL_ANNO_FILE) \
|
--annotation-file $(FINAL_ANNO_FILE) \
|
||||||
--out-fir-file $(SFC_FIRRTL_FILE) \
|
|
||||||
--out-anno-file $(SFC_ANNO_FILE) \
|
--out-anno-file $(SFC_ANNO_FILE) \
|
||||||
--log-level $(FIRRTL_LOGLEVEL) \
|
--log-level $(FIRRTL_LOGLEVEL) \
|
||||||
--allow-unrecognized-annotations \
|
--allow-unrecognized-annotations \
|
||||||
-X none \
|
-X $(if $(shell grep "Fixed<" $(FIRRTL_FILE)),middle,none) \
|
||||||
$(EXTRA_FIRRTL_OPTIONS))
|
$(EXTRA_FIRRTL_OPTIONS))
|
||||||
$(SCRATCH_HOME)/circt/build/bin/firtool \
|
firtool \
|
||||||
--export-module-hierarchy \
|
--export-module-hierarchy \
|
||||||
--emit-metadata \
|
--emit-metadata \
|
||||||
--format=fir \
|
--format=fir \
|
||||||
@@ -188,19 +193,30 @@ firrtl_temp: $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(VLOG_SOURCES)
|
|||||||
--lowering-options=disallowPackedArrays,emittedLineLength=8192,noAlwaysComb,disallowLocalVariables \
|
--lowering-options=disallowPackedArrays,emittedLineLength=8192,noAlwaysComb,disallowLocalVariables \
|
||||||
--repl-seq-mem \
|
--repl-seq-mem \
|
||||||
--repl-seq-mem-circuit=$(MODEL) \
|
--repl-seq-mem-circuit=$(MODEL) \
|
||||||
--repl-seq-mem-file=$(TOP_SMEMS_CONF) \
|
--repl-seq-mem-file=$(FIRTOOL_SMEMS_CONF) \
|
||||||
--split-verilog \
|
--split-verilog \
|
||||||
-o $(build_dir) \
|
-o $(build_dir) \
|
||||||
$(SFC_FIRRTL_FILE)
|
$(SFC_FIRRTL_FILE)
|
||||||
sed -i 's/.*/& /' $(TOP_SMEMS_CONF) # need trailing space for SFC macrocompiler
|
sed -i 's/.*/& /' $(FIRTOOL_SMEMS_CONF) # need trailing space for SFC macrocompiler
|
||||||
# DOC include end: FirrtlCompiler
|
# DOC include end: FirrtlCompiler
|
||||||
|
|
||||||
$(TOP_MODS_FILELIST) $(ALL_MODS_FILELIST): $(FIRTOOL_TB_MOD_HIER_JSON) $(FIRTOOL_FILELIST)
|
$(TOP_MODS_FILELIST) $(TB_MODS_FILELIST) $(ALL_MODS_FILELIST) &: $(FIRTOOL_TB_MOD_HIER_JSON) $(FIRTOOL_FILELIST)
|
||||||
$(base_dir)/scripts/dump-mods.py --dut-top $(TOP) --hier-json $(FIRTOOL_TB_MOD_HIER_JSON) --dut-mods $(TOP_MODS_FILELIST) --filelist $(FIRTOOL_FILELIST) --build_dir $(build_dir)
|
$(base_dir)/scripts/split-module-files.py \
|
||||||
|
--tb-hier-json $(FIRTOOL_TB_MOD_HIER_JSON) \
|
||||||
|
--dut $(TOP) \
|
||||||
|
--out-dut-filelist $(TOP_MODS_FILELIST) \
|
||||||
|
--out-tb-filelist $(TB_MODS_FILELIST) \
|
||||||
|
--in-all-filelist $(FIRTOOL_FILELIST) \
|
||||||
|
--build-dir $(build_dir)
|
||||||
sed -e 's;^;$(build_dir)/;' $(FIRTOOL_FILELIST) > $(ALL_MODS_FILELIST)
|
sed -e 's;^;$(build_dir)/;' $(FIRTOOL_FILELIST) > $(ALL_MODS_FILELIST)
|
||||||
|
|
||||||
.PHONY: temp
|
$(TOP_SMEMS_CONF) $(HARNESS_SMEMS_CONF) &: $(FIRTOOL_SMEMS_JSON) $(FIRTOOL_TB_SMEMS_JSON) $(FIRTOOL_SMEMS_CONF)
|
||||||
temp: $(TOP_MODS_FILELIST)
|
$(base_dir)/scripts/split-mems-conf.py \
|
||||||
|
--in-smems-conf $(FIRTOOL_SMEMS_CONF) \
|
||||||
|
--in-dut-smems-json $(FIRTOOL_SMEMS_JSON) \
|
||||||
|
--in-tb-smems-json $(FIRTOOL_TB_SMEMS_JSON) \
|
||||||
|
--out-dut-smems-conf $(TOP_SMEMS_CONF) \
|
||||||
|
--out-tb-smems-conf $(HARNESS_SMEMS_CONF)
|
||||||
|
|
||||||
# This file is for simulation only. VLSI flows should replace this file with one containing hard SRAMs
|
# This file is for simulation only. VLSI flows should replace this file with one containing hard SRAMs
|
||||||
MACROCOMPILER_MODE ?= --mode synflops
|
MACROCOMPILER_MODE ?= --mode synflops
|
||||||
@@ -214,9 +230,10 @@ $(HARNESS_SMEMS_FILE) $(HARNESS_SMEMS_FIR) &: $(HARNESS_SMEMS_CONF) | $(TOP_SMEM
|
|||||||
########################################################################################
|
########################################################################################
|
||||||
# remove duplicate files and headers in list of simulation file inputs
|
# remove duplicate files and headers in list of simulation file inputs
|
||||||
########################################################################################
|
########################################################################################
|
||||||
$(sim_common_files): $(sim_files) $(ALL_MODS_FILELIST) $(TOP_SMEMS_FILE)
|
$(sim_common_files): $(sim_files) $(ALL_MODS_FILELIST) $(TOP_SMEMS_FILE) $(HARNESS_SMEMS_FILE)
|
||||||
sort -u $(sim_files) $(ALL_MODS_FILELIST) | grep -v '.*\.\(svh\|h\)$$' > $@
|
sort -u $(sim_files) $(ALL_MODS_FILELIST) | grep -v '.*\.\(svh\|h\)$$' > $@
|
||||||
echo "$(TOP_SMEMS_FILE)" >> $@
|
echo "$(TOP_SMEMS_FILE)" >> $@
|
||||||
|
echo "$(HARNESS_SMEMS_FILE)" >> $@
|
||||||
|
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
# helper rule to just make verilog files
|
# helper rule to just make verilog files
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ dependencies:
|
|||||||
- binutils
|
- binutils
|
||||||
|
|
||||||
- dromajo # from ucb-bar channel - https://github.com/riscv-boom/dromajo
|
- dromajo # from ucb-bar channel - https://github.com/riscv-boom/dromajo
|
||||||
|
<<<<<<< HEAD:conda-reqs/chipyard.yaml
|
||||||
|
=======
|
||||||
|
- esp-tools # from ucb-bar channel - https://github.com/ucb-bar/esp-tools-feedstock
|
||||||
|
- firtool # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools.yaml
|
||||||
|
|
||||||
# firemarshal deps
|
# firemarshal deps
|
||||||
- python>=3.8
|
- python>=3.8
|
||||||
|
|||||||
@@ -9,7 +9,11 @@
|
|||||||
# To update a single package to the latest version compatible with the version constraints in the source:
|
# To update a single package to the latest version compatible with the version constraints in the source:
|
||||||
# conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE
|
# conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE
|
||||||
# To re-solve the entire environment, e.g. after changing a version constraint in the source file:
|
# To re-solve the entire environment, e.g. after changing a version constraint in the source file:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
# conda-lock -f /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-esp-tools.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml
|
# conda-lock -f /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-esp-tools.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
|
=======
|
||||||
|
# conda-lock -f /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-esp-tools.yaml -f /scratch/abejgonza/cy-circt/conda-requirements-esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
metadata:
|
metadata:
|
||||||
channels:
|
channels:
|
||||||
- url: ucb-bar
|
- url: ucb-bar
|
||||||
@@ -19,13 +23,17 @@ metadata:
|
|||||||
- url: nodefaults
|
- url: nodefaults
|
||||||
used_env_vars: []
|
used_env_vars: []
|
||||||
content_hash:
|
content_hash:
|
||||||
linux-64: 5075908599b7f10581bbf1452b4be082245ad6ac58a589e4d111d2ecd0f96b42
|
linux-64: 46faccb4f0f152fc79912dbcd442a9cd0d3378720908f86cd06f3496fd584e06
|
||||||
platforms:
|
platforms:
|
||||||
- linux-64
|
- linux-64
|
||||||
sources:
|
sources:
|
||||||
- /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-esp-tools.yaml
|
- /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-esp-tools.yaml
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
- /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml
|
- /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml
|
||||||
- /scratch/abejgonza/cy-fix/conda-reqs/esp-tools.yaml
|
- /scratch/abejgonza/cy-fix/conda-reqs/esp-tools.yaml
|
||||||
|
=======
|
||||||
|
- /scratch/abejgonza/cy-circt/conda-requirements-esp-tools.yaml
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
package:
|
package:
|
||||||
- category: main
|
- category: main
|
||||||
dependencies: {}
|
dependencies: {}
|
||||||
@@ -821,6 +829,18 @@ package:
|
|||||||
platform: linux-64
|
platform: linux-64
|
||||||
url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2
|
||||||
version: 3.8.1
|
version: 3.8.1
|
||||||
|
- category: main
|
||||||
|
dependencies:
|
||||||
|
libgcc-ng: '>=12'
|
||||||
|
hash:
|
||||||
|
md5: 5be58359dbbf568c1ec0be87e0c6cb1b
|
||||||
|
sha256: f6c470ba56c43e5f6c75fd28b05256fd8f5d54d76df29c0652496bf3b104ae2b
|
||||||
|
manager: conda
|
||||||
|
name: oniguruma
|
||||||
|
optional: false
|
||||||
|
platform: linux-64
|
||||||
|
url: https://conda.anaconda.org/conda-forge/linux-64/oniguruma-6.9.8-h166bdaf_0.tar.bz2
|
||||||
|
version: 6.9.8
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
ca-certificates: ''
|
ca-certificates: ''
|
||||||
@@ -1117,6 +1137,23 @@ package:
|
|||||||
version: 4.6.0
|
version: 4.6.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
|
=======
|
||||||
|
libgcc-ng: '>=12'
|
||||||
|
libstdcxx-ng: '>=12'
|
||||||
|
ncurses: '>=6.3,<7.0a0'
|
||||||
|
hash:
|
||||||
|
md5: e6019194c1a4915a153c09516dcca08a
|
||||||
|
sha256: null
|
||||||
|
manager: conda
|
||||||
|
name: firtool
|
||||||
|
optional: false
|
||||||
|
platform: linux-64
|
||||||
|
url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.16.0-0_h1234567_g14ac3cb0e.tar.bz2
|
||||||
|
version: 1.16.0
|
||||||
|
- category: main
|
||||||
|
dependencies:
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
libgcc-ng: '>=7.5.0'
|
libgcc-ng: '>=7.5.0'
|
||||||
libstdcxx-ng: '>=7.5.0'
|
libstdcxx-ng: '>=7.5.0'
|
||||||
m4: ''
|
m4: ''
|
||||||
@@ -1149,6 +1186,22 @@ package:
|
|||||||
version: 12.1.0
|
version: 12.1.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
|
=======
|
||||||
|
libgcc-ng: '>=7.5.0'
|
||||||
|
oniguruma: '>=6.9.3,<6.10.0a0'
|
||||||
|
hash:
|
||||||
|
md5: 8578ae83310b8c9f5717f1aa65054f36
|
||||||
|
sha256: 00e69aec19174e61c70b652bb62c77c0947a27d6720bda0cb8d5be654020804a
|
||||||
|
manager: conda
|
||||||
|
name: jq
|
||||||
|
optional: false
|
||||||
|
platform: linux-64
|
||||||
|
url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.6-h36c2ea0_1000.tar.bz2
|
||||||
|
version: '1.6'
|
||||||
|
- category: main
|
||||||
|
dependencies:
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
libopenblas: '>=0.3.21,<1.0a0'
|
libopenblas: '>=0.3.21,<1.0a0'
|
||||||
hash:
|
hash:
|
||||||
md5: d9b7a8639171f6c6fa0a983edabcfe2b
|
md5: d9b7a8639171f6c6fa0a983edabcfe2b
|
||||||
@@ -3045,14 +3098,14 @@ package:
|
|||||||
dependencies:
|
dependencies:
|
||||||
python: '>=3.7'
|
python: '>=3.7'
|
||||||
hash:
|
hash:
|
||||||
md5: a3508a0c850745b875de88aea4c40cc5
|
md5: 6f3fd8c9e0ab504010fb4216d5919c24
|
||||||
sha256: bb6920451dad059ca31581ca6e36c5f1534fad8a8efe869c7eb9c9e3846b4f53
|
sha256: 7740d6fcd4fffb895a93c765388382b58ea78e005180cee88078eb18e59f7f06
|
||||||
manager: conda
|
manager: conda
|
||||||
name: zipp
|
name: zipp
|
||||||
optional: false
|
optional: false
|
||||||
platform: linux-64
|
platform: linux-64
|
||||||
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.1-pyhd8ed1ab_0.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.9.0-pyhd8ed1ab_0.tar.bz2
|
||||||
version: 3.8.1
|
version: 3.9.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
python: '>=3.6'
|
python: '>=3.6'
|
||||||
@@ -4308,17 +4361,27 @@ package:
|
|||||||
version: 5.10.0
|
version: 5.10.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
cryptography: '>=35.0'
|
cryptography: '>=38.0.0,<39'
|
||||||
python: '>=3.6'
|
python: '>=3.6'
|
||||||
hash:
|
hash:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
md5: 2e7e3630919d29c8216bfa2cd643d79e
|
md5: 2e7e3630919d29c8216bfa2cd643d79e
|
||||||
sha256: 72af60a6164a380730c00ee996bda265267b53a99662d7ceb2ec6ed47dd74a0b
|
sha256: 72af60a6164a380730c00ee996bda265267b53a99662d7ceb2ec6ed47dd74a0b
|
||||||
|
=======
|
||||||
|
md5: fbfa0a180d48c800f922a10a114a8632
|
||||||
|
sha256: 42f04dded77ac2597108378d62b121697d0e982aba7b20a462a7239030563628
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
manager: conda
|
manager: conda
|
||||||
name: pyopenssl
|
name: pyopenssl
|
||||||
optional: false
|
optional: false
|
||||||
platform: linux-64
|
platform: linux-64
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_1.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_1.tar.bz2
|
||||||
version: 22.0.0
|
version: 22.0.0
|
||||||
|
=======
|
||||||
|
url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.1.0-pyhd8ed1ab_0.tar.bz2
|
||||||
|
version: 22.1.0
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
pytest: '>=3.6.0'
|
pytest: '>=3.6.0'
|
||||||
@@ -4879,18 +4942,18 @@ package:
|
|||||||
pyyaml: '>=5.1'
|
pyyaml: '>=5.1'
|
||||||
requests: '>=2'
|
requests: '>=2'
|
||||||
ruamel.yaml: ''
|
ruamel.yaml: ''
|
||||||
setuptools: ''
|
tomli: ''
|
||||||
toml: ''
|
toolz: <1.0.0,>=0.12.0
|
||||||
typing-extensions: ''
|
typing-extensions: ''
|
||||||
hash:
|
hash:
|
||||||
md5: 2d1c6d733a45b168eef7acc6212109ed
|
md5: 496c81a0d226177dbabb5fa495fadda9
|
||||||
sha256: 023ffdae76edde9f2d3fc6a8696cc8d8a60d61b2b8ae6d951f4e4802e47ef606
|
sha256: 39b181da4620222ba831dc9570f600753c52bb8f649bfef036d2c79245a4c145
|
||||||
manager: conda
|
manager: conda
|
||||||
name: conda-lock
|
name: conda-lock
|
||||||
optional: false
|
optional: false
|
||||||
platform: linux-64
|
platform: linux-64
|
||||||
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.1-pyhd8ed1ab_0.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.3-pyhd8ed1ab_0.tar.bz2
|
||||||
version: 1.1.1
|
version: 1.1.3
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
boto3: ''
|
boto3: ''
|
||||||
|
|||||||
@@ -9,7 +9,11 @@
|
|||||||
# To update a single package to the latest version compatible with the version constraints in the source:
|
# To update a single package to the latest version compatible with the version constraints in the source:
|
||||||
# conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE
|
# conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE
|
||||||
# To re-solve the entire environment, e.g. after changing a version constraint in the source file:
|
# To re-solve the entire environment, e.g. after changing a version constraint in the source file:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
# conda-lock -f /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-riscv-tools.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
# conda-lock -f /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-riscv-tools.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fix/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
|
=======
|
||||||
|
# conda-lock -f /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-riscv-tools.yaml -f /scratch/abejgonza/cy-circt/conda-requirements-riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
metadata:
|
metadata:
|
||||||
channels:
|
channels:
|
||||||
- url: ucb-bar
|
- url: ucb-bar
|
||||||
@@ -19,13 +23,17 @@ metadata:
|
|||||||
- url: nodefaults
|
- url: nodefaults
|
||||||
used_env_vars: []
|
used_env_vars: []
|
||||||
content_hash:
|
content_hash:
|
||||||
linux-64: e0eaa8e6d532cfd33d97846ae17a35f71e62c135ff3edb6236f6d8d592b10e7a
|
linux-64: 6254f362fb6c8b59402fb3d4adb4b1023218ec62be09f7f75dfc5980e3233e50
|
||||||
platforms:
|
platforms:
|
||||||
- linux-64
|
- linux-64
|
||||||
sources:
|
sources:
|
||||||
- /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-riscv-tools.yaml
|
- /scratch/buildbot/firesim/target-design/chipyard/conda-requirements-riscv-tools.yaml
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
- /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml
|
- /scratch/abejgonza/cy-fix/conda-reqs/chipyard.yaml
|
||||||
- /scratch/abejgonza/cy-fix/conda-reqs/riscv-tools.yaml
|
- /scratch/abejgonza/cy-fix/conda-reqs/riscv-tools.yaml
|
||||||
|
=======
|
||||||
|
- /scratch/abejgonza/cy-circt/conda-requirements-riscv-tools.yaml
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
package:
|
package:
|
||||||
- category: main
|
- category: main
|
||||||
dependencies: {}
|
dependencies: {}
|
||||||
@@ -821,6 +829,18 @@ package:
|
|||||||
platform: linux-64
|
platform: linux-64
|
||||||
url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2
|
||||||
version: 3.8.1
|
version: 3.8.1
|
||||||
|
- category: main
|
||||||
|
dependencies:
|
||||||
|
libgcc-ng: '>=12'
|
||||||
|
hash:
|
||||||
|
md5: 5be58359dbbf568c1ec0be87e0c6cb1b
|
||||||
|
sha256: f6c470ba56c43e5f6c75fd28b05256fd8f5d54d76df29c0652496bf3b104ae2b
|
||||||
|
manager: conda
|
||||||
|
name: oniguruma
|
||||||
|
optional: false
|
||||||
|
platform: linux-64
|
||||||
|
url: https://conda.anaconda.org/conda-forge/linux-64/oniguruma-6.9.8-h166bdaf_0.tar.bz2
|
||||||
|
version: 6.9.8
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
ca-certificates: ''
|
ca-certificates: ''
|
||||||
@@ -1117,6 +1137,23 @@ package:
|
|||||||
version: 4.6.0
|
version: 4.6.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
|
=======
|
||||||
|
libgcc-ng: '>=12'
|
||||||
|
libstdcxx-ng: '>=12'
|
||||||
|
ncurses: '>=6.3,<7.0a0'
|
||||||
|
hash:
|
||||||
|
md5: e6019194c1a4915a153c09516dcca08a
|
||||||
|
sha256: null
|
||||||
|
manager: conda
|
||||||
|
name: firtool
|
||||||
|
optional: false
|
||||||
|
platform: linux-64
|
||||||
|
url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.16.0-0_h1234567_g14ac3cb0e.tar.bz2
|
||||||
|
version: 1.16.0
|
||||||
|
- category: main
|
||||||
|
dependencies:
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
libgcc-ng: '>=7.5.0'
|
libgcc-ng: '>=7.5.0'
|
||||||
libstdcxx-ng: '>=7.5.0'
|
libstdcxx-ng: '>=7.5.0'
|
||||||
m4: ''
|
m4: ''
|
||||||
@@ -1149,6 +1186,22 @@ package:
|
|||||||
version: 12.1.0
|
version: 12.1.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
|
=======
|
||||||
|
libgcc-ng: '>=7.5.0'
|
||||||
|
oniguruma: '>=6.9.3,<6.10.0a0'
|
||||||
|
hash:
|
||||||
|
md5: 8578ae83310b8c9f5717f1aa65054f36
|
||||||
|
sha256: 00e69aec19174e61c70b652bb62c77c0947a27d6720bda0cb8d5be654020804a
|
||||||
|
manager: conda
|
||||||
|
name: jq
|
||||||
|
optional: false
|
||||||
|
platform: linux-64
|
||||||
|
url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.6-h36c2ea0_1000.tar.bz2
|
||||||
|
version: '1.6'
|
||||||
|
- category: main
|
||||||
|
dependencies:
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
libopenblas: '>=0.3.21,<1.0a0'
|
libopenblas: '>=0.3.21,<1.0a0'
|
||||||
hash:
|
hash:
|
||||||
md5: d9b7a8639171f6c6fa0a983edabcfe2b
|
md5: d9b7a8639171f6c6fa0a983edabcfe2b
|
||||||
@@ -3045,14 +3098,14 @@ package:
|
|||||||
dependencies:
|
dependencies:
|
||||||
python: '>=3.7'
|
python: '>=3.7'
|
||||||
hash:
|
hash:
|
||||||
md5: a3508a0c850745b875de88aea4c40cc5
|
md5: 6f3fd8c9e0ab504010fb4216d5919c24
|
||||||
sha256: bb6920451dad059ca31581ca6e36c5f1534fad8a8efe869c7eb9c9e3846b4f53
|
sha256: 7740d6fcd4fffb895a93c765388382b58ea78e005180cee88078eb18e59f7f06
|
||||||
manager: conda
|
manager: conda
|
||||||
name: zipp
|
name: zipp
|
||||||
optional: false
|
optional: false
|
||||||
platform: linux-64
|
platform: linux-64
|
||||||
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.1-pyhd8ed1ab_0.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.9.0-pyhd8ed1ab_0.tar.bz2
|
||||||
version: 3.8.1
|
version: 3.9.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
python: '>=3.6'
|
python: '>=3.6'
|
||||||
@@ -4308,17 +4361,27 @@ package:
|
|||||||
version: 5.10.0
|
version: 5.10.0
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
cryptography: '>=35.0'
|
cryptography: '>=38.0.0,<39'
|
||||||
python: '>=3.6'
|
python: '>=3.6'
|
||||||
hash:
|
hash:
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
md5: 2e7e3630919d29c8216bfa2cd643d79e
|
md5: 2e7e3630919d29c8216bfa2cd643d79e
|
||||||
sha256: 72af60a6164a380730c00ee996bda265267b53a99662d7ceb2ec6ed47dd74a0b
|
sha256: 72af60a6164a380730c00ee996bda265267b53a99662d7ceb2ec6ed47dd74a0b
|
||||||
|
=======
|
||||||
|
md5: fbfa0a180d48c800f922a10a114a8632
|
||||||
|
sha256: 42f04dded77ac2597108378d62b121697d0e982aba7b20a462a7239030563628
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
manager: conda
|
manager: conda
|
||||||
name: pyopenssl
|
name: pyopenssl
|
||||||
optional: false
|
optional: false
|
||||||
platform: linux-64
|
platform: linux-64
|
||||||
|
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_1.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_1.tar.bz2
|
||||||
version: 22.0.0
|
version: 22.0.0
|
||||||
|
=======
|
||||||
|
url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.1.0-pyhd8ed1ab_0.tar.bz2
|
||||||
|
version: 22.1.0
|
||||||
|
>>>>>>> 3e131170 (Update all):conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
pytest: '>=3.6.0'
|
pytest: '>=3.6.0'
|
||||||
@@ -4879,18 +4942,18 @@ package:
|
|||||||
pyyaml: '>=5.1'
|
pyyaml: '>=5.1'
|
||||||
requests: '>=2'
|
requests: '>=2'
|
||||||
ruamel.yaml: ''
|
ruamel.yaml: ''
|
||||||
setuptools: ''
|
tomli: ''
|
||||||
toml: ''
|
toolz: <1.0.0,>=0.12.0
|
||||||
typing-extensions: ''
|
typing-extensions: ''
|
||||||
hash:
|
hash:
|
||||||
md5: 2d1c6d733a45b168eef7acc6212109ed
|
md5: 496c81a0d226177dbabb5fa495fadda9
|
||||||
sha256: 023ffdae76edde9f2d3fc6a8696cc8d8a60d61b2b8ae6d951f4e4802e47ef606
|
sha256: 39b181da4620222ba831dc9570f600753c52bb8f649bfef036d2c79245a4c145
|
||||||
manager: conda
|
manager: conda
|
||||||
name: conda-lock
|
name: conda-lock
|
||||||
optional: false
|
optional: false
|
||||||
platform: linux-64
|
platform: linux-64
|
||||||
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.1-pyhd8ed1ab_0.tar.bz2
|
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.3-pyhd8ed1ab_0.tar.bz2
|
||||||
version: 1.1.1
|
version: 1.1.3
|
||||||
- category: main
|
- category: main
|
||||||
dependencies:
|
dependencies:
|
||||||
boto3: ''
|
boto3: ''
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ dependencies:
|
|||||||
|
|
||||||
- dromajo # from ucb-bar channel - https://github.com/riscv-boom/dromajo
|
- dromajo # from ucb-bar channel - https://github.com/riscv-boom/dromajo
|
||||||
- riscv-tools # from ucb-bar channel - https://github.com/ucb-bar/riscv-tools-feedstock
|
- riscv-tools # from ucb-bar channel - https://github.com/ucb-bar/riscv-tools-feedstock
|
||||||
|
- firtool # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock
|
||||||
|
|
||||||
# firemarshal deps
|
# firemarshal deps
|
||||||
- python>=3.8
|
- python>=3.8
|
||||||
|
|||||||
@@ -1,84 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
import json
|
|
||||||
import argparse
|
|
||||||
from typing import List, Optional
|
|
||||||
# Schema of json emitted by circt
|
|
||||||
"""
|
|
||||||
{
|
|
||||||
"instance_name": "TestHarness",
|
|
||||||
"module_name": "TestHarness",
|
|
||||||
"instances": [
|
|
||||||
{
|
|
||||||
"instance_name": "chiptop",
|
|
||||||
"module_name": "ChipTop",
|
|
||||||
"instances": [
|
|
||||||
{
|
|
||||||
"instance_name": "system",
|
|
||||||
"module_name": "DigitalTop",
|
|
||||||
"instances": [ ]
|
|
||||||
}, ...
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"instance_name": "simdram",
|
|
||||||
"module_name": "SimDRAM",
|
|
||||||
"instances": []
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
def get_modules(js: dict) -> List[str]:
|
|
||||||
if 'instances' not in js:
|
|
||||||
return js['module_name']
|
|
||||||
else:
|
|
||||||
mods = []
|
|
||||||
for mod in js['instances']:
|
|
||||||
mods.extend(get_modules(mod))
|
|
||||||
return [js['module_name']] + mods
|
|
||||||
def find_mod_by_name(js: dict, name: str) -> Optional[List[dict]]:
|
|
||||||
if 'instances' not in js:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
mods = []
|
|
||||||
for mod in js['instances']:
|
|
||||||
if mod['module_name'] == name:
|
|
||||||
mods.append(mod)
|
|
||||||
other_mods = find_mod_by_name(mod, name)
|
|
||||||
if other_mods is not None:
|
|
||||||
mods.extend(other_mods)
|
|
||||||
return mods
|
|
||||||
if __name__ == "__main__":
|
|
||||||
parser = argparse.ArgumentParser(description='Convert circt hierarchy json into DUT and test harness filelists')
|
|
||||||
parser.add_argument('--hier-json', type=str, required=True, help='path to hierarchy JSON emitted by firtool')
|
|
||||||
parser.add_argument('--dut-top', type=str, required=True, help='name of the DUT top-level module')
|
|
||||||
parser.add_argument('--filelist', type=str, required=True, help='input filelist')
|
|
||||||
parser.add_argument('--build_dir', type=str, required=True, help='build_dir')
|
|
||||||
parser.add_argument('--dut-mods', type=str, required=True, help='dut mods')
|
|
||||||
args = parser.parse_args()
|
|
||||||
with open(args.hier_json) as f:
|
|
||||||
j = json.load(f)
|
|
||||||
dut_tops = find_mod_by_name(j, args.dut_top)
|
|
||||||
assert dut_tops is not None
|
|
||||||
assert len(dut_tops) == 1
|
|
||||||
dut_top = dut_tops[0]
|
|
||||||
dut_mods = set(get_modules(dut_top))
|
|
||||||
tb_mods = set(get_modules(j)) - dut_mods
|
|
||||||
both_mods = dut_mods.intersection(tb_mods)
|
|
||||||
#print(dut_mods)
|
|
||||||
#print(tb_mods)
|
|
||||||
#print(both_mods)
|
|
||||||
assert len(both_mods) == 0
|
|
||||||
|
|
||||||
|
|
||||||
with open(args.dut_mods, 'w') as df:
|
|
||||||
with open(args.filelist) as fl:
|
|
||||||
for path in fl:
|
|
||||||
writeOut = True
|
|
||||||
for dm in dut_mods:
|
|
||||||
if dm in path:
|
|
||||||
# don't write
|
|
||||||
writeOut = False
|
|
||||||
break
|
|
||||||
|
|
||||||
if writeOut:
|
|
||||||
df.write(f"{args.build_dir}/{path}")
|
|
||||||
81
scripts/split-mems-conf.py
Executable file
81
scripts/split-mems-conf.py
Executable file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import json
|
||||||
|
import argparse
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
# Schema of json emitted by circt
|
||||||
|
"""
|
||||||
|
{
|
||||||
|
"module_name": "mem_ext",
|
||||||
|
"depth": 512,
|
||||||
|
"width": 64,
|
||||||
|
"masked": true,
|
||||||
|
"read": false,
|
||||||
|
"write": false,
|
||||||
|
"readwrite": true,
|
||||||
|
"mask_granularity": 8,
|
||||||
|
"extra_ports": [],
|
||||||
|
"hierarchy": [
|
||||||
|
"TestHarness.ram.srams.mem.mem_ext"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_modules(js: dict) -> List[str]:
|
||||||
|
if 'instances' not in js:
|
||||||
|
return js['module_name']
|
||||||
|
else:
|
||||||
|
mods = []
|
||||||
|
for mod in js['instances']:
|
||||||
|
mods.extend(get_modules(mod))
|
||||||
|
return [js['module_name']] + mods
|
||||||
|
|
||||||
|
def find_mod_by_name(js: dict, name: str) -> Optional[List[dict]]:
|
||||||
|
if 'instances' not in js:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
mods = []
|
||||||
|
for mod in js['instances']:
|
||||||
|
if mod['module_name'] == name:
|
||||||
|
mods.append(mod)
|
||||||
|
other_mods = find_mod_by_name(mod, name)
|
||||||
|
if other_mods is not None:
|
||||||
|
mods.extend(other_mods)
|
||||||
|
return mods
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description='Use CIRCT (firtool) smems JSONs to create DUT and test harness smems confs')
|
||||||
|
parser.add_argument('--in-smems-conf', type=str, required=True, help='')
|
||||||
|
parser.add_argument('--in-dut-smems-json', type=str, required=True, help='')
|
||||||
|
parser.add_argument('--in-tb-smems-json', type=str, required=True, help='')
|
||||||
|
parser.add_argument('--out-dut-smems-conf', type=str, required=True, help='')
|
||||||
|
parser.add_argument('--out-tb-smems-conf', type=str, required=True, help='')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
with open(args.in_smems_conf) as isc:
|
||||||
|
with open(args.in_dut_smems_json) as idsj:
|
||||||
|
with open(args.in_tb_smems_json) as itsj:
|
||||||
|
idsj_data = json.load(idsj)
|
||||||
|
itsj_data = json.load(itsj)
|
||||||
|
|
||||||
|
dut_mods = set()
|
||||||
|
for e in idsj_data:
|
||||||
|
dut_mods.add(e['module_name'])
|
||||||
|
|
||||||
|
tb_mods = set()
|
||||||
|
for e in itsj_data:
|
||||||
|
tb_mods.add(e['module_name'])
|
||||||
|
|
||||||
|
with open(args.out_dut_smems_conf, "w") as odsc:
|
||||||
|
with open(args.out_tb_smems_conf, "w") as otsc:
|
||||||
|
for l in isc:
|
||||||
|
sl = l.split()
|
||||||
|
name = sl[1]
|
||||||
|
|
||||||
|
if name in dut_mods:
|
||||||
|
odsc.write(l)
|
||||||
|
elif name in tb_mods:
|
||||||
|
otsc.write(l)
|
||||||
|
else:
|
||||||
|
assert False, "Unable to find smem CONF module in firtool emitted JSON files."
|
||||||
106
scripts/split-module-files.py
Executable file
106
scripts/split-module-files.py
Executable file
@@ -0,0 +1,106 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import json
|
||||||
|
import argparse
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
# Schema of json emitted by circt
|
||||||
|
"""
|
||||||
|
{
|
||||||
|
"instance_name": "TestHarness",
|
||||||
|
"module_name": "TestHarness",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"instance_name": "chiptop",
|
||||||
|
"module_name": "ChipTop",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"instance_name": "system",
|
||||||
|
"module_name": "DigitalTop",
|
||||||
|
"instances": [ ]
|
||||||
|
}, ...
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"instance_name": "simdram",
|
||||||
|
"module_name": "SimDRAM",
|
||||||
|
"instances": []
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_modules(js: dict) -> List[str]:
|
||||||
|
if 'instances' not in js:
|
||||||
|
return js['module_name']
|
||||||
|
else:
|
||||||
|
mods = []
|
||||||
|
for mod in js['instances']:
|
||||||
|
mods.extend(get_modules(mod))
|
||||||
|
return [js['module_name']] + mods
|
||||||
|
|
||||||
|
def find_mod_by_name(js: dict, name: str) -> Optional[List[dict]]:
|
||||||
|
if 'instances' not in js:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
mods = []
|
||||||
|
for mod in js['instances']:
|
||||||
|
if mod['module_name'] == name:
|
||||||
|
mods.append(mod)
|
||||||
|
other_mods = find_mod_by_name(mod, name)
|
||||||
|
if other_mods is not None:
|
||||||
|
mods.extend(other_mods)
|
||||||
|
return mods
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description='Convert CIRCT (firtool) hierarchy JSON into DUT and test harness filelists')
|
||||||
|
parser.add_argument('--tb-hier-json', type=str, required=True, help='Path to hierarchy JSON emitted by firtool. Must include DUT as a module.')
|
||||||
|
parser.add_argument('--dut', type=str, required=True, help='Name of the DUT module.')
|
||||||
|
parser.add_argument('--out-dut-filelist', type=str, required=True, help='Path to output filelist including all modules under the DUT.')
|
||||||
|
parser.add_argument('--out-tb-filelist', type=str, required=True, help='Path to output filelist including all modules under the top-most module but not modules under the DUT.')
|
||||||
|
parser.add_argument('--in-all-filelist', type=str, required=True, help='Path to input filelist that has all modules (relative paths).')
|
||||||
|
parser.add_argument('--build-dir', type=str, required=True, help='Path to where module sources are located (combined with --in-all-filelist gives the absolute path to module sources).')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
with open(args.tb_hier_json) as f:
|
||||||
|
j = json.load(f)
|
||||||
|
|
||||||
|
dut_tops = find_mod_by_name(j, args.dut)
|
||||||
|
assert dut_tops is not None
|
||||||
|
assert len(dut_tops) == 1
|
||||||
|
dut_top = dut_tops[0]
|
||||||
|
|
||||||
|
dut_mods = set(get_modules(dut_top))
|
||||||
|
tb_mods = set(get_modules(j)) - dut_mods
|
||||||
|
both_mods = dut_mods.intersection(tb_mods)
|
||||||
|
assert len(both_mods) == 0
|
||||||
|
|
||||||
|
with open(args.out_dut_filelist, 'w') as df:
|
||||||
|
with open(args.in_all_filelist) as fl:
|
||||||
|
# add paths that correspond to modules to output file
|
||||||
|
for path in fl:
|
||||||
|
writeOut = True
|
||||||
|
for dm in dut_mods:
|
||||||
|
if dm in path:
|
||||||
|
# don't write
|
||||||
|
writeOut = False
|
||||||
|
break
|
||||||
|
|
||||||
|
# prepend the build directory to get filelist with absolute paths
|
||||||
|
if writeOut:
|
||||||
|
df.write(f"{args.build_dir}/{path}")
|
||||||
|
|
||||||
|
with open(args.out_tb_filelist, 'w') as df:
|
||||||
|
with open(args.in_all_filelist) as fl:
|
||||||
|
# add paths that correspond to modules to output file
|
||||||
|
for path in fl:
|
||||||
|
writeOut = True
|
||||||
|
for dm in tb_mods:
|
||||||
|
if dm in path:
|
||||||
|
# don't write
|
||||||
|
writeOut = False
|
||||||
|
break
|
||||||
|
|
||||||
|
# prepend the build directory to get filelist with absolute paths
|
||||||
|
if writeOut:
|
||||||
|
df.write(f"{args.build_dir}/{path}")
|
||||||
Submodule tools/barstools updated: 2635bb4f80...cf75889804
15
variables.mk
15
variables.mk
@@ -153,16 +153,25 @@ SFC_ANNO_FILE ?= $(build_dir)/$(long_name).sfc.anno.json
|
|||||||
|
|
||||||
FIRTOOL_MOD_HIER_JSON ?= $(build_dir)/modulehierarchy.json
|
FIRTOOL_MOD_HIER_JSON ?= $(build_dir)/modulehierarchy.json
|
||||||
FIRTOOL_TB_MOD_HIER_JSON ?= $(build_dir)/tbmodulehierarchy.json
|
FIRTOOL_TB_MOD_HIER_JSON ?= $(build_dir)/tbmodulehierarchy.json
|
||||||
|
FIRTOOL_SMEMS_CONF ?= $(build_dir)/$(long_name).mems.conf
|
||||||
|
FIRTOOL_SMEMS_JSON ?= $(build_dir)/metadata/seq_mems.json
|
||||||
|
FIRTOOL_TB_SMEMS_JSON ?= $(build_dir)/metadata/tb_seq_mems.json
|
||||||
|
|
||||||
TOP_SMEMS_CONF ?= $(build_dir)/$(long_name).mems.conf
|
TOP_SMEMS_CONF ?= $(build_dir)/$(long_name).top.mems.conf
|
||||||
TOP_SMEMS_FILE ?= $(build_dir)/$(long_name).mems.v
|
TOP_SMEMS_FILE ?= $(build_dir)/$(long_name).top.mems.v
|
||||||
TOP_SMEMS_FIR ?= $(build_dir)/$(long_name).mems.fir
|
TOP_SMEMS_FIR ?= $(build_dir)/$(long_name).top.mems.fir
|
||||||
|
|
||||||
|
HARNESS_SMEMS_CONF ?= $(build_dir)/$(long_name).harness.mems.conf
|
||||||
|
HARNESS_SMEMS_FILE ?= $(build_dir)/$(long_name).harness.mems.v
|
||||||
|
HARNESS_SMEMS_FIR ?= $(build_dir)/$(long_name).harness.mems.fir
|
||||||
|
|
||||||
FIRTOOL_FILELIST ?= $(build_dir)/filelist.f
|
FIRTOOL_FILELIST ?= $(build_dir)/filelist.f
|
||||||
# all module files to include (includes top modules)
|
# all module files to include (includes top modules)
|
||||||
ALL_MODS_FILELIST ?= $(build_dir)/$(long_name).all.f
|
ALL_MODS_FILELIST ?= $(build_dir)/$(long_name).all.f
|
||||||
# top module files to include
|
# top module files to include
|
||||||
TOP_MODS_FILELIST ?= $(build_dir)/$(long_name).top.f
|
TOP_MODS_FILELIST ?= $(build_dir)/$(long_name).top.f
|
||||||
|
# tb module files to include (not including top modules)
|
||||||
|
TB_MODS_FILELIST ?= $(build_dir)/$(long_name).tb.f
|
||||||
|
|
||||||
BOOTROM_FILES ?= bootrom.rv64.img bootrom.rv32.img
|
BOOTROM_FILES ?= bootrom.rv64.img bootrom.rv32.img
|
||||||
BOOTROM_TARGETS ?= $(addprefix $(build_dir)/, $(BOOTROM_FILES))
|
BOOTROM_TARGETS ?= $(addprefix $(build_dir)/, $(BOOTROM_FILES))
|
||||||
|
|||||||
Reference in New Issue
Block a user