描述
如今的集成电路(Integrated Circuit,IC)设计往往要求芯片包含多个工作模式,并且在不同工艺角(corner)下能正常工作。工艺角和工作模式的增加,无疑使时序收敛面临极大挑战。本文介绍了一种在多工艺角多工作模式下快速实现时序收敛的技术---MCMM(Multicorner-Multimode)技术,该技术将工艺角和模式进行组合,对时序同时进行分析和优化,到达快速实现时序收敛的目的。该技术应用于一个80万门基于TSMC 0.152μm logic 工艺的电力网载波通信(PLC)芯片设计,设计实例表明,利用MCMM 技术不但可以解决时序难以收敛的问题,而且大大降低了芯片设计周期。
1 引言
随着集成电路工艺的不断发展,芯片受工艺、电压、温度(Process、Voltage、Temperature,PVT)的影响越来越严重,需要使用更多的工艺角来保证芯片在不同条件下能稳定工作;与此同时,随着芯片测试需求的增加和功能的增强,芯片的工作模式也在不断增加,这给芯片版图设计者带来了一系列的困难,其中最困难的当然是如何快速实现时序收敛,缩短设计周期。设计者必须保证芯片在相同工作模式不同工艺角下的时序收敛,当工艺角和工作模式数量多的时候,使用传统的方法来实现时序收敛绝非一件易事,需要大量的人工工作进行大量反复迭代,分析并消除模式之间的影响,有时甚至会出现时序难以收敛的情况。我们实验室设计的PLC 芯片,正是采用了Synopsis 公司IC Compiler 软件的MCMM 设计技术,完全放弃了传统的时序收敛方法,有效加速了实现时序收敛,缩短了设计周期。
2 传统的时序收敛实现方法
在传统的时序收敛和分析方法下,版图设计工程师需要在不同的工作模式之间来回切换设计约束进行分析优化,以满足同一时序路径在不同模式下的时序要求,如图1所示。

从图1中可以看出,这种方法的缺点是版图工具无法同时覆盖到所有模式下的时序,必须以串行的方法来修复各个模式的时序,还必须保证修复过程中模式之间没有影响,这无疑增加了各个模式之间的切换迭代次数和人工手动ECO 的时间。如果芯片的工艺角和模式越多,切换迭代次数就越多,工作量会大到让设计者难以接受的地步。
3 基于MCMM 技术
快速时序收敛实现方法MCMM 技术实现时序收敛的基本思想是,工艺角和模式组成场景(scenario),版图设计软件IC Compiler"吃进"所有scenario 的时序约束,激活关键的scenario,让软件自行评估和优化。同一条违例时序路径可能出现在不同的scenario中,评估这条违例路径在不同scenario中的时序裕量大小,例如一条路径在scenario1 中的裕量为-1,在scenario2中的裕量为-0.2,则认为其在scenario1中的权重更高,在权重最高的scenario1 中进行修复。具体流程如图2所示。

很明显,与传统方法相比,MCMM 技术将时序收敛的处理变以往的"串行"为"并行",并且模式之间的影响完全交给版图软件来分析,省去了人工手动ECO的工作,从而大大减少了时序收敛的迭代次数和设计时间。
4 应用举例
以实验室一款PLC芯片为例,具体介绍如何使用MCMM技术来加速时序收敛。
4.1 scenario 的定义
该芯片有2 种正常工作模式,时钟频率分别是90Mhz和60Mhz,3种DFT 测试模式,分别是shift模式,capture 模式和mbist 模式,需要工作在两个工艺角下,WCCOM 和BCCOM,也就是5种模式2个工艺角组成了10 个scenario,每个scenario 指定对应的寄生模型(TLU+ 文件),worst 和best,如表1所示。在WCCOM工艺角下检查建立时间(setup time),在BCCOM 工艺角下检查保持时间(hold time)。

4.2 基于MCMM 的时序收敛实现
在同时激活10 个scenario 的情况下,会出现服务器内存溢出,死机等状况,导致设计无法顺利进行。我们对这10 个scenario 进行了分析,其中MBIST_MAX,SHIFT_MAX,CAPTURE_MAX,MISSION 60_MAX 这4 个scenario 中,时钟频率最大的是MISSION60_MAX 中的60MHz,其余三个scenario 时钟频率只有10MHz,建立时间裕量都在9.9ns 以上,即使在修复过程中不激活,修复其它scenario 时带来的影响在承受范围之内,也不会对后续的绕线产生影响;在MISSION90_MAX 这个scenario中,时钟频率是90MHz,建立时间虽然没有违例,但是留下的裕量只有0.84ns,不足以抵挡修复其它scenario时带来的影响;剩下的5 个scenario 中,都有保持时间违例,必须进行修复。基于以上分析,我们选择同时激活MISSION90_MAX, MISSION_MIN, MISSION 60_MIN, MBIST_MIN, SHIFT_MIN, CAPTURE_MIN这6个关键scenario 进行时序收敛,具体脚本如下:
set_active_scenarios {MISSION90_MAX MISSION90_MIN MISSION60_MIN MBIST_MIN SHIFT_MIN CAPTURE_MIN}(激活关键scenario)foreach scenario [all_active_scenarios] {current_scenario scenario set_clock_uncertainty -hold 0.2 [all_clocks]set_clock_uncertainty -setup 0.6 [all_clocks] set_prefer -min{tcb0152gbwp7twc/DEL015BWP7Ttcb0152gbwp7twc/DEL02BWP7T}set_fix_hold_options -preferred_buffer set_fix_hold [all_clocks]}(设定每个关键scenario 的时序裕量,用指定的std cell 来修复hold timing)update_clock_latency(更新clock 延迟)psynopt(进行时序修复)
4.3 结果分析
经以上操作,6个scenario 的时序路径同时经过优化之后,结果如表2 所示。
表2中结果表明,几乎所有模式都已经满足了时序要求, 只有MISSION90_MAX 的scenario有setup 时序的违例,为了修复该违例,只需激活该scenario,重新一次“psynopt”就可以到达时序要求。
我们也尝试用传统方法来修复该芯片的时序,由于模式数量多,导致模式间来回切换次数多于20次,加上模式之间时序干扰严重,人工参与分析工作量很大,时序收敛所需要的时间远远多于用MCMM技术所花的时间,MCMM 技术优势非常明显,具体结果如表3所示。

5 结语和展望
本文介绍了IC Compiler 的MCMM 同步优化技术,用一个设计实例阐述该技术的具体实现过程,结果显示大大节省了设计时间,也为版图设计工程师解决了人工分析干预的难题,具有一定的实际应用价值。在设计过程中我们从CTS 阶段后才开始采用MCMM 技术来达到芯片时序收敛的目的,在今后更复杂,要求更高的设计中,把MCMM 技术应用到一些关键步骤中,比如逻辑综合和place 等,并且综合考虑芯片功耗问题。
定义scenario 的具体脚本如下:
create_scenario MISSION90_MAX (建立一个名叫MISSION90_MAXX 的scenario)set_operating_conditions \
-analysis_typeon_chip_variation \-max_library tcb0152gbwp7twc \-max WCCOM(指定时序分析类型和对应corner下的lib 库)set_tlu_plus_files \-max_tluplus ./test/cl0152g_lp6m_worst.tlup \-tech2itf_map ./techfiles/tluplus/star.map_6M(设定相应corner 的RC 寄生模型)source . /netlist /KOALA_ASIC_TOP_compiled_pass3_mission_90_mode_post.sdc(读入该模式的时序约束文件)。
原文链接:http://qikan.cqvip.com/Qikan/Article/Detail?id=49362964
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声
首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有, 也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal