部分来自 https://cloud.tencent.com/developer/article/1530568

根据建立时间检查公式:建立时间有关因素:

(1)  Tcq和Tsu(一旦芯片规格确定,是固定的)

(2)时钟不确定性(uncertainty)和时钟歪斜(skew)

(3)  Tdata由两部分构成Tlogic和Tnet 

 

 

逻辑延迟:逻辑延迟主要跟逻辑级数相关,过高的逻辑级数会导致逻辑延迟增大。降低逻辑延迟很大程度上需要在HDL代码层面优化或者更改综合选项。

布线延迟:导致布线延迟过大的因素比较多,例如逻辑级数过大,路径中的某个net的扇出过大,或者工具优先对关键路径布线而使得某些路径的发送端和接收端相距太远等。

Setup slack与逻辑延迟、布线延迟、时钟歪斜和时钟不确定性有关
 

过高的资源利用率、过重的逻辑互联导致的布局拥塞、逻辑级数不合理、过高的时钟歪斜或时钟不确定性

利用率应控制在70%以内;触发器(FD)应控制在50%以内;BlockRAM和DSP48可以达到80%。在这个报告中尤其要关注Status为Review的条目,这是会给时序收敛带来负面影响的

(1)建立时间违例

当逻辑延迟占比超过50%时,要着重降低逻辑延迟;当布线延迟占比超过50%时,要把焦点放在布线延迟上;同时,也要关注一下时钟歪斜和时钟不确定性。当时钟歪斜小于-0.5ns或时钟不确定性大于0.1ns时,两者将成为时钟违例的主要“贡献者”。

(2)保持时间违例 (这个lauren的文章感觉说的也模棱两可,毕竟保持时间的一般不会出问题,也很难人为优化)

Hold Requirement为正的可能情形出现在使用多周期路径约束的时序路径中。如下图所示,时钟使能信号EN使得路径的Setup Requirement为3个时钟周期,但Hold Requirement仍应为0。

来个答案吧 setup 和 hold violation

除了改约就是 让综合器去自动优化:综合器优化时的策略是:  (1)在两个同步时序元件之间插入与至相反的时钟沿触发的寄存器,将该路径一分为二,该方法的前提是建立时间不会被恶化。(2)路径中插入LUT1。

  • 增大Tcomb:T_{comb}:Tcomb​:增加组合逻辑运算时间
  • 减小TskewT_{skew}Tskew​:优化时钟路径,让时钟更早到来

 

 

 

降低逻辑延迟:(1)调整逻辑级数 (2)retiming

降低布线延迟:(1)调整资源利用率 (2)优化高扇出网线:设计时复制寄存器(3)物理约束,如管脚分配。关注这些位置约束是否仍然合理。

时钟歪斜:(1)跨时钟域合理的约束:set_clock_groups;set_false_path;set_max_delay -datapath_only 三者之一约束

(2)实在不行,可尝试对相应的MMCM或PLL做位置约束,

时钟不确定性:当时序违例路径的Clock Uncertainty超过0.1ns时,应引起关注。MMCM核界面有Jitter值,可通过手工调整VCO的频率(在ClockingWizard中修改M和D两个参数)达到降低Discrete Jitter的目的。用PLL替代MMCM。相比于MMCM,PLL引入的Jitter会小一些。

 

待结合师兄论文,进行实例分析。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2022-12-23
  • 2021-06-03
  • 2022-01-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案