文献标识码:A
DOI:10.16157/j.issn.0258-7998.199806
中文引用格式:王雷,王晨光,吴斌. 基于硬件加速器的高性能芯片仿真与验证[J].电子技术应用,2019,45(8):61-62,67.
英文引用格式:Wang Lei,Wang Chenguang,Wu Bin. Debugging a high-performance WLAN chip with palladium XP emulator[J]. Application of Electronic Technique,2019,45(8):61-62,67.
0 引言
随着超大规模集成电路的发展,芯片数字电路的规模时钟保持快速增长的态势。这一发展趋势在给电路设计带来了巨大挑战的同时,也使得电路的仿真验证相比之前更为困难。当前在子模块设计阶段,设计人员主要采用软件模拟(Software Simulation)进行初步验证,但是在整个芯片层面如果依然采用软件模拟,其耗时非常长,往往模拟单一帧的时间需要数个小时甚至数十个小时;而如果采用FPGA验证,对于全芯片设计的综合时间需要数个小时,而且在实际运行中出现问题难以快速定位,每次添加观测信号都需要重新综合。使用新的验证工具来更好地进行错误定位和修正后验证成为了保证芯片按时完成设计的关键[1-2]。
1 测试芯片简介
本项目所要仿真验证的设计是一款基于IEEE 802.11 AC(Wi-Fi 5)标准的无线通信基带芯片,采用了4×4 Multiple Input Multiple Output(MIMO),256 QAM信道调制模式等多种技术,可以实现协议层最高1.2 Gb/s的吞吐率。该芯片内集成了JESD204B接口、PCIE 2.0接口、下层媒体介入层(low Media Access Control,low MAC)模块、发送机、接收机等模块。在FPGA原型综合中使用了超过200k ALM,35k的寄存器单元和2 Mb以上的存储器资源,整体芯片等效门超过了1 000万。该芯片整体的架构如图1所示,主控端通过PCIE接口与芯片通信,而模拟和射频芯片则通过JESD204B接口进行通信。发送机部分主要包括扰码生成、交织、反傅里叶变换、调制器等模块;接收机部分则包括滤波器、同步器、傅里叶变换、信道估计、MIMO检查、去交织、维特比解码和去扰码等模块。
该芯片设计主要规格指标如下:
(1)具有4根天线,支持最高4个空间流动发送接收;
(2)向下兼容802.11a/b/g/n;
(3)支持802.11AC 20M/40M/80MHz 3种带宽;
(4)支持多种调制编码模式,最高支持256 QAM,支持短GI,物理层可实现最高速率1.7 Gb/s。
2硬件仿真与加速器
在电路的开发阶段,主要采用Verilog可综合语句进行电路表达,使用非可综合语句进行测试环境的搭建。该方法是软件模拟中常用的方式,保证了芯片各个子模块能够快速地完成初步开发。但是在整体调试阶段,如果还是采用软件模拟的方式,耗时非常长,而且只能使用非常简单的测试用例。如果采用FPGA原型系统进行验证,虽然整体验证系统可以全速运行,但是在发生运行异常需要寻找设计中错误点的时候,往往需要修改观测信号,而每次修改都意味着需重新综合整个设计。在调试开始的阶段,整体设计中不完善的部分还非常多,如果只采用软件模拟和FPGA硬件仿真,其调试效率无法达到一个合理的速度。
在这种情况下,采用硬件仿真加速器就成为了一个非常合理的选择。它在仿真速度上介于软件模拟和FPGA原型系统之间,但是对内部信号的观测与下载要比FPGA方便,能够提供与软件模拟相类似的波形观测能力,且在修改RTL代码后重新综合的时间也与软件模拟相近,要比同一款芯片进行FPGA综合的时间减少很多。
Cadence公司的Palladium XP硬件仿真加速器是一款业内领先的仿真加速器。其工作模式主要可分为软件模拟加速(Simulation Acceleration,SA)与全系统仿真(In-Circuit Emulation,ICE)。在SA模式下,待测芯片(Die Under Test,DUT)部分下载到硬件仿真器后仿真运行,而不可综合的测试代码部分还是运行在服务器上由软件模拟实现。这种方式的好处在于可以不用修改原来测试代码。而在ICE模式下,DUT和测试代码均需要下载到仿真器上,因此测试代码也需要符合可综合的要求。
3 仿真代码修改与ICE模式仿真实现
在电路子模块的开发阶段,设计人员积累了较多不可综合的测试代码,因此希望能够在硬件仿真阶段继续使用之前的大部分测试代码,所以选用SA模式进行硬件仿真。但是在测试过程中发现,由于测试部分依然运行在服务器上,其运行速率的瓶颈受限于服务器的性能,依然难以实现更为快速的仿真测试。从仿真时间来看,虽然相比全部由软件模拟可以减小90%的仿真时间,但是依然难以满足本项目对仿真效率的要求。
为了进一步提高测试效率,需要对测试代码进行可综合性修改。通过对仿真器说明文档的研究,发现对于仿真器的可综合代码要求与FPGA或者其他综合工具的要求有较多不同之处[3]。特别是其对task、initial、for语句的支持使得测试代码整体架构不需要作过多的调整,依然采用initial块控制测试用例的先后顺序,task语句定义具体测试用例的方式来进行。当然相比软件模拟中对测试语句基本无限制相比,依然需要对测试代码进行诸多修改以满足可硬件加速器可综合的要求。修改中发现的主要修改点和注意点包括:
(1)在同一个initial块及其内部调用的task必须采用同一个时钟信号进行同步;
(2)不支持“#延时”的写法,可以通过插入若干个时钟周期来控制两条相邻指令的间隔;
(3)task内可以调用同一module内的task,但是不能调用子模块内定义的task;
(4)task内可以检测子模块内的信号,但是不能改变此类信号的赋值;
(5)wait指令只能对电平信号使用,不能进行边沿触发,可以通过在后面增加一个时钟边沿来保证同步;
(6)task内尽量使用非阻塞赋值,信号的先后时序则通过@(posedge clk)来实现;
(7)如果采用for循环进行操作,要注意for循环的控制语句理论上能够实现的最大周期数,如果语句内某些信号无法满足该最大周期数,则会综合出错。
通过对相关测试代码的修改,最终使得整个DUT和测试代码均可完成仿真综合并下载至仿真加速器内进行运行,成功地提高了整个系统的运行速度。在ICE模式下一个1 000帧的测试用例只需要20 min便可运行完成,相比原有的软件模拟提高了400倍的整体运行效率。主要模块的信号也可全部下载下来,大大提高了代码错误定位的速度。
4 结论
在目前的超大规模芯片设计过程中,电路调试与验证所需的人员和时间往往超过了电路设计阶段的人员及时间。因此在整体芯片的开发过程中必须重视芯片验证的效率。而合理地使用硬件仿真加速器就是一个能够大大提高芯片调试与验证效率的方法。
而对于设计人员而言,在开发阶段如果能够考虑今后验证的需求,设计更为符合可综合语句要求的测试用例,也能够更好地兼顾设计阶段模拟和后续仿真的需求,从而提高整体的开发进度。
参考文献
[1] 柏颖,马玲芝,郭嘉,等.基于硬件仿真加速平台的PCIE系统级调测试方法[J].电子技术应用,2017,43(8):28-31.
[2] 苏一萌.基于Palladium XP的Emulation运行性能和资源消耗的优化方法[J].中国集成电路,2012,11(162):65-67.
[3] UXE User Guide(Product Version 15.1)[M].Cadence,2016.
作者信息:
王 雷,王晨光,吴 斌
(中国科学院微电子研究所,北京100029)