Dinglei_hello · 2021年12月02日

3个SystemVerilog新特性!

image.png

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。在继承的子类中定义具体行为。

作者:验证哥布林
原文链接:芯片验证工程师
微信公众号:
 title=

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏
推荐阅读
关注数
10944
内容数
1211
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息