转载:关于Vivado综合选项——Out of context per IP和Gobal

转载:关于Vivado综合选项——Out of context per IP和Gobal

原文地址:https://www.cnblogs.com/yhsy1002/p/7441309.html
关于Vivado综合选项——Out of context per IP和Gobal
Vivado生成IP输出文件注意的地方,是选择Global还是Out of context per IP:
在这里插入图片描述

(1)vivado默认是第二种,Out of context per IP是指让vivado在综合的时候对IP进行单独综合,生成.dcp文件,然后再工程要用到IP的时候,只需从.dcp文件中解析出对应IP的网表文件即可,而不需对IP进行重新综合,这样的方式可以加快综合的速度;而Gobal选择则是每次工程综合的时候,IP核都会和工程一起综合,这样综合的时间就很长,而且Global选项不会产生.dcp文件,因为工程综合的时候是对IP核的源码进行综合的。

(2)把IP加到自己的工程中,这里假设综合是采用Out of context per IP进行,如果要把IP和加到自己工程中,我们就需要IP核的顶层设计模块,而由于采用Out of context per IP的时候只会输出包含网表的.dcp文件,所以工程用到IP的时候是不会直接调用源码模块的。而是会调用一个*stub.v的Black Box模块,这个模块值包含IP和顶层模块的输入输出定义,工程表面上是调用这个模块,实际上是解析.dcp文件中的网表,这样工程就可以进行综合了。

<think>好的,用户现在问的是“在哪里Out of Context Per IP”,这需要我详细解释如何在Vivado中设置每个IP核的Out of Context(OOC)综合模式。首先,我需要回忆一下Vivado中的OOC选项的作用位置。 用户之前询问过关于MIG编译速度慢的问题,现在这个问题可能是在优化流程中遇到的,想通过设置OOC来减少重复编译时间,提高效率。OOC模式允许每个IP核独立综合,生成后的DCP文件可以在主工程中重复使用,这样在整体综合时就不需要重新处理这些IP,节省时间。 接下来,我需要确定在Vivado中哪里找到这个设置。通常,当用户创建或配置IP核时,在IP的设置界面会有综合选项,这里应该有一个下拉菜单选择OOC模式。此外,用户可能需要了解OOC的具体步骤,包括生成IP、设置OOC、以及如何集成到主工程中。 需要分步骤说明,首先是如何在生成IP时设置OOC,然后是修改现有IP的OOC设置。同时,可能还需要提到使用TCL命令的方法,因为有些高级用户可能更倾向于脚本操作。此外,需要注意OOC的优点缺点,比如减少编译时间,但可能需要更多的存储空间,以及同步更新时的注意事项。 用户可能还想知道OOC模式对项目流程的影响,比如是否需要手动管理DCP文件,或者在团队协作中如何维护这些预生成的IP核。因此,我应该包括一些最佳实践,比如版本控制、定期更新IP等。 最后,总结一下适用场景,帮助用户判断是否适合使用OOC模式。比如在IP稳定不变的情况下使用,或者在需要快速迭代用户逻辑时,分离IP主工程可以节省时间。需要提醒用户如果IP频繁修改,OOC可能反而增加管理负担。 可能还需要提到相关的设置选项,比如在Project Settings中的综合设置,是否有全局的OOC选项,或者是否每个IP需要单独设置。此外,如果在IP生成后修改了参数,如何重新生成OOC输出,确保主工程使用最新的DCP文件。 需要确保回答清晰、步骤详细,并且给出示例,比如截图的位置或TCL命令,这样用户能够按图索骥。同时,避免使用过于专业的术语,保持解释的易懂性,特别是考虑到用户可能对Vivado界面不熟悉的情况下。</think>在 Vivado 设计工具中,**Out-of-Context (OOC) Per IP** 是一种针对特定 IP 核的独立综合与实现模式,可以显著加速设计迭代。以下是其核心概念、设置位置及操作流程的详细说明: --- ### **1. Out-of-Context (OOC) 模式的作用** - **核心思想** 将 IP 核与主工程分离,**独立完成综合(Synthesis)与实现(Implementation)**,生成 `.dcp`(Design Checkpoint)文件供主工程直接调用。 - **优势** - **减少重复计算**:IP 核稳定后,主工程编译时跳过其内部逻辑处理。 - **隔离错误**:IP 核的时序问题不会直接影响主工程调试。 - **并行开发**:允许团队独立开发 IP 核与顶层逻辑。 --- ### **2. OOC 模式的设置位置** #### **(1) 创建 IP 时直接启用 OOC** 1. **打开 IP Catalog** - 右键工程 → **Add IP** → 选择目标 IP(如 MIG、AXI DMA 等)。 2. **配置 IP 参数** - 在 IP 配置界面设置参数(如接口类型、时钟频率等)。 3. **启用 OOC 模式** - 在 IP 配置界面底部,找到 **"Generate Output Products"** 窗口: - 勾选 **"Out of Context per IP"**(默认可能已勾选)。 - 选择 **"Global"** 或 **"Per IP"** 模式(建议选 "Per IP")。 - **路径示例**: ![Vivado OOC 设置界面示例](https://example.com/ooc_setting.png)(注:此为示意路径,实际需通过 GUI 操作) #### **(2) 修改已有 IP 的 OOC 设置** 1. **在 Sources 面板中定位 IP** - 展开 **Design Sources** → 找到目标 IP 核(如 `char_fifo`、`mig_7series_0`)。 2. **右键 IP 核选择设置** - 右键 IP 核 → **Generate Output Products...**。 3. **调整 OOC 选项** - 在弹出的窗口中: - 勾选 **"Out of Context per IP"**。 - 选择综合策略(如 **"Vivado Synthesis Defaults"**)。 --- ### **3. OOC 模式的工作流程** #### **典型步骤** 1. **生成 IP 核的 OOC 输出** - 右键 IP → **Generate Output Products** → 工具自动生成以下文件: - `.dcp`:综合后的设计检查点。 - `.xci`:IP 核的配置信息。 - 配套的 HDL 封装文件(如 `.v`/`.vhd`)。 2. **主工程调用 OOC 结果** - 主工程综合时,直接读取 `.dcp` 文件,跳过 IP 核内部逻辑处理。 3. **更新 IP 时的操作** - 若修改 IP 参数,需重新执行 **Generate Output Products** 以更新 `.dcp`。 --- ### **4. 关键注意事项** #### **(1) 文件管理** - **路径隔离**:OOC 文件默认生成在 `<project_dir>/<project>.srcs/sources_1/ip/<ip_name>` 目录下。 - **版本控制**:需将 `.xci` `.dcp` 文件纳入版本管理,避免协同开发冲突。 #### **(2) 时序约束处理** - **OOC 约束继承**:IP 核的时序约束(如 `XDC` 文件)会被封装到 `.dcp` 中,但主工程仍需处理跨时钟域约束。 - **例外情况**:若 IP 核依赖顶层时钟(如通过 `get_clocks` 引用),需在主工程中重新定义相关时钟。 #### **(3) 调试影响** - **ILA 集成限制**:若在 IP 核内部插入 ILA 调试核,需在 OOC 阶段生成调试 Hub,否则主工程可能无法识别。 --- ### **5. TCL 命令强制控制 OOC** 通过脚本可批量管理 OOC 模式: ```tcl # 为特定 IP 启用 OOC set_property GENERATE_SYNTH_CHECKPOINT {true} [get_files <ip_name>.xci] # 全局设置所有 IP 为 OOC set_property synth_checkpoint_mode Hierarchical [current_project] ``` --- ### **6. 常见问题与解决** #### **Q1: OOC 模式为何未生效?** - **可能原因**:IP 核未成功生成 `.dcp` 文件。 - **验证方法**:检查 `<ip_dir>/synth` 目录下是否存在 `<ip_name>.dcp`。 #### **Q2: 修改 IP 后主工程未更新?** - **解决步骤**: 1. 重新运行 **Generate Output Products**。 2. 在主工程中 **Reset Output Products** → **Re-Run Synthesis**。 #### **Q3: OOC 导致时序违例?** - **处理建议**: - 检查主工程中是否遗漏 IP 核的输入/输出延迟约束。 - 使用 `link_design -mode out_of_context` 单独验证 IP 核时序。 --- ### **总结** **Out-of-Context per IP** 的核心价值在于**解耦 IP 核与主工程编译流程**。通过合理使用此功能,可显著缩短迭代时间,尤其适用于以下场景: - IP 核参数已稳定,仅需优化顶层逻辑。 - 设计包含多个大型 IP(如多个 DDR 控制器)。 - 团队分工开发(IP 核与系统集成并行)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值