DUH ("Spirit" in most slavic languages. pronounced /dûx/, with the final consonant of loch or Bach) is a suite of tools for packaging reusable hardware components and designs. DUH enables the generation of JSON5 (duh documents) for describing these components, and also enables export from these documents to output deliverables.
Check that you have Node.js version (12, 14, 16) installed by running:
node --version
On Installing Node.js via package manager
Install duh tool suite.
npm i -g duhYou might need to add ./node_modules/.bin/ to your PATH
In Bash:
export PATH=./node_modules/.bin:$PATHAnd test installation with duh --help
Base set of DUH tools to author duh documents:
-
Create
- Run
duh initto create a base document.
- Run
-
- SystemVerilog: Run
duh duh-import-verilog-portsto import an interface from Verilog RTL of the component - IPXACT: duh-ipxact
- SystemVerilog: Run
-
Infer
- Run
duh-portinfto infer mappings of portgroups to standard bus definitions AXI, AHB, TileLink, etc. - Run
duh-portbundlerto group ports, which are unassigned to a bus mapping, into structured bundles.
- Run
-
- Run
duh validateto test whether a given document conforms to the DUH document structure.
- Run
-
- Run
duh-export-scalato generate scala black box wrappers for the component. - IPXACT: duh-ipxact
- Run
- duh-scala -- Scala / Chisel export
- duh-ipxact -- IP-XACT import / export
- duh-systemrdl -- SystemRDL import / export
- duhportinf -- Bus interfaces inference
- duh-bus -- DUH Bus Definitions
- duh-schema -- DUH document JSON schema
- duh-core -- DUH core library
- duh-verilog -- Verilog generator from DUH document
- duh-svd -- DUH to SVD converter
- block-ark for a walk-through example using the DUH suite on a standalone module to produce a valid duh-document that fully describes the mapping of ports to known bus definitions.