一种支持eda软件的自动化测试并记录的方法及系统

文档序号:1338211 发布日期:2020-07-17 浏览:21次 >En<

阅读说明:本技术 一种支持eda软件的自动化测试并记录的方法及系统 (Method and system for supporting automatic test and recording of EDA (electronic design automation) software ) 是由 夏燕 冯苏红 于 2020-02-28 设计创作,主要内容包括:一种支持EDA软件的自动化测试并记录的方法及系统,能够尽早并且充分的进行测试,最大限度的找出软件中存在的问题,大大提高了软件的测试效率,节约了测试时间,能够清晰的看到执行每个情况的结果以及错误原因,对于每个软件版本的冒烟测试有着极高的效率。方法包括:(1)进行自动化设计;(2)进行系统全流程的验证设计;(3)EDA模块级自动化验证;(4)后台校验与自动化整合验证。(A method and a system for supporting automatic testing and recording of EDA software can test as early and fully as possible, find out the problems in the software to the maximum extent, greatly improve the testing efficiency of the software, save the testing time, clearly see the result of executing each condition and the error reason, and have extremely high efficiency for the smoke test of each software version. The method comprises the following steps: (1) carrying out automatic design; (2) carrying out verification design of the whole system flow; (3) EDA module level automatic verification; (4) and (4) background verification and automatic integrated verification.)

一种支持EDA软件的自动化测试并记录的方法及系统

技术领域

本发明涉及针对C#代码的C/S结构软件测试的技术领域,尤其涉及一种支持EDA软件的自动化测试并记录的方法,以及支持EDA软件的自动化测试并记录的系统,其主要适用于EDA比较稳定的情况,能够通过脚本控制测试流程并且进行相应的校验输出。

背景技术

C#(读做"C sharp",中文译音“夏普”)是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似:它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。

随着集成电路技术的发展,FPGA(Field-Programmable Gate Array,现场可编程门阵列)的EDA(Electronics Design Automation,电子设计自动化)软件尤为重要,FPGA的EDA软件不同于其他的软件系统,它集成了包括设计电路、编译电路、调试电路、分析电路功能。

EDA做展示,后台使用很多EXE的调用,TCL文件的调用及执行,对于每个电路,不同的结果,EDA软件会做不同的处理及展示,而一般其他的软件系统均采用界面展示,数据存储的模式。一般的软件系统,对于一个流程的结果是固定的,而对于本发明中的EDA软件来说,不同的电路会产生不同的结果,甚至同一个电路,也会产生不同的结果,此时需要大量的电路进行各种功能的配置,来验证EDA软件是否正确,存在哪些BUG。单靠人工测试并不能将大量测试电路来验证软件的正确性,此时需要大量的时间和精力,并且由于软件中很多设置项及选项太多,会大大增加测试人员的时间及精力,覆盖率往往并不高。所以需要有一种自动化技术,能够支持EDA软件的快速测试并且发现记录相应的BUG。

发明内容

为克服现有技术的缺陷,本发明要解决的技术问题是提供了一种支持EDA软件的自动化测试并记录的方法,其能够尽早并且充分的进行测试,最大限度的找出软件中存在的问题,大大提高了软件的测试效率,节约了测试时间,能够清晰的看到执行每个情况的结果以及错误原因,对于每个软件版本的冒烟测试有着极高的效率。

本发明的技术方案是:这种支持EDA软件的自动化测试并记录的方法,其包括以下步骤:

(1)进行自动化设计,将EDA软件上的控件进行录制,并且按照FPGA的工作流程梳理执行步骤,首先生成数据驱动文件,先将所需的变量放在第一行每个单元内,这些单元存放路径、顶层实体、源verilog、mif、hex文件的存放路径以及配置参数,下面每一行代表一个电路CASE,根据上述的驱动变量存放数据,然后通过将自动化中所用到的变量与数据驱动文件中的第一行的变量进行绑定来获取下面每一行的数据不同的参数,再进行全流程的执行;

(2)进行系统全流程的验证设计,流程步骤包括:创建电路工程、配置综合设置、生成网表文件、创建逻辑分析仪、添加信号加固、管脚配置、设置时序约束、进行装箱、布局、布线,结果文件输出;

(3)EDA模块级自动化验证,对每个模块进行自动校验;

(4)后台校验与自动化整合验证:针对全流程已经执行完成后,对于后台的一些结果进行后台校验,使用C#直接调用执行后台验证脚本。

本发明通过上万个不同电路的全流程测试,随机的配置,每轮测试都会有不同的配置信息,做到不同的电路,每次执行时的配置项都不同,从而最大限度的找出软件中存在的问题,能够尽早并且充分的进行测试;对于测试人员来说,大大提高了软件的测试效率,节约了测试时间;对于结果文件的汇总日志,测试人员能够清晰的看到执行每个CASE的结果以及错误原因;对于每个软件版本的冒烟测试,有着极高的效率。

还提供了一种支持EDA软件的自动化测试并记录的系统,其包括:

自动化设计模块,其配置来进行自动化设计,将EDA软件上的控件进行录制,并且按照FPGA的工作流程梳理执行步骤,首先生成数据驱动文件,先将所需的变量放在第一行每个单元内,这些单元存放路径、顶层实体、源verilog、mif、hex文件的存放路径以及配置参数,下面每一行代表一个电路CASE,根据上述的驱动变量存放数据,然后通过将自动化中所用到的变量与数据驱动文件中的第一行的变量进行绑定来获取下面每一行的数据不同的参数,再进行全流程的执行;

系统全流程的验证设计模块,其配置来进行系统全流程的验证设计,流程步骤包括:创建电路工程、配置综合设置、生成网表文件、创建逻辑分析仪、添加信号加固、管脚配置、设置时序约束、进行装箱、布局、布线,结果文件输出;

模块级自动化验证模块,其配置来进行EDA模块级自动化验证,对每个模块进行自动校验;

后台校验与自动化整合验证模块,其配置来进行后台校验与自动化整合验证:针对全流程已经执行完成后,对于后台的一些结果进行后台校验,使用C#直接调用执行后台验证脚本。

附图说明

图1示出了根据本发明的支持EDA软件的自动化测试并记录的方法的步骤(1)的流程图。

图2示出了生成的数据驱动文件。

图3示出了根据本发明的支持EDA软件的自动化测试并记录的方法的步骤(2)的流程图。

图4是根据本发明的支持EDA软件的自动化测试并记录的方法的流程图。

具体实施方式

如图4所示,这种支持EDA软件的自动化测试并记录的方法,其包括以下步骤:

(1)进行自动化设计,将EDA软件上的控件进行录制,并且按照FPGA的工作流程梳理执行步骤,首先生成数据驱动文件,先将所需的变量放在第一行每个单元内,这些单元存放路径、顶层实体、源verilog、mif、hex文件的存放路径以及配置参数,下面每一行代表一个电路CASE,根据上述的驱动变量存放数据,然后通过将自动化中所用到的变量与数据驱动文件中的第一行的变量进行绑定来获取下面每一行的数据不同的参数,再进行全流程的执行;

(2)进行系统全流程的验证设计,流程步骤包括:创建电路工程、配置综合设置、生成网表文件、创建逻辑分析仪、添加信号加固、管脚配置、设置时序约束、进行装箱、布局、布线,结果文件输出;

(3)EDA模块级自动化验证,对每个模块进行自动校验;

(4)后台校验与自动化整合验证:针对全流程已经执行完成后,对于后台的一些结果进行后台校验,使用C#直接调用执行后台验证脚本。

本发明通过上万个不同电路的全流程测试,随机的配置,每轮测试都会有不同的配置信息,做到不同的电路,每次执行时的配置项都不同,从而最大限度的找出软件中存在的问题,能够尽早并且充分的进行测试;对于测试人员来说,大大提高了软件的测试效率,节约了测试时间;对于结果文件的汇总日志,测试人员能够清晰的看到执行每个CASE的结果以及错误原因;对于每个软件版本的冒烟测试,有着极高的效率。

优选地,所述步骤(1)中,生成网表之后进行逻辑分析仪的配置,如果有些电路网表未生成,则直接终止后面的步骤,直接跑下一条CASE,添加USER CODE进行脚本控件流程步骤。

优选地,如图1所示,所述步骤(1)包括以下分步骤:

(1.1)进行控件的录制,将控件存放在控件仓库中,对于同一个软件系统,不同的自动化测试脚本共用一个控件仓库;当出现控件无法识别的情况,使用坐标的方式进行识别;

(1.2)逻辑分析仪、加固信号功能以及管脚的配置在生成网表之后进行,时序的配置在装箱、布局、布线之后进行配置;对于一些配置项的下拉列表或者复选框的选值,进行用户代码USER CODE随机生成;利用USER CODE直接调用底层校验CHECK脚本对每个电路的底层进行校验;

(1.3)根据实际业务需求,对所需要用到的变量存放在EXCEL中,第一行存放变量名,第二行开始存放CASE的值,使用脚本获取这些CASE值;

(1.4)回放脚本,查看脚本没有问题,则进行自动化测试;执行后的结果文件包括界面部分和底层部分,界面部分是执行界面自动化之后对界面的一些断言的结果,底层部分是通过界面自动化调用了底层验证脚本生成的结果文件。

优选地,所述步骤(1.3)中,将数据驱动的数据关联到相应的自动化CASE中,并且与对应的参数绑定。

优选地,如图3所示,所述步骤(2)包括以下分步骤:

(2.1)进行综合时,如果生成网表文件,则执行步骤(2.2);如果没有生成网表文件,这个CASE执行结束,记录结果日志;

(2.2)在生成的网表文件中进行逻辑分析仪中观测信号及CLK信号的获取并执行自动配置,以及综合;

(2.3)进行综合配置,根据每个配置项的值,随机产生待配置的值;

(2.4)从网表文件中获取加固信号,根据业务需求,加固信号不超过6个,代码控件配置次数随机产生6以内的整数进行配置;

(2.5)判断带上逻辑分析仪后是否综合成功,如果成功,则执行步骤(2.6);如果失败,则这个CASE执行结束,记录结果日志;

(2.6)通过代码获取器件的管脚号,配置管脚,每个信号不配置重复的管脚;对于寄存器的开或者关,进行随机分配,再进行装箱布局布线,如果布线成功,则执行步骤(2.7),否则这个CASE执行结束,记录结果日志;

(2.7)配置时序约束时,根据不同的约束,从底层文件中获取Net、Pins或者Ports进行配置,再进行装箱布局布线,并且判断是否布线成功,成功则记录执行成功,否则这个CASE执行结束,记录结果日志;

(2.8)进行后台脚本校验,通过USER CODE将PATH及PROJECT NAME写入存储文件中,调用PYTHON脚本进行验证各种底层文件的验证。

优选地,所述步骤(2.6)中,PLL(Phase Locked Loop,锁相环)的CLK指定到特定管脚上。

优选地,所述步骤(2.7)中,进行CREATE_CLOCK约束时,获取的源SOURCE为CLK,PERIOD、RISING及FALLING通过系统随机生成合理的值。

优选地,所述步骤(2)中,如果执行时间超过30分钟,则直接停止流程,并记录为超时TIMEOUT,进行下一个CASE的执行,TIMEOUT的CASE后续进行单独验证。

优选地,所述步骤(3)包括:验证了输出、输入及双端口的情况下,不同管脚配置的默认值是否正确;当输出或者输入及双端口,配置了某些I/O Standard时,该禁用掉的寄存器是否成功禁用,并且配置的信息写到底层配置文件中是否正确;执行全流程时,校验是否会导致配置信息清掉或者被覆盖掉。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是:ROM/RAM、磁碟、光盘、存储卡等。因此,与本发明的方法相对应的,本发明还同时包括一种支持EDA软件的自动化测试并记录的系统,该系统通常以与方法各步骤相对应的功能模块的形式表示。该系统包括:

自动化设计模块,其配置来进行自动化设计,将EDA软件上的控件进行录制,并且按照FPGA的工作流程梳理执行步骤,首先生成数据驱动文件,先将所需的变量放在第一行每个单元内,这些单元存放路径、顶层实体、源verilog、mif、hex文件的存放路径以及配置参数,下面每一行代表一个电路CASE,根据上述的驱动变量存放数据,然后通过将自动化中所用到的变量与数据驱动文件中的第一行的变量进行绑定来获取下面每一行的数据不同的参数,再进行全流程的执行;

系统全流程的验证设计模块,其配置来进行系统全流程的验证设计,流程步骤包括:创建电路工程、配置综合设置、生成网表文件、创建逻辑分析仪、添加信号加固、管脚配置、设置时序约束、进行装箱、布局、布线,结果文件输出;

模块级自动化验证模块,其配置来进行EDA模块级自动化验证,对每个模块进行自动校验;

后台校验与自动化整合验证模块,其配置来进行后台校验与自动化整合验证:针对全流程已经执行完成后,对于后台的一些结果进行后台校验,使用C#直接调用执行后台验证脚本。

以下更详细地说明本发明。该方法包括以下方面:

1、自动化设计流程:

自动化设计的主要思路是将EDA软件上的控件进行录制,并且按照FPGA的工作流程梳理执行步骤,由于本发明不是为单个电路进行自动测试,所以首先需要将电路的存放路径、顶层实体、源verilog、mif、hex文件存放路径、配置参数存放到数据驱动文件中,然后通过获取每一行的数据获取不同的参数进行全流程的执行,此时应注意对于FPGA的EDA软件,不同的电路会出现不同的结果,例如生成网表之后会进行逻辑分析仪的配置,如果有些电路网表未生成,则直接终止后面的步骤,直接跑下一条CASE,所以需要添加USER CODE进行脚本控件流程步骤。工作示意图如图1所示。

工作流程分解说明如下:

1)进行控件的录制

EDA软件首要任务也是进行控件的录制,将控件存放在控件仓库中,这样对于同一个软件系统,不同的自动化测试脚本,可共用一个控件仓库,避免建多个重复的仓库。对于自动化工具,偶尔由于工具的局限性,会导致控件无法识别的情况,则能够使用坐标的方式进行识别。

2)增强脚本

EDA软件中的全流程过程涉及多个模块,模块之间有相互关联,逻辑分析仪、加固信号功能以及管脚的配置必须在生成网表之后进行,时序的配置必须在装箱、布局、布线之后进行配置。由于本发明需要进行大量,上千个或者上万个电路进行测试,需要将可能出现的逻辑情况都进行判断;同时对于一些配置项的下拉列表或者复选框的选值,能够进行USER CODE代码随机生成,避免每次执行这个CASE使用的是相同的参数,可以增加随机性。并且本发明中,利用USER CODE直接调用底层CHECK脚本对每个电路的底层进行校验。详细说明见2。

3)进行EXCEL数据驱动

根据实际业务需求,对所需要用到的变量存放在EXCEL中,第一行存放变量名,第二行开始存放CASE的值,由于这CASE有时候有上万个,并且变量很多,不可能一一自己填写,则需要使用脚本获取这些CASE值,比如通过BAT文件进行获取PATH,如下所示,获取该目录中以.v结尾的所有文件的路径存放进generate_path.txt文件中,脚本如下所示:

@echo off&setlocal EnableDelayedExpansion

for/f"delims="%%i in('"dir/a/s/b/on*.v"')do(

set file=%%~fi

set file=!file:/=/!

echo!file!>>generate_path.txt

)

生成的数据驱动文件如图2所示。

这里值得注意的是,必须要将数据驱动的数据,关联到相应的自动化CASE中,并且与对应的参数绑定才可使用,否则参数不绑定,无法获取到数据驱动里的变量,则会直接取设置的变量默认值。

4)回放脚本,执行自动化测试

回放脚本,查看脚本没有问题,则进行自动化测试。此处执行后的结果文件包括了界面部分和底层部分。界面部分主要是执行界面自动化之后,对界面的一些断言的结果,底层部分主要是通过界面自动化调用了底层验证脚本生成的结果文件。

2、EDA软件系统级全流程自动化验证:

对于FPGA的EDA软件,本发明进行了系统全流程的验证设计,流程步骤包括了创建电路工程、配置综合设置、生成网表文件、创建逻辑分析仪、添加信号加固、管脚配置、设置时序约束、进行装箱、布局、布线,结果文件输出。对于这种大规模电路验证的情况,需要针对软件的特性进行逻辑控件,具体的逻辑控件如下:

(1)进行综合时,如果生成网表文件,则进行(2)操作;如果没有生成网表文件,这个CASE执行结束,记录结果日志。

(2)在生成的网表文件中进行逻辑分析仪中观测信号及CLK信号的获取并执行自动配置,以及综合。

(3)进行综合配置,根据每个配置项的值,随机产生待配置的值,这样数据不易重复测试。

(4)从网表文件中获取加固信号,根据业务需求,加固信号不能超过6个,代码控件配置次数随机产生6以内的整数进行配置。

(5)判断带上逻辑分析仪后是否综合成功,如果成功,则进行(6)操作;如果失败,则这个CASE执行结束,记录结果日志。

(6)通过代码获取器件的管脚号,配置管脚,每个信号不允许配置重复的管脚。比较特殊的PLL的CLK需要指定到指定的管脚上,此时判断如果碰到PLL的情况,CLK指定到特殊管脚上,管脚配置还涉及到很多寄存器的ON或者OFF,进行随机分配,再进行装箱布局布线,如果布线成功,则执行后续(7)操作,否则这个CASE执行结束,记录结果日志。

(7)配置时序约束时,根据不同的约束,从底层文件中获取Net、Pins或者Ports进行配置,比如进行CREATE_CLOCK约束时,获取的SOURCE为CLK,PERIOD、RISING及FALLING通过系统随机生成合理的值,其他约束同理,再进行装箱布局布线,并且判断是否布线成功,成功则记录执行成功,否则这个CASE执行结束,记录结果日志

(8)进行后台脚本CHECK,通过USER CODE将PATH及PROJECT NAME写入存储文件中,调用PYTHON脚本进行验证各种底层文件的验证,这样对于每个电路都能做到尽可能多的校验。

本发明中,由于有些电路过大,需要跑好几个小时,这样会阻碍其他电路的测试执行效率,经过分析判断,大部分电路会在30分钟之内执行结束,所以此处进行了判断,如果执行时间超过30分钟,则直接STOP流程,并记录为TIMEOUT,进行下一个CASE的执行,TIMEOUT的CASE后续进行单独验证。

系统流程如图3所示。

3、EDA模块级自动化验证

模块级自动化是将每个模块的手动校验尽可能写成自动化进行自动校验,自动化工具的使用流程同上述1。与系统全流程自动化不同的是,全流程执行的是电路的整体流程执行,验证是否有问题,而模块级自动化的颗粒更加细。本发明中为管脚配置添加了模块级自动化,大概涉及以下几点:

(1)验证了输出、输入及双端口的情况下,不同管脚配置的默认值是否正确;

(2)当输出或者输入及双端口,配置了某些I/O Standard时,该禁用掉的寄存器是否成功禁用,并且配置的信息写到底层配置文件中是否正确;

(3)执行全流程时,CHECK是否会导致配置信息清掉或者被覆盖掉。

通过这些模块级自动化的验证及系统全流程的自动化验证,可以快速验证某个软件版本是否存在严重BUG,可以进行快速自查。

4、后台校验与自动化整合验证

后台校验主要针对全流程已经执行完成后,对于后台的一些结果进行后台校验,使用C#直接调用执行后台验证脚本即可,这样能够同时将这个电路的界面及后台问题都尽可能多的找出来,测试覆盖率会更全面。

本发明对于FPGA的EDA软件,能够尽早并且充分的进行测试,通过上万个不同电路的全流程测试,随机的配置,每轮测试都会有不同的配置信息,做到不同的电路,每次执行时的配置项都不同,从而最大限度的找出软件中存在的问题。这对于测试人员来说,大大提高了软件的测试效率,节约了测试时间。对于结果文件的汇总日志,测试人员能够清晰的看到执行每个CASE的结果,以及错误原因,对于每个软件版本的冒烟测试,有着极高的效率。

以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种非线性功放的高性能数字预失真方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类