Forum Discussion
Altera_Forum
Honored Contributor
8 years agoStrange PLL Clock causing me failing paths in cyc V design
Dear all,
TimeQuest is warning me of a failing path in my Altera Cyclone V FPGA design. It says failing path with:Slack______From Node ____________________________________ ____to Node __________Launch Clock ____________________________________________________________________________Latch clock____Relationship __Clock Skew ___Data Delay
-9.115 ____ io_control:io_control_inst1|data_out _______ dq _______ pll_inst_100|pll_100_inst|altera_pll_i|general.gpll~PLL_OUTPUT_COUNTER|divclk ______ clk_100____ 10.000 ____ -10.144______2.901
I wonder what is the problem here and what clock divclk is? The entity io_control flops the data from inside the design and tristating it to dq. dq is an Input / Output Port at the top level design. IO_control has clock input clk_100. clk_100 is routed globally through the design with an ALTCLKCTRL. The clk_100 is feed to external hardware via ALTDDIO which is consuming dq. Here is the code of IO_control: flopping_data_out_proc : process(CLK, RESET)begin
if (RESET = '0') then
data_out <= (others => '0');
elsif (rising_edge(CLK)) then
data_out <= Fin_DATA_ram; -- comes from inside FPGA Design
end if;
end process flopping_data_out_proc;
mux_data_out_proc : process(slrd_en, data_out)
begin
if (slrd_en = '0') then
DATA <= data_out; -- DATA is output of IO Control and wired to DQ
else
DATA <= (others => 'Z');
end if;
end process; Can somebody enlighten me if this is a critical issue? I set all needed timing constraints but wonder if I had to add a multicycle path or set false path between these clocks? It is noticeable that the fitter puts out a warning during fitting: Warning (332049): Ignored create_clock at SDC1.sdc(2): Incorrect assignment for clock. Source node: CLOCK_50_B5B already has a clock(s) assigned to it. Use the -add option to assign multiple clocks to this node. Clock was not created or updated.
Info (332050): create_clock -name CLK1 -period 20.0 This is also the clock which feed the pll (clk_100) as reference clock. Can you help me clarifying this issue? I added the archive file in the attachments. Thank you for any help.13 Replies
- Altera_Forum
Honored Contributor
If you're getting name mismatch errors, use the Name Finder tool from the GUI dialog boxes you can access in the text editor to create SDC commands (Edit menu). The Name Finder lets you search the timing netlist directly, so the names are guaranteed to be correct.
Not sure why pclk port is not working for you since that should be coming directly from your HDL. - Altera_Forum
Honored Contributor
--- Quote Start --- If you're getting name mismatch errors, use the Name Finder tool from the GUI dialog boxes you can access in the text editor to create SDC commands (Edit menu). The Name Finder lets you search the timing netlist directly, so the names are guaranteed to be correct. Not sure why pclk port is not working for you since that should be coming directly from your HDL. --- Quote End --- Ok, with node finder in the TimeQuest gui (used the create_generate_clock button in the Constraints menu) I was finally able to create the correct constraint:
With this the generated clock was correctly created. Withcreate_generated_clock -name {gclk100} -source .gpll~PLL_OUTPUT_COUNTER|divclk}] -master_clock {pll_inst_100|pll_100_inst|altera_pll_i|general.gpll~PLL_OUTPUT_COUNTER|divclk}
it is not. Seems to me quartus is rigorous how the constaints should be defined. Especially with the {} ... One last question and then I will shut up: You mentioned in one of your last posts that I should false path to the output port withcreate_generated_clock -source {get_pins pll_inst_100|pll_100_inst|altera_pll_i|general.gpll~PLL_OUTPUT_COUNTER|divclk} -multiply_by 1 {get_ports pclk} -name gclk100
. What is the reason for this? Thank you so much. Kind regardsset_false_path -to {get_ports <output port name>} - Altera_Forum
Honored Contributor
The output clock path will still show up as an unconstrained output without the false path. The false path prevents any data path analysis since you're not using this as a data path.