fpga: n3xx: Add BUFG to SPI output line to ease timing

Vivado has demonstrated difficulty meeting timing with the spi0_mosi split. To
improve the chances of meeting timing, we are routing this signal through a
BUFG. This makes the routing step use a more efficient net routing that eases
timing closure.


Original-commit: 8c49730e4cf6af172d26ee6a5d35182ed3160058
This commit is contained in:
Humberto Jimenez
2022-08-25 13:55:30 -05:00
committed by skooNI
parent fb83fe3830
commit 5f2dd66658
+12 -2
View File
@@ -3369,6 +3369,16 @@ module n3xx (
wire [16*NUM_CHANNELS-1:0] db_gpio_in; wire [16*NUM_CHANNELS-1:0] db_gpio_in;
wire [16*NUM_CHANNELS-1:0] db_gpio_fab; wire [16*NUM_CHANNELS-1:0] db_gpio_fab;
// Vivado has demonstrated difficulty meeting timing with the spi0_mosi split.
// To improve the chances of meeting timing, we are routing this signal
// through a BUFG.
wire spi0_mosi_buf;
BUFG bufg_spi0_mosi (
.O (spi0_mosi_buf),
.I (spi0_mosi)
);
// DB A SPI Connections // DB A SPI Connections
wire cpld_a_cs_n; wire cpld_a_cs_n;
wire lmk_a_cs_n; wire lmk_a_cs_n;
@@ -3377,10 +3387,10 @@ module n3xx (
// Split out the SCLK and MOSI data to Mykonos and the CPLD. // Split out the SCLK and MOSI data to Mykonos and the CPLD.
assign DBA_CPLD_PS_SPI_SCLK = spi0_sclk; assign DBA_CPLD_PS_SPI_SCLK = spi0_sclk;
assign DBA_CPLD_PS_SPI_SDI = spi0_mosi; assign DBA_CPLD_PS_SPI_SDI = spi0_mosi_buf;
assign DBA_MYK_SPI_SCLK = spi0_sclk; assign DBA_MYK_SPI_SCLK = spi0_sclk;
assign DBA_MYK_SPI_SDIO = spi0_mosi; assign DBA_MYK_SPI_SDIO = spi0_mosi_buf;
// Assign individual chip selects from PS SPI MASTER 0. // Assign individual chip selects from PS SPI MASTER 0.
assign cpld_a_cs_n = spi0_ss0; assign cpld_a_cs_n = spi0_ss0;
assign lmk_a_cs_n = spi0_ss1; assign lmk_a_cs_n = spi0_ss1;