Co-authored-by: Andrew Moch <Andrew.Moch@ni.com> Co-authored-by: Daniel Jepson <daniel.jepson@ni.com> Co-authored-by: Javier Valenzuela <javier.valenzuela@ni.com> Co-authored-by: Joerg Hofrichter <joerg.hofrichter@ni.com> Co-authored-by: Kumaran Subramoniam <kumaran.subramoniam@ni.com> Co-authored-by: Max Köhler <max.koehler@ni.com> Co-authored-by: Michael Auchter <michael.auchter@ni.com> Co-authored-by: Paul Butler <paul.butler@ni.com> Co-authored-by: Wade Fife <wade.fife@ettus.com> Co-authored-by: Hector Rubio <hrubio@ni.com> Original-commit: 6d3765605262016a80f71e36357f749ea35cbe5a
131 lines
5.4 KiB
Tcl
131 lines
5.4 KiB
Tcl
#
|
|
# Copyright 2021 Ettus Research, a National Instruments Brand
|
|
#
|
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
#
|
|
# Description:
|
|
# Shared constants for the X410 FPGA and the ZBX CPLD.
|
|
#
|
|
|
|
# These output delays are more or less arbitrarily chosen, but they dictate the
|
|
# delays at the input of the DB CPLD.
|
|
# Since the CPLD is built in Quartus, the file extension is .sdc.
|
|
set synth_sync_hold_requirement 1.0
|
|
set synth_sync_setup_requirement 8.5
|
|
|
|
# A MC100EPT23 clock translator is placed on the daughterboard to convert
|
|
# pll_ref_clk clock IO Standard to 3.3V. The minimum and maximum delays across
|
|
# this part are 1.1 ns and 1.8 ns, respectively.
|
|
# https://www.onsemi.com/pub/Collateral/MC100EPT23-D.PDF
|
|
set clock_translate_min 1.1
|
|
set clock_translate_max 1.8
|
|
|
|
## DB GPIO interface.
|
|
# The following values have been adjusted after verifying the slack on input
|
|
# and output path for the Post-synthesized designs for FPGA (Vivado) and CPLD
|
|
# (Quartus). Values are chosen as those that provide the most slack for FPGA
|
|
# timing, while still meeting timing on the CPLD.
|
|
|
|
# FPGA output constraints
|
|
set db_gpio_fpga_min_out 0.000
|
|
set db_gpio_fpga_max_out 3.250
|
|
|
|
# CPLD output constraints
|
|
set db_gpio_cpld_min_out -2.000
|
|
set db_gpio_cpld_max_out 8.500
|
|
|
|
# The longest traces on the DB GPIO interface.
|
|
# In order to compute the db_gpio_board_max_delay, the longest GPIO trace from
|
|
# the FPGA to any of the DB connector was simulated, and its worst-case value
|
|
# was added to the worst-case value obtained while simulating the longest GPIO
|
|
# trace on the DB. Both directions (FPGA <-> CPLD) were considered when
|
|
# computing the longest propagation delays. Propagation through the Board to
|
|
# board connector is assumed shorter than the effect of having the edge
|
|
# propagation time twice, as well as adding the two longest traces, instead of
|
|
# the longest corresponding pair.
|
|
# Longest trace | Trace length | Worst-case delay
|
|
# MB: DB0_GPIO[19] | 4.25 in | 912 ps
|
|
# DB: MB_FPGA_GPIO_A8 | 3.83 in | 862 ps
|
|
set db_gpio_board_max_delay 1.774
|
|
|
|
# The shortest traces on the DB GPIO interface are (assuming 170.0 ps/in).
|
|
# A similar consideration was made as for db_gpio_board_max_delay, but using
|
|
# the shortest traces in each CCA.
|
|
# In this case, edge propagation was not taken into account, as the trace delay
|
|
# can act as the worst-case minimum.
|
|
# Shorted trace | Trace length | Trace delay
|
|
# MB: DB1_GPIO[8] | 2.23 in | 379 ps
|
|
# DB: MB_FPGA_GPIO_B12| 2.57 in | 436 ps
|
|
set db_gpio_board_min_delay 0.815
|
|
|
|
# DB and FPGA both use PLL reference clock from a common clock chip.
|
|
# The common chip that drives these clocks is a LMK04832.
|
|
# There exist two additional clock buffers within the trace taking the clock to
|
|
# the daughterboard CPLD, a ADCLK944 located in the DB, and a MC100EPT23 near
|
|
# the CPLD which takes care of level translation.
|
|
# The largest delay that can exist between clocks exists when the LMK04832
|
|
# presents its max skew between outputs and when all clock buffers present
|
|
# their maximum delay.
|
|
# MC100EPT23 propagation delays will be handled separately in constraints due
|
|
# to their significant impact in timing closure, as well as to enable support
|
|
# for various corner-cases.
|
|
# Board delays were simulated in HyperLynx. Minimum delays considered time
|
|
# between start of edge at the source to the start of edge at destination.
|
|
# Maximum delays considered time between the start of an edge at the source and
|
|
# the settling of the edge at destination. Corner cases were considered for IC
|
|
# modeling.
|
|
#
|
|
# The clock path to the FPGA is composed by a single trace:
|
|
# - Minimum clock propagation delay to FPGA = 815 ps.
|
|
# - Maximum clock propagation delay to FPGA = 1.329 ps.
|
|
#
|
|
# The clock path to the CPLD (w/o MC100EPT23) is comprised by multiple traces:
|
|
# - Path from MB LMK04832 to DB connector
|
|
# - Minimum delay : 1636 ps
|
|
# - Path from DB Connector to DB ADCLK944
|
|
# - Minimum delay : 299 ps
|
|
# - Path from DB ADCLK944 to CPLD:
|
|
# - Minimum delay : 197 ps
|
|
#
|
|
# The clock path to the CPLD (w/ MC100EPT23) is comprised of multiple traces:
|
|
# - Path from MB LMK04832 to DB connector
|
|
# - Minimum delay : 1636 ps
|
|
# - Maximum delay : 1890 ps
|
|
# - Path from DB Connector to DB ADCLK944
|
|
# - Minimum delay : 299 ps
|
|
# - Maximum delay : 397 ps
|
|
# - Path from DB ADCLK944 to MC100EPT23:
|
|
# - Minimum delay : 120 ps
|
|
# - Maximum delay : 411 ps
|
|
# - Path from MC100EPT23 to CPLD:
|
|
# - Minimum delay : 365 ps
|
|
# - Maximum delay : 847 ps
|
|
#
|
|
# The minimum and maximum delays for all traces can be added to account for the
|
|
# total board delay to the CPLD:
|
|
#
|
|
# Max total Board delay = 1890 + 397 + 411 + 847 = 3545 ps
|
|
#
|
|
# Min total Board delay = 1636 + 299 + 197 = 2132 ps
|
|
|
|
# This leaves the worst-case clock arrival values for the different ICs as:
|
|
|
|
# Max total Board delay + (Max LMK Skew) + (Max DB ADCLK Prop)
|
|
# 3.545 + .1 + .130 = 3.775 ns,
|
|
set db_cpld_prc_clock_prop_max 3.775
|
|
|
|
# Min total Board delay - (Max LMK Skew) + (Min DB ADCLK Prop)
|
|
# 2.132 - .1 + .07 = 2.102 ns,
|
|
set db_cpld_prc_clock_prop_min 2.102
|
|
|
|
# Board delay + (Max LMK Skew)
|
|
# 1.329 + .1 = 1.429 ns
|
|
set fpga_prc_clock_prop_max 1.429
|
|
|
|
# Board delay - (Max LMK Skew)
|
|
# .815 - .1 = 0.715 ns
|
|
set fpga_prc_clock_prop_min 0.715
|
|
|
|
# When combining these values, the LMK Skew will be accounted for twice,
|
|
# which will just result in more conservative constraints.
|