Update all

This commit is contained in:
abejgonzalez
2022-10-09 17:08:18 -07:00
committed by joey0320
parent e75b107cf3
commit f9b938ad55
10 changed files with 399 additions and 138 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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: ''

View File

@@ -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: ''

View File

@@ -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

View File

@@ -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
View 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
View 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}")

View File

@@ -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))