SharpWeapon
Member level 5
- Joined
- Mar 18, 2014
- Messages
- 89
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 6
- Activity points
- 705
Phase 1 : 33641 unrouted; REAL time: 36 secs
Phase 2 : 23627 unrouted; REAL time: 42 secs
Phase 3 : 4206 unrouted; REAL time: 1 mins 29 secs
Phase 4 : 4218 unrouted; (Setup:1612, Hold:149225, Component Switching Limit:0) REAL time: 1 mins 47 secs
Updating file: toplevel.ncd with current fully routed design.
Phase 5 : 0 unrouted; (Setup:1612, Hold:147854, Component Switching Limit:0) REAL time: 1 mins 54 secs
Phase 6 : 0 unrouted; (Setup:1612, Hold:147854, Component Switching Limit:0) REAL time: 1 mins 55 secs
Phase 7 : 0 unrouted; (Setup:0, Hold:177889, Component Switching Limit:0) REAL time: 2 mins 20 secs
Phase 8 : 0 unrouted; (Setup:0, Hold:177889, Component Switching Limit:0) REAL time: 2 mins 20 secs
I highly doubt placement is a problem as the design completed routing.I had the same problem once with ultiboard. I exploded the over-crowded areas a bit and auto-routing completed within seconds.
See it has 0 unrouted nets in 1 min 54 seconds.Phase 5 : 0 unrouted; (Setup:1612, Hold:147854, Component Switching Limit:0) REAL time: 1 mins 54 secs
But once it fixes the setup times it ends up with even more hold time violations...This really looks like a design+constraint problem.Phase 6 : 0 unrouted; (Setup:1612, Hold:147854, Component Switching Limit:0) REAL time: 1 mins 55 secs
Phase 7 : 0 unrouted; (Setup:0, Hold:177889, Component Switching Limit:0) REAL time: 2 mins 20 secs
Phase 8 : 0 unrouted; (Setup:0, Hold:177889, Component Switching Limit:0) REAL time: 2 mins 20 secs
It's not going to be a single signal, more likely a whole bunch of them.Hey ads-ee, thanks! Yeah, phase 8 is the last one. I have embedded some external code to my design for some interfacing issues, probably that is causing the problem. How can I trace which signal is causing hold time violation?
Ignore this response as it's not the root of your problem.mrinalmani, thanks for the reply but what exactly did you do?
Your suspicion might be true, I have two asynchronous clock domains, but that is part of the design.
Phase 4 : 4420 unrouted; (Setup:0, Hold:87443, Component Switching Limit:0) REAL time: 3 mins 26 secs
Updating file: ML605_fmc150.ncd with current fully routed design.
Phase 5 : 0 unrouted; (Setup:0, Hold:85977, Component Switching Limit:0) REAL time: 3 mins 41 secs
The highlighted part is where your problem resides.--------------------------------------------------------------------------------
Slack (hold path): -1.313ns (requirement - (clock path skew + uncertainty - data path))
Source: FFT_TopLevel/TopModule1/Top[6].FinalStage.Final/tempdataOutAImg_16 (FF)
Destination: FFT_Output/U0/I_DQ.G_DW[33].U_DQ (FF)
Requirement: 0.000ns
Data Path Delay: 0.457ns (Levels of Logic = 0)
Clock Path Skew: 1.247ns (7.913 - 6.666)
Source Clock: FFT_TopLevel/clk_122_88MHz rising at 0.000ns
Destination Clock: clk_245_76MHz rising at 0.000ns
Clock Uncertainty: 0.523ns
Clock Uncertainty: 0.523ns ((TSJ^2 + DJ^2)^1/2) / 2 + PE
Total System Jitter (TSJ): 0.070ns
Discrete Jitter (DJ): 0.225ns
Phase Error (PE): 0.404ns
Minimum Data Path at Slow Process Corner: FFT_TopLevel/TopModule1/Top[6].FinalStage.Final/tempdataOutAImg_16 to FFT_Output/U0/I_DQ.G_DW[33].U_DQ
Location Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- -------------------
SLICE_X70Y127.AQ Tcko 0.270 freqDomainDataAImg<17>
FFT_TopLevel/TopModule1/Top[6].FinalStage.Final/tempdataOutAImg_16
SLICE_X66Y123.BX net (fanout=1) 0.326 freqDomainDataAImg<15>
SLICE_X66Y123.CLK Tckdi (-Th) 0.139 FFT_Output/U0/iDATA<35>
FFT_Output/U0/I_DQ.G_DW[33].U_DQ
------------------------------------------------- ---------------------------
Total 0.457ns (0.131ns logic, 0.326ns route)
(28.7% logic, 71.3% route)
which isn't a good idea as this means the clock isn't using the dedicated routing from the package pin to the clock buffers/MMCM/PLLs. According to the document for the ML605 the pin pair is K26(FMC_LPC_LA00_CC_P)/K27(FMC_LPC_LA00_CC_N) correct?:NET "CLK_AB_P" CLOCK_DEDICATED_ROUTE = FALSE;
NET "CLK_AB_N" LOC="K27";
NET "CLK_AB_P" LOC="K26";
Correct! I had two MMCMs, I just thought both will be synchronous(infact they were, both in simulation and in post synthesis). Now I have one MMCM and passed the CLK to all modules only from this MMCM. Now PAR takes a very short time with all time constrains met. Yaay!The amount of skew between the two clocks suggest they may not both be generated from the same MMCM?
What is the best way to do it then?a classic example of why you never want to generate a clock using the core logic
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?