Skip to content

Latest commit

 

History

History
75 lines (58 loc) · 3.13 KB

ConceptualModel.rst

File metadata and controls

75 lines (58 loc) · 3.13 KB

Conceptual Model

EDA² is a conceptual model for characterising the abstraction layers in Electronic Design Automation projects based on Hardware Description Languages (HDLs). Its goal is the interoperability of diverse tools and languages with documented APIs.

Important

This conceptual model is not meant to be an isolated full-stack, but each of the layers is to be useful and (re)usable. In fact, it is still being enhanced and reworked, so the naming and specific scope of the layers should be taken with a grain of salt.

Abstraction layers.

Layers of the EDA² conceptual model.

-1 | Tools
Development of (open source) EDA tools. Organisation :gh:`hdl` contains an awesome list of tools: hdl.github.io/awesome. Most EDA tools are developed and managed independently of EDA². However, since the main purpose of EDA² is easing the usage of tools, this layer represents them.
0 | Installation
Packaging and distribution of EDA tools. Organisation :gh:`hdl` contains an index of packaging solutions (:gh:`hdl/packages`), along with :gh:`hdl/smoke-tests` for packagers to test the artifacts. This layer includes the abstraction(s) for dealing with multiple versions of the tools installed in different locations.
1 | CLI
Abstraction of Command-Line Interface programs (independent of EDA tools). May include the abstraction for running isolated tools on containers (e.g. from :gh:`hdl/containers`).
2 | EDA
Interaction with EDA tools (both open source and vendors), including multiple version support, output filtering, etc. See :doc:`reports:index`, :doc:`outputfilter:index` and :ref:`OSVB: Logging <OSVB:API:Logging>`.
3 | Workflows
Middle layer to translate projects into execution steps (EDA and/or CLI). See :ref:`EDAA:Workflows`, :ref:`OSVB: Tool <OSVB:API:Tool>` and :ref:`OSVB: Runner <OSVB:API:Runner>`.
4 | Language Model

Syntax and Document Object Model (DOM) of the imperative and parallel language(s) such as VHDL and System Verilog. See:

5 | Data Model
IP-XACT, UCIS, XUnit, Cobertura,... imported from or exported into structured files such as JSON, XML, TOML/INI, YAML,... See :ref:`EDAA:SyntaxModels` and :ref:`OSVB: Logging <OSVB:API:Logging:OSVR>`.
6 | Project Model
Tool independent information (files/filesets, primary design units, testbenches, :gh:`hdl/constraints`, etc.) and tool specific parameters. See :ref:`EDAA:Configurations` and :doc:`projectmodel:index`.
7 | Configuration
INI/JSON/YAML format for providing the sources and constraints data used in Workflow and/or Project through files, instead of using the APIs. See :ref:`OSVB: Core <OSVB:API:Core>`.
8 | Web
Web API wrapping the previous layers.
9 | GUI
Visual frontend to the web API or to the previous layers. See :ref:`OSVB: Open Source VHDL Design Explorer (OSVDE) <OSVB:API:Project:OSVDE>`.