描述
我从Vivado项目导出了一个EDIF文件,以便将其用作另一个项目的子模块。
然后,我将.edf文件添加到我的新项目中并在顶层实例化它。设计层次结构看起来是正确的,但综合表示未找到子模块。
如果我为子模块导出Verilog并在同一顶级实例化它,它可以正常工作。
使用write_edif生成的edif输出时有任何限制吗?
解
从功能上讲,导出的EDIF和Verilog结构网表都应该在后综合设计中使用。
然而,在综合期间(仅),对于仅作为EDIF(或NGC)可用的较低级模块,需要基于RTL的综合“存根”。
如果您的顶级是VHDL,则组件声明是指定此方法的最常用方法。
但是,如果您的顶级是Verilog,则需要提供与较低级别EDIF模块(具有匹配端口)对应的Verilog空模块,以满足综合存根要求。
当您的较低级别是结构Verilog时,该模块定义直接起作用,因此不需要额外的存根文件。
对于EDIF导出,您还可以使用相同的设计导出综合存根文件,仅使用端口,如下所示:
2017.4及之前:
write_edif module.edf
write_verilog -mode port module_stub.v
2018.1以后:
write_edif module.edf
write_verilog -mode synth_stub module_stub.v
现在,如果将module.edf 和 module_stub.v添加到项目中,事情就会起作用。
存根文件将仅在综合期间使用,模块在综合期间将保持黑盒子,但EDIF将自动用于解析后综合设计中的黑盒子。
没有回复内容