用于系统设计验证的装置和方法与流程

文档序号:11829448阅读:385来源:国知局
用于系统设计验证的装置和方法与流程

本发明一般涉及通过软件模拟进行的系统设计的测试,且更具体地,涉及一种结合由脚本语言和建模语言生成的激励源的验证过程。



背景技术:

集成电路发展一般包括设计阶段和用于确定设计是否如预期地工作的验证阶段。验证阶段通常利用软件模拟器(或测试平台),其功能包括接收用硬件描述语言(诸如SystemVerilog)写成的软件,所述硬件描述语言建立电路设计的模型。该模型被用于模拟该设计对通过测试用例(test case)施加的激励源的响应。观察结果并将结果用于调试设计。测试用例一般是一组测试条件,并且以已知的输入和期望的输出为特征。最耗时的部分是创建测试,并且然后在设计改变时修正创建的测试。SystemVerilog是目前普遍用于测试平台和测试用例的语言。脚本语言(诸如工具命令语言TCL)和/或建模语言对于测试用例的仿真可以是有用的。

因此,能够将已经通过脚本语言编码的验证组件结合到SystemVerilog测试平台中是有利的。

附图说明

本发明及其目的和优点可结合附图通过参考下面对优选实施例的描述被最好地理解,所述附图中:

图1是根据本发明一个实施例的系统验证装置的简化原理方框图;

图2是例示了图1的系统验证装置运行方法的一个示例的简化流程图;以及

图3是例示了根据本发明的实施例的系统验证装置中的信号和数据的流程的简化流程图。

具体实施方式

下面结合附图阐述的详细说明旨在作为对本发明的目前优选实施例的描述,并且不旨在代表可以实施本发明的唯一形式。可以理解的是旨在被包含在本发明的精神和范围内的不同的实施例可完成相同或等同的功能。在附图中,自始至终相同的数字被用于指示相同的要素。而且,术语“包括”、“包含”或者其任何其它变形都旨在覆盖非排他性的包括,使得包括一系列要素或步骤的模块、电路、设备组件、结构和方法步骤不仅仅包括那些要素,还可以包括其他未明确地列出的或固有地存在于这些模块、电路、设备组件或步骤中的要素或步骤。通过“包括...”进而述及的要素或步骤,在没有其他限制的情况下,不排除包括所述要素或步骤的另外的相同的要素或步骤的存在。

在一个实施例中,本发明提供了一种用于系统设计验证的装置。该装置包括:用于用脚本语言编译的包括至少一个激励源的测试用例的测试用例模块;包括待测试设计(DUT)且用硬件描述语言(HDL)运行的测试平台;以及基于编程语言′C′的、连接在该测试用例模块和该测试平台之间的、用于联系施加到该DUT的激励源的接口。

在另一个实施例中,本发明提供一种用于系统设计验证的方法。该方法包括:用脚本语言编译的包括至少一个激励源的测试用例;将该激励源施加到包括DUT的且通过基于′C′的接口用HDL运行的测试平台。

有利地,本发明容许使用诸如TCL脚本、Matlab和LabView语言来为基于SystemVerilog的测试平台提供激励源。在一个实施例中,′C′命令进程被用于调用TCL、Matlab或LabView激励源。进一步的优点是,简化了测试平台结构编译分区并且节省了编译时间,使得模拟更加高效并可重复使用。在一个实施例中,在一个中间阶段使用C编程语言允许SystemVerilog测试平台使用脚本语言和建模语言激励源,以便在仅完成一次编译的情况下运行模拟。本发明还可以被用于仿真测试,其中前端测试平台可以被重复使用并且节省编译时间以用于不同的测试用例。

现在参考图1,示出了系统验证装置100的简化原理方框图。该系统验证装置100包括激励源发生器101和SystemVerilog测试平台102。SystemVerilog测试平台包括待测试设计(DUT)。生成的激励源被施加到该DUT并通过与期望的响应比较来分析响应。例如,该DUT通常是逻辑设计的软件模型。该 SystemVerilog测试平台102响应于来自激励源发生器101的测试激励源,模拟对应于软件模型的硬件设备的行为。该SystemVerilog测试平台102使用硬件描述语言(HDL)运行,在这个示例中是SystemVerilog。

由测试平台100执行的典型的测试进程具有两个部分,即编译部分和模拟部分。在编译流程中,DUT被编译成一个或多个内部库。在模拟流程中,基于该编译结果通过SystemVerilog测试平台运行模拟。

更详细地参考激励源发生器101,Matlab模块103将Matlab代码编译成作为测试用例和测试数据的第一′C′库104。这包括脚本命令和脚本形式的激励源。该第一′C′库104还包括一个C到API(应用程序接口)的接口函数。被编译成′C′库的Matlab参考模型不能直接被用作激励源,因此该′C′库-API接口的能力将激励源概括并设置成标准任务或方法以被随后的阶段处理。这些标准任务可包括详细的激励源配置信息。第一DPI-′C′模块105被连接到该第一′C′库104并执行直接编程接口到下一阶段。该′C′方法在SystemVerilog测试平台中不能被直接调用,但是通过直接编程接口,′C′方法能够被映射到SystemVerilog。类似的,SystemVerilog也能被映射到′C′。

提供LabView模块106用于将LabView代码编译成第二′C′库107。在这个示例中,第二C库107是现场可编程门阵列(FPGA)。该第二′C′库107被连接到第二DPI-′C′模块108。该第二DPI-′C′模块108执行与第一DPI-′C′模块105执行的功能类似的功能。

TCL测试用例模块109编译激励源(用脚本语言)和测试用例(也用脚本语言)用于验证测试。测试用例包括所有用于控制整个激励源流的TCL命令。按下面所解释的方式,脚本测试用例用命令(诸如′trigger event触发事件′、′wait event等待事件′、′time delay时间延迟′以及′end of test测试结束′)控制在SystemVerilog测试平台102中的整个通信流。该TCL测试用例模块109被连接到TCL-′C′-DPI模块110。TCL文件不能直接通过DPI被SystemVerilog使用,因此,保存在TCL-′C′-DPI模块110中的′C′扩展名(或中间)文件被用于将脚本命令映射到DPI任务。该TCL-′C′-DPI模块110还包括垫圈(Gasket)SystemVerilog文件。该模块110有利于数据的通信和在TCL测试用例模块109和SystemVerilog测试平台102之间的反馈。凭借该TCL-′C′-DPI模块110,TCL测试用例能被转变成DPI任务。该第一和第二 DPI-′C′模块105、108和TCL-′C′-DPI模块110被连接到接口垫圈111。

垫圈111将TCL、Matlab和LabView信息转变成测试平台信息。有三个文件被该垫圈处理。TCL测试用例和′C′测试用例是顶级测试用例,其包括分别基于对TCL测试用例模块109以及Matlab和LabView模块103、106的编译的整个激励源流。垫圈111被配置成调用要么来自TCL进程要么来自库104、107的′C′任务的′generate transaction生成事务′、′delay special time延迟特定时间′、′trigger event′、′wait event′和′end_of_test′任务。该测试用例被包括所有TCL进程和′C′任务定义的扩展名′C′文件调动。这里最低级的文件被定义为′垫圈文件′,其用SystemVerilog语言定义了′put′事务、′get′事务、′trigger event′、′wait event′、′info_logger′和′end_of_test′。在扩展名′C′文件中,TCL进程和′C′任务每个通过DPI与一个SystemVerilog垫圈文件联系在一起。垫圈111的输出被反馈给SystemVerilog测试平台102。在SystemVerilog测试平台102处通过垫圈111接收到的SystemVerilog激励源将调动生成的TCL测试用例。该SystemVerilog测试平台102可以通过垫圈111发送数据和/或响应反馈给TCL测试用例模块109。

参照图2,在步骤201示出的流程图中,启动TCL测试用例并且该TCL测试用例模块109配置若干命令。

在步骤202,由TCL测试用例模块109生成的TCL命令通过垫圈111(TCL命令在此被转换成测试平台信息)被送到SystemVerilog测试平台102。

在步骤203,允许经过特定的时间段以便在仿真运行开始之前确保命令已经完成。

在步骤204,命令事件被TCL测试用例模块109触发,并在SystemVerilog测试平台102被接收。

在步骤205,等待命令被TCL测试用例模块109生成,并在SystemVerilog测试平台102被接收。

在步骤206,来自DUT的数据反馈从SystemVerilog测试平台102被发送到激励源发生器。这个数据反馈包括触发的事件和SystemVerilog测试平台结果。

在步骤207,如果所有命令还没有完成,过程转到步骤202,在步骤202中由TCL测试用例模块109发送另一个命令。

如果已经完成所有命令,那么在步骤208,在激励源发生器111中比较数据。从DUT接收的返回数据与TCL测试用例模块109中生成的TCL测试用例数据进行比较。在一个示例中,该比较在TCL测试用例模块109中完成。

在步骤209,过程结束。

图3例示了根据本发明一个实施例的系统验证装置中信号和数据的流程的示例。

在301的第一步中′初始化协议命令′中,在SystemVerilog测试平台中并且使用合适的协议,生成用于接收TCL事务的空SystemVerilog激励源。

接下来,在TCL测试用例中生成写入SystemVerilog事务。在这个步骤中,定义的TCL任务′send_wr_command′被垫圈111调用。使用′C′扩展名文件并且通过导出DPI-C,put_int指令被映射到该TCL任务′PUT′。因此,在302,写入命令被发送到SystemVerilog测试平台。

在303,从TCL测试用例发送延迟指令到SystemVerilog测试平台。这要求TCL_DELAY任务被(垫圈111)调用。通常,在脚本或建模语言中没有时间概念,因此在SystemVerilog中的垫圈111中定义delay_t任务。使用′C′扩展名文件并通过导出DPI-C,′delay_t′指令被映射到TCL任务′TCL_DELAY′。

在304,SystemVerilog测试平台等待触发事件的接收。在此期间,模拟程序停止。

在305,触发指令被TCL测试用例发送到SystemVerilog测试平台。这要求TCL_TRIGGER任务要被(垫圈111)调用。通常,在脚本或建模语言中没有事件概念,因此在SystemVerilog的垫圈111中定义′trigger_e′任务。使用′C′扩展名文件并且通过导出DPI-C,′trigger_e′指令被映射到TCL任务′TCL_TRIGGER′。

在306,一旦接收到触发指令,SystemVerilog测试平台从TCL测试用例接收数据并根据常规技术对其处理。SystemVerilog测试平台将来自TCL测试用例的事务数据放进初始化命令中。

在307,在SystemVerilog测试平台已经完成写入命令后,它触发事件′w_event′,事件′w_event′被发送到TCL测试用例。然后在SystemVerilog测试平台中的模拟过程被停止,直到接收到进一步的触发指令。

在308,一旦收到′w_event′,TCL_WAIT任务被垫圈调用。由于在脚本或建模语言中没有事件概念,在垫圈111中定义′wait_e′任务到等待事件′w_event′。使用′C′扩展名文件并通过导出DPI-C,′wait_e′被映射到′TCL_WAIT′。

在309,从TCL测试用例发送延迟指令到SystemVerilog测试平台(如在步骤303中)。这要求TCL_DELAY任务要被(垫圈111)调用。通常地,在脚本或建模语言中没有时间概念,因此在SystemVerilog中的垫圈111中定义delay_t任务。使用′C′扩展名文件并通过导出DPI-C,′delay_t′指令被映射到TCL任务′TCL_DELAY′。

接下来,在该TCL测试用例中生成读取SystemVerilog事务。在这步中,定义的TCL任务′send_wr_commond′被垫圈111调用。使用′C′扩展名文件并通过导出DPI-C,put_int指令被映射到TCL任务′PUT′。因此,在310,读取命令被发送到SystemVerilog测试平台。该步骤类似于步骤302,读取和写入命令之间的区别在读取_写入控制位。

在311,类似于步骤305的方式,TCL测试用例发送触发指令到SystemVerilog测试平台。这需要TCL_TRIGGER任务被(垫圈111)调用。通常地,在脚本或建模语言中没有事件概念,因此在SystemVerilog的垫圈111中定义′trigger_e′任务。使用′C′扩展名文件并通过导出DPI-C,′trigger_e′指令被映射到TCL任务′TCL_TRIGGER′。

在312,一旦接收到触发指令,该SystemVerilog测试平台接收来自TCL测试用例的数据并根据常规技术对其处理。

在313,在SystemVerilog测试平台完成读取命令后,该读取数据被赋到垫圈变量。

在314(在类似于步骤307的步骤中),SystemVerilog测试平台触发被发送到该TCL测试用例的事件′w_event′。

在315,(在类似于步骤308的步骤中),一旦接收到′w_event′,TCL_WAIT任务被垫圈调用。由于在脚本或建模语言中没有事件概念,在垫圈111中定义′wait_e′任务到等待事件′w_event′。使用′C′扩展名文件并通过导出DPI-C,′wait_e′被映射到′TCL_WAIT′。

在316,该TCL测试用例从垫圈获取读取数据。使用′C′扩展名文件并通 过导出DPI-C,′get_int′指令被映射到TCL任务′GET′。

在317,在TCL测试用例中,将读取数据与期望的数据比较。如果有其他要执行的命令,过程将回到步骤302。

在步骤318,测试用例指示′end of test′。由于在脚本或建模语言中没有事件概念,在SystemVerilog的垫圈中定义′end of test′任务,以触发事件′t_event′并启动′end_flag′。使用′C′扩展名文件并通过导出DPI-C,′end of test′被映射到TCL任务′TCL_ENDS′。

当测试结束时,并且SystemVerilog测试平台已经核查并确认已启动′end_flag′时,然后在319,SystemVerilog测试平台已经完成它的执行阶段并在320退出过程。

对本发明的优选实施例的说明已经以解释和说明为目的被呈现,而不是旨在穷举或将本发明限制于所公开的形式。本领域技术人员将会理解的是在不脱离其广泛的发明的概念前提下可以对上面描述的实施例做出改变。因此,可以理解的是该发明没有被限制于所公开的特定实施例,而是覆盖了如所附权利要求所限定的本发明的精神和范围内的变形。

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