edalize icon indicating copy to clipboard operation
edalize copied to clipboard

Improve SymbiFlow backend

Open olofk opened this issue 2 years ago • 7 comments

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

symbiflowflow h

olofk avatar Jan 28 '22 15:01 olofk

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.

schafernc avatar Apr 28 '22 20:04 schafernc

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

carlosedp avatar Apr 28 '22 21:04 carlosedp

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.

carlosedp avatar Apr 28 '22 21:04 carlosedp

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?

Pocketkid2 avatar May 09 '22 15:05 Pocketkid2

@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!!

jgoeders avatar May 10 '22 16:05 jgoeders

@olofk See above. Can you point us to an example of using ESR? Thanks!

jgoeders avatar May 31 '22 14:05 jgoeders

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

olofk avatar May 31 '22 22:05 olofk