目录
单周期断言:
1、ovl_always:
功能描述:
ovl和assert_always例子:编辑编辑
详细介绍:
2、ovl_implication:
功能描述:
例子:
详细介绍:
3、ovl_never:
功能描述:
例子:
详细介绍:
4、ovl_never_unknown:
功能描述:
例子:
详细介绍:
5、ovl_one_hot:
功能描述:
例子:
详细介绍:
6、ovl_range:
功能描述:
例子:
详细介绍:
7、ovl_zero_one_hot:
功能描述:
例子:
详细介绍:
多周期断言:
8、ovl_cycle_sequence:
功能描述:
例子:
详细介绍:
9、ovl_next:
功能描述:
例子:
详细介绍:
单周期断言:
1、ovl_always:
-
功能描述:
-
ovl_always断言检查器在时钟的每个活动边缘(时钟上升沿还是下降沿由clock_edge字段决定)检查单比特表达式test_expr。如果test_expr不是TRUE,就会发生always check冲突。
- 重要字段:五个端口:test_expr,clock,reset,enable,fire;还有Patameters重点前三个,severtity_level和property_type一般选择默认,msg(断言错误时打印输出的消息,有默认VIOLTATION),clock_edge等
-
ovl和assert_always例子:
-
详细介绍:
2、ovl_implication:
-
功能描述:
- 是一种用于定义蕴含关系的宏,用于基于断言的验证。蕴含关系表示当某个条件成立时,另一个条件也必须成立。
- ovl_implication断言检查器在时钟的每个活动边缘检查单个位表达式antecedent_expr。如果antecedent_expr为TRUE,则检查器验证consequent_expr的值也为TRUE。如果antecedent_expr不是TRUE,那么无论consequent_expr的值如何,断言都是有效的。
- 前TRUE,后TRUE,则断言成功;前FALSE,后无所谓,断言都成功(就是成功)
-
例子:
`ovl_implication(CheckNonZero, a != 0, b != 0) //这个例子表示如果变量 a 的值不等于零,则变量 b 的值也必须不等于零。 如果在仿真中发现 a != 0 为真而 b != 0 为假, 那么将触发错误并报告 CheckNonZero 标签指定的问题。
-
详细介绍:
3、ovl_never:
-
功能描述:
-
ovl_never断言检查器在时钟的每个活动边缘检查单比特表达式test_expr,以验证表达式的计算结果不是TRUE。
-
例子:
-
详细介绍:
4、ovl_never_unknown:
-
功能描述:
-
ovl_never_unknown断言检查器检查时钟每个活动边缘的表达式限定符,以确定是否应该检查test_expr。如果qualifier的采样值为TRUE,则检查器计算test_expr,如果test_expr的值包含一个不是0或1的位,则断言失败。
-
检查器用于确保某些数据在重置序列之后只有已知值。当必要时它也可以用来验证三状态输入端口驱动和三状态输出端口驱动已知值时。
-
例子:
-
详细介绍:
5、ovl_one_hot:
-
功能描述:
-
ovl_one_hot断言检查器在时钟的每个活动边缘检查表达式test_expr,以验证表达式的计算结果为一个单热值(指只有一个位的值为1,其他都为0)。一个单热值恰好有一个位被设置为1。检查器用于验证控制电路,例如,它可以确保具有单热编码的有限状态机正常运行,并且恰好有一个位断言高。在数据路径电路中,检查器可以确保总线的使能条件不会导致总线竞争。
-
例子:
-
详细介绍:
6、ovl_range:
-
功能描述:
-
ovl_range断言检查器在时钟的每个活动边缘检查表达式test_expr,以验证表达式落在从min到max(包括最大值)的范围内。如果test_expr < min或max <test_expr,断言失败。
-
检查器对于确保某些控制结构值(如计数器和有限机器值)在其适当范围内是有用的。检查器对于确保数据路径变量和表达式在合法范围内也很有用。
-
例子:
-
详细介绍:
7、ovl_zero_one_hot:
-
功能描述:
-
ovl_zero_one_hot断言检查器在时钟的每个活动边缘检查表达式test_expr,以验证表达式的计算结果是一个one-hot值还是为零。一个one-hot单热值恰好有一个位被设置为1。
-
该检查器可用于验证控制电路、电路使能逻辑和仲裁逻辑。例如,它可以确保具有0 - 1冷编码的有限状态机正常运行,并且只有一个位被断言为高电平,否则为零。在数据路径电路中,检查器可以确保总线的使能条件不会导致总线争用。
-
例子:
-
详细介绍:
多周期断言:
8、ovl_cycle_sequence:
-
功能描述:
-
ovl_cycle_sequence断言检查器在时钟的活动边缘检查表达式event_sequence,以确定event_sequence中的位是否在时钟的连续活动边缘上依次断言。
-
例如,以下4位值序列(其中b是任意位值)是一个有效序列:1BBB -> BBB -> BBLB -> BBB1;此系列对应于时钟连续活动边缘上的以下一系列事件:
周期1event_sequence [3] = = 1
周期2event_sequence [2] = = 1
周期3event_sequence [1] = = 1
周期4event_sequence [0] = = 1
-
例子:
-
详细介绍:
9、ovl_next:
-
功能描述:
-
ovl_next断言检查器在时钟的每个活动边缘检查表达式start_event。如果start_event为TRUE,则发起检查。该检查将等待num_cks个时钟周期(即num_cks额外的活动时钟边),并计算test_expr。如果test_expr不为TRUE,断言失败。这些检查是流水线的,也就是说,每个周期都会启动一个检查start_event为TRUE(即使开启了重叠检查,并且发生了重叠违规)。
-
如果关闭重叠检查(check_overlap为1),则在等待当前检查时可以启动其他检查。如果开启了重叠检查,如果start_event被采样为TRUE,则断言失败(上一个时钟的情况除外)。
-
如果缺失开始检查是关闭的(check_missing_start为O),则test_expr在任何时候都可以为TRUE。如果开启了missing-start检查,那么如果test_expr为TRUE且没有对应的start事件(num_cks之前循环了),则断言失败。但如果test_expris为TRUE,在重置后的num_cks-1个周期内,没有对应的start事件,则结果是不确定的(即,在初始化结束后,test_expris为TRUE)。,缺失启动检查可能会失败,也可能不会失败)。
-
例子:
-
详细介绍: