一种基于Tcl的FPGA交互式仿真方法技术

技术编号:10790770 阅读:183 留言:0更新日期:2014-12-17 19:50
本发明专利技术公开了一种基于Tcl的FPGA交互式仿真方法。本方法为:1)在FPGA验证平台verilog中新建一个Tcl解释器,并建立verilog和Tcl解释器之间的通信通道;2)在verilog中采用Tcl语言创建一测试用例;3)Tcl解释器调用该测试用例,当收到写操作命令名称时,Tcl解释器通过写操作命令调用verilog中的写操作任务,将进行写操作的地址和数据传递到verilog中,切换进程;当Tcl解释器收到读操作命令名称时,通过读操作命令调用verilog中的读操作任务,并将进行读操作的地址传递到verilog中,切换进程;当收到等待操作命令名称时,Tcl解释器通过等待操作命令调用verilog中的等待操作任务;4)verilog的任务完成后将返回值返回给Tcl解释器,切换进程。本发明专利技术减少开发和调试测试用例的工作量,可实时控制仿真进程。

【技术实现步骤摘要】
一种基于Tcl的FPGA交互式仿真方法
本专利技术涉及一种基于Tcl的FPGA交互式仿真方法,属于计算机软件
技术背景随着FPGA容量和规模的日益扩大,FPGA设计的复杂度也越来越高,为了保证设计的质量,FPGA验证工程师需要使用Verilog或者Systemverilog语言搭建验证平台和编写测试用例并使用仿真工具对FPGA进行功能仿真。同时FPGA工程师需要把FPGA代码转化成装载文件下载到FPGA器件中进行板级的测试。在板级测试中,FPGA工程师还需要根据软件驱动编写测试脚本来对FPGA进行板级测试。FPGA仿真是对FPGA的设计代码进行验证,这种方法的优点是能够直接看到仿真的波形,便于FPGA工程师进行调试。FPGA板级测试是对FPGA器件进行测试,是在真实环境中的测试,但这种方法无法看到FPGA内部信号的变化状态,不方便进行debug。由于这两种测试方法是不同的测试环境,不同的仿真工具和验证平台,所以FPGA仿真的测试用例不能够直接在板上进行测试,同样,FPGA板上的测试脚本也无法在FPGA仿真工具上运行。这样,FPGA的仿真验证和板级测试无法做到一致性。如果在FPGA板级测试发现的问题,需要在FPGA仿真中编写同样的测试用例进行问题重现。并且,在仿真平台和板级测试平台开发测试同一功能的测试用例有一定重复工作。
技术实现思路
针对现有技术中存在的技术问题,本专利技术的目的在于提供一种基于Tcl的FPGA交互式仿真方法。基于本专利技术创建的测试用例可以在Qustasim命令行上调用仿真平台的task,无需编写测试用例,可以做到实时控制仿真进程,模拟板级测试场景,减少开发和调试测试用例的工作量。该脚本语言采用Tcl语言进行编写,Tcl属于解释性语言,不同于C/C++等编译性语言,Tcl语言编写好以后不需要通过软件编译就可以直接运行。Tcl语言不但在板级测试中可以使用,而且仿真工具Qustasim也有支持Tcl的PLI(ProgramLanguageInterface),可以直接在验证平台里调用Tcl语句。但是verilog是硬件描述语言,执行的task都是基于时序关系的,用仿真工具验证是有仿真时间概念的,而Tcl语句的执行并不占用仿真时间,所以在verilog中调用的Tcl命令,不会等待verilog的任务完成就会去执行下一个Tcl命令,这样不能够按照时间关系利用Tcl脚本来执行verilog中的task。为了实现Tcl与verilog的交互,需要有Tcl扩展命令(用C语言编写)在Verilog调用Tcl脚本时来阻塞Tcl命令的执行来等待verilog中task的完成。附图描述了verilog和Tcl之间的交互关系。这样,在验证平台里用verilog写的例如读写寄存器,发包收包等的task可以用Tcl语句进行封装,从而可以建立起交互式仿真。在Qustasim的仿真命令行中敲入封装好的Tcl命令,可以实时发起进行读写寄存器,发包收包的命令,并看到仿真结果。本专利技术的技术方案为:一种基于Tcl的FPGA交互式仿真方法,其步骤为:1)在FPGA验证平台verilog中新建和初始化一个Tcl解释器;其中,在verilog中设置写操作b_write命令名称、读操作b_read命令名称、等待操作b_wait_irq命令名称,并建立verilog和Tcl解释器之间的通信通道;所述Tcl解释器中设置写操作命令b_write、读操作命令b_read、等待操作命令b_wait_irq,并将其分别映射到verilog中对应的写操作任务、读操作任务、等待操作任务;2)在verilog中采用Tcl语言创建一测试用例;其中,该测试用例中,在每一verilog任务Tcl调用命令后,设置一阻塞Tcl命令执行的阻塞指令,用于等待verilog的任务完成后执行该测试用例中下一句Tcl命令;3)所述Tcl解释器调用该测试用例,对该测试用例中的命令进行执行;当Tcl解释器收到写操作b_write命令名称时,Tcl解释器通过写操作命令b_write调用verilog中的写操作任务,并通过所述通信通道将进行写操作的地址和数据传递到verilog中,并且将Tcl进程转移到verilog进程;当Tcl解释器收到读操作b_read命令名称时,Tcl解释器通过读操作命令b_read调用verilog中的读操作任务,并通过所述通信通道将进行读操作的地址传递到verilog中,并且将Tcl进程转移到verilog进程;当Tcl解释器收到等待操作b_wait_irq命令名称时,Tcl解释器通过等待操作命令b_wait_irq调用verilog中的等待操作任务;4)verilog的任务完成后将返回值通过所述通信通道返回给Tcl解释器,并且将verilog进程转移到Tcl的进程。进一步的,所述阻塞Tcl指令用C语言编写。进一步的,所述返回值为整数类型;当所述返回值为正值时,Tcl解释器顺序执行该测试用例中的Tcl指令,否则结束执行该测试用例。与现有技术相比,本专利技术的积极效果为:为了统一FPGA仿真测试和板级测试,本专利技术所创建脚本可以在FPGA仿真工具Qustasim上运行,同时也可以在MSComm命令行上运行。从而只需要开发一套测试脚本,既可以在仿真平台上运行,又可以在板级测试中使用,不但做到了仿真和板级测试的一致性,也节约了人力开发成本。本发实现Tcl与verilog的交互,从而做到实时控制仿真进程,模拟板级测试场景,减少开发和调试测试用例的工作量。附图说明附图为本专利技术的交互式仿真方法流程图。具体实施方式TCL_PLI库允许任何的Tcl语句可以在verilog的仿真中被调用,PLI的功能是初始化Tcl的解释器并且把Tcl的功能映射到verilog的task中去,另外还可以帮助在Tcl解释器中启动脚本来控制verilog和Tcl之间的交互。Verilog的task有入口可以让Tcl向verilog传递变量,同样,verilog也可以将返回的变量传递给Tcl。PLI提供了这种Tcl和verilog之间信息的共享和数据的传递。在TCL_PLI库中有四个PLIfunction:$tcllnit,$tclExec,$tclGetArgs,$tclClose。$tcllnit用来新建和初始化一个新的Tcl解释器。它定义了一个新的Tclfunction可以被verilog的task来调用,并且映射到对应的task上,另外还定义了有多少个参数可以被使用。$tclExec用来执行一个新的脚本,将Tcl的命令映射到verilog的task上来。$tclGetArgs用来获得tcl传递的参数值。$tclClose用来结束Tcl的解释器,释放内存。在表1中描述了如何在verilog中新建和初始化一个Tcl解释器。第1到3行定义了3个参数表示Tcl命令的名称。第7和第8行定义了3个变量用于verilog和Tcl之间的通信。第12到18行用$tcllnit函数来初始化一个Tcl解释器,这个解释器定义了三个Tcl命令(b_write,b_read,b_wait_irq)用来映射到verilog的task。这些命令可以在脚本中调用,用来执行在仿真中读写总线和等待中断的操作。表1本文档来自技高网...
一种基于Tcl的FPGA交互式仿真方法

【技术保护点】
一种基于Tcl的FPGA交互式仿真方法,其步骤为:1)在FPGA验证平台verilog中新建和初始化一个Tcl解释器;其中,在verilog中设置写操作b_write命令名称、读操作b_read命令名称、等待操作b_wait_irq命令名称,并建立verilog和Tcl解释器之间的通信通道;所述Tcl解释器中设置写操作命令b_write、读操作命令b_read、等待操作命令b_wait_irq,并将其分别映射到verilog中对应的写操作任务、读操作任务、等待操作任务;2)在verilog中采用Tcl语言创建一测试用例;其中,该测试用例中,在每一verilog任务Tcl调用命令后,设置一阻塞Tcl命令执行的阻塞指令,用于等待verilog的任务完成后执行该测试用例中下一句Tcl命令;3)所述Tcl解释器调用该测试用例,对该测试用例中的命令进行执行;当Tcl解释器收到写操作b_write命令名称时,Tcl解释器通过写操作命令b_write调用verilog中的写操作任务,并通过所述通信通道将进行写操作的地址和数据传递到verilog中,并且将Tcl进程转移到verilog进程;当Tcl解释器收到读操作b_read命令名称时,Tcl解释器通过读操作命令b_read调用verilog中的读操作任务,并通过所述通信通道将进行读操作的地址传递到verilog中,并且将Tcl进程转移到verilog进程;当Tcl解释器收到等待操作b_wait_irq命令名称时,Tcl解释器通过等待操作命令b_wait_irq调用verilog中的等待操作任务;4)verilog的任务完成后将返回值通过所述通信通道返回给Tcl解释器,并且将verilog进程转移到Tcl的进程。...

【技术特征摘要】
1.一种基于Tcl的FPGA交互式仿真方法,其步骤为:1)在FPGA验证平台verilog中新建和初始化一个Tcl解释器;其中,在verilog中设置写操作b_write命令名称、读操作b_read命令名称、等待操作b_wait_irq命令名称,并建立verilog和Tcl解释器之间的通信通道;所述Tcl解释器中设置写操作命令b_write、读操作命令b_read、等待操作命令b_wait_irq,并将其分别映射到verilog中对应的写操作任务、读操作任务、等待操作任务;2)在verilog中采用Tcl语言创建一测试用例;其中,该测试用例中,在每一verilog任务调用Tcl命令后,设置一阻塞Tcl命令执行的阻塞指令,用于等待verilog的任务完成后执行该测试用例中下一句Tcl命令;3)所述Tcl解释器调用该测试用例,对该测试用例中的命令进行执行;当Tcl解释器收到写操作b_write命令名称时,Tcl解释器通过写操作命令b_writ...

【专利技术属性】
技术研发人员:蔡潇
申请(专利权)人:上海北大方正科技电脑系统有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1