Altera_Forum
Honored Contributor
13 years agoSync and async clocks, fitter, ...
Hello everyone!
At first I'd like to mention that I'm pretty new to programmable logic so I don't know a lot of stuff that's probably obvious for PROs. 1) So, for example, I'm using two clocks in my design. They can be synchronous or asynchronous (if I understand correctly what is meant with that): *) sync case would be: f1 |--------|________|--------|________| f2 |--|__|--|__|--|__|--|__|--|__|--|__ *) async case would/could be smth like this: f1 |--------|________|--------|________| f2 _|--|__|--|__|--|__|--|__|--|__|--|__ meaning the clock edges doesn't match at any point. If I know they are asynchronous then, when I constrain both clocks, I set them as async clocks with set_clock_groups command. So the question is, how the Fitter can work out any timing requirements from that? I mean, the phase shift is unknown. 2) Same situation - using two clocks. First one directly from external oscillator, second one from PLL, which source clock is the same external oscillator. I don't know much about PLL's, but I have observed that the PLL's output clocks aren't sync with input clock (or at least might not be). So, am I right about that? And if yes, then is that phase shift random? Meaning, every time I restart the device, the phase shift can be different? I'm asking this because I used two such clocks and had them constrained as asynchronous. After a full compilation there were no errors and TQ reported no timing violations. At first the design was working properly (on device), but later after adding more stuff to design it sort of 'broke down', meaning it didn't work properly, although still had no errors or violations reported. Then I just added a few more lines, recompiled, programmed and it worked again. And so a few more times. This started me thinking about what could possibly be wrong, and then I started thinking about async clocks and Fitter. As I mentioned above I'm just a beginner, so any help/advice will be appreciated. Thanks in advance,