定义系统verilog中的可见性

时间:2014-10-13 05:58:52

标签: verilog system-verilog

如果未提供defines选项,sv文件中的-mfcu是否会在下一个文件中显示?

使用-mfcu选项[以及verilog],在一个文件中声明的defines对于下一个文件肯定是可见的。

1 个答案:

答案 0 :(得分:2)

没有。 ModelSim / Questa中的默认值为 S ingle F ile C ompilation U nit。这意味着命令行上的每个文件都被视为一个单独的编译单元(`include文件始终是包含它们的文件的同一编译单元的一部分)。在一个编译单元中定义的定义,类型,函数,任务等对另一个编译单元是不可见的。这与C / C ++编译相同,是我们的首选设置。

为了向后兼容Verilog,所有Verilog文件都在一个编译单元中编译。切换-mfcu将Verilog和SystemVerilog文件( M 多个 F ile C ompilation U nit)放入单个编译单元。

请注意,在单独的编译步骤中编译代码时,每个步骤都会创建一个单独的编译单元。此示例脚本创建了4个编译单元。

vlog -mfcu file1.sv file2.sv #compilation unit 1
vlog -mfcu file3.sv file4.sv #compilation unit 2
vlog file5.sv file6.sv       #compilation units 3 and 4