You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The plan is to implement an analysis pass that discovers polymorphic code and raises and error. In the future, if we decide to add polymorphism, this pass will provide the basis for an implementation. Until then, we will force the user to rewrite their code in a way that effectively duplicates code for handling different types, which forces them to acknowledge the fact that their code is creating extra hardware (rather than having a polymorphic operator implicitly compiled into two different functional units). This design allows a polymorphic layer to be implemented on top of magma, giving magma a simple, concise, precise semantics.
Macro story
Add a mode to compile circuit combinational/sequential directly to verilog using kratos and pass through the black box modules to coreir
Capture Python variable names for magma values(wires)/instances and pass through to verilog to improve debuggability
Better coreir integration
Depreciate mantle implementations of primitives on FPGAs
I added two things to start making things more concrete.
For "better coreir integration", one thing that I have been thinking about:
Add a mode to compile circuit combinational/sequential directly to verilog using veriloggen and pass through the black box modules to coreir
This would improve the output verilog without having to reconstruct structure (if statements) from the netlist format
For " Consistent mantle implementations and tests"
hwtypes implementation of mantle to test against
@cdonovick brought up that we could provide one-to-one magma/hwtypes implementations for mantle, we could use the hwtypes version for generating simulation vectors and formal (verify the mantle generated RTL is equivalent to the SMT)
Caleb made the suggestion that we simplify the system as we move towards full support for coreir.
The suggestion was to move all the hwtypes/coreir primitives to magma. The goal is to build is to tightly integrate these primitives into magma. A secondary goal is to simplify the mantle implementation, which is complicated because the mantle primitives do mapping.
The new mantle would just contain functions built on the primitives, such as counters, shift registers, fifos, etc.
Tentative features for next major release of Magma
kratos
and pass through the black box modules to coreirThe text was updated successfully, but these errors were encountered: