利用AMSVF进行混合信号SoC的全芯片验证

分享到:

        引言

  近年来,消费电子和个人计算市场的发展增加了对于更强大且高度集成的芯片产品的需求。低成本、低功耗、复杂功能和缩短上市时间的需要,让越来越多的IC设计采用了SoC技术。

       在这些SoC电路中,由于包含了数据转换器、功率管理及其它模拟电路,混合信号设计不可避免并且越来越多。在混合信号SoC设计中,为了避免芯片重制,确保一次性流片成功,全芯片混合信号验证成为关键一环。传统上,在复杂的混合信号SoC设计中,不同团队分别独立验证数字和模拟组件,并不进行全芯片综合验证,其主要原因是没有足够强大的EDA工具能够完成这个重要任务。如果所有的集成和接口问题仅仅是在测试平台中进行解决,那么就很难保证混合信号的正确连接和时序匹配。随着高速SPICE模拟工具的出现,设计师可以在晶体管级执行整个芯片系统的验证,这是一种较为有效的验证方法。该方法具有很高的精确性,并能够进行全面的功能分析,但是,此类验证只能在设计周期的最后阶段进行,那时所有的单元和定制元件都已经设计完成。此外,这种方法的模拟速度有时非常缓慢,必须动用大量的硬件资源。对于包含微处理器、ROM、RAM、PLL等的复杂系统,由于其元件数量实在过于庞大,高速SPICE模拟器几乎不可能执行全芯片晶体管级模拟。

  然而,验证方法学应该贯穿于整个设计阶段,而不能仅局限于最终的验证阶段。同时,为了实现混合信号SoC验证在精确性和速度之间的完美平衡,设计师可能想要保持某些重要的模拟模块(如ADC、PLL)作为SPICE网表,而其它部分为Verilog行为级模块。这时,设计师可以选择使用晶体管级电路去替代特定的行为模块,并及时高效地继续设计验证过程。

  为了实现精确而快速的全芯片验证,全新的模拟解决方案应运而生。

         AMS Designer与AMSVF

  作为新一代的模拟器,AMS Designer基于Virtuoso Spectre和Ultrasim Simulator以及Incisive Unified Simulator引擎的可靠技术,是一种单一核心(Single Kernel)的混合信号模拟器。它提供了两种模拟求解器——Spectre和Ultrasim,并支持几乎所有的语言和SPICE网表规格。Ultrasim求解器性能较高,有着堪比SPICE的精确性,并且容量几乎无限,因此较适合大型全芯片设计。

  虽然AMS Designer为DFII流程提供了友好的图形用户界面,然而对于混合信号验证,多数设计师更需要该应用在命令行模式下执行全芯片验证。其原因不仅是因为命令行模式提供了强大而方便的批量运行功能,还因为设计本身是基于没有原理图的文本文档,或没有GUI环境。对于这种应用方式,AMSVF(AMS验证流程)更加适合。

        AMSVF的应用模式

  继承了NC-Verilog,AMSVF的使用支持ncverilog单步模式,它主要面向Verilog-XL用户;而3步模式会调用ncvlog剖析输入文件,调用ncelab构建电路结构,然后调用ncsim模拟器模拟电路。

  目前,AMSVF可以为数字测试平台提供支持,其应用模式如图1所示。

       

                                       图1 AMSVF的应用模式

  Verilog/VHDL顶层也可以例示SPICE subckt,对于VHDL测试平台来说,需要提供Verilog wrapper。另外,顶层可以调用其它Verilog/VHDL模块。这种应用模式被命名为“Verilog on top”。中层SPICE subckt也可以例示最底层的Verilog/VHDL模块,这种应用模式被命名为“Sandwich”或“SPICE in middle”。另外,在一些复杂设计中,AMSVF还支持多个“Sandwich”应用模式,如“Verilog - SPICE - Verilog - SPICE - Verilog”。

  这两种应用模式对于用户的全芯片验证应用是非常方便的。对于一个纯粹的数字系统设计,为了获得精确的结果,用户可以用SPICE网表替代一些Verilog模块,甚至使用寄生参数以获得更为精确的模拟结果。由于物理元件太多,模拟速度可能会变慢,这时,用户可以在SPICE网表中对基本门电路使用Verilog/VHDL行为级模块。那么,“Sandwich”应用模式就得以实现。这意味着用户可以自由而简单地切换应用模式。

        AMSVF的应用与重要功能

  AMSVF中有许多实用而重要的功能,其中某些功能可用于减少建立测试用例所需的手工时间,而另外一些功能可用于验证性能。

        自动总线连接

  在HDL语言中,总线信号的使用非常普遍且不可或缺。但SPICE中并没有类似的概念或定义,连接到SPICE支电路的Verilog总线必须被分解到每一个单独的端口,而且必须按顺序连接。例如:
module verilog;
wire [0:5] v;
analog_top xana_top ( v[0], v[1], v[2], v[3], v[4], v[5] );
endmodule
.subckt analog_top p<0> p<1> p<2> p<3> p<4> p<5>
...
.ends

  为了准确地连接Verilog实例和SPICE subckt,总线信号v[0:5]必须被分离。通常,分离的过程需要极为耗时的手动编辑,尤其对于规模较大的总线更是如此。而在AMSVF中,通过自动总线连接功能,用户可以轻松地将实例写为:
analog_top xana_top ( v );
  

         用户可以在SPICE网表中设置总线界定符,告知AMSVF哪个符号用于总线信号。这里符号<> 和[ ]为默认界定符,甚至也可以支持空总线界定符。

         AICM与BDR

  AMS Designer严格遵从Verilog AMS的规范确定(Discipline Resolution)过程,它让用户可以依靠工具确认信号间的连通性,并能实现连接模块的自动插入。

  AICM(自动插入连接模块)算法判定通过未声明端口相连的线网规范,然后在模拟和数字域边界上插入连接模块。除了电气到逻辑(E2L)以及逻辑到电气(L2E)这两个普通的连接模块外,AICM还支持双向的连接模块,这对于不想明确指定线网端口方向的用户来说是非常方便的。

  在验证大规模设计时,尤其是在ncelab阶段,新的BDR(锁定规范确定)功能能够让设计师应用他们的设计知识去控制并缩小规范确定的解析范围以提升性能。此外,如果通过AMSVF验证的设计在数字和模拟之间有清晰的界限,或其所有线网都已被明确地声明,那么,利用“-disres none”选项甚至可以跳过规范确定过程,显著缩短运行时间。因此,这种新功能可以大幅提高AMSVF在ncelab阶段的性能和效率。

  此外,BDR对于多电源设计来说是非常实用的。例如,对于同时使用5V、3.3V和1.8V供应电源的电路来说,当数字模块用不同的供应电源连接模拟模块时,数字信号将会有不同的数字规范,如logic5V、logic33V 和logic18V,而对于单电源设计来说,仅用缺省的logic这一个数字规范即可。因此通过这种功能,用户可以为设计中的数字模块设定不同的数字规范,以便模拟器更加准确地插入连接模块。

精彩活动