Update Constraints to be Defined by Variables Update some of the constraints to be defined by variables in place of hard coding. Change-Id: I18f21a7f50e81f6b128b05d8b538e10fb41d4470
diff --git a/hw/top_matcha/data/clocks_nexus.xdc b/hw/top_matcha/data/clocks_nexus.xdc index 74cbd85..8763a73 100644 --- a/hw/top_matcha/data/clocks_nexus.xdc +++ b/hw/top_matcha/data/clocks_nexus.xdc
@@ -2,7 +2,7 @@ ## Licensed under the Apache License, Version 2.0, see LICENSE for details. ## SPDX-License-Identifier: Apache-2.0 -## Clock Signal +## Clock Signal - 100M >> 1/100e6 = 1e-8s = 10ns create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports IO_CLK] ## Rename MMCM outputs for less bug-prone parsing. @@ -11,6 +11,11 @@ create_generated_clock -name clk_usb_48 [get_pin clkgen/pll/CLKOUT1] create_generated_clock -name clk_aon [get_pin clkgen/pll/CLKOUT4] +# Store clock periods in variables +set clk_main_period [get_property PERIOD [get_clocks clk_main]] +set clk_usb_48_period [get_property PERIOD [get_clocks clk_usb_48]] +set clk_aon_period [get_property PERIOD [get_clocks clk_aon]] + ## Clock Domain Crossings set clks_10_unbuf [get_clocks -of_objects [get_pin clkgen/pll/CLKOUT0]] set clks_48_unbuf [get_clocks -of_objects [get_pin clkgen/pll/CLKOUT1]] @@ -42,15 +47,15 @@ ] \ ] -## JTAG clocks +## JTAG clocks TODO - clock frequency create_clock -add -name lc_jtag_tck -period 200.00 -waveform {0 5} [get_pin top_*/u_pinmux_aon/u_pinmux_strap_sampling/u_pinmux_jtag_buf_lc/prim_clock_buf_tck/gen_xilinx.u_impl_xilinx/gen_fpga_buf.gen_bufg.bufg_i/O] create_clock -add -name rv_jtag_tck -period 200.00 -waveform {0 5} [get_pin top_*/u_pinmux_aon/u_pinmux_strap_sampling/u_pinmux_jtag_buf_rv/prim_clock_buf_tck/gen_xilinx.u_impl_xilinx/gen_fpga_buf.gen_bufg.bufg_i/O] ## SPI clocks set spi_dev_data [get_ports {SPI_DEV_D0 SPI_DEV_D1 SPI_DEV_D2 SPI_DEV_D3}] -create_clock -add -name clk_spi -period 100.00 -waveform {0 50} [get_ports SPI_DEV_CLK] -create_clock -add -name clk_cs -period 1000.00 -waveform {0 50} [get_ports SPI_DEV_CS_L] -set_input_delay -clock clk_spi 5 ${spi_dev_data} -add_delay +create_clock -add -name clk_spi -period $clk_main_period -waveform {0 50} [get_ports SPI_DEV_CLK] +create_clock -add -name clk_cs -period [expr $clk_main_period * 10] -waveform {0 50} [get_ports SPI_DEV_CS_L] +set_input_delay -clock clk_spi 5 ${spi_dev_data} -add_delay set_output_delay -clock clk_spi 5 ${spi_dev_data} -add_delay # set_input_delay -clock clk_spi -clock_fall -min ${spi_dev_in_delay_min} ${spi_dev_data} -add_delay # set_input_delay -clock clk_spi -clock_fall -max ${spi_dev_in_delay_max} ${spi_dev_data} -add_delay