Rules-based integration is a methodology that promotes a formal and flexible method of integrating a system. The formalization ranges from standardized IP metadata, to assembly primitives that manipulate the metadata, to high-level integration macros that combine these primitives.
![]() |
|
Packaging
The first step in a rules-based flow is to formalize the view of components within the system. This typically involves formalizing component interfaces . These should be linked to formal definitions rather than relying on port names. Is should also be possible to define additional information e.g. clocking, power, I/O etc. that will assist downstream integration.
Assembly
Once a component has been packaged, it is possible to integrate it within a system using a powerful set of primitives that instantiate and connect the component. These assembly primitives typically work on the component interface information. Commonly used interfaces can have the same integration patterns repeated across the project, and it is possible to capture these patterns in high-level application macros.
The formalization and standardization of IP metadata, along with functions that utilise this formal data, is the basis of a robust, efficient and highly-reusable integration flow.
For example, an integration pattern for interrupts may be to export them if they appear at any level other than the core of the chip (at this level they are typically connected to an interrupt controller). This pattern can be repeated for all sub-systems of a complex chip. Interrupt ports may be formally defined by 'typing' them as [Interrupt]. An assembly primitive such as EXPORT can filter this type of port definition on all component instances and export it to the component boundary. This primitive can be used in a macro such as export_all_interrupts() that may then be called from a WEAVER rule as illustrated below.
The results of running rules and all the corresponding assembly commands can be easily be viewed by the user. Weaver workflows involve both manual-based and rules-based integration to allow pre and post-rules synthesis refinements.
For more information on Weaver, download the Weaver Product Brief
