要想正确领会工程师在基于AMBA 3 AXI协议的设计中所面临的设计挑战复杂性,必须首先了解AMBA 3 AXI协议自身的技术特点。AMBA 3 AXI协议由30多家公司协作开发,用于满足下一代设计的需要。AMBA 3 AXI协议定义了一个单向的通道架构,能够有效地使用寄存器分段实现更高速度的管道连接。凭借对多事务处理和乱序事务处理的支持,再加上对读、写和地址/控制通道的有效利用,它能使系统获得更高的性能和效率,系统性能仅受限于其外围设备的自身性能。
AMBA 3 AXI协议:
通道能力
通道概念的引入使AMBA 3 AXI架构与以前的AMBA协议有很大的不同。5个独立通道的每一个都由一组信息信号组成,并使用双向VALID和READY握手机制。信息源使用VALID信号表明通道上的数据和控制信息何时有效,目的端使用READY信号表明何时能够接收数据。读数据通道和写数据通道都包含一个LAST信号,以显示事务处理中最后一个数据项的传递何时发生。每一个读事物处理和写事物处理都有自己的地址通道,地址通道中包含了事物处理所需的所有地址和控制信息。读数据通道传送读数据和任何由从设备返回到主设备的读响应信息,其数据总线宽度可以是8位~1024位,读响应信息表明读事物处理的完成状态。写数据通道传送主设备到从设备的写数据,其数据总线宽度可以是8位~1024位。写数据通道还包括1个字节的狭窄通道,对每8个数据位进行过滤,表明数据总线上哪些字节是有效的。对独立数据传送的支持使总线得到了更有效的使用,能获得更高的性能、更低的时延和增强的带宽操作。
针对AMBA 3 AXI的DesignWare IP 解决方案
基于AMBA 3 AXI协议的复杂性,设计和验证一个基于该标准的子系统变成一项主要工作,并需要大量的专门技术。通过提供给工程师公共的设计和验证IP模块,实现从模块级到子系统级的快速实现和确认,针对AMBA 3 AXI的DesignWare IP 解决方案使设计变得轻松。另外,coreAssembler 工具可实现子系统的自动装配,并自动产生测试平台架构。当使用DesignWare IP 解决方案时,设计者能够快速装配、综合和验证基于AMBA 3 AXI的设计。
DesignWare综合IP
DesignWare的综合IP是三部分解决方案中的第一部分,它实现了基于AMBA 3 AXI协议的高带宽、低时延和高性能设计的快速应用。综合IP包括3个关键的组件:互连总线结构、AXI到AHB子桥、主/从通用接口模块。这些组件是任何SoC新设计的基本构造模块,并能使设计者轻松实现基于AMBA 3 AXI协议的体系架构。这些IP组件也有助于将现有IP和特定应用模块转换至AMBA 3 AXI架构,因此确保了更高的资源重用性。
DesignWare互连架构(DW_axi)是基于AMBA 3 AXI 协议设计中标准互连架构的最佳解决方案。DW_axi的配置灵活性提供给工程师一组功能集合,以满足他们具有优先级的设计需求。DW_axi是一个AMBA 3 AXI协议的RTL互连实现,在那里不同的主、从设备之间会发生同时的数据传输。组件可以被配置成支持高达16个主设备和从设备,它们都支持所有指定了地址和数据宽度的协议。DW_axi基于一个多地址、多数据的总线架构,并带有一个可选的内建系统解码器。每一个事物处理在地址通道上都有地址和控制信息,以描述数据被传送的特性。数据在主设备和从设备之间传送,可通过写数据通道传送至从设备,或通过读数据通道传送至主设备。在写事物处理中,AMBA 3 AXI协议有一个额外的写响应通道,允许从设备给主设备发信号表明写事物处理已完成。这种多层互连的体系结构允许在所有5个AMBA 3 AXI通道的不同主、从设备对之间进行并行数据传输。因此,系统带宽不受DW_axi的限制,而是受限于外部的主、从设备。
除了提供组合的内建地址和数据通道控制外,DW_axi通过提供内部和外部的流水线操作功能,即所谓的寄存器分段,还实现了增强和优化的工作频率、带宽和性能。可配置的内部和外部寄存器分段能被应用到全路径或只是前向控制路径的单独通道,提供对定时选择的最大灵活性,并产生最佳的性能。为了优化DW_axi以达到最佳的性能同时还保证最小的面积,DW_axi中包括了从设备可见功能,当不是所有的子设备对所有主设备都可见的时候予以使用。它定制了正常模式和启动模式下主设备访问每一个子设备的可见性,从而减少了仲裁逻辑的复杂性,能够用最少的逻辑达到最佳的性能。
图1 使用DesignWare验证IP创建一个子系统验证环境
为了实现AMBA 3 AXI协议与现有AMBA 2.0技术的互操作能力,DesignWare IP 解决方案包括一个AMBA 3 AXI到AMBA 2.0 AHB 的桥接(DW_axi_x2h)。DW_axi_x2h可支持同基于AMBA 2.0 AHB子系统的连接,提供对现有基于AHB子系统的可重用支持。 在Lite模式下,独立的从设备组件能够直接连接到基于AMBA 3 AXI协议的总线上。这种互操作能力的优势是,工程师可以访问大量针对AMBA 2.0 AHB和APB 协议、已经过硅验证的现有DesignWare综合和验证IP 。这增加了模块重用的机会,使工程师可以效力于开发具有差异性的新型子系统,而不必在创建和确认普通子系统上花费过多时间。DesignWare综合IP解决方案还包括其它普通的基于AMBA 2.0 的设计模块,比如AHB总线架构、DW_ahb、APB桥、APB结构、DW-apb,以及很多外围模块如DMA、内存控制器、I2C、SSI、GPIO 、RTC 、定时器和中断控制器。
另外一组可重用架构组件是DesignWare的通用主/从接口模块DW_axi_gm/gs。DW_axi_gm/gs使用通用接口,降低了把定制IP或特定应用移植到基于AMBA 3 AXI协议总线时的复杂度。当把定制应用或定制IP连接到基于AMBA 3 AXI协议的总线上时,工程师不必担心协议的细节,因为DW_axi/gs模块可以处理AMBA 3 AXI的大部分接口细节。使用通用接口模块,工程师能够有更多时间关注连接到AMBA 3 AXI总线后用户应用的验证检查工作。
DesignWare验证IP
快速实现基于AMBA 3 AXI协议设计的DesignWare IP解决方案的第二部分是针对AMBA 3 AXI的Synopsys DesignWare验证IP(VIP),它提供了一种快速并有效地验证基于AMBA 3 AXI 的SoC设计的方法。针对AMBA 3 AXI的DesignWare验证IP包括以下的组件:主设备、从设备、监视器和验证互连。每一个组件都支持所有的AMBA 3 AXI地址和数据宽度,以及所有的协议转换和响应类型。主/从设备验证IP用来产生事务处理,并对事物处理作出响应。验证互连实现了一个全互连功能子系统的创建,可以对多模块交互的模块级集成进行测试。验证IP包括一个全功能的命令集,可实现直接的事务处理和基于命令的测试。验证IP能够快速清除互连错误、功能错误,并完成很多边界情况的测试。
图2 DesignWare验证IP的系统级验证
验证IP已经获得了AMBA 3 的标识认证,这说明DesignWare验证IP已被证明正确实现了AMBA 3 AXI的相关规范,该规范的定义来自ARM基于声明的AXI协议规则集合。当在模块级使用验证IP时,模块接口将被测试以证明其符合AMBA 3 AXI协议规范,这使得从模块级到最终子系统的集成工作变得轻松。DesignWare验证IP也可以用在子系统级,测试主/从模块的交互,同时创建真实的应用数据流量。这时,得到了AMBA 3 认证的DesignWare验证IP可确保AMBA 3 AXI协议规范没有被违犯。
DesignWare的验证IP和参考验证方法学
DesignWare验证IP支持一个可重用分层的、覆盖驱动的、受约束的随机验证方法学,用来快速产生数以千计的事物处理。
受约束的随机验证产生由Synopsys参考验证方法学(RVM)定义。该方法学定义了一个强有力的方法用来自动产生事物处理,实现最大数目的协议组合。对于大型的复杂设计,受约束随机的、覆盖驱动的方法学与传统的直接测试方法学相比提供了更高的生产力和质量验证。在直接测试方法中,工程师编写独立的测试向量来验证特定的设计功能。这种处理方法非常耗费时间,特别是对有大量关联功能的复杂设计。
在受约束的随机、覆盖驱动方法中,工程师编写由高级约束描述的真实输入。先进的验证工具和验证IP将使用这些约束自动产生几千种测试向量对设计进行验证。功能覆盖用来指导验证和测量的过程。结果是验证质量目标能够更容易地在投片前得到满足,甚至对大多数复杂设计也是如此。用来实现受约束随机验证环境的参考验证方法学建立在一个可重用的基础架构之上,它使得在一个模块级的测试可以在模块级、子系统级,甚至跨越多项目进行重用。RVM驱动的验证IP意味着设计工程师仅需编写最少量的测试向量,然后依次产生几千种测试向量,全面地将实际的总线流量加载到模块或子系统中。Synopsys 基于RVM的环境提供了一个对所有验证组件的统一接口,因此更容易理解并能够快速地跨越其它项目被重用。
要加速基于AMBA 3 AXI协议的系统验证,DesignWare验证IP应当被用来验证单独的组件接口,并在子系统使用,最后在全系统级使用。在模块级,验证IP用来产生有效和精确的激励源测试AMBA 3 AXI接口应用。如果测试向量是按照RVM的规则编写的,那么在这一级创建的测试向量将能够在子系统级重新运行。
最初的基于AMBA 3 AXI 子系统的有效验证通过用DesignWare验证IP替换许多松散耦合的IP和设计模块来完成。这使得内部连接、事物处理和功能能够被快速验证,并创建了一组鲁棒性强的高覆盖率测试向量。DesignWare验证IP的主设备和从设备用来替代组件,主设备VIP用来创建直接的和受约束的随机验证事物处理。这种方法允许快速创建子系统激励源和响应,能够迅速清除任何设计内部的连接问题。DesignWare验证IP中的监视器用来检查AMBA规范的遵守情况,并提供与基于测试平台的评分表(Scoreboard)的直接连接(见图1)。
评分表本质上是一个测试平台代码模块,它能以自动且智能的方式跟踪事物处理、覆盖和数据流程。对于数据,它能够跟踪源数据,并将其与目的数据比较,针对被测试数据路径创建一个是否通过测试的标准。评分表直接与DesignWare验证IP监视器连接,使得所有的事物处理和覆盖数据能够被提取、捕获和验证。使用DesignWare验证IP监视器的好处之一是:当主设备和从设备的验证IP模块被删除,并用实际的系统级测试RTL替换时,相同的基于评分表的验证环境继续起作用。当监视器是被动组件时,能贯穿整个验证周期而被使用。
要进一步加速验证工作,声明IP也应当被包含到模块级和子系统级环境中,以便使用形式和混合形式验证工具,如Synopsys Magellan工具。验证IP和声明IP都应当被包含在验证环境中。验证IP监视器提供了先进的仿真功能,如支持跨端口的覆盖和评分表通知。因为ARM提供并定义了AMBA 3 协议声明IP作为可执行的规范,它可以用来作为参考。所有的DesignWare验证IP组件已经被ARM提供的声明IP验证,作为AMBA认证过程的一部分。另外,DesignWare验证IP监视器通过跟踪和登记每一个事物处理、提供覆盖信息、给出违反协议的错误和警告信息,从而帮助确定验证任务何时完成。
最后的验证步骤是全系统级验证(见图2)。在这个步骤中,应该包括针对松散耦合应用组件和IP的RTL验证。外部接口也必须被验证,其它的DesignWare验证IP此时也被使用,以减少系统级测试的工作。工程师能够使用DesignWare验证IP 的大量文件,它们被作为VCS验证库的一部分。DesignWare的库产品包括:PCI Express 、串行IO 、I2C、以太网、USB、USB-OTG和数以千计基于设备的内存模型。针对AMBA 3 AXI的DesignWare验证IP主设备仍然应被用于产生激励源,最初的子系统测试能够立刻被重新使用。其它的DesignWare验证IP也能够直接与评分表连接,提供一个闭环的智能验证平台。
验证工程师也想尽可能快速地对设计、测试平台、验证IP和声明IP进行仿真。使用Synopsys VCS仿真器能够完成高性能的仿真。VCS把全部的设计环境、设计、测试平台、验证IP和声明IP优化到单个的统一内核中。这种单个的被编译的内核删除了在传统仿真环境中出现的通信和同步开销,使设计者获得了5倍以上的仿真性能。对验证工程师来说,这意味着以前运行5天的回归验证,现在不到1天就可以完成。
带有coreAssembler工具的DesignWare IP
快速实现基于AMBA 3 AXI协议设计的DesignWare IP解决方案的第三部分是coreAssembler工具。当DesignWare库IP与coreAssembler工具一起使用时,工程师能在更短的时间内自动装配、仿真和综合基于AMBA的子系统。coreAssembler工具使得子系统设计创建以及AMBA 3 AXI和AMBA 2.0 AHB/APB组件的模块集成实现了自动化,它减少了花费在创建包含DesignWare IP的特定应用子系统的时间,允许设计者关注额外的产品测试或差异化工作。coreAssembler工具全面支持SPIRIT格式,因此,符合SPIRIT规范的第三方和用户定制的IP模块能够轻松地封装到集成的子系统中。
内嵌的、协议特定的集成技术使得coreAssembler工具能够自动地将IP模块相互连接或融合在一起,支持任何AMBA 3 AXI或AMBA 2.0的单个或多层的子系统配置,还包括AMBALite配置。例如,如果设计中包含了AMBA 3 AXI互连架构,以及AMBA 2 AHB 组件到AMBA 3 AXI的桥接,coreAssembler工具将能把两种AMBA 3 AXI接口自动地连接在一起。这种自动纠正的能力消除了布线错误的机会,所有的DesignWare库综合IP组件都封装了这种设计技术和一组缺省参数。因此,只需点击几下鼠标、下拉菜单选项,并确认几个子系统级配置参数的选项即可创建一个初始的子系统设计。
通过支持具有设计参数和系统级参数交叉传播功能的分层次设计方法, coreAssembler工具避免了多种IP配置丢失问题。比如地址和数据宽度参数能够在最高级锁定并能传播到较低级的IP模块中,以避免IP配置丢失。这种自动操作和内置的参数检查消除了IP配置错误的机会,缩短了子系统调试周期。
为了达到最佳的综合结果,coreAssembler工具能够自动运行综合工具,该工具包括物理编译器和设计编译器。工程师可以从多种综合方法学中选择,比如area_timeing 、timing_area 、ACS 和低功耗优化流程,也可以创建用户定义流程并将其包含在coreAssembler的自动化流程中。
为了减少首次仿真的时间,coreAssembler工具自动创建了一个验证基础架构,该架构包含了特别针对集成子系统的DesignWare验证IP。除了基础架构的创建,该工具也产生DesignWare验证IP对子系统进行ping测试的激励源。目前ping测试很简单,将数据写入一个IP组件寄存器中,然后读出来确保内容被正确写入。这似乎很容易做到,它实际上是很多子系统设计的第一个里程碑,在传统的子系统开发中,要花费几个星期的时间才能完成。使用DesignWare 库IP和coreAssembler流程,这种子系统ping 测试能够在大约几个小时内实现。
自动化流程也使得对以后项目发生改动时的处理变得非常容易。比如一个子系统设计为32位数据总线,首席设计师在最后时刻决定,为了完成目标性能需要改为64位的数据总线。在传统的设计流程中,工程师将不得不重新配置和修改很多RTL文件,花费很多的时间,并可能引入不正确的连接错误。在coreAssembler流程中,只需要对高层参数作简单的修改就能完成改变,然后将自动向下传播到更低层的模块中。新的RTL代码将和新的测试平台架构文件一起被自动重新创建。
结语
应用基于AMBA 3 AXI协议进行高性能SoC设计的最大障碍是综合IP和验证IP的可用性,以及在最短的时间里有效创建复杂体系结构的能力。DesignWare库和coreAssembler工具可以提供这样的解决方案。DesignWare基于AMBA 3 AXI和AMBA 2.0 AHB/APB协议的综合IP包含了针对大多数下一代子系统设计必需的构造模块。 DesignWare基于AMBA 3 AXI和AMBA 2.0 AHB/APB协议的验证IP足以应对复杂高性能子系统验证挑战的需求。最后,coreAssembler工具把综合和验证组件集成到一个自动化的流程中,使子系统设计的创建、仿真和综合达到最优化。DesignWare 针对AMBA的 IP 解决方案使得基于AMBA 3 AXI协议设计的实现变得轻松。