发明内容
本发明提供一种验证高级微控制器总线接口的装置,适用于任何基于AMBA的系统级或模块级的验证,可提高整个芯片的设计验证效率。
本发明提供的一种验证高级微控制器总线接口的装置,包括:
参数生成单元,用于根据约束条件产生随机传输包(random transaction),该传输包中包含下述参数中至少之一:数据、地址、读写类型、突发长度,并发送所述随机传输包给传输单元;
传输单元(Transactor),用于所述随机传输包transaction的内容,生成出不同的命令,并发送给驱动单元Driver;
驱动单元,用于将所述不同命令转化成接口(interface)上的信号,通过相应的标准接口interface发送到验证对象(DUT);
检测单元,用于监测所述验证对象DUT总线的行为,并实时检查所述总线的协议的正确性;
功能覆盖率统计单元,用于接收所述传输单元和/或检测单元发送的传输包transaction,根据其内容进行总线行为的覆盖率统计,包括访问类型、地址空间、数据空间、突发类型中至少之一。
驱动单元Driver中维护有缓存(cache)模型,根据不同的ACE类型来获取/更新cache模型的状态,模拟一个真实高级一致性扩展接口ACE Master中的高速缓存cache行为,用于响应和/或发送监听snoop类型的访问。
驱动单元中设置有操作控制模块,用于控制将读写操作分开,并根据超发(outstanding)深度控制传输进程,若未达到预定的超发深度,则连续驱动地址;若达到预定的超发深度,则等待一个传输结束再发起下一次传输。
任何基于AMBA的系统级或模块级的验证环境都可以直接复用本发明提供的装置。在验证对象DUT的传输模块开发完成之前可以用本发明提供的VIP装置替代DUT的传输模块完成系统级验证。由于模块充分复用,很大程度上缩短了验证平台(Testbench)的开发周期,提高整个芯片的设计验证效率。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
系统芯片产商推出以高级微控制器总线架构(AMBA,Advanced MicrocontrollerBus Architecture)的高级一致性扩展接口(ACE,Advanced Coherency Extensions)为主要特色的新版AMBA接口与协议规格。要有效维持共享资源中本地缓存所储存数据的一致性,缓存的一致性是关键。AMBA 4ACE规格能在不同丛集的多核心处理器间达成系统等级的高速缓存一致性(包括多核心处理器与绘图处理器)。
AMBA 4ACE不但让极度复杂的异质系统单芯片设计达到高效节能的目标,也是专为行动、家用、网络与游戏等领域的次世代运算应用所设计。
AMBA 4ACE规格能确保系统层级的高速缓存一致性,使高效能多核心处理器得以管理更频繁的数据及缓存共享,以及更多的跨组件通讯,同时支持存取共享缓存及外部内存的额外处理引擎。由一套标准程序,用来管理高速缓存一致性、内存屏障以及虚拟内存,将可降低软件缓存的维护需求,节省处理器周期,并且减少外部内存之存取。
通过内存子系统导入内存屏障,使系统工程师能够完成最佳指令排序,必要时可提升系统效能。分布式虚拟内存的讯号处理,搭配最新推出的架构及处理器,可将内存虚拟化扩充至内存管理系统(MMU,Memory Management Unit),更能有效运用外部内存,同时让多重操作系统(OS)能够于适当的虚拟管理软件监控下分享硬件资源。
有鉴于此,本发明实施例提供一种验证高级微控制器总线接口的装置,如图1所示,该装置100包括:
参数生成单元10,用于根据约束条件产生随机传输包(random transaction),该传输包中包含下述参数中至少之一:数据、地址、读写类型、突发长度,并发送所述随机传输包给传输单元20;
传输单元20(Transactor),用于所述随机传输包transaction的内容,生成出不同的命令,并发送给驱动单元30(Driver);
驱动单元30,用于将所述不同命令转化成接口interface上的信号,通过相应的标准接口interface发送到验证对象DUT;
检测单元40,用于监测所述验证对象DUT总线的行为,并实时检查所述总线的协议的正确性;
功能覆盖率统计单元50,用于接收所述传输单元20和/或检测单元40发送的传输包transaction,根据其内容进行总线行为的覆盖率统计,包括访问类型、地址空间、数据空间、突发类型中至少之一。
随机传输包中还包括下述参数至少之一:
读写ID、数据包大小、锁定类型、响应类型。
在所述随机传输包中设置有监听snoop read类型、snoop write类型或/和domain域类型元素。
传输单元20Transactor采用回调(callback)机制,根据用户需要,注入一些错误的元素到所述随机传输包transaction,以检查验证对象DUT在不合法激励下的响应。
驱动单元30(Driver)中维护高速缓存(cache)模型,根据不同的ACE类型来获取/更新cache模型的状态,模拟一个真实高级一致性扩展接口ACE Master中的高速缓存cache行为,用于响应和/或发送监听snoop类型的访问。
驱动单元30中设置有操作控制模块,用于控制将读写操作分开,并根据超发(outstanding)深度控制传输进程,若未达到预定的超发深度,则连续驱动地址;若达到预定的超发深度,则等待一个传输结束再发起下一次传输。
为了使本发明的原理、特性和优点根据清楚,下面结合具体实施方案对本发明进行详细描述。
图1所示为一个AMBA VIP module的基本结构,分为四个层次,场景(scenario)、功能(function)、命令(command)、信号(signal),这符合经典的system verilog的层次结构。
参照图1,其中参数生成单元10(Generator)可以根据约束条件(constraint)产生random transaction,其中包括数据、地址、读写类型、突发长度等各类元素;通过mail box传递到Transactor。
信箱(Mailbox)是system verilog语言中定义的一种通信机制,用于transaction(传输单元)之间的通信。Mailbox本身也是system verilog的关键字,它的实现方式类似于数据源端和收端之间的一个FIFO,FIFO中填充的数据是transaction(传输包)。
当然还存在其他的传输通信方式,例如TLM。但这些方式都是语言/标准定义好的。
Transactor是function level的模块,它根据随机产生的transaction内容,生成出不同的命令,继续通过mailbox发送到Driver。Driver是command level的模块,也是VIP中最复杂的一部分,它负责把不同命令转化成interface上的信号,通过system verilog的标准的interface发送到DUT。
检测单元包括监测模块Monitor和检查模块Checker,它们组成了AMBAVIP的检查机制,观测验证对象DUT总线的行为,监测模块Monitor实时检查AMBA总线的协议的正确性,如果有signal level的错误产生可以报告出来,也可以立即停止仿真。Checker完成了signal level到function level的转换,用户也可以自定义一些检查方式在Checker内部。监测模块Monitor和验证对象DUT之间依靠Interface通信,Monitor和Checker之间依靠mailbox通信。AMBAVIP这套检查机制可以被独立的使能,检查一个真实的Master/Slave的总线行为。功能覆盖统计单元Function Coverage模块针对AMBA协议定义了覆盖组coverage group,从而保证验证的覆盖率。
coverage group(覆盖组)是system verilog语言的概念,也是关键字。简单说来,一个覆盖组包含多个覆盖点,一个覆盖点包含多个覆盖仓。工作流程简要说明如下,Function Coverage模块定义了两个覆盖组,一边接收transactor发送的transaction,根据其内容做总线行为的覆盖率统计,包括访问类型/地址空间/数据空间/突发类型等等;同时也可以接受checker发送的transaction,不但能统计transactor发送的总线行为的覆盖率,而且统计总线上随机访问/响应的时序(timing)信息。当VIP的generator和transactor都工作时,是主动模式,两路coverage都在统计;当VIP的generator和transactor都不工作时,仅有monitor和checker工作,是被动模式,只收集checker这一路的coverage。
Checker根据AMBA总线信号,生成新的transaction,这个transaction的内容和generator生成的基本一致,只是增加一些总线的timing信息,用于覆盖率收集。
自定义检查方式就比较多样化,例如可以和generator发出的transaction做数据/地址对比。
高级一致性扩展接口ACE是AMBA 4新引入的总线标准,它的复杂度在于保证系统级芯片(SoC,System on Chip也称片上系统)多个master之间缓存一致性,SoC是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。那么以ACE Master为例,简要说明一下用于验证的IP(VIP,Verification Intellectual Property)实现方式。参数生成单元Generator是根据约束条件constraint产生随机传输包random transaction,该传输包transaction中不仅包括数据、地址、读写类型、突发类型、突发长度、读写ID、数据包大小、锁定类型、响应类型;而且定义snoop read类型、snoop write类型、domain类型等各类元素;传输单元Transactor包括一套回调(callback)机制,可以根据用户需要,明确的注入一些错误的元素到transaction,从而检查验证对象DUT在不合法激励下的响应。回调Callback机制是system verilog语言建议使用的一种任务调用机制,它的基本思路是在底层的对象中定义一个任务的接口,不做任务的实现,而在顶层对象中可以针对不同的场景修改这个任务的内容。这样的好处是维护的代码相对较少。
Cache模型在初始化和和仿真过程中都留下了callback接口,针对不同的场景重新实现这个接口任务就可以修改Cache模型中数值。这也是System Verilog的一种常用方式。
ACE masterVIP的Driver中维护了一套高速缓存(cache)模型,模拟一个真实ACEMaster中的cache行为,用于响应/发送snoop类型的访问。Cache模型是ACE VIP实现Cache一致性的关键技术。Cache模型的一些物理参数可以在初始化的时候设定,包括缓存空间大小、每个cache line的大小、cache way(路)的个数。两个基本函数维护cache的状态:get_cache_state(addr)和set_cache_state(line_idx,state)。Driver根据不同的ACE类型来获取/更新cache模型的状态。Cache模型的初始状态可以通过函数设定,也可以在仿真过程中通过callback的方式改变,从而进一步提高验证的覆盖率。
ACE/AXI与之前的AMBA总线相比增加了超前传输(outstanding transaction)的功能,也称为“超发”,它可以在前一次传输完成之前发起后面的传输,从而大大提高了整个系统的效率。所以本发明提供的验证装置VIP可实现对超前传输outstanding的支持,如图2所示:
在超前传输Outstanding模式下,基本的工作模式如下:
1.读写独立的驱动单元driver内设置有操作控制模块,将读写操作分开,驱动单元driver通过读写的队列从transactor分别获取读写的transaction。
2.Driver维护get_and_put任务,一边获取transaction,一边根据读写类型吧transaction分配到独立的队列中去。
3.Driver维护Write_drive任务,从写队列中获取transaction,根据其内容驱动地址、数据、响应信号。
a)如果没有达到超发outstanding深度,Driver会连续的驱动地址,不必等待传输结束。
b)如果已经达到超发outstanding深度,Driver会等待一个传输结束再发起下一次传输。
c)Write_data和write_response不会阻塞控制循环,以fork-join_none的方式管理。
d)对于单独的循环进程,必须保证响应发生。
Driver同时维护读驱动Read_drive任务,它根据read transaction驱动地址,获取从设备的数据。基本的循环管理方式与写驱动Write_drive相同,读地址read_address被超发outstanding深度阻塞,读数据read_data不会阻塞循环。
如图3所示,示范性地说明了一个集成AMBA VIP的完整SoC验证环境,虚线内部的白色模块都可以看作DUT的组成部分,VIP和测试用例Testcase是VIP相关的验证部分。本例子中集成了ACE Master,ACE-Lite Master,AXI monitor,ACE slave等VIP,以及高级高性能总线(AHB,Advanced High-performance Bus)和高级外设总线(APB,AdvancedPeripheral Bus)。通过interface和master通信。测试用例Testcase通过system verilogprogram的方式实现,通过修改transaction的constraint可以产生不同的random激励。
综上所述,任何基于AMBA的系统级或模块级的验证环境都可以直接复用本发明提供的装置。在验证对象DUT的传输模块开发完成之前可以用本发明提供的VIP装置替代DUT的传输模块完成系统级验证。由于模块充分复用,很大程度上缩短了验证平台Testbench的开发周期,提高整个芯片的设计验证效率。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。