I implemented an extremely rudimentary system for generating Vivado IP where the user provides a tcl and we source it before synthesis:
|
## source pre-synth user tcl here |
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.
I implemented an extremely rudimentary system for generating Vivado IP where the user provides a tcl and we source it before synthesis:
quartz/tools/vivado_gen/templates/synth.jinja2
Line 38 in 1c58def
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.