电路仿真和验证是集成电路设计工作的重要组成部分,在不同类型芯片的各个设计阶段中都消耗了相当大的资源。下面是一些具体的仿真应用:在数字电路模块设计中,无论是系统级、行为级还是RTL级,都需要编写专门的测试代码输入激励波形,同时检测输出波形是否符合功能描述;若发现实际输出和预计输出不一致,则进一步查看输入输出和电路分析。而在模拟电路设计中,由于输出不能精确定义,更需要经常观察输出波形,有时还需要进行数学变换来测量电路性能。
此外,通讯方面的芯片要遵从各种通信协议,需要构造相对复杂的激励信号。在建库应用中,单元功能比较明确和通用,工程师更加侧重测试向量自动生成和自动检测;此外还有各种环境下时延等特征参数的提取。对一些大型定制电路来说,工程师可能还需要提取关键路径包含的电路,以此作为时序模型进行仿真和特征参数提取。需要说明的是,这里我们把特征参数提取、建模等应用也归入仿真和验证这个大方向。
虽然以上各种应用涉及的工具、目标数据以及输出结果各不相同,我们仍然可以把仿真和验证过程大致分为激励信号准备、仿真、结果察看和分析三个主要步骤。从这个角度看,不同应用只是侧重点不同:数字电路的仿真验证更侧重在测试数据管理和自动化,模拟电路侧重于波形观察和性能分析,单元库侧重于特征提取和自动化......。
而另一方面,本质上类似的这些应用却涉及HSPICE、ModelSim、Spectre、WaveView、SpiceExplorer等众多工具,用户需要分别启动相关工具,控制数据文件在工具之间流转,虽然脚本语言可以将流程衔接得比较流畅,但在数据管理上的支持还很不够。波形显示和波形编辑方面也需要更加灵活、强大的操作和显示方法,让用户能够从更多角度查看电路工作情况,同时使得使用方法更加简单。
针对这些需求,圣景微电子开发了Matrix Stimuli这个通用仿真验证平台,它将数字电路、模拟电路的仿真和验证统一在一起,集成了测试数据管理、波形编辑、波形查看、特征提取等功能,能够很方便地嵌入Cadence、Mentor Graphics、Synopsys等公司的集成环境、仿真工具。该平台的安装非常简单,软件检测系统中已经安装的各种EDA工具,可自动完成不同环境下菜单、工具的链接。Matrix Stimuli采用C/C++编写,用不同编译器编译后可以分别运行于Windows、Linux、Sun平台。
Matrix Stimuli架构如图1所示,各主要模块的功能和实现方法说明如下。
图1:圣景微电子仿真验证平台架构。 |
1. 波形编辑
可提供可视化数字/模拟波形编辑方法。软件提供正弦波、三角波、方波等基本波形,用户用鼠标就可以很方便地调控波形的周期、振幅、相位以及需要的周期数。同时还可以将几个波形叠加在一起形成复合信号,用作通讯类电路的输入波形。对于更为复杂的模拟波形和数字波形,用户还可以用“5sin(100派t)×sin(2派t)”之类的表达式定义信号的组合方法。
如果要追求更加真实的波形,可以直接从电路仿真的输出波形中截取一段作为待测模块的输入波形。为了实现这样的效果,软件定义了抽象的波形基类,每个波形自己定义显示方式、控制方法、叠加方法、输出方法。在此基础上派生出各种基本波形和复合波形。这样的架构可以让不同波形之间、以及和界面之间相对无关,系统可扩展性较好。软件还包括一个表达式解析器,将用户输入的文本转化成内部的波形数据。
2. 增量结果获取和压缩
遇到大型模块或者复杂激励的仿真时,为了让用户尽快看到早期的仿真结果,软件应跟踪输出文件,定期检测新增的仿真结果,以不干扰当前显示内容的方式添加到窗口中。用户可以继续关注原来正在分析的一段波形,也可以及时查看最新的仿真结果。此外,仿真工具输出的波形信息通常包含较多的冗余信息,不利于保存和反复读取。软件通过将步长确定的输出波形压缩成异步二进制信息来大幅度减少数据量。为了屏蔽仿真工具控制命令、输入输出格式各不相同等特点,采用定义通用接口、从基类派生的方法来保持架构的结构化和可扩展性。
3. 波形显示
波形显示基本上可以采用波形编辑的数据结构,设计工作主要集中在增加用户查看输出波形的方法。例如,将多个波形放在相同坐标系中,以便对比性能误差;将一组信号按顺序摆放,以便更容易观察信号相互之间的影响;将波形组合成16进制数值,更加直观而且可以腾出空间给更多波形;将模拟波形变成数值或者将数值变成模拟波形;缩小、放大等视区变换;提供周期、上升下降时间、振幅等指标的测量方法。针对大规模的仿真,波形显示模块还需引入缓冲机制,减少内存耗费同时尽可能减少波形读入的延时;该缓冲机制同样可以加快大范围波形显示的速度。
4. 功能验证和特征提取
对于功能比较简单、明确的单元,软件可以根据用户给定的功能/时序表达式,生成完整的测试向量集合。完成这个任务需要一个表达式解析器和一个表达式运算器。通过精确定时,在输出信号稳定的时刻检测是否符合预期结果。时序电路的功能检测基本上也是这个过程,只是要区分时钟、异步控制等不同引脚。上升时间、下降时间、建立(Set up)、保持(Hold)等时间的检测通过测量输出信号来获得,软件要判断高、低电平,消除抖动、过充等现象的干扰。此外,时延参数提取还要结合温度等环境条件。
5. 应用层接口和脚本语言
仿真平台本身并不包含电路仿真工具,需要调用第三方工具完成电路的仿真。为了让跨工具的使用过程更加方便,应用层接口在安装、启动、使用等阶段提供无缝连接。在安装的时候,软件自动搜索和配置第三方工具,将仿真验证平台和第三方工具软件连接在一起。软件启动时,结合文件类型、项目模版、模块名称、项目名称等信息,迅速判断用户的使用目的,进入工作状态。使用过程中,软件通过消息机制、控制命令实现电路图和仿真结果之间的交叉索引。软件本身携带的脚本语言可用于个性化菜单配置、批处理和重复运行验证及特征提取工作。
6. 测试数据管理和复用
电路设计研发管理中,测试数据管理可以提高测试数据的重复利用率,从而降低研发成本。软件按照“应用领域、电路模块、测试数据、激励信号”四层结构来组织测试数据,前三级分别对应到目录结构。对于新增的电路模块,软件通过模块名、引脚名、信号名自动搜索和匹配适用的测试数据。
作者:潘日华
技术总监
圣景微电子(上海)有限公司
文章评论(0条评论)
登录后参与讨论