《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 如何在先进工艺节点利用Virtuoso Check/Assertion Flow
如何在先进工艺节点利用Virtuoso Check/Assertion Flow
2016年电子技术应用第8期
王 超1,刘欢艳2
1.Spreadtrum,上海201203;2.Cadence,上海201204
摘要: Virtuoso和MMSIM有效结合,完整的Check/Assertion flow包含:在图形界面设置Check/Assert, 通过仿真得到Check/Assert的结果,在图形界面直接显示Check/Assert的结果,对结果进行各种灵活的后处理,并在schematic 直接进行反标。该流程可以覆盖电路设计常用check需求,完全不依赖脚本,图形界面让工程师更容易上手,基于瞬态仿真的Dynamic Check相比其他工具更具优势。有效利用Check/Assert flow, 可以帮助避免或及早发现设计中的一些常见问题,从而减少设计迭代,该流程在TSMC 16 nm和Intel 14 nm实际项目上得到应用,很大程度地提高了设计效率。
中图分类号: TN402
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.08.005
中文引用格式: 王超,刘欢艳. 如何在先进工艺节点利用Virtuoso Check/Assertion Flow[J].电子技术应用,2016,42(8):28-32.
英文引用格式: Wang Chao,Liu Huanyan. How to use Virtuoso Check/Assertion Flow in advanced node IC design[J].Application of Electronic Technique,2016,42(8):28-32.
How to use Virtuoso Check/Assertion Flow in advanced node IC design
Wang Chao1,Liu Huanyan2
1.Spreadtrum,Shanghai 201203,China;2.Cadence,Shanghai 201204,China
Abstract: IC617/IC122 support circuit check and assertions base on virtuoso GUI flow, which include GUI setup in VSE XL (Virtuoso Schematic Editor XL) checks/assertions assistant, view checks/assertions results in ADE XL, flexible post-processing for checks/assertions results, especially schematic crossing probing, which backannotate violation path and violationg devices onto schematic directly. The virtuoso checks/assertions flow can cover most requirements on both device level and circuit level check mechanisum. The GUI flow makes everything easy, designers do no need to be familiar about the syntax of the check statements, it’s more easy for designers to accept and get used to the use model, the dynamic check which base on transient simulation have obvious advantage compare with other tools. Using checks/assertions flow efficiently, can help designers avoid or find some common design issues as early as possible, thus help decrease the design iteration. The virtuoso checks/assertions flow is used in TSMC 16nm and Intel 14nm project, it helps improve the design efficiency obviously.
Key words : Assert;Device Checking;Circuit Check;Check/Assertion flow

0 引言

  随着集成电路设计和先进工艺技术的飞速发展,电路规模越来越大,电路越来越复杂,电路设计过程中,如何尽可能地避免潜在问题,遇到问题时, 如何尽快有效地定位和解决,成为电路设计工程师普遍关注的话题。电路仿真工具在提供大容量以及快速仿真能力的同时,如果能支持器件级别及电路级别的各种检查机制,对于有效地避免问题,定位问题和解决问题,会有帮助。电路设计平台(Virtuoso)如果支持方便灵活地设置、看结果以及对结果进行后处理, 会使流程更顺畅,使用更方便,工程师更容易上手,从而提高设计效率。

  Assert又称Device Checking,是Spectre/APS提供的主要用于器件级别的检查机制,主要用于检查电路中的器件电压、电流、工作点、模型参数及自定义表达式等;Circuit Check 是Spectre/APS/XPS 提供的主要用于电路级别的检查机制,主要用于检查特定的电路设计问题,最常见的包括检查电路中的悬空输入点、高阻点、低压MOS管接到了高电压域等。IC617/IC122的Virtuoso 环境支持在VSE XL图形界面进行Assert和Circuit Check的设置,Check的结果和其他仿真结果一起直接在ADE XL界面显示,可以方便地对Check/Assert 的结果进行各种后处理,并将有Violation的器件及路径直接反标到schematic。该流程可以覆盖电路设计常用check需求,完全不依赖脚本,图形界面让工程师更容易上手,基于瞬态仿真的Dynamic Check相比其他工具更具优势。有效利用Check/Assert flow, 可以帮助避免或及早发现设计中的一些常见问题,从而减少设计迭代,该流程在TSMC 16 nm和Intel 14 nm实际项目上得到应用,很大程度地提高了设计效率。

1 Circuit Check

  Circuit Check分为Static Check和Dynamic Check,前者主要基于电路拓扑结构进行检查,后者主要基于瞬态仿真结果进行检查。

  Spectre/APS/XPS支持的Static Check主要包含如图1所示的几个类型, Static Check主要在电路解析阶段基于电路拓扑结构和电压传递信息进行分析,不需要设置任何仿真类型,因此速度快,对于仿真速度几乎没有影响。

图像 001.png

图1  Static Check

  其中,static_erc 可以说是最简单实用的Static Check类型,可以用来检查dangling node,floatgate,floatbulk以及hotwell 等。Floatgate和floatbulk比较容易理解,dangling node是指任意器件的unconnected terminal;hotwell是指没有连接到电源或地的bulk node。这些都是常见的可能引入问题的连接关系或拓扑结构,如果是仿真或测试结果出错再去查,往往费时费力而且会影响产品交付周期,如果在电路设计前期能及时或尽早地发现,会很有意义。

  另外两个常用的Static Check是static_highz 和static_voltdomain.  Static_highz从静态的角度找出到电源和地之间没有任何导电通路的节点,也就是所谓的high impedance node,如图2所示圆形节点,这是电路设计中引入不确定电位从而导致漏电的一类常见问题。Static_voltdomain从静态的角度找出电压域连接出错的问题,最常见的是低阈值电压的MOS管接到了高电压域,容易导致击穿失效的问题。如图3所示。

图像 002.png

图2  static_highz 示例

图像 003.png

图3  static_voltdomain示例

  Spectre/APS/XPS支持的Dynamic Check 主要包含如图4所示的几个类型,Dynamic Check主要在电路瞬态仿真阶段基于瞬态仿真结果进行分析,检查结果和所加激励有关。

图像 004.png

图4  Dynamic Check

  前面提到的关于high impedance node的检查,除了有static_highz, 也有对应的dyn_highz, 前者是静态的,后者是动态的。

  除dyn_highz以外,另外两个常用的dynamic check分别是dyn_exi 和dyn_setuphold. Dyn_exi 帮助找到在指定时间窗口内,电流超过某个指定门限的器件,这对于debug掉电模式时的漏电流问题会非常有帮助。Dyn_setuphold可以帮助检查时序问题,对于时钟和数据之间setup time或hold time不满足指定要求的会报错。关于这两个Dynamic Check,后面我们会用实际项目中用到的例子作进一步详细介绍,这里先不展开。

2 Virtuoso Check/Assertion Flow

  仿真器提供仿真和上述的Circuit Check功能,Virtuoso提供设计环境,可以在不熟悉check语句语法的情况下,轻松完成整个流程,具体流程图如图5所示。使用该流程的过程会涉及VSE  XL(Virtuoso Schematic Editor XL)中的Checks and assertions assistant, 以及ADE XL (Analog Design Environment XL),后面我们会用实际用例介绍具体设置和看结果的详细过程。

图像 005.png

图5  Virtuoso Check/Assert 流程示意图

3 Dyn_setuphold 在Virtuoso Check/Assert流程中的具体应用

  我们的实际项目中经常会涉及到一些custom digital设计,时序检查对这一类型的设计非常重要,最典型的就是时钟和数据之间的setup time和hold time需要满足一定的要求,dyn_setuphold check正好可以满足这一类的检查需求。下面以图6所示的最简单的DFF链路的例子来详细阐述dyn_setuphold在Virtuoso Check/Assert流程中的具体应用。

图像 006.png

图6  Dyn_setuphold testbench 示意图

  如图7所示,在ADE XL中点击‘Click to edit checks’, 会自动跳转到VSE XL界面,并打开 Checks/Asserts Assistant,  在Checks/Asserts Assistant选择并设置好dyn_setuphold check,如图8所示。

图像 007.png

图7  Click to edit checks in ADE XL

  这个例子,时钟信号是CK, 数据信号包括D2, D22 和D222,时钟周期为800 ps,设置setup time和hold time都不能小于200 ps, 如果不满足应报错。

图像 008.png

图8  Checks/Asserts Assistant in VSE XL

图像 009.png

图9  View Netlisted Checks/Asserts

  如图9所示,可以在ADE XL中选择‘View Netlisted Checks/Asserts’直接看到生成的Check语句,如图10所示。

图像 010.png

图10  Netlisted Checks/Asserts

图像 011.png

图11  Dyn_setuphold check结果

  设置并进行正常的瞬态仿真,仿真结束以后,在ADE XL不仅可以看到正常的仿真结果和波形,同时还可以看到Checks/Asserts的结果,如图11所示,可以很清楚地看到信号D22有hold time violation,信号D222有setup time violation,而且可以看出每个violation发生的具体时间点,对应上升沿还是下降沿等具体信息。如图12所示,可以选择只看setup violation或只看hold violation。

  如图13所示,D22和CK之间的hold time只有132.0 ps,不满足200 ps的要求,D222和CK之间的setup time只有67.94 ps,也不满足200 ps的要求,从而进一步验证了图11和图12显示的结果。

图像 012.png

图12  Dyn_setuphold check结果—— setup violation

图像 013.png

图13  Dyn_setuphold check结果波形

图像 014.png

图14  Dyn_setuphold check结果波形

图像 015.png

图15  缺省的Violation Filter

  在图11和图12中点击任意一个信号,如D2,会直接跳转到VSE 窗口,放大并点亮D2 信号,如图14所示,这是ADE XL和schematic之间的cross-probing功能,方便快速找到有violation的信号。

  在ADE XL中,可以添加一类新的表达式,名为‘Violation Filter’,通过这种表达式,可以很方便地对Checks/Asserts的结果进行统计,如图15所示,新添加的Violation Filter表达式缺省统计所有的Checks/Asserts violation一共有多少个,可以很方便地对统计内容进行调整。

4 Dyn_exi 在Virtuoso Check/Assert流程中的具体应用

  接下来,我们继续讨论在另一个项目中,如果利用dyn_exi debug解决power down模式的漏电流问题。

  问题现象是电路前仿真结果正常,后仿真在power down模式会有异常的漏电流,电路设计工程师花了很长时间都没有找出这个漏电流是如何引起的。

  对于这一类问题,有一个很方便的方法,就是通过dyn_exi check找出在指定的时间窗口,哪个或哪些器件的电流超出了定义的门限,找到这个或这些器件之后,trace其端口电压,可以很快找出问题的原因。

  Dyn_exi check具体的设置语句如图16所示。

图像 016.png

图16  Dyn_exi 设置语句

  通过设置dyn_exi check,找到漏电的器件,并trace其端口电压之后,我们发现图17所示电路图中信号ca1有异常。VDDESD是2.8 V,但是后仿结果中ca1是0 V。

图像 017.png

图17  Dyn_exi 示例局部电路原理图

  根据上述线索,电路设计工程师提供简化的test case重现问题,然后我们发现图17中的电阻R0在后仿真用到的rcc extraction view中出现了连接关系断掉的情况。如图18所示,63个串联电路由于串联节点出错没有彻底连通,从而导致出错。

图像 018.png

图18  Dyn_exi 示例局部网表

  这是抽取工具引起的,找到原因以后,通过抽取工具得到了及时有效地解决。

5 Static_erc在Virtuoso Check/Assert流程中的具体应用

  下面我们再举另一个实际项目的例子,关于如何利用static_erc check debug后仿真结果不正确的问题。

  问题现象也是电路前仿真结果正常,后仿真结果异常,电路设计工程师怀疑后仿网表有问题, 经过一段时间debug以后,发现图19中的in(input pin)后面接的反向器I0的输出out1有错,in 为0电平时,out1仍为0电平,反向器没有正常工作。

图像 019.png

图19  Static_erc 示例局部电路原理图1

  我们在这个项目上采用了static_erc check, 试图找出后仿网表中是否存在dangling node。

  用static_erc找dangling node的check设置如图20所示。

图像 020.png

图20  Static_erc—dangling node设置

  如图21所示,通过static_erc check, 我们很快找到后仿网表中存在dangling node,反向器gate端的寄生电阻导致PMOS 和NMOS的gate和input pin(in)都没有连通,从而导致出错。这个也是抽取工具的问题,定位具体原因以后,也很快通过抽取工具得到了及时有效的解决。

图像 021.png

图21  Static_erc—dangling node示例局部电路原理图2

6 总结

  本文简单介绍了Spectre/APS/XPS 支持的Circuit Check类型及其原理,以及Virtuoso Checks/Asserts 完整流程,通过dyn_setuphold, dyn_exi 和static_erc 3种最常用的check类型,详细阐述了如何设置Circuit Check,如何看check 结果,以及如何方便地对check结果进行后处理。通过这3个例子,我们可以清楚地看到Circuit Check如何在具体项目中得以应用,并分别适用于解决哪些类型的问题。可以看出,该流程能够覆盖电路设计常用check需求,完全不依赖脚本,图形界面让工程师更容易上手,基于瞬态仿真的Dynamic Check相比其他工具更具优势。有效利用Check/Assert flow, 可以帮助避免或及早发现设计中的一些常见问题,从而减少设计迭代,该流程在TSMC 16nm和Intel 14nm实际项目上得到应用,从而很大程度地提高了设计效率。


此内容为AET网站原创,未经授权禁止转载。