Verilog系列:【33】‘include小结

引言

`include编译器指令用于在代码行中包含任何其他文件的内容,被包含的文件即可以使用相对路径定义,也可以使用绝对路径定义。

本文将对`include使用过程中遇到的问题进行总结归纳。

1.使用方法

`include类似于C语言中的#include结构,该指令通常用于将内含全局或公用定义的头文件包含在设计文件中。例如:

`include "../../primitive.v"

// 注意:这里的要包含文件需要用双引号括起来

// 编译时,上面这一行将会被"../../primitive.v"中的内容所替换

... ...

<design.v文件的源代码>

... ...

`include结构示意如下如所示:

1 include图解

上图示例,在编译的时候,需要对`include命令进行预处理,将file2.v中的内容全部复制插入到file1.v文件中的`include命令处。同理,在文件file.v中,用file1.v文件中的内容替换`include出现的地方,这样实际效果类似于图中右侧部分,而在实际编译的时候,是将file.v文件中的内容展开为图中右侧部分的结构,进而进行编译。

2.注意事项

· 一条`include命令只能指定一个被包含的文件,如果需要包含多个文件,则需要使用多个`include命令进行包含。

· 多个`include命令可以写在一行,在`include命令同一行中只可以出现空格和注释行。

e.g.`include"file1.v"   `include"file2.v"

· `include命令后加入的文件名称必须放在双引号中。

· `include中包括的文件需要使用绝对路径或者相对路径,如果不增加路径信息,则默认在当前路径下搜寻要包含的文件,或者在进行编译时指定被包含文件所在路径,否则,编译时默认在当前仿真路径下搜寻`include中的文件,如果该文件不在当前路径,则会找不到被包含的文件。当然可以在仿真时在编译命令中加入搜寻路径(该路径为`include文件所在的路径),例如使用+incdir+(file_path)增加搜索路径,这样编译时会在增加的搜寻路径下寻找找寻`include中包含的文件。

· 如图1,如果file1.v文件要用到file2.v中的内容,则在使用`include命令时,file2.v必须出现在file1.v文件前。

· `include可以使用嵌套格式,如图1所示。

· `include命令中的文件如果定义有module,那么该`include命令应该置于要引用其的moudle模块定义之外,这样该module将会与当前被引用的module处于同一个编译空间,即此时相当于将该`include命令中的文件增加到filelist中。当然,也可以将`include命令中的文件包含在当前调用的module中,但是此时该module仅对当前module可见,失去了单独定义该module为其他设计调用的意义。

总结

在实际使用`include包含文件时,特别需要注意`include包含文件的顺序以及包含文件存放的路径等问题。

全部评论

相关推荐

点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务