简约是复杂的最终形式。
-- 列昂纳多·达·芬奇
没想到大家对IR drop这个话题很感兴趣,那就接着再多写一点,后面以redhawk软件为背景加以介绍(大A厂是不是考虑给我一点推广费啊,哈哈)。本篇尽量讲一些原理性的东西,避免枯燥的实际操作,毕竟不是培训嘛。
上次说到SoC的IR drop仿真分为静态和动态两种。静态相对容易一点,原理上就是把SoC等效成一个电阻网络,然后根据欧姆定律计算每个节点的电压值,如下图所示。
图1 SoC等效电阻网络
要完成整个静态仿真,首先需要读入很多的输入文件,然后计算SoC功耗,抽取上述的电阻网络,最后是计算IR drop。
图2 静态IR drop仿真流程
我们先从输入文件说起,见下图。
图3 静态IR drop仿真所需输入文件
- DEF文件,全称是Design Exchange Format,它描述的是实际的设计,对库单元及它们的位置和连接关系进行了列表,使用DEF来在不同的设计系统间传递设计,同时又可以保持设计的内容不变。
- LEF文件,全称是Library Exchange Format,它是描述库单元的物理属性,包括端口位置、层定义和通孔定义。LEF文件抽象了单元的底层几何细节,提供了足够的信息,以便允许布线器在不对内部单元约束来进行修订的基础上进行单元连接。
- 接下来是LIB文件,这个不管是前端工程师还是后端工程师都知道,不再赘述。
- TECH文件,包含了具体的工艺制程信息,比如每层金属,过孔等等。
图4 TECH文件示意图
- SPEF文件,Standard Parasitic Exchange Format,是集成电路设计流程中EDA工具间传递互连线寄生参数的标准媒介文件。SPEF可以描述多种互连线寄生模型,还建立了信号skew,延迟计算语言和名称映射等功能。
- STA文件,里面包含了时钟,slew等信息和时间窗(timing windows,这个在做动态仿真时需要)。
- VCD,就是仿真波形啦
其实在做静态仿真的时候,没有SPEF,VCD和STA文件也可以,就是会损失一些仿真的精度,所以还是建议加上。除了上述的文件以外,还需要给出供电点的物理位置,这样就可以仿真了。别问怎么获得这些文件,问就是找后端团队和foundry要(前端工程师就是这么耿直)。
第二步,要计算出SoC的功耗值。回想一下之前讲过的功耗计算那篇文章,SoC功耗分为静态功耗和动态功耗,其中动态功耗又分为internal和switching。有了DEF和LEF文件,我们就有了跟设计有关的标准单元信息。然后静态功耗可以通过查LIB文件得到每个标准单元的漏电,全部相加得到。而internal和switching跟标准单元的翻转有关,有两种办法告诉工具这个信息。第一种是设定一个翻转率(toggle rate),这里需要解释一下翻转率这个概念。其定义就是信号在一个时钟周期内的平均翻转次数,举个例子,如果把一个register的输出经过反向连到这个register的输入端,那么输出端的翻转率就是1,因为每个时钟周期都要翻转1次。再比如没有经过时钟门控的时钟信号,它的翻转率就是2(上沿和下沿各翻转一次)。根据SoC的实际设计和使用场景,分别给出数据和时钟的翻转率,比如(0.15,1)。这种情况一般称为无矢量(vectorless)。另外一种情况就是给一段波形文件(VCD或FSDB),让工具去推算。当然,如果说就是想看在SoC在某个功耗下的IR drop情况,也可以直接设定一个功耗值。留一个思考题,计算switching需要的负载信息从哪能得到?
接下来的提取电源网络的电阻和计算IR drop就是工具自动完成的了,我们不需要了解太多。最后,我们会得到SoC的IR drop仿真结果,如下图所示,红色表示IR drop比较大,绿色表示IR drop小。通过redhawk提供explorer可以具体分析查看IR drop大的原因,此处不想多写了。
图5 静态IR drop仿真结果示意图
回过头来再说动态仿真,就复杂一些了。工具需要知道在所有的标准单元在某一时刻是不是翻转,翻转发生的时间,以及这些标准单元翻转时的电流变化情况。前面的信息可以从STA文件中获得。标准单元翻转的电流变化情况在以上的文件中是得不到的,需要一个特殊的输入,在redhawk里面叫做APL文件。我们知道,在不同负载,不同供电电压下,标准单元的翻转电流肯定会不一样,这时就不能把电流等效成一个三角波(在只有LIB文件时只能这样等效),否则会损失很大的精度。以下图为例,我们看到电流变化并不是一个规则的曲线。
图6 不同负载/供电情况下的电流变化情况
所以相比静态仿真,动态时需要多一个输入文件APL。
图7 动态IR drop仿真所需输入文件
由于在先进工艺制程下IR drop问题会更加突出,所以一般foundry都会提供APL文件。但是对于不太先进的工艺制程,有可能就需要自己跑spice仿真去产生APL了。关于如何去产生APL就是另外一个话题了。其实redhawk这个工具里面的知识点非常多,比如如何读封装设计文件,如何用RTL波形去反标物理设计,如何在早期抽取RTL的功耗模型等等。按照我这种周更短文的速度,估计一年也写不完,而且写到后面估计也没人看了。目前就是帮大家有个基本概念的认识,具体细节问题还是去问原厂的FAE吧(给兄弟们挖坑ing),哈哈哈。
作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/5cymeybH_yQ0ll1Xo4dBPw
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。