JulianKemmerer / PipelineC

A C-like hardware description language (HDL) adding high level synthesis(HLS)-like automatic pipelining as a language construct/compiler feature.
https://github.com/JulianKemmerer/PipelineC/wiki
GNU General Public License v3.0
606 stars 50 forks source link

Vitis import example #127

Closed bartokon closed 2 years ago

bartokon commented 2 years ago

These scripts are used to generate Vitis hls IP's that transfer data to/from pipelineC generated IP. Streaming interfaces are used as communication channel. PipelineC ip is packaged as .XO and connected with Vitis at linking stage.

bartokon commented 2 years ago

It would be good to add ready<->valid hs support and that ap_ctrl_chain :)

JulianKemmerer commented 2 years ago

Wow this is fantastic work - looking forward to merging it and documenting it

I am quite busy this upcoming week so it might be ~2 weeks from now until it gets fully integrated...

I need to familiarize myself with the expected flow for using this - see if there are any final things to tidy up / note when documenting...

awesome :raised_hands:

JulianKemmerer commented 2 years ago

So add ready<->valid hs in the way of 'the signal is there but tready=1 always' hack can be done - and you the user just need to ensure you are actually always ready at the pipeline output and the pipeline will be always free flowing...

But actually supporting autopipelining + working combinatorial valid+ready handshaking true AXIS-style ... thats another issue :fist_raised: https://github.com/JulianKemmerer/PipelineC/issues/122

JulianKemmerer commented 2 years ago

that ap_ctrl_chain maybe we can work towards a small demo for that - protocol didnt look too complicated ... so getting some kind of ~loopback of data - maybe with the +1 on each word thing could also be a good test for that?

I guess the idea is that ap_ctrl_chain will be reused by any/all pipelinec modules for getting generic in and out data ...

bartokon commented 2 years ago

So add ready<->valid hs in the way of 'the signal is there but tready=1 always' hack can be done - and you the user just need to ensure you are actually always ready at the pipeline output and the pipeline will be always free flowing...

But actually supporting autopipelining + working combinatorial valid+ready handshaking true AXIS-style ... thats another issue ✊ #122

If we got that handshake we create gears for pygears. https://docs.pygears.org/gears.html as it uses valid & ready handshake.

JulianKemmerer commented 2 years ago

Niiicee pygears does indeed seem very cool

To be clear, saying like above - if ready is ignored - or autopipelining isnt used - then you can make a compatible pygear today. The problem is ready+autopipelines.

JulianKemmerer commented 2 years ago

Planning to probably start an entire 'Vitis Integration' wiki page which primarily will consist of documenting these initial examples files - and can grow organically as needed from there

Will link to this new page from other places in wiki, examples, front page somewhere too

Maybe can put together a nice tweet about to tell folks :nerd_face: