掌桥专利:专业的专利平台
掌桥专利
首页

一种针对H.265的CABAC连续图像验证的方法

文献发布时间:2023-06-19 11:35:49


一种针对H.265的CABAC连续图像验证的方法

技术领域

本发明涉及数字电路验证技术,特别是涉及一种针对H.265的CABAC连续图像的验证方法。

背景技术

随着超高清技术的普及与应用,视频芯片功能复杂度大也随之增加,H.265视频标准在H.264的基础上再提高50%的编码效率,很多全新的算法被引入H.265中,对多标准视频编解码器的设计也提出了新的挑战,因此视频芯片的可靠性变得十分重要,而复杂度的提高对于功能验证的要求是首当其冲的,芯片的验证,伴随着设计复杂度的提升,工作量和工作难度是成数量级上升的。

视频芯片设计可以划分为前端(逻辑设计)与后端(物理设计),验证环节则是个特殊的存在,就像一条支线,相对独立但与需求定义到综合到物理实现的这个过程又是并行的,贯穿着芯片设计流程的始末。而验证存在的意义在于不断地给设计或者实现过程提供迭代的关键意见,即验证过程中发现的性能不满足、设计代码功能bug、整芯片集成错误等问题。随着进度的推进,一颗芯片表现形式会发生变化,它从RTL代码转换为各种网表,再到最后的版图。在这个过程中,验证可以分为前仿真(基于RTL代码)和后仿真(基于门级网表)。而大部分设计问题都应该会在前仿真的时候就暴露出来,毕竟越到后面设计的迭代成本越高,风险也会越大,硬件仿真其实由来已久,它给设计人员在流片前提供了一种更为准确的电路行为描述。

功能验证已经成为当下整个芯片设计流程中的最大最耗时间的瓶颈,各种图像以及视频处理芯片,在最终投放市场之前,所有的预设功能都应被验证工程师解决。

在验证过程中,有些场景需要大量数据的输入,有些操作需要反复进行,当输入的数据量越多,操作的次数也随之上涨,人为操作时,会出现因重复性动作而造成的疲惫或混乱,如果每次的过程都需要一段处理时间,也需要人为去关注整个验证状态,随时等待一次运行完毕后,启动下一次的输入验证,这些也容易造成时间上衔接不当,导致整个验证时间被拉长,同时,也消耗了不必要的人力。

综合以上各种因素,能够自动进行连续图像验证,解决验证过程中的重复操作,解放人力,提高验证效率,是很有必要的。

发明内容

鉴于此,本发明的目的是提供一种用于H.265 CABAC(自适应二进制算法编码,Context-adaptive binary arithmetic coding)模块连续图像的验证方法,以解决在现在H.265 CABAC模块在验证过程中,需要大量图像数据的输入时,反复进行某些操作,导致的会因重复性动作而造成的疲惫或状态控制混乱,以及人为去关注整个验证状态,手动控制所有过程,造成的验证时间浪费,人力消耗等效率低下问题。

本发明通过指定linux平台上验证环境的搭建层次,配合shell脚本与makefile脚本,实现对整个验证环境的控制,控制CABAC模块的输入数据,控制CABAC模块输出数据对比结果以及仿真器的运行过程。

本发明提供一种针对H.265的CABAC连续图像的验证方法,包括以下步骤:

S1、指定linux平台上验证环境的搭建层次,依次包括:

dut、sim、tb、script、output、data和ref文件夹;

其中,所述dut文件夹存放完整的CABAC模块的设计代码,以及汇集所有设计文件名称的filelist文件;

所述sim文件夹存放makefile脚本,以及编译器工作过程中生成的各种log信息;

所述tb文件夹存放比较器代码以及搭建环境的其他hdl代码;

所述script文件夹存放shell脚本;

所述output文件夹存放比较结果;

所述data文件夹存放所有要输入CABAC模块的图像数据,每张图像数据保存在单独的txt或dat文件中作为CABAC模块的输入;

所述ref文件夹存放经由参考模型运行得到的参考结果;放在ref文件夹下的文件与data文件夹下的文件应该是一一对应的,两个对应文件使用相同的前缀命名进行标注;

S2、配合shell脚本与makefile脚本,实现对搭建层次后的所述验证环境进行控制,包括以下步骤:

S21、定位路径;

S22、检查data文件夹;

S23、检查ref文件夹;

S24、有效输入判断;

S25、修改tb参数;

S26、调用makefile脚本;

所述调用makefile脚本是指shell脚本执行到S26步骤时,将会调用sim文件夹下的makefile脚本;

所述makefile脚本指明所有设计rtl与tb环境rtl的编译与仿真命令,通过输入指定make指令完成设计编译,makefile脚本运行仿真步骤;

所述调用makefile脚本包括仿真器编译与仿真器仿真;

所述仿真器编译是指makefile脚本执行rtl编译命令,对整个testbench进行编译;

所述仿真器仿真是指makefile脚本执行运行仿真命令,启动仿真开始后,比较器会持续判断CABAC模块的输出数据与参考数据是否一致;

S27、判断输入数量;

所述判断输入数量是指此次仿真结束后shell脚本判断input_temp中的文件是否全部被读入并运行仿真,如果shell脚本判断读入文件数量小于总文件数量,则回到S25步骤修改tb参数,再重复顺序执行S25-S27步骤的操作,直到最后所有的图像数据都被CABAC模块读入并运行仿真,shell脚本退出执行;

S3、控制CABAC模块的输入图像数据;

S4、控制CABAC模块的输出数据对比结果以及仿真器的运行过程。

进一步地,所述S1步骤的所述shell脚本用于检测data文件夹下的数据文件,将图像数据送入testbench,给CABAC模块提供输入,shell脚本控制仿真过程。

进一步地,所述S21步骤的所述定位路径是指判断整个验证环境的绝对路径,便于通过所述绝对路径寻找其他路径下的文件。

进一步地,所述S22步骤的所述检查data文件夹是指shell脚本进入data文件夹路径,将所述data文件夹路径下的所有数据文件名称汇总在一个input_temp文件里,所述input_temp文件路径下的所有文件都会被视为可用CABAC模块输入。

进一步地,所述S23步骤的所述检查ref文件夹是指shell脚本进入ref文件夹路径,将所述ref文件夹路径下的所有数据文件名称汇总在一个ref_temp文件里,所述ref_temp文件路径下的所有文件都会被视为可用CABAC模块参考输出数据。

进一步地,所述S24步骤的所述有效输入判断是指shell脚本读取input_temp文件与ref_temp文件,映射data文件夹路径下的图像数据与ref文件夹路径下的图像数据的关系。

进一步地,所述S25步骤的所述修改tb参数指shell脚本进入tb文件夹路径,修改激励产生模块与比较器模块读入的文件名称。

进一步地,所述S4步骤的所述CABAC模块的输出数据作为比较器的输入数据,所述比较器通过读取ref文件夹的对应图像数据的标准输入,逐个比较结果;当比较结果不符合时,比较器生成对应图像数据的log文件,打印报错信息,不同图像数据的的错误信息被保存在不同的文件中,通过文件名称识别,存放在output文件夹。

进一步地,所述shell脚本控制仿真过程包括启动shell脚本进行仿真,进行连续图像数据输入验证。

进一步地,所述S4步骤的所述makefile脚本运行仿真步骤包括启动makefile脚本进行仿真,指定具体的图像数据作为输入进行验证

与现有技术相比,本发明的有益效果是:

本发明使用shell编写脚本,将验证CABAC模块功能时的人为的流程操作,如打开指定文件夹,查看图像数据,指定输入,设置参数,启动仿真等过程以代码的方式实现,shell脚本按照过程判断验证环境状态,与操作系统进行交互,节省了人力,省去了重复繁琐的操作,解放了双手,提高了逻辑代码开发的质量与效率,降低开发成本。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。

在附图中:

图1是本发明实施例的 linux平台上验证环境结构;

图2是本发明实施例的H.265系统图像数据验证平台;

图3是本发明实施例的shell脚本运行步骤;

图4是本发明一种针对H.265的CABAC连续图像的验证方法的流程图;

图5是本发明S2步骤的流程图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本发明提供一种针对H.265的CABAC连续图像的验证方法,参见图4所示,包括以下步骤:

S1、指定linux平台上验证环境的搭建层次,参见图1所示,依次包括:

dut、sim、tb、script、output、data和ref文件夹;分别存放相应文件,便于脚本寻找路径,控制输入文件与输出文件,使整个验证环境更加清晰;

其中,所述dut文件夹存放完整的CABAC模块的设计代码,以及汇集所有设计文件名称的filelist文件;

所述sim文件夹存放makefile脚本,以及编译器工作过程中生成的各种log信息;

所述tb文件夹存放比较器代码以及搭建环境的其他hdl代码;

所述script文件夹存放shell脚本;

所述script文件夹存放控制整个仿真过程的shell脚本,所述shell脚本用于检测data文件夹的数据文件,将图像数据送入testbench,给CABAC模块提供输入,shell脚本控制仿真过程;

所述output文件夹存放比较结果;参看图2所示,所述CABAC模块的输出数据作为比较器的输入数据,所述比较器通过读取ref文件夹的对应图像数据的标准输入,逐个比较结果;当比较结果不符合时,比较器生成对应图像数据的log文件,打印报错信息,不同图像数据的的错误信息被保存在不同的文件中,通过文件名称识别,存放在output文件夹;

所述data文件夹存放所有要输入CABAC模块的图像数据,每张图像数据保存在单独的txt或dat文件中作为CABAC模块的输入;

所述ref文件夹存放经由参考模型运行得到的参考结果;放在ref文件夹下的文件与data文件夹下的文件应该是一一对应的,两个对应文件使用相同的前缀命名进行标注;

S2、配合shell脚本与makefile脚本,实现对搭建层次后的所述验证环境进行控制;参看图5所示,包括以下步骤:

S21、定位路径;

所述定位路径是指判断整个验证环境的绝对路径,便于通过所述绝对路径寻找其他路径下的文件;

S22、检查data文件夹;

所述检查data文件夹是指shell脚本进入data文件夹路径,将所述data文件夹路径下的所有数据文件名称汇总在一个input_temp文件里,所述input_temp文件路径下的所有文件都会被视为可用CABAC模块输入;

所述shell脚本是控制连续图像验证的关键核心,shell脚本运行步骤参见图3所示;

S23、检查ref文件夹;

所述检查ref文件夹是指shell脚本进入ref文件夹路径,将所述ref文件夹路径下的所有数据文件名称汇总在一个ref_temp文件里,所述ref_temp文件路径下的所有文件都会被视为可用CABAC模块参考输出数据;

S24、有效输入判断;

所述有效输入判断是指shell脚本读取input_temp文件与ref_temp文件,映射data文件夹路径下的图像数据与ref文件夹路径下的图像数据的关系;

Ref文件夹的文件与data文件夹的文件应该为一一对应关系,例如一幅图像数据,放入data文件夹路径下,对应的此图像数据的参考模型输出结果应该被放入ref文件夹路径下,shell脚本会逐个确认对应关系,对于找不到对应关系的文件名将会从input_temp文件与ref_temp文件中删除;为了方便shell脚本建立对应关系,图像数据的文件命名应该遵循一定的规则,例如data文件夹下的文件起名为001_dog_input.txt,ref文件夹下对应放置的文件名为001_dog_ref.txt。图像数据的文件名称以三位的序列号开始,以input或ref表明文件类型;

S25、修改tb参数;

所述修改tb参数指shell脚本进入tb文件夹路径,修改激励产生模块与比较器模块读入的文件名称;

所述激励产生模块读入数据指向data文件夹下的数据,shell脚本将会读入input_temp文件,按照所述input_temp文件中的文件名称,由第一行起,按照该行的文件名称修改激励产生模块,使此模块的读入数据文件指向该文件;同理,比较器模块读入数据指向ref文件夹下的数据,shell脚本将会读入ref_temp文件,按照所ref_temp文件中的文件名称,由第一行起,按照该行的文件名称修改比较器模块,使此模块的读入数据文件指向该文件;

S26、调用makefile脚本;

所述调用makefile脚本是指shell脚本执行到S26步骤时,将会调用sim文件夹下的makefile脚本;

所述makefile脚本指明所有设计rtl与tb环境rtl的编译与仿真命令,通过输入指定make指令完成设计编译,makefile脚本运行仿真步骤;

Makefile是linux下的工具,使用makefile指明编译命令与编译关系,整个工程的编译只需要一个命令就可以完成;本发明针对H.265的CABAC连续图像的验证方法,提出了使用makefile脚本的方法,指明所有设计rtl与tb环境rtl的编译与仿真命令,通过输入指定make指令完成设计编译,运行仿真步骤;

所述makefile脚本运行仿真步骤包括启动makefile脚本进行仿真;

所述调用makefile脚本包括仿真器编译与仿真器仿真;指定具体的图像数据作为输入进行验证。

所述仿真器编译是指makefile脚本执行rtl编译命令,对整个testbench进行编译;

所述仿真器仿真是指makefile脚本执行运行仿真命令,启动仿真开始后,比较器会持续判断CABAC模块的输出数据与参考数据是否一致;比对正确的数据不做任何处理,比对错误的数据将会保存在output文件夹下的log信息里,比较器会按照001_dog_output.log的命名格式创建输出文件;

S27、判断输入数量;

所述判断输入数量是指此次仿真结束后shell脚本判断input_temp文件是否全部被读入并运行仿真,如果shell脚本判断读入文件数量小于总文件数量,会从读取第二行的数据,回到S25步骤修改tb参数,再重复顺序执行S25-S27步骤的操作,直到最后所有的图像数据都被CABAC模块读入并运行仿真,shell脚本退出执行;

S3、控制CABAC模块的输入图像数据;

所述data文件夹存放所有要输入CABAC模块的图像数据,每张图像数据保存在单独的txt或dat文件中作为CABAC模块的输入;

S4、控制CABAC模块的输出数据对比结果以及仿真器的运行过程。

所述S1步骤的所述shell脚本用于检测data文件夹下的数据文件,参见图2所示,将图像数据送入testbench,给CABAC模块提供输入,shell脚本控制仿真过程。

所述S21步骤的所述定位路径是指判断整个验证环境的绝对路径,便于通过所述绝对路径寻找其他路径下的文件。

所述S22步骤的所述检查data文件夹是指shell脚本进入data文件夹路径,将所述data文件夹路径下的所有数据文件名称汇总在一个input_temp文件里,所述input_temp文件路径下的所有文件都会被视为可用CABAC模块输入。

所述S23步骤的所述检查ref文件夹是指shell脚本进入ref文件夹路径,将所述ref文件夹路径下的所有数据文件名称汇总在一个ref_temp文件里,所述ref_temp文件路径下的所有文件都会被视为可用CABAC模块参考输出数据。

所述S24步骤的所述有效输入判断是指shell脚本读取input_temp文件与ref_temp文件,映射data文件夹路径下的图像数据与ref文件夹路径下的图像数据的关系。

所述S25步骤的所述修改tb参数指shell脚本进入tb文件夹路径,修改激励产生模块与比较器模块读入的文件名称。

所述S4步骤的所述CABAC模块的输出数据作为比较器的输入数据,所述比较器通过读取ref文件夹的对应图像数据的标准输入,逐个比较结果;当比较结果不符合时,比较器生成对应图像数据的log文件,打印报错信息,不同图像数据的的错误信息被保存在不同的文件中,通过文件名称识别,存放在output文件夹。

所述shell脚本控制仿真过程包括启动shell脚本进行仿真,进行连续图像数据输入验证;

shell是操作系统的最外层,shell可以合并编程语言以控制进程和文件,以及启动和控制其他程序,是一个用户跟操作系统之间交互的命令解释器。本发明针对H.265的CABAC连续图像的验证方法,使用shell编写脚本,实际上就是将验证CABAC模块功能时人为的流程操作,如打开指定文件夹,查看图像数据,指定输入,设置参数,启动仿真等过程以代码的方式实现,shell脚本会按照过程判断验证环境状态,与操作系统进行交互,节省了人力,省去了重复繁琐的操作,解放了双手,提高了逻辑代码开发的质量与效率,降低了开发成本。

所述S4步骤的所述makefile脚本运行仿真步骤包括启动makefile脚本进行仿真,指定具体的图像数据作为输入进行验证。

本发明还提供另外一种仿真运行方式,如果只想运行某个指定的图像数据的文件作为输入的仿真,可以手动修改tb参数,在sim文件夹下直接执行make命令,仿真结束后,得到该图像数据的文件的处理结果。

实施例:

下面通过一个实施例,对本发明针对H.265的CABAC连续图像的验证方法的设计内容以及优点,进行详细说明。

将50个图像数据文件放入data文件夹下,将对应参考输出文件放入ref文件夹下,进入script文件夹下运行shell脚本,等待脚本运行完毕。

shell脚本运行完毕后查看output文件夹下的输出结果文件,分析结果。

经过实际测试,本发明针对H.265的CABAC连续图像的验证方法能够自动实现H.265 CABAC模块的连续图像的验证,与手动操作相比,能够节省大量的人工操作时间,并且结果清晰,易于查找分析,避免人工操作失误,提高整体效率。

与现有技术相比,本发明的有益效果是:

本发明使用shell编写脚本,将验证CABAC模块功能时的人为的流程操作,如打开指定文件夹,查看图像数据,指定输入,设置参数,启动仿真等过程以代码的方式实现,shell脚本按照过程判断验证环境状态,与操作系统进行交互,节省了人力,省去了重复繁琐的操作,解放了双手,提高了逻辑代码开发的质量与效率,降低了开发成本。

至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

以上所述仅为本发明的优选实施例,并不用于限制本发明;对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、同替换、改进,均应包含在本发明的保护范围之内。

相关技术
  • 一种针对H.265的CABAC连续图像验证的方法
  • 一种针对H.265的CABAC连续图像验证的方法
技术分类

06120112986455