如何在Yosys中输出依赖文件(相当于gcc -MMD)?

时间:2017-12-08 17:14:45

标签: makefile yosys

是否有Yosys的命令,它创建一个等同于gcc选项-MMD的依赖文件? (此选项输出一个小的Makefile片段,列出编译单元包含的所有文件。请参阅Using g++ with -MMD in makefile to automatically generate dependencies

背景:我尝试构建一个Makefile,它使用Yosys合成一个verilog项目。该项目使用单个顶级verilog文件,其中包含其他verilog依赖项。为此,我使用以下make规则,该规则非常有效:

$(HARDWARE_BLIF_FILES): $(SUITE_OBJ_DIR)/%.blif : $(SUITE_SUPPORT_HARDWARE_DIR)/%.v
    $(HARDWARE_YOSYS) -q -p 'read_verilog -I/path/to/hwlib $<' -p 'synth_ice40 -blif $@'

由于我不想明确提及Makefile中的其他verilog文件,我想使用依赖文件。这将允许检测应用于任何依赖项文件的更改并触发重新编译。

由于Clifford添加了新的yosys -E选项,我可以按如下方式更改上面的Makefile规则:

-include $(HARDWARE_BLIF_DEP_FILES)

$(HARDWARE_BLIF_FILES): $(SUITE_OBJ_DIR)/%.blif : $(SUITE_SUPPORT_HARDWARE_DIR)/%.v
    $(HARDWARE_YOSYS) -q -E $(SUITE_OBJ_DIR)/$*.v.d -p 'read_verilog -I/path/to/hwlib $<' -p 'synth_ice40 -blif $@'

现在,只要其中一个隐式引用的Verilog文件发生变化,就会生成blif文件。

1 个答案:

答案 0 :(得分:2)

这样的功能现已添加到Yosys git head(a96c775)中。只需在您的yosys调用中添加-E <depsfile>即可生成依赖项文件。