-
Notifications
You must be signed in to change notification settings - Fork 194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libero: add run support #408
base: main
Are you sure you want to change the base?
Conversation
Hi @olofk, Here's my first pass at implementing the run stage. I'll try to look into the new API too.
I was also thinking of implementing something to read the device info. Is there a way to support that in FuseSoC? I couldn't find anything in the documentation. Cheers, |
Thanks for this. Highly appreciate the well-structured commits! It looks great overall, but I have some questions/comments on the programmer addition. Do we need to specify all these parameters for the different Flashpro devices? The general rule in Edalize is to avoid hard coding things like this, so that the user is free to set them as needed. I would also like to mention that long-term I would really really like device programming be handled by some external library so that all projects that need to program an FPGA can share that code. The current implementation in Edalize turned out to be a bit naive. When I started this in 2011 I assumed there would be one programmer per EDA tool, but in reality there can be many different tools, so this needs an overhaul. A bit of historical context here olofk/fusesoc#319 . This doesn't affect any of your work, but I'm mentioning it in the hope that someone someday will create a library I can use :) When it comes to a Flow API implementation of the Libero backend, I would suggest looking at the Vivado or Efinity tool classes, which probably are the closest ones. You need a |
These files actually implement the build stage and not the run stage. Rename them in preparation for the addition of run stage support. Signed-off-by: Liam Beguin <[email protected]>
In preparation for the addition of the run stage, factorize the call to the libero binary so it can be reused. Signed-off-by: Liam Beguin <[email protected]>
Add support for loading a bitstream on target. Signed-off-by: Liam Beguin <[email protected]>
Signed-off-by: Liam Beguin <[email protected]>
in TCL, join takes a list as first parameter and a separator as second. Update function call to match that, and fix relative path making the expansion null! Signed-off-by: Liam Beguin <[email protected]>
Signed-off-by: Liam Beguin <[email protected]>
This was causing string parameters to be ignored during synthesis, preventing things like: fusesoc run servant --target=polarfire_splashkit --memfile=anything.hex Signed-off-by: Liam Beguin <[email protected]>
Signed-off-by: Liam Beguin <[email protected]>
Signed-off-by: Liam Beguin <[email protected]>
fusesoc relies on the Makefile timestamp to know if it should rerun the setup stage. Add a dummy file so that one can launch build and run stages without having to destroy and regenerate a project. This should be removed when updating libero to the flow api. Signed-off-by: Liam Beguin <[email protected]>
Hi Olof! Apologies for my very late answer. I was doing some early work on this project and am only getting back into it now.
My pleasure, I know how hard it can be to get people to do this..
Unfortunately, I didn't find a way to not have to specify all these parameters... From what I remember, tried not populating some and the tool errored out.. I'll give it another shot as I get back into this.
haha! I can appreciate that, and would love to help as I can. At the moment I don't think I have the global view one would need to lay the ground work, but I can pitch in and help hopefully even test on some hardware I have. |
f8108cc
to
1cce9f3
Compare
I just took a look at this now. I really would prefer if this was implemented using the flow API instead, but since these are a set of clean patches I might make an exception. However! The regression test suite is broken so this must be fixed first regardless. |
Hi @olofk let me have another look. I looked at the flow API a bit a couple days ago, but not enough to really wrap my head around it. I'll also take a look at the CI. |
Allow users to program FPGA targets with edalize.
snippet of the output of the run stage: