Skip to content
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

vivado xsim support for xci or xilinx ip #344

Open
skokvermon opened this issue Sep 29, 2022 · 5 comments
Open

vivado xsim support for xci or xilinx ip #344

skokvermon opened this issue Sep 29, 2022 · 5 comments

Comments

@skokvermon
Copy link

Hi,
it seems that vivado xsim doesn't support generating xilinx ip for simulation.
It is supported for synthesis

Is it a planned feature?
If not I would be willing to help implementing it.

@Jbalkind
Copy link
Contributor

I think we'd all love to see that if you're willing to give it a go :)

@olofk
Copy link
Owner

olofk commented Oct 2, 2022

Yes, that is a known issue. Currently, the vivado backend runs in project mode while xsim runs in non-project mode. My proposal is to convert the xsim backend to run in project mode as well. That should bring a number of other features as well. Haven't got the bandwidth to work on it myself so very happy for any help here.

@skokvermon
Copy link
Author

xsim doesn't launch vivado at all. It only calls xelab and xsim.
xci and other ip should not be related to xsim, as it only implies code generation.
Also xilinx ip generation could be used in other simulators.

It could be treated as a dependency, or any other code generation flow. Is there such framework in fusesoc?

@skokvermon
Copy link
Author

I implemented a working solution which should be compatible with synthesis.
I could make a working fusesoc simulation of xilinx example ddr bench.

I still have to test synthesis and will release it.

In my case, I'm using mig memories, which are entirely described in "mig_a.prj" file. xci file is not needed for these, and ip can be created using 3 lines of tcl:

create_ip -name mig_7series -vendor xilinx.com -library ip -version 4.2 -module_name myMig
set_property -dict [list CONFIG.XML_INPUT_FILE {xci/mig_a.prj}] [get_ips myMig]
generate_target simulation [ get_files *.xci ]

This will generate myMig Module. this xml file is quite compact and should be easily hand edited.
xci file contains no needed information for mig ips.
May I propose to use a new_file_type "mig", which would generate mig ips only with this prj file?
this has to be done also in vivado.py for synthesis of course.

implementation is quite easy thanks to jinja templates

@skokvermon
Copy link
Author

pull request made
#377
Sorry for the delay

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants