Design block reuse enables a Developer or IP vendor to deliver a block or IP to a Consumer without delivering the source code. Incremental block-based compilation allows the IP or block Consumer to independently develop wrapper logic. Enabling developers to preserve parts of the design, while third-party IP is under development, reduces the time and effort required for timing closure of the full design. The following figure illustrates this parallel development model.
In the following figure, Sibling2 is a third-party IP, or a partition independently designed by another Developer. A Consumer can create a Logic Lock region for Sibling2, compile the other partitions, and preserve the results. When the Developer subsequently delivers the Sibling2 .qdb, the Consumer then can import this to the full design.
The Intel® Quartus® Prime Pro Edition provides support for the following combinations of incremental block-based compilation and design block reuse:
Table 7. Support for Combined Incremental Block-Based Compilation and Design Block Reuse
- Compilation and export of the parent .qdb file. In a consecutive compilation, you reuse the parent and preserve the child. The parent .qdb snapshot level is the same as the child's preservation level.3
- Export of a partition as a .qdb, reuse of the .qdb, and preservation of the same partition. The snapshot level that the .qdb preserves must be lower than the partition preservation level.4
- Preservation of a partition and its child. The child preservation level must be higher or equal to the parent preservation level. Otherwise, the combination is not supported
- Compilation and export of the parent .qdb file. In a consecutive compilation, you reuse the parent and preserve the child. The child’s preservation level is different from the partition .qdb. Therefore, the Compiler issues a critical warning, and ignores the child preservation level.
- Reuse of a child .qdb and the parent is Empty.
- Reuse of a parent .qdb and the child is Empty.
- Preservation of a child partition and the parent partition is Empty.
- Preservation of a parent partition and the child is Empty.
- Reuse a .qdb and the partition is Empty.
- Reuse of a child .qdb and preserving the parent partition.
- Preservation of a parent and child partition and the parent preservation level is higher than child’s preservation level.
Note: All supported combinations require an initial compilation, without any reuse or preservation. You then apply reuse or preservation after the initial compilation is complete. Otherwise, the Compiler ignores the preservation level and issues a critical warning.
Although the GUI does not support reuse of a partition .qdb and preservation of its child, you can implement this by modifying the .qsf
file and compiling at the command line.