一、将预封装模块设置为顶层
二、编辑I/O Buffer
Tool —> Settings
Options中将-faltten_hierarchy保持默认的rebuilt,试过其他教程推荐的full(意思是模块综合后的层级结构全部为平层,只剩下顶层)导致生成的edif文件识别失败。
因为Vivado在综合时会自动将顶层的I/O口插入buffer,设置-mode out_of_context属性,表示在该级不插入任何I/O buffer。
三、综合并导出网表文件
注意在综合前,应该将约束文件中涉及到debug的内容删掉,否则很容易出现ila报错。
综合过后,点开“Open Synthesized Design”,在TCL控制台输入命令:
(1)导出空壳引脚描述文件,输出文件名跟顶层名一致。
write_verilog -mode synth_stub E: /dac_test.v
若需要调用仿真,则改为以下命令:
write_verilog -mode funcsim E: /dac_test.v
(2) 导出综合后的网表文件。
① 不含Xilinx IP
write_edif E: /dac_test.edf
② 包含Xilinx IP
write_edif -security_mode all E: /dac_test.edf
四、导入网表文件
将封装模块文件删除,再将步骤三生成的.V和.edf文件导入,若生成网表文件时多出.edn文件,则.edn文件需要一并添入。
五、注意事项
(1)在步骤四中若不新建工程,在原工程文件中导入.V和.edf文件,则需要将步骤二的setting改为原来默认值,否则生成Bit文件报错;
(2)因为调用edf文件时parameter参数无法配置,顶层调用需要去掉这些宏定义,生产的时候注意配置parameter为最终需要使用的,否则模块不能正常工作。