edalize
edalize copied to clipboard
Improve SymbiFlow backend
The SymbiFlow backend is currently a mixed bag with a yosys+nextpnr-centric flow and a yosys+vpr-centric flow with the latter being called through the symbiflow_* shell script wrappers. The drawback of going through those shell script wrappers is that some functionality (such as settings defines, parameters sourcing TCL scripts etc) are not exposed in the wrappers. The idea now is to call the underlying tools directly starting with replacing symbiflow_synth. A small first step is done through https://github.com/SymbiFlow/symbiflow-arch-defs/pull/2371 and this is done partly to better support https://github.com/olofk/edalize/pull/299
h
I'm Nathan and Ill be working on this issue over the summer as part of Brigham Young University's Research Program. I have just recently begun to look into it to get a better understanding of what is going on.
I've also started implementing "some" symbiflow for Kintex devices as a Prj-Xray backend that messes things up a bit too.
Maybe it's needed to take a broad look into the ecosystem to avoid big refactors in the future again. Maybe homogenize under the f4pga umbrella is a good idea.
https://github.com/olofk/edalize/pull/308
Also I've raised some points about the Quicklogic flow for Symbiflow here: https://gist.github.com/carlosedp/ed17d934c94338cbb2f9b29dd076bf1a
There are still some open points that needs to be addressed.
I'm also going to be working on this with Nathan. Do we know what the current working state of Symbiflow/f4pga with Edalize is?
@olofk
My students @Pocketkid2 and @schafernc are going to take a crack at this. As shown in your image above, the plan is to change the Makefile generated by Edalize to call the underlying tools directly, instead of calling the symbiflow wrapper scripts (symbiflow_synth, symbiflow_pack, etc).
My first question is about #243 ESR. With this new approach, should we still have the Edalize backend create a Makefile? Or is there some other design pattern we should be using? Is there an example of the ESR we should be looking at? Thanks!!
@olofk See above. Can you point us to an example of using ESR? Thanks!
Apologies. Been out of the loop for a bit. There are a few backends that have been ported over to the new flow. This one might be the best example. And to answer your other question, a makefile is still generated just like before. We just do it more programatically now.
And warmly welcom @Pocketkid2 and @schafernc. Don't hesitate to reach out if you have any questions