【问题标题】:How to pass ifdef defines to a .f file如何将 ifdef 定义传递给 .f 文件
【发布时间】:2020-02-18 18:15:07
【问题描述】:

您好,有什么方法可以在 .f 文件中添加 `ifdef。我有一个包含分层编译的 .f 文件。

`ifdef ASIC

rtl/a.v

`else
rtl/b.v
endif

这是我的意图,如果 ASIC 被传递为定义 a.v 需要编译。否则 b.v.上面的代码在不添加任何额外的东西的情况下可以工作吗?

【问题讨论】:

  • 不,verilog 工具没有提供任何方法。你可以为它写一个脚本。但是我强烈建议避免使用这种方法,因为它最终会造成维护噩梦。
  • 感谢您的回复。我的目标是我需要在编译期间传递文件列表,以便根据我的主 perl 脚本中的定义以及编译选项传递文件需要从文件列表中编译(该文件也将添加为 -f filelist.f用我的编译选项)。我打算将 perl 脚本中的选项传递给文件列表。您有什么建议或更好的方法吗?
  • 您可以在 perl 脚本中生成文件列表。

标签: compilation verilog conditional-compilation


【解决方案1】:

我不知道有任何工具可以在命令行上执行此操作。在构建过程中动态创建 .f 文件,或者使用 Verilog 文件来代替。

`ifdef ASIC

`include "rtl/a.v"

`else
`include "rtl/b.v"
`endif

【讨论】:

  • 感谢 dave_59 的回复。那么您的意思是您共享的代码 sn-p 我可以将其制作为 verilog 或 systemverilog 文件并使用它吗?另外,如何在构建过程中动态创建 .f 文件?我的目标是我需要在编译期间传递文件列表,以便根据定义以及编译选项传递文件需要从文件列表中编译。我打算将 perl 脚本中的选项传递给文件列表。您有什么建议或更好的方法吗?
  • 是的,代码sn-p应该做成Verilog文件。这假设您在 file.f 中拥有的唯一内容是其他文件的列表,并且没有其他命令行开关。如果是这样,您必须将它们保存在单独的 .f 文件中。如果您从 perl 脚本构建模拟脚本,那么您也没有理由不能从 perl 创建 file.f。
  • 这假设您在 file.f 中的唯一内容是其他文件的列表,并且没有其他命令行开关。如果是这样,您必须将它们保存在单独的 .f 文件中。如果您从 perl 脚本构建模拟脚本,那么您也没有理由不能从 perl 创建 file.f。我没明白这两行是什么意思,你能详细说明一下吗?
猜你喜欢
  • 1970-01-01
  • 2011-04-18
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
相关资源
最近更新 更多