基于Simulink的数模混合电路仿真平台设计与实现
2022-09-29王连浩王占选齐非凡赵子晟王月海
王连浩,王占选,齐非凡,赵子晟,王月海
(1.北方工业大学 信息学院学院,北京 100144; 2.北京航天测控技术有限公司,北京 100037)
0 引言
近年来,随着国内外情势的变化和时代的发展,集成电路,尤其是工业级芯片的研发、设计和应用越来越受到国家重视,集成电路发展踏上快车道,而在集成电路内部设计研发方面,为了满足众多应用领域需求,由模拟电路和数字电路构成的混合电路已经成为主流,其复杂程度和规模都在不断增加[1-6],仿真是设计和制造工业级芯片的重要环节,能够有效地减少研发周期和成本,因此数模混合电路仿真已成为制约当代集成电路产业发展的卡脖子问题。
从技术层面上看,模拟电路仿真采用基于状态方程演化的技术,仿真精度高,需要仿真时间长;数字电路仿真采用基于事件驱动的技术,仿真速度快。两者的仿真原理与核心技术在底层上难以直接集成。从工业应用层面上看,模拟电路仿真和数字电路仿真均有业界影响大、仿真精度高、使用用户多的工业界标准软件,而且这些软件更新及时,支持目前各大芯片厂商推出的最新集成电路,如支持模拟电路仿真Spice引擎的OrCAD PSpice、HSpice、Spectre等软件,支持数字电路仿真的ModelSim软件在国内都居于业界标准地位,具有十分广泛的应用。
数模混合电路仿真一般可以分为本机模式和粘合模式两种,这两种模式的算法原理各不相同,同样各有优势,在目前的应用领域均有典型代表[7-10]。本机模式设计方法用单一仿真器同时实现数字和模拟仿真算法来进行数模混合仿真,典型代表是Mentor的ADMS仿真器和Synopsys的Saber,其中ADMS是一个支持多种设计语言、单核的数模混合信号电路设计验证工具,而Saber主要用于外围电路的仿真模拟,同样是单一的混合信号仿真内核。由于芯片厂家通常只提供业界标准的模型,所以这种模式设计的混合仿真软件因缺乏工业级芯片模型的支持而应用受到一定限制。粘合模式使用两个仿真器,模拟仿真器仿真模拟电路,数字仿真器仿真数字电路,然后通过控制模块处理两个仿真器之间的数据交互。这种设计方式的仿真软件可以提供业界标准的芯片及电路模块支持,但内部数模接口和时序控制模块设计复杂。
目前,世界上最著名的三家EDA软件公司分别是美国的Synopsys与Candence,以及西门子的Mentor Graphics。这三家公司在国际EDA市场中处于领先地位,而且现在应用广泛的数模混合电路仿真软件也是来自这三家公司,主要有3个:Mentor的ADMS仿真器、Synopsys的Saber仿真器和Cadence的AMS-Design仿真器[11-13]。ADMS主要用于混合信号集成电路验证,Saber适合开关电源领域的电路仿真,AMS-Design主要应用于混合信号芯片设计。前两者均为单核数模混合信号仿真器,缺点在于性能与逻辑模拟器还有较大差距,而AMS-Design缺少业界标准的芯片及电路模块支持。他们的共同特点在于不开源,费用昂贵,难以二次开发形成自主产权。
针对设计研发工业芯片与诊断维修高精度电子设备的工业现状,急需满足以下要求的数模混合电路仿真平台:具有自主知识产权,支持当下主流模拟电路和数字电路仿真技术,支持各集成电路厂商最新芯片模型且满足设计精度需求、支持工业级集成电路应用开发等。
针对上述需求,数模混合电路仿真工具的设计根据设计模式分为两种设计方法:(1)基于Ngspice这类开源软件进行数模混合电路设计和模块库建立,这种方式性价比不高,需要花费大量的时间和精力,所以很少有研究者进行研究;(2)选择不同仿真器进行粘合,借助仿真器自带模型库,能够有效地减少设计时间,性价比高。因此,目前数模混合电路仿真工具设计方法主要是第二种。
本文在第二种设计方法的基础上提出了一种粘合模式的数模混合仿真平台模型架构,基于该架构选择PSpice和ModelSim在Simulink上实现联合仿真,并在此基础上设计了一个数模混合仿真软件平台。
该平台基于Matlab Simulink技术,集成了主流的模拟电路仿真PSpice引擎和数字电路仿真ModelSim引擎,是一种模块化、图形化、行为级的数模混合仿真平台。该平台使用Simulink做为顶层,可利用Matlab众多工具模块,以及与C/C++等高级语言交互的程序接口,底层的模拟仿真引擎PSpice和数字仿真引擎ModelSim都是业界首选的专业仿真引擎,不仅有对最新工业芯片的完美支持,而且仿真精度和性能都是业界一流水准。因此,本文设计并实现的数模混合仿真平台具有以下优点:基于Matlab Simulink平台,混合电路仿真界面友好,可视化程度高;采用粘合模式,选择业界主流仿真引擎,可以获得最新芯片模型和电路模型的支持;采用模块化设计,提供图形化界面;支持行为级仿真,仿真精度高,性能良好;数据处理能力好,能够灵活地完成数据转换,以及调整数据流向。
1 数模混合仿真平台总体设计
1.1 平台架构
本文设计的数模混合仿真平台通过Matlab Simulink创建系统级行为模型,对于系统中具体模拟和数字电路模块分别调用商用高精度仿真引擎PSpice和ModelSim实现。
数模混合仿真平台的架构是C/S(Client/Server)结构,Matlab Simulink作为客户端(client),以系统级仿真做为顶层结构,底层是两个不同类型的仿真器作为服务器(server),一个模拟仿真服务器PSpice,一个数字仿真服务器ModelSim。客户端为两个引擎服务器提供必要的激励信号和控制信号,服务器接受客户端的调用,并接收信号,完成必要的仿真工作,将仿真数据传回客户端,在客户端中完成数据的转换和交互,这就是仿真平台的基本运行架构。
Matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境[14-15]。借助Matlab能够很好地完成数模混合仿真的主控模块设计和数据处理等功能。Simulink是Matlab的扩展,是一种可视化仿真工具,能够实现动态系统建模和仿真[16]。借助Simulink平台的接口模块能够实现引擎连接,再通过平台本身的模块和函数完成数据转换工作。PSpice作为模拟仿真引擎,优势有两方面:(1)其本身的简便性和专业性在业界都是一流水准,是工业界标准软件;(2)能够提供最新的业界标准的芯片及电路模块支持。借助PSpice能够很好的完成模拟子电路搭建和校验工作。ModelSim因其业界标准地位和作为单内核实现VHDL和Verilog混合仿真等特点[17-18]作为本文数模混合仿真的数字仿真引擎,完成数字子电路搭建和校验工作。
这种架构带来了新的需要解决的问题,一是三者之间的数据交互问题,二是联合仿真中的时序同步问题。
针对数据交互问题,本文提出了一种利用协同仿真技术将仿真结果数据集中在Simulink平台中,然后利用系统级接口模块实现模拟和数字数据的交换。
针对时序同步问题,本文提出了一种结合了拓扑排序算法的仿真控制方式,并根据拓扑关系进一步确定了各模块间的接口连接关系,解决了子电路模块间的时序问题,模块内的同步通过协同仿真接口的配置实现。
这两种方法在下一章节进行了具体的介绍。
1.2 软件功能模块
本文设计的数模混合仿真平台主要功能包括电路维护,数字电路和模拟电路联合仿真,仿真管理,结果处理等部分,设计了电路输入模块、电路拆分模块、联合仿真模块、流程配置模块、仿真流程控制模块(数据接口及时序同步)、结果输出及打印模块、管理模块(文件管理、项目管理)等功能模块,平台软件功能模块如图1所示。
图1 数模混合仿真平台软件功能模块图
2 功能模块设计及关键技术解决方案
2.1 电路原理图维护模块
电路原理图维护模块主要功能可以分为四部分:(1)电路输入模块;(2)电路拆分模块;(3)电路维护;(4)元器件模型管理。
电路输入模块主要目的是获得电路原理图,可以通过文件导入的方式从电路原理图库将所需电路原理图读入,也可以通过仿真引擎的原理图编辑或代码编辑导入所需电路。
电路拆分模块将时序上可以逻辑拆分的复杂电路按照功能划分,在专家指导下,进行电路功能模块的半自动拆分,形成众多功能单一的模拟子模块序列和数字子模块序列。
电路维护功能是对不同类型子电路进行管理,其主要方式是将拆分后的模拟和数字子电路模块在对应的PSpice和ModelSim仿真器中进行编辑,调整为能够通过相应校验的独立电路,存入数据库中。
元器件模型管理处理的对象是在引擎软件模型库中原本不存在或者需要修改的元器件,分为模拟器件模型管理和数字功能模型管理。模拟元器件建模方法主要有两种:一种是参数建模法,适用于相对简单、已经具有功能模型的元器件建模;另一种是子电路建模法,适用于相对复杂、比较新型的、需重新推导功能模型的元器件建模[19-20]。数字功能模型建模是通过在ModelSim进行行为级建模,通过激励源文件进行校验,元器件模型同样存入数据库中。
2.2 联合仿真模块
联合仿真模块是为了解决平台和引擎之间的数据交互问题,是通过协同仿真技术实现的,其主要功能是建立引擎连接和实现单模块联合仿真。
引擎连接功能是实现平台与底层仿真引擎的协同运行,确保平台和引擎之间能够实现数据交互。这部分功能是通过Simulink的接口模块库实现的,主要涉及PSpice SLPS Interface 和Link for ModelSim这两个接口模块。
SLPS是Cadence Design Systems公司针对PSpice仿真器与Mathworks公司的Matlab建模工具Simulink推出的接口软件,主要功能是链接PSpice至Matlab中的Simulink仿真器,从而在系统级仿真环境中实现模拟电路系统的仿真。
Link for ModelSim联合仿真的接口在HDL仿真器ModelSim SE/PE和Simulink间提供了一个双向连接,从而可将Matlab工具整合到EDA工作环境中,使其应用于FPGA和ASIC的开发,以指导硬件的设计验证和联合仿真。
单模块联合仿真包括模拟电路联合仿真和数字电路联合仿真两种,两者分别利用上述两个接口模块实现顶层平台与底层引擎协同仿真。具体方法为将在引擎中已经维护好的子电路通过接口模块与平台建立连接,平台提供激励、显示、存储等模块,建立联合仿真工程,将数据存储于平台内,为数模混合仿真提供条件。
2.3 电路模块拓扑排序
子电路模块间的时序问题是本文设计的混合仿真平台实现的关键。本文提出了一种结合了拓扑排序算法的仿真控制方式,对分解好的子电路进行正确仿真次序的排列。
该方式采用有向无环图的方式对拆分的子电路序列及其中的先后关系进行表示,根据Matlab存储结构选择元胞数组存储有向无环图信息。
假定某数模混合电路拆分为6个子电路模块,根据数据流确定的模块间的调用关系可表示为图2所示的有向无环图。下划线前面的数字是输入或拆分模块时所分配的序列号,下划线后面是本模块的仿真类型,a为模拟电路模块,d为数字电路模块。
图2 某电路拆分后子电路模块的有向无环图
对仿真模块进行拓扑排序后,根据拓扑关系可以进一步确定了各模块间的接口连接关系。建立表1所示的子电路模块间的数据转换表,记录每个模块的入度和出度,并输出数据转换关系, 以便为数模混合仿真的数据交换功能做准备。表中数据转换类型有3种:1表示无转换,2表示模数转换,3表示数模转换。
表1 某电路拆分后子电路模块的有向无环图
联合仿真时,平台会调用子电路模块拓扑排序对待仿真的子电路模块进行逻辑排序,并在每个模块仿真开始与结束时,检测入度值、出度值和数据转换类型,对本模块的输入、输出和数据类型进行配置和修改,确保仿真快速、准确进行。图3所示的电路模块图软件生成的一种拓扑序列为(1_d,3_a,6_a,2_d,4_a,5_d)。
图3 平台与模拟仿真引擎数据交互图
2.4 时序同步和数据接口
如何处理模拟仿真与数字仿真之间的接口是一项十分重要的问题,只有解决了这一问题,才能为数模混合仿真环境提供保证。因此,数模混合仿真平台核心算法在于时序同步和数据转换。时序同步算法分为两步进行:(1)拓扑排序;(2)协同仿真的时序同步。
根据文献资料,Simulink与PSpice之间的数据交互如上图所示。Simulink的主仿真步长取决于随机抽取PSpice的仿真测点,比PSpice的仿真步长略大。Simulink与ModelSim之间的数据交互在于时钟信号和复位信号的控制,保证仿真时间与系统仿真时间的对齐。
为确保数字模块混合电路仿真的时序同步,设计的数模混合仿真平台利用Simulink分别与PSpice和与ModelSim之间数据交换与同步机制,并加以量程与步长控制等予以调整。首先要设定Simulink和ModelSim两个仿真引擎的相对时间量程,默认是Simulink中的1 s时间等于HDL(Hardware Description Language,硬件描述语言)仿真器中的1 s时间,但也可以根据实际情况修改。其次要设定混合仿真的主仿真步长。数模混合仿真中模拟仿真决定仿真整体的速度和精度,所以主仿真步长的设置与模拟仿真更为紧密。主仿真步长的设置需要适度,过大会导致采集的数据波形失真,影响准确性;设置过小又会影响分析速度,所以可以采用参考PSpice内部仿真结果的方式设置主仿真步长。
2.5 联合仿真管理模块
联合仿真管理模块主要包括仿真流程配置功能和系统级仿真流程控制功能。
仿真流程配置主要是将联合仿真模块的功能实现并实现数据交互。整个流程分为三部分配置:(1)利用电路维护功能在对应仿真引擎分别建立模拟和数字电路子工程,并分别对其进行调整校验,直至能够完整实现各自功能;(2)在Simulink实现单模块仿真,实现平台与底层仿真引擎连接,并补充其他模块,如激励源模块和显示模块等,实现系统级功能仿真;(3)实现模拟和数字模块之间的数据交互,利用电平调整与格式转换等操作实现模/数和数/模转换。
系统级仿真流程控制主要功能是对系统级混合仿真流程的参数配置、运行控制、时序控制、错误处理等功能。
参数配置功能是对仿真器类型、仿真类型、仿真起止时间、步长以及接口配置中子电路选取、输入输出接口等仿真参数信息进行配置。
运行控制功能是在配置好参数后,利用Matlab Simulink控制逻辑,实现对仿真流程的启动、停止、单步、暂停等控制,并更新仿真进度显示。其中联合仿真平台和引擎的数据交互会影响仿真的精度和性能,需要进行设置。
错误处理功能主要是处理联合仿真中出现的各类错误。例如:显示,错误信息来源追踪及可能导致原因等,同时暂停Simulink仿真控制,等待用户进一步处理。
结果处理功能主要是对仿真结果保存、显示、分析,并将结果存入仿真结果库,以及打印查看。
3 电路仿真
3.1 仿真实现
本文设计的数模混合电路仿真平台能够对复杂电路进行仿真操作,实现流程化、模块化数模混合仿真。选择一个时序上可以逻辑拆分的、具有典型性的混合电路作为例子研究分析数模混合仿真平台的各项功能。混合电路原理图如图4所示。
图4 仿真案例混合电路原理图
根据混合电路原理图,按照软件流程,首先利用电路原理图维护模块进行电路拆分和维护,构建能够通过相应校验的独立子电路;然后利用联合仿真模块实现引擎调用,构建单模块联合仿真工程;最后通过联合仿真管理模块实现仿真流程配置和流程控制。
为了应对面对复杂电路时拆分模块多且数据连接复杂的情况时平台时序同步的能力,采取将模块的序列号打乱设置的方式进行检验,工程1序列号为3,类型为模拟电路;工程2序列号为1,类型为数字电路;工程3序列号为2,类型为模拟电路。按照序列号进行电路模块导入,并输入每条有向边的起始点,进行拓扑排序,其结果如图5中仿真视图窗口所示,其中一种模块排列变为(3_a,1_d,2_a)。数据转换如表2所示。
表2 案例电路的模块间数据转换表
根据上述步骤实现了混合电路联合仿真,其各模块结果图如图5~7所示。
图5 工程1仿真工程电路图与输出波形图
3.2 结果分析
1)功能整体性分析。
工程1的功能是通过总线驱动芯片74HC245控制电源V1的信号是否输出,理论输出应该为200 Hz的脉冲信号;工程2主要功能是通过集成数字电路实现对第一环节输出信号进行分频操作,实现4分频,理论输出为50 Hz的脉冲信号;工程3的主要功能是通过运算放大器对模块二的输出信号进行增益,放大倍数为2,然后用来驱动某负载进行工作,理论输出为振幅为2的50 Hz脉冲信号。
根据图5输出波形与上述分析的理论值比较,可知工程1的仿真结果正确。工程1到工程2,会发生模数转换,此时输入模块二的波形为赋值为1的200 Hz脉冲信号,从图6波形可以看出是赋值为1的50 Hz脉冲波形,与理论值相同,可以看出工程2仿真功能正常,结果正确。工程2到工程3,会发生数模转换,图7波形与理论值存在极小误差,均方误差为5.202e-08,这表明工程3仿真功能正常,且精度高。
图6 工程2仿真工程电路图与输出波形图
图7 工程3仿真工程电路图与输出波形图
综上所述,本平台能够对时序上可以逻辑拆分的数模混合混合电路实现流程化、模块化的数模混合仿真,验证了平台整体的有效性。
2)精度和性能分析。
数模混合仿真软件的精度和性能与其设计方法有很大的联系,表3是不同方案的对比表。
表3 不同方案的对比表
表3从理论角度对比了现有的设计方案和本文设计方案的特点,可以看出本文设计的数模混合仿真平台具有性价比高,精度和性能都是比较良好。下面通过具体实例对精度和性能进行分析。
以工程1仿真为例,模拟电路联合仿真结果与PSpice仿真结果比较如图8所示。对两者仿真结果进行数据分析可知,模拟联合仿真结果是从PSpice的仿真结果中采集来的,两者数值精度完全一致。除此之外,PSpice仿真结果在初始和数据突变时会采取更加精准的采集,在较小的步长时,这种情况会造成性能的浪费,而模拟联合仿真结果能够避免这种情况。既能够发挥PSpice仿真的精确性,又能提升一定仿真性能。
图8 模拟电路联合仿真结果与模拟引擎仿真结果比较图
以工程2为例,数字电路联合仿真性能与ModelSim仿真性能比较如图9所示。图中每个数据是在相同环境下,经过数十次仿真结果取得的均值,能够比较有效地反应相同环境下两种方式的性能差异。由图可知,这两种仿真方式的仿真时间与实际用时均为线性关系,不同之处在于数字电路联合仿真进行需要一定的引擎连接时间,所以仿真时间起始点较高,但这种连接也减少了ModelSim软件仿真中其它部分的功能,从而提高仿真的性能,节省了仿真的时间。
图9 数字电路联合仿真性能与数字引擎仿真性能比较图
4 仿真平台实现
仿真平台的搭建步骤主要分为三步:(1)仿真平台界面设计;(2)功能模块设计;(3)数据库的搭建。其中,功能模块设计和数据库的搭建在第2章节进行了详细介绍。所以下面主要介绍仿真平台界面设计和平台的实现效果。
仿真平台界面设计是采用Matlab的GUI模块进行设计,包含菜单栏、工具栏、仿真工程目录窗口、仿真文件视图窗口、信息通知窗口和参数查询窗口等6个部分。
基于Simulink的数模混合仿真平台主界面如图10所示。
图10 平台主界面图
菜单栏、工具栏是主要仿真功能的实现,后四者主要功能是展示仿真流程和结果。工具栏是任务栏的图形化表示,所以通过菜单栏功能来介绍仿真平台效果。
工程管理实现仿真文件的新建、导入、配置和删除等操作,以及仿真工作组的导入、保存和删除等功能,能够将之前存储的文件,工作组读取,重新进行仿真配置,进行仿真工作,获取仿真数据。
仿真配置实现子模块的编辑校验、仿真子模块的导入和模块间数据导向关系的引入,并在此基础上完成添加数据类型的拓扑排序和模块间的数据转换。
仿真实现整体仿真流程的控制,包括启动、暂停、继续和终止,其操作会在消息通知窗口显示。
查看与结果是查看错误位置、类型等信息,单个仿真文件结果展示,仿真工作组仿真结果显示。
综上所述,仿真平台首先能够快速地对数模混合电路完成仿真流程的搭建、修改和功能仿真,其次能够对已经仿真过的工程组进行快速重新读取,然后可以对仿真进程进行观测和有效控制,最后可以对仿真整体,包括仿真流程和数据尽心有效存储和处理。
5 结束语
本文针对数模混合仿真精度与性能之间的矛盾问题和复杂混合电路时仿真工具存在主流芯片和电路模块不足问题,提出了一种粘合模式的数模混合仿真平台模型架构,基于该架构选择PSpice和ModelSim在Simulink上实现联合仿真,并在此基础上设计了一个数模混合仿真软件平台对该模型结构进行验证。本文设计并实现的数模混合仿真平台针对工业级复杂电路能够实现流程化、模块化、行为级的混合仿真,仿真速度和精确性均有较为良好的效果。数模混合电路仿真平台以Simulink以系统级仿真作为顶层,通过协同仿真技术调用具有主流芯片和电路模型支持的业界标准仿真软件PSpice和ModelSim作为底层的仿真引擎,实现数据交互,通过添加电路模块拓扑排序和数据转换的方法控制数据流流向,实现快速,高效的数模混合仿真。
优点:通过黏合模式设计思想和协同仿真技术,将PSpice软件的高精度与ModelSim的高性能有效的结合起来,使得基于Simulink的数模混合仿真技术有良好的性能和精确性。
同样存在不足之处,电路拆分功能过于依赖专家能力,降低了本平台的自动化程度,后续需要做出改进,故障仿真功能还未完善,后续需要添加。