当我使用通配符(*)作为Quartus II 5.0及更早版本的源代码进行CUT分配时,为什么会忽略太多路径?-Altera-Intel社区-FPGA CPLD-ChipDebug

当我使用通配符(*)作为Quartus II 5.0及更早版本的源代码进行CUT分配时,为什么会忽略太多路径?

在早于5.1版的Quartus®II软件版本中可能会出现此问题。受问题影响的路径在单元中被切断,因此在定时分析期间被忽略,而不是由fitter优化。从版本5.1开始修复此问题,并且问题未出现在TimeQuest Timing Analyzer中。

以下行是Quartus II设置文件( .qsf )中可能出现问题的CUT分配示例:

 set_instance_assignment -name CUT -from * -to reg_* ON 

要在早于5.1的版本中解决此问题,请创建一个包含*作为其唯一成员的时间组。然后将CUT分配源更改为时间组的名称。例如,假设您已创建名为my_group的时间组,并将*作为成员,则以下行显示应用变通方法后的CUT分配:

 set_instance_assignment -name CUT -from my_group -to reg_* ON 

在Quartus II软件5.0中,在编译报告的Timing Analyzer部分的Unconstrained Paths报告中报告了由于CUT分配而被忽略的路径。

出现此问题的原因是除了切割寄存器之间的路径之外,CUT分配还会切断从时钟到寄存器的路径。当您指定*作为CUT分配的来源时,*匹配数据和时钟馈送寄存器,导致两个路径被切断。在不分析馈送寄存器的时钟的情况下,从寄存器到其目标寄存器没有已知的时钟设置要求。这些路径未经过优化或报告,因为它们不受约束。

如果要将时钟的CUT分配应用于寄存器,则必须将时钟名称指定为CUT分配的源,而不是使用通配符(*)。

从Quartus II软件5.1开始,使用*作为CUT分配的来源与时钟名称不匹配。

请登录后发表评论

    没有回复内容