为什么编译面向对象的SystemVerilog代码这么慢?

时间:2014-05-03 17:04:07

标签: class compilation system-verilog

为什么商业SystemVerilog编译器每次都必须重新编译所有内容?在这个问题中,我只是指不可合成的面向对象的SystemVerilog代码。

例如,许多项目都使用SystemVerilog UVM library。每次编译时,我的模拟器都会解析并编译UVM库,包括我模拟所不需要的95%。为什么我不能准备好可以用于每次模拟的预编译版本?

相比之下,其他语言不需要编译已编译且未更改的代码。例如:

  • C ++编译.cpp个文件一次,然后将它们链接到可执行文件
  • Java将所有文件编译成.class个文件,这些文件在执行期间使用类加载器动态加载

1 个答案:

答案 0 :(得分:2)

我使用的所有模拟器都提供了增量编译选项。这意味着如果您更改一个文件,则只会重新编译包含该文件的包以及导入该包的任何后续包/模块。

其中一个大3模拟器确实为您提供了可以直接使用的预编译版UVM(包括DPI)。问题是它没有用`UVM_NO_DEPRECATED编译。如果你想使用那个define,那么你可以自己编译它(包括DPI代码及其调试功能),可选择使用渐进式编译(交换机类似于-incr)。

我使用过的另外一个三大模拟器默认启用增量编译。