0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何创建虚拟时钟

全栈芯片工程师 来源: 全栈芯片工程师 2024-10-23 09:40 次阅读

通常RTL设计要求对芯片/module的输入信号进行reg_in打拍处理,对芯片/module的输出也要求做reg_out打拍处理,这是良好的代码习惯,为时序收敛留下足够裕量,也避免顶层例化综合后的子模块时出现模块间IO时序不满足的情况。综合阶段可根据设计、工艺需求,设置IO的input/output为时钟周期的40%-60%。

但是,芯片timing sign off阶段会偶尔遇到IO时序少量违例,比如,输入reg的hold违例、输出reg的setup违例,本质原因是EDA时序分析工具会在输出输入外部假定一个理想化的不带clock propagation time的寄存器做时序分析。

072ecff2-9090-11ef-a511-92fbcf53809c.png

比如,在set_propagated_clock命令后,下图左边寄存器的CLK2端就不带clock propagation time,而CLK1(与CLK2同频同相)就带insertion delay, 拥有时钟latency,这样输入IO的hold违例就可能发生,setup反而更容易满足。

07482b78-9090-11ef-a511-92fbcf53809c.png

同理,在set_propagated_clock命令后,输出IO的setup违例就可能发生,hold反而更容易满足。

以输出IO的register的setup建立时间为例,launch clock的data path上由于存在1.5ns的propagation time/clock latency,发生了时序违例。这是因为外部假定的register是没有propagation time/clock latency。而保持时间则反而容易满足。

075fc80a-9090-11ef-a511-92fbcf53809c.png

虚拟时钟应运而生,那么如何创建虚拟时钟?其有什么好处呢?

create_clock -name vclk -period 10

注意,创建虚拟时钟不用指定clk pin/port。

set_input_delay8-clockvclk[get_portsdata_in ]
set_output_delay8-clockvclk[get_portsdata_out]
EDA工具会基于虚拟时钟,根据芯片/模块内部时钟的实际insertion delay评估IO外部假定寄存器的propagation time,这样时序分析就可以规避不必要的“假”违例,当然也可以不指定virtual clock,只是每次分析时序时都需要检查并排除这种“假”违例,影响了工作效率。

在约束set_input_delay/set_output_delay时,可以指定真实时钟CLKP,也可以指定虚拟时钟vCLKP,并且创建与CLKP同频率的虚拟时钟vCLKP时,无需指定时钟端口,参考脚本如下:

setperiod5
create_clock-nameCLKP-period$period[get_portsCLKP]
create_clock-namevCLKP-period$period

在约束set_input_delay/set_output_delay时,是否使用虚拟时钟在CTS之前是没有区别的,可以认为都是理想时钟,毕竟clock tree还没实际建立,时序评估还不能使用propagated clock。而在CTS之后就有如下需要注意的地方:

1)如果指定的是真实时钟,那么下图中的Virtual flip-flop虚拟寄存器的时钟延迟就被忽略了,或者说该虚拟寄存器会被EDA工具认为是理想模型,不带clock propagated time。 2)如果指定的是虚拟时钟,工具往往可以根据内部真实时钟的平均延迟来估算外部虚拟寄存器的时钟延迟,更加合理。

077c4eda-9090-11ef-a511-92fbcf53809c.png

为了让顶层的时序更容易满足,一般会在IN2REG和REG2OUT过约束,可设置外部延迟为60%的时钟周期,给内部的数据路径留40%的空间。具体根据实际项目需求、设计规格、工艺条件等决定。

另外,set_input_delay要指定-max和-min选项,分别对应setup和hold时序检查,如果只指定其中一个选项或都不指定,那么工具在检查setup和hold时,会使用相同的值。

#参考值为0.6,根据实际情况调整
set_input_delay[expr0.6*$period]-clockvCLKP[get_portsCIN]

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    452

    文章

    50117

    浏览量

    420311
  • 寄存器
    +关注

    关注

    31

    文章

    5281

    浏览量

    119746
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59646
  • 虚拟时钟
    +关注

    关注

    0

    文章

    5

    浏览量

    6567

原文标题:为什么要用虚拟时钟Virtual clock?

文章出处:【微信号:全栈芯片工程师,微信公众号:全栈芯片工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    虚拟时钟指数逼近的无线传感器网络时钟同步协议

    提出了一个基于虚拟时钟指数逼近的无线传感器网络时钟同步协议,采用一个虚拟时钟作为全网同步的基础,从而实现全网同步。由于采用
    发表于 08-18 15:27 1823次阅读

    创建ubuntu虚拟

    英文的习惯。创建ubuntu虚拟机打开VMware软件,点击创建新的虚拟机。进入以下界面:选择自定义,点击“下一步”。选择对应VMware版本的兼容性,版本可在帮助->关于VMw
    发表于 08-10 14:15

    如何使用虚拟仪器技术创建合成仪器

    如何使用虚拟仪器技术创建合成仪器虚拟仪器的软件对于一个虚拟仪器系统而言,软件是最关键的部分。虚拟仪器与传统仪器的最根本的区别就在于用户能够通
    发表于 02-25 23:42

    2012 labview创建虚拟硬件问题

    我想创建一个虚拟数据采集卡,网上百度说点击设备与接口下的NI-DAQmax Simulated Device ,为啥我的没有,是不是还要安装什么模块求大神指导,谢谢了!
    发表于 03-29 21:36

    FPGA沙龙:SDR源同步接口时序约束方法沙龙精彩内容回顾!

    传输是常用方法。5、SDR输入时钟的约束方法:创建虚拟时钟虚拟时钟的频率与输入
    发表于 12-31 14:25

    Linux的虚拟创建方法

    用dd命令就可以创建一个raw格式的虚拟磁盘,通常Xen就是使用这种格式的虚拟磁盘
    发表于 07-16 08:03

    如何利用NAS网络存储创建虚拟主机?

    在网站服务器启用后,你可以在网站服务器中设定多个虚拟主机,每个虚拟主机的IP 地址是相同的,但是端口号是不同,一个端口号对应一个虚拟主机。如何创建
    发表于 05-21 17:08

    项目的创建虚拟环境的配置

    Flask学习系列2一项目的创建虚拟环境的配置
    发表于 05-29 12:57

    如何创建虚拟仪器?

    如何创建虚拟仪器?LabVIEW的编程工具介绍
    发表于 04-14 06:41

    如何创建虚拟机?

    实战开发--开发环境安装(五)1、下载软件vmware和ubuntu-20.04.1-desktop-amd64.iso2、创建虚拟机完整步骤3、安装嵌入式linux所需的工具包4、安装vmware tool,实现虚拟机与物理主
    发表于 12-16 07:45

    Imagination和Mobica合作创建汽车虚拟化环境

    Imagination和Mobica联手打造新的演示,展示如何利用 HyperLane虚拟化技术创建优化、安全、可靠的汽车视觉计算解决方案。
    发表于 11-10 14:40 1518次阅读
    Imagination和Mobica合作<b class='flag-5'>创建</b>汽车<b class='flag-5'>虚拟</b>化环境

    FPGA虚拟时钟的使用方法

      但文中对虚拟时钟的应用介绍的还不够详细,因此这里我们再对虚拟时钟做一个更加细致的介绍。
    的头像 发表于 02-16 16:21 4209次阅读
    FPGA<b class='flag-5'>虚拟</b><b class='flag-5'>时钟</b>的使用方法

    创建具有更宽LCD TFT屏幕的时钟

    电子发烧友网站提供《创建具有更宽LCD TFT屏幕的时钟.zip》资料免费下载
    发表于 11-10 11:44 0次下载
    <b class='flag-5'>创建</b>具有更宽LCD TFT屏幕的<b class='flag-5'>时钟</b>

    创建Root权限虚拟环境

    原文链接 Linux下创建 Anaconda创建虚拟环境: conda create -n myroot Linux下激活环境: source activate myroot myroot为用户名
    的头像 发表于 01-11 17:01 1087次阅读
    <b class='flag-5'>创建</b>Root权限<b class='flag-5'>虚拟</b>环境

    创建Arduino字时钟

    电子发烧友网站提供《创建Arduino字时钟.zip》资料免费下载
    发表于 02-03 11:00 2次下载
    <b class='flag-5'>创建</b>Arduino字<b class='flag-5'>时钟</b>