我正在尝试廉价且准确地预测构建流程的所有SystemVerilog依赖项。可以过度预测依赖关系并找到一些非sv依赖项的Verilog文件,但我不想错过任何依赖项。
我是否真的必须解析Verilog以确定其所有依赖项?有tick-include预处理器宏,但那些tick-include似乎没有加载当前正在编译的所有代码。有一个SYSTEM\_VERILOG\_PATH
环境变量。我是否需要解析该SYSTEM\_VERILOG\_PATH
变量中的每个SystemVerilog文件,以确定在哪些文件中定义了哪些模块?
答案 0 :(得分:1)
一种好的方法(如果这是可综合的代码)是使用您的综合工具文件列表(例如Altera的.qsf)。这往往是完整的,但如果不是,您可以查看构建日志中找到的丢失文件。
答案 1 :(得分:1)
从易于编译的环境中可以转储源文件 (例如Cadence
-- To list source files used by the snapshot 'worklib.top:snap'
% ncls -source -snapshot worklib.top:snap
)
但如果你从头开始我恐怕没有简单的解决方案。我会选择实用的:拥有包含.sv文件的所有目录的配置文件,然后编译其中的所有内容。如果您的项目具有适当的文件结构,您还可以通过为每个主要块提供配置文件来模块化。
希望有所帮助。
答案 2 :(得分:0)
我知道Questa有一个命令行选项,它会在编译完设计后为你生成一个包含所有依赖项的makefile。我不确定其他模拟器是否有这个。
另一种选择是在模拟器中浏览和转储已编译的库。您可能无法获得编译模块的实际文件名,但是解析编译库中显示的模块名称的所有verilog文件会更容易。