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

Create a tool to extract the library definitions from the Spartan 6 Library User Guide #1246

Open
rodrigomelo9 opened this issue Dec 19, 2019 · 7 comments

Comments

@rodrigomelo9
Copy link

Hi @mithro this issue is to address your comment here about the need for something similar to xc7/library for Spartan 6. I read #149 and check what was done in xc7/libraries.

I want to know:

  • What is exactly needed? I know, the module name, the ports name, size and directions and the order, but what is your input there? The xml file? The generated Verilog file that is not there? Could I know what is exactly the idea?
  • Was proposed to be extracted for the PDF because...? There are Verilog files for each primitive under <VIVADO_ROOT_PATH>/data/verilog/src/unisims (and other places, but it seems to me that the most updated versions are there). Maybe, we could use the PDFs to extract only the names of the primitives per family, and after that, get data from there? Also, I saw at least with series 7 in Vivado, that we can also use info from data/parts/xilinx/<FAMILY>/devint/<FAMILY>.lib.

What do you think? Were these other resources evaluated and discarded? The PDF option was only an idea or was chosen after the evaluation of the best option?

Let me say that I like this kind of task, so I am interesting in collect from the vendor tools what could be useful for the project.

@mithro
Copy link
Contributor

mithro commented Dec 19, 2019

The stuff here is being done on the advice from our legal experts.

We can not include code from Vivado in the SymbiFlow project as they are not under a compatible open source license.

Extracting the minimal information needed for compatibility with Vivado or ISE from the PDF documentation was determined to be okay.

@rodrigomelo9
Copy link
Author

I got it.

@rodrigomelo9 rodrigomelo9 changed the title Create a tool to extract the library definitions from Xilinx Create a tool to extract the library definitions from the Spartan 6 Library User Guide Dec 19, 2019
@mithro
Copy link
Contributor

mithro commented Dec 19, 2019

I think the approach was to extract the PDF information into an XML file. Then from the XML file we could generate the required Verilog and VHDL black box modules (and potentially other things like diagrams using https://kevinpt.github.io/symbolator/ or https://wavedrom.com/).

@rodrigomelo9
Copy link
Author

Here we have the same problem as in #1243: not all the primitives have the Port Description info available in a table. There are instantiation examples... but the ports are not necessarily in order (I saw cases where the order in the Port desc table is not the same that in the example instantiation). Is the port order in the documentation really important @mithro ? (you said that the order is needed in #149).

mjasperse added a commit to mjasperse/symbiflow-arch-defs that referenced this issue Dec 20, 2019
Signed-off-by: Martijn Jasperse <146605+mjasperse@users.noreply.github.com>
@mithro
Copy link
Contributor

mithro commented Dec 20, 2019

@mithro - I believe order is important because you can specify the ports in Verilog via order?

@rodrigomelo9
Copy link
Author

ahh ok, yes, when is assigned by position (I always avoided this practice but you right). It seems that definitively we will need patches...

@rodrigomelo9
Copy link
Author

@mjasperse I used your last commit on parse_pdf_modules.py with UG615 (v14.7 - October 2, 2013), and it works :-D the only warnig of the tool was:

Processing DCM_CLKGEN...
Warning: port STATUS[2:1] does not match pattern

It gives me 100 modules when I count 101 manually XD but is near :P with the same problem about no port desc.

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

2 participants