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

电子说

1.3w人已加入

描述

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,两者的时间间隔为脉冲宽度。

  Verilog

图1:event示意图[1]

Verilog

图2:参数说明[2]

Verilog

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

•不期望的场景:

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

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

Verilog

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

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

2.案例说明  

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

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

Verilog

 

"/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
   

 


 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分