enjoy-digital / litex

Build your hardware, easily!
Other
2.87k stars 553 forks source link

Simulink-like design environment #1766

Open davidbrochart opened 1 year ago

davidbrochart commented 1 year ago

There is a new Python-based tool called Flojoy that is similar to Simulink, which could be used to create digital hardware systems by connecting blocks together. I'm wondering if something like that already exists for LiteX? Otherwise, what are your thoughts on integrating LiteX in Flojoy, as a no-code solution to create hardware designs?

josuah commented 1 year ago

LiteX brings the ground foundation for building an SoC, on top of which gets possible to add more external physical hardware (plugging SPI/I2C/MIPI/... chips to it) and then adding custom cores as well.

Flojoy seems a lot more like something about data processing than bringing up an SoC together.

So it seems like integration would be more fit through some LiteX core that handles all the connection with a Flojoy design. If there is some configuration format that a Flojoy can generate, which specify all required inputs/outputs, then this could be fed into that custom core to generate the connection with LiteX.

This means that a bit of manual work would need to be done on the board of interest (instantiate the Flojoy core and connect it to the various resources of LiteX) but then the rest would happen in Flojoy and new flojoy updated design would require modification.

Does this picture how you aimed to integrate it?

davidbrochart commented 1 year ago

Not quite, I was rather thinking about something like HDL Coder. Flojoy may look like a dataflow system at the moment, but it's still early stage and I think there is room for other use cases. For instance, hierarchical nodes would be a great fit to model hardware blocks. But of course since a LiteX system could be defined in Flojoy, it could then interact with any other Flojoy component.

enjoy-digital commented 1 year ago

Thanks @davidbrochart for sharing, I indeed wanted to explore solutions to easily connect LiteX's stream modules together, Flojoy could be interesting for this, I'll have a closer look.

mithro commented 1 year ago

In a somewhat related note -- Antmicro was talking about a tool called "Visual System Designer" a few months back. See the following links;