当前位置:网站首页>第十章 时序与延迟
第十章 时序与延迟
2022-08-02 21:35:00 【江南小作坊】
时序与延迟
- 真实硬件中具有延迟,所以需要检查时序。
- 检查时序的两种方式:时序检查、静态时序验证。
- 时序检查:仿真过程中计算与该模块相关的延迟值。
- 静态时序验证
- 怎么用:先进行纯功能验证,再用静态时序验证工具单独验证时序。
- 优点:快。能以时序仿真快几个数量级的速度验证时序。
- 本章主要讨论如何定义延迟及时序检查。
定义延迟
延迟模型
- 三种延迟模型:分布延迟、集总延迟、引脚到引脚(路径)的延迟
分布延迟
- 在每个独立元件的基础上定义的。
- 延迟值赋给电路中独立的元件。
- 两种方式建模
- 一、将延迟值赋给独立的门;
- 二、在单独的assign语句中指定延迟值;
- 如下,门元件中分布延迟
- Verilog描述
- 分布延迟,每个元件都要指定延迟值。
集总延迟
- 在每个独立模块的基础上定义。
- 集总,顾名思义,将所有累积的延迟汇总于输出门。
- 如图
- Verilog描述
- 集总延迟建模与分布延迟建模,更加简便。
路径延迟
- 定义引脚到引脚的时序说明,分别把延迟赋给模块中每个输入到每个输出之间的所有路径。
- 可以针对每条输入/输出路径分别指定延迟。
- 怎么用:可以从数据手册中直接获取标准组件的引脚到引脚的延迟;通过用spice之类的低层次仿真器进行电路描述的仿真,可以获得数字电路模块的引脚到引脚的延迟。
路径延迟
- 单独讨论下路径延迟,引脚与端口,可以替代使用。
specify块
- 模块路径延迟:模块的输入或输出引脚和目标输入或输出引脚之间的延迟。
- 关键字:
specify ... endspecify
,关键字之间的语句组成specify块。 - specify块包含以下操作语句:
- 给穿过模块的所有路径指定引脚到引脚的时序延迟;
- 在电路中设置时序检查;
- 定义specparam常量;
- 引脚到引脚的延迟
specify块内部
并行连接
- 每个路径延迟语句都有一个源域和目标域。
- 并行连接符号:
=>
- 如下图:a是源域,out是目标域。
- 注意点:
- 源域的每一位与目标域中相应的位连接。
- 如果源域和目标域是向量,必须有相同的位数,否则不匹配。
- 并行连接说明了源域的每一位到目标域的每一位之间的延迟。
全连接
- 符号
*>
- 如下例
- 注意点:
- 源域的每一位与目标域中的每一位相连接(并行连接:是相应的位)。
- 如果源和目标是向量,则它们不必位数相同。
- 当位宽很大时,如果每一位延迟值一致,则全连接就很简便。
- 全连接描述源中的每一位和目标中的每一位之间的延迟。
边沿敏感路径
- 用于输入到输出延迟的时序建模,仅当源信号上出现特定边沿时才有用。
// 在时钟信号clock的正跳变时刻,从时钟信号到输出信号用去上升延迟10,下降延迟8 // 数据路径:in到out,输入信号in没有反相就送到out (posedge clock => (out +: in)) = (10 : 8);
specparam声明语句
- 用于声明特殊的参数,一般情况下,不直接根据数值定义引脚到引脚的延迟,而是使用specparam定义specify参数,然后在specify块中使用这些参数。
- 常用于给非仿真工具存储值,如延迟计算器、综合工具和布线评估器。
- 注:仅用于specify块内部。
条件延迟路径
- 又称状态依赖路径延迟(SDPD)
- 有条件的给路径延迟赋值,用if条件语句。
上升、下降和关断延迟
- 之前有讨论过,直接上例子
最大、最小和典型值
- 之前讨论过逻辑门的最大、最小和典型值。它们也可以用于引脚到引脚的延迟。
- 用
min:typ:max
的形式表示。
处理x状态转换
- Verilog使用保守的方法计算x状态转换的延迟。
- 其方法规定:
- 从x到已知状态的转换应当消耗可能的最大时间。
- 从已知状态到x的转换应当消耗可能的最小时间。
- 如下:
- 上图所示的计算方法,若下表
时序检查
- 三种通用的时序检查任务:
$setup
、$hold
、$width
- 所有的检查时序只能用在specify块内。
setup和hold任务
$setup
、$hold
用来检查设计中时序元件的建立和保持约束。- 在时序元件(如边沿触发器)中,建立时间是数据必须在有效时钟边沿之前达到的最小时间。保持时间是数据在有效边沿之后保持不变的最小时间。
$setup
任务用法- 实例
$hold
任务- 实例
width检查
- 检查脉冲宽度是否满足最小宽度要求
- 用法:
- 实例
边栏推荐
猜你喜欢
H5网页播放器EasyPlayer.js播放器界面的加载效果无法消失是什么原因?
If the watermark according to how to realize the function
在迁移测试中,源表、中间表、目标表的迁移规则
Add and delete all these years, finally planted in MySQL architecture design!
【C语言进阶】--指针典题剖析
面试官居然问我:删库后,除了跑路还能干什么?
I interviewed a 985 graduate, and I will never forget the expression when answering the "performance tuning" question
行业 SaaS 微服务稳定性保障实战
UDP (User Datagram Protocol)
矩阵白化原理及推导
随机推荐
主成分分析(PCA)
【使用pyside2遇到的问题】This application failed to start because no Qt platform plugin could be initialized.
什么是幂等
博客主题美化第二弹
Redis是如何轻松实现系统秒杀的?
[C题目]力扣234. 回文链表
H5网页播放器EasyPlayer.js播放器界面的加载效果无法消失是什么原因?
牛客刷题:数组排序
golang刷leetcode:道路的最大总重要性
sre成长之路
Intensive reading of the Swin Transformer paper and analysis of its model structure
Flink-shell
golang刷letcode:公司命名
2022-08-02 第六小组 瞒春 学习笔记
抽象工厂模式
从零开始配置 vim(5)——本地设置与全局设置
go 序列化与反序列化
RuoYi-App启动教程
Word operation: adjust the English font individually
最近火爆朋友圈的“广告电商”,核心商业模式是什么,广告收入真实靠谱吗?