FPGA逻辑代码的验证方法及装置与流程

文档序号:16247243发布日期:2018-12-11 23:41阅读:442来源:国知局
FPGA逻辑代码的验证方法及装置与流程

本发明涉及计算机验证技术领域,具体而言,涉及一种fpga逻辑代码的验证方法及装置。

背景技术

随着fpga(fieldprogrammablegatearray,可编程门阵列)器件规模的逐渐增大,其承载逻辑的资源数和复杂度也同比增大,单纯利用fpga开发工具,通过verilog搭建testbench无法对fpga的逻辑代码进行全面系统的验证,很难确保验证的正确性;同时,通过verilog搭建testbench对fpga逻辑代码验证时,往往由于调试信号抓取量和下载程序生成速度的限制,很难快速定位到根因,导致问题定位速度和效率难以匹配产品开发的进度要求。



技术实现要素:

针对上述现有技术中存在的问题,本发明提供了一种fpga逻辑代码的验证方法及装置,可以对fpga逻辑代码进行全面系统的验证,在进行板级测试前,保证逻辑的功能正确性。

第一方面,本发明实施例提供了一种fpga逻辑代码的验证方法,其中,所述方法包括:将待测fpga逻辑代码与搭建好的uvm(universalverificationmethodology,通用验证方法学)验证环境进行逻辑对接;

通过eda(electronicsdesignautomation,电子设计自动化)工具,将所述待测fpga逻辑代码集成至所述uvm验证环境中,得到uvm验证模块;

将编写的验证用例输入至所述uvm验证模块中,以完成对所述待测fpga逻辑代码的验证。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接的步骤之前,所述方法还包括:

对所述待测fpga逻辑代码进行uvm验证环境搭建,其中,所述uvm验证环境中的验证组件包含:激励源、预期组件、检测组件、对比组件。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接的步骤,包括:

将所述待测fpga逻辑代码的逻辑顶层在所述uvm验证环境中进行封装,以使所述待测fpga逻辑代码的各接口信号与所述uvm验证环境的各接口信号对应连接。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述将所述待测fpga逻辑代码集成至所述uvm验证环境中,得到uvm验证模块的步骤,包括:

通过eda工具对所述fpga逻辑代码的逻辑顶层进行编译,生成编译脚本a;

通过所述eda工具编写逻辑代码,得到运行脚本b;

将所述编译脚本a输入所述eda工具,经编译得到库文件c;

将所述库文件c和所述运行脚本b集成到所述uvm验证环境中,获得uvm验证模块;

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,将编写的验证用例输入至所述uvm验证模块中,完成对所述待测fpga逻辑代码的验证的步骤,包括:

观察验证用例的输出内容;

通过所述检测组件检测所述输出内容;

将所述检测到的输出内容发送给对比组件;

所述对比组件将所述检测到的所述输出内容与所述预期组件对比分析。

结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述对比组件将所述检测到的输出内容与所述预期组件对比分析的步骤之后,所述方法还包括:

如果所述输出内容与预期组件内容一致,则判定通过;

如果所述输出内容与预期组件内容不一致,则返回定位。

第二方面,本发明实施例还提供了一种fpga逻辑代码的验证装置,其中,包括:

逻辑对接单元,用于将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接;

uvm验证模块获取单元,用于通过eda工具,将所述待测fpga逻辑代码集成至所述uvm验证环境中,得到uvm验证模块;

验证单元,用于将编写的验证用例输入至所述uvm验证模块中,以完成对所述待测fpga逻辑代码的验证。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述装置还包括:

环境搭建单元,用于对所述待测fpga逻辑代码进行uvm验证环境搭建。

结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述逻辑对接单元还用于:将所述待测fpga逻辑代码的逻辑顶层在所述uvm验证环境中进行封装,以使所述待测fpga逻辑代码的各接口信号与所述uvm验证环境的各接口信号对应连接。

结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述uvm验证模块获取单元还用于:通过eda工具对所述fpga逻辑代码的逻辑顶层进行编译,生成编译脚本a;通过所述eda工具编写逻辑代码,得到运行脚本b;将所述编译脚本a输入所述eda工具,经编译得到库文件c;将所述库文件c和所述运行脚本b集成到所述uvm验证环境中,获得uvm验证模块。本发明实施例带来了以下有益效果:

本发明实施例提供的fpga逻辑代码的验证方法和装置,通过将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接,然后利用eda工具,将待测fpga逻辑代码集成至uvm验证环境中,得到uvm验证模块,最后将编写的验证用例输入至uvm验证模块中,以完成对待测fpga逻辑代码的验证,能够对fpga逻辑代码进行全面系统的验证,保证fpga逻辑的功能正确性,当板级测试遇到问题时,能够更好的通过eda方式进行快速问题定位。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的fpga逻辑代码的验证方法的流程图;

图2为本发明实施例所提供的fpga逻辑代码的验证装置的模块图;

图3为本发明实施例所提供的fpga逻辑代码的验证装置的模块图;

图4为本发明实施例所提供的fpga逻辑代码开发的逻辑框图;

图5为本发明实施例所提供的uvm验证平台的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

针对现有的问题,本发明实施例提供了一种fpga逻辑代码的验证方法及装置,以下首先对本发明的fpga逻辑代码的验证方法进行详细介绍。

实施例一

本实施例提供了一种fpga逻辑代码的验证方法,如图1所示为uvm验证方法的流程图,该方法包括如下步骤:

步骤102,将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接。

可选地,将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接的步骤之前,所述方法还可以包括:对待测fpga逻辑代码进行uvm验证环境搭建,其中,uvm验证环境中的验证组件包含:激励源、预期组件、检测组件、对比组件。具体地,激励源在systemverilog开发环境中人工编写以产生激励源;预期组件由激励源产生;检测组件可以用于在uvm验证时,检测输出内容;对比组件可以将输出内容与预期组件中输出内容进行比对,分析输出内容是否正确。

在uvm验证环境中,激励产生或者相应检测模型一般都封装在verilog的module中,其中,module是verilog中的一种函数体,在module中编写逻辑顶层代码通过function(函数声明语句)或者task(一种类函数)来产生各种激励或者接收各种相应,以使待测fpga逻辑顶层通过module函数体在uvm验证环境中进行实例化,并将逻辑顶层例化到uvm验证环境中,其中,uvm验证环境逻辑顶层用top表示,top也可以对uvm的验证用例层test进行例化。

test是验证用例层,uvm会根据仿真命令行选项来例化相应的验证用例。每个test根据实际需求例化不同的验证环境env以及virtualsequence,形成不同的testcase。另外,env一般都是可配置的,不同的test会配不同的参数给env。

env是验证环境,用于例化具体的验证组件,包括bus_agent、tx_agent/rx_agent、scoreboard。bus_agent、tx_agent/rx_agent一般包含一个激励产生模块sequencer,一个激励发送模块driver和一个接口监控模块monitor。sequencer负责产生符合约束的随机激励,并发送给该agent中的driver。driver负责将交易级的传输转换为对应的输入信号并发送到dut的输入端。monitor负责监控这些信号线,统计功能覆盖率。

具体地,将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接时,需要将待测fpga逻辑代码的逻辑顶层在uvm验证环境中进行封装,以使待测fpga逻辑代码的各接口信号与uvm验证环境的各接口信号对应连接,完成验证环境与fpga逻辑的对接。

步骤104,通过eda工具,将待测fpga逻辑代码集成至uvm验证环境中,得到uvm验证模块。

如图4所示为fpga逻辑代码开发的逻辑框图,将待测fpga逻辑代码的各接口信号与uvm验证环境的各接口信号完成对接后,在fpga逻辑开发软件中选择逻辑顶层作为编译顶层,通过eda工具对fpga逻辑代码的逻辑顶层进行编译,生成编译脚本a。

具体地,本发明实施例中可以采用systemverilog的开发环境,利用eda工具编译生成脚本a,该eda工具可以是quartusⅱ等开发工具进行脚本a的开发,以验证验证代码编译是否存在语法或者逻辑错误,并验证uvm的环境配置是否正确。

进一步地,如图5所示为uvm验证平台的结构图,通过eda工具编写逻辑代码,得到运行脚本b,其中,运行脚本b中通过uvm验证平台由人工编写代码产生,以指导eda验证功能是否正确,同时,运行脚本b中附有验证指令,将脚本a生成指令发送给fpga逻辑开发软件,以生成编译脚本a。

将编译脚本a输入eda工具,经编译得到库文件c;将库文件c和运行脚本b集成到uvm验证环境中,获得uvm验证模块。

具体地,将生成的编译脚本a集成到uvm验证环境的运行中,在uvm验证环境脚本运行前,先调用脚本a,生成库文件c,然后脚本b调用库文件c,与uvm验证环境中的fpga逻辑顶层及uvm各验证组件进行编译验证,得到uvm验证模块。

步骤106,通过eda工具,将待测fpga逻辑代码集成至uvm验证环境中,以完成对待测fpga逻辑代码的验证。

在得到的uvm验证模块中编写验证用例,通过eda工具进行编译验证,控制激励源发不同的激励对fpga逻辑进行验证,观察eda工具输出内容,该输出内容可以包括输出波形或者输出信号强度等,然后将输出内容通过检测组件进行检测,并将检测的内容发送给对比组件,对比组件将检测到的输出内容预期组件进行对比分析,如果输出内容与预期组件内容一致,则判定通过,提示检测成功,操控者可以根据检测结果对检测内容进行分析,将问题复现定位;如果所述输出内容与预期组件内容不一致,则返回定位,操控者可以查看错误并进行定位修改。

本发明实施例提供了一种fpga逻辑代码的验证方法,通过将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接,然后通过eda工具,将待测fpga逻辑代码集成至uvm验证环境中,得到uvm验证模块,并将编写的验证用例输入至uvm验证模块中,以完成对待测fpga逻辑代码的验证,该验证方法能对fpga逻辑代码进行全面系统的验证,并且当板级测试遇到问题时,能够更好的通过eda方式对问题进行复现,提升问题的定位速度和效率;同时,本发明实施例能够充分复用fpga开发工具生成的编译脚本,直接在验证环境中进行调用,避免重新开发编译脚本,节省了调试和编译时间。

实施例二

本发明实施例提供了一种fpga逻辑代码的验证装置,如图2所示为fpga逻辑代码的验证装置结构图,该装置包括:

逻辑对接单元21,用于将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接;

uvm验证模块获取单元22,用于通过eda工具,将待测fpga逻辑代码集成至uvm验证环境中,得到uvm验证模块;

验证单元23,用于将编写的验证用例输入至uvm验证模块中,以完成对待测fpga逻辑代码的验证。

逻辑对接单元21还可以用于,将各接口信号与环境的接口信号进行连接,以使逻辑顶层进行实例化放进验证环境中。

uvm验证模块获取单元22还可以用于,使用开发工具进行fpga开发,生成脚本脚本文件a,b,并将脚本文件a,b集成到uvm验证环境中,以使uvm验证环境中各验证组件与脚本a,b进行验证。

在一可选实施例中,如图3所示,上述装置还可以包括:

环境搭建单元31,用于对待测fpga逻辑代码进行uvm验证环境搭建。

本发明实施例提供的fpga逻辑代码的验证装置,通过将待测fpga逻辑代码与搭建好的uvm验证环境进行逻辑对接,然后通过eda工具,将待测fpga逻辑代码集成至uvm验证环境中,得到uvm验证模块,并将编写的验证用例输入至uvm验证模块中,以完成对待测fpga逻辑代码的验证,该验证方法能对fpga逻辑代码进行全面系统的验证,在进行板级测试前,对uvm验证环境进行搭建,保证fpga逻辑的功能正确性;并且当板级测试遇到问题时,能够更好的通过eda方式对问题进行复现,提升问题的定位速度和效率;

进一步地,本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述的数据备份方法。

本发明实施例提供的fpga逻辑代码的验证方法及装置具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

需要说明的是,在本发明所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1