首页/文章/ 详情

关于Virtual clock

11月前浏览484

什么是virtual clock

指的是没有定义source(时钟源)的时钟。通常用于对interface timing的约束,相关的sdc命令为set_input_delay set_output_delay。(相对应,定义了source(时钟源)的时钟,就是real clock)

示例:

    create_clock -name VCLK -period 10


    为什么要用virtual clock

    简单的说,设置virtual clock的好处就是可以在不影响real clock的情况下,指定clock的clock network delay。

    我们知道,clock latency包括了clock source latency和clock network delay。当BLOCK中没有做clock tree 的时候,clock network delay 等于0, 这时候,RegA到PORT这个path来说,用virtual clock还是用real clock, 效果都是一样的。

    但是,当BLOCK到了CTS阶段后,因为有BLOCK内部有clock network delay的存在,而RegB仅仅是个虚拟的寄存器,他的clock tree是不存在的,因此,clock network delay也就是0,这就会导致 RegA 到 PORT的timing path变得过于严格(与之相反,input 到 内部寄存器的path的setup check就会过于乐观)。那么我们可以对RegB设source latency。然而不幸的是,如果用的是real clock, 那么必然会导致RegA的clock的source latency也相应的改变。这时候就体现出了virtual clock的好处。

    示例:用virtual clock对PORT加约束

      set_output_delay -clock [get_clocks VCLK] -max 1 [get_port PORT] -add


      假设我们对于RegB 是用的virtual clock(如示例),在CTS之后,就可以对VCLK加上latency:set_clock_latency -clock VCLK $clock_network_delay。

      而对于real clock,在CTS之后,都要由ideal clock设为propgated     clock(set_propagated_clock), 这样,对于real clck,是不能够用set_clock_latency设置clock network delay的。

      当然,用real clock也是有办法解决这个问题的,那就是修改input delay或者output delay。对于Figure1, 可以将output delay 减少 clock network delay一样的数值。

      由于现在的PR工具都会在CTS之后自动进行update io latency的动作,我们完全没有非要用一个real clock,然后自己去在CTS之后去修正port的input delay或者output delay。

      以上就是我们需要用virtual clock的目的。

      来源:白话IC
      理论科普
      著作权归作者所有,欢迎分享,未经许可,不得转载
      首次发布时间:2023-09-07
      最近编辑:11月前
      白山头
      签名征集中
      获赞 10粉丝 3文章 175课程 0
      点赞
      收藏
      未登录
      还没有评论
      课程
      培训
      服务
      行家
      VIP会员 学习 福利任务 兑换礼品
      下载APP
      联系我们
      帮助与反馈