当前位置: 首页 > news >正文

时序和延时

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    ;            

endmodule

        1.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)  ; //延迟只在输出门外

endmodule

        1.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   ;   

    endspecify
    
    and        a1(e,a,b)    ;
    and        a2(f,c,d)    ;
    and        a3(out,e,f)  ; 

endmodule

 specparam

specify

    specparam    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    ;

    specify
    
        if( 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    ;

    endspecify
    
    and        a1(e,a,b)    ;
    and        a2(f,c,d)    ;
    and        a3(out,e,f)  ; 

endmodule

3、时序检查

        3.1、setup 和 hold检查

     建立时间检查   

specify
    
     $setup(data,posedge clk,3)    ;     //3是需要的最小建立时间  

endspecify

 保持时间检查

specify
    
    $hold(posedge clk ,data,5)    ;//5是最小保持时间

endspecify

        3.2、width检查

        脉冲宽度检查

specify

    $width(posedge clk , 6 )    ;

endspecify

4、延迟反标注

相关文章:

  • Linux——system V共享内存
  • 电子电气架构 ---常见车规MCU安全启动方案
  • Python第十六课:深度学习入门 | 神经网络解密
  • Python与AI的深度渊源:从历史交融到技术革新
  • 【Zinx】Day5-Part4:Zinx 的连接属性设置
  • vue2项目开启br压缩
  • L1-017 到底有多二
  • C语言学习总结
  • ONLYOFFICE AI 功能升级:3月11日直播揭秘!
  • Ubuntu 24.04.2 允许 root 登录桌面、 ssh 远程、允许 Ubuntu 客户机与主机拖拽传递文件
  • git submodule管理的仓库怎么删除子仓库
  • 【Linux】36.简单的TCP网络程序
  • c++的基础排序算法
  • 3dconvert-viewer.js SDK API使用指南
  • LeetCode 热题 100_每日温度(72_739_中等_C++)(栈)(暴力破解;栈(从左到右);栈(从右到左))
  • Qwen/QwQ-32B 基础模型上构建agent实现ppt自动生成
  • Java LeetCode 热题 100 回顾41
  • React 学习笔记
  • 【微知】如何根据内核模块ko查看所依赖其他哪些模块?(modinfo rdma_ucm |grep depends)
  • 【Java并发】【synchronized】适合初学者体质入门的synchronized
  • 网站建设存在风险/汕头seo关键词排名
  • 网站建设销售提成/网站百度收录批量查询
  • 本地免费发布信息网站/aso安卓优化公司
  • 建设银行辽宁省分行网站/怎么做属于自己的网站
  • 网站怎么做模板切换/关于营销的最新的新闻
  • 万网的网站代码怎么看/seo诊断优化方案