微波EDA网,见证研发工程师的成长!
首页 > PCB和SI > EDA和PCB设计文库 > 面向有挑战性功能块的时序收敛技术

面向有挑战性功能块的时序收敛技术

时间:10-15 来源:互联网 点击:
    第III章:时钟门控克隆阶段选择

    一般来说,执行时钟门控克隆一共有2个阶段:fix cell(修复单元)和fix clock(修复时钟);设计师还可同时在两个阶段进行克隆。因此在此提出了3种组合:

    1.只fix cell阶段克隆
    2.只fix clock阶段克隆
    3.两个阶段同时克隆

    如果是只fix cell阶段克隆,那么设计师可采用命令“run clock gate_clone”在第一次全局布局/布线后执行克隆;相关配置可通过“force clock gate_clone”命令来完成。不过完成克隆后,‘force clock gate_clone’设置的约束将变为无效;如再需要fix cell阶段克隆,那么设计师还要重新应用这些设置。

    作者以几个功能块为例,对这3种方法进行了一次测试,通过比较结果来找出适合其中多数功能块的最佳方案。

    表1



    表1是测试结果,要点如下:

    1.黄色数据是一个功能块的最好TNS,绿色数据是最佳区域。
    2.第2种方法带来了适合大部分案例的最佳结果,包括最好TNS和最佳区域。

    什么样差异会导致这样的结果?图5是功能块一个角点的时钟门控单元分布:



    图5

    粉色单元是门控单元;黄色单元是时钟树缓冲区;线是时钟树飞线。
    3个图片为:
    左:第1和第3种方法的fix cell阶段。
    中:第3种方法中的fix clock阶段。
    右:第2种方法中的fix clock阶段。

    图5显示的是:无fix cell阶段克隆,时钟门控单元少了许多,但时钟缓冲区却多了许多。原因之一是:CTS将门控单元后时钟树往上移动,因此对克隆的需求也减更少发。  

    进一步研究我们又有了其它发现,这可能是对‘为什么第3种方法门控单元更少’的另一种解释。见图6:



    图6

    图6是2张fix cell volcano中门控单元分布连接图。图中所显示的只有触发器(flops),其它模式单元则是隐藏的。左图无克隆,右图有克隆。左图中,所有连接资源都来自时钟树根;右图中,功能块有明显克隆过的门控单元树结构。  

    图6显示了一个有趣的地方:如没有fix cell阶段门控克隆,触发器的布局会更为紧密些。这已是对许多案例观察的结果。一种可能解释

    是:由相同原始门控单元所控制的触发器在布线期间有直接连接,因此相比那些由于门控单元不同而中断连接的克隆试验,它们的布局更为紧密。

    图7是 fix clock volcano中时钟门控单元分布图:



    图7

    与之前案例一样,若无fix cell阶段克隆,所需时钟树元素将更少。在这个案例中,出于触发器布局更紧密的原因总负载更低,因此所需的门控单元/时钟树元素更少。

    在那些测试案例中,第2种方法的门控单元数量要比第1和第3种方法少了30"50%。尽管第2种方法需要在门控单元后创建时钟树,但门控单元面积的降低是创建时钟树这种额外面积所无法比拟的,因此最后总面积的赢家是第2种方法。

    从时序角度来看,如果触发器间连接不太复杂,那么在第2种方法中触发器布局更紧密的设置将有助于降低路径上负载,进而在统计时获得更好时序,这是实际设计中最常见情况。

    通过比较这些方法来找到一个最好的时钟门控克隆方式的想法源自于一个真实案例。在这个案例中,时钟的时序非常棘手,带有高度复杂的组合逻辑。上百个最高失效端点都是门控单元使能引脚,导致了“门控克隆需针对这个功能块进行优化”的想法。这个功能块的最佳结果是只fix cell阶段克隆、无fix clock阶段克隆。后布线优化图可获得超过50ps的更好结果。原因之一是fix cell阶段克隆将会在这个阶段更早期就暴露出使能引脚相关违规,那么Talus就可更早地对它进行优化。  

    第IV章:多轮Fix Cell

    布局是一个融合过程。运行的布局轮次越多,可获得融合度就越好,但这是以时间和磁盘空间为代价的。设计师不仅可尝试多运行几轮以获得最佳结果,同时还可拥有有关“如何运行每轮fix Cell”的不同选项。本章将探讨3种每轮fix cell运行的方式并比较时序和拥塞。选项有:

    1.使用fix cell阶段中‘-iteration #’选项
    2.直接在之前fix cell数据库上重新运行fix cell
    3.采用之前fix cell网表,基于修复时间、修复计划和修复单元开始重新运行。

    第1种方法是最直接方法,易于运行。第2种方法需要明确大部分fix cell快照以便能在未来运行中跳过细节步骤。第3种方法需花更多时间和精力;但如果fix cell期间网表变化很大,那么第3种方法效果最好。

    我们选择了几个功能块来测试这些方法,表2是几个功能块的数据。从时序角度来看,结果并不倾向于中意其中任何一种方法;从拥塞角度来看,第2种方法在绝大部分案例中胜出。

    表2



    ‘拥塞’项目系指fix cell 数据库中‘report congestion $m’的总数。第2种方法可更好处理拥塞热点。请比较图8中拥塞地图,结果更一目了然:



    图8

    在实际项目中,设计师需要权衡考虑每轮的运行时间及可获得的改善。你尝试得轮次越多,你可获得的效果就越好,但设计进度毫无疑问会被延迟。对于容易功能块,设计师可通过单轮fix cell摸索着运行每个步骤,不需要考虑时序/拥塞问题;对于关键功能块,2"3轮的fix cell将可带来明显的拥塞和时序改善。

    对于一些特殊案例,设计师可能要在全局布局后fix cell期间添加大量逻辑。而这些逻辑可能有糟糕的拥塞问题,第2轮的增量全局布局并不能很好地处理这个问题。在这种情况下,第3种方法是3种方法中唯一能起作用的方法。

    如果采用第2种方法,设计师需要考虑‘需保留什么快照’‘需清除什么快照’;而且一些步骤可能只运行一次,在其它轮的fix cell中将不再运行。

    当资源成本在可接受范围内时,设计师应尝试对设计进行多轮的fix cell,它可与新平面布局试验同步进行;与调整平面布局对比,它所消耗的人力几乎可以忽略不计。在这些方法中,从拥塞角度来看,我们建议你直接在之前数据库上运行fix cell;若在特殊案例中,设计师应尝试第3种方法。

栏目分类

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top