(重庆邮电大学 通信与信息工程学院,重庆 400065)
SoC芯片FPGA原型的软硬件协同验证
程翼胜
(重庆邮电大学 通信与信息工程学院,重庆 400065)
在IC设计中,验证占据着举足轻重的地位。为了达到高效率、高可靠性的验证结果,保证芯片在流片的成功率,引入了FPGA原型验证技术。本文以一款低功耗报警器SoC为对象,首先简单介绍了低功耗报警器SoC芯片的系统架构,然后详细说明了报警器SoC芯片FPGA原型验证的具体实现。利用软硬件协同验证方法,验证了报警器SoC芯片模块的功能以及系统验证。
SoC;FPGA;原型验证
图1 报警器芯片系统架构
芯片验证的时间占据了整个研发周期的三分之二,验证的充分性有效地保证了芯片投片的成功率。为了获得高效可靠的验证结果,本文引入了FPGA原型验证。用FPGA作为硬件模块的承载体,一方面可以使芯片设计在真实的硬件上运行,及时发现设计中的缺陷;另一方面基于FPGA的原型验证平台验证速度快,弥补了软件仿真慢的不足。
本文论述了一个基于ARM Cortex-M0处理器的报警器芯片架构,以及FPGA原型验证平台的实现过程,包括FPGA验证板的介绍、RTL设计到FPGA代码转换、硬件下载流程、软硬件协同调试的方法等。
该系统应用于工业控制领域,具体应用为无线遥控、无线报警器。其将射频和ARM集成到一块芯片中,其中基带部分和射频部分通过两根GPIO线实现连接,进行控制和数据交互。系统架构如图1所示。
该芯片作为电动车报警器的接收部分,采用ARM Cortex-M0内核的MCU作为主控处理器,挂接在AHB总线上,使用AHB转APB总线作为数据通路,连接多个外部接口控制器(UART、I2C、ADC等),芯片内部接有时钟管理单元,其系统框图如图2所示。硬件模块的描述如表1所列。
图2 数字部分整体框架
在正常工作模式下,处理器可以定时伺服看门狗,也可以屏蔽掉看门狗的复位功能,处理器配置完毕后可以配置系统控制寄存器,使得系统进入sleep模式,此时外设保持工作状态,任何外设的中断信号都会导致处理器恢复到active模式下响应中断,完成中断服务程序后重新进入sleep模式。
表1 硬件模块描述
报警器芯片的验证,主要是对芯片的模块到系统功能的验证,报警器具体验证平台的总体架构如图3所示。
图3 报警器验证平台结构
图4 验证环境
整个FPGA验证工作可以划分为三个部分:PC机上调试,FPGA验证板上工作和软硬件协同调试。其中PC机主要工作是产生配置文件、测试激励收发数据的读取以及结果的验证。FPGA验证板主要是设计芯片工作的载体,并把芯片实时状态信息回传给PC机。验证环境如图4所示。
PC机运用Quartus生成bit流文件,下载到FPGA验证板中,通过Keil编写调试软件对FPGA芯片进行控制和调试。对于验证板需要提供设计芯片的上电复位和测试时钟,接收PC机发送的调试程序和调试数据,并运行程序调试,且将芯片运行的状态信息回传给PC机。
在调试部分,由于报警器芯片的内部结构复杂,仅凭借芯片引脚上的输入/输出信号很难判断设计是否符合实际需求。因此,必须选择合适的方法对FPGA芯片内部状态进行调试,从而获知芯片的状态是否工作正常,若不正常还能定位到问题之所在。采用逻辑分析仪SignalTap II观测内部信号,并通过串口调试助手来反馈信号的变化。
表2 EP4SE820F1760
本文采用的FPGA验证平台为Hyper Silicon, 硬件平台搭建主要运用了EP4SE820 FPGA器件,具有完善的时钟和存储资源,支持更快的速度。FPGA芯片拥有的主要可编程资源如表2所列。
Hyper Silicon验证平台的所有外设在验证前均要通过连通性和功能性测试,以保证板上各元件能够稳定工作,为后续验证中的问题定位打好基础。其基本框架如图5所示。
图5 Hyper Silicon验证平台基本框架
ASIC与FPGA两者物理结构不同,ASIC采用的是生产厂商提供的标准单元库,FPGA是基于查找表结构,因此造成了RTL代码风格的不同,所以在采用FPGA原型验证技术验证ASIC设计时,必须先把ASIC设计代码转换为FPGA设计代码,才能移植到FPGA上。但需要注意的是,这仅仅是物理结构上的差异,而对代码进行转换,并不改变设计逻辑功能。需要修改的部分包括以下几个方面:
(1)存储单元
ASIC中的存储单元是用代工厂提供的Memory Compiler 来定制,只适合做ASIC功能仿真,FPGA是不能综合的,而FPGA内部提供的存储单元是经过验证和优化的,因此存储单元需要转化为FPGA中的存储单元。[1]
(2)时钟单元
在ASIC设计中,时钟是整个设计电路中最重要的信号,在ASIC中,用布局布线工具来放置时钟树,利用代工厂提供的PLL进行时钟的设计生成,而在FPGA中通常内置有一定数量的PLL宏单元,并有经过时钟优化了的全局时钟,可以保证同源时钟沿到达每个寄存器的延时时间差异可以忽略不计。[2]因此,时钟单元要进行替换。替换方法如下:
`ifdef AUTO_FPGA
Pll_osc u_pll_osc (
.inclk0 (clk_32M),
.c0 (osc_clk) );
assign por_reset_n=hw_rstn_i;
`else
OSCRC020MCB osc_insn(
.FOUT (osc_clk ),
.RESET (~por_reset_n ),
.PD (~por_reset_n ),
ISEL (osc_trim) );
`endif
另外,特别需要注意的是门控时钟,ASIC设计中为了实现低功耗,采用了门控使能时钟设计。FPGA全局时钟资源有限,经过门控延时较大,会产生毛刺现象,因此,需要把门控时钟电路转换为时钟使能电路。替换方法如下:
`ifdef AUTO_ASIC
AND_X4_A7TR u_clk_gate(.Y(clk_out), .(clk_in), .B(clk_en));
`elseif AUTO_FPGA
assign clk_out=clk_en & clk_in;
`endif
(3)顶层PAD的替换
在ASIC的设计中,顶层模块包含了一层PAD层,I/O引脚需要通过PAD与外部引脚相连,而PAD也是工艺库提供的模块单元,对FPGA实现来说,显然实现不了PAD的功能,同样也不需要这个模块单元,所以在FPGA模式下代码的顶层就不用包含PAD层的代码。
基于软硬件协同仿真验证是FPGA验证SoC的常规方法,并搭建软硬件协同验证平台环境,实现能够满足实际需求的FPGA验证平台。[3]
5.1 FPGA软硬件协同验证架构
FPGA验证是为了验证SoC设计芯片在实际物理硬件环境中功能和运行状态是否正常。针对本文提出的基于报警器SoC芯片搭建能够实现验证的软硬协同验证系统的基本架构如图6所示。
图6 软硬件协同验证系统基本架构
其中包括FPGA验证板、支持下载bit文件以及调试验证过程中需要的FPGA下载线及编程器、支持芯片的仿真器,以及安装有Keil软件、Quartus软件和串口调试助手软件的PC机。软硬件协同验证的步骤如下:
① 先把需要验证的SoC系统由Quartus工具综合及布局布线生成对应的bit流文件,经过JTAG下载到FPGA验证板中。
② 通过上位机Keil软件编写控制报警器芯片运行的软件程序,完成系统的boot、初始化、测试激励编译及控制所需要的程序。
③ 通过编写及测试激励程序的加载、运行、调试,实现对设计芯片的状态控制,观察芯片运行的状态信息是否正常。
④ 通过不同的测试程序控制运行相应的模块以及整个系统的运行工作,保证验证的完整性。
在验证的过程中,根据各个模块的功能以及SoC系统特性,使用示波器观测相应的信号引脚,利用SignalTal软件抓取内部信号来判断逻辑功能关系,验证系统各模块交互、数据相互流通功能的正确性;验证所有IP核协同运行状态;验证整个系统功能的正确性。验证流程图7所示。
图7 验证流程图
5.2 SoC系统及各模块功能验证
首先对SoC系统功能验证,前提是要保证FPGA软件平台以及硬件平台的正确性,才能在Keil环境下编写控制软件程序,以达到验证各个模块功能正确的目的。Keil编程器与FPGA硬件平台连线正确后,可以通过下载编写控制软件程序验证各个模块功能的正确性。
5.2.1 射频模块的功能验证
射频模块接收发射机发出的射频信号,经过ASK/OOK的解调输出0~VDD的模拟信号。 由于在实际系统中使用基于OOK的曼彻斯特编码方式(20位地址+4位命令),因此输出的模拟信号实际为0或1的逻辑电平。MCU通过GPIO输入端接收这个电平并且通过判决程序进行曼彻斯特编码的判决,若正确接收命令,然后发送中断,此时唤醒ARM来处理射频数据,否则进入休眠状态等待下一次系统唤醒,或者持续接收并判决直到接收到正确命令为止。
图8 射频采样信号
在FPGA验证中,运用示波器抓取相应的射频信号波形,当射频引脚有波形输出时,表示能正确地接收射频信号,验证完成。配置相应的寄存器,用示波器抓取到的信号波形如图8所示。
5.2.2 系统验证
上电后,将系统复位,启动MCU,然后MCU配置系统工作。MCU可以进入sleep,系统可进入Deep sleep模式以低功耗方式运行,在中断情况下,MCU或者系统可以被激活,进行正常工作。射频模块接收发射机发出的射频信号,振动模块检测振动电平信号,并通知MCU进行处理,MCU解析命令并执行相应的操作。验证的步骤如图9所示。验证的场景如图10所示。
图9 验证步骤
图10 FPGA原型测试环境
[1] 杨安生,黄世震.基于ARM SoC的FPGA原型验证[J].电子器件,2011,34(3):247-251.
[2] 章玮.原型验证过程中的ASIC到FPGA的代码转换[J].今日电子,2006(7):56-59.
[3] 张跃玲,张磊,汪健,等.FPGA的验证平台及有效的SoC验证方法[J].单片机与嵌入式系统应用,2016,16(3):8-11.
程翼胜(硕士研究生),主要研究方向为芯片验证。
FPGAPrototypeHardware/SoftwareCo-verificationBasedonSoC
ChengYisheng
(College of Communication and Information Engineering,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)
In the IC design,the verification occupies a pivotal position.In order to achieve high efficiency and high reliability of the verification results to ensure that the chip in the success rate of the chip,FPGA prototype verification technology is introduced.In this paper,based on a low-power alarm SoC chip,first of all,a brief introductionof the low-power alarm SoC chip system architecture is introduced,and then the specific implementation of the alarm SoC chip FPGA prototype verification is descriped in detail.The function of the SoC chip module and the system verification are verified by the hardware and software co-verification method.
SoC;FPGA;prototype verification
TP31
A
2017-08-04)