常用SVA记录汇总----不间断更新


断言的评估和执行包括以下三个阶段:
预备阶段:采样断言变量,而且信号或变量的值不能改变,这样确保在时间间隙开始的时候采样到最稳定的值
观察阶段:对所有的属性表达式求值
响应阶段:调度评估属性成功或失败的代码

断言分为并发断言和立即断言,二这区别如下:
立即断言:
1-与时序无关,应被立即求值
2-只能用于动态模拟
3-只能放在过程块中

并发断言:
1-与时序相关
2-在时钟边沿根据调用的变量采样值计算表达式
3-采样在预备阶段完成,表达式的计算在观察阶段完成
4-可以放在过程块、模块、接口或程序中
5-可以在静态验证和动态模拟验证工具中使用
6-以property为关键词

区分二者的关键词为property。

常用的断言构造

断言函数

i s u n k n o w ( 表达式 ) :检验表达式中没有位为 X 或者 Z ,及数据是有效的 − − − − − ! isunknow(表达式):检验表达式中没有位为X或者Z,及数据是有效的----- ! isunknow(表达式):检验表达式中没有位为X或者Z,及数据是有效的stable(a)表示a发生变化
$rose(a):当信号或表达式a变成1时返回真------对应------拉高、上升沿
$fell(a):当信号或表达式a变成0时返回真------对应-------拉低、下升沿
$stable(a):当信号或表达式a不发生变化时返回真------对应------不变、稳定
$past(a, n):信号或表达式n个周期前的值
$onehot(表达式):任意时钟沿,检验表达式是否只有一位为高
$onehot0(表达式):任意时钟沿,检验表达式是否只有一位为高或者没有任何位为高
$isunknow(表达式):检验表达式的任何位是否为X或者Z
$countones(表达式):计算表达式中为高的位的数量

重复运算符

a[*n]:a连续重复发生n次,每次匹配之间隐藏一个时钟周期的延迟,且连续重复的前后不应有时间间隔,类似a[*n:m],表示一定范围内的连续重复
a[->n]:a跟随重复发生n次,且允许发生之前和重复期间有时间间隔,但重复之后不能有时间间隔
a[=n]:a非连续重复发生n次,允许发生之前、重复期间和发生之后有时间间隔,类似a[=n:m],表示一定范围内的非连续重复

蕴含操作符

|->:交叠交错符号,先行算子不成立,表现为空成功;成立则先行算子和后续算子同周期执行
|=>:非交叠交错符号,先行算子不成立,表现为空成功;成立则先行算子比后续算子快一个周期执行

and运算符(A and B)

1-组合两个序列,两个序列都满足时整个属性才成功
2-两个序列必须有相同的起始点,可以不同的结束点
3-检验的起始点:第一个序列成功时
4-检验的结束点:使得属性成功的另一个序列成功时的点

intersect运算符 (M intersect N)

1-组合两个序列,两个序列都满足时整个属性才成功
2-两个序列必须有相同的起始点以及相同的结束点
3-两个序列的长度必须相等
4-检验的起始点:第一个序列成功时
5-检验的结束点:使得属性成功的另一个序列成功时的点

or运算符 ( C or D)

1-两个序列中,只要其中一个序列成功,整个属性就成功

first_match (C or D)

1-常用于含有逻辑运算符(如and、or)的序列中,若指定时间窗,就可能出现多个匹配的情况
2-可以确保只用第一次序列匹配,而丢弃其他匹配

(表达式)throughout (序列)

1-保证某些条件在整个序列的验证过程中一直为真

E within Q

1-序列E在序列Q的开始直到结束的范围内发生

关键词not

1-可用于表示属性应该永远不为真

关键词ended

1-使用序列的结束点作为同步点的连接机制
注:不加ended表示基于序列的起始点来同步序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值