推荐答案
测试一下
题目
2 property属性
参考答案与知识点
参考答案
在 SystemVerilog 中,property 是用于描述时序行为或设计规格的声明性结构,通常与断言(assertion)配合使用。property 可以定义复杂的时序关系,支持多种操作符如蕴含(|=>、|->)、延迟(##)、重复([*n])等。核心作用包括:形式验证、动态仿真检查以及覆盖率收集。property 分为两类:立即断言(immediate assertion)使用关键字 assert,通常放在过程块中,每次执行时立即检查;并发断言(concurrent assertion)基于 property 定义,在时钟边沿采样,可以跨多个时钟周期。定义 property 时需先定义 sequence(序列),再使用 property 组合多个序列。例如:property p; @(posedge clk) a |-> ##1 b; endproperty 表示时钟上升沿时若 a 为真,则下一拍 b 必须为真。property 可带参数实现复用。易错点包括:clogic 与 logic 混用、序列起点不明、蕴含操作符左右时钟域不一致、未正确匹配时钟边沿、误用 assert 与 assume 的区别(assume 用于环境约束)。此外,property 常用于 SVA(SystemVerilog Assertions),需注意其层次结构:sequence -> property -> assert/cover/assume。编写 property 时推荐使用局部变量和禁止非法条件,避免过深的嵌套。对于覆盖率统计,cover property 可记录属性命中次数。总之,property 是验证中描述时序依赖和协议的关键语法,需结合具体设计协议进行精细建模。
涉及知识点
- SystemVerilog property 定义与用法
- 并发断言与立即断言的区别
- 蕴含操作符 |-> 与 |=> 的应用
- property 中的时钟与序列组合
- assert/assume/cover 三种检查方式
- SVA 层次结构:sequence→property→check