基于E语言的数字电视DVB-H系统数据链路层功能验证研究
时间:05-24
来源:数字电视基础
点击:
3 基于E语言的DVB-H系统验证环境的构建
目前的IC设计中,由于SoC(System on Chip)设计的日益复杂化以及芯片规模的日益扩大,系统级验证成为最具挑战的环节,据估计从系统结构设计,子模块设计,子模块验证,系统级验证到FPGA测试,到最终的IC的投产,60%~70%的时间会花费在功能验证方面。选择高性能的验证工具将极大地缩短验证时间,从而降低设计的开发周期。当前的EDA行业最推崇的主要是System C和E两种验证语言。其中E语言是Vetisity公司开发的专用于其Specman验证工具上的一种面向对象的验证语言。用E语言来搭建系统测试环境有很多优点:自动生成基于约束条件的测试矢量,通过描述约束条件产生验证计划中期望的验证场景,能够根据DUV(Design Under Verifica-tion)当前的状态动态地产生测试场景,这样便有可能产生一些很难碰到的边缘案例;自动完成数据和时序的检查;自动进行功能覆盖率的分析找出漏洞;提供所有主流的Verilog和VHDL仿真器接口;此外扩展性强,可以在分开的测试文件中修改若干数据对象,这些测试文件在分层的基础验证环境中处于顶部,这种扩展特性允许不牺牲模块化或可读性的同时更好地迎合系统和测试说明的要求。此外在本文的第二部分的分析中,DVB-H数据链路层的功能主要基于一系列的协议层,E语言可以通过简单的描述实现各种复杂协议测试激励的生成,十分符合DVB-H系统功能验证要求。
3.1 构建DVB-H验证环境
基于E语言的DVB-H验证环境如图5所示,dvbh_env是用E语言搭建的验证环境,dvbh_dut作为DVB-H系统数据链路层的系统模型被例化到验证环境中。由于DVB-H数据链路层要处理各种符合协议要求的TS包,同时负责对错包和丢包情况作纠错处理,并需要管理时间分片从而有效地将低功耗,因此对这些事务处理过程的验证离不开各种复杂测试激励的生成,然而传统的手工编写的激励很难覆盖到各种场景,采用E语言的验证平台通过在满足约束的条件下,随机自动生成测试矢量,达到了高效的验证需要。同时和传统的手工编写测试激励的相比,E语言中有各种函数可供利用,可以方便地实现各种算法,例如:各种协议包中都有CRC32校验字节,调用E语言CRC_32()函数就可以实现。此外,各种协议包都有固定的结构,通过E语言中的struct可以构建各种协议包,并在产生协议包的过程中可以对结构中的域值重新指定或者限定范围,也可以通过定义不符合协议要求的包及有错误值的包来达到验证系统鲁棒性的要求。扩展性强的优点可以节省编写各种测例的时间,E语言很类似于HDL语言编写的系统,在一个系统顶层模块中有各种例化的子模块组成,E语言的这些子模块为unit,可以通过extend uinit_name{}方式在不改变基本结构基础上的对子模块作扩展,也可以覆盖原有的内容重新定义。E语言验证环境也提供了数据一致性检查的机制,称为记分板方法。具体是通过将原始测试激励与从系统输出的数据作比较,提供报告验证系统的功能。在DVB-H链路层系统中,RS纠错模块对收到的IP包做纠错处理,因此记分板方法可以很好的验证数据纠错功能。
3.2 验证步骤及代码具体实现
验证环境搭建完成后,就可以将DVB-H接收系统的链路层例化到功能验证环境中进行验证。以下各步需要通过E语言来完成。
第一步,验证环境需要产生符合DVB-H标准的TS流,码流的基本结构如图4所示。在Host ref模块中产生IP数据包并记录到计分板,为数据检查提供参考数据。然后在MPE-FEC handle模块,产生RS编码数据,并封装成Section格式,随后在时间分片模块中在MPE Section的头信息的相应位中插入时间分片信息,由TS_gen模块打包成TS流的格式通过BB_driver将测试激励输入已例化到测试环境中的DVB-H链路层系统。以上部分的工作实际上是模拟数字电视发送端的工作,产生符合协议要求的传输包。
第二步,在测试环境中Host driver模块模拟系统驱动的工作,主要负责和DVB-H传输系统的接口交互,包括对系统的中断响应,寄存器读写,接收IP数据包(即从Buffer中读出数据),同时通过将接收的IP数据包报告给计分板,验证数据的一致性。DVB-H系统的接口采用PCI仅用于测试需要,实际可以采用各种移动设备流行的接口,包括SDIO,USB2.O等。
第三步,模拟实际环境中的场景,扩展测例,增加覆盖率,主要包括两个方面:
第一,在数字电视中,发送端将各种节目信息表(SI/PSI表)和视音频数据流复用后发送,因此测试激励不仅要产生DVB-H协议要求的封装视音频数据的IP包,还需要插入各种服务信息包,包括NIT(Network Informa-tion Table),INT(IP/MAC Notification Table),PAT(Pro-gram Association Table),PMT(Program Map Table),EIT(Event Information Table),SDT(Service Description Ta-ble),信息表的结构可参照DVB的相关协议。第二,在移动环境中通过DVB-H物理层解调后,误码率依然存在,同时还会有丢包的情况发生,测试环境必须模拟该种场景,在数据包中随机插入错误数据,同时产生丢包的情况。
第四步,测试环境中注意合理的插入断言,不仅可以跟踪仿真进度,同时利于快速定位错误位置,缩短验证周期。此外为了测试环境利于维护和重用,对所有的参数和寄存器地址变量,用名称关联的方式引用。
第五步,用监视器来收集和分析仿真对DVB-H链路层模块的覆盖情况。根据各种功能点的覆盖率要求,设定一些触发事件,触发事件发生时通过采集相关数据,可以了解验证的进度,以便及时根据覆盖率报告修改随机测试矢量的约束条件,以覆盖这些验证中存在的空洞,直到覆盖率达到要求。此外也可以通过设置断点,了解功能模块的工作进度,同时能更好地定位错误位置,即时地完善系统功能。
目前的IC设计中,由于SoC(System on Chip)设计的日益复杂化以及芯片规模的日益扩大,系统级验证成为最具挑战的环节,据估计从系统结构设计,子模块设计,子模块验证,系统级验证到FPGA测试,到最终的IC的投产,60%~70%的时间会花费在功能验证方面。选择高性能的验证工具将极大地缩短验证时间,从而降低设计的开发周期。当前的EDA行业最推崇的主要是System C和E两种验证语言。其中E语言是Vetisity公司开发的专用于其Specman验证工具上的一种面向对象的验证语言。用E语言来搭建系统测试环境有很多优点:自动生成基于约束条件的测试矢量,通过描述约束条件产生验证计划中期望的验证场景,能够根据DUV(Design Under Verifica-tion)当前的状态动态地产生测试场景,这样便有可能产生一些很难碰到的边缘案例;自动完成数据和时序的检查;自动进行功能覆盖率的分析找出漏洞;提供所有主流的Verilog和VHDL仿真器接口;此外扩展性强,可以在分开的测试文件中修改若干数据对象,这些测试文件在分层的基础验证环境中处于顶部,这种扩展特性允许不牺牲模块化或可读性的同时更好地迎合系统和测试说明的要求。此外在本文的第二部分的分析中,DVB-H数据链路层的功能主要基于一系列的协议层,E语言可以通过简单的描述实现各种复杂协议测试激励的生成,十分符合DVB-H系统功能验证要求。
3.1 构建DVB-H验证环境
基于E语言的DVB-H验证环境如图5所示,dvbh_env是用E语言搭建的验证环境,dvbh_dut作为DVB-H系统数据链路层的系统模型被例化到验证环境中。由于DVB-H数据链路层要处理各种符合协议要求的TS包,同时负责对错包和丢包情况作纠错处理,并需要管理时间分片从而有效地将低功耗,因此对这些事务处理过程的验证离不开各种复杂测试激励的生成,然而传统的手工编写的激励很难覆盖到各种场景,采用E语言的验证平台通过在满足约束的条件下,随机自动生成测试矢量,达到了高效的验证需要。同时和传统的手工编写测试激励的相比,E语言中有各种函数可供利用,可以方便地实现各种算法,例如:各种协议包中都有CRC32校验字节,调用E语言CRC_32()函数就可以实现。此外,各种协议包都有固定的结构,通过E语言中的struct可以构建各种协议包,并在产生协议包的过程中可以对结构中的域值重新指定或者限定范围,也可以通过定义不符合协议要求的包及有错误值的包来达到验证系统鲁棒性的要求。扩展性强的优点可以节省编写各种测例的时间,E语言很类似于HDL语言编写的系统,在一个系统顶层模块中有各种例化的子模块组成,E语言的这些子模块为unit,可以通过extend uinit_name{}方式在不改变基本结构基础上的对子模块作扩展,也可以覆盖原有的内容重新定义。E语言验证环境也提供了数据一致性检查的机制,称为记分板方法。具体是通过将原始测试激励与从系统输出的数据作比较,提供报告验证系统的功能。在DVB-H链路层系统中,RS纠错模块对收到的IP包做纠错处理,因此记分板方法可以很好的验证数据纠错功能。
3.2 验证步骤及代码具体实现
验证环境搭建完成后,就可以将DVB-H接收系统的链路层例化到功能验证环境中进行验证。以下各步需要通过E语言来完成。
第一步,验证环境需要产生符合DVB-H标准的TS流,码流的基本结构如图4所示。在Host ref模块中产生IP数据包并记录到计分板,为数据检查提供参考数据。然后在MPE-FEC handle模块,产生RS编码数据,并封装成Section格式,随后在时间分片模块中在MPE Section的头信息的相应位中插入时间分片信息,由TS_gen模块打包成TS流的格式通过BB_driver将测试激励输入已例化到测试环境中的DVB-H链路层系统。以上部分的工作实际上是模拟数字电视发送端的工作,产生符合协议要求的传输包。
第二步,在测试环境中Host driver模块模拟系统驱动的工作,主要负责和DVB-H传输系统的接口交互,包括对系统的中断响应,寄存器读写,接收IP数据包(即从Buffer中读出数据),同时通过将接收的IP数据包报告给计分板,验证数据的一致性。DVB-H系统的接口采用PCI仅用于测试需要,实际可以采用各种移动设备流行的接口,包括SDIO,USB2.O等。
第三步,模拟实际环境中的场景,扩展测例,增加覆盖率,主要包括两个方面:
第一,在数字电视中,发送端将各种节目信息表(SI/PSI表)和视音频数据流复用后发送,因此测试激励不仅要产生DVB-H协议要求的封装视音频数据的IP包,还需要插入各种服务信息包,包括NIT(Network Informa-tion Table),INT(IP/MAC Notification Table),PAT(Pro-gram Association Table),PMT(Program Map Table),EIT(Event Information Table),SDT(Service Description Ta-ble),信息表的结构可参照DVB的相关协议。第二,在移动环境中通过DVB-H物理层解调后,误码率依然存在,同时还会有丢包的情况发生,测试环境必须模拟该种场景,在数据包中随机插入错误数据,同时产生丢包的情况。
第四步,测试环境中注意合理的插入断言,不仅可以跟踪仿真进度,同时利于快速定位错误位置,缩短验证周期。此外为了测试环境利于维护和重用,对所有的参数和寄存器地址变量,用名称关联的方式引用。
第五步,用监视器来收集和分析仿真对DVB-H链路层模块的覆盖情况。根据各种功能点的覆盖率要求,设定一些触发事件,触发事件发生时通过采集相关数据,可以了解验证的进度,以便及时根据覆盖率报告修改随机测试矢量的约束条件,以覆盖这些验证中存在的空洞,直到覆盖率达到要求。此外也可以通过设置断点,了解功能模块的工作进度,同时能更好地定位错误位置,即时地完善系统功能。
- DVI与HDMI:视频传输的数字化革命(08-15)
- 数字机顶盒技术综述 (08-08)
- 大规模IPTV点播系统解决方案(08-18)
- T-DMB推动手机电视市场崛起(08-15)
- 全球液晶显示器Q2增3.1%超预期(08-11)
- 全面解读 嵌入式DSP上的视频编解码(08-19)