Skip to content

Open Source Software-Only Compilation/Simulation/Synthesis Flow #215

@Jiahui17

Description

@Jiahui17

Open Source Software-Only Compilation/Simulation/Synthesis Flow

Introduction

For open-source compiler projects, it is beneficial to have a flow that is independent of any proprietary software. Open-source dependencies are typically easier to get: for instance, Yosys can be automatically pulled from GitHub and compiled; whereas the procedure is substantially more complicated for Vivado.

The Issue: Can Dynamatic Be Used Independently of Proprietary Software?

A typical use case of an open-source HLS compiler would be the following:

  1. The user pulls Dynamatic and builds it on their machine;
  2. The user compiles an HLS C code into RTL (Verilog/VHDL);
  3. The user runs C/RTL co-simulation and checks if the results are correct;
  4. The user synthesizes the RTL design and sees the physical properties of it.

Unfortunately, every step needs certain proprietary software or licenses. For instance:

  1. To build and run Dynamatic with its full features, the user needs to obtain a Gurobi solver. This requires getting a license and downloading its proprietary software package.
  2. To run RTL simulation, the only supported simulator is ModelSim (which needs a license).
  3. To synthesize the design, the only supported synthesis tool is Vivado (which needs a license).

Pure Open-Source Solution in the Main Flow

I suggest making the default flow of Dynamatic completely independent of any proprietary dependencies. Possible substitutions:

  1. Constraint solver: the OR tool (used for formulating MILP constraints) by Google is completely open-source and wraps open-source/proprietary solvers.
  2. RTL simulators: GHDL for VHDL simulation; Verilator/Icarus Verilog for Verilog simulation.
  3. RTL synthesis tool: Yosys is a very popular and very actively developed tool for Verilog synthesis. Yosys doesn't support VHDL, thus it is not compatible with the floating-point IP cores generated by Flopoco.

The tasks

  • Adapt the MILP class for Google OR-tool.
  • Adapt the HlsVerifier for GHDL and Verilator.
  • Adapt the frontend and synthesize.sh for Vivado.

Metadata

Metadata

Assignees

No one assigned

    Labels

    RFCRequest for CommentscriticalTouches on core Dynamatic functionnality

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions