基于存储器访问驱动的自动化协同验证平台的搭建方法技术领域
本发明涉及芯片验证技术,具体涉及一种基于存储器访问驱动的自动化协同验证
平台的搭建方法。
背景技术
为了验证芯片内部的子系统,甚至是全芯片功能,经常需要协同验证环境来支持,
即用C语言模型来模拟子系统的功能,来验证子系统功能的正确性。由于子系统通常都很复
杂,C语言模型不仅要验证子系统最后的输出,还需要对构建子系统的各个模块间的内容进
行验证。
常见的协同验证方法一般为基于模块输出驱动的协同验证方法,如图1所示,该方
法将系统功能拆分为多个模块单元,在输入激励之后,C语言模型模拟每个模块的功能得到
期望输出结果,待RTL子系统中对应模块有信号输出时,进行数据检查,从而验证RTL子系统
的正确性。该方法可以大幅缩小发生错误的范围,减少测试人员调试的工作量。但该验证方
法的缺陷有:
1.无法应用在没有输出的模块中。例如芯片中的存储控制模块,其行为是对输入
信号进行解析/编辑处理,并将处理结果存储在内部存储器中。对于该模块而言没有直接的
输出,因此无法验证写入内存数据的正确性。
2.无法应用在相关联功能模块的协同验证中。例如功能A和功能B,分别对其进行
测试时没有问题,但功能A可能改变RTL子模块中某些状态或者存储信息,导致将功能A和功
能B放在一起测试时功能B发生错误。虽然将功能A和功能B放在一起测试可以解决上述问
题,但无法保证将功能A和功能B放在一起测试后不影响其他功能的测试。上述协同模拟的
方法不仅非常容易遗漏测试例,还会导致测试例数量成几何级数增长。
发明内容
针对现有技术的不足,本发明的主要目的在于:提出一种以芯片内部的存储器访
问数据为验证点,使用内部存储器的数据检查来代替传统的子系统内部模块间输出的检
查,实现快速、高效的芯片验证。
为实现前述目的,本发明公开了一种基于存储器访问驱动的自动化协同验证平台
的搭建方法,其验证平台包括RTL子系统、编程语言功能模型、RTL验证模块,具体地:
在所述RTL验证模块中创建数据比较接口,用于对存储器的相关信息与编程语言
功能模型参考信息进行比较;
其验证流程包括以下步骤:
S1.根据数据处理流程构建编程语言功能模型,将访问存储器的相关信息对应存
储为编程语言功能模型内的参考信息;
S2.监测RTL子系统中所有存储器的读写信号,若检测到所述读写信号使能,则执
行下一步骤,否则继续执行当前监测步骤;
S3.RTL验证模块调用数据比较接口,对RTL操作存储器的相关信息同所述编程语
言功能模型内对应的存储器参考信息进行比较,若比较结果全部一致,则验证通过,并释放
当前验证通过的存储器参考信息,然后执行下一步骤;若出现任一比较结果不一致则产生
中断,然后执行S6;
S4.判断系统内所有存储器是否验证完毕,若是,执行下一步骤;否则,返回S2;
S5.查找编程语言功能模型中是否存在未释放的存储器参考信息,若存在,则产生
中断;
S6.结束系统验证。
优选地,所述编程语言功能模型采用的编程语言包括C、C++。
优选地,所述步骤S1中将访问存储器的相关信息对应存储为编程语言功能模型内
的参考信息时按照逻辑处理的先后顺序进行存储。
优选地,所述存储器的相关信息包括:存储器的序列号、存储器的名称、读写存储
器的地址、读写存储器的数据。
优选地,所述步骤S1中将访问存储器的相关信息对应存储为编程语言功能模型内
的参考信息具体包括:
使用编程语言功能模型作为参考模型,将RTL操作的存储器的序列号作为参考序
列号,存储器名称作为参考表项名称,读写存储器的地址作为参考地址,读写存储器的数据
作为参考数据。
优选地,所述步骤S3中对RTL操作存储器的相关信息同所述编程语言功能模型内
对应的存储器参考信息进行比较包括:
将当前操作的存储器的序列号、存储器的名称、读写存储器的地址和读写存储器
的数据分别与参考序列号、参考表项名称、参考地址、参考数据作对应比对。
优选地,所述数据比较接口使用硬件语言编写。
优选地,所述数据比较接口使用Veri log语言提供的PLI接口编写。
优选地,对于同一输入激励,所述编程语言功能模型对应所述RTL子系统中所有存
储器产生的参考序列号是相同的;如果连续输入两次激励操作同一个存储器,则所述编程
语言功能模型针对该存储器记录两个不同的参考序列号。
与现有技术相比,本发明的优点在于:本发明公开的一种基于存储器访问驱动的
自动化协同验证平台的搭建方法,以存储器的访问作为驱动搭建自动化协同验证平台,可
以准确高效地测试RTL子系统;在检查被测模块的输出信息的同时,监测其内部状态或者存
储信息的变化,优化了相关联功能的测试方法,具有调试方便,验证全面的优点。
附图说明
图1是现有技术中基于模块输出驱动的协同验证方法;
图2是本发明实施例提出的基于存储器访问驱动的自动化协同验证平台的验证过
程流程图;
图3是本发明一实施例提出的基于存储器访问驱动的自动化协同验证平台的搭建
方法示意图。
具体实施方式
鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的
技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。
本发明提出一种基于存储器访问驱动的自动化协同验证平台的搭建方法,其核心
是以模块内部存储器为基本验证单元,构建出由存储器访问驱动的自动化协同验证平台,
具体包括RTL子系统、编程语言功能模型和RTL验证模块。RTL子系统内的存储器作为本发明
实施例协同验证的基本验证单元;编程语言功能模型用于产生参考数据,以实现在验证过
程中与RTL操作存储器的相关信息进行比对;在所述RTL验证模块中创建数据比较接口,用
于对存储器的相关信息与编程语言功能模型参考信息进行比较。
所述编程语言功能模型可采用C、C++、以及其他适用于软硬件协同设计的编程语
言,由于C语言在软硬件协同设计中使用较为广泛,本发明下述实施例采用C语言功能模型
进行阐述,本领域技术人员应当知晓,该阐述方式不能用来限制本发明。
基于本发明实施例所述的验证平台,其验证流程如图2所示,包括以下步骤:
步骤201,构建C语言功能模型,建立参考信息;
按照SPEC(功能说明书,用类似C的专用语言编写的详细描述芯片功能实现流程的
说明文档)描述的数据处理流程,构建出基于C语言的功能模型。在涉及到内部存储器读写
的地方,按照逻辑处理上的先后顺序对访问存储器的相关信息进行存储。具体包括:使用C
语言功能模型作为参考模型,将其内部产生的序列号作为参考序列号,将存储器名称作为
参考表项名称,将操作存储器的地址作为参考地址,将操作存储器的数据作为参考数据。
步骤202,监测RTL子系统中所有存储器的读写信号;
在RTL验证模块中监测RTL子系统的模块中所有存储器的读写信号,检测是否有存
储器读写信号使能。
步骤203,若检测到所述读写信号使能,则执行下一步骤,否则返回步骤202继续监
测;
步骤204,数据比较,若全部一致,则执行下一步骤,否则,执行步骤208;
RTL验证模块调用数据比较接口,对RTL操作存储器的相关信息同所述编程语言功
能模型内对应的存储器参考信息进行比较,具体包括:将RTL操作存储器的序列号、该存储
器的名称、读写存储器的地址、读写存储器的数据同步骤201中C语言功能模块产生的参考
信息进行比较。若比较结果全部一致,则验证通过;若参考序列号、参考表项名称、参考地
址、参考数据中有任意一项比对不一致则产生中断,即执行步骤208。
步骤205,C语言功能模型释放参考信息;
在上一步骤数据比较全部比对通过后,释放C语言功能模型中该存储器对应序列
号的存储信息。
步骤206,判断系统内所有存储器是否验证完毕,若是,执行下一步骤;否则,返回
步骤202;
步骤207,查找C语言功能模型中是否存在未释放的存储器参考信息,若存在,则执
行下一步骤;否则,执行步骤209。
在系统验证流程结束时进行数据检查,查找C语言的功能模型中是否存在未释放
的存储器信息,若存在,则执行下一步骤;否则,执行步骤209结束整个系统验证的仿真过
程。
步骤208,产生中断;
步骤209,结束系统验证。
及时释放存储器参考信息并在系统验证结束前对释放情况进行检查,可防止RTL
子系统出现不访问存储器的错误,若存在释放残留将无法触发和C语言功能模型的比较操
作。
以存储器的访问作为驱动搭建自动化协同验证平台,可以准确高效的测试RTL子
系统。在检查被测模块的输出信息的同时,监测其内部状态或者存储信息的变化,极大的优
化了相关联功能的测试方法,且调试方便、验证全面。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不
用于限定本发明。
图3是本发明一实施例提出的一种基于存储器访问驱动的自动化协同验证平台的
搭建方法示意图,如图3所示。本实施例的自动化协同验证平台由RTL子系统、C语言功能模
型和RTL验证模块构成,其中,RTL验证模块内的数据比较接口是使用Verilog语言提供的
PLI接口编写的数据比较函数,将Verilog模块内产生的数据类型转换成C语言内部的数据
类型,通过调用这个函数可以将C语言功能模块和Verilog模块内部的数据进行比较。
当激励输入后,C语言功能模型产生与RTL子系统中各模块内的存储器相对应的存
储器参考信息,将RTL操作存储器的序列号、该存储器的名称、读写存储器的地址、读写存储
器的数据存储为参考序列号,参考表项名称,参考地址,参考数据,如图中所示。具体存储格
式不限,根据语言编程需要或编程风格而定。
RTL验证模块监测RTL子系统的模块中所有存储器的读写信号,一旦发现有信号使
能则调用PLI接口,将RTL操作存储器的序列号、该存储器的名称、读写存储器的地址、读写
存储器的数据同上述C语言功能模块产生的结果进行比较。如果参考序列号、参考表项名
称、参考地址、参考数据中有任意一个比对不一致则产生中断结束系统仿真验证;如果比对
全部一致,释放C语言功能模型中该序列号对应的存储器的存储信息。
在系统仿结束前,查找C语言的功能模型中是否存在未释放的存储器信息,若存
在,则产生中断结束系统仿真验证。
进一步地,对于同一个输入激励,C语言功能模型对应所述RTL子系统中所有存储
器产生的参考序列号是相同的;如果连续输入两次激励操作同一个存储器,则C语言的功能
模型会针对该存储器记录两个不同的序列号。
应当理解,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此
项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡
根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。