背景技术
随着微电子技术向纳电子技术发展,芯片的集成度也越来越高,SOC芯片的设计和应用越来越普遍,但是相应的,其验证和测试工作也越来越复杂。
在专用集成电路芯片设计,即ASIC(Application Specific IntegratedCircuit)的时代,设计一颗芯片需要完成代码设计、功能验证以及布局布线几大主要步骤。代码设计阶段将芯片功能的文本描述转化为一定的电路结构,验证阶段通过仿真等手段确定实现的电路结构是否存在疏漏,布局布线阶段则将这个电路结构转换成可供生产的硅片图形。
由于在代码设计阶段需要对所实现产品的每一个功能细节都以晶体管组合的方式实现出来。对于一个含有上千万个晶体管的设计来说,其复杂度可想而知。而这上千万个晶体管一旦经过生产过程后,就无法再做任何改动,一旦其中有错误,将有可能直接导致整颗芯片无法工作。所以设计阶段的功能验证工作非常重要。工业界的实践证明,一颗芯片在功能验证上花费的时间是代码设计阶段时间的三倍还要多。
SoC设计所关注的焦点已经不再是某个新功能的设计实现,而是如何去评估、验证和集成多个已经存在的设计模块。SoC的设计方法是以功能组装为基础的全新流程。为了完成***功能,SoC设计必须依赖已有的IP(Intellectual Property)模块。但是目前许多IP在设计之初都是针对特定的应用,因而很少考虑到要与外来电路搭配使用。如果SoC设计师希望利用这些IP,就必须投入力量来修改它们,同时还要考虑IP模块的验证问题。
SOC芯片一般由一个或多个处理器核、总线、存储器和IP模块等单元组成。其中IP模块一般具有处理器总线接口,其RTL(寄存器传输级)验证分为IP模块级验证和***级验证。IP模块级验证和ASIC(专用集成电路)芯片的验证方法类似,可以利用硬件描述语言或高级验证语言建立验证平台,实现IP模块功能的验证,整个验证环境可以看成是纯硬件的调试,因为IP模块具有CPU总线接口。
在芯片的验证和测试工作中,通过访问芯片内部编址寄存器可以构建整个芯片的RTL验证和测试环境。SOC芯片和普通ASIC芯片在结构上有很大差异。ASIC芯片的CPU总线接口是芯片的管脚,可以通过CPU接口实现对芯片内部编址寄存器的访问,从而实现对芯片功能和使用模式的配置。SOC芯片内嵌了一个或多个处理器核,处理器核实现对芯片内部的编址寄存器访问,从而实现对芯片功能和使用模式的配置,但是芯片的管脚一般没有CPU总线接口,因此不能直接通过管脚实现对芯片内部编址寄存器的访问。可以看出,由于内部编址寄存器的访问方式不同,SOC芯片和ASIC芯片的验证方法有很大差别。
在SoC芯片***级验证中,几乎都要用到微处理器以及专门的软件和硬件。软件和硬件之间是密切相关的,但在***实现之前,软硬件之间的相互作用通常是很难精确测出的,一些设计错误也不会明显表现出来。为了解决这一问题,必须采用软件硬件协同验证技术。
一般通过软硬件协同仿真工具建立软硬件协同仿真验证平台实现SOC芯片的***级验证,在这个验证平台中包含了软件平台和硬件平台,软件平台主要实现对***处理器的配置和对芯片内部编址寄存器的访问,软件平台可以通过软件编程语言(C语言)编程实现。硬件平台实现对芯片管脚信号的监测、数据反馈和验证结果分析,硬件平台可以通过硬件描述语言或高级验证语言等编程实现。通过芯片的特殊管脚,可以实现软件平台和硬件平台配置、进程的相互控制,最终实现芯片的***级验证和测试。
可以看出,在SOC芯片的***级验证过程中,通过芯片的特殊管脚实现软件平台和硬件平台的相互控制是必不可少的,在具体芯片中,这些特殊的芯片管脚是一些常见的接口,例如UART(通用异步接收器)接口、特殊总线接口等。
在SOC芯片中,UART的主要功能是将存储器或处理器中并行传输传来的数据串行的发送到外设的UART接收端,或从外设的UART串行接收来的数据转换为并行数据。可以利用UART串口进行SOC芯片***级软件验证平台和硬件验证平台的控制,但是UART接口传输速率较低,硬件平台解析UART数据信息比较复杂,而且如果硬件平台进行较为复杂的控制就需要多个UART串口,但是在SOC芯片中集成多个UART接口是不经济的。在一些SOC芯片中,为了测试、控制外接芯片等需要,将处理器总线接口设计为芯片的管脚,因此利用处理器总线接口也可以进行软件验证平台和硬件平台的控制。由于处理器接口包括了数据总线接口、地址总线接口和时钟信号等,在软件验证平台和硬件验证平台的调试和控制过程中,总线接口利用率较低。可以看出,UART串口和总线接口等可以进行软件验证平台和硬件验证平台的简单控制,但是进行复杂和灵活地控制则有一定的局限性。
发明内容
本发明要解决的技术问题的是提供一种SOC芯片***级验证***及方法,利用该***及方法可以对软件平台和硬件平台进行灵活的控制,从而提高SOC芯片设计性能,缩短SOC芯片的设计周期。
为了解决上述技术问题,本发明提供了一种SOC芯片***级验证***,包括软件平台、硬件平台及SOC芯片,所述SOC芯片包括待验证模块,所述SOC芯片还包括GPIO模块,所述硬件平台包括GPIO硬件模型,所述GPIO模块通过GPIO接口与所述GPIO硬件模型相连;所述软件平台实现对硬件平台、GPIO模块和SOC芯片的配置和相关数据处理,并将信号输入到所述GPIO模块,通过所述GPIO模块转化为硬件输出和输入信号,输出到GPIO硬件模型;所述硬件平台通过所述GPIO硬件模型接收来自GPIO模块的输出信号并产生对软件平台的控制信号,将所述控制信号输入到GPIO模块,通过GPIO模块转化为软件指示变量。
进一步,所述硬件平台还包括待验证模块硬件模型,所述待验证模块硬件模型与所述待验证模块相连。
本发明还提供了一种用于SOC芯片***级验证***的硬件平台,包括结果分析模块和存储器模块,还包括GPIO硬件模型,所述GPIO硬件模型与SOC芯片的数据输出模块相连,接收来自软件平台的数据并进行输出。
进一步,所述硬件平台还包括待验证模块硬件模型,所述待验证模块硬件模型与SOC芯片的待验证模块相连。
本发明还提供了一种利用SOC芯片***级验证***进行验证的方法,其特征在于,包括:
(1)软件平台产生验证开始指示,通过SOC芯片的GPIO模块输出;硬件平台中的GPIO硬件模型接收到GPIO模块输出的所述开始指示后,实现输出数据记录编号和准备;
(2)软件平台或者硬件平台发送数据到待验证模块,软件平台将待验证模块接收到的数据写入GPIO模块,GPIO模块将所述数据输出到GPIO硬件模型,GPIO硬件模型接收到该数据后将其输出;
(3)软件平台产生***验证结束指示,通过SOC芯片的GPIO模块输出,GPIO硬件模型接收到GPIO模块输出的验证结束指示后,产生数据接收完成指示信号,结束验证。
进一步,在步骤(3)中还包括:所述硬件平台对GPIO硬件模型输出的数据进行采集分析后,输出验证结论。
进一步,在步骤(1)中软件平台产生验证开始指示之前进行软件程序及硬件模型的编写,以及软件程序及硬件程序的编译。
进一步,在步骤(2)中,GPIO硬件模型采用文本文件或仿真波形输出数据。
进一步,还包括步骤(4):GPIO硬件模型结束***进程。
本发明通过将GPIO接口应用到SOC芯片***级验证***当中,提供了一种利用GPIO接口的***级验证***及验证方法,使用该验证***及验证方法为SOC芯片提供软件和硬件可控的RTL***级验证,具有控制灵活的特点,进而可以按照该验证***及方法不断调整芯片设计,提高SOC芯片设计性能,并且缩短SOC芯片设计周期,节省SOC芯片设计成本。
具体实施方式
本发明通过将GPIO接口应用到SOC芯片***级验证***当中,利用GPIO接口对SOC芯片RTL***级验证的硬件平台和软件平台进行控制,同时提供了一种利用GPIO接口的***级验证方法,使用该方法,可以为SOC芯片提供软件和硬件可控的RTL***级验证,可以按照该验证***及方法不断调整芯片设计,提高SOC芯片设计性能。
参照图1所示,为GPIO接口原理图。GPIO接口包括总线接口模块13、寄存器模块和GPIO方向控制模块14。总线接口模块13和处理器核或总线桥连接,实现总线到GPIO接口数据的相互传输。寄存器模块包括总线数据写入寄存器10、总线数据读出寄存器11和控制寄存器12,控制寄存器12实现GPIO接口方向的配置。GPIO方向控制模块14实现GPIO接口作为芯片管脚的输入和输出方向,其方向由控制寄存器12的配置决定。
利用GPIO接口进行控制实现方法简单,接口数据传输速率较高,软件平台编程简单、灵活,硬件平台硬件模型实现简单,并且可以充分利用芯片资源,使软件和硬件的控制过程更加快速和简单,从而缩短SOC芯片设计周期,节省SOC芯片设计成本。
在本发明中,软件平台完成***验证开始、结束指示的生成,发送数据,对接收到的数据进行分析和输出,对GPIO接口的输入输出控制寄存器进行编程,确定GPIO接口的方向,这些功能都通过GPIO接口转化为硬件输出和输入信号,与硬件平台连接。硬件平台完成验证数据的发送、接收和结果输出,以及***进程的硬件反馈和结束***进程,这些功能都通过GPIO接口转化为软件指示变量。
下面结合附图对本发明的优选实施例进行详细说明:
实施例一:
参照图2所示,为本发明进行IP模块验证的SOC芯片***级验证***示意图。该验证***包括SOC芯片20、软件平台21和硬件平台22。SOC芯片20主要包括处理器模块23、总线桥模块24、GPIO模块25、IP模块26和内存控制模块27。软件平台21实现对IP模块26、GPIO模块25和处理器23的配置和相关数据处理。
参照图3所示,为本发明IP为芯片管脚的SOC芯片***级验证***的硬件平台示意图。该硬件平台包括GPIO硬件模型30、IP硬件模型31、存储器模块32和结果分析模块33。存储器模块32通过硬件描述语言实现,其他模块和硬件模型可以通过硬件描述语言或高级验证语言实现。存储器模块32与图2所示的SOC芯片的内存控制模块27相连,实现软件平台的转换代码存储。GPIO硬件模型30与图2所示的SOC芯片的GPIO模块25的接口相连,实现对GPIO接口输出信号的监测和产生对软件平台的控制信号。IP硬件模型31与图2所示的SOC芯片的IP模块26接口相连接,实现SOC芯片IP模块26特殊接口数据的发送和接收,结果分析模块33实现对GPIO硬件模型30和IP硬件模型31输出结果的采集和分析。
参照图4所示,为本发明IP为芯片管脚的SOC芯片***级验证方法流程图。该方法包括下列步骤:
步骤401:在软件平台中编写软件程序;在硬件平台中编写硬件模型;
步骤402:在软件平台中编译软件程序;在硬件平台中编译硬件程序;
以下步骤403至步骤406为进行SOC芯片IP模块接收方向验证和测试:
步骤403:软件产生IP验证开始指示,将其写入GPIO模块的写入寄存器;GPIO硬件模型和IP硬件模型检测到GPIO模块接口的验证开始指示信号,进行输出数据记录编号和准备,启动IP硬件模型;
步骤404:IP硬件模型发送数据到IP模块接口,软件程序检测IP模块接收到的数据;
步骤405:软件程序通过IP模块的数据读出寄存器分析IP模块接收到的数据,判断是否是数据结束指示,如果是,则执行步骤407,否则执行步骤406;
步骤406:软件得到有效数据,将有效数据写入到GPIO模块的写入寄存器中,GPIO硬件模型通过GPIO模块接口接收到有效数据,将其结果通过文本文件或仿真波形输出,结果分析模块对输出的数据进行采集和分析;执行步骤404;
步骤407:软件程序生成数据接收结束指示,将其写入到GPIO模块写入寄存器中;GPIO硬件模型收到来自GPIO模块接口的数据接收结束指示后,产生数据接收完成指示信号,结果分析模块输出SOC IP模块验证结论;
以下步骤408至步骤411为进行SOC芯片IP模块发送方向验证和测试:
步骤408:软件产生IP验证开始指示,将其写入GPIO模块写入寄存器;GPIO硬件模型检测GPIO模块接口输出的IP验证开始指示,启动IP硬件模型;
步骤409:软件产生数据,写入到IP模块写入寄存器中,同时写入到GPIO模块写入寄存器中,GPIO硬件模型通过GPIO模块接口接收软件平台生成的数据,IP硬件模型通过IP模块接口接收软件平台生成的数据,将接收到的输出数据;
当然,本步骤也可以为软件产生数据后,先写入到IP模块写入寄存器中,随后写入到GPIO模块写入寄存器中;
步骤410:软件产生***验证结束指示,写入到GPIO模块写入寄存器中;GPIO硬件模型接收到该验证结束指示后,产生数据接收完成指示信号,硬件平台结果分析模块输出SOC IP模块验证和测试结论;
步骤411:GPIO硬件模型结束***进程。
实施例二:
参照图5所示,为本发明IP不是芯片管脚的验证***硬件平台示意图。该硬件平台包括GPIO硬件模型50、存储器模块50和结果分析模块52。GPIO硬件模型50与图2所示的SOC芯片的GPIO模块25相连接,存储器模块51与图2所示的SOC芯片的内存控制模块27相连接。
本实施例中的验证***与实施例一中的验证***不同之处仅在于硬件平台,而软件平台及SOC芯片的组成相同。
参照图6所示,为本发明IP不是芯片管脚的SOC芯片***级验证方法流程图。该方法包括以下步骤:
步骤601:在软件平台中编写软件程序;在硬件平台中编写硬件模型;
步骤602:在软件平台中编译软件程序;在硬件平台中编译硬件程序;
步骤603:软件产生IP验证开始指示,将其写入GPIO模块的写入寄存器;GPIO硬件模型检测到从GPIO模块接口输出的开始指示信号,实现输出数据记录编号和准备;
步骤604:软件产生数据,写入到IP模块写入寄存器中,随后写入到GPIO模块写入寄存器中;GPIO硬件模型通过SOC芯片的GPIO模块接口接收到有效数据,将其结果通过文本文件或仿真波形输出;
步骤605:软件读出IP模块读出寄存器中数据,将该数据写入到GPIO模块写入寄存器中,然后软件程序进行已存储发送数据和接收数据的对比和分析,将该结果写入到GPIO模块写入寄存器中;GPIO硬件模型通过GPIO模块接口接收到有效数据,将其结果通过文本文件或仿真波形输出;
步骤606:软件产生验证结束指示,写入到GPIO模块写入寄存器中;GPIO硬件模型接收到该验证结束指示后,产生数据接收完成指示信号,硬件平台结果分析模块输出SOC IP模块验证和测试结论;
步骤607:GPIO硬件模型结束***进程。
实施例三:
参照图7所示,为本发明进行UART模块验证的SOC芯片***级验证***示意图。该验证***包括SOC芯片70、软件平台71和硬件平台72。SOC芯片70主要包括处理器模块73、总线桥模块74、GPIO模块75、UART模块76和内存控制模块77等。
参照图8所示,为本发明进行UART模块验证的硬件平台示意图。该硬件平台包括GPIO硬件模型80、UART硬件模型81、存储器模块82和结果分析模块83。UART硬件模型81实现图7所示SOC芯片UART模块76特殊接口数据的发送和接收,结果分析模块83实现对GPIO硬件模型80和UART硬件模型81输出结果的采集和分析。
参照图9所示,为本发明进行UART模块验证的SOC芯片***级验证方法流程图;
步骤901:在软件平台中编写软件程序;在硬件平台中编写硬件模型;
步骤902:在软件平台中编译软件程序;在硬件平台中编译硬件程序;
以下步骤903至906为进行SOC芯片UART模块接收方向验证和测试:
步骤903:软件产生UART验证开始指示,将其写入GPIO模块的写入寄存器;GPIO硬件模型和UART硬件模型检测到GPIO接口的验证开始指示信号,实现输出数据记录编号和准备,启动UART硬件模型;
步骤904:UART硬件模型发送数据到UART模块接口,软件程序检测UART模块接收到的数据;
步骤905:软件程序通过UART模块的数据读出寄存器分析UART模块接收到的数据,判断是否是数据结束指示,如果是,则执行步骤907,否则执行步骤906;
步骤906:软件得到有效数据,将有效数据写入到GPIO模块的写入寄存器中,GPIO硬件模型通过GPIO模块接口接收到有效数据,将其结果通过文本文件或仿真波形输出;执行步骤904;
步骤907:生成数据接收结束指示,将其写入到GPIO模块写入寄存器中;GPIO硬件模型接收来自GPIO模块接口的接收结束指示后产生数据接收完成指示信号,硬件平台结果分析模块输出SOC UART模块验证和测试结论;
以下步骤908至911为进行SOC芯片UART模块发送方向验证和测试:
步骤908:软件产生UART验证开始指示,将该指示写入GPIO模块写入寄存器;GPIO硬件模型检测GPIO模块接口管脚输出的UART验证开始指,启动UART硬件模型;
步骤909:软件产生数据,写入到UART模块写入寄存器中,同时写入到GPIO模块写入寄存器中;GPIO硬件模型通过GPIO模块接口接收芯片发送的软件平台生成的数据,UART硬件模型通过UART模块接口接收芯片发送的软件平台生成的数据;GPIO硬件模型和UART硬件模型将接收到的数据输出,结果分析模块对输出的数据进行采集和分析;
当然,本步骤也可以为软件产生数据,写入到UART模块写入寄存器中,随后写入到GPIO模块写入寄存器中;
步骤910:软件产生***验证结束指示,写入到SOC芯片GPIO模块写入寄存器中;GPIO硬件模型接收到结束指示后,产生数据接收完成指示信号,硬件平台结果分析模块输出UART模块验证和测试结论;
步骤911:GPIO硬件模型结束***进程。
上述技术方案都适用于SOC芯片和嵌入式***的软硬件协同***级验证和测试,可以通过一路GPIO接口或多路GPIO接口实现对软件验证平台和硬件验证平台的控制。
本发明利用GPIO接口对SOC芯片RTL***级验证的硬件平台和软件平台的控制,实现了对SOC芯片的***集成功能验证。使用该方法,可以为SOC芯片提供软件和硬件可控的RTL***级验证和测试平台,从而按照该验证平台可以不断调整芯片设计,提高SOC芯片设计性能,并且缩短SOC芯片设计周期,节省SOC芯片设计成本。