Altera_Forum
Honored Contributor
12 years agoSteps to constrain a design
Hello,
I'm trying to understand timing constraints and I have a really hard time trying to figure out how this works. The first thing is the representation of setup and hold times. In my examples I want to transfer data from one register to another register where both registers are clocked by a different clock where one clock frequency is an integer multiple of the other clock frequency. I assume the clock delay to be zero so that the drawings don't get too confusing. https://www.alteraforum.com/forum/attachment.php?attachmentid=8016 Right now I would start with drawing the clocks (these are just some arbitrary clock signals chosen for this example): https://www.alteraforum.com/forum/attachment.php?attachmentid=8017 In this example the destination clock runs at a clock frequency three times lower than the source clock frequency. The setup and hold times are from Equation 7–6 and Equation 7-3 from http://www.altera.com/literature/hb/qts/qts_qii53018.pdf setup check = current latch edge - closest previous launch edge hold check 1 = current launch edge - previous latch edge hold check 2 = next launch edge - current latch edge Now if the data is only updated every third clock of the launch clock I guess I would need the timing diagram to be like this: https://www.alteraforum.com/forum/attachment.php?attachmentid=8018 So I would need a start multicycle setup time of 3 and a start multicycles hold time of 2. Is this correct? If that's so why does the start multicycles hold time only affect the hold check 2 but not the hold check 1? How do I have to interpret the two hold check times? The setup time does make sense to me if I consider this as the time the data has to travel from register 1 to register 2. The hold check times are hard to grasp for me. I guess if the hold check time is positive I don't have to worry that the signal changes before the data was latched? But what about negative hold check times? How can I tell TimeQuest at which edges the transfer should take place? For example if I want to have an transfer from the rising edge of the launch clock to the falling edge of the latch clock: The default timing diagram would look like this: https://www.alteraforum.com/forum/attachment.php?attachmentid=8014 And what I guess what I want in this example would be this: https://www.alteraforum.com/forum/attachment.php?attachmentid=8015 This is a follow up to the previous question: As I understand it TimeQuest only analyzes rising edge to rising edge transfers per default. When are other edge transfers taken into account (re -> fe, fe -> fe, fe -> re)? Best regards Martin