f4pga-arch-defs
f4pga-arch-defs copied to clipboard
[WIP] Add QuickLogic EOS-S3 support
This PR adds support for QuickLogic devices. The codebase comes from the main QuickLogic repository, with additional changes that are required for proper integration with the SymbiFlow mainline.
At this point, these issues need to be addressed to provide the QuickLogic support:
- [ ] Copy the repository included in this PR as submodules to SymbiFlow
- [ ] Set up CI for QuickLogic devices
- [ ] Create Yosys plugin that will contain the changes introduced in https://github.com/SymbiFlow/yosys/pull/89
- [ ] Add all the remaining changes to SymbiFlow v2x
- [ ] https://github.com/SymbiFlow/python-symbiflow-v2x/pull/75
- [ ] https://github.com/SymbiFlow/python-symbiflow-v2x/pull/32
- [ ] Fix the QuickLogic conda package dependencies
I believe that the integration can be speeded up by replacing the Yosys
and v2x
conda packages in the CI. Then when all the changes are available in the main repository, we can remove the package substitution. In this PR, I proposed the necessary changes for this solution.
@litghost, can you provide any information on what should be added to integrate the QuickLogic support with SymbiFlow? Probably, your help is also required to set up proper CI.
Do you think that the solution with overwriting certain packages temporarily in the CI is a good approach? https://github.com/SymbiFlow/symbiflow-arch-defs/pull/1758/commits/9a90d28e68f0a38d97280a7ae11d3d59665c81d2#diff-d9eb2e25be835d9549f2c62e1b9717dba5bce9f76572de38ca4e595ff9c4c60dR17
I'm also aware of these DCO errors, I will do my best to resolve the problem.
Do you think that the solution with overwriting certain packages temporarily in the CI is a good approach? 9a90d28#diff-d9eb2e25be835d9549f2c62e1b9717dba5bce9f76572de38ca4e595ff9c4c60dR17
I think that is a terrible idea.
@litghost, can you provide any information on what should be added to integrate the QuickLogic support with SymbiFlow? Probably, your help is also required to set up proper CI.
I think the first step here is to make a small PR that adds the QuickLogic configuration and a dummy QL CI script that is an empty shell script. We can then add that config to kokoro. I then recommend we incrementally stage PR's, per my earlier suggestion.
I know this isn't a surprise, but it is practically impossible to review and merge a PR with 120k lines and ~500 files. We need to break this into small PRs with more modest goals. For example, having a PR that generates all the pb_types by invoking v2x is probably a good PR once we have the initial CI stuff setup.
I think the first step here is to make a small PR that adds the QuickLogic configuration and a dummy QL CI script that is an empty shell script. We can then add that config to kokoro. I then recommend we incrementally stage PR's, per my earlier suggestion.
Specifically this PR would have the following files:
.github/kokoro/continuous-ql.cfg
.github/kokoro/presubmit-ql.cfg
.github/kokoro/ql.sh
.github/kokoro/kokoro-cfg.py
I notice that in this PR you didn't modify kokoro-cfg.py
, which seems wrong? presubmit-ql.cfg / continuous-ql.cfg should be generated from kokoro-cfg.py
This PR should probably be broken up, it is very large, and hard to review.
Ok, I will split the PR then into smaller chunks.
I think the first step here is to make a small PR that adds the QuickLogic configuration and a dummy QL CI script that is an empty shell script. We can then add that config to kokoro. I then recommend we incrementally stage PR's, per my earlier suggestion.
Here is the first PR with the initial CI setup: https://github.com/SymbiFlow/symbiflow-arch-defs/pull/1760
Suggestions for places to split the PR:
- A PR to setup the basic directory structure and run v2x on Verilog. I believe this PR would be relatively straight forward, and the generated output would be all the pb_types, etc.
This PR will require all of the v2x
PRs to be merged:
- https://github.com/SymbiFlow/python-symbiflow-v2x/pull/75
- https://github.com/SymbiFlow/python-symbiflow-v2x/pull/32
From the discussions in the v2x
PRs, I see that still some of the issues are unresolved. What's more, the solutions proposed there will require a lot of changes in the existing QuickLogic support.
This PR will require all of the
v2x
PRs to be merged:From the discussions in the
v2x
PRs, I see that still some of the issues are unresolved. What's more, the solutions proposed there will require a lot of changes in the existing QuickLogic support.
Given your statement, that needs to be fixed first then? So order for now should be:
- Get relevant v2x PR's merged
- Start creating PR's for the relevant python scripts
- Work on updating verilog per v2x PR changes
- etc
@rw1nkler New QuickLogic job is up and running. I tested the presubmit job in #1762 and hopefully the master job will be green too.