README written: March 4, 2026
HDL repository for Erbium-ET SoC integration, IP composition, and verification.
erbium_digital/: top-level digital RTL integration and legacy/full-chip testbench collateraltb/: cocotb-based top-level Erbium-ET testbench (tb.v) and smoke/feature testsregblocks/: SystemRDL and generated register collateralip/: major IP dependencies (xspi,mram_axi_bridge,cpu_subsystem,i2c,erbium_noc, etc.)erbium_nocis an open-source NoC stub, used by default for CI and simulation. It is a drop-in for the proprietaryni700_ErbiumETNIC-700: the wrapper module name and ports are identical, so the NIC-700 can be swapped in viaNOC_FLIST(see below) with no RTL changes.
doc/: generated memory-map documentation and design notes
This repo uses uv + .venv for Python tooling and cocotb packages.
From repo root:
cd <hdl-et-repo-root>
uv sync
source .venv/bin/activateThis repo includes .autoenv.zsh (not autozsh).
If you use an autoenv plugin in zsh, it can source this automatically on directory entry.
If you do not use autoenv, source it manually:
source .autoenv.zshThat file exports critical variables used by test compilation:
HDLET_ROOTRTLROOTNOC_FLIST— selects the NoC filelist. Defaults to the open-sourceerbium_nocstub ($HDLET_ROOT/ip/erbium_noc/flow/erbium_noc.f). Pre-export it before sourcing to swap in a different NoC filelist (e.g. the proprietary NIC-700).BOOKER_NCI— proprietary NIC-700 generator output path (only used when the NIC-700 is swapped in)BSC_PATH
Manual fallback if you do not want to source .autoenv.zsh:
export HDLET_ROOT="$(git rev-parse --show-toplevel)"
export RTLROOT="$HDLET_ROOT/ip/cpu_subsystem/rtl"
export NOC_FLIST="$HDLET_ROOT/ip/erbium_noc/flow/erbium_noc.f"IPs are checked in as git submodules. Initialize/update them before running tests:
git submodule update --init --recursiveMain cocotb top-level testbench lives under tb/.
cd <hdl-et-repo-root>
source .venv/bin/activate
source .autoenv.zsh
make -C tb sim MODULE=test_defaultor simply:
make -C tb(tb/Makefile defaults MODULE:=test_default)
make -C tb sim MODULE=test_gpio
make -C tb sim MODULE=test_xspimake -C tb regressionCurrent note: tb/Makefile lists test_regions, but no tb/test_regions.py exists in this checkout, so that target is stale as-is.
tb/Makefiledefaults toSIM=vcs- Alternative verilator flow is available via
tb/Makefile.verilator - VCS command line is built from:
erbium_digital/verilog/rtl.ftb/tb.v
To regenerate register models and markdown:
make -C regblocks/systemrdlThis updates outputs such as:
tb/ral/*doc/cpu_mm.mddoc/xspi_mm.mdregblocks/verilog/System_Reg.sv