wakaka
Full Member level 4
timing loop detected
Hi all.
I've run a synthesis using design compiler. In the log file, it says that timing loop is detected. After i do a report_timing -loop, it shows that there are 4 timing loops.
I thought that after compile, DC will automatically located the timing loops and by disabling timing arc between pins 'CK' and 'Q', it will actually break the timing loops.
this is one of the timing loop from the report.
when i read the rtl code of the div_core.v, i found that there is a mux to choose the dsp_clk
What should i do to overcome it?
Hi all.
I've run a synthesis using design compiler. In the log file, it says that timing loop is detected. After i do a report_timing -loop, it shows that there are 4 timing loops.
I thought that after compile, DC will automatically located the timing loops and by disabling timing arc between pins 'CK' and 'Q', it will actually break the timing loops.
this is one of the timing loop from the report.
Code:
Startpoint: Ocore_0/div_core_0/U8/Y (internal pin)
Endpoint: Ocore_0/div_core_0/U8/Y (internal pin)
Path Group: (none)
Path Type: max
Point Fanout Cap Trans Incr Path
----------------------------------------------------------------------------------------------
Ocore_0/div_core_0/U8/Y (MX2X4) 1.60 0.00 # 0.00 r
Ocore_0/div_core_0/dsp_clk (net) 8871 1001.00 0.00 0.00 r
Ocore_0/div_core_0/dsp_clk (div_core) 0.00 # 0.00 r
Ocore_0/CLKDIV_O_DSP_CLK (net) 1001.00 0.00 0.00 r
Ocore_0/ahb_top_0/HCLK (ahb_top) 0.00 # 0.00 r
Ocore_0/ahb_top_0/HCLK (net) 1001.00 0.00 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/CLK (ahb_apb) 0.00 # 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/CLK (net) 1001.00 0.00 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/PCLK (apb_top) 0.00 # 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/PCLK (net) 1001.00 0.00 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/hclk (div_top) 0.00 # 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/hclk (net) 1001.00 0.00 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/div_regs_0/clk (div_regs) 0.00 # 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/div_regs_0/clk (net) 1001.00 0.00 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/div_regs_0/clks_sel_reg_0_/CK (DFFRHQX4) 1.60 0.00 # 0.00 r
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/div_regs_0/clks_sel_reg_0_/Q (DFFRHQX4) 0.00 0.37 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/div_regs_0/clks_sel[0] (net) 4 0.02 0.00 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/div_regs_0/clks_sel[0] (div_regs) 0.00 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/CLKDIV_PARAM[23] (net) 0.02 0.00 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/clkdiv_top_0/CLKDIV_PARAM[23] (div_top) 0.00 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/CLKDIV_PARAM[23] (net) 0.02 0.00 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/apb_top_0/CLKDIV_PARAM[23] (apb_top) 0.00 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/CLKDIV_PARAM[23] (net) 0.02 0.00 0.37 f
Ocore_0/ahb_top_0/ahb_apb_0/CLKDIV_PARAM[23] (ahb_apb) 0.00 0.37 f
Ocore_0/ahb_top_0/CLKDIV_PARAM[23] (net) 0.02 0.00 0.37 f
Ocore_0/ahb_top_0/CLKDIV_PARAM[23] (ahb_top) 0.00 0.37 f
Ocore_0/CLKDIV_PARAM[23] (net) 0.02 0.00 0.37 f
Ocore_0/div_core_0/CLKDIV_PARAM[23] (div_core) 0.00 0.37 f
Ocore_0/div_core_0/CLKDIV_PARAM[23] (net) 0.02 0.00 0.37 f
Ocore_0/div_core_0/U4/S0 (MX2X1) 0.00 0.00 0.37 f
Ocore_0/div_core_0/U4/Y (MX2X1) 0.16 0.24 0.61 r
Ocore_0/div_core_0/n3 (net) 1 0.01 0.00 0.61 r
Ocore_0/div_core_0/U8/A (MX2X4) 0.16 0.00 0.61 r
Ocore_0/div_core_0/U8/Y (MX2X4) 1.60 1642.04 # 1642.65 r
Ocore_0/div_core_0/dsp_clk (net) 8871 1001.00 0.00 1642.65 r
data arrival time 1642.65
----------------------------------------------------------------------------------------------
Code:
wire mux_dsp_clk = (mux_dsp_clk_sel==2'h0)? crystal_clk : (mux_dsp_clk_sel==2'h1)? rtc_clk: pll_clk;
dsp_clk = mux_dsp_clk;
What should i do to overcome it?