Awesome
<p align="center"><img src="docs/assets/logo.svg"/></p>Design ∪ Hardware
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.
Install
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 duh
You might need to add ./node_modules/.bin/
to your PATH
In Bash:
export PATH=./node_modules/.bin:$PATH
And test installation with duh --help
Quick start
Base set of DUH tools to author duh documents:
-
Create
- Run
duh init
to create a base document.
- Run
-
- SystemVerilog: Run
duh duh-import-verilog-ports
to import an interface from Verilog RTL of the component - IPXACT: duh-ipxact
- SystemVerilog: Run
-
Infer
- Run
duh-portinf
to infer mappings of portgroups to standard bus definitions AXI, AHB, TileLink, etc. - Run
duh-portbundler
to group ports, which are unassigned to a bus mapping, into structured bundles.
- Run
-
- Run
duh validate
to test whether a given document conforms to the DUH document structure.
- Run
-
- Run
duh-export-scala
to generate scala black box wrappers for the component. - IPXACT: duh-ipxact
- Run
DUH toolbox
- 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
Example of DUH documents
- 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.