一种基于Tel的FPGA交互式仿真方法

文档序号:6626388阅读:539来源:国知局
一种基于Tel的FPGA交互式仿真方法
【专利摘要】本发明公开了一种基于Tel的FPGA交互式仿真方法。本方法为:1)在FPGA验证平台verilog中新建一个Tel解释器,并建立verilog和Tel解释器之间的通信通道;2)在verilog中采用Tel语言创建一测试用例;3)Tcl解释器调用该测试用例,当收到写操作命令名称时,Tel解释器通过写操作命令调用verilog中的写操作任务,将进行写操作的地址和数据传递到verilog中,切换进程;当Tel解释器收到读操作命令名称时,通过读操作命令调用verilog中的读操作任务,并将进行读操作的地址传递到verilog中,切换进程;当收到等待操作命令名称时,Tel解释器通过等待操作命令调用verilog中的等待操作任务;4)verilog的任务完成后将返回值返回给Tel解释器,切换进程。本发明减少开发和调试测试用例的工作量,可实时控制仿真进程。
【专利说明】-种基于Tc I的FPGA交互式仿真方法

【技术领域】
[0001] 本发明涉及一种基于Tel的FPGA交互式仿真方法,属于计算机软件【技术领域】。 技术背景
[0002] 随着FPGA容量和规模的日益扩大,FPGA设计的复杂度也越来越高,为了保证设计 的质量,FPGA验证工程师需要使用Verilog或者Systemverilog语言搭建验证平台和编写 测试用例并使用仿真工具对FPGA进行功能仿真。同时FPGA工程师需要把FPGA代码转化 成装载文件下载到FPGA器件中进行板级的测试。在板级测试中,FPGA工程师还需要根据 软件驱动编写测试脚本来对FPGA进行板级测试。FPGA仿真是对FPGA的设计代码进行验 证,这种方法的优点是能够直接看到仿真的波形,便于FPGA工程师进行调试。FPGA板级测 试是对FPGA器件进行测试,是在真实环境中的测试,但这种方法无法看到FPGA内部信号的 变化状态,不方便进行debug。由于这两种测试方法是不同的测试环境,不同的仿真工具和 验证平台,所以FPGA仿真的测试用例不能够直接在板上进行测试,同样,FPGA板上的测试 脚本也无法在FPGA仿真工具上运行。这样,FPGA的仿真验证和板级测试无法做到一致性。 如果在FPGA板级测试发现的问题,需要在FPGA仿真中编写同样的测试用例进行问题重现。 并且,在仿真平台和板级测试平台开发测试同一功能的测试用例有一定重复工作。


【发明内容】

[0003] 针对现有技术中存在的技术问题,本发明的目的在于提供一种基于Tel的FPGA交 互式仿真方法。
[0004] 基于本发明创建的测试用例可以在Qustasim命令行上调用仿真平台的task,无 需编写测试用例,可以做到实时控制仿真进程,模拟板级测试场景,减少开发和调试测试用 例的工作量。该脚本语言采用Tel语言进行编写,Tel属于解释性语言,不同于C/C++等编译 性语言,Tel语言编写好以后不需要通过软件编译就可以直接运行。Tel语言不但在板级测 试中可以使用,而且仿真工具Qustasim也有支持Tel的PLI (ProgramLanguagelnterface), 可以直接在验证平台里调用Tel语句。但是verilog是硬件描述语言,执行的task都是 基于时序关系的,用仿真工具验证是有仿真时间概念的,而Tel语句的执行并不占用仿真 时间,所以在verilog中调用的Tel命令,不会等待verilog的任务完成就会去执行下一个 Tel命令,这样不能够按照时间关系利用Tel脚本来执行verilog中的task。为了实现Tel 与verilog的交互,需要有Tel扩展命令(用C语言编写)在Verilog调用Tel脚本时来 阻塞Tel命令的执行来等待verilog中task的完成。附图描述了 verilog和Tel之间的 交互关系。这样,在验证平台里用verilog写的例如读写寄存器,发包收包等的task可以 用Tel语句进行封装,从而可以建立起交互式仿真。在Qustasim的仿真命令行中敲入封装 好的Tel命令,可以实时发起进行读写寄存器,发包收包的命令,并看到仿真结果。
[0005] 本发明的技术方案为:
[0006] 一种基于Tel的FPGA交互式仿真方法,其步骤为:
[0007] 1)在FPGA验证平台verilog中新建和初始化一个Tel解释器;其中,在verilog 中设置写操作b_write命令名称、读操作b_read命令名称、等待操作b_wait_irq命令名 称,并建立verilog和Tel解释器之间的通信通道;所述Tel解释器中设置写操作命令b_ write、读操作命令b_read、等待操作命令b_wait_irq,并将其分别映射到verilog中对应 的写操作任务、读操作任务、等待操作任务;
[0008] 2)在verilog中采用Tel语言创建一测试用例;其中,该测试用例中,在每一 verilog任务Tel调用命令后,设置一阻塞Tel命令执行的阻塞指令,用于等待verilog的 任务完成后执行该测试用例中下一句Tel命令;
[0009] 3)所述Tel解释器调用该测试用例,对该测试用例中的命令进行执行;当Tel解 释器收到写操作13_?^;^6命令名称时,Tel解释器通过写操作命$b_write调用verilog中 的写操作任务,并通过所述通信通道将进行写操作的地址和数据传递到verilog中,并且 将Tel进程转移到verilog进程;当Tel解释器收到读操作b_read命令名称时,Tel解释 器通过读操作命令b_read调用verilog中的读操作任务,并通过所述通信通道将进行读操 作的地址传递到verilog中,并且将Tel进程转移到verilog进程;当Tel解释器收到等待 操作b_wait_irq命令名称时,Tel解释器通过等待操作命令b_wait_irq调用verilog中 的等待操作任务;
[0010] 4) verilog的任务完成后将返回值通过所述通信通道返回给Tel解释器,并且将 verilog进程转移到Tel的进程。
[0011] 进一步的,所述阻塞Tel指令用C语言编写。
[0012] 进一步的,所述返回值为整数类型;当所述返回值为正值时,Tel解释器顺序执行 该测试用例中的Tel指令,否则结束执行该测试用例。
[0013] 与现有技术相比,本发明的积极效果为:
[0014] 为了统一 FPGA仿真测试和板级测试,本发明所创建脚本可以在FPGA仿真工具 Qustasim上运行,同时也可以在MSComm命令行上运行。从而只需要开发一套测试脚本,既 可以在仿真平台上运行,又可以在板级测试中使用,不但做到了仿真和板级测试的一致性, 也节约了人力开发成本。
[0015] 本发实现Tel与verilog的交互,从而做到实时控制仿真进程,模拟板级测试场 景,减少开发和调试测试用例的工作量。

【专利附图】

【附图说明】
[0016] 附图为本发明的交互式仿真方法流程图。

【具体实施方式】
[0017] TCL_PLI库允许任何的Tel语句可以在verilog的仿真中被调用,PLI的功能是初 始化Tel的解释器并且把Tel的功能映射到verilog的task中去,另外还可以帮助在Tel 解释器中启动脚本来控制verilog和Tel之间的交互。Verilog的task有入口可以让Tel 向verilog传递变量,同样,verilog也可以将返回的变量传递给Tel。PLI提供了这种Tel 和verilog之间信息的共享和数据的传递。
[0018] 在 TCL_PLI 库中有四个 PLIfunction: $tcllnit, $tclExec, $tclGetArgs, $tclClo se。$tcllnit用来新建和初始化一个新的Tel解释器。它定义了一个新的Tclfunction可 以被verilog的task来调用,并且映射到对应的task上,另外还定义了有多少个参数可 以被使用。$tclExec用来执行一个新的脚本,将Tel的命令映射到verilog的task上来。 $tclGetArgs用来获得tel传递的参数值。$tclClose用来结束Tel的解释器,释放内存。
[0019] 在表1中描述了如何在verilog中新建和初始化一个Tel解释器。第1到3行定 义了 3个参数表示Tel命令的名称。第7和第8行定义了 3个变量用于verilog和Tel之 间的通信。第12到18行用$tcllnit函数来初始化一个Tel解释器,这个解释器定义了三 个Tel命令(b_write,b_read,b_wait_irq)用来映射到verilog的task。这些命令可以 在脚本中调用,用来执行在仿真中读写总线和等待中断的操作。
[0020] 表 1
[0021]

【权利要求】
1. 一种基于Tel的FPGA交互式仿真方法,其步骤为: 1) 在FPGA验证平台verilog中新建和初始化一个Tel解释器;其中,在verilog中设 置写操作b_write命令名称、读操作b_read命令名称、等待操作b_wait_irq命令名称,并 建立verilog和Tel解释器之间的通信通道;所述Tel解释器中设置写操作命令b_write、 读操作命令b_read、等待操作命令b_wait_irq,并将其分别映射到verilog中对应的写操 作任务、读操作任务、等待操作任务; 2) 在verilog中采用Tel语言创建一测试用例;其中,该测试用例中,在每一 verilog 任务Tel调用命令后,设置一阻塞Tel命令执行的阻塞指令,用于等待verilog的任务完成 后执行该测试用例中下一句Tel命令; 3) 所述Tel解释器调用该测试用例,对该测试用例中的命令进行执行;当Tel解释器 收到写操作b_write命令名称时,Tel解释器通过写操作命$b_write调用verilog中的写 操作任务,并通过所述通信通道将进行写操作的地址和数据传递到verilog中,并且将Tel 进程转移到verilog进程;当Tel解释器收到读操作b_read命令名称时,Tel解释器通过 读操作命令b_read调用verilog中的读操作任务,并通过所述通信通道将进行读操作的地 址传递到verilog中,并且将Tel进程转移到verilog进程;当Tel解释器收到等待操作b_ wait_irq命令名称时,Tel解释器通过等待操作命令b_wait_irq调用verilog中的等待操 作任务; 4. verilog的任务完成后将返回值通过所述通信通道返回给Tel解释器,并且将 verilog进程转移到Tel的进程。
2. 如权利要求1所述的方法,其特征在于所述阻塞Tel指令用C语言编写。
3. 如权利要求1或2所述的方法,其特征在于所述返回值为整数类型;当所述返回值 为正值时,Tel解释器顺序执行该测试用例中的Tel指令,否则结束执行该测试用例。
【文档编号】G06F11/36GK104216831SQ201410455781
【公开日】2014年12月17日 申请日期:2014年9月9日 优先权日:2014年9月9日
【发明者】蔡潇 申请人:上海北大方正科技电脑系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1