CN102567165A - 对寄存器传输级硬件实现进行验证的系统及方法 - Google Patents

对寄存器传输级硬件实现进行验证的系统及方法 Download PDF

Info

Publication number
CN102567165A
CN102567165A CN2011104484607A CN201110448460A CN102567165A CN 102567165 A CN102567165 A CN 102567165A CN 2011104484607 A CN2011104484607 A CN 2011104484607A CN 201110448460 A CN201110448460 A CN 201110448460A CN 102567165 A CN102567165 A CN 102567165A
Authority
CN
China
Prior art keywords
hardware
verified
algorithm
test
rtl
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011104484607A
Other languages
English (en)
Other versions
CN102567165B (zh
Inventor
郭若杉
杜学亮
倪素萍
林啸
蒿杰
张森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jilang Semiconductor Technology Co Ltd
Original Assignee
Institute of Automation of Chinese Academy of Science
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Automation of Chinese Academy of Science filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN201110448460.7A priority Critical patent/CN102567165B/zh
Publication of CN102567165A publication Critical patent/CN102567165A/zh
Application granted granted Critical
Publication of CN102567165B publication Critical patent/CN102567165B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种对视频算法的寄存器传输级硬件实现进行验证的系统及方法,该系统包括:测试视频序列库,用于存储对视频算法的RTL硬件设计进行验证所需要的测试序列;测试向量生成器,用于从测试视频序列库中根据算法功能覆盖率选取测试序列,并生成测试向量,再将该测试向量输出给黄金C语言模型和待验证的RTL硬件模型;黄金C语言模型和待验证的RTL硬件模型,用于在接收到测试向量后分别产生输出,并将各自的输出均输出给文件比较器;文件比较器,用于比较黄金C语言模型的输出与待验证的RTL硬件模型的输出是否一致,如果一致,则验证通过,如果不一致,则验证失败。利用本发明,提高了对视频算法的RTL硬件设计进行验证的效率和正确性。

Description

对寄存器传输级硬件实现进行验证的系统及方法
技术领域
本发明涉及数字视频处理的芯片设计技术领域,尤其涉及一种基于功能覆盖率驱动的对视频算法的寄存器传输级硬件实现进行验证的系统及方法,应用于数字高清电视、机顶盒以及视频监控等进行视频处理的芯片设计。
背景技术
数字图像和视频处理技术在诸多领域应用广泛,如数字电视、视频监控、医疗成像、工业检测和消费电子产品等。目前处理算法通常是由软件来完成的,随着深亚微米工艺和大规模集成电路技术的发展,多媒体实时硬件处理成为一个新的发展趋势。
随着嵌入式系统的高速发展,嵌入式系统芯片(SoC)视频芯片应用范围越来越广泛,然而在芯片规模变得越来越大、功能变得越来越复杂、SoC的IP复用等新情况的出现使功能验证这一工作变得更重要、更艰巨。在现代集成电路(IC)设计中,大约有50%~70%的设计周期被用在了功能验证上,而且随着SoC规模的不断扩大,其比例还会不断增加。如果在行为和功能调试时忽视这个过程,就很难在后面的物理设计阶段发现逻辑性错误,而只能在流片之后才会被测试出来,这就导致了设计的高成本以及会耽搁芯片的最终上市时间(Time-to-Market)。从成本和上市时间的角度来考虑,通过功能验证发现逻辑性错误,将会极大地降低整个设计的成本。
功能验证就是要确保硬件设计功能的正确性。本发明涉及的硬件设计是寄存器传输级(Register Transfer Level,简称RTL)的硬件设计,所以仅涉及对于RTL硬件设计的验证。简而言之,就是核实经过人工翻译或工具翻译后的设计属性与翻译前的设计属性是否一致。它主要验证硬件的硬件描述语言(HDL)描述是否符合设计的功能描述。
现阶段在业界广泛应用的功能验证方法主要有:形式化验证、基于仿真的动态验证(Dynamic Verification)、FPGA验证和软硬件协同验证。形式化验证方法使用数学方法形式化地证明设计实现是否部分或者全部满足系统规范所描述的要求,它是一种静态的功能验证方法学,因此也可以把形式验证定义为是一种检查所实现的设计是否满足设计规格定义的某些属性/特征的过程,由于形式验证存在状态空间爆炸性增长的可能,形式验证只适合模块级或中小系统级的验证。当系统复杂度超出状态空间搜索的半径所能覆盖的范围,形式验证方法已无法完成验证任务。
鉴于形式验证的局限性,因此对于规模较大设计的验证,仿真验证仍然是目前主要的验证方法。仿真验证方法是集成电路设计中必不可少的一环,在整个验证过程中占统治地位。基于仿真的验证出发点是设计需求,根据设计需求分析出需要测试的功能,包括模块子功能和系统功能,确定验证计划,开发验证向量,建立测试用例,测试用例描述了在实际的情况下,芯片接收到的外部信号激励,以及应该产生的响应。将待测的RTL硬件设计和仿真环境放在仿真器上仿真,检查RTL硬件设计在各种实际激励下的反应,检查RTL硬件设计的功能是否正确,即是否与黄金C语言模型(Golden C Model)一致,并得出覆盖率。如果RTL硬件设计的功能不正确,说明设计存在错误,查找原因修正错误再次进行仿真,如果覆盖率不满足要求,说明验证不充分设计可能存在潜在错误,完善验证向量继续进行验证,直到RTL硬件设计功能与Golden C Model一致和覆盖率达到时,逻辑功能验证结束。从以上的分析可以看出,逻辑功能验证的主要精力花在激励的生成、功能调试和覆盖率的分析上。
当芯片的规模和功能越来越复杂时,输入激励的可能空间是巨大的,而且对一个输入激励,完成同样的视频算法,硬件仿真的时间远比软件仿真所需的时间长,穷尽仿真所有的输入组合变得不可行。所以只能选取输入空间中选择部分有效的子集作为输入激励进行验证。
目前,在对视频算法的RTL硬件实现进行验证时,主要采用直接验证的方法,手动选取测试序列作为输入激励进行测试。这种直接验证的方法的效率严重依赖于验证者的经验,选取的测试序列可能包含了大量对功能覆盖率提高没有贡献的序列,花费了大量的测试运行时间,但却未得到高的覆盖率。
所以,如何自动选取测试序列,并用尽量少的测试序列达到高的覆盖率,从而加快验证的效率,提高验证的正确性,是业界人员不得不面对的一个重要问题。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种基于功能覆盖率驱动的对视频算法的寄存器传输级实现进行验证的系统及方法,以解决采用直接验证的方法对视频算法的寄存器传输级设计进行验证时,需要花费大量测试时间,却不能得到高的功能覆盖率的问题,提高对视频算法寄存器传输级设计进行验证的效率和正确性。
(二)技术方案
为达到上述目的,本发明提供了一种对视频算法的寄存器传输级硬件实现进行验证的系统,该系统包括:测试视频序列库,用于存储对视频算法的RTL硬件设计进行验证所需要的测试序列;测试向量生成器,用于从测试视频序列库中根据算法功能覆盖率选取测试序列,并生成测试向量,再将该测试向量输出给黄金C语言模型(Golden C Model)和待验证的RTL硬件模型;Golden C Model和待验证的RTL硬件模型,用于在接收到测试向量后分别产生输出,并将各自的输出均输出给文件比较器;文件比较器,用于比较Golden C Model的输出与待验证的RTL硬件模型的输出是否一致,如果一致,则验证通过,如果不一致,则验证失败。
为达到上述目的,本发明还提供了一种对视频算法的寄存器传输级实现进行验证的方法,该方法包括:测试向量生成器从测试视频序列库中根据算法功能覆盖率选取测试序列,生成测试向量,并将该测试向量输出给Golden C Model和待验证的RTL硬件模型;Golden C Model和待验证的RTL硬件模型接收到测试向量后,分别产生输出,并将各自的输出输出给文件比较器;文件比较器比较Golden C Model的输出与待验证的RTL硬件模型的输出是否一致,如果一致,则验证通过,如果不一致,则验证失败。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、本发明提供的基于功能覆盖率驱动的对视频算法的寄存器传输级实现进行验证的系统及方法,通过在Golden C Model上添加功能覆盖率检查代码,生成测试序列自动选择程序,能够根据功能覆盖率自动挑选测试序列,并和算法参数一起组成测试向量,使算法功能覆盖率达到100%,因此解决了采用直接验证的方法对视频算法的寄存器传输级设计进行验证时,需要花费大量测试时间,却不能得到高的功能覆盖率的问题,提高了对视频算法寄存器传输级设计进行验证的效率和正确性。
2、本发明提供的基于功能覆盖率驱动的对视频算法的寄存器传输级实现进行验证的系统及方法,将待验证的功能点列表分为算法功能点和硬件功能点,在Golden C Model上进行算法功能点的测试场景构建;因为Golden C Model的运行时间远比RTL仿真的时间快,所以能够快速找到测试序列和参数组合构成测试场景;构建好满足算法功能覆盖率目标的测试场景后,就可以并行运行多个RTL仿真,从而大大提高验证的效率。
附图说明
图1是本发明提供的基于功能覆盖率驱动的对视频算法的RTL硬件实现进行验证的系统的示意图;
图2是对应于图1所示系统对视频算法的RTL硬件实现进行验证的方法流程图;
图3为依照本发明实施例测试向量生成器生成测试向量的方法流程图;
图4为依照本发明实施例在测试向量生成器生成测试向量后对视频算法的RTL硬件实现进行验证的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
通常,基于功能覆盖率驱动的对视频算法的RTL硬件实现进行验证方法流程为:构建测试场景,产生输入激励→RTL仿真→覆盖率分析,若覆盖率未达到目标,则要顺序重复上述步骤。当硬件规模越来越大时,RTL仿真需要花费大量时间,这样完成一次迭代需要大量时间,要达到覆盖率目标,需要多次迭代,所以总体验证时间巨大。
本发明针对视频算法的RTL硬件实现的特点,提出了一种基于功能覆盖率驱动的对视频算法的RTL硬件实现进行验证的系统及方法,该方法将待验证的功能点列表分为算法功能点和硬件功能点,其中算法功能点即视频算法应该满足的功能特性,RTL硬件实现后,必须检查视频算法应该满足的功能特性是否被正确实现;硬件功能点为硬件上的时序要求等;然后在Golden C Model上进行算法功能点的测试场景构建;因为Golden CModel的运行时间远比RTL仿真的时间快,所以能够快速找到测试序列和参数组合构成测试场景;构建好满足算法功能覆盖率目标的测试场景后,就可以并行运行多个RTL仿真,从而大大提高验证的效率。
如图1所示,图1是依照本发明实施例基于功能覆盖率驱动的对视频算法的RTL硬件实现进行验证的系统的示意图,该系统包括测试视频序列库、测试向量生成器、Golden C Model、待验证的RTL硬件模型和文件比较器。
其中,测试视频序列库用于存储对视频算法的RTL硬件设计进行验证所需要的测试序列。测试向量生成器用于从测试视频序列库中根据算法功能覆盖率选取测试序列,并生成测试向量,再将该测试向量输出给GoldenC Model和待验证的RTL硬件模型。Golden C Model是用C语言编写的实现一定视频处理功能的模块,待验证的RTL硬件模型是用硬件描述语言编写的,实现与Golden C Model相同的视频处理功能的模块,是功能验证的对象。Golden C Model和待验证的RTL硬件模型接收到测试向量后,会分别产生输出,并将各自的输出输出给文件比较器。文件比较器比较Golden C Model的输出与待验证的RTL硬件模型的输出是否一致,如果一致,则验证通过,如果不一致,则待验证的RTL硬件模型中存在Bug,需要对待验证的RTL硬件模型进行调试。
其中测试向量生成器包含有一个测试序列自动选择程序,该测试序列自动选择程序在Golden C Model上添加了功能覆盖检查和覆盖率评估代码,具有自动挑选测试序列的功能。
图2是对应于图1所示系统对视频算法的RTL硬件实现进行验证的方法流程图,该方法包括以下步骤:
步骤201:测试向量生成器从测试视频序列库中根据算法功能覆盖率选取测试序列,生成测试向量,并将该测试向量输出给Golden C Model和待验证的RTL硬件模型;
步骤202:Golden C Model和待验证的RTL硬件模型接收到测试向量后,会分别产生输出,并将各自的输出均输出给文件比较器;
步骤203:文件比较器比较Golden C Model的输出与待验证的RTL硬件模型的输出是否一致,如果一致,则验证通过,如果不一致,则待验证的RTL硬件模型中存在Bug,需要对待验证的RTL硬件模型进行调试,返回执行步骤201。
基于图2所示的对视频算法的RTL硬件实现进行验证的方法流程图,图3示出了依照本发明实施例测试向量生成器生成测试向量的方法流程图,该方法包括以下步骤:
步骤1:在算法设计人员指导下确定待验证的算法功能点列表和测试视频序列库;
步骤2:在Golden C Model上加入功能覆盖检查点和功能覆盖检查代码,以及覆盖率评估代码,生成测试序列自动选择程序;
步骤3:在最佳联合覆盖率列表上,将所有算法功能点的属性设为“未覆盖”;
步骤4:设定算法参数,第一次运行时设为默认;
步骤5:运行测试序列自动选择程序,该自动选择程序的步骤是:
1)遍历测试视频序列库的所有测试序列,计算每个测试序列与已经选出的测试序列集合的联合覆盖率,挑选联合覆盖率最高的测试序列进入测试序列集合;
2)将最佳联合覆盖率列表更新为本次遍历联合覆盖率最高的测试序列所对应的联合覆盖率列表;
3)检查功能覆盖率,如果功能覆盖率超过门限或迭代次数超过门限,则退出,否则返回步骤2。运行一次步骤2到步骤4为一次迭代。
其中,计算每个测试序列与已经选出的测试序列集合的联合覆盖率,是在已产生的测试序列集合对应的最佳联合覆盖率列表基础上,将该测试序列新覆盖的功能点属性改为“已覆盖”,再计算覆盖率。
步骤6:检查算法功能覆盖率,如未达到100%,则分析功能覆盖率报告,根据不同情况采取如下措施:
1)重新返回步骤4,修改算法参数;
2)向测试视频序列库中添加新的测试序列,返回步骤5;
3)产生具有特定特征的测试序列,加入测试视频序列库,返回步骤5;
步骤7:将挑选出的测试序列集合以及对应的算法参数配置构成测试向量。
基于Golden C Model来产生测试向量的原因是,Golden C Model是RTL硬件设计的对比方,RTL硬件设计的目标就是实现Golden C Model的功能,而且因为Golden C Model是用C程序编写,所以其运行的速度远比硬件RTL仿真的速度快,基于Golden C Model能快速地找到合适的测试向量。
在算法设计人员指导下确定待验证的算法功能点列表和测试视频序列库,这一点具有特别重要的意义。因为通常情况下,视频算法开发和硬件实现的任务由不同的部门来担当。如果一个RTL设计人员不了解视频算法,仅以代码覆盖率为衡量目标进行验证,不仅效率不高,而且难以保证验证的质量。因为代码覆盖率只是表示对RTL源代码的执行情况,和源代码所描述的功能没有关系,因而具有很大的局限性。比如一个状态机的状态如果每个状态都覆盖到,可是并不能表示状态之间相互转换的过程也被遍历到。功能覆盖率是用户定义的在验证过程中某种功能的运行程度,经验表明,功能覆盖率与出错(bug)之间有紧密联系。但代码覆盖率可以作为功能覆盖率的补充,如果功能覆盖率高而代码覆盖率低,有可能已有的待验证的功能点还不完全,此时需添加新的功能点。通常,视频算法开发人员对算法有着比RTL设计人员更深入和更准确的理解,所以在算法设计人员指导下确定待验证的算法功能点列表和测试视频序列库有着事半功倍的效果。
在Golden C Model上加入功能覆盖检查点和功能覆盖检查代码,以及覆盖率评估代码,可以生成测试序列自动选择程序。关于如何实现测试序列自动选择程序可以用典型的视频处理算法运动估计来举例。假设待验证运动估计的功能点有:
Case 1:当输入视频发生场景切换时,运动估计的相应的处理是否和Golden C Model一致;
Case 2:当输入视频中含有大量纹理区域时,运动估计相应的处理是否和Golden C Model一致;
Case 4:当输入视频中含有透明菜单时,运动估计相应的处理是否和Golden C Model一致;
Case 5:当输入视频中含有超过运动搜索范围的运动时,运动估计相应的处理是否和Golden C Model一致;
那么,在Golden C Model中添加数据结构TestCaseList
数据结构TestCaseList的元素和其代表的意义为:
isSeneChangeCovered:场景切换被覆盖了吗?
isPatternCovered:周期性纹理区被覆盖了吗?
isOSDCovered:透明菜单的场景被覆盖了吗?
isBigMotionCovered:大运动的场景被覆盖了吗?
Coverage:覆盖率
TestCaseList所有元素的初始值为FALSE,即“未覆盖”。然后在CModel上相应的位置添加覆盖检查的代码。比如在运动估计中的代码中有周期性纹理区检测的标志,isPattern.
则可以通过该标志来检查是否被周期性纹理区这个场景是否被覆盖。如下所示
If(isPattern=TRUE)then
isPatternCoved=TRUE;
在一个序列运行结束后,可以检查数据结构TestCaseList各元素的属性并得出覆盖率并将该覆盖率付给元素Coverage。遍历一次测试序列库,即运行测试序列库中的所有序列,能从中找出覆盖率最高的序列,并将此序列放入测试序列集合。然后将本次遍历中得到的覆盖率及覆盖列表作为初始值,进行第二次的测试序列库的遍历,第二次遍历挑选出的序列并非自身覆盖率最高的序列,以第一次遍历中得到的最佳覆盖列表为初始值,在上面进行覆盖率计算,能计算出和已经挑选出的序列组成的联合覆盖率最高的序列。第二次遍历后再进行第三次遍历,直至联合覆盖率的大小超出设定的门限或者遍历的次数超出设定的门限为止。
如果联合覆盖率未达到100%,则分析功能覆盖率报告,则可根据不同情况采取如下措施
1)修改算法参数,重新再进行测试序列的选择;
2)向测试序列库中添加新的视频测试序列;
3)产生具有特定特征的视频测试序列,加入测试序列库;
如果仅使用一套算法参数运行测试序列库,很难使功能覆盖率达到100%。比如对于运动估计的功能点列表中isBigMotionCovered这个特征,采用如下方法进行覆盖判断
If(mvx>SEARCHRANGE_H)and(mvy>SEARCHRANGE_V)then
    isBigMotionCovered=TRUE;
end.
Mvx为运动向量的水平分量。Mvy为运动向量的垂直分量。SEARCHRANGE_H为水平搜索范围参数,SEARCHRANGE_V为垂直搜索范围参数,如果水平搜索范围参数和垂直搜索范围参数过大,则该条件不容易被满足。如果将这两个参数设定比较小的值,则很多测试序列都可以满足这个要求。
如果修改算法参数也无法使功能覆盖率达到100%,则应分析覆盖率报告,添加新的视频测试序列或者用随机生成和指定特征生成的方法产生新的测试序列加入测试序列库。
这样,可以将测试序列和算法参数组成测试向量。
在测试向量生成器生成测试向量后,运行RTL验证,图4为依照本发明实施例在测试向量生成器生成测试向量后对视频算法的RTL硬件实现进行验证的方法流程图,该方法包括以下步骤:
步骤10:将测试向量生成器生成的测试向量输出给Golden C Model和待验证的RTL硬件模型,运行Golden C Model仿真和RTL硬件模型仿真;Golden C Model和待验证的RTL硬件模型接收到测试向量后,分别产生输出,并将各自的输出均输出给文件比较器;
步骤20:文件比较器比较Golden C Model的输出与待验证的RTL硬件模型的输出是否一致,如不一致,则待验证的RTL硬件模型中存在Bug,需要修改代码,返回步骤10,进行功能调试;
步骤30:检查所有的测试向量是否都已经过测试,如否,返回步骤10,继续进行功能调试;当所有的测试向量都已运行并且得到与Golden CModel相同的输出,则算法功能验证结束;
步骤40:制定待验证的硬件功能点列表;
硬件功能点为除算法功能点之外的待验证的功能点。一般和时序有关。比如对于运动估计这个视频算法的RTL硬件实现,可以制定如下的硬件功能点:
Case 1:不同帧率下运动估计是否正确;
Case2:相同帧率下时序信号发生变化时运动估计的结果是否正确;
步骤50:构建硬件功能点测试场景;
针对硬件功能点Case 1,修改运动估计RTL硬件设计内部的时序产生器参数,产生不同帧率的时序;
针对硬件功能点Case 2,修改运动估计RTL硬件设计内部的时序产生器参数,产生相同帧率,但不同的行列消隐区长度,来产生不同的时序信号;
步骤60:运行RTL仿真;
对于硬件功能点Case 1,构建的测试场景为:修改运动估计RTL硬件设计内部的时序产生器参数,产生不同帧率的时序;所以修改时序产生器参数后,运行修改参数后的RTL仿真,就能得到该测试场景下的输出;
步骤70:检查功能覆盖率,如硬件功能点未被覆盖,返回步骤30,添加硬件功能测试场景,进行RTL硬件模型验证;如果硬件功能点被覆盖,则验证结束。
上述验证方法能提高视频算法RTL硬件实现的验证效率和正确性。因为RTL验证的功能点分为算法功能点和硬件功能点。算法功能的验证通常占了整个验证的大部分时间。通过本发明的测试向量生成器可以生成使功能覆盖率达到100%的测试向量。在RTL仿真中,一次RTL仿真需要大量的时间,仿真后发现Bug,修改再进行仿真。要达到零Bug和100%功能覆盖率,需要多次迭代。一个具有高功能覆盖率的测试向量,能够在一次仿真中发现尽可能多的Bug,从而大大减少迭代次数。
除了算法功能点之外,RTL验证还需要对硬件时序等硬件功能点进行验证,对于此类功能点,采用直接验证的方法,即构建测试场景,进行RTL仿真,检查功能点覆盖率,如覆盖率未达到要求,则构建新的测试场景,重复上述步骤,直至功能点被完全覆盖为止。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种对视频算法的寄存器传输级硬件实现进行验证的系统,其特征在于,该系统包括:
测试视频序列库,用于存储对视频算法的寄存器传输级RTL硬件设计进行验证所需要的测试序列;
测试向量生成器,用于从测试视频序列库中根据算法功能覆盖率选取测试序列,并生成测试向量,再将该测试向量输出给黄金C语言模型和待验证的RTL硬件模型;
黄金C语言模型和待验证的RTL硬件模型,用于在接收到测试向量后分别产生输出,并将各自的输出均输出给文件比较器;
文件比较器,用于比较黄金C语言模型的输出与待验证的RTL硬件模型的输出是否一致,如果一致,则验证通过,如果不一致,则验证失败。
2.根据权利要求1所述的对视频算法的寄存器传输级硬件实现进行验证的系统,其特征在于,所述黄金C语言模型是用C语言编写的实现一定视频处理功能的模块。
3.根据权利要求2所述的对视频算法的寄存器传输级硬件实现进行验证的系统,其特征在于,所述待验证的RTL硬件模型是用硬件描述语言编写的,实现与黄金C语言模型相同的视频处理功能的模块,是功能验证的对象。
4.根据权利要求1所述的对视频算法的寄存器传输级硬件实现进行验证的系统,其特征在于,所述测试向量生成器包含有一个测试序列自动选择程序,该测试序列自动选择程序在黄金C语言模型上添加了功能覆盖检查和覆盖率评估代码,具有自动挑选测试序列的功能。
5.根据权利要求1所述的对视频算法的寄存器传输级硬件实现进行验证的系统,其特征在于,所述文件比较器在验证失败后,还用于:
确定待验证的RTL硬件模型中存在Bug,对待验证的RTL硬件模型进行调试。
6.一种对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,该方法包括:
测试向量生成器从测试视频序列库中根据算法功能覆盖率选取测试序列,生成测试向量,并将该测试向量输出给黄金C语言模型和待验证的RTL硬件模型;
黄金C语言模型和待验证的RTL硬件模型接收到测试向量后,分别产生输出,并将各自的输出均输出给文件比较器;
文件比较器比较黄金C语言模型的输出与待验证的RTL硬件模型的输出是否一致,如果一致,则验证通过,如果不一致,则验证失败。
7.根据权利要求6所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,所述测试向量生成器包含有一个测试序列自动选择程序,该测试序列自动选择程序在黄金C语言模型上添加了功能覆盖检查和覆盖率评估代码,具有自动挑选测试序列的功能。
8.根据权利要求7所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,所述测试向量生成器从测试视频序列库中根据算法功能覆盖率选取测试序列生成测试向量的步骤包括:
步骤1:确定待验证的算法功能点列表和测试视频序列库;
步骤2:在黄金C语言模型上加入功能覆盖检查点和功能覆盖检查代码,以及覆盖率评估代码,生成测试序列自动选择程序;
步骤3:在最佳联合覆盖率列表上,将所有算法功能点的属性设为“未覆盖”;
步骤4:设定算法参数,第一次运行时设为默认;
步骤5:运行测试序列自动选择程序,更新最佳联合覆盖率列表,检查功能覆盖率;
步骤6:检查算法功能覆盖率;
步骤7:将挑选出的测试序列集合以及对应的算法参数配置构成测试向量。
9.根据权利要求8所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,步骤5中所述更新最佳联合覆盖率列表及检查功能覆盖率,包括:
遍历测试视频序列库的所有测试序列,计算每个测试序列与已经选出的测试序列集合的联合覆盖率,挑选联合覆盖率最高的测试序列进入测试序列集合;
将最佳联合覆盖率列表更新为本次遍历联合覆盖率最高的测试序列所对应的联合覆盖率列表;
检查功能覆盖率,如果功能覆盖率超过门限或迭代次数超过门限,则退出,否则返回步骤2,运行一次步骤2到步骤4为一次迭代。
10.根据权利要求9所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,所述计算每个测试序列与已经选出的测试序列集合的联合覆盖率,是在已产生的测试序列集合对应的最佳联合覆盖率列表基础上,将该测试序列新覆盖的功能点属性改为“已覆盖”,再计算覆盖率。
11.根据权利要求8所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,步骤6中所述检查算法功能覆盖率,如未达到100%,则分析功能覆盖率报告,根据不同情况采取如下措施:
1)重新返回步骤4,修改算法参数;
2)向测试视频序列库中添加新的测试序列,返回步骤5;
3)产生具有特定特征的测试序列,加入测试视频序列库,返回步骤5。
12.根据权利要求6所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,该方法在验证失败后,还包括:
文件比较器确定待验证的RTL硬件模型中存在Bug,对待验证的RTL硬件模型进行调试。
13.根据权利要求12所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,该方法在对待验证的RTL硬件模型进行调试后,还包括:
步骤30:检查所有的测试向量是否都已经过测试,当所有的测试向量都已经过测试并得到与黄金C语言模型相同的输出,则算法功能验证结束;
步骤40:制定待验证的硬件功能点列表;
步骤50:构建硬件功能点测试场景;
步骤60:运行RTL硬件仿真;
步骤70:检查功能覆盖率,如硬件功能点未被覆盖,返回步骤30,添加硬件功能测试场景,进行RTL硬件模型验证;如果硬件功能点被覆盖,则验证结束。
14.根据权利要求13所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,步骤40中所述制定待验证的硬件功能点列表包括:
Case 1:不同帧率下运动估计是否正确;
Case2:相同帧率下时序信号发生变化时运动估计的结果是否正确。
15.根据权利要求14所述的对视频算法的寄存器传输级硬件实现进行验证的方法,其特征在于,步骤50中所述构建硬件功能点测试场景,包括:
针对硬件功能点Case 1,修改运动估计RTL硬件设计内部的时序产生器参数,产生不同帧率的时序;
针对硬件功能点Case 2,修改运动估计RTL硬件设计内部的时序产生器参数,产生相同帧率,但不同的行列消隐区长度,来产生不同的时序信号。
CN201110448460.7A 2011-12-29 2011-12-29 对寄存器传输级硬件实现进行验证的系统及方法 Active CN102567165B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110448460.7A CN102567165B (zh) 2011-12-29 2011-12-29 对寄存器传输级硬件实现进行验证的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110448460.7A CN102567165B (zh) 2011-12-29 2011-12-29 对寄存器传输级硬件实现进行验证的系统及方法

Publications (2)

Publication Number Publication Date
CN102567165A true CN102567165A (zh) 2012-07-11
CN102567165B CN102567165B (zh) 2014-04-23

Family

ID=46412639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110448460.7A Active CN102567165B (zh) 2011-12-29 2011-12-29 对寄存器传输级硬件实现进行验证的系统及方法

Country Status (1)

Country Link
CN (1) CN102567165B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103376399A (zh) * 2012-04-24 2013-10-30 北京兆易创新科技股份有限公司 一种逻辑电路
CN106528364A (zh) * 2016-12-15 2017-03-22 盛科网络(苏州)有限公司 基于存储器访问驱动的自动化协同验证平台的搭建方法
CN106547695A (zh) * 2016-10-26 2017-03-29 中广核工程有限公司 一种规模软件的测试系统及方法
CN104156510B (zh) * 2014-07-24 2017-09-22 清华大学 一种分析计算机硬件实验设计的系统及方法
CN107704384A (zh) * 2017-09-14 2018-02-16 郑州云海信息技术有限公司 一种加速芯片功能验证收敛的方法及系统
CN107885925A (zh) * 2017-11-03 2018-04-06 中国电子科技集团公司第五十四研究所 一种eda验证阶段的寄存器测试方法
CN109117365A (zh) * 2018-07-18 2019-01-01 北京城市网邻信息技术有限公司 一种测试方法、装置、存储介质及终端
CN109408221A (zh) * 2017-08-17 2019-03-01 展讯通信(上海)有限公司 一种同步多线程用例生成方法及系统
US10331829B2 (en) 2015-12-15 2019-06-25 International Business Machines Corporation System design using accurate performance models
CN111260079A (zh) * 2020-01-17 2020-06-09 南京星火技术有限公司 电子设备、智能体自训练装置和计算机可读介质
CN111797588A (zh) * 2020-07-03 2020-10-20 国微集团(深圳)有限公司 一种形式验证比较点匹配方法、系统、处理器及存储器
CN111859843A (zh) * 2019-04-15 2020-10-30 瑞昱半导体股份有限公司 检测电路故障的方法及其装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040225999A1 (en) * 2003-05-06 2004-11-11 Andrew Nuss Grammer for regular expressions
US20050102640A1 (en) * 2003-11-10 2005-05-12 Fujitsu Limited Verification apparatus, verification method, and program
CN101894063A (zh) * 2010-06-13 2010-11-24 北京北大众志微系统科技有限责任公司 一种用于微处理器功能验证的测试程序生成方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040225999A1 (en) * 2003-05-06 2004-11-11 Andrew Nuss Grammer for regular expressions
US20050102640A1 (en) * 2003-11-10 2005-05-12 Fujitsu Limited Verification apparatus, verification method, and program
CN101894063A (zh) * 2010-06-13 2010-11-24 北京北大众志微系统科技有限责任公司 一种用于微处理器功能验证的测试程序生成方法及装置

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103376399B (zh) * 2012-04-24 2015-08-05 北京兆易创新科技股份有限公司 一种逻辑电路
CN103376399A (zh) * 2012-04-24 2013-10-30 北京兆易创新科技股份有限公司 一种逻辑电路
CN104156510B (zh) * 2014-07-24 2017-09-22 清华大学 一种分析计算机硬件实验设计的系统及方法
US10331829B2 (en) 2015-12-15 2019-06-25 International Business Machines Corporation System design using accurate performance models
US10699049B2 (en) 2015-12-15 2020-06-30 International Business Machines Corporation System design using accurate performance models
CN106547695A (zh) * 2016-10-26 2017-03-29 中广核工程有限公司 一种规模软件的测试系统及方法
CN106547695B (zh) * 2016-10-26 2019-03-05 中广核工程有限公司 一种规模软件的测试系统及方法
CN106528364A (zh) * 2016-12-15 2017-03-22 盛科网络(苏州)有限公司 基于存储器访问驱动的自动化协同验证平台的搭建方法
CN106528364B (zh) * 2016-12-15 2018-11-30 盛科网络(苏州)有限公司 基于存储器访问驱动的自动化协同验证平台的搭建方法
CN109408221B (zh) * 2017-08-17 2022-03-01 展讯通信(上海)有限公司 一种同步多线程用例生成方法及系统
CN109408221A (zh) * 2017-08-17 2019-03-01 展讯通信(上海)有限公司 一种同步多线程用例生成方法及系统
CN107704384A (zh) * 2017-09-14 2018-02-16 郑州云海信息技术有限公司 一种加速芯片功能验证收敛的方法及系统
CN107885925B (zh) * 2017-11-03 2021-06-29 中国电子科技集团公司第五十四研究所 一种eda验证阶段的寄存器测试方法
CN107885925A (zh) * 2017-11-03 2018-04-06 中国电子科技集团公司第五十四研究所 一种eda验证阶段的寄存器测试方法
CN109117365A (zh) * 2018-07-18 2019-01-01 北京城市网邻信息技术有限公司 一种测试方法、装置、存储介质及终端
CN109117365B (zh) * 2018-07-18 2022-04-22 北京城市网邻信息技术有限公司 一种测试方法、装置、存储介质及终端
CN111859843A (zh) * 2019-04-15 2020-10-30 瑞昱半导体股份有限公司 检测电路故障的方法及其装置
CN111859843B (zh) * 2019-04-15 2024-02-06 瑞昱半导体股份有限公司 检测电路故障的方法及其装置
CN111260079A (zh) * 2020-01-17 2020-06-09 南京星火技术有限公司 电子设备、智能体自训练装置和计算机可读介质
CN111260079B (zh) * 2020-01-17 2023-05-19 南京星火技术有限公司 电子设备和智能体自训练装置
CN111797588A (zh) * 2020-07-03 2020-10-20 国微集团(深圳)有限公司 一种形式验证比较点匹配方法、系统、处理器及存储器
CN111797588B (zh) * 2020-07-03 2022-11-11 深圳国微芯科技有限公司 一种形式验证比较点匹配方法、系统、处理器及存储器

Also Published As

Publication number Publication date
CN102567165B (zh) 2014-04-23

Similar Documents

Publication Publication Date Title
CN102567165B (zh) 对寄存器传输级硬件实现进行验证的系统及方法
CN100576221C (zh) 一种验证抗单粒子效应能力的故障注入系统及其方法
Enoiu et al. Model-based test suite generation for function block diagrams using the uppaal model checker
EP1093619B1 (en) System and method for identifying finite state machines and verifying circuit designs
US9208272B2 (en) Apparatus and method thereof for hybrid timing exception verification of an integrated circuit design
Le et al. Automatic TLM fault localization for SystemC
Alur et al. Theory in practice for system design and verification
US11023362B2 (en) Co-verification of hardware and software
US10073933B2 (en) Automatic generation of properties to assist hardware emulation
Chen et al. Assertion-based functional consistency checking between TLM and RTL models
CN104615808B (zh) 一种待测试硬件运算部件的测试方法及参考模型装置
Di Guglielmo et al. Semi-formal functional verification by EFSM traversing via NuSMV
CN104166744A (zh) 验证视频算法寄存器传输级实现的方法和系统
US8453082B2 (en) Soft error verification in hardware designs
Fey et al. A basis for formal robustness checking
Fezzardi et al. Using efficient path profiling to optimize memory consumption of on-chip debugging for high-level synthesis
CN102520949B (zh) 形式化计算机联锁实现方法
US11022634B1 (en) Rail block context generation for block-level rail voltage drop analysis
Neumann et al. UVM-based verification of smart-sensor systems
Gaber et al. Improved automatic correction for digital VLSI circuits
Finder et al. Debugging HDL designs based on functional equivalences with high-level specifications
May et al. An fpga-based probability-aware fault simulator
Finder et al. Latency analysis for sequential circuits
Jusas et al. FSM based functional test generation framework for VHDL
Raik et al. High-level design error diagnosis using backtrace on decision diagrams

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20171211

Address after: 101412 Beijing City, Fangshan District Yan Village Yan Fu Road No. 1 No. 11 building 4 layer 402

Patentee after: Beijing Si Lang science and Technology Co.,Ltd.

Address before: 100190 Zhongguancun East Road, Beijing, No. 95, No.

Patentee before: Institute of Automation, Chinese Academy of Sciences

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220119

Address after: 519031 room 532, building 18, No. 1889, Huandao East Road, Hengqin District, Zhuhai City, Guangdong Province

Patentee after: Zhuhai Jilang Semiconductor Technology Co.,Ltd.

Address before: 101412 room 402, 4th floor, building 11, No. 1, Yanfu Road, Yancun Town, Fangshan District, Beijing

Patentee before: Beijing Si Lang science and Technology Co.,Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: Room 701, 7th Floor, Building 56, No. 2, Jingyuan North Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing 100176 (Beijing Pilot Free Trade Zone High-end Industry Zone Yizhuang Group)

Patentee after: Beijing Jilang Semiconductor Technology Co., Ltd.

Address before: 519031 room 532, building 18, No. 1889, Huandao East Road, Hengqin District, Zhuhai City, Guangdong Province

Patentee before: Zhuhai Jilang Semiconductor Technology Co.,Ltd.

CP03 Change of name, title or address