Verilog 时序和延迟

时序仿真

硬件的功能验证用于验证所设计的电路的功能-但是,真实硬件中的模块具有逻辑元件和它们之间的路径带来的延迟。因此,必须检查电路是否满足延迟说明中指定的模块时序约束。随着电路尺寸变得越来越小且速度越来越快,检查时序约束变得越来越重要。检查时序的方式之是进行时序仿真。即在仿真过程中计算与该模块相关的延迟值。这里在验证时还有一种静态时序验证,其内容比较复杂,需要的需要专门去学习。

几个问题:

• 鉴别 Verilog仿真中用到的延迟楼型的类型 , 分布延迟、集总延迟和引脚到引脚(路径)的延迟
• 理解如何在仿真过程中用 specify 块设置路径延迟;
• 能解释输入和输出引脚之间的并行连接和全连接。
• 理解如何在 specify 块中用 specparam 语句定义参数
• 描述状态依赖路径延迟,即条件路径延迟;
• 能解释 rise, fall 和 turn-off 延迟 ,理解如何设置 min、max 和 type的值。
• 能够为时序检查定义系统任务,setup , hold 和width
• 理解延迟反标

延迟模型的类型

分布延迟 、集总延迟和引脚到引脚(路径 )的延迟。

分布延迟:
在这里插入图片描述
集总延迟:
集总延迟是在每个独立模块的基础上定义的,它们可以被看成是模块输出门的单个延迟,而实际上是将所有路径累积的延迟汇总于输出门这一处,因此称为集总延迟
在这里插入图片描述集总延迟更容易建模。只要在模块输出给延时就行。

引脚到引脚:比分布延迟容易建模,因为它不需要了解模块内部。数据手册一般会给出引脚到引脚的延迟。

路径延迟建模

在模块的源(输入或输人输出)引脚和目标(输出或输入输出)引脚之间的延迟称为模块路径延迟。在 Verilog 中,在关键字 specify 和 endspecity之间给路径延迟赋值, 关键字之间的语句组成 specify 块(即指定块)。包括:

• 给穿过模块的所有路径指定引脚到引脚的时序延迟
• 在电路中设置时序检查
• 定义 specparam 常量

在这里插入图片描述
建模如下:
在这里插入图片描述
specify块是模块中的一个独立部分。且不在任何其他块如(initial 或 always )内出现, specify块中的语句含义必须非常明确。

specify内部

并行连接
如前所述.每条路径延迟语句都有一个源域和一个目标域 在路径延迟语句中, a 、b 、 e 和 d 在源域位置, 而out 是目标域 ,用符号**=>说明并行连接。
在并行连接中,源域中的每一位与目标域中相应的位连接广,如果源和目标域是向量, 必须
有相同的位数**,否则会出现不匹配 因此,并行连接说明了源域的每一位到目标域的每一位之间的延迟。

全连接
用符号** *>**表示全连接,
在全连接中,**源域中的每一位与目标域中的每一位相连接。**如果源和目标是向量,则它们不必位数相同。全连接描述源中的每一位和目标中的每一位之间的延迟。
在这里插入图片描述
前面的模型可以建模为:
在这里插入图片描述边沿敏感路径:边沿敏感路径用于输入到输出延迟的时序建模,这种结构仅当源信号上出现特定边沿时才有用。
在这里插入图片描述

specparam 声明语句
可以声明特殊的参数,以 便用在specify 块中 它们用 specparam关键字声明, 一般情况下不直接根据数值定义引脚到引脚的延迟 ,而是使用 specparam 定义specify 参数, 然后在 s pecify块中使用这些参数 specparam的值常常用于给非仿真工具存储值。
在这里插入图片描述
实际就是方便给延迟赋值。

条件路径延迟

引脚到引脚的延迟可能会由千电路输入信号的状 态而改变 Verilog 允许在电路中根据信号值
有条件地给路径延迟赋值一条件路径延迟用 if 条件语句表示。操作数可以是这里列出的这些量的标量或向量值:模块输入或输出端口、它们的位选或域选、局部定义的寄存器( 网表 )或它们的位选或域选、编译时就能确定的常械{ 常数和 specify 块参数)。条件表达式可包含任意逻辑操作符、位操作符、缩减操作符 连接操作符以及条件操作符. if 语句不能使用else结构条件路径延迟又称状态依赖路径延迟 ( SDPD)???
在这里插入图片描述
上升、下降、关断延时

引脚到引脚的时序也可以通过指定上升、下降和关断( tum -off ) 延迟值来更详细地表示( 见
例 10.8 )., 可以给任意路径定义 1 个, 2 个, 3 个、6 个或 12 个延迟值。4 个、5 个、7 个、8 个、9 个、 10 个或 11 个延迟值都是错误的。必须严格按顺序定义这些延迟。
在这里插入图片描述最小、典型、最大在这里插入图片描述
在前面的阐述中 ,最小值,典型值和最大值可以在Verilog命令行中用运行选项 +mindelays ,+typdelays 以及+maxdelays 的方式调用。默认值是典型延迟值 。 仿真器不同,调用方式也可能不同。

时序检查

本章前几节讨论了如何指定路径延迟-指定路径延迟的目的是以比门延迟更高的精度仿真实际数字电路的时序。本节将描述如何建立时序检查、以便 查行仿真过程中是否违反了时序约束。
$setup
$ hold
$ width
这些时序检查任务只能在specify块里面实现。

$setup $ hold

用来检查设计中时序元件的建立和保持约束。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

$width检查

检查脉宽。

在这里插入图片描述
在这里插入图片描述

延迟反标注

在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值