可重用spi总线协议模块验证环境平台及其验证方法

文档序号:10654402阅读:755来源:国知局
可重用spi总线协议模块验证环境平台及其验证方法
【专利摘要】本发明公开了可重用SPI总线协议模块验证环境平台及其验证方法。平台包括测试用例、虚拟定序器、虚拟序列发生器、SPI虚拟接口、SPI验证环境。SPI验证环境包括发送代理、接收代理、计分板、SPI配置模块。发送代理包括定序器、序列发生器、驱动器、发送监视器。虚拟定序器对虚拟序列发生器进行选择和调度,从而得到期望的激励序列。定序器调用序列发生器,实现对这个激励的拆分,并且发送到驱动器。所有以上激励采用TLM级数据,驱动器将TLM级激励转换成信号级数据,通过SPI虚拟接口发送到待测设计(DUT)上。接收代理监测DUT的输出,发送到计分板中,通过校验和比对产生验证结果,同时统计覆盖率。本发明还公开了该平台的验证方法。
【专利说明】
可重用SPI总线协议模块验证环境平台及其验证方法
技术领域
[0001 ] 本发明涉及一种数据的全双工同步串行通信技术以及FPGA(Field Programmable Gate Array)逻辑验证领域的一种验证环境平台及其验证方法,尤其涉及一种可重用SPI总线协议模块验证环境平台及其验证方法。【背景技术】
[0002] SPI总线协议是Motorola公司推出的三线串行全双工同步的通信总线接口。SPI以主从方式连接工作,在SPI总线中通常有一个主设备和一个或者多个从设备,SPI总线协议一般包括四根线,即SD0(主设备数据输出从设备数据输入),SDI(主设备数据输入从设备数据输出),SCK(由主设备产生发送到从设备的同步时钟),CS(主设备产生的从设备使能信号,用于片选)。在SPI总线协议中必须有一个主设备,当有多个从设备时,CS片选信号用于选定某一个从设备和主设备通信。SPI总线采用同步串行全双工通讯方式;主设备的数据通过SD0逐比特发送到从设备,从设备通过SDI发送数据到主设备,主设备同时产生同步时钟通过SCK发送到从设备,主从设备发送的数据都按照此同步时钟完成数据传递,数据在时钟的上升沿或者下降沿改变。如图1所示是单次传输8bit数据、发送和接受的有效边沿为上升沿、一个主设备和一个从设备的SPI同步串行通信协议时序图。
[0003]FPGA中实现SPI通信协议功能时,需要对实现代码进行仿真验证。UVM(通用的验证方法学)是由美国三大EDA公司(Mentor、Cadence和Synopsys)共同推出验证方法学。该方法学基于系统级硬件描述语言dystemVerilog,具备面向对象编程的思想和功能,为验证工程师提供了丰富的类库资源和可重用的方法。基于UVM的验证环境和验证方法正在被业界普遍的接受和采用。
【发明内容】

[0004]为能够实现快速的模块级功能验证,提高验证效率,本发明提供一种可重用SPI总线协议模块验证环境平台及其验证方法。
[0005]本发明的解决方案是:一种可重用SPI总线协议模块验证环境平台,其用于验证待测SPI模块的主从设备之间的代码关系是否正确;该验证环境平台包括:测试用例、虚拟定序器、虚拟序列发生器、SPI虚拟接口、SPI验证环境;SPI验证环境包括发送代理、接收代理、 计分板、SPI配置、TLM级数据结构定义;发送代理设置了定序器、序列发生器、驱动器、发送监视器;接收代理器设置了接收监视器;计分板包括参考模型和比较器;其中:
[0006] SPI验证环境的各部件调用SPI配置模块实现SPI验证环境的配置;测试用例调用虚拟定序器,虚拟定序器选择调用虚拟序列发生器,产生期望的激励;定序器选择调用序列发生器,拆分该激励,发送到驱动器上;所有的激励采用TLM级数据,在TLM数据结构定义模块中定义;驱动器将TLM级激励序列转换成信号,通过SPI虚拟接口;发送监视器监视待测 SPI模块的输入,将待测SPI模块的输入信号转换成与发送数据相对应的TLM级数据输入到计分板中;接收监视器监视待测SPI模块的输出,产生与接收数据相对应的TLM级数据监视输出到计分板中;计分板将对两个TLM级数据校验和比对,并给出验证结果,同时统计覆盖率,根据该覆盖率判断验证待测SPI模块是否通过。
[0007]作为上述方案的进一步改进,计分板包括参考模型和比较器,参考模型实现和DUT 相同的功能,产生DUT的预期处理输出结果到比较器中,接收监视器监测DUT的真实输出,输入到比较器中;比较器通过比较DUT的预期输出和真实输出,而判断待测SPI模块的待测功能是否通过。
[0008]作为上述方案的进一步改进,SPI配置模块实现受约束随机化数据包的定义,包括 SPI验证环境是主设备还是从设备的配置、总线单词连续传输与接受的数据bit位数和两次连续传输的间隔。
[0009]作为上述方案的进一步改进,发送代理器封装了定序器、序列发生器、驱动器、发送监视器,负责发送TLM级激励序列转换成信号发送到待测SPI模块,并且监测待测SPI模块输入信号。
[0010]作为上述方案的进一步改进,接收代理器封装了接受监视器,用于监视待测SPI模块的输出。
[0011]作为上述方案的进一步改进,虚拟定序器和虚拟序列发生器机制的使用,重新组合序列发生器,实现复杂功能的快速验证。
[0012]本发明还提供一种上述任意可重用SPI总线协议模块验证方法,其包括以下步骤:
[0013]SPI测试平台实例化SPI配置模块,SPI验证环境的各部件调用SPI配置模块中的配置参数;
[0014]测试用例调用虚拟定序器,虚拟定序器选择调用虚拟序列发生器,产生期望的激励序列,发送给发送代理,发送代理中的定序器选择和调用序列发生器实现对该激励的拆分;
[0015]驱动器将TLM级激励序列转换成信号,通过SPI虚拟接口再发送给待测SPI模块;
[0016]发送监视器监视待测模块的输入,产生与发送数据相对应的TLM级数据监视输出到计分板中的参考模型中,参考模型根据输入参数预期的输出结果,输出到比较器中;
[0017]接收监视器监视待测SPI模块的输出,产生与接收数据相对应的TLM级数据监视输出到比较器中;
[0018]计分板将对预期的结果和待测SPI模块的输出进行校验和比对,给出验证结果,同时统计覆盖率,根据该覆盖率判断验证待测SPI模块是否通过。
[0019]本发明的有益效果为:采用UVM验证方法学建验证环境平台,充分发挥UVM灵活的激励序列单元产生机制,对SPI设备控制器模块进行全面、快速的功能验证。同时基于配置组件方法,使该验证平台通用性广、重用度高,在不同情况下都可以高效、便捷的完成功能验证工作,提高了验证工程师的验证效率。【附图说明】
[0020]图1是目前SPI同步串行通信协议时序图。
[0021]图2是可重用SPI总线协议模块验证环境平台结构示意图。【具体实施方式】
[0022]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[〇〇23]请参阅图2,本发明的可重用SPI总线协议模块验证环境平台用于验证待测SPI模块的主从设备之间的代码关系是否正确。待测SPI模块包括SPI主设备7和与SPI主设备7配合的若干SPI从设备8。[〇〇24] 该验证环境平台包括测试用例库1、虚拟定序器2、虚拟序列发生器3、、SPI虚拟接口 4、SPI验证环境5API验证环境5包括发送代理器51、接收代理器52、计分板53、SPI配置 54、TLM数据定义55。发送代理器61设置了定序器511、序列发生器512、驱动器513、发送监视器514。接收代理器52设置了接受监视器521;计分板53包括参考模型531、比较器532。这些器件涉及的英文对应为:3?1验证环境5(3?1£]1¥;[1'〇1116111:)、代理器(4〖6111:)、监视器 (monitor)、定序器611 ( sequencer)、序列发生器611 (sequences)、虚拟激励定序器3 (vritual sequence)、虚拟序列发生器(vritual sequencer)、驱动器612(driver)、记分板 63(scoreboard)、TLM数据定义(transact1n),SPI虚拟接口 5即虚拟接口组件(vritual interface)、待测设计(DUT)。[〇〇25]验证平台包括一个验证环境,封装除了接口之外的所有组件。验证平台与DUT即待测SPI模块的所有通信通过虚拟接口组件。验证平台包括两个代理器(输入代理(即发送代理器51)和输出代理(即接收代理器52))和记分板53。发送代理器51封装了定序器511、序列发生器512、驱动器513和发送监视器614,负责发送激励序列到DUT并且产生TLM级数据监视输出。接收代理器52封装了接收监视器521,用于监视DUT的输出,产生监视TLM级数据输出。 虚拟定序器2和虚拟序列发生器3机制的使用,重新组合序列发生511,实现复杂功能的快速验证。[〇〇26] SPI验证环境5的各部件调用SPI配置54模块实现SPI验证环境5的配置;测试用例1 调用虚拟定序器2,虚拟定序器2选择调用虚拟序列发生器3,产生期望的激励。定序器511选择调用序列发生器512,拆分该激励,发送到驱动器上513。所有的激励采用TLM级数据,在 TLM数据结构定义55模块中定义。驱动器513将TLM级激励序列转换成信号,通过SPI虚拟接口 4;发送监视器514监视待测SPI模块的输入,将待测SPI模块的输入信号转换成与发送数据相对应的TLM级数据输入到计分板53中;接收监视器521监视待测SPI模块的输出,产生与接收数据相对应的TLM级数据监视输出到计分板53中;计分板53将对两个TLM级数据校验和比对,并给出验证结果,同时统计覆盖率,根据该覆盖率判断验证待测SPI模块是否通过。 [〇〇27] 本发明基于UVM验证方法学和SystemVerilog系统级硬件描述语言构建验证环境平台,对SPI总线接口模块实施功能级验证。针对SPI总线的主从结构,将主从模块的验证功能综合在一个验证平台中,验证平台可以对使用硬件描述语言(HDL)编写的SPI总线主从模块同时进行验证。设置一个SPI配置类,封装SPI协议相关的全部参数信息,从而实现一个方便移植和重用的SPI总线协议验证平台。SPI配置类包括SPI验证环境主从方式、SPI总线同步时钟频率、单次连续发送/接收的串行数据的长度、发送和接受的有效边沿、主从设备数量和连续发送接受数据的高低位顺序等。采用UVM虚拟激励序列发生器(vritual sequence)机制,快速组合序列发生器(sequences ),实现快速的多功能点验证。所有验证脚本和流程支持但不限于Mentor仿真工具、Cadence仿真工具和Synopsys仿真工具。[0〇28]使用时,根据应用的场景配置SPI配置文件,整个验证平台均依据SPI配置文件参数运行。测试用例依据SPI配置文件信息和需要测试的功能编写。序列产生器基于约束条件的测试用例,产生随机约束的TLM级激励序列,发送到驱动器513上。驱动器513将TLM级激励,依据SPI配置文件的参数,转换成SPI总线协议信号,通过虚拟接口组件,发送到DUT SPI 接口上。两个监视器监视DUT的输入和输出,产生TLM级数据监视输出到记分板53中。记分板 53负责采集SPI主从通用验证组件产生的数据,进行自动比较,以判断传输是否正确。[〇〇29]综上所述,本发明中发明的基于UVM的可重用SPI协议验证平台,其验证方法包括以下步骤。
[0030]1.基于系统级硬件描述语言SystemVerilog语言和UVM类库构搭建一个基于UVM的SPI总线的验证环境。该验证环境包括以下UVM组件:验证环境(Enviroment)、代理器 (Agent)、监视器(monitor )、定序器(sequencer)、序列发生器(sequences)、驱动器 (driver)、记分板(scoreboard),TLM数据定义(transact1n),虚拟接口组件(vritual interface),SPI配置组件。[〇〇31]2.SPI配置模块实现受约束随机化数据包的定义,包括SPI验证环境是主设备还是从设备的配置、总线单词连续传输与接受的数据bit位数和两次连续传输的间隔等。[〇〇32]3.定序器组件的组织管理序列发生器,当驱动器组件要求发送的数据时候,定序器组件把的序列发生器生成的TLM级数据发送到驱动器上;[〇〇33]4.在代理器中,封装了驱动器、序列发生器和监视器。根据配置不同的参数,决定实例化是否实例化是序列发生器和驱动器。发送代理实例化监视器,序列产生器和驱动器, 接收代理器只实例化监视器。[〇〇34]5.驱动器将TLM级的数据,按照SPI接口协议配置,按照时序要求,驱动到DUT的管脚上。[〇〇35]6.监视器按照SPI接口协议的配置,采集DUT管脚的时序信号,转化成TLM级的数据并输出。[〇〇36]7.记分板由参考模型和比较器组成。参考模型得到发送代理器的数据,模仿待测DUT模块的功能,结果输入到比较器中。比较器通过基表参考模型的输出和接收代理器的输出是否一致,判断待测功能是否通过。[〇〇37]8.SPI配置组件定义SPI总线协议所需的参数变量信息:包括SPI总线比特率、一次连续发送/接收的串行数据的长度、发送和接受的有效边沿、验证模块的主从选择、从设备数量和传输高低位顺序等。通过UVM的config_db机制,配置信息将传递给整个验证平台的各个组件。[〇〇38]9.SPI接口组件实现UVM组件与DUT相连接和通信。
[0039]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种可重用SPI总线协议模块验证环境平台,其用于验证待测SPI模块的主从设备之 间的代码关系是否正确;其特征在于:该验证环境平台包括:测试用例(1)、虚拟定序器(2)、 虚拟序列发生器(3)、SPI虚拟接口(4)、SPI验证环境(5);SPI验证环境(5)包括发送代理 (51)、接收代理(52)、计分板(53)、SPI配置(54)、TLM级数据结构定义(55);发送代理(51)设 置了定序器(511)、序列发生器(512)、驱动器(513)、发送监视器(514);接收代理器(52)设 置了接收监视器(521);计分板(53)包括参考模型(531)和比较器(532);其中:SPI验证环境(5)的各部件调用SPI配置(54)模块实现SPI验证环境(5)的配置;测试用 例(1)调用虚拟定序器(2),虚拟定序器(2)选择调用虚拟序列发生器(3),产生期望的激励; 定序器(511)选择调用序列发生器(512),拆分该激励,发送到驱动器上(513);所有的激励 采用TLM级数据,在TLM数据结构定义(55)模块中定义;驱动器(513)将TLM级激励序列转换 成信号,通过SPI虚拟接口( 4);发送监视器(514)监视待测SPI模块的输入,将待测SPI模块 的输入信号转换成与发送数据相对应的TLM级数据输入到计分板(53)中;接收监视器(521) 监视待测SPI模块的输出,产生与接收数据相对应的TLM级数据监视输出到计分板(53)中; 计分板(53)将对两个TLM级数据校验和比对,并给出验证结果,同时统计覆盖率,根据该覆 盖率判断验证待测SPI模块是否通过。2.如权利要求1所述的可重用SPI总线协议模块验证环境平台,其特征在于:计分板(53)包括参考模型(531)和比较器(532),参考模型实现和DUT相同的功能,产生DUT的预期 处理输出结果到比较器(532)中,接收监视器(521)监测DUT的真实输出,输入到比较器 (532)中;比较器(532)通过比较DUT的预期输出和真实输出,而判断待测SP I模块的待测功 能是否通过。3.如权利要求1所述的可重用SPI总线协议模块验证环境平台,其特征在于:SPI配置(54)模块实现受约束随机化数据包的定义,包括SPI验证环境是主设备还是从设备的配置、 总线单词连续传输与接受的数据bit位数和两次连续传输的间隔。4.如权利要求1所述的可重用SPI总线协议模块验证环境平台,其特征在于:发送代理 器(51)封装了定序器(511)、序列发生器(512)、驱动器(513)、发送监视器(514),负责发送 TLM级激励序列转换成信号发送到待测SPI模块,并且监测待测SPI模块输入信号。5.如权利要求1所述的可重用SPI总线协议模块验证环境平台,其特征在于:接收代理 器(52)封装了接受监视器(521),用于监视待测SPI模块的输出。6.如权利要求1所述的可重用SPI总线协议模块验证环境平台,其特征在于:虚拟定序 器(2)和虚拟序列发生器(3)机制的使用,重新组合序列发生器(511),实现复杂功能的快速 验证。7.—种如权利要求1至6中任意一项所述的可重用SPI总线协议模块验证方法,其特征 在于:其包括以下步骤:SPI测试平台实例化SPI配置(54)模块,SPI验证环境(5)的各部件调用SPI配置模块 (54)中的配置参数;测试用例(1)调用虚拟定序器(2),虚拟定序器(2)选择调用虚拟序列发生器(3),产生 期望的激励序列,发送给发送代理(51),发送代理(51)中的定序器(511)选择和调用序列发 生器(512)实现对该激励的拆分;驱动器(513)将TLM级激励序列转换成信号,通过SPI虚拟接口(4)再发送给待测SPI模块;发送监视器(514)监视待测SPI模块的输入,产生与发送数据相对应的TLM级数据监视 输出到计分板(53)中的参考模型中(531),参考模型(531)根据输入参数预期的输出结果, 输出到比较器(532)中;接收监视器(521)监视待测SPI模块的输出,产生与接收数据相对应的TLM级数据监视 输出到比较器(532)中;计分板(53)将对预期的结果和待测SPI模块的输出进行校验和比对,给出验证结果,同 时统计覆盖率,根据该覆盖率判断验证待测SPI模块是否通过。
【文档编号】G06F11/22GK106021044SQ201610307890
【公开日】2016年10月12日
【申请日】2016年5月10日
【发明人】邓庆勇, 夏际金, 习建博, 王杰, 朱鹏, 骆传慧
【申请人】中国电子科技集团公司第三十八研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1