Forum Discussion

china_cn's avatar
china_cn
Icon for New Contributor rankNew Contributor
3 years ago
Solved

How to constrain the GPIO IP core of a Stratix 10 device

I'm using the Stratix 10 for DDR data acquisition. This part of the function is migrated from CycloneV, and the correctness of data acquisition is verified in cycloneV. But when I used Stratix 10's GPIO ip check ATLDDIO_IN ip core for replacement, there was a timing violation during the compilation of the project. The main problems occur in the following two areas:

1. The setup timing violation in the pin to DDIO. The reason this part appears is that since Quartus sets the input delay chain to a maximum of 63. Therefore, there is a negative margin in the setup slack, but there is a large positive margin in the hold slack. After I manually set the input delay chain to a smaller value, the pin-to-DDIO setup timing violation disappeared.

2. The setup timing violation of full-rate DDIO to the core register. When I checked the data path, I found that the full-rate DDIO output was driven by the falling edge of the clock, but the core registers are driven using the rising edge of the clock, so the relationship of the clock became smaller, resulting in a settling time violation. Instead of using any PLL to phase shift the clock, I used the same clock to drive the DDIO registers and core registers.

For question 2, how should I constrain the clock to accommodate the timing between the full-rate DDIO driven by the falling edge and the core registers driven by the rising edge.

Thank you very much for your answer.

  • Thanks for sharing. Seems like the inverter is needed so that the output data can be captured on clock falling edge in order to form full cycle latch for larger setup requirement.

3 Replies

    • china_cn's avatar
      china_cn
      Icon for New Contributor rankNew Contributor

      Thank you very much for your reply.

      In fact, there is no violation of DDIO's timing. The main thing is that the path from DDIO to the core register has a timing violation.

      But I saw a solution in the AN911, which is that the core registers are also latch with the falling edge of the clock. This helped my design a lot and I've successfully solved the issue.

      Thanks again for your reply.

      • ShengN_altera's avatar
        ShengN_altera
        Icon for Super Contributor rankSuper Contributor

        Thanks for sharing. Seems like the inverter is needed so that the output data can be captured on clock falling edge in order to form full cycle latch for larger setup requirement.