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) \
|
||||
$(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)
|
||||
echo " \
|
||||
[\
|
||||
{\
|
||||
\"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)
|
||||
echo "$$firtool_extra_anno_contents" > $(FIRTOOL_EXTRA_ANNO_FILE)
|
||||
jq -s '[.[][]]' $(ANNO_FILE) $(FIRTOOL_EXTRA_ANNO_FILE) > $@
|
||||
|
||||
.PHONY: firrtl
|
||||
@@ -135,7 +138,7 @@ firrtl: $(FIRRTL_FILE) $(FINAL_ANNO_FILE)
|
||||
#########################################################################################
|
||||
# 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
|
||||
$(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
|
||||
@echo "" > /dev/null
|
||||
|
||||
# hack: lower to middle firrtl if Fixed types are found
|
||||
firrtl_temp: $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(VLOG_SOURCES)
|
||||
$(call run_scala_main,tapeout,barstools.tapeout.transforms.GenerateTop,\
|
||||
--output-file $(SFC_FIRRTL_FILE) \
|
||||
--target-dir $(build_dir) \
|
||||
--input-file $(FIRRTL_FILE) \
|
||||
--annotation-file $(FINAL_ANNO_FILE) \
|
||||
--out-fir-file $(SFC_FIRRTL_FILE) \
|
||||
--out-anno-file $(SFC_ANNO_FILE) \
|
||||
--log-level $(FIRRTL_LOGLEVEL) \
|
||||
--allow-unrecognized-annotations \
|
||||
-X none \
|
||||
-X $(if $(shell grep "Fixed<" $(FIRRTL_FILE)),middle,none) \
|
||||
$(EXTRA_FIRRTL_OPTIONS))
|
||||
$(SCRATCH_HOME)/circt/build/bin/firtool \
|
||||
firtool \
|
||||
--export-module-hierarchy \
|
||||
--emit-metadata \
|
||||
--format=fir \
|
||||
@@ -188,19 +193,30 @@ firrtl_temp: $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(VLOG_SOURCES)
|
||||
--lowering-options=disallowPackedArrays,emittedLineLength=8192,noAlwaysComb,disallowLocalVariables \
|
||||
--repl-seq-mem \
|
||||
--repl-seq-mem-circuit=$(MODEL) \
|
||||
--repl-seq-mem-file=$(TOP_SMEMS_CONF) \
|
||||
--repl-seq-mem-file=$(FIRTOOL_SMEMS_CONF) \
|
||||
--split-verilog \
|
||||
-o $(build_dir) \
|
||||
$(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
|
||||
|
||||
$(TOP_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)
|
||||
$(TOP_MODS_FILELIST) $(TB_MODS_FILELIST) $(ALL_MODS_FILELIST) &: $(FIRTOOL_TB_MOD_HIER_JSON) $(FIRTOOL_FILELIST)
|
||||
$(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)
|
||||
|
||||
.PHONY: temp
|
||||
temp: $(TOP_MODS_FILELIST)
|
||||
$(TOP_SMEMS_CONF) $(HARNESS_SMEMS_CONF) &: $(FIRTOOL_SMEMS_JSON) $(FIRTOOL_TB_SMEMS_JSON) $(FIRTOOL_SMEMS_CONF)
|
||||
$(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
|
||||
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
|
||||
########################################################################################
|
||||
$(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\)$$' > $@
|
||||
echo "$(TOP_SMEMS_FILE)" >> $@
|
||||
echo "$(HARNESS_SMEMS_FILE)" >> $@
|
||||
|
||||
#########################################################################################
|
||||
# helper rule to just make verilog files
|
||||
|
||||
@@ -29,6 +29,11 @@ dependencies:
|
||||
- binutils
|
||||
|
||||
- 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
|
||||
- python>=3.8
|
||||
|
||||
@@ -9,7 +9,11 @@
|
||||
# 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
|
||||
# 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-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:
|
||||
channels:
|
||||
- url: ucb-bar
|
||||
@@ -19,13 +23,17 @@ metadata:
|
||||
- url: nodefaults
|
||||
used_env_vars: []
|
||||
content_hash:
|
||||
linux-64: 5075908599b7f10581bbf1452b4be082245ad6ac58a589e4d111d2ecd0f96b42
|
||||
linux-64: 46faccb4f0f152fc79912dbcd442a9cd0d3378720908f86cd06f3496fd584e06
|
||||
platforms:
|
||||
- linux-64
|
||||
sources:
|
||||
- /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/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:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
@@ -821,6 +829,18 @@ package:
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2
|
||||
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
|
||||
dependencies:
|
||||
ca-certificates: ''
|
||||
@@ -1117,6 +1137,23 @@ package:
|
||||
version: 4.6.0
|
||||
- category: main
|
||||
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'
|
||||
libstdcxx-ng: '>=7.5.0'
|
||||
m4: ''
|
||||
@@ -1149,6 +1186,22 @@ package:
|
||||
version: 12.1.0
|
||||
- category: main
|
||||
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'
|
||||
hash:
|
||||
md5: d9b7a8639171f6c6fa0a983edabcfe2b
|
||||
@@ -3045,14 +3098,14 @@ package:
|
||||
dependencies:
|
||||
python: '>=3.7'
|
||||
hash:
|
||||
md5: a3508a0c850745b875de88aea4c40cc5
|
||||
sha256: bb6920451dad059ca31581ca6e36c5f1534fad8a8efe869c7eb9c9e3846b4f53
|
||||
md5: 6f3fd8c9e0ab504010fb4216d5919c24
|
||||
sha256: 7740d6fcd4fffb895a93c765388382b58ea78e005180cee88078eb18e59f7f06
|
||||
manager: conda
|
||||
name: zipp
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.1-pyhd8ed1ab_0.tar.bz2
|
||||
version: 3.8.1
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.9.0-pyhd8ed1ab_0.tar.bz2
|
||||
version: 3.9.0
|
||||
- category: main
|
||||
dependencies:
|
||||
python: '>=3.6'
|
||||
@@ -4308,17 +4361,27 @@ package:
|
||||
version: 5.10.0
|
||||
- category: main
|
||||
dependencies:
|
||||
cryptography: '>=35.0'
|
||||
cryptography: '>=38.0.0,<39'
|
||||
python: '>=3.6'
|
||||
hash:
|
||||
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||
md5: 2e7e3630919d29c8216bfa2cd643d79e
|
||||
sha256: 72af60a6164a380730c00ee996bda265267b53a99662d7ceb2ec6ed47dd74a0b
|
||||
=======
|
||||
md5: fbfa0a180d48c800f922a10a114a8632
|
||||
sha256: 42f04dded77ac2597108378d62b121697d0e982aba7b20a462a7239030563628
|
||||
>>>>>>> 3e131170 (Update all):conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||
manager: conda
|
||||
name: pyopenssl
|
||||
optional: false
|
||||
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
|
||||
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
|
||||
dependencies:
|
||||
pytest: '>=3.6.0'
|
||||
@@ -4879,18 +4942,18 @@ package:
|
||||
pyyaml: '>=5.1'
|
||||
requests: '>=2'
|
||||
ruamel.yaml: ''
|
||||
setuptools: ''
|
||||
toml: ''
|
||||
tomli: ''
|
||||
toolz: <1.0.0,>=0.12.0
|
||||
typing-extensions: ''
|
||||
hash:
|
||||
md5: 2d1c6d733a45b168eef7acc6212109ed
|
||||
sha256: 023ffdae76edde9f2d3fc6a8696cc8d8a60d61b2b8ae6d951f4e4802e47ef606
|
||||
md5: 496c81a0d226177dbabb5fa495fadda9
|
||||
sha256: 39b181da4620222ba831dc9570f600753c52bb8f649bfef036d2c79245a4c145
|
||||
manager: conda
|
||||
name: conda-lock
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.1-pyhd8ed1ab_0.tar.bz2
|
||||
version: 1.1.1
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.3-pyhd8ed1ab_0.tar.bz2
|
||||
version: 1.1.3
|
||||
- category: main
|
||||
dependencies:
|
||||
boto3: ''
|
||||
|
||||
@@ -9,7 +9,11 @@
|
||||
# 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
|
||||
# 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-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:
|
||||
channels:
|
||||
- url: ucb-bar
|
||||
@@ -19,13 +23,17 @@ metadata:
|
||||
- url: nodefaults
|
||||
used_env_vars: []
|
||||
content_hash:
|
||||
linux-64: e0eaa8e6d532cfd33d97846ae17a35f71e62c135ff3edb6236f6d8d592b10e7a
|
||||
linux-64: 6254f362fb6c8b59402fb3d4adb4b1023218ec62be09f7f75dfc5980e3233e50
|
||||
platforms:
|
||||
- linux-64
|
||||
sources:
|
||||
- /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/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:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
@@ -821,6 +829,18 @@ package:
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2
|
||||
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
|
||||
dependencies:
|
||||
ca-certificates: ''
|
||||
@@ -1117,6 +1137,23 @@ package:
|
||||
version: 4.6.0
|
||||
- category: main
|
||||
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'
|
||||
libstdcxx-ng: '>=7.5.0'
|
||||
m4: ''
|
||||
@@ -1149,6 +1186,22 @@ package:
|
||||
version: 12.1.0
|
||||
- category: main
|
||||
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'
|
||||
hash:
|
||||
md5: d9b7a8639171f6c6fa0a983edabcfe2b
|
||||
@@ -3045,14 +3098,14 @@ package:
|
||||
dependencies:
|
||||
python: '>=3.7'
|
||||
hash:
|
||||
md5: a3508a0c850745b875de88aea4c40cc5
|
||||
sha256: bb6920451dad059ca31581ca6e36c5f1534fad8a8efe869c7eb9c9e3846b4f53
|
||||
md5: 6f3fd8c9e0ab504010fb4216d5919c24
|
||||
sha256: 7740d6fcd4fffb895a93c765388382b58ea78e005180cee88078eb18e59f7f06
|
||||
manager: conda
|
||||
name: zipp
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.1-pyhd8ed1ab_0.tar.bz2
|
||||
version: 3.8.1
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.9.0-pyhd8ed1ab_0.tar.bz2
|
||||
version: 3.9.0
|
||||
- category: main
|
||||
dependencies:
|
||||
python: '>=3.6'
|
||||
@@ -4308,17 +4361,27 @@ package:
|
||||
version: 5.10.0
|
||||
- category: main
|
||||
dependencies:
|
||||
cryptography: '>=35.0'
|
||||
cryptography: '>=38.0.0,<39'
|
||||
python: '>=3.6'
|
||||
hash:
|
||||
<<<<<<< HEAD:conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||
md5: 2e7e3630919d29c8216bfa2cd643d79e
|
||||
sha256: 72af60a6164a380730c00ee996bda265267b53a99662d7ceb2ec6ed47dd74a0b
|
||||
=======
|
||||
md5: fbfa0a180d48c800f922a10a114a8632
|
||||
sha256: 42f04dded77ac2597108378d62b121697d0e982aba7b20a462a7239030563628
|
||||
>>>>>>> 3e131170 (Update all):conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||
manager: conda
|
||||
name: pyopenssl
|
||||
optional: false
|
||||
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
|
||||
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
|
||||
dependencies:
|
||||
pytest: '>=3.6.0'
|
||||
@@ -4879,18 +4942,18 @@ package:
|
||||
pyyaml: '>=5.1'
|
||||
requests: '>=2'
|
||||
ruamel.yaml: ''
|
||||
setuptools: ''
|
||||
toml: ''
|
||||
tomli: ''
|
||||
toolz: <1.0.0,>=0.12.0
|
||||
typing-extensions: ''
|
||||
hash:
|
||||
md5: 2d1c6d733a45b168eef7acc6212109ed
|
||||
sha256: 023ffdae76edde9f2d3fc6a8696cc8d8a60d61b2b8ae6d951f4e4802e47ef606
|
||||
md5: 496c81a0d226177dbabb5fa495fadda9
|
||||
sha256: 39b181da4620222ba831dc9570f600753c52bb8f649bfef036d2c79245a4c145
|
||||
manager: conda
|
||||
name: conda-lock
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.1-pyhd8ed1ab_0.tar.bz2
|
||||
version: 1.1.1
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-1.1.3-pyhd8ed1ab_0.tar.bz2
|
||||
version: 1.1.3
|
||||
- category: main
|
||||
dependencies:
|
||||
boto3: ''
|
||||
|
||||
@@ -27,6 +27,7 @@ dependencies:
|
||||
|
||||
- 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
|
||||
- firtool # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock
|
||||
|
||||
# firemarshal deps
|
||||
- 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_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_FILE ?= $(build_dir)/$(long_name).mems.v
|
||||
TOP_SMEMS_FIR ?= $(build_dir)/$(long_name).mems.fir
|
||||
TOP_SMEMS_CONF ?= $(build_dir)/$(long_name).top.mems.conf
|
||||
TOP_SMEMS_FILE ?= $(build_dir)/$(long_name).top.mems.v
|
||||
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
|
||||
# all module files to include (includes top modules)
|
||||
ALL_MODS_FILELIST ?= $(build_dir)/$(long_name).all.f
|
||||
# top module files to include
|
||||
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_TARGETS ?= $(addprefix $(build_dir)/, $(BOOTROM_FILES))
|
||||
|
||||
Reference in New Issue
Block a user