SystemVerilog $unit 编译单元介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SystemVerilog $unit 编译单元介绍相关的知识,希望对你有一定的参考价值。
参考技术ASV中增加了编译单元的概念,就是 SV源文件编译的时候,一起编译的所有源文件
编译单元域在搜索顺序中排第三位
举个栗子
这里我们创建了两个包(a_dpk和b_dpk),两个包中的都只有一个打印函数,同时module中也有一个打印函数,(打印函数用于指示所在位置)
打印结果如下:
image-20211216201944989
运行结果如下:
可以看到此时打印的是在module中导入的包
那么接下来我们把在module中导入的包注释掉,即把 import a_dpk::*; 注释掉
下面运行结果:
此时终于把导入$unit编译单元域的内容打印出来了
这也就是为什么 编译单元域在搜索规则中排第三
那么为什么编译单元域叫 $unit 呢?我们可以再把代码更改一下
我们把 b_dpk 注释掉,但依旧将其导入,看看运行结果
这里直接显示错误在 $unit ,或许$unit只是一个名称,就好像上例中module命名为 test_tb 一样
格式为:
这是C语言中常用的技巧,如果第一次遇到导入语句将其编译到$unit中,再次出现则不会编译
下面我们将上篇笔记中的包用这种方式仿真一下,先给出上篇笔记中包的内容
我们将文件名命名为 definitions.dpk ,其中后缀 .dpk 是随便起的
下面是源码和测试文件
运行结果如下
本文主要参考
以上是关于SystemVerilog $unit 编译单元介绍的主要内容,如果未能解决你的问题,请参考以下文章
systemverilog 的解决方法没有 `if 编译器指令