aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/top/x400/constraints/timing/shared_constants.sdc
diff options
context:
space:
mode:
authorWade Fife <wade.fife@ettus.com>2021-06-08 19:40:46 -0500
committerAaron Rossetto <aaron.rossetto@ni.com>2021-06-10 11:56:58 -0500
commit6d3765605262016a80f71e36357f749ea35cbe5a (patch)
tree7d62d6622befd4132ac1ee085effa1426f7f53e5 /fpga/usrp3/top/x400/constraints/timing/shared_constants.sdc
parentf706b89e6974e28ce76aadeeb06169becc86acba (diff)
downloaduhd-6d3765605262016a80f71e36357f749ea35cbe5a.tar.gz
uhd-6d3765605262016a80f71e36357f749ea35cbe5a.tar.bz2
uhd-6d3765605262016a80f71e36357f749ea35cbe5a.zip
fpga: x400: Add support for X410 motherboard FPGA
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>
Diffstat (limited to 'fpga/usrp3/top/x400/constraints/timing/shared_constants.sdc')
-rw-r--r--fpga/usrp3/top/x400/constraints/timing/shared_constants.sdc130
1 files changed, 130 insertions, 0 deletions
diff --git a/fpga/usrp3/top/x400/constraints/timing/shared_constants.sdc b/fpga/usrp3/top/x400/constraints/timing/shared_constants.sdc
new file mode 100644
index 000000000..e7d389435
--- /dev/null
+++ b/fpga/usrp3/top/x400/constraints/timing/shared_constants.sdc
@@ -0,0 +1,130 @@
+#
+# 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.