当前位置:网站首页>第十章 时序与延迟
第十章 时序与延迟
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检查
- 检查脉冲宽度是否满足最小宽度要求

- 用法:

- 实例

边栏推荐
- 宝塔搭建实测-基于ThinkPHP5.1的wms进销存源码
- 博客主题美化第二弹
- Interviewer: can you talk about optimistic locking and pessimistic locks
- 单例模式你会几种写法?
- Zabbix 5.0 监控教程(二)
- 面试官居然问我:删库后,除了跑路还能干什么?
- [C题目]力扣234. 回文链表
- SublimeText3 安装、配置项、包管理、常用必备插件、常用快捷键以及修改
- 【Unity】Unity开发进阶(六)UnityEvent使用与源码解析
- Vscode快速入门、 插件安装、插件位置、修改vscode默认引用插件的路径、在命令行总配置code、快捷键
猜你喜欢
随机推荐
Command line startup FAQs and solutions
在迁移测试中,源表、中间表、目标表的迁移规则
包管理工具Chocolate - Win10如何安装Chocolate工具、快速上手、进阶用法
Learn more TypeScript 】 【 TypeScript modular
golang刷leetcode:到达角落需要移除障碍物的最小数目
树形结构构造示例代码
LeetCode 2359. 找到离给定两个节点最近的节点 基环树
JumpServer open source bastion machine completes Loongson architecture compatibility certification
go exec 包
【Unity】Unity开发进阶(七)双刃剑:扩展方法
How does Redis easily achieve system instant kill?
我用这一招让团队的开发效率提升了 100%!
【TypeScript】深入学习TypeScript模块化
面试了个985毕业的,回答“性能调优”题时表情令我毕生难忘
谷粒商城-day13-es和商品上架
2018HBCPC个人题解
What is the core business model of the "advertising e-commerce" that has recently become popular in the circle of friends, and is the advertising revenue really reliable?
搭建直播平台,使用node生成验证码图片,并进行验证
无线振弦采集仪远程修改参数的方式
【C语言进阶】--指针典题剖析









