SystemVerilog中的typedef前置声明方式

SystemVerilog中,为了是代码简洁、易记,允许用户根据个人需要使用typedef自定义数据类型名,常用的使用方法可参见“definetypedef区别”。但是在SystemVerilog引入面向对象编程后,经常会遇到在编写某个类或者类型的定义之前需要先使用对变量进行声明,往往这种情况下编译都会报错,为此本文示例typedef的另外一种用法,可以称之为“forward typedef”。

【示例】未使用forward typedef 

【仿真结果】 

示例中,因为transaction的定义出现在使用该类型的transactor之后,所以在编译时,仿真器编译到transactor中的transaction时,发现已经变异的库中并没有对应文件的定义,所以此时编译会报错,认为transaction还没有定义。但是往往在进行验证环境设计搭建时,经常需要像示例中的方式使用,为此SystemVerilog中可以通过typedef将要使用的类型进行前置,如下例。

【示例】 

【仿真结果】 

但是使用时必须要注意,如果使用forward typedef”,那么被typedef前置的类型的定义必须在当前代码的后续编译过程中出现其定义,否则还是会报错,如下例。

【示例】 

【仿真结果】 

除了上述用法外,typedef还可以用于具有参数的class

【示例】 

【仿真结果】 
通过上述示例,typedef可以用于将一些数据类型进行前置声明(forward declaration),这样仿真工具允许该类型的定义在后续的编译过程中再出现,特别是对于比较复杂的验证环境的构造过程中,该种用法还是比较多的。但是这里需要注意的时,一旦使用typedef的前置声明方法,那么在后续的编译过程中,必须要出现前置声明的类型的具体定义。 
全部评论
楼主厉害啊
点赞 回复 分享
发布于 2022-10-15 17:31 山西

相关推荐

当初高考报计算机真是造大孽了啊!卷的飞起!哪都是计算机的人,考研,考公,找工作全他奶的计算机的人,太难了。国企也是。关键一届比一届卷,造大孽了!
_Lyrics_:因为计算机,没有体验到快乐的大学研究生时光,好不容易修完课程就要出去实习,看着别人专业可以一起搓麻将,游山玩水,而我却要自己一个人住在北上不到十平米的出租屋,每天两点一线
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务