oxidecomputer / oxidecomputer/quartz
better encapsulate/modularize vivado IP via BUCK
@nathanaelhuffman is already working on this.
Since Jul 10, 2025.
- Dominant language
- VHDL
- Stars
- 22
- Forks
- 2
- Avg merge
- 9h 38m
- Merged PRs (30d)
- 1
Description
I implemented an extremely rudimentary system for generating Vivado IP where the user provides a tcl and we source it before synthesis:
https://github.com/oxidecomputer/quartz/blob/1c58def4fc932e2f42f74573494678a056925da9/tools/vivado_gen/templates/synth.jinja2#L38 which just sources what is generated when we make the IP: hdl/projects/cosmo_seq/xilinx_ip_gen/cosmo_pll_ip.tcl
This works, but doesn't scale well for a lot of IP. What I think we should do is still ingest the tcl, but do an Out of Context synthesis of that, write a checkpoint and then read_ip <ip_name>.xci in the actual synth.tcl we generate. This implies a new BUCK rule I think, but will allow us to better incrementally compile and preserve synth results from larger IPs that take a lot of build time but are also rarely touched.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.