element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Blog MiniZed DDR Delay Values in Vivado Block Design
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: bhfletcher
  • Date Created: 29 Mar 2018 9:43 PM Date Created
  • Views 1636 views
  • Likes 6 likes
  • Comments 0 comments
  • ddr3
  • zynq
  • xilinx
  • vivado
  • avnet minized
  • zynq-7000
  • minized
Related
Recommended

MiniZed DDR Delay Values in Vivado Block Design

bhfletcher
bhfletcher
29 Mar 2018

Question: How did Avnet arrive at the DDR Delay values published in the MiniZed board definition file?

 

That's a good question! We developed the MiniZed board definition file with Vivado 2016.4. The settings you will find in the Avnet MiniZed board definition/awareness preset.xml are:

Fullscreen 7127.contentimage_95034.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
image

Calculating these requires you to know the routing length in millimeters for the DDR clocks, DQS, and DQ traces. For MiniZed, we publish this in the net length report. You need clock and strobe for each 8 bits of data. Since MiniZed uses a single, 16-bit Micron DDR3L chip, a single clock is used for both byte groups, and there are no 3rd or 4th byte groups (since we don’t have 32-bit data).

 

Here’s a look at how we did this in Vivado 2016.4. First, we created a Vivado project targeting the Zynq 7007S in the CLG225 package. We created a new block design with Zynq PS7 IP, and then we customized the Zynq PS7. In the customization menu, you can change the Training/Board Details from User Input to Calculated:

Fullscreen 4426.contentimage_95036.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
image

Here are the relevant lines from the MiniZed trace length report.

 

Byte Group 0

  • D3L_CK_N, Signal Layers Only, 27.1095mm
  • D3L_CK_P, Signal Layers Only, 26.2719mm
  • D3L_LDQS_N, Signal Layers Only, 19.9906mm
  • D3L_LDQS_P, Signal Layers Only, 20.5343mm
  • D3L_DQ0, Signal Layers Only, 24.338mm
  • D3L_DQ1, Signal Layers Only, 20.3481mm
  • D3L_DQ2, Signal Layers Only, 19.0871mm
  • D3L_DQ3, Signal Layers Only, 23.6634mm
  • D3L_DQ4, Signal Layers Only, 17.4953mm
  • D3L_DQ5, Signal Layers Only, 18.4476mm
  • D3L_DQ6, Signal Layers Only, 19.8552mm
  • D3L_DQ7, Signal Layers Only, 17.694mm

 

Byte Group 1

  • D3L_CK_N, Signal Layers Only, 27.1095mm
  • D3L_CK_P, Signal Layers Only, 26.2719mm
  • D3L_UDQS_N, Signal Layers Only, 24.2622mm
  • D3L_UDQS_P, Signal Layers Only, 23.7328mm
  • D3L_DQ8, Signal Layers Only, 24.0816mm
  • D3L_DQ9, Signal Layers Only, 21.8845mm
  • D3L_DQ10, Signal Layers Only, 24.3411mm
  • D3L_DQ11, Signal Layers Only, 23.2585mm
  • D3L_DQ12, Signal Layers Only, 25.6319mm
  • D3L_DQ13, Signal Layers Only, 24.4435mm
  • D3L_DQ14, Signal Layers Only, 24.3381mm
  • D3L_DQ15, Signal Layers Only, 27.0672mm

 

Average the P and N of the differential signals. Average the maximum and minimums within the DQ byte groups. Then you get:

 

  • CLK0 = (D3L_CK_P + D3L_CK_N)/2 = (27.1095+26.271)/2 = 26.6907mm
  • DQS0 = (D3L_LDQS_N + D3L_LDQS_P)/2 = (19.9906+20.5343)/2 = 20.26245mm
  • DQ[7:0] = (DQ0 + DQ4)/2 = (24.338+17.4953)/2 = 20.91665mm

 

  • CLK1 = (D3L_CK_P + D3L_CK_N)/2 = (27.1095+26.271)/2 = 26.6907mm
  • DQS1 = (D3L_UDQS_N + D3L_UDQS_P)/2 = (24.2622+23.7328)/2 = 23.9975mm
  • DQ[15:8] = (DQ15 + DQ9)/2 = (27.0672+21.8845)/2 = 24.47585mm

 

However, since the 7007S CLG225 was still early release in 2016.4, Xilinx did not have the correct package delay values.

Fullscreen 5086.contentimage_95038.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
image

We recognized the package delay inaccuracy. Instead of correcting the package delays in this calculation table, we created our own spreadsheet which compensated for the routing lengths and package delays. This allowed us to calculate an equivalent millimeter length for the entire path. See below what actually got entered during the original MiniZed board definition calculations for the DDR tuning parameters. Note that the entries for CLK2, CLK3, DQS2, DQS3, DQ[23:16], and DQ[31:24] are all irrelevant since they don’t exist on this board. We added in some whole numbers to make sure we didn’t encounter negative values in the calculations for DQS to CLK and DQ Board Delay for the non-existent Byte Groups 2 and 3. You will see that the values for Byte Groups 0 and 1 match the board definition:

Fullscreen 2843.contentimage_95040.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
image

We recently reviewed these parameters in 2017.4. Notice that the default calculation table does have the correct package values for the 7007S CLG225.

Fullscreen 6457.contentimage_95042.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
image

This allows us to use the PCB trace length values without calculating the total path delay manually. (Again, ignore all values relative to Byte Groups 2 and 3).

Fullscreen 2656.contentimage_95044.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
image

This leads to the following inputs in the 2017.4 version of the board definition file (negative values replaced with 0):

 

<user_parameter name="CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY0" value="0.232"/>

        <user_parameter name="CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY1" value="0.231"/>

        <user_parameter name="CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY2" value="0.318"/>

        <user_parameter name="CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY3" value="0.433"/>

        <user_parameter name="CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_0" value="0.045"/>

        <user_parameter name="CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_1" value="0.046"/>

        <user_parameter name="CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_2" value="0.000"/>

        <user_parameter name="CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_3" value="0.000"/>

 

Comparing the relevant 2016.4 calculations (manually included package delays) vs. the 2017.4 calculations (auto-included package delays) for Byte Groups 0 and 1, we see the following differences:

Fullscreen 3326.contentimage_95046.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
image

You will notice that all of these differences are very small. Furthermore, the Zynq DDR3 controller’s capability to auto-tune means that you will get the same result in a memory performance test regardless of whether you enter the 2016.4 or 2017.4 values. Not too bad for early tool support and manually including package delays!

 

If you’re interested in more detail, check out Appendix A in Lab 2 of Avnet’s Developing Zynq Hardware (Vivado 2017.1) Speedway where all of this is explained.

Training and Videos | MiniZed

 

Purchase the MiniZed here: Buy NowBuy Now

  • Sign in to reply
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube