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

Mechanism to define pin-mapping for embedded FPGA (eFPGA) #1902

Open
sharmaln opened this issue Dec 18, 2020 · 4 comments
Open

Mechanism to define pin-mapping for embedded FPGA (eFPGA) #1902

sharmaln opened this issue Dec 18, 2020 · 4 comments

Comments

@sharmaln
Copy link
Contributor

sharmaln commented Dec 18, 2020

Problem Statement:
In eFPGA device, IO interface consists of input/output buffers (registered/non-registered) unlike fixed FPGA which has inpad/outpad connected to some kind of GPIO. Each IO interface in an eFPGA can have multiple such input/output buffers. User of an eFPGA need to then define a mapping between IO buffers they want to connect with other SOC interfaces that communicate with eFPGA (e.g. Wishbone, APB, SPI. GPIO etc.). We also need a mechanism to define clocks & timing budget for selected IO buffers as each SOC interface may have different timing requirement. This is somewhat similar to custom package definition for fixed FPGA devices. In Symbiflow, we need to define a mechanism to create an eFPGA device with custom IO specification and defining timing budget.

Description:
In QuickLogic eFPGA devices, we have IO interface buffers with port names like F2A (where F2A stands for Fabric to ASSP i.e. output port from the device) or A2F (where A2F stands for ASSP to Fabric i.e. input port to the device). Each IO interface cell (at a specific row/column) can have multiple such ports.
User of such eFPGA, then have a choice to assign IOs based on their applications and system level interconnection to the eFPGA.
We need to provide a way to get this mapping information from the user. This can be done by taking this mapping information in an xml file or a csv file or any other file. This mapping information can be @processed somewhat similar to how Symbiflow processes package information for FPGA with
Pin mapping csv file.
The end-user of this eFPGA device should also be able to specify fix placement constraints on these custom pin names. For defining timing budget, user can define it in sdc file (preferably) or in the same csv or xml file where pin mapping is defined.

Proposal:
Attached document explains pin mapping file specification. If we are defining a sdc file for timing budget then the clock related attributes can be removed from the proposed xml file.
In Symbiflow, this xml file is read in along with architecture definition xml. Internally, this is processed and pin-mapping information is saved in the similar manner as package information is saved for FPGA.

Pin Mapping File Specifications.docx

@mithro , @kgugala , @mkurc-ant : please go through this proposal and share your views/thoughts on how can we address pin-mapping for eFPGA devices in Symbiflow.

@mithro
Copy link
Contributor

mithro commented Dec 18, 2020

@lnsharma - Can you move the "Pin Mapping File Specifications" document to Google Docs so we can do interactive collaboration on it?

@mithro
Copy link
Contributor

mithro commented Dec 18, 2020

@lnsharma - It would be good to figure out how this interacts with SDC which is what we are moving to for all types of timing and IO constraints.

@sharmaln
Copy link
Contributor Author

@lnsharma - Can you move the "Pin Mapping File Specifications" document to Google Docs so we can do interactive collaboration on it?

ok, I changed the URL and document link now points to google docs.

@sharmaln
Copy link
Contributor Author

@lnsharma - It would be good to figure out how this interacts with SDC which is what we are moving to for all types of timing and IO constraints.

I updated the doc with a section on sdc commands needed for this purpose.

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