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

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

3天内不再提示

网表时序仿真案例:浅说$width语法

sanyue7758 来源:IC的世界 2024-03-01 09:46 次阅读

1.$width语法

verilog中,$width是时序检查函数,用于检查脉冲的位宽是否符合要求。

$width ( reference_event , timing_check_limit , threshold [ , [ notify_reg ] ] ) ;

reference_event代表一个上升沿(下降沿)触发事件。

语法中隐形地表达了data_event。

data event = reference event signal with opposite edge。

如果reference_event为上升沿,则最近的一个下降沿是data_event,两者的时间间隔为脉冲宽度。

如果reference_event为下升沿,则最近的一个上降沿是data_event,两者的时间间隔为脉冲宽度。

d410981c-d70d-11ee-a297-92fbcf53809c.png

图1:event示意图[1]

d428c5fe-d70d-11ee-a297-92fbcf53809c.png

图2:参数说明[2]

d453a8a0-d70d-11ee-a297-92fbcf53809c.png

•期望的场景:脉冲宽度 >= limit

•不期望的场景:

○产生timing violation场景的:threshold < 脉冲宽度< limit

○不产生timing violation场景的:脉冲宽度

d466ece4-d70d-11ee-a297-92fbcf53809c.png

图2:width检测时序示意图[1]

NOTE:很多时候threshold的值为0.

2.案例说明

此案例中,使用的仿真工具为VCS,limit为 6000ps。小于6000ps的脉冲位宽均产生了Timing violation。

threshold为2000ps,位宽小于threshold的脉冲也产生了Timing violation,此处检查比协议要求得更加严格。

d477b600-d70d-11ee-a297-92fbcf53809c.png

"/auto/asic/design/try/top/rtl/width_tb.v", 34: Timing violation in width_tb
    $width( posedge clk:1000,  : 2000, limit: 6000 );




"/auto/asic/design/try/top/rtl/width_tb.v", 34: Timing violation in width_tb
    $width( posedge clk:5000,  : 10000, limit: 6000 );


$finish called from file "/auto/asic/design/try/top/rtl/width_tb.v", line 10.
$finish at simulation time               100000
           V C S   S i m u l a t i o n   R e p o r t

module width_tb;
   
      reg clk;
            
      initial begin
        $fsdbDumpfile("width_tb.fsdb");
        $fsdbDumpvars(0, width_tb);
        #100;
        $finish;
      end
      
      initial begin
        clk = 1'b0;
                #1;
        clk = 1'b1;
                #1;
        clk = 1'b0;
        #3;
        clk = 1'b1;
        #5;
        clk = 1'b0;
                #5;
        clk = 1'b1;
                #10;
        clk = 1'b0;
                #5;
        clk = 1'b1;
                #15;
        clk = 1'b0;
      end
      
      specify
        $width(posedge clk,6,2); 
      endspecify
   
   endmodule
   


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

    关注

    28

    文章

    1326

    浏览量

    109302
  • VCS
    VCS
    +关注

    关注

    0

    文章

    78

    浏览量

    9495
  • CLK
    CLK
    +关注

    关注

    0

    文章

    122

    浏览量

    16908
  • 时序仿真
    +关注

    关注

    0

    文章

    14

    浏览量

    7360

原文标题:网表时序仿真,浅说$width

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [求助]静态时序分析与时序仿真?

    自己做了一个工程,静态时序分析的结果CLK信号的SLACK是负值(-7.399ns),书上说该值是负值时说明时序不对,但是我感觉时序仿真的结果是对的。是不是
    发表于 03-03 23:22

    功能仿真、综合后仿真时序仿真

    功能仿真:可以验证代码的逻辑性,不加任何的时延信息。仿真工具为modelsim(组合逻辑和时序逻辑都可以功能仿真),modelsim不能综合。在modelsim中添加相应的激励信号,调
    发表于 08-23 16:57

    基于 FPAG xilinx vivado 仿真模式介绍

    除了可以输出一个标准文件以外,还可以输出Verilog或者VHDL,其中标准文件是用
    发表于 01-24 11:06

    PCB设计│导入的雷区,你还在踩?

    。本期学习重点:1. 的基本语法结构2. 导入的常见错误本期学习难点:1.
    发表于 08-06 11:05

    什么是Modelsim的功能仿真时序仿真

    FPGA设计流程包括设计输入,仿真,综合,生成,板级验证等很多阶段。在整个设计流程中,完成设计输入并成功进行编译仅能说明设计符合一定的语法规范,并不能说明设计功能的正确性,这时就需要通过仿真对设计进行验证。在FPGA 设计中,
    发表于 09-20 06:36

    请问用什么语法可以实现这个max=val?

    tina仿真编译报错,我用电压控制电压源VCVS,EXXXn+n- in+in-gAIn,MAX=val在linux中,这种语法可以仿真
    发表于 06-25 06:30

    视觉模块OpenMV浅说LED灯

    ,于是开启了OpenMV的学习之路。这款视觉模块对新手是很友好的,上手速度快,能够快速应用到项目中去。但入手这个模块的前提是要知道Python的基本语法是使用。1学习的资源:(1)学习OpenMV这款视觉模块最主要的场所是它的官...
    发表于 07-20 06:59

    仿真与RTL仿真相比有何优势

    仿真与RTL仿真相比有何优势?“线与”逻辑是什么?
    发表于 11-04 06:23

    时序计算和Cadence仿真结果的运用

    时序计算和Cadence 仿真结果的运用中兴通讯康讯研究所 EDA 设计部 余昌盛 刘忠亮摘要:本文通过对源同步时序公式的推导,结合对SPECCTRAQuest 时序
    发表于 12-21 09:05 172次下载

    基于Cadence的源同步时序仿真

    根据源同步的一些基本问题,在Cadence仿真环境下,对源同步时序进行仿真仿真结果表明,设计能满足噪声容限和过冲,仿真后的可知数据线和时间
    发表于 05-29 15:26 0次下载
    基于Cadence的源同步<b class='flag-5'>时序</b><b class='flag-5'>仿真</b>

    Modelsim的功能仿真时序仿真

    用ModelSim 进行功能仿真,进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。下文主要介绍仿真步骤和测试激励的加载。
    发表于 11-13 15:35 8591次阅读

    modelsim仿真详细过程(功能仿真时序仿真

    modelsim仿真详细过程(功能仿真时序仿真).ModelSim不仅可以用于数字电路系统设计的功能仿真,还可以应用于数字电路系统设计的
    发表于 12-19 11:14 6.4w次阅读
    modelsim<b class='flag-5'>仿真</b>详细过程(功能<b class='flag-5'>仿真</b>与<b class='flag-5'>时序</b><b class='flag-5'>仿真</b>)

    时序分析概念min pulse width介绍

    今天我们要介绍的时序分析概念是 **min pulse width** ,全称为最小脉冲宽度检查。这也是一种非常重要的timing arc check,经常用在时序器件或者memory上面。
    的头像 发表于 07-03 14:54 1386次阅读
    <b class='flag-5'>时序</b>分析概念min pulse <b class='flag-5'>width</b>介绍

    时序仿真与功能仿真的区别在于

    时序仿真与功能仿真的区别在于 时序仿真与功能仿真是电子设计自动化(EDA)中最常见的两种
    的头像 发表于 09-08 10:39 3186次阅读

    时序仿真与功能仿真的区别有哪些?

    时序仿真与功能仿真的区别有哪些? 时序仿真和功能仿真都是电子设计自动化(EDA)过程中的常见任务
    的头像 发表于 09-17 14:15 2871次阅读