ibex
ibex copied to clipboard
[tracking] Synthesize Ibex with Yosys
This is a tracking bug. This description will be updated to reflect the current state of affairs. Comment if you have suggestions or updates.
Yosys currently supports only a limited subset of SystemVerilog, which isn't sufficient to parse Ibex. This issue tracks the outstanding issues. We are generally open to find a common ground between tools, but only as long as it doesn't affect code quality and correctness. This means some issues will be resolved upstream in Yosys, while others might be worked around in Ibex.
Updated 2020-08-20. We're almost there, thanks to the work of @kgugala and others at Antmicro, and of course the Yosys reviewers!
We currently know of these issues which are still blocking us from synthesizing Ibex with Yosys:
- [ ] https://github.com/YosysHQ/yosys/pull/2331
- [x] https://github.com/YosysHQ/yosys/pull/2330
- [x] https://github.com/YosysHQ/yosys/pull/2329
- [x] https://github.com/YosysHQ/yosys/pull/2312
- [ ] https://github.com/YosysHQ/yosys/pull/2248
Looking at this list, we can most likely work around all Yosys problems except for the package parameters and the enum/typedefs. These need to be fixed upstream.
The package parameter problem doesn't seem to have an upstream bug report yet. @towoe since you've worked on this, would you mind filing one upstream?
@imphil regarding the package parameter I just did a very simple addition in https://github.com/towoe/yosys-sv/commit/88b1e84167f44ea6e375d162026ba06a424af319 I am however not sure if this is correct or breaks anything else, but it seemed to work at my end. As this is so small, maybe a PR to yosys can quickly answer that?
Let's give it a try!
As I wanted to split out the commit I just realized that this has dependencies to the other commits, I have to check what effects this has.
Link to #342
@daveshah1 @clairexen for visibility.
Yosys and Ibex are extremely close to the finish line, thanks for all your work so far! Let us know if there's something we can help with. We'll certainly ensure we have full CI on Ibex with Yosys to ensure nothing breaks again once all remaining patches are merged into Yosys.
The PRs mentioned in this issued are not sufficient as far as I can see to support Ibex without any changes (the commits applied in one branch). If we do not want to change our code support for
- Int types for parameters and localparam
- Packed multi-dim arrays
are still missing. For ibex-yosys-build the branch ibex-wip is used and without an exhaustive comparison there is some more work which is not yet part of any PR. But this branch is also not producing a correct result (mult-dim conversion incorrect, structure literals not supported). There is some work activity, maybe some contain already the enhancements required.
EDIT: links to examples