仅对英特尔可见 — GUID: mml1544540526396
Ixiasoft
仅对英特尔可见 — GUID: mml1544540526396
Ixiasoft
2.3.2.2.2. 第2步:例化可变延迟模块
- 传输不断变化的数据的时钟边界使Fitter能够在有利的情况下将模块远远地分开。
- 与一个复杂组合功能相邻的位置适用于难以满足时序的功能。
- 在同一时钟域上的两个独立功能模块之间的位置使Fitter能够在有利的情况下将模块远远低分开。
例化时钟域边界处的可变延迟
Fast Forward Compilation建议在时钟域边界处添加流水线级,这样可以很容易处理额外延迟。例化时钟边界处的可变延迟使Fitter能够在有利的情况下将这些模块远远地分开。在这种情况下,您就可以在synchronizer或者FIFO之前或者之后例化hyperpipe_vlat模块。就网表连接而言,在comb函数与hyperpipe_vlat之间没有其他寄存器或逻辑的情况下例化hyperpipe_vlat。
此实例使Hyper-Retimer能够自动插入足够的流水线寄存器以满足时序要求。在这种情况下,由于数据不断变化,因此对延迟不敏感的伪路径是不合适的。
例化与复杂组合功能相邻的可变延迟
您可以例化与复杂组合模块相邻的hyperpipe_vlat模块,使Hyper-Retimer能够插入足够的寄存器以满足时序要求。在复杂组合模块之后例化hyperpipe_vlat模块,因为向后重定时(backwards retiming)不需要额外的复位周期来适应任何初始条件。您无法控制hyperpipe_vlat模块中的寄存器是否向前重定时到其后面的逻辑或向后重定时到组合模块中。
例化独立功能模块之间的可变延迟
您可以例化同一时钟域中的两个独立功能模块之间的hyperpipe_vlat模块。此例化允许功能模块在布局过程中分散开(spread apart),同时为满足时序要求所需要的能模块之间仅添加流水线级数。
应用伪路径或异常约束
如果例化独立功能模块之间hyperpipe_vlat模块,那么您必须添加一个伪路径(set_false_path)或者其他时序异常, 使连接的模块能够在布局期间浮动(float apart)。您可以对hyperpipe_vlat模块中的vlat_r寄存器应用伪路径或者异常。通过将时序异常放在条件if 语句中,Timing Analyzer在vlat添加寄存器时或者在最终时序签核期间都不会使用该异常,从而确保了每个寄存器都满足时钟要求。
如果没有对应的伪路径或者异常约束,hyperpipe_vlat几乎没有什么好处。在没有伪路径或者异常约束的情况下,Hyper-Retimer在布局布线期间仅识别hyperpipe_vlat中的一个流水线级。Hyper-Retimer在布局布线完成后仅添加额外的流水线级。Compiler倾向于将由一个流水线级连接的两个功能模块放置在一起,除非它们之间的路径被切断。
以下命令行显示了在my|top|design|hyperpipe_vlat_inst上对hyperpipe_vlat实例应用set_false_path异常的相应.sdc语句。对于连接到独立功能模块的hyperpipe_vlat实例,请将类似的命令行添加到您的.sdc:
if { ! [is_post_route] } { set_false_path -to my|top|design|hyperpipe_vlat_inst|vlat_r[*]}
此外,如果您使用MAX_PIPE参数来限制流水线的数量, 那么请考虑应用max_delay或者multicycle异常,而不是应用一个set_false_path异常。如果在vlat实例上有一个MAX_PIPE约束,那么set_false_path异常可能会将逻辑移到很远,以至于MAX_PIPE约束是不足够的。鉴于此原因,multicycle异常更好。例如,如果NUM_PIPES=3,那么您可以添加一个等于NUM_PIPES(3)的multicycle异常。
if {![is_post_route]} { set_multicycle_path -setup –to my|top|design|hyperpipe_vlat_inst|vlat_r[*] 3 set_multicycle_path –hold –to my|top|design|hyperpipe_vlat_inst|vlat_r[*] 2}
应用可变延迟约束-from或-to
- -from—将vlat_r放置在您想要流水线化的组合逻辑之前,然后应用多周期(multicycle)或者伪路径(false path) –from约束。
图 39. 在组合逻辑之前插入vlat_hr
- -to—将vlat_r放置在您想要流水线化的组合逻辑之后,然后应用多周期(multicycle)或者伪路径(false path) –to约束
图 40. 在组合逻辑之后插入vlat_r