|
10资产
本帖最后由 fanny_haiyun 于 2014-8-7 14:24 编辑
在做工程的时候发现自己写的Design无法满足时序要求,但是没什么经验,不知该针对时序报告如何处理,或者说如何修改我的设计,希望各位给予帮助,欢迎讨论~~~
(1)时序约束:
NET “RX_CLK” TNM_NET = RX_CLK;
TIMESPEC TS_RX_CLK = PERIOD "RX_CLK" 8ns HIGH 50%;
INST "RXD<*>" TNM = RXD_IN;
INST "RX_DV" TNM = RXD_IN;
TIMEGRP "RXD_IN" OFFSET = IN 2.5ns BEFORE "RX_CLK" RISING;
注:这里面的时钟周期和OFFSET约束值都是根据数据手册来确定的
(2)OFFSET IN约束不满足! 约束报告如下:
================================================================================
Timing constraint: TIMEGRP "RXD_IN" OFFSET = IN 2.5 ns BEFORE COMP "RX_CLK" "RISING";
For more information, see Offset In Analysis in the Timing Closure User Guide (UG612).
20 paths analyzed, 20 endpoints analyzed, 13 failing endpoints
13 timing errors detected. (13 setup errors, 0 hold errors)
Minimum allowable offset is 2.829ns.
--------------------------------------------------------------------------------
Paths for end point IF_transfer_RX/IDDR_inst0 (ILOGIC_X0Y187.DDLY), 1 path
--------------------------------------------------------------------------------
Slack (setup path): -0.329ns (requirement - (data path - clock path - clock arrival + uncertainty))
Source: RX_DV (PAD)
Destination: IF_transfer_RX/IDDR_inst0 (FF)
Destination Clock: RX_CLK_IBUFG rising at 0.000ns
Requirement: 2.500ns
Data Path Delay: 5.028ns (Levels of Logic = 1)
Clock Path Delay: 2.224ns (Levels of Logic = 2)
Clock Uncertainty: 0.025ns
Clock Uncertainty: 0.025ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
Total System Jitter (TSJ): 0.050ns
Total Input Jitter (TIJ): 0.000ns
Discrete Jitter (DJ): 0.000ns
Phase Error (PE): 0.000ns
Maximum Data Path: RX_DV to IF_transfer_RX/IDDR_inst0
Location Delay type Delay(ns) Physical Resource
Logical Resource(s)
----------------------------------------------------- -------------------
E32.I Tiopi 0.830 RX_DV
RX_DV
RX_DV_IBUF
ILOGIC_X0Y187.DDLY net (fanout=7) 3.874 RX_DV_IBUF
ILOGIC_X0Y187.CLK Tidockd 0.324 RGMII_CRS
IF_transfer_RX/IDDR_inst0
----------------------------------------------------- ---------------------------
Total 5.028ns (1.154ns logic, 3.874ns route)
(23.0% logic, 77.0% route)
Minimum Clock Path: RX_CLK to IF_transfer_RX/IDDR_inst0
Location Delay type Delay(ns) Physical Resource
Logical Resource(s)
----------------------------------------------------- -------------------
H17.I Tiopi 0.717 RX_CLK
RX_CLK
RX_CLK_IBUFG
BUFGCTRL_X0Y18.I0 net (fanout=3) 1.092 RX_CLK_IBUFG1
BUFGCTRL_X0Y18.O Tbgcko_O 0.194 RX_CLK_IBUFG_BUFG
RX_CLK_IBUFG_BUFG
ILOGIC_X0Y187.CLK net (fanout=10) 0.221 RX_CLK_IBUFG
----------------------------------------------------- ---------------------------
Total 2.224ns (0.911ns logic, 1.313ns route)
(41.0% logic, 59.0% route)
(3)我自己的理解:
我认为主要不满足的原因是标红处,隶属于RX_DV to IF_transfer_RX/IDDR_inst0这条路径。在设计中,RX_DV Input信号除了输入到一些FF中,还会输入到一个IDDR中,以分别获取上升沿和下降沿的数据。可能就是这个操作造成布局布线延迟较大,但是为何延时较大及应该如何处理我就不知道了。
开始我以为是和fanout有关,于是在综合器中将MAX_FANOUT设置小些,这样设置的确会使FANOUT值变小一些,但是延迟并不会变化。
(4)问题:导致我的设计不满足时序约束的主要原因是什么呢?我应该如何处理? |
最佳答案
查看完整内容
设计满足不了时序要求的原因那肯定是布线的问题, 实际上你的slack只有0.4不到, 2.1ns的setup时间实际应该够了, 当然如果手册上要求2.5那就按照2.5来。IDDR_inst0那个目标寄存器既然是上下沿都锁存,那就应该把目标寄存器的下沿锁存的时序限制也加入进来。如果还是时序上过不了,还要把IDDR_inst0目标寄存器综合限定到靠近引脚的寄存器中,或者直接指定IDDR_inst0在IOB中实现。ddr接口时序限定不是这两句就可以搞定的,你查一下, ...
|