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:
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:
<cmd args>refer to the arguments specific to the mio command specified (ex:
my_ip --seed 1for
<parameterscontains 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:
mlistfile format. All mio EDA commands offer instant replay (
mio <cmd> !) and the ability to load arguments from an
-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
mlistfile 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 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.
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.
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.
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).
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
HDL Module Connection/Disconnection
The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following simulators:
- Synopsys® VCS™
- Cadence® Xcelium™
- Mentor Graphics® Questa™
- Metrics® Cloud Sim
- Aldec® Riviera-PRO™
- Xilinx® Vivado™
- Icarus (iverilog)
The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following linters: TBD
The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following synthesis tools: TBD
The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following formal verification tools: TBD
The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following emulation platforms: TBD
The MIO MVP Client will be able to compile, elaborate and simulate IPs for the following timing analysis tools: TBD