一种仿真验证系统的制作方法

文档序号:11919786阅读:232来源:国知局

本发明涉及芯片设计技术领域,特别是涉及一种仿真验证系统。



背景技术:

随着工艺技术领域的不断发展,芯片的应用越来越广泛。在芯片的设计过程中,对其进行功能性验证是一个必要的环节,并且,随着芯片的复杂度在不断提高,对芯片进行验证的验证平台所需要支持的监测和控制也越来越复杂。更重要的是,对于超大规模的芯片,不但需要将芯片本身的功能和性能与参考模型进行评估和对照,还需要将芯片与其外部的模型共同构建一个完整的系统进行仿真验证。

现有技术中,在对芯片进行仿真验证时采用的仿真验证系统为单纯的Verilog验证平台,Verilog验证平台是基于EDA仿真验证工具所提供的语言调用接口来调用相应的语言,以进一步实现对芯片的仿真验证。

但是,一方面,由于EDA仿真验证工具所提供的接口适用于对C/System C或者System Verilog的调用,无法对更高级的语言进行调用,所以,当某些芯片的某些功能需要调用更高级的语言来进行仿真验证时,现有技术中的仿真验证系统就不能满足需求,故,现有技术中的仿真测试系统适用范围较小、测试效率较低。

另一方面,由于现有技术中的仿真验证系统中的Verilog与调用语言之间的操作没有明星的区分,从而导致仿真验证结果不精确。

因此,如何提供一种解决上述技术问题的仿真验证系统成为本领域的技术人员需要解决的问题。



技术实现要素:

本发明的目的是提供一种仿真验证系统,在使用过程中适用范围较大,并且提高了测试效率,同时使测试结果更加精确。

为解决上述技术问题,本发明提供了一种仿真验证系统,所述系统包括:

Verilog验证模块,用于对与芯片相应的RTL代码进行实例化,得到并发送实例化过程中的第一状态信息;还用于接收System Verilog接口模块返回的时序控制信息以实现对所述芯片的仿真验证;

所述System Verilog接口模块,用于对所述第一状态信息进行处理得到并发送第二状态信息;还用于接收并发送System C模块返回的时序控制信息;

System C模块,用于提供多种语言模型,并依据所述第二状态信息及相应的语言模型得到并发送事务级的数据信息及语言调用指令;还用于依据高级语言模块返回的算法生成并发送相应的时序控制信息;所述语言模型依据与C++混合编程的语言编写而成;

所述高级语言模块,用于依据所述事务级的数据信息及所述语言调用指令得到相应的算法,并返回所述算法。

可选的,各个所述语言模型通过与其一一对应的接口添加至所述System C模块中。

可选的,所述System Verilog接口模块,还用于依据所述第一状态信息对所述Verilog验证模块的运行状态进行监测。

可选的,所述System Verilog接口模块,还用于判断所述时序控制信息是否合法,当所述时序控制信息合法时将所述时序控制信息返回至所述Verilog验证模块。

可选的,所述System Verilog接口模块与所述System C模块之间通过编程语言调用接口进行信息交互。

可选的,所述Verilog验证模块通过例化所述System Verilog接口模块与所述System Verilog接口模块进行连接。

可选的,所述编程语言调用接口由仿真工具提供。

可选的,如上述所述的仿真验证系统,所述C++混合编程的语言包括MATLAB语言或JAVA语言。

本发明提供了一种仿真验证系统,包括:Verilog验证模块,用于对与芯片相应的RTL代码进行实例化,得到并发送实例化过程中的第一状态信息;还用于接收SystemVerilog接口模块返回的时序控制信息以实现对芯片的仿真验证;SystemVerilog接口模块,用于对第一状态信息进行处理得到并发送第二状态信息;还用于接收并发送System C模块返回的时序控制信息;System C模块,用于提供多种语言模型,并依据第二状态信息及相应的语言模型得到并发送事务级的数据信息及语言调用指令;还用于依据高级语言模块返回的算法生成并发送相应的时序控制信息;语言模型依据与C++混合编程的语言编写而成;高级语言模块,用于依据事务级的数据信息及语言调用指令得到相应的算法,并返回算法。

本发明所提供的一种仿真验证系统由四层模块构成,在System C模块中可以添加多种的语言模型,并且这些语言模型是通过与C++混合编程的语言编写而成,可以用来调用更高级的语言,所以在一定程度上满足了对芯片的多种功能进行仿真验证的需求;并且调用语言最终也是由Verilog验证模块来执行,所以本发明可以很好的将Verilog与调用语言之间的控制和操作区分开。本发明的适用范围较大,并且提高了测试效率,同时使测试结果更加精确。

附图说明

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

图1为本发明提供的一种仿真验证系统的结构示意图。

具体实施方式

本发明提供了一种仿真验证系统,在使用过程中适用范围较大,并且提高了测试效率,同时使测试结果更加精确。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参照图1,图1为本发明提供的一种仿真验证系统的结构示意图。

该系统包括:

Verilog验证模块1,用于对与芯片相应的RTL代码进行实例化,得到并发送实例化过程中的第一状态信息;还用于接收System Verilog接口模块2返回的时序控制信息以实现对芯片的仿真验证;

System Verilog接口模块2,用于对第一状态信息进行处理得到并发送第二状态信息;还用于接收并发送System C模块3返回的时序控制信息;

SystemC模块3,用于提供多种语言模型,并依据第二状态信息及相应的语言模型得到并发送事务级的数据信息及语言调用指令;还用于依据高级语言模块4返回的算法生成并发送相应的时序控制信息;语言模型依据与C++混合编程的语言编写而成;

高级语言模块4,用于依据事务级的数据信息及语言调用指令得到相应的算法,并返回算法。

需要说明的是,本发明所提供的仿真验证系统是由四层平台搭建而成的,也就是本申请中所提供的四个模块,其中,Verilog验证模块1即为Verilog验证平台层,System Verilog接口模块2即为System Verilog接口层,System C模块3即为System C模型层,高级语言模块4即为高级语言模块4。从底层至上层依次是Verilog验证模块1、System Verilog接口模块2、System C模块3以及高级语言模块4,并且每个层次为其上一层次的控制和监控提供相对应的功能和调用接口。

Verilog验证模块1(Verilog验证平台层),主要是用于实现对与需要仿真验证的芯片相对应的RTL代码进行实例化,以及连线,还用于生成相应的时钟信号和复位信号,还提供一些对验证平台的基础控制功能,例如开始仿真、停止仿真、输入以及输出等功能,还为上层System Verilog接口模块2(System Verilog接口层)提供调用这些接口的功能。Verilog验证模块1在对RTL代码进行实例化的过程中获取实例化过程中的第一状态信息,该第一状态信息具体可以为被仿真的相应功能对应的底层信号级状态信息和数据信息,并将该第一状态信息发送至System Verilog接口模块2;System Verilog接口模块2对第一状态信息进行处理得到第二状态信息,具体的是将第一状态信息进行分组处理,并将分组后的信息和数据作为第二状态信息,并且还将第一状态信息的格式进行转换,转换成与System C模块3(即System C模型层)的接口格式相一致的通信信息(即第二状态信息),并将该第二状态信息发送至System C模块3,System C模块3提供多种的语言模型,接收到第二状态信息后依据第二状态信息找到与第二状态信息相应的语言模型,并将该第二状态信息进行处理转换成事物级的的数据信息(即更抽象的状态信息),还依据相应的语言模型生成相应的语言调用指令(由于语言模型是依据与C++混合编程的语言编写而成的,所有相应的语言调用指令可以通过C++调用高级语言生成的库,从而调用相应的算法),再将事物级的数据信息以及语言调用指令发送至高级语言模块4;高级语言模块4依据事物级的数据信息以及语言调用指令调取相应的算法(该算法具体为抽象的行为级描述动作),并将该算法发送至System C模块3;因为抽象的行为级描述动作对应的算法不涉及时序等电路信息,因此需要在System C模块3对该算法进行处理和转换,生成相应的时序控制信息,该使时序控制信息的格式与System Verilog接口模块2所提供的接口的格式相一致,并将该时序控制信息通过System Verilog接口模块2发送至Verilog验证模块1,从而使Verilog验证模块1通过相应的时序控制信息完成对相应的芯片的仿真测试。

需要说明的是,System Verilog接口模块2接收到时序控制信息后还需要将该时序控制信息转换成与底层实现相统一的控制信号和数据信息,以便底层(Verilog验证模块1)依据相应的控制信号对相应的芯片完成仿真测试。

还需要说明的是,System C模块3中提供有多种模型,并且不论需要调用怎样的语言模型都可以通过与其相应的接口进行调用。具体的,各个语言模型通过与其一一对应的接口添加至所述System C模块3中。

可选的,System Verilog接口模块2,还用于依据第一状态信息对Verilog验证模块1的运行状态进行监测。

需要说明的是,从底层至上层中的每个低层次均为其上一层次的控制和监控提供相对应的功能和调用接口。故,System Verilog接口模块2还可以依据第一状态信息对Verilog验证模块1的运行状态进行监测,通过第一状态信息可以判断Verilog验证模块1的运行状态的运行状态是否正常,当其运行状态异常时,还可以将具体的异常信息通过System C模块3发送至高级语言模块4,进一步使高级语言模块4对底层的Verilog验证模块1的运行状态做出相应的判断,如需对Verilog验证模块1的动作做相应的调整,则高级语言模块4会下达相应的控制指令并通过System C模块3以及System Verilog接口模块2将该控制指令发送至Verilog验证模块1,以便Verilog验证模块1对仿真测试过程中的相应动作做出调整。

可选的,System Verilog接口模块2,还用于判断时序控制信息是否合法,当时序控制信息合法时将时序控制信息返回至Verilog验证模块1。

当然,本申请中的System Verilog接口模块2还可以判断System C模块3返回的时序控制信息是否合法,当该时序控制信息合法时将该时序控制信息发送至至Verilog验证模块1;可见,当该时序控制信息不合法时,还可以向上层发送相应的指令以便重新发送相应的时序控制信息。

可选的,System Verilog接口模块2与System C模块3之间通过编程语言调用接口进行信息交互。

需要说明的是,本申请中的System Verilog接口模块2与System C模块3之间具体可以通过编程语言调用接口进行信息交互。该编程语言调用接口可以由仿真工具提供,也可以人工进行添加,具体的,本发明对此不做特殊的限定,能实现本发明的目的即可。

可选的,Verilog验证模块1通过例化System Verilog接口模块2与System Verilog接口模块2进行连接。

可选的,编程语言调用接口由仿真工具提供。

具体的,可以调用EDA工具提供的语言调用接口。

需要说明的是,本发明中所使用的各个接口需要保证相邻层次之间的数据和控制传输格式的一致性,从而避免因为分层的结构造成对数据和控制的理解不一致而引入错误。具体而言,对于Verilog验证模块1与System Verilog接口模块2,因为语言的兼容性,可以直接在Verilog验证模块1的testbench中例化System Verilog接口模块2,然后使这两个模块直接互连;而仿真工具提供的接口可以通过例化定义好的接口模块(或其他方式,各家仿真工具提供的方法不同)实现System C模块3与System Verilog接口模块2的互连,这种互连也是信号级的,但因为使用仿真工具提供的编程语言调用接口(无论是何种方式实现)可以很自然地进行一组一组地传输,而不用对位宽或是时序等电路级别的信息考虑太多(因为编程语言接口实际是不可综合成电路的软件代码),因此这部分接口的实现和定义可以更多地考虑到信号之间的逻辑关系,对其进行组合,并以一定规则进行传输;而对于System C模块3与高级语言模块4之间的接口,则可以完全采用行为级和事务级的方式进行传输,不用考虑时序或信号级的位信息(如果需要向下传输的话,这些时序等信息在System C模块3中进行添加)。

可选的,如上述的仿真验证系统,C++混合编程的语言包括MATLAB语言或JAVA语言。

当然,C++混合编程的语言不仅限于包括上述两种语言类型,还可以包括其他的语言类型,本发明最次不做特殊的限定,能实现本发明的目的即可。

本申请中相邻两层之间的接口要保证这相邻层次之间的数据信息和控制信息的传输格式一致。

另外,System Verilog接口模块2主要是实现对底层Verilog验证模块1是状态进行监测,实现为System C模块3提供带有监测功能的通信接口和控制接口。整个仿真验证系统的控制要在System Verilog接口模块2这一层具体实现(上层模块对Verilog验证模块1的控制通过接口调用System Verilog实现)。System C模块3与Verilog验证模块1的接口是通过与system Verilog代码相连实现的,并且System C模块3还提供了高级语言层相应算法语言的接口(如果算法复杂程度足够高)。

还需要说明的是,本发明提供了一种仿真测试系统,具体在实际应用中需要对芯片的哪种功能进行测试,还需要针对所测试的功能对相应的接口和语言模型进行具体的添加,本发明可以添加多种接口进一步可以添加多种语言模型。具体的,可以根据实际情况而定。

由上述可知,对于本申请中的控制和监测功能的调用功能则要维护一套完整的自底向上的对仿真验证过程的监测和控制机制,即所有上层的监测和控制功能,都能够通过调用其下层的功能来实现。也就是说,最后所有的监测和控制功能,最后都能统一的映射到最底层的Verilog验证模块1进行实现,而这些不同层级的监测和控制,彼此之间不会有影响和干扰,可以通过对底层功能的调试和设计,来发现和避免。

本发明提供了一种仿真验证系统,包括:Verilog验证模块,用于对与芯片相应的RTL代码进行实例化,得到并发送实例化过程中的第一状态信息;还用于接收System Verilog接口模块返回的时序控制信息以实现对芯片的仿真验证;System Verilog接口模块,用于对第一状态信息进行处理得到并发送第二状态信息;还用于接收并发送System C模块返回的时序控制信息;System C模块,用于提供多种语言模型,并依据第二状态信息及相应的语言模型得到并发送事务级的数据信息及语言调用指令;还用于依据高级语言模块返回的算法生成并发送相应的时序控制信息;语言模型依据与C++混合编程的语言编写而成;高级语言模块,用于依据事务级的数据信息及语言调用指令得到相应的算法,并返回算法。

本发明所提供的一种仿真验证系统由四层模块构成,在System C模块中可以添加多种的语言模型,并且这些语言模型是通过与C++混合编程的语言编写而成,可以用来调用更高级的语言,所以在一定程度上满足了对芯片的多种功能进行仿真验证的需求;并且调用语言最终也是由Verilog验证模块来执行,所以本发明可以很好的将Verilog与调用语言之间的控制和操作区分开。本发明的适用范围较大,并且提高了测试效率,同时使测试结果更加精确。

还需要说明的是,在本说明书中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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