slack 时钟_在接口时序约束中为什么设置虚拟时钟(virtual clock)?

虚拟时钟是无源时钟,常用于设置input/output delay的参考。在时序分析中,直接使用实际时钟进行约束可能导致clock latency问题。通过定义虚拟时钟并指定延迟,可以更准确地约束数据路径,避免时序违例。在案例分析中,对比了使用真实时钟和虚拟时钟进行时序约束的不同效果。
摘要由CSDN通过智能技术生成

48934f897896f8a1b9637db0f088c277.png

根据定义,虚拟时钟是没有时钟源的时钟,也就是说虚拟时钟是被定义的,但未与任何引脚(pin)/端口(port)关联的时钟。

虚拟时钟用作设置input delay/output delay的参考(reference)。

如何定义虚拟时钟,其sdc命令如下:

create_clock–name VCLK –period 10

上面的SDC命令定义周期为10 ns的虚拟时钟“ VCLK”。

定义虚拟时钟的目的,用于指定虚拟时钟的latency 和接口时序。下图是一种定义虚拟时钟的方案。

c6eb0546d23ec72401a8cf14ee1a9bae.png

Reg-A是内部触发器,通过PORT发送数据。由于它是一个同步信号,因此我们可以假定它被位于模块外部的触发器(Reg-B)采样。

在该模块内,可以通过使用与clock_in同步的时钟为端口PORT指定output delay来约束reg2output路径。

但是,如果我们参考clock_in本身指定output delay,就无法指定到达触发器(Reg-B)的clock latency。因为如果我们指定clock_in的延迟,则它也对Reg-A起作用。

在时钟树综合之后,会导致output port约束变得更悲观。同理,会导致input port约束变得更乐观。

1be7cebe508cb87a0ebb6e35e1f86573.png
module delay ( clk, data_in, data_out );
  inputclk, data_in;
 output data_out;
 wire   n1,n2;

 DFFQXL data_out_reg ( .D(n1), .CK(clk), .Q(n2) );
 CLKINVX1 U1 ( .A(data_in), .Y(n1) );
 CLKINVX1 U2 ( .A(n2), .Y(data_out) );

endmodule
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值