Tool Suite - Datum-Technology-Corporation/mio_platform_client_cli_mvp Wiki

EDA Tool Automation

Moore.io uses IP metadata, the Configuration database, and the command-line arguments in a standardized way to provide universal suppor HDL IP support for typical EDA tools: simulation (Digital & AMS), regressions, linting, synthesis, timing analysis, emulation, formal verification. To achieve this, the CLI uses 2 novel standards:

  1. The inline form: mio [<pre args>] <cmd> [<cmd args>] [-- [<parameters>]] [--- [<tool args>]]

    • <pre args> can be used to add to the Configuration database and/or change the work directory from which mio is run.
    • <cmd> refers to the EDA tool to run: sim, regr, lint, synth, formal, emul, timing.
    • <cmd args> refer to the arguments specific to the mio command specified (ex: my_ip --seed 1 for sim)
    • <parameters contains key/value pairs for parameters specified by IP/Configuration DB (ex: a=2). Anything not picked up by the mio parameter engine gets redirected, untouched, to the end executable
    • <tool args> get passed, untouched, to the end executable (ex: --permissive)
  2. The mlist file format. All mio EDA commands offer instant replay (mio <cmd> !) and the ability to load arguments from an mlist file (-f <path>). The former is used to create the input to the latter: mio <cmd> ! -m > <path>.mlist (ex: mio sim ! -m > ~/bug32.mlist). These are incredibly useful to 'toss over the fence' to someone remotely to re-create an exact run. The format is pure text, simple and will not be problematic with emails and/or issue/ticket systems. Here is the full spec:

    % mio
       [<pre args>]
    $ <cmd>
       [<cmd args>]
    [--
       [<ip args>]]
    [---
       [<tool args>]]
    

    And a sample mlist file to re-run a simulation which uncovered an RTL design bug:

    mio sim ! -m > ./bug32.mlist
    cat ./bug32.mlist
    % mio
    $ sim
       my_ip
       --app=dsim-latest
       --test=my_test
       --seed=27484382
       --waves='/dut/top/dp/egress/*'
    --
       dp-width=32B
       pcie-width=2
       +NUM_PKTS=200
       +MAX_PKT_SZ=5000
       +MIN_PKT_SZ=32
    mio -f ./bug32.mlist
    

Regressions

Regressions are captured by test suites (ex: my_test_suite.yml) and run by mio. Simulations (as well as all other mio commands) can (and should) be launched on scheduling platforms such Grid Engine and LSF. Integration with both is to be supported at launch.

Results management

All jobs run via mio are stored within its database and the command ‘results’ uses this information to provide an SQL-like interface to the user. This powerful approach is combined with actions that are useful for EDA purposes: view, pack (compress), rm, move, etc. It is highly recommended to use mio results rather than directly modifying the result files/directories.

Users may also capture organization and team policies for results management via the Configuration database.

IP Management

Moore.io encapsulates HDL code into 'IPs". They are the analog to the package of npm, cargo, pip, and many other software package managers.

IPs use YAML to describe their metadata to mio. [[IP Metadata]]

IPs can depend on other IPs, which can depend on other IPs, and so on. The mio CLI takes care of installing/updating all IPs automatically.

IP Parameters are inputs that are mapped to EDA tool arguments.

Configuration

[[Configuration List]]

HDL Code Generation

Generators (templates) for creating from single files to entire projects are captured as EDApps IP. Either python3 (CLI frontends) or nodejs (GUI frontends (via browser)). Can also be mixed. Actual templates are .yml descriptors and jinja2 source files (*.*.jinja). Front-end are simply user interfaces and task the mio template engine with the actual code generation (i.e. running the templates).

Register models are captured in yml descriptors and templates operate in the same way as generators (ex src file).

HDL Documentation Generation

MIO comes with a documentation generator for SystemVerilog/VHDL that uses IP metadata to automatically generate HTML/PDF/etc. reference documentation. Additional documents (captured via reStructuredText) can be included. Works in a similar manner to Doxygen.

HDL Coding Style Enforcement

TODO

HDL Module Connection/Disconnection

TODO

HDL Refactor

TODO

Tool support

Simulators

The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following simulators:

Linters

The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following linters: TBD

Synthesis

The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following synthesis tools: TBD

Formal Verification

The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following formal verification tools: TBD

Emulation

The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following emulation platforms: TBD

Timing Analysis

The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following timing analysis tools: TBD