oxidecomputer / oxidecomputer/quartz

better encapsulate/modularize vivado IP via BUCK

Open
#385 0 comments 0 reactions 1 assignee View on GitHub

@nathanaelhuffman is already working on this.

Since Jul 10, 2025.

build system
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.