对于 Verilog 工具来说,跟踪 Verilog 源文件的文件名和文件中的行号非常重要。这些信息可用于错误信息或源代码调试,并可由 Verilog PLI 访问。
但在许多情况下,Verilog 源代码会被其他工具预处理,原始源文件的行和文件信息可能会丢失,因为预处理器可能会在源代码文件中添加额外的行,将多个源代码行合并为一行,串联多个源文件等。
这里就可以使用 `line 编译器指令来指定原始源代码的行号和文件名。这样,即使其他进程修改了源代码,原始文件中的位置也能保持不变。指定新的行号和文件名后,编译器就能正确引用原始源代码的位置。
该指令的语法描述如下:
其中number参数应为正整数,用于指定下一行文本的新行号。 Filename参数应是一个字符串常数,被视为文件的新名称,文件名可以是完整路径名或相对路径名,level参数应为 0、1 或 2。 值 1 表示下一行是包含该文件后的第一行。值 2 表示下一行是该文件退出后的第一行。值 0 表示任何其他行。例如:
当编译器处理文件的剩余部分和新文件时,每读取一行,行号就会递增,文件名也会更新为当前正在处理的新文件。行号应在每个文件开始时重置为 1。开始读取包含文件时,应存储当前行和文件名,以便在包含文件结束时恢复,更新后的行号和文件名信息可供 PLI 访问。
点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!