Skip to content

sifive/duhportinf

Repository files navigation

NPM version

DUH inference package

The DUH inference package includes tools for inferring mappings of ports to known bus defintions that are maintained in duh-bus.

Details of the implementation are included in an overview

Install

Install using npm (duh-bus automatically installed):

npm i duhportinf

or install using pip:

pip install .

in which case duh-bus must be installed manually. Alternatively, a duh-bus root directory can be specified on the command line using -b.

Run

This package includes two stand-alone command line programs for elaborating a component or design object desribed in a duh-document.

duh-portinf

duh-portinf first groups ports described in a duh-document into proposed portgroups. These portgroups are then subsequently mapped against a bank of duh-bus bus definitions to determine the best quality matches to these ports.

Running duh-portinf will update the following entries in the duh-document object:

  • obj["component"]["busInterfaces"]: A list of JSON references ("$ref"), each of which points to a dictionary specifying the proposed bus interface for a select portgroup. Within this list, each portgroup has exactly one entry.

  • obj["component"]["busInterfaceAlts"]: A list of JSON references, each of which points to a dictionary specifying alternate bus interfaces for each portgroup.

  • obj["definitions"]["busDefinitions"]: All referenced bus interface dictionaries.

  • obj["definitions"]["busMappedPortGroups"]: A list of objects containing debug information for each portgroup.

updating the resulting component.json

The duh-document resulting from running duh-portinf can be modified to conform with user design intent.

  • Entries in the obj["component"]["busInterface"] list can be swapped with those in the obj["component"]["busInterfacesAlts"] for a particular indexed portgroup if the desired match is found listed as an alternate. They can also be removed altogether if the portroup should not be mapped to a known bus definition.

  • Referenced bus interface dictionaries can also be modified directly to either remove mapped ports or include new ones that were not picked up.

The modified duh-document can be validated using the DUH base suite of tools.

duh-portbundler

duh-portbundler groups the ports specified in a duh-document, which are not already assigned to a bus interface, into structured bundles.

Running duh-portbundler will update the following entries in the duh-document object:

  • obj["component"]["busInterfaces"]: An updated list of JSON references that now includes references to structured bundles.

  • obj["definitions"]["bundleDefinitions"]: A dictionary that includes the newly added structured bundles as bus interfaces in which the "busType" is specified as "bundle".

Releases

No releases published

Packages

No packages published

Languages