Skip to content

How does it work?

David Poulin edited this page Jun 9, 2021 · 3 revisions


The MIO CLI client runs on all OS and interacts with several data file formats that describe IP, project configuration, tool defaults, regressions, code templates, etc. These can be edited by hand (they are all captured in common, industry standards) or via the client. This dataset is used to drive/automate EDA tools, manage source files, and other common development needs. Freeing hardware engineers from spending hours on infrastructure and automation.


The CLI Client is written in Python3. However, it is fully contained (no need to download the Python runtime environment). It will be available for Windows, Linux and Mac OS. It automates and takes care of many tasks:

  • Engineering (simulation, linting, synthesis, etc.) - in other words: an industrial grade "common project makefile/script" usually found at large semiconductor corps built and maintained by a dedicated team.
  • IP management (install, update, publish, etc) - in other words: npm for HDL packages (npm uses the term package, mio uses the term IP, but they are the same concept)
  • Results management: all EDA tool results are addressable via an SQL-like query language. Actions (delete, compress, move) can be automated via policy configurations. Save tons in storage and keep the results that actually matter.
  • Interacting with EDApps in other words: TBD as to how this works. The overall concept is still nebulous at this point.

IP Metadata

IP is described by ip.yml, located within root IP directory (/ip.yml). This includes:

  • IP : RTL, Behavioral or other SystemVerilog & VHDL IP
  • VIP : Design Verification IP

Configuration files

The behavior of mio is controlled via layered TOML configuration files (.mio.toml). In order of precedence (high->low):


Tools written in Python >= v3 (generic use, usually CLI) and/or TCL (EDA customizations/plugins). EDApp Sample Metadata