Verilog中的specify block和timing check

摘要:
在specifyblock中一般有三种信息:1)variouspathsacrossthemodule;2)Assigndelaystothosepaths;3)Performtimingcheck;path的declaration包括三类:1)simplepathdeclaration;2)edgesensitivepathdeclaration;加posedge/negedge表示FF的有效沿是posedge,从in到out是一个positive的polarity,risedelay是10,falldelay是8。$setuphold的完整定义:支持negtivetimingnotifier作为一个reg类型变量,在timingcheckinvoke的地方声明,当检测到timingviolation时,notifier通过FF的行为,打印violation信息,并propagateXtotheoutput。

在ASIC设计中,有两种HDL construct来描述delay信息:

1)Distributed delays:通过specify event经过gates和nets的time,来描述delay;

对于net和gate都有三种delay信息: 1)rise delay 2)fall delay 3)transition to high-impedance value

只有一种delay时,所有change都使用这种delay,两个delay值时,才分为rise/fall

每一种delay信息又分为:min:typical:max三种。

gate和net的model例子:

Verilog中的specify block和timing check第1张

Verilog中的specify block和timing check第2张

但是trireg类型的变量一般建模cap的信号:第三个delay信息表示他storage的信号值不再保证的时间;

Verilog中的specify block和timing check第3张Verilog中的specify block和timing check第4张

2)Module path delays:通过描述event从source(input/inout port)到destination(output/inout port)的time,来描述delay;

使用specify......endspecify来进行描述。

在specify block中一般有三种信息:

1)various paths across the module;

2)Assign delays to those paths;

3)Perform timing check;

Verilog中的specify block和timing check第5张

path的declaration包括三类:

1)simple path declaration;

Verilog中的specify block和timing check第6张

2)edge sensitive path declaration; 加 posedge/negedge

表示FF的有效沿是posedge,从in到out是一个positive的polarity,rise delay是10, fall delay是8。

Verilog中的specify block和timing check第7张

3)state dependent path declaration; 加if/ifnone

Verilog中的specify block和timing check第8张

4)Edge-sensitive state-dependent paths

Verilog中的specify block和timing check第9张

“ *>”表示 full conection, “ =>”表示parallel conection

Verilog中的specify block和timing check第10张

对于会改变polarity的 path,可以通过+/-来进行描述,否则按unknown polarity分析(rise edge可能引起fall edge/rise/edge/no transition)。

"+"表示positive polarity, rise 可能引起rise edge或no transition

Verilog中的specify block和timing check第11张

"-"表示positive polarity, rise 可能引起fall edge或no transition

Verilog中的specify block和timing check第12张

Specifying transiiton delay on module path

按rise---fall---to-z的三种来区分,每一种delay信息可以再细分min/typ/max

前三者用","区分,后三者用":"区分

在delay path中,有一些是到同一个output的,这是选择最近有效的一路来计算,如果还是有多条

同时有效,选择delay较小的那一条path。

Verilog中的specify block和timing check第13张

当Y从0变为1时,如果A transition more recently,那么选择6的delay,否则选择5的delay;

如果A和B都有效,那么选择5的delay;

对于module path delay和distributed delay都存在的情况,选择两者之间大的那一个值。

Verilog中的specify block和timing check第14张

对于path的distination必须是的单一driver的,所以一些wire类型的信号,必须变为gate输出的signal

Verilog中的specify block和timing check第15张

TIming Check,在给定的timing limit内,保证critical event occur;

可以分为两大类:

1)检查stability time window----------$setup, $hold, $setuphold, $recovery, $removal, $recrem

2)检查two event之间的time----------$skew, $width, $period, $nochange

注意这些timing check并不是task,specify内也不允许有task;

所有的这些timing check都有两个基准时间点:reference event和data event;

两个时间评估点:timestamp event和timecheck event;

不报violation,必须保证data event在正确的time window下发生

$setup check: $setup(data_event, reference_event, time_check_limit,notifier)

Verilog中的specify block和timing check第16张

保证timestamp的时间在time window之内,否则会报violation

Verilog中的specify block和timing check第17张

当limit设置为0时,表示这个检查永远不会报violation

$hold check: $hold(reference_event, data_event, time_check_limit,notifier)

Verilog中的specify block和timing check第18张

当limit设置为0时,表示这个检查永远不会报violation

$setuphold check: $setuphold(reference_event, data_event, setup_time_check_limit,hold_time_check_limit,notifier)

$skew(reference_event, data_event, time_check_limit, notifier)

Verilog中的specify block和timing check第19张

Verilog中的specify block和timing check第20张

Verilog中的specify block和timing check第21张

$width(reference_event, time_check_limit, threshold)

reference必须是一个trigger的event,另一个edge作为data event,两者时间间隔大于threshold(防止glitch),小于limit。

$setuphold的完整定义:支持negtive timing

Verilog中的specify block和timing check第22张

notifier作为一个reg类型变量,在timing check invoke的地方声明,

当检测到timing violation时,notifier通过FF的行为,打印violation信息,并propagate X to the output。

在timing check过程中,data和reference clock的delay copysignal会被创建,

用户可以显式的定义,delayed_reference或者delayed_data。

dclk在setup为负值时,表示clk延时7个cycle,在dclk之前D不再变化,就不会出现violation。

dD在hold为正值时,表示D延时13个cycle,如果dD发生在CLK之后,则不会出现violation。

在多个$setuphold的函数中,选择大的一个赋值。

Verilog中的specify block和timing check第23张

在做后仿的过程中,默认选择sdf中的delay值,之后选择specify中的delay值。

免责声明:文章转载自《Verilog中的specify block和timing check》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue项目引用百度地图并实现搜索定位等功能 Marco3.生成七牛云上传token下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

websphere application server (was) 安装8.5.5.18

目录环境准备所需的软件或系统版本安装包目录结构安装步骤安装was8.5.0.0升级到8.5.5.18打开浏览器以访问控制台环境准备如果系统主机名不是localhost,您需要将所需的软件或系统版本jdk1.8centos7.5WAS提前添加到/etc/hosts/文件中_ ND_V8.5_1_OF_3.zipWAS_ ND_V3.5_2_OF_3.zip代理...

R的卸载和更新安装

R包经常遇到不同版本的不兼容性。例如,与软件包相比,当前版本无论是新的还是旧的都很麻烦。最麻烦的是如何升级R软件?包括以下方法:方法1:(1)直接安装新版本(2)将旧版本库中的文件夹复制到新版本库文件夹并粘贴。如果中间有重复的名称,则不会被覆盖(需要更新基本包)。(3) 打开新版本的R并输入:update。程序包()以静默等待更新...

解读阿里官方代码规范

作者将解释此代码规范的一些细节,包括作者的观点和想法,这些可以作为此代码规范扩展。该公众号共发表了五篇文章。这篇文章是一个集合,之前的一些文章已经过修改。在实际的编程过程中,作者可能会对类名的风格更加激进。根据阿里巴巴的规范,类名应该使用UpperCamelCase样式,并且必须遵循驼峰形式。但是,有以下例外:实际上,DO/BO/DTO/VO可能有UserV...

ZYNQ:提取PetaLinux中Linux和UBoot配置、源码

说明默认情况下,PetaLinux在编译完成后会删除源代码,以节省硬盘空间。system-top.dts、system-conf.dtsi等这些设备树文件是petalinux-build在之后生成的Linux、uboot的源码没有变化,关键在于配置以及设备树的变化这里以:2018.03的ZYNQ-7000平台为例。提取以后,还有一篇文章简单地介绍了如何打包B...

教你用CMD命令查询域名的DNS解析记录:A,NS,MX,CNAME,TXT

cmd就不多介绍了,开始->运行->输入cmd回车,打开cmd,在这里可以随时查询域名的DNS记录,比如A、NS、MX、CNAME、TXT记录。...

移动通信最先进的音频编解码器EVS及用好要做的工作

为了应对互联网阵营的竞争,移动通信标准组织3GPP还提出了覆盖语音和音乐的音频编解码器EVS。现在我们来谈谈编解码器和要做的工作。2014年9月,3GPP标准化了EVS编解码器,由3GPPR12定义。它主要适用于VoLTE,但也适用于VoWiFi和固定网络电话VoIP。EVS对语音信号和音乐信号使用不同的编码器。语音编码器是数字激励线性预测的改进代,并且还采...