vivado 用XDC约束IP和子模块

用XDC约束IP和子模块

当使用Package IP创建IP并从Vivado IP目录中使用它时,XDC约束可以也可以包装以供包含。Vivado Design Suite中的任何IP都是即插即用的,即IP不需要必须剪切和粘贴约束才能完成的样例项目您的顶层设计约束。相反,IP可以与XDC文件打包为IP开发,就好像它是一个独立的顶级设计。Vivado工具负责当使用IP在项目中实例化IP时,适当地读取约束目录类似地,您可以为设计的子模块开发约束,并使用相同的范围通过设置SCOPED_TO_REF/SCOPED_TO_CELLS XDC文件属性,将机制设置为IP核心在项目流中适当,或在“非项目”中使用read_xdc-ref/-cells命令模式

范围查询指南

为了使此流顺利工作,必须编写XDC约束,以便约束保持在IP或子模块实例的本地。Vivado工具可以设置的范围查询到层次结构的特定级别,如前面在“约束范围”中所见。什么时候为IP或子级模块开发约束时,必须了解的行为查询命令:

•Cell/net/pin对象查询仅限于作用域实例及其子级别:

○gget_cells/get_nets/get_pins<名称模式>

○对象的NAME属性显示对象相对于的完整分层路径顶级实例,而不仅仅是作用域实例。如果使用的-filter选项在NAME属性上的get_*命令,必须使用glob字符串匹配运算符并且提供以a*开始的图案。例如:get_nets-层次结构-筛选器{NAME=~*clk

•网表帮助器命令也有作用域:

○aall_ffs、all_latches、all_rams、all_registers、all_dsps、all_hsios return

仅包括在当前实例中的实例。

•IO助手命令根本不能在作用域XDC中使用:

○所有输入,所有输出

•时钟命令不受作用域限制,将返回您设计的所有计时时钟。

○gget_clocks,all_clocks

•通过使用get_clocks探测网表,可以查询顶级和本地时钟对象-的对象。

○使用get_clocks-of_objects检索进入当前实例的时钟[get_ports<interfacePinName>]。

○使用get_clocks检索当前实例内部自动生成的时钟

-of_objects[get_pins<instName/outPin>],其中instName是时钟生成器实例。

•使用-of_objects选项可以查询设计中的任何对象:

○示例:get_pins-leaf-of_objects[get_nets local_net]

•支持对连接到当前实例接口网络的顶级端口进行查询:

•不允许查询IP/子模块接口引脚:

○“get_pins clk”返回一个错误。

•路径跟踪命令也有作用域:

○aall_fanin/all_fanout遍历作用域设计并在其边界处停止。

•将get_cells/get_pins/get_nets与最特定的模式一起使用,而不是使用all_registers命令,带有-current选项,用于查询连接到特定时钟。返回的列表可能很大,而只需要受限这可能会对运行时产生负面影响。

范围界定的时间限制指南

为了避免对顶层设计产生负面影响,重要的是要确保为IP或子模块编写的约束不会传播到其边界之外,除非在某些情况下,时钟定义。例如,考虑在IP XDC中定义错误路径约束的情况进入IP的两个时钟。IP包括用于异步时钟的适当电路边界,但可能不适用于设计的其余部分。如果两个时钟是相关的,并且必须在设计的其余部分一起计时,以便拥有合适的硬件功能。此外,如第7章:XDC优先级所述,IP XDC文件中定义的定时异常可以具有比顶级约束更高的优先级,并且可以覆盖它们,即不想要的。为了避免这种情况,AMD建议您将约束应用于网表IP本地的对象。在两个全局时钟之间存在错误路径的情况下,错误路径必须从IP内的一组起点单元格应用到IP内的另一组终点单元格IP也是如此。这种技术被称为点对点异常,而不是全局异常例外情况。

IP/子模块的推荐约束规则XDC

块级约束必须符合以下规则:

1.如果预期在顶级设计。相反,可以使用get_clocks-of_objects命令在块内部查询它们。这命令返回遍历设计中特定对象的所有时钟。示例:

set blockClock[get_clocks-of_objects[get_ports clkIn]]

如果需要在块内定义时钟,则它必须位于驱动实例化的输入/输出缓冲区,或在创建/转换时钟(MMCM/PLL或由定时自动处理的特殊缓冲器除外工具)。示例:

•带输入缓冲器的输入时钟

•时钟分频器

•GT恢复时钟

2.仅当端口直接连接到顶级端口并且

I/O缓冲器在IP内部被实例化。

示例:

•带输入缓冲器的输入数据端口

•带有输出缓冲器的输出数据端口

3.不要在不绑定到IP的两个时钟之间定义定时异常。

4.不要按名称提及时钟,因为名称可能会因顶级时钟名称而异,或者如果该块被实例化多次。

5.如果块可以在同一块中实例化多次,则不要添加放置约束顶层设计。

相关推荐

  1. vivado XDC约束IP模块

    2023-12-20 17:14:03       46 阅读
  2. vivado XDC优先级

    2023-12-20 17:14:03       51 阅读
  3. vivado约束方法4

    2023-12-20 17:14:03       71 阅读
  4. vivado 物理约束

    2023-12-20 17:14:03       57 阅读
  5. git模块应用

    2023-12-20 17:14:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-20 17:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-20 17:14:03       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-20 17:14:03       82 阅读
  4. Python语言-面向对象

    2023-12-20 17:14:03       91 阅读

热门阅读

  1. 低信噪比环境下的GPS信号识别与捕获技术

    2023-12-20 17:14:03       53 阅读
  2. k8s的API资源对象CustomResourceDefinition(CRD)

    2023-12-20 17:14:03       73 阅读
  3. Flume 安装与部署

    2023-12-20 17:14:03       69 阅读
  4. 基于Boost的HTTP客户端程序编程

    2023-12-20 17:14:03       42 阅读
  5. iPhone各代屏幕尺寸和像素比

    2023-12-20 17:14:03       81 阅读
  6. 系统架构设计的检查清单

    2023-12-20 17:14:03       62 阅读
  7. golang如何用http.NewRequest创建get和post请求

    2023-12-20 17:14:03       75 阅读
  8. 基于LED的室内可见光通信系统及其 Matlab 实现

    2023-12-20 17:14:03       60 阅读
  9. wxWidgets:使用wxHelpController类进行编程

    2023-12-20 17:14:03       50 阅读