1、延迟模型的类型
verilog有三种类型的延迟模型:分布延迟 、 集总延迟 、 路径延迟(pin to pin)
1.1、 分布延迟
分布延迟是在每个独立元件的基础上进行定义的。
module    M(output    wire    out    ,input     wire    a      ,input     wire    b      ,input     wire    c      ,input     wire    d);wire    e,f    ;and #5     a1(e,a,b)    ;and #7     a2(f,c,d)    ;and #4     a3(out,e,f)  ;endmodule//.............................................
module    M(output    wire    out    ,input     wire    a      ,input     wire    b      ,input     wire    c      ,input     wire    d);wire    e,f    ;assign #5    e = a & b    ;assign #7    f = c & d    ;assign #4    out = e & f    ;            endmodule1.2、 集总延迟
集总延迟是在每个独立模块的基础上定义的。
module    M(output    wire    out    ,input     wire    a      ,input     wire    b      ,input     wire    c      ,input     wire    d);wire    e,f    ;and        a1(e,a,b)    ;and        a2(f,c,d)    ;and #11    a3(out,e,f)  ; //延迟只在输出门外endmodule1.3、 路径延迟
可以查阅数据手册直接获得标准组件的引脚到引脚的延迟(路径延迟)。
2、路径延迟建模
2.1、 specify块
连接方式:
并行连接:=>
全连接 :*> ( in 和 out 两两连接 )
module    M(output    wire    out    ,input     wire    a      ,input     wire    b      ,input     wire    c      ,input     wire    d);wire    e,f    ;specify(a => out)    =    9    ;    (b => out)    =    9    ;   (c => out)    =    11   ;   (d => out)    =    11   ;   endspecifyand        a1(e,a,b)    ;and        a2(f,c,d)    ;and        a3(out,e,f)  ; endmodulespecparam
specifyspecparam    d_to_q      =    9     ;specparam    clk_to_q    =    11    ;(d   => q) = d_to_q      ;(clk => q) = clk_to_q    ;endspecify条件路径延迟
module    M(output    wire    out    ,input     wire    a      ,input     wire    b      ,input     wire    c      ,input     wire    d);wire    e,f    ;specifyif( a == 1'b1 )(a => out) = 9 ;if( ~a == 1'b1 )(a => out) = 11 ;if( b & c )(b => out) = 9    ;if( ~(b & c) )(b => out) = 13    ;if( {c,d} == 2'b01 )(c,d *> out) = 11    ;if( {c,d} != 2'b01 )(c,d *> out) = 13    ;endspecifyand        a1(e,a,b)    ;and        a2(f,c,d)    ;and        a3(out,e,f)  ; endmodule3、时序检查
3.1、setup 和 hold检查
建立时间检查
specify$setup(data,posedge clk,3)    ;     //3是需要的最小建立时间  endspecify保持时间检查
specify$hold(posedge clk ,data,5)    ;//5是最小保持时间endspecify3.2、width检查
脉冲宽度检查
specify$width(posedge clk , 6 )    ;endspecify4、延迟反标注