Generate Output Products与Create HDL Wrapper
这两者在 Vivado 的 Block Design (BD) 设计流程中分工明确简单来说Generate Output Products 是处理 BD 内部的“脏活累活”而 Create HDL Wrapper 是给 BD 套上一层对外沟通的“代码外衣”。以下是详细的区分以及添加新 IP 后的操作指南1. Generate Output Products生成输出产物这是将你在图形化界面连好的线、配置好的 IP 核真正翻译到底层的过程。它干了什么Vivado 会针对 BD 内部的每一个 IP 核生成底层的综合网表.dcp文件、仿真模型文件、引脚约束文件以及实例化的 HDL 代码。通俗理解把图形化的图纸扔进工厂生产出内部所有的真实零件和内部连线。2. Create HDL Wrapper创建 HDL 顶层封装Vivado 的综合工具只认纯文本的代码Verilog 或 VHDL作为顶层Top Module不能直接把图形化的 BD 文件作为顶层去编译。它干了什么它会自动生成一个纯文本的.v或.vhd文件。这个文件里面没有具体的业务逻辑只有一个大模块的声明并且把你的 BD 作为唯一的一个组件Component/Instance实例化在里面。通俗理解给组装好的机器BD套上一个带有标准插座的外壳。以后你想把这台机器连到外部引脚或者跟你自己写的其他 Verilog 代码连起来都是通过这个外壳上的插座来插拔。当你在 Block Design 里面新加了一个 IP 核需要重新生成吗结论Generate Output Products 必须重新生成但 Create HDL Wrapper 不一定。必须做的事重新 Generate Output Products只要你修改了 BD 内部的任何东西哪怕只是改了一个 IP 的参数或者连了一根线更别说新增 IP 了你都必须重新执行 Generate Output Products。如果不执行底层就找不到新加零件的代码综合时绝对会报错。通常你保存 BD 时Vivado 也会弹窗提醒你 Out-of-date 并让你重新生成。视情况而定的事Create HDL Wrapper是否需要重新生成 Wrapper取决于你加的这个新 IP有没有向外引出新的端口Make External情况 A没有引出新端口。这个新 IP 仅仅是在 BD 内部跟已有的 IP 连在了一起。因为整个机器对外的“插座”数量和名字没变外壳依然适用你不需要重新生成 Wrapper。情况 B引出了新的外部端口。你把新 IP 的某个引脚Make External了这意味着对外接口变了。这时是否需要手动操作取决于你最初创建 Wrapper 时的选项如果是 Vivado 托管Let Vivado manage wrapper and auto-update这是默认也是最推荐的选项。你不需要手动点击。当你保存 BD 并在 Vivado 点击综合或跑流程时后台会自动把新端口更新到 Wrapper 文件里。如果是允许用户编辑Copy generated wrapper to allow user edits如果你之前选了这个模式打算自己手动写顶层代码那么 Vivado 就不会再管它了。你必须手动打开那个 Wrapper 的.v文件把新的端口敲进去或者干脆删掉旧的重新 Create 一次。