北京智芯微电子科技有限公司 郝 严 冯文楠
提出了一种面向OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用技术)系统物理层关键算法逻辑设计功能的联合仿真验证平台。该平台将原本使用SystemVerilog验证语言搭建的验证环境(运行于数字逻辑仿真工具Synopsys公司的VCS中)和复杂数字信号算法处理的参考模型(运行于算法仿真工具Mathworks公司的Matlab中),通过直接编程接口(Direct Programming Interface,DPI)以C++作为桥梁进行连接。通过实际仿真验证比较,使用这种方法搭建的联合仿真验证平台相比传统仿真验证平台,在执行相同数量测试用例条件下,仿真验证时间缩短15%以上;在不增加Matlab参考模型修改成本基础上,可对各关键参数进行随机化赋值,相关参数的触发覆盖率(triggering coverge)理论可以达到100%。
在数字IC(Integrated Circuit,集成电路)设计流程中,针对DUT(Design Under Test,被验证设计)的仿真验证环节十分重要,其贯穿RTL(Register Transfer Level,寄存器传输级)逻辑设计、门级(Gate Level)电路设计始末。验证人员需对被验证设计的功能、性能、可靠性安全性等方面进行仿真验证,将发现的异常部分反馈于设计人员进行确认和修改,再对修改后的部分进行回归验证,通过反复迭代,直至DUT在仿真验证过程中再未发现异常。
随着时代发展,验证工具、验证方法学和验证思路都在不断推陈出新,以应对愈发复杂的数字逻辑设计的仿真验证工作,旨在尽可能多的在芯片设计前期、中期暴露出潜在的问题,最大程度减少设计成本。
本课题介绍了一种新的验证思路,利用仿真工具的先进技术手段和验证方法学的架构优势完成仿真验证工作,旨在执行仿真验证过程中,更大发挥仿真工具和验证方法学的优势,提升仿真覆盖率,降低问题遗漏率,节约人力成本。
OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,由MCM(Multi-Carrier Modulation,多载波调制)发展而来。OFDM技术是多载波传输方案的实现方式之一,它的调制和解调是分别基于IFFT和FFT来实现的,是实现复杂度最低、应用最广的一种多载波传输方案(张捷.低压电力线载波通信信道特性研究[J].电子科技大学,2013:TN913,6)。
在通信系统中,信道所能提供的带宽通常比传送一路信号所需的带宽要宽得多。如果一个信道只传送一路信号是非常浪费的,为了能够充分利用信道的带宽,就可以采用频分复用的方法。
OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI)。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。
OFDM系统收发信机工作原理如图1所示:
图1 OFDM系统收发信机工作原理示意图
如图1所示,OFDM系统收/发信机的主要组成部分为:QAM(Quadrature Amplitude Modulation,正交振幅调制)调制/解调模块、串并/并串变换模块、IFFT/FFT模块、插入/移除保护间隔模块、插入/移除同步序列模块、插入信道估计序列/信道估计模块和组帧/解帧模块部分(张有兵,何海波,吴昕,周拥华,程时杰.低压电力线载波通信中信道模型的研究[J].电力系统保护与控制,2002:TM764)。
低压电力线宽带载波(Low voltage broadband power line carrier communication--LVPLC)通信是利用低压电力配电线(380/220V用户线)作为信息传输媒介进行语音或数据传输的一种特殊通信方式,通过载波方式将模拟或数字信号进行高速传输的技术。最大特点是不需要重新架设网络,只要有电线,就能进行数据传递,在自动抄表、照明控制、智能小区、智能大厦、家庭网络、家居智能控制、家庭安防等方面被广泛应用。该技术是把载有信息的高频信号加载于电流,然后利用各种等级的电力线传输(中国低压电力线载波通信专用频段为3-500kHz),接受信息的调制解调器再把高频信号从电流中分离出来,并传送到电力线宽带用户终端(计算机、电视或电话机和智能电表、开关、变台)。低压电力线从来就不是一种理想的通信介质,但随着技术的不断进步,特别是调制技术及微电子技术的发展,使得低压PLC的实用化成为可能。
合适的物理层调制方式对在电力线载波信道中实现可靠的数据传输十分重要。OFDM正交多载波调制是一种先进的调制技术,已成为新一代电力线载波通信的主流技术。在500kHz频段内实现的OFDM电力线载波通信系统通常称为窄带OFDM系统(相对于工作在2-30MHz的宽带OFDM载波系统-BPLC)。OFDM将工作带宽划分成多个相互正交的子载波(通常数百个甚至上千个)。经过信道编码后的数据映射到这些子载波上同时传送。与上述传统的调制技术相比,OFDM载波技术具有以下优势:
●抗噪声及抗干扰能力强,通信可靠、稳定;
●对电力线信道的变化具有自适应能力,当个别子载波受到干扰时仍可能成功通信;
●数据速率高,通常在几十kbps以上。
在数字IC(Integrated Circuit,集成电路)设计流程中,针对DUT(Design Under Test,被验证设计)的仿真验证环节十分重要,其贯穿RTL(Register Transfer Level,寄存器传输级)逻辑设计、门级(Gate Level)电路设计始末。验证人员需对被验证设计的功能、性能、可靠性安全性等方面进行仿真验证,将发现的异常部分反馈于设计人员进行确认和修改,再对修改后的部分进行回归验证,通过反复迭代,直至DUT在仿真验证过程中再未发现异常。
在对DUT仿真验证过程中,验证人员常通过数字逻辑仿真工具(如Cadence公司的Xcelium、Synopsys公司的VCS、Mentor公司的ModelSim等)、算法仿真工具(如Mathworks公司的Matlab、Maplesoft公司的Maple、Wolfram Research公司的Mathematica等)等工具协助仿真验证其功能的正确性,各类工具均有其优缺点,例如:
使用数字逻辑仿真工具,可通过搭建仿真验证环境对DUT的正确性进行验证,结合验证方法学,可以对设计进行更多随机化(Randomize)测试,能够更加充分覆盖被验证设计。但是由于其仿真机理是通过电脑CPU(Central Processing Unit,中央处理器)模拟硬件环境,硬件环境中的并行操作、复杂算法会导致验证速度大大降低,面对大型设计中若干秒功能仿真,很可能要花数小时乃至数天的时间。
算法仿真工具针对复杂算法开发的设计可以更加得心应手,相关深度优化的算法软件包可以被直接调用,验证速度更快。算法环境基于C语言,功能可以更加灵活。但由于其功能所限,尚无法对RTL设计代码或门级网表文件直接进行验证。
目前,在仿真验证阶段,验证人员大都仅使用某一类仿真验证工具,或者非同时使用数字逻辑仿真工具和算法仿真工具。同时,各类工具互相有依托,设计开发过程中难免会出现在不同的开发阶段中脱节的情况,致使项目周期加长。而且,由于不同验证人员的经验和思路不同,在使用仿真验证工具时也会出现交互上的偏差,导致问题遗漏率增大。
综上,针对上述两类仿真验证工具,需要有一种更加新颖的使用方式,专注于提升定位问题的精准度、功能/算法的覆盖率等方面。因此,联合使用数字逻辑仿真工具和算法仿真工具,取长补短,可以大大提升目前仿真效率。
在传统的仿真平台中,算法仿真工具通过算法仿真模型生成相关的多组数据(例如激励数据,过程数据、响应数据等)作为验证用例,数字逻辑仿真工具通过编译验证环境,导入该验证用例,作为发送给DUT的激励数据,中间过程比对数据,接收DUT输出结果比对数据等,确认DUT功能、性能的正确性(任志胜,林平分.电力线载波通信系统的物理层仿真方法的研究[J].科技信息,2013:TN913,6)。
联合仿真平台的工作流程图如图2所示:
图2 联合仿真验证平台工作流程图
通过比较,在传统的仿真平台中,数字逻辑仿真工具仅编译执行控制部分验证环境和DUT,算法部分验证环境均由验证用例代替,而验证用例事先由算法仿真工具生成。因此,在联合仿真验证平台中,数字逻辑仿真工具的执行速度似乎会更高;算法仿真工具和数字逻辑仿真工具可分别在不同的服务器CPU核心执行,效率似乎也会更高。
但实际还需考虑更多因素。首先,验证用例由数据算法仿真工具事先生成,如需要对验证用例做更多的随机化,势必要生成更多的验证用例,且随着随机化参数的增多,生成验证用例的数量会呈指数增长,仿真效率会降低;其次,算法仿真工具和数字逻辑仿真工具虽然可以分别在不同的服务器CPU核心执行,但由于验证用例需要先由算法仿真工具生成好,才可被数字逻辑仿真工具调用,且生成验证用例的速度和执行验证用力的速度不同,难以实现并行工作,其仿真时间依然等于生成验证用例时间+执行用例时间。
联合仿真平台的结构示意图如图3所示:
图3 联合仿真验证平台结构示意图
在联合仿真验证平台中,算法仿真模型由算法仿真工具生成,由于数字逻辑仿真工具需要执行带有算法仿真模块的验证环境和DUT,其仿真速度会略慢于传统仿真平台,但是由于节省了生成用例的时间,总体仿真时间能够缩短20%以上。同时,由于联合仿真验证平台已经执行算法仿真模块,当需要对用例的某些参数进行更多的随机化时,仅需要在验证环境中对参数做随机化操作即可(可通过随机化赋值:result=$randomize(min,max),结合修改随机化种子指令:+ntb_random_seed_automatic(以VCS数字逻辑仿真工具为例)),修改环境的复杂度大大降低,且无需执行额外的验证用例,仅需增加执行原有用例的次数即可。
DPIGEN是Matlab工具中的指令,可将指定的function文件转化为以DPI Component为桥梁的sv验证模型(Jack Erickson.SystemVerilog DPI component generation from a MATLAB FFT.Mathworks,2016;Jack Erickson.HDL Verifier SystemVerilog DPI component generation with Synopsys VCS.MathWorks,2017)。
以OFDM工程中的FFT算法模块举例,该文件名为fft_cal.m,代码如下:
在该文件所在目录下打开Matlab工具,并执行指令:
即可生成算法模型文件(fft_cal.m)转化成c程序文件(fft_cal_dpi.c)、网表文件(fft_cal_dpi.h)、Systemverilog仿真模型(fft_cal_dpi.sv)等文件。生成的仿真模块可以被Mentor公司的Modelsim、Cadence公司的Incisive和Synopsys公司的VCS支持。
上述指令的结构为:dpigen–arg{arg}fcn
其中:dpigen是指令的主体,-arg后面为输入数据的类型,func是待转换Matlab中function的名字。
dpigen指令的后缀还有其他部分,可通过help dpigen指令查阅。
通过对关键算法模块进行DPIGEN转换,仿真结果如下:
表1 执行时间比对(单位:小时)
通过仿真,总用时节省3.66小时(15.07%)。
表2 执行覆盖率比对
通过仿真,增加随机化的单条用例的覆盖率可以有明显上升,结合查看覆盖率报告,与随机化参数相关的分支覆盖率均达到100%。由于增加随机化条件,仿真时间亦需要更长。
通过实际仿真验证进行比较,使用新方法搭建的联合仿真验证平台相比传统仿真验证平台,在执行相同数量测试用例条件下,仿真验证时间能够缩短15%以上;在不增加Matlab参考模型修改成本基础上,可对各关键参数进行随机化赋值,相关参数的触发覆盖率(triggering coverge)理论可以达到100%。
同时,传统仿真验证平台和联合仿真验证平台的选取需要结合DUT的具体功能:比如当DUT内部算法部分简单或不含算法时,仅通过SVTB即可完成对DUT全部功能的仿真验证工作,则无需采用联合仿真验证平台;当DUT内部包含复杂的算法模块,需要外部结合算法仿真工具协同进行仿真验证时,可以尝试搭建联合仿真验证平台,减轻搭建算法模型的工作量,增大验证用例的随机化程度,提升仿真验证覆盖率,减小问题遗漏的几率。