微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 请教DC综合对输出时序约束问题

请教DC综合对输出时序约束问题

时间:10-02 整理:3721RD 点击:

在RTL设计中,同一个PAD,有两条路径输出,一路为时钟上升沿驱动,一路为反向后的时钟上升沿驱动(即时钟下降沿)

RTL代码示意如下:
module sample ( input rst_n , input clk , input sel, input a , output b);
reg b_rise,b_fall ;
wire clk_inv ;
always @(posedge clk or negedge rst_n)
if(!rst_n) b_rise <= 0 ;
elseb_rise <= a ;

assign clk_inv = ~clk ;
always @(posedge clk_inv or negedge rst_n)
if(!rst_n) b_fall <= 0 ;
elseb_fall <= ~a ;
assign b = sel ? b_rise : b_fall
endmodule
综合时约束
create_clock -name clk -period 10 [find pin "clk"]
set_output_delay -max 8 -rise -clock clk [find pin [list b]]
set_output_delay -max 3 -fall -clock clk -add_delay [find pin [list b]]
希望对两条路径都进行约束,但实际在检查时发现从b_fall出来的路径也被认作了rise,并报不满足。
请教有何对策!

试试
set_output_delay -max 3 -fall -clock clk -clock_fall -add_delay [find pin [list b]]

谢谢小编回复!
问题还没有解决!
在DC中报report_timing -to [find pin [list b]]时,出现
pointIncrPath
--------------------------------------------------------------------------
clock clk' (rise edge)5.0005.000
clock network delay (ideal)0.6005.600
U_sample/b_fall_reg/CK0.0005.600r
U_sample/b_fall_reg/Q0.402 *6.002r
U_sample/U2/O (MUX2)0.308 *6.310r
U_PAD_b/ (ZMA2GSD)2.491 *8.801r
b(output)0.0008.801r
data arrival time8.801
clock clk (rise edge )10.00010.000
clock network delay (ideal)0.60010.600
clock uncertainty-0.30010.300
output external delay-8.0002.300
data required time2.300
--------------------------------------------------------------------------
data required time2.300
data arrival time-8.801
--------------------------------------------------------------------------
slack (VIOLATED)-6.501
问题在于为什么b_fall寄存器被认成了rise,按我的理解是时钟下降沿!
我试过了,小编提出的 -clock_fall参数是用来指明在计算“data required time”时,用下降沿计算时间,
不是我期望的!
不过,还是非常感谢!

clk'就是clk的反相了
在clk的inv上,定义一个generated_clock,
set_output_delay -max 3 -fall -clock clk_inv -add_delay [find pin [list b]]
可能还要set_false_path -from clk -to clk_inv, set_false_path -from clk_inv -to clk

set_max_delay 8 -to [find pin [list b]]

多谢 dahai !刚试过了,用report_timing命令报告了一下,对两个时钟的寄存器输出到PAD都能够约束!

理解了一下小编的意思,应该是可行的,但是因为实际项目中有多出这样的时钟反向,设置起来比较复杂。刚按照小编前面提出的相同的思路试了一下,具体如下:
set_output_delay -max 3 -rise -clock clk [find pin [list b]]
set_output_delay -max 3 -fall -clock clk -clock_fall -add_delay [find pin [list b]]
也可以对两条路径都设置上。

因为:
set_output_delay -max 3 -rise -clock clk [find pin [list b]]
命令主要约束b_fall到 b 端口的上升沿输出,对b_rise约束较宽松。

set_output_delay -max 3 -fall -clock clk -clock_fall -add_delay [find pin [list b]]
命令主要约束b_rise到 b 端口的下降沿输出,对b_fall约束较宽松。

以前我也遇到过同样的问题
对IO的设置比较难掌控

学习了一下!

第二条路径,也就是b_fall路径,在做capture clock edge时,报告给的是用上升沿,但是应该用clk的下降沿做capture edge 可能更为合理。

赚点钱好下载

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top