讲透filelist中+incdir+ 和 `include 的用法

说明:

       在大多数 Verilog 编译器(如 VCS、ModelSim/Questa、Verilator)中,使用 +incdir+ 选项指定头文件的路径后,仍然需要在 filelist 文件中列出每一个 Verilog 源文件。+incdir+ 选项仅告诉编译器在特定目录中查找头文件(例如 .vh / .inc 文件),而不会自动包含这些目录中的 Verilog 源文件。你需要明确地列出每一个 Verilog 源文件,以便编译器知道要编译哪些文件。

举个栗子:

filelist 文件示例

假设你的项目结构如下:

project/
├── includes/
│   ├── common_defines.vh
│   └── custom_defines.vh
├── src/
│   ├── module1.v
│   ├── module2.v
│   └── top.v
└── filelist.f

你应该在 filelist.f 文件中这样写:

+incdir+./includes
./src/module1.v
./src/module2.v
./src/top.v

但是这里有一点需要注意:

在 Verilog 源文件中使用 `include "common_defines.vh"指令来引用包含文件。编译器会根据+incdir+` 选项找到这些文件,(不需要完整的文件路径!

对这两个命令做一下详细的说明:

+incdir+ 选项
  • 作用:指定包含文件(如 .vh 文件)所在的目录路径。
  • 用途:告诉编译器在这些目录中查找 \include` 指令中引用的文件。
  • 示例+incdir+src/include/ 让编译器在 src/include/ 目录中查找包含文件。
` include指令
  • 作用:在 Verilog 源文件中插入另一个文件的内容。
  • 用途:实际上将包含文件的内容插入到使用 \include` 指令的文件中。
  • 示例\include "definitions.vh"definitions.vh` 文件的内容插入到当前文件中。

为什么需要 \include` 指令:

     尽管 +incdir+ 选项告诉编译器在哪里查找包含文件,但它不会自动将这些文件包含到你的 Verilog 源文件中。你仍然需要使用 ` include 指令在需要的地方显式地包含这些文件。

但是有时候你会发现,没有在verilog 源文件开头使用include 指令,竟然也能编译成功,这是为什么?

推荐做法:

尽管有些工具可能能够自动处理包含路径并成功编译,但为了确保代码的可移植性和可维护性,推荐使用显式的 \include` 指令来包含必要的文件。这有助于避免在不同工具或环境下的行为差异。

结论:

如果你的项目能够在不使用 \include指令的情况下成功编译,这可能是由于你使用的工具具有自动包含文件的特性。然而,为了确保代码在各种环境下的一致性和可维护性,建议显式地使用`include` 指令来包含必要的文件。这样可以避免由于工具行为差异导致的潜在问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值