使用二进制保存激励和仿真结果的链路层验证平台和方法与流程

文档序号:14217717阅读:167来源:国知局

本发明涉及芯片验证技术,具体的说是一种使用二进制保存激励和仿真结果的链路层验证平台和方法。



背景技术:

在ic/fpga设计领域,随着设计规模的不断增大,仿真验证所占用的时间也变得越来越长。通常对于待测设计会搭建一个测试平台(testbench)。测试平台是一段仿真代码,常采用verilog、vhdl、systemc等语言编写。

现有通常验证平台结构,如附图1所示,现有测试平台(testbench),通常如图所示,使用代码编写报文产生模块(frame_gen)产生测试激励,经过待测设计(dut)后得到测试结果,将结果输出给报文检查模块(frame_chk),检查待测设计的正确性。

在上述现有技术中,通常由于链路层协议可能会比较复杂,测试报文数据结构类型比较多,因此测试激励内容数量巨大,输出结果可能会由于待测设计的配置不同而产生结果不同,对于结果的检查比较困难。通常的方法是在结果检查模块编写期望收到的结果与之对比,或者通过仿真波形查看结果,验证效率较低。



技术实现要素:

本发明针对目前技术发展的需求和不足之处,提供一种使用二进制保存激励和仿真结果的链路层验证平台和方法。

本发明提出使用二进制保存激励和仿真结果的链路层验证平台,解决上述技术问题采用的技术方案如下:所述qpi协议链路层验证平台使用verilog语言编写,利用生成二进制格式文件验证芯片链路层功能,其结构包括:

报文产生模块,用来产生测试激励报文;报文产生模块包含一txt_gen模块,用于将激励文件保存为二进制格式文件;所述txt_gen模块设置有data_gen.v和data_exp.v;data_gen.v用来保存报文产生的原始报文,data_exp.v用来保存经过待测设计处理后的期望得到的结果报文;

待测设计,指链路层接口模块,用来处理激励报文;

报文检查摸块,用来接收待测设计输出的结果报文;报文检查摸块同样包含一txt_gen模块,用于将接收到的结果报文保存为二进制格式文件data_rcv.v;通过对比所述data_exp.v与data_rcv.v文件,来检查所述链路层接口模块的测试是否符合预期,完成芯片链路层验证。

进一步,所述待测设计采用qpi协议的链路层接口模块;

所述报文产生模块根据qpi协议的链路层数据格式,产生多种flit报文;在产生多种flit报文的同时,按照顺序生成data_gen.v文件,记录报文的生产;

根据上述多种flit报文经过待测设计的处理及预期,编写verilogtask同时将预期结果写入data_exp.v。

进一步,所述报文检查模块按照顺序将链路层接口模块每一路通道接收到的结果分别保存成data_rcv.v文件;所述data_rcv.v文件名称前缀与所述data_exp.v名称保持一定关联。

进一步,所述报文产生模块的txt_gen模块能够保存多组文件;所述data_gen.v和data_exp.v所保存的报文文件针对于所述链路层接口模块的某一路通道;所述报文检查摸块的txt_gen模块,将所述链路层接口模块每一通道的输出保存成为一个结果文件。

进一步,采用常用文件对比软件进行data_exp.v与data_rcv.v文件对比;当结果报文不符合预期时,通过data_gen.v文件进行异常报文的位置定位。

本发明还提出使用二进制保存激励和仿真结果的链路层验证方法,使用verilog语言编写测试平台,利用生成二进制格式文件验证芯片链路层功能,实现流程包括:

步骤一,产生测试激励报文,将激励报文保存为二进制文件;

通过报文产生模块产生测试激励报文,报文产生模块内部的txt_gen模块将激励报文保存为二进制格式文件;所述txt_gen模块保存有data_gen.v和data_exp.v;所述data_gen.v用来保存报文产生的原始报文,所述data_exp.v用来保存经过dut处理后的期望得到的结果报文;

步骤二,通过待测设计处理激励报文,

待测设计采用链路层接口模块,通过所述链路层接口模块处理激励报文;

步骤三,获得激励报文经待测设计处理后输出的结果报文,将结果报文保存为二进制格式文件,检查结果报文完成芯片链路层验证;

通过报文检查模块接收待测设计输出的结果报文,报文检查模块内部的txt_gen模块将结果文件保存为二进制格式文件data_rcv.v;通过对比所述data_exp.v与data_rcv.v文件,来检查所述链路层接口模块的测试是否符合预期。

进一步,所述待测设计采用qpi协议的链路层接口模块;

所述报文产生模块根据qpi协议的链路层数据格式,产生多种flit报文;在产生多种flit报文的同时,按照顺序生成data_gen.v文件,记录报文的生产;

根据上述多种flit报文经过待测设计的处理及预期,编写verilogtask同时将预期结果写入data_exp.v。

进一步,所述步骤三,

所述报文检查模块按照顺序将链路层接口模块每一路通道接收到的结果分别保存成data_rcv.v文件;所述data_rcv.v文件名称前缀与所述data_exp.v名称保持一定关联。

进一步,所述步骤二,

所述报文产生模块的txt_gen模块能够保存多组文件;所述data_gen.v和data_exp.v均针对所述链路层接口模块的某一路通道保存报文文件;所述报文检查摸块的txt_gen模块,将所述链路层接口模块每一路通道的输出保存成为一个结果文件。

进一步,采用常用文件对比软件进行data_exp.v与data_rcv.v文件对比;当结果报文不符合预期时,通过data_gen.v文件进行异常报文的位置定位。

本发明所述使用二进制保存激励和仿真结果的链路层验证平台和方法,与现有技术相比具有的有益效果是:本发明使用verilog语言编写测试平台,利用生成二进制格式文件验证芯片链路层功能,与现有的技术相比,本发明通过对比预期文件与结果文件,可以方便加快对芯片链路层模块功能验证,可以很容易的定位到出错内容的具体报文,并且可以精确到其中的某一个比特;本发明极大简化了验证芯片链路层功能的操作,提高验证效果。

附图说明

为了更清楚的说明本发明实施例或现有技术中的技术内容,下面对本发明实施例或现有技术中所需要的附图做简单介绍。显而易见的,下面所描述附图仅仅是本发明的一部分实施例,对于本领域技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,但均在本发明的保护范围之内。

附图1为现有通常验证平台结构的示意图;

附图2为所述使用二进制保存激励和仿真结果的链路层验证平台的示意图。

具体实施方式

为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清查、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下获得的所有实施例,都在本发明的保护范围之内。

实施例1:

本实施例提出使用二进制保存激励和仿真结果的链路层验证平台,该验证平台(testbench)使用verilog语言编写,如附图2所示,其结构包括:

报文产生模块frame_gen,用来产生测试激励报文;

具体的,报文产生模块内部包含一个txt_gen模块,该模块用于将激励文件保存为二进制格式文件,利用生成二进制文件验证芯片链路层功能;二进制是最常见的一种文件格式,主要存文本信息,即为文字信息;现在的操作系统大多使用记事本等程序保存,大多数软件可以查看,如记事本、浏览器等等;

所述txt_gen模块保存有data_gen.v(原始文件)和data_exp.v(期望文件);data_gen.v用来保存报文产生的原始报文,data_exp.v用来保存经过dut处理后的期望得到的结果报文。

待测设计dut,是链路层接口模块,用来处理激励报文,实现利用二进制文件验证芯片链路层功能;

报文检查摸块frame_chk,用来接收待测设计dut输出的结果报文,检查结果报文完成芯片链路层验证;

具体的,报文检查摸块内部同样包含一个txt_gen模块,该模块用于将接收到的结果保存为二进制格式文件data_rcv.v(结果文件);通过对比所述data_exp.v与data_rcv.v文件,来检查待测设计dut的测试是否符合预期。

本实施例使用二进制保存激励和仿真结果的链路层验证平台,使用verilog语言编写测试平台,利用生成二进制格式文件验证芯片链路层功能,将激励报文的产生的原始报文和经dut处理后的预期得到的结果报文分别储存起来,便于进行结果报文的比较实现芯片链路层验证;简化验证芯片链路层功能的方法,提高验证效率。

本实施例还提出使用二进制保存激励和仿真结果的链路层验证方法,其技术方案可以与实施例1链路层验证平台相互参考,实现流程包括:

步骤一,产生测试激励报文,将激励报文保存为二进制文件;

具体的,通过报文产生模块frame_gen产生测试激励报文,在报文产生模块内部设置一个txt_gen模块,用于将激励报文保存为二进制格式文件;所述txt_gen模块保存有data_gen.v(原始文件)和data_exp.v(期望文件);data_gen.v用来保存报文产生的原始报文,data_exp.v用来保存经过dut处理后的期望得到的结果报文。

步骤二,通过待测设计dut处理激励报文,利用生成二进制文件验证芯片链路层功能;

具体的,待测设计dut为链路层接口模块,用来处理激励报文。

步骤三,得到激励报文经待测设计处理后输出的结果报文,将结果报文保存为二进制格式文件,检查结果报文完成芯片链路层验证;

具体的,通过报文检查模块接收待测设计输出的结果报文,并通过报文检查模块的txt_gen模块将结果文件保存为二进制格式文件;当仿真运行结束后,对比所述data_exp.v与data_rcv.v文件,来检查待测设计dut的测试是否符合预期。

实施例2:

本实施例提出的使用二进制保存激励和仿真结果的链路层验证平台,在实施例1链路层验证平台的基础上,以待测设计为qpi协议的链路层接口模块,给出一种具体实施方式,进一步详细了解该链路层验证平台的技术方案和技术优点。

所述待测设计dut,采用qpi协议的链路层接口模块,用来处理激励报文,实现利用二进制文件验证qpi协议的链路层功能;qpi:intel的quickpathinterconnect,译为快速通道互联;事实上它的官方名字叫做csi,commonsysteminterface公共系统界面,用来实现芯片之间的直接互联。

由于所述链路层接口模块通常会有多路通道,每条通道由报文协议中指定字段区分,因此所述报文产生模块的txt_gen模块保存的文件可以是多组。data_gen.v和data_exp.v所保存的报文文件是针对于其中某一路的。同样所述报文检查摸块内部的txt_gen模块,会将每一路的输出保存成为一个结果文件。这样,可以方便的对链路层接口模块的多路通道进行功能验证。

在对比data_exp.v与data_rcv.v文件时,可以采用常用文件对比软件进行data_exp.v与data_rcv.v文件对比,来辅助查看验证结果。当结果报文不符合预期时,可以通过data_gen.v文件进行异常报文的位置定位,提高问题定位效率。

本实施例还提出使用二进制保存激励和仿真结果的链路层验证方法,其技术方案可以与实施例2链路层验证平台相互参考,其具体实现过程如下:

步骤一,产生测试激励报文,将激励报文保存为二进制文件;

具体的,通过报文产生模块frame_gen产生测试激励报文,在报文产生模块内部设置一个txt_gen模块,用于将激励报文保存为二进制格式文件;在txt_gen模块中设置data_gen.v和data_exp.v,分别保存激励报文的产生的原始报文和经dut处理后的预期得到的结果报文;

步骤二,通过待测设计dut处理激励报文,利用生成二进制文件验证qpi协议的链路层功能;

具体的,所述待测设计采用qpi协议的链路层接口模块,用来处理激励报文;所述链路层接口模块通常会有多路通道,每条通道由报文协议中指定字段区分,所述报文产生模块的txt_gen模块保存的文件可以是多组;data_gen.v和data_exp.v均针对其中某一路通道保存报文文件;

步骤三,得到激励报文经待测设计处理后输出的结果报文,将结果报文保存为二进制格式文件,检查结果报文完成qpi协议链路层验证;

具体的,针对所述链路层接口模块的不同通道,所述报文检查摸块内部的txt_gen模块,会将每一路的输出保存成为一个结果文件;

当仿真运行结束后,对比所述data_exp.v与data_rcv.v文件,来检查待测设计dut的测试是否符合预期。可以采用常用文件对比软件进行data_exp.v与data_rcv.v文件对比,来辅助查看验证结果。当结果报文不符合预期时,可以通过data_gen.v文件进行异常报文的位置定位,提高问题定位效率。

本实施例使用二进制保存激励和仿真结果的链路层验证方法,使用预期文件与结果文件对比,来加快链路层功能验证,并且使用二进制文件格式,可以方便使用更多第三方的文本编辑产看软件来辅助验证;关键同时提出了一套链路层各通路保存文件的方法。

实施例3:

本实施例提出的使用二进制保存激励和仿真结果的链路层验证平台,在实施例2链路层验证平台的基础上,以报文产生模块frame_gen根据qpi协议的链路层数据格式,产生多种flit报文为例,来进一步详细介绍qpi协议链路层验证平台的技术方案和技术优点。

所述报文产生模块frame_gen根据qpi协议的链路层数据格式,产生多种flit报文(比如产生六种flit报文,具体为hom、snp、ndr、drs、ncb、ncs)。在产生上述多种flit报文的同时,按照顺序生成data_gen.v文件,记录报文的生产;根据上述多种flit报文经过待测设计cut的处理及预期,编写verilogtask同时将预期结果写入data_exp.v。qpi协议链路层报文的处理并不会将报文数据顺序打乱,因此输入顺序一旦确定,将得到确定的预期输出报文,可以使用所述预期文件辅助功能验证。

verilogtask指verilog任务,通常用于调试,或对硬件进行行为描述,可以包含时序控制,可以调用其他任务和函数。

并且,qpi协议的链路层接口模块的同一路输入来源的报文能够根据报文内部某些id字段做调度,被分发到不同的端口输出,相应的预期文件data_exp.v根据不同端口预期写入不同文件。若qpi协议报文头带有payload负载数据,则负载数据在输出端口有单独数据通道输出的,并将单独写入成预期文件。

所述报文检查模块frame_chk,按照顺序将每一个验证通道接收到的结果分别保存成data_rcv.v文件;并且,所述data_rcv.v文件名称前缀与所述预期文件data_exp.v名称保持一定关联,以方便结果与预期的对比。在打开data_exp.v、data_rcv.v文件进行对比之间,能够清楚地看到各个文件的大小,以便预判报文数量是否符合预期。

本实施例还提出使用二进制保存激励和仿真结果的链路层验证方法,其技术方案可以与实施例3链路层验证平台相互参考。本发明所提出的上述三个实施例,可以适用于ic/fpga开发的链路层逻辑代码功能验证,除了qpi协议链路层验证,同样适用于upi、以太网tpc/ip等通讯协议的链路层模块验证。

以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容,并不用于限制本发明的保护范围,本发明的技术方案不限制于上述具体实施方式内。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1