我正在尝试使用TSMC28HPM库在Design编译器中合成火箭核心。时间没有得到满足!
目标频率:500MHz
没有FPU:可实现的频率。 400MHz的 使用FPU:可实现的频率。 200MHz的
目前我的约束只是定义了时钟。 设计是否有任何时间例外?
为达到1 GHz而假设/测试的场景是什么?
路径失败摘要: 起始点:RocketTile_1_core / div / divisor_reg_ *(由clk计时的上升沿触发触发器)端点:RocketTile_1_core / div / remainder_reg_ *(由clk计时的上升沿触发触发器)(VIOLATED)-0.76 起始点:RocketTile_1_core / div / remainder_reg_ *(由clk计时的上升沿触发触发器)端点:RocketTile_1_core / div / remainder_reg_ *(由clk计时的上升沿触发触发器)(VIOLATED)-0.76 起始点:RocketTile_1_HellaCache_1 / s2_store_bypass_reg(由clk主频上升沿触发的触发器)端点:RocketTile_1_core / mem_reg_wdata_reg_ *(由clk计时的上升沿触发触发器)(VIOLATED)-0.60 起点:RocketTile_1_HellaCache_1 / d(上升沿触发的触发器由clk计时)端点:RocketTile_1_core / mem_reg_wdata_reg_ *(上升沿触发的触发器由clk计时)(VIOLATED)-0.60 mem_reg_wdata_reg_ *失败的路径更多 起始点:RocketTile_1_core / mem_ctrl_branch_reg(上升沿触发的触发器由clk计时)端点:RocketTile_1_dtlb / r_refill_tag_reg_ *(由clk计时的上升沿触发的触发器)(VIOLATED)-0.54 起始点:uncore_PRCI_1 / time_reg_ *(由clk提供时钟的上升沿触发触发器)端点:uncore_PRCI_1 / time_reg_ *(由clk计时的上升沿触发触发器)(VIOLATED)-0.52 起始点:uncore_outmemsys / l1tol2net / acqNet / arb / T_1236_reg_ *(由clk计时的上升沿触发的触发器)端点:uncore_outmemsys / L2BroadcastHub_1 / BufferedBroadcastAcquireTracker_2_1 / data_buffer_4_reg_ *(由clk计时的上升沿触发的触发器)(VIOLATED) - 0.51 大多数违规行为来自t_1236_reg _ *
答案 0 :(得分:0)
FPU的重新定时是强制性的 - 它是组合描述的,并用可参数化的寄存器填充。
我还建议使用其他参数来查看是否可以找到更有利的设置(TLB条目,BTB条目等)。删除ISA扩展,如div单元和FPU,因为它们出现在您的关键路径中。还要注意,uncore / L2应该放在它自己的时钟域中。
然而,由于Rocket在IBM 45nm上已经达到> 1.5GHz且完全支持ISA,我很惊讶你没有达到500 MHz。
答案 1 :(得分:0)
逻辑综合需要考虑许多方面。 您正在使用DC,您是否正在使用具有平面图的物理流量? 适当的物理流程将为您提供更准确的现实线载模型建模....否则您可能会合成一些最终在P& R无法实现的东西
你没有提及你的时钟树设计......你在模仿你的(最终)物理时钟树的效果有什么不确定性,会有一些偏差!
我不熟悉您正在使用的tsmc库,是否存在各种VT单元,低VT用于快速逻辑以牺牲漏电流。 在扩展VT设置中,您期望看到低VT单元的数量随着时钟速度规格的增加而增加。 您可以使用所有常规或高VT细胞!这会让您的设计速度更慢。
随着时钟速度规格的增加,始终值得关注负载很重的单元,以及随着区域膨胀的架构区域。 逻辑膨胀(增加的面积)是时间收敛困难的经典迹象,并将导致P& R
的问题您是否正在插入DFT?如果不是,请记住,DC可能已经使用扫描单元来实现时序收敛,当您尝试插入扫描时,这将导致DFT问题。
要获得更明智的答案,需要一份完整的时间报告,显示时间起点和终点之间的所有单元格
正如在其他答案中已经提到的那样,数据路径的流水线操作将是至关重要的,因为可能是内存时序。
始终建议谨慎使用非物理综合流程,您应该始终考虑PPA研究。
祝你好运