01 begin_keyword
end_keyword
硬件描述语言中有很多特殊的编译或者综合等工具的预执行指令,在某些场景下我们可以利用一下HDL之外的语法去指导工具,而不是信马由缰。这两个define可以在代码的任何部分之间使用,以保持Systemverilog的向后,即向verilog的兼容性。如果你一开始是使用Verilog搭建测试平台,然后希望迁移到SystemVerilog,或者你一开始使用Verilog设计,后来希望能使用Sytemverilog。
你可以使用这个define去引导工具避免编译错误。
02 let语法结构替换宏
package example_package;
let expand_operation (a,b) = assert ( !a & b)
end package;
module test ( …);
import example_package::*;
always @ ( …) begin
expand_operation (read,write); // expands to assert(!read & write)
end
end module
1、在package里面定义一个let语法结构,类似于函数定义,用来断言某个行为一直成立。
2、然后在任何地方import这个package就可以使用一模一样的let定义。
3、最后在设计中或者验证环境中使用expand_operation let语法结构去实现断言。
03 pure constraints
virtual class example;
pure constraint valid;
endclass
允许在抽象类中声明纯约束,只声明不具体定义。
具体用法同virtual class。在继承的子类中定义具体行为。
作者:验证哥布林
原文链接:芯片验证工程师
微信公众号:
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏