duh

Design Unit Hardware

Usage no npm install needed!

<script type="module">
  import duh from 'https://cdn.skypack.dev/duh';
</script>

README

NPM version Actions Status Coverage Status

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 - 17) installed by running:

node --version

On Installing Node.js via package manager

Install duh tool suite.

npm i 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.
  • Import

    • SystemVerilog: Run duh duh-import-verilog-ports to import an interface from Verilog RTL of the component
    • IPXACT: duh-ipxact
  • 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.
  • Validate

    • Run duh validate to test whether a given document conforms to the DUH document structure.
  • Export

    • Run duh-export-scala to generate scala black box wrappers for the component.
    • IPXACT: duh-ipxact

DUH toolbox

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.