-
Notifications
You must be signed in to change notification settings - Fork 42
Closed
Labels
RFCRequest for CommentsRequest for CommentscriticalTouches on core Dynamatic functionnalityTouches on core Dynamatic functionnality
Description
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:
- The user pulls Dynamatic and builds it on their machine;
- The user compiles an HLS C code into RTL (Verilog/VHDL);
- The user runs C/RTL co-simulation and checks if the results are correct;
- The user synthesizes the RTL design and sees the physical properties of it.
Unfortunately, every step needs certain proprietary software or licenses. For instance:
- 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.
- To run RTL simulation, the only supported simulator is ModelSim (which needs a license).
- 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:
- Constraint solver: the OR tool (used for formulating MILP constraints) by Google is completely open-source and wraps open-source/proprietary solvers.
- RTL simulators: GHDL for VHDL simulation; Verilator/Icarus Verilog for Verilog simulation.
- 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
HlsVerifierfor GHDL and Verilator. - Adapt the frontend and
synthesize.shfor Vivado.
lucas-rami
Metadata
Metadata
Assignees
Labels
RFCRequest for CommentsRequest for CommentscriticalTouches on core Dynamatic functionnalityTouches on core Dynamatic functionnality