时序约束的问题
我的系统中,输入时钟为ddr_ck/ddr_ckn,经过dcm产生270度的相移,输出为clk1X。clk1X作为整个系统的工作时钟。要求ddr_ck/ddr_ckn在400~667MHz之间。
在不做时序约束的条件下,系统的最高工作频率为365.658MHz,不满足要求。下面是综合报告的相关结果:
=========================================================================
Timing constraint: Default period analysis for Clock 'ddr_ck'
Clock period: 2.735ns (frequency: 365.658MHz)
Total number of paths / destination ports: 8426 / 1193
-------------------------------------------------------------------------
Delay: 2.735ns (Levels of Logic = 3)
Source: ddr_ana/phy_addr_19 (FF)
Destination: ddr_ana/dout_31 (FF)
Source Clock: ddr_ck rising +270
Destination Clock: ddr_ck rising +270
Data Path: ddr_ana/phy_addr_19 to ddr_ana/dout_31
Gate Net
Cell:in->out fanout Delay DelayLogical Name (Net Name)
----------------------------------------------------
FDC:C->Q 2 0.317 0.701ddr_ana/phy_addr_19 (ddr_ana/phy_addr_19)
LUT6:I0->O 1 0.061 0.512ddr_ana/_n0091_inv4 (ddr_ana/_n0091_inv4)
LUT4:I1->O 1 0.061 0.357ddr_ana/_n0091_inv5 (ddr_ana/_n0091_inv5)
LUT5:I4->O 29 0.061 0.468ddr_ana/_n0091_inv7 (ddr_ana/_n0091_inv)
FDE:CE 0.196 ddr_ana/dout_0
----------------------------------------
Total 2.735ns (0.696ns logic, 2.039ns route)
(25.4% logic, 74.6% route)
=========================================================================
可以看到74.6%都是由于布线造成的
因此我就希望通过时序约束,来提高系统工作频率。
但是不知道该怎么加时序约束?我想约束的是clk1X,可是工具默认的时钟是ddr_ck。
请高手指教^_^ 1# cuizehan
加入如下约束后:
NET "ddr_ck" TNM_NET = ddr_ck;
TIMESPEC TS_ddr_ck = PERIOD "ddr_ck" 1.5 ns HIGH 50%;
NET "ddr_ckn" TNM_NET = ddr_ckn;
TIMESPEC TS_ddr_ckn = PERIOD "ddr_ckn" 1.5 ns LOW 50%;
静态时序分析给出的报告显示,最高频率为424.809MHz,关键路径的延时为2.354ns,比综合报告给出的延时稍小,但布线延时仍然占70%以上。
关键路径实现的逻辑如下,
always@(posedge clk1X or posedge reset ) begin
if(reset) begin
phy_addr <= 0;
rw <= 0;
end
else begin
phy_addr <= (phy_addr_cs0 | phy_addr_cs1);
rw <= rw_cs0 | rw_cs1;
if(phy_addr != 0 )
dout <= { 1'b0, cs_d8, cmd_d8, rw, phy_addr};
end
end
不知道该怎么优化? 把数据再打一拍看看,
如果扇出大,手动或自动复制逻辑减小扇出 高手高手
页:
[1]