Forum Discussion
Hi,
there are several issues that cause the observed behaviour
1. unused PLL outputs are removed and respectively changing PLL counter assignment
2. PLL counter order isn't preserved without explicite setting
See below the fitter results with different settings. You need to connect all PLL counter outputs and preserve PLL counter order to get the expected counter assignment.
counter_select = 0 will e.g. manipulate 150 MHz PLL output driving Signaltap and give the appearance of reverse phase shift.
Original project settings +--------------+------+-----+------------------+ +---------+ ; Output Clock ; Mult ; Div ; Output Frequency ; ; Counter ; +--------------+------+-----+------------------+ +---------+ ; clock1 ; 1 ; 1 ; 50.0 MHz ; ; C1 ; ; clock3 ; 3 ; 1 ; 150.0 MHz ; ; C0 ; +--------------+------+-----+------------------+ +---------+ Fitter result with all outputs connected, counter order not preserved +--------------+------+-----+------------------+ +---------+ ; Output Clock ; Mult ; Div ; Output Frequency ; ; Counter ; +--------------+------+-----+------------------+ +---------+ ; clock0 ; 1 ; 1 ; 50.0 MHz ; ; C0 ; ; clock1 ; 1 ; 1 ; 50.0 MHz ; ; C2 ; ; clock2 ; 1 ; 1 ; 50.0 MHz ; ; C3 ; ; clock3 ; 3 ; 1 ; 150.0 MHz ; ; C1 ; +--------------+------+-----+------------------+ +---------+ All outputs connected, counter order preserved set_instance_assignment -name PRESERVE_PLL_COUNTER_ORDER ON -to * +--------------+------+-----+------------------+ +---------+ ; Output Clock ; Mult ; Div ; Output Frequency ; ; Counter ; +--------------+------+-----+------------------+ +---------+ ; clock0 ; 1 ; 1 ; 50.0 MHz ; ; C0 ; ; clock1 ; 1 ; 1 ; 50.0 MHz ; ; C1 ; ; clock2 ; 1 ; 1 ; 50.0 MHz ; ; C2 ; ; clock3 ; 3 ; 1 ; 150.0 MHz ; ; C3 ; +--------------+------+-----+------------------+ +---------+
I compiled the design with Quartus 19.1 because I don't have 23.1 installed. Quartus 24.1 std dropped an error with counter_select signal that I didn't understand. Looks like a Quartus 24.1 bug.
Regards
Frank
P.S.: Restoring the archive once more in 24.1 didn't reproduce a compilation error. All above reported PLL counter problems are identical to 19.1.
Hi Frank,
Thank you very much for your prompt answer!
I have tried connecting all three clocks (c0, c1, and c2) to the physical pins, and used c3 as the SignalTap clock. I also ran the TCL command you suggested in the TCL window—thank you for sharing that. Below is the fitter PLL summary:
clock0 1 1 50.0 MHz 0 (0 ps) 3.75 (208 ps) 50/50 C0 clock1 1 1 50.0 MHz 0 (0 ps) 3.75 (208 ps) 50/50 C1 clock2 1 1 50.0 MHz 0 (0 ps) 3.75 (208 ps) 50/50 C2 clock3 4 1 200.0 MHz 0 (0 ps) 15.00 (208 ps) 50/50 C3
As shown, the counters have been correctly assigned to the clocks.
Unfortunately, the behavior still seems unusual. I have attached a SignalTap screenshot where I added the three clocks to visualize the waveforms. As you can see, the c0 clock is phase-shifted relative to c1 and c2, even though the PLL phasecounterselect value I chose is 2 to phase shift c2 instead of c0, as indicated in the screenshot. This observation is in agreement with the oscilloscope measurements of the physical signals.
c0 and c1 are still shifting in opposite directions, even after connecting all clock outputs to the pins and applying the TCL command.
Apologies if I have overlooked something trivial, and thank you in advance for your time and valuable assistance!
Best regards,
Heyang