Intel® Hyperflex™ 体系结构高性能设计手册

ID 683353
日期 10/04/2021
Public
文档目录

3.1. 独立编译子模块

您可以独立编译较大设计的子模块。独立编译较大的子模块使您可以获得子模块性能信息,并优化子模块以获得更好的性能。根据编译子模块的目标,您可以选择不同地处理I/O,如以下技术所述:

  • 如果在编译过程中对子模块要求额外的Hyper-Optimization,那么要在wrapper中例化此子模块,并在每个输入和输出处添加两个或更多寄存器级。此技术支持将那些额外的寄存器重定时到电路中。如果Compiler将其他寄存器重定时到子模块中,那么可以修改完整设计来对子模块提供额外的寄存器。当在子模块上测试Hyper-Optimization以确定重定时的影响时(子模块是较大设计的一部分时),此方法很有用。
  • 如果不需要进一步的子模块Hyper-Optimization,而是希望隔离一个模块以节省编译时间并在整个设计中模仿模块时序预算,那么定义虚拟管脚约束以使能对直接连接到子模块的寄存器进行重定时。指定相应的set_input_delayset_ouput_delay SDC约束以解决内部时钟树的时钟偏斜。根据以下准则和示例,通过指定reference_pin或静态最大约束来解决内部时钟树的时钟偏斜问题:
表 8.  子模块编译约束指南
SDC Argument 指南 示例
clock 指定内部时钟域名称(无虚拟时钟)。此参数使Compiler将外部时钟和内部时钟视为相同,从而使I/O寄存器的重定时不再在边界上。 reference_pin argument:
set_input_delay -clock [get_clocks <name>] \
     0 [get_ports <name>] \ 
     -reference_pin [get_pins [<names>]
static maximum constraint:
set insert_delay <value>
set_input_delay -clock [get_clocks <name>] \
     $insert_delay [get_ports <name>]
delay 指定以下其中一个设置来解决内部时钟树的时钟偏斜:
  • max (setup)参数设置为0 ,并将reference_pin参数设置为I/O寄存器的时钟管脚。Compiler自动减去I/O寄存器的时钟树插入延迟。
  • 设置max参数≥时钟树插入延迟。
图 83. 子模块编译输入约束示例
set_input_delay -clock [get_clocks clk_in] \
     0 [get_ports data] \ 
     -reference_pin [get_pins [int_reg|clk]

或者:

set insert_delay 1.3
set_input_delay -clock [get_clocks clk_in] \
     $insert_delay [get_ports data]