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

    文章

    1351

    浏览量

    110074
  • VCS
    VCS
    +关注

    关注

    0

    文章

    79

    浏览量

    9600
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17158
  • 时序仿真
    +关注

    关注

    0

    文章

    14

    浏览量

    7411

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

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

收藏 人收藏

    评论

    相关推荐

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

    功能仿真:可以验证代码的逻辑性,不加任何的时延信息。仿真工具为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次下载

    Modelsim的功能仿真时序仿真

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

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

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

    基于ModelSim使用modelsim手动时序仿真教程

    时序仿真与功能仿真的步骤大体相同,只不过中间需要添加仿真库、(.vo)文件和延时(.sdo)
    的头像 发表于 07-23 11:55 2310次阅读

    时序分析概念min pulse width介绍

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

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

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

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

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

    fpga时序仿真和功能仿真的区别

    FPGA时序仿真和功能仿真在芯片设计和验证过程中各自扮演着不可或缺的角色,它们之间存在明显的区别。
    的头像 发表于 03-15 15:28 2189次阅读