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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions