enjoy-digital / litex

Build your hardware, easily!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simulink-like design environment

davidbrochart opened this issue · comments

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?

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?

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.

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.