Starting in Vivado 2025.2, IP Integrator supports the use of NoC XPM instances inside RTL modules referenced in a Block Design (BD) using Module Reference.
This enhancement enables NoC endpoints defined within referenced RTL modules to be integrated into BD-centric design flows, including designs that use dynamic regions such as AI Engine (AIE).
For general information on NoC architecture and configuration, see Creating a Design with NoC IP.
In BD-centric design flows, RTL is incorporated using Module Reference, which is typically maintained as a black box within IP Integrator.
In earlier releases, when referenced RTL contained NoC XPM instances, those instances were not supported because the Module Reference boundary was not included in the Block Model generated for the Block Design. As a result, NoC interfaces inside the referenced RTL could not be resolved during link_design.
- Keep the Module Reference as a black box in the Block Design
- Provide a synthesized RTL DCP containing the NoC XPM instances during link_design
- Provide required NoC constraints
- As implementation_pre, or
- Using read_xdc after link_design
(This flowchart shows a Block Design with a Module Reference (black box), external RTL DCP integration during link_design, and resulting NoC connectivity into the top-level NoC.)
For details on applying NoC constraints such as QoS, NMU/NSU mapping, and bandwidth configuration, see Versal Adaptive SoC Hardware, IP, and Platform Development Methodology Guide (UG1387)
Example: Integrating NoC XPMs from Referenced RTL
A design contains an RTL module that instantiates xpm_nmu_mm and is imported into a Block Design using Module Reference. The Module Reference is kept as a black box in IP Integrator.
The RTL is synthesized separately to generate a DCP, which is then provided during link_design. During linking, the NoC XPM instance inside the referenced RTL is identified, and its interface is connected to the top-level NoC.
An XDC file specifying QoS and address mapping is applied after linking. The design is then validated using validate_noc before implementation.