f4pga-arch-defs icon indicating copy to clipboard operation
f4pga-arch-defs copied to clipboard

[WIP] Add QuickLogic EOS-S3 support

Open rw1nkler opened this issue 4 years ago • 7 comments

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.

rw1nkler avatar Nov 06 '20 13:11 rw1nkler

@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.

rw1nkler avatar Nov 06 '20 13:11 rw1nkler

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 avatar Nov 06 '20 18:11 litghost

@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.

litghost avatar Nov 06 '20 18:11 litghost

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

litghost avatar Nov 06 '20 18:11 litghost

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.

rw1nkler avatar Nov 09 '20 10:11 rw1nkler

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

litghost avatar Nov 09 '20 20:11 litghost

@rw1nkler New QuickLogic job is up and running. I tested the presubmit job in #1762 and hopefully the master job will be green too.

litghost avatar Nov 09 '20 21:11 litghost