用于芯片验证的方法及计算设备与流程-华体会hth·体育(中国)官方网站IOS/安卓/手机APP

文档序号:34131600发布日期:2023-12-02阅读:178来源:国知局


1.本发明涉及芯片验证技术领域,用于验证具体涉及一种用于芯片验证的芯片方法及计算设备



背景技术:

2.随着
5g、法及
物联网
、计算
人工智能等新兴技术的设备发展,芯片的流程应用场景越来越多样化,对芯片的用于验证性能

可靠性
、芯片
安全性等方面的法及要求也越来越高

随着芯片规模越来越大,计算集成度越来越高,设备片上集成系统(
system on chip soc
)已经广泛应用于芯片设计
。流程
芯片验证作为芯片设计和制造过程中的用于验证重要环节,芯片验证的芯片需求也在不断增加

3.在芯片制造技术的法及不断进步的今天,对于芯片验证提出了更加专业和全面的技能和知识上要求,以满足不同应用场景下对芯片的验证需求

芯片验证是指对芯片的功能

性能

可靠性等方面进行验证,以确保芯片符合设计要求并能够正常工作

验证通常包括功能验证

性能验证

可靠性验证

安全性验证等多个方面
。 功能验证是验证芯片的各个功能模块是否符合设计要求,其中芯片总线验证是芯片设计和制造过程中不可或缺的一环,对于确保芯片的性能和稳定性具有重要作用

4.芯片总线验证是指对芯片内部或芯片之间的总线进行验证,以确保总线的功能和性能符合设计要求

总线是芯片内部或芯片之间数据和控制信息传输的通道,对于芯片的性能和稳定性具有重要影响

5.随着芯片技术的不断发展和应用场景的不断扩展,芯片总线验证的需求也将不断增加,同时新的验证技术和工具的不断涌现也将推动芯片总线验证行业的发展

目前的总线通路验证,大多采用验证数据正确性的方法:向不同地址写入数据,再读出数据,对比读写数据的正确性;然后以此来间接验证连接关系的正确性

需要配合人工进行波形检查,确认连接关系的正确性

不仅需要双重验证,而且人工波形检测操作需要更多时间,而且难以全面覆盖

6.为此,需要一种技术方案,能够自动化检查总线访问路径是否正确,验证效率更高

灵活性更好,覆盖更全面



技术实现要素:

7.本发明旨在提供用于本发明旨在提供用于芯片验证的方法及计算设备,验证效率更高

8.根据本发明的一方面,提供一种用于芯片验证的方法,所述芯片包括主设备

从设备,所述主设备与所述从设备之间通过至少一级总线进行通信,所述方法包括:确定主设备端口

与所述主设备关联的从设备端口及所述主设备端口和所述从设备端口的总线协议格式;利用第一内嵌总线验证模块采样所述主设备端口侧总线,利用第二内嵌总线验证模块采样所述从设备端口侧总线;根据所述主设备端口和所述从设备端口的总线协议格式

以及所述主设备端口和
所述从设备端口之间的地址映射复杂度,对所述主设备端口与所述从设备端口之间的总线映射关系构建映射模型,从而所述第二内嵌总线验证模块根据建模的所述总线映射关系输出第二总线事务

9.根据一些实施例,根据所述主设备端口和所述从设备端口的总线协议格式构建映射模型,包括:若所述主设备端口与所述从设备端口有相同的总线协议格式,则在所述第二内嵌总线验证模块与所述第一内嵌总线验证模块之间使用协议关键信息映射来构建映射模型;若所述主设备端口与所述从设备端口分属不同的总线协议类型
, 则所述第二内嵌总线验证模块使用地址映射进行事务转换,从而构建映射模型,包括:判断所述主设备端口和所述从设备端口之间的地址映射复杂度;若所述地址映射为复杂地址映射,则利用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件进行总线互联映射,并且接管所述第一内嵌总线验证模块与所述第二内嵌总线验证模块的采样接口,从而构建映射模型

10.根据一些实施例,判断所述主设备端口和所述从设备端口之间的地址映射复杂度,包括:如果地址映射仅涉及单一方向的地址截位或者移位,且映射后的地址唯一,则所述地址映射属于简单地址映射;否则所述地址映射为复杂地址映射

11.根据一些实施例,所述方法还包括:若所述地址映射为简单地址映射,则使用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块中的函数实现映射建模,或采用与复杂地址映射相同的方式实现映射建模

12.根据一些实施例,利用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件进行总线互联映射,包括:修改接口组件的连接,将寄存器传输级地址信号和所述第一内嵌总线验证模块

所述第一内嵌总线验证模块的采样接口相连,通过连接的比特位移位

截位和
/
或补充常数位方式,实现地址映射建模

13.根据一些实施例,利用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件进行总线互联映射,包括:使用回调函数,在采样完成之后,进行比对之前,将数据进行对应映射改写;在地址重映射时,使用环境容器或回调函数处理

14.根据一些实施例,利用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件进行总线互联映射,包括:对于同一个存储空间多个从设备端口的情况,采用其中一个从设备端口作为主口,在环境容器中把数据复制给其他从设备端口的方式同步数据;和
/
或对于同一个存储空间多个从设备端口的情况,在环境容器中例化一个存储空间实例,将多个从设备端口的实例化句柄,指向所述存储空间实例来实现

15.根据本发明的另一发明,提供一种用于芯片验证的方法,所述芯片包括主设备

从设备,所述主设备与所述从设备之间通过至少一级总线进行通信,所述方法应用于利用前
述任一项所述的方法建模的映射模型,所述方法包括:根据测试用例对所述主设备发起第一操作;利用第一内嵌总线验证模块采样主设备端口侧总线,得到第一总线事务;利用第二内嵌总线验证模块采样从设备端口侧总线,根据所述映射模型输出第二总线事务;根据所述第一总线事务与所述第二总线事务的对比结果,自动化验证总线连接关系的正确性

16.根据一些实施例,多个第二内嵌总线验证模块分别对多个从设备端口侧总线采样,并根据所述映射模型分别输出多个第二总线事务的情况下,根据所述第一总线事务分别与所述多个第二总线事务的对比结果,自动化验证总线连接关系的正确性

17.根据本发明的另一方面,提供一种计算设备,包括:处理器;以及存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如上任一项所述的方法

18.根据本发明的另一方面,提供一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上任一项所述的方法

19.根据本发明实施例,在进行芯片验证时,确定主设备端口

与所述主设备关联的从设备端口及所述主设备端口和所述从设备端口的总线协议格式,利用第一内嵌总线验证模块采样主设备端口侧总线的第一总线事务,根据所述主设备端口和所述从设备端口的总线协议格式及所述主设备端口和所述从设备端口之间的地址映射复杂度,利用所述第二内嵌总线验证模块对总线映射关系进行建模,从而利用第二内嵌总线验证模块采样从设备端口侧总线并根据建模的所述总线映射关系输出第二总线事务,从而构建映射模型

通过实现对总线连接关系的映射建模,能够在
soc
所有用例中,自动化检查总线访问路径是否正确,自动化地直接验证总线连接关系的正确性,验证效率更高,覆盖更全面

根据本发明的实施例,通过对总线事务进行转化,对转化后的总线事务建立映射模型
,
在映射模型中进行自动对比,验证总线通路的正确性

通过应用内嵌验证模块及相关函数及组件,做到高效率的验证总线通路,相比于现行方案覆盖面更加全面,灵活性更好

20.根据示例实施例,使用内嵌总线验证模块来简化映射建模,同时通过外部扩展来实现定制化的映射关系,环境搭建简单,灵活性更好

另外,可针对定制化的部分进行扩展,可适配芯片专用

21.应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明

附图说明
22.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍

23.图1示出根据示例实施例用于芯片验证的方法流程图

24.图
2a
示出根据示例实施例用于芯片验证的方法采样方式流程图

25.图
2b
示出根据示例实施例用于芯片验证的方法采样方式示意图

26.图3示出根据示例实施例用于芯片验证的方法中应用复杂地址映射实现建模的方式示意图

27.图4示出根据示例性实施例的计算设备的框图

具体实施方式
28.现在将参考附图更全面地描述示例实施例

然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员

在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述

29.此外,所描述的特征

结构或特性可以以任何合适的方式结合在一个或更多实施例中

在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解

然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法

组元

装置

步骤等

在其它情况下,不详细示出或描述公知方法

装置

实现或者操作以避免模糊本发明的各方面

30.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应

即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和
/
或处理器装置和
/
或微控制器装置中实现这些功能实体

31.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作
/
步骤,也不是必须按所描述的顺序执行

例如,有的操作
/
步骤还可以分解,而有的操作
/
步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变

32.应理解,虽然本文中可能使用术语第一

第二

第三等来描述各种组件,但这些组件不应受这些术语限制

这些术语乃用以区分一组件与另一组件

因此,下文论述的第一组件可称为第二组件而不偏离本发明概念的教示

如本文中所使用,术语“及
/
或”包括相关联的列出项目中的任一个及一或多者的所有组合

33.本发明所涉及的用户信息(包括但不限于用户设备信息

用户个人信息等)和数据(包括但不限于用于分析的数据

存储的数据

展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集

使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝

34.本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围

35.随着芯片技术的不断发展和应用场景的不断扩展,对于芯片验证提出了更加专业和全面的技能和知识上要求,以满足不同应用场景下对芯片的验证需求

36.随着芯片规模的增加,片上总线互联越来越复杂,对总线互联的验证工作既是重点又是难点

芯片总线验证是指对芯片内部或芯片之间的总线进行验证,以确保总线的功能和性能符合设计要求

总线是芯片内部或芯片之间数据和控制信息传输的通道,对于芯片的性能和稳定性具有重要影响

37.随着新的验证技术和工具的不断涌现,芯片总线验证行业的发展也在逐步进行

目前的总线通路验证,大多采用验证数据正确性的方法:向不同地址写入数据,再读出数据,对比读写数据的正确性;然后以此来间接验证连接关系的正确性

这需要配合人工进行
波形检查,确认连接关系的正确性

不仅需要双重验证,而且人工波形检测操作需要更多时间,而且难以全面覆盖

38.要自动验证通路关系,就需要对总线建模

常用的总线协议,如
amba
总线,功能复杂,且通常会有多级总线互联,如
axi

ahb

ahb

apb。
为进行总线验证,可以重新开发总线组件

以使用
uvm
方法学为例,包括根据总线接口定义接口组件;根据总线时序构造
driver

monitor
,并且考虑所有可能的时序情形;根据所需控制构造激励的
transaction
类;根据要发送的操作构造
sequence

sequencer
;将以上组件封装成一个
agent
,并编写所需的环境配置
configuration。
也可以使用总线
vip
,各厂商的总线
vip
都根据总线协议进行设计,可以实现总线访问功能和针对协议本身的监控,并且预留有一定的扩展接口

然而,要对总线进行建模会很复杂,重新搭建环境组件耗时费力,还容易遗漏

使用厂商提供的总线
vip
,扩展性和定制化程度又受到限制

39.为此,本发明提出一种总线验证的方法

通过内嵌式验证模块的使用,配合相应的函数及组件进行总线事务转换,并将转换后的总线事务进行映射建模,在映射模型中,将转化后的总线事务进行自动对比

相较于现行的总线验证办法,更加快捷

高效,无需二次人工验证,映射模型自动对比灵活性高

准确性判断更加可靠

40.在描述本发明实施例之前,对本发明实施例涉及到的一些术语或概念进行解释说明

41.握手:“握手协议”指让控制总线的主设备与从设备之间遵照各种协定进行高速而可靠的寻址和数据传输

主要通过控制每个总线周期中数据传送的开始和结束,以实现主
/
从设备间的协调和配合,保证数据传输的可靠性

42.amba

advanced microcontroller bus architecture
):一种公开的

开放的

可扩展的微控制器总线协议,由
arm
公司开发

它提供了一种标准的总线接口,用于连接微控制器内部的各种组件,如处理器

外设

存储器等
。 amba
协议定义了总线的物理接口和协议,包括总线时序

总线宽度

总线寻址方式

总线控制信号等

它还定义了总线上不同组件之间的通信协议,包括总线请求

总线响应

总线仲裁

总线保护等

43.ahb

advanced high-performance bus
):一种高性能的总线接口,是
amba
协议的一种

它是一种全双工的总线,支持多个从设备,可以实现高速

低延迟的数据传输

44.axi(advanced extensible interface) :一种总线协议,该协议是
arm
公司提出的
amba(advanced microcontroller bus architecture)3.0
协议中最重要的部分,是一种面向高性能

高带宽

低延迟的片内总线

45.下面结合附图对本发明的示例实施例进行说明

46.图1示出根据示例实施例用于芯片验证的方法流程图

47.参见图1,所示方法用于芯片验证建模,所述芯片可包括主设备端口

从设备,所述主设备与所述从设备之间通过至少一级总线进行通信

48.在
s101
,确定主设备端口

与所述主设备关联的从设备端口及所述主设备端口和所述从设备端口的总线协议格式

49.根据一些实施例,对待验证芯片中的每条总线通路进行连接关系分析,确认哪些是主设备端口(
master
),哪些是从设备端口(
slave
),以及各个端口所对应的总线协议格式

50.根据一些实施例,根据待验证的芯片总线架构图,找到所有的主设备端口,对于每个主设备端口,找到所述主设备端口能访问的所有最远端的从设备端口

对找到的每个所述从设备端口,所述从设备端口和所述主设备端口组成一条总线访问通路,将所述从设备端口和所述主设备端口视为“一组”。
总线验证就是验证芯片中的每组所述从设备端口和所述主设备端口的发出与接受的总线事务是否相同

51.在
s103
,利用第一内嵌总线验证模块采样主设备端口侧总线,利用第二内嵌总线验证模块采样所述从设备端口侧总线

52.根据一些实施例,利用内嵌总线验证模块(例如,
vip
)对总线进行实时监控线


axi
格式的总线协议为例,当所监控的总线端口处出现有效数据,即出现
vld+ready
握手时,认为所监控的端口侧总线出现有效数据

此时将握手信息的
addr、data
等数据信息都记录下来;根据总线协议格式的不同所记录的数据信息也不尽相同

例如,对于
axi
的总线协议格式的采样记录信息包含一次写地址通道的握手,对应的n个写数据通道的握手,再加上一次返回通道的握手,构成一次总线采样信息,将一次采样记录下的数据信息保存为一个总线事务

53.根据一些实施例,所述第一内嵌总线验证模块对总线的采样位置为所述主设备端口接口总线,采集到数据信息可构成所述第一总线事务

54.根据一些实施例,所述第二内嵌总线验证模块对所述从设备端口侧总线进行采样操作,采集到数据信息可构成第二总线事务

55.在
s105
,根据所述主设备端口和所述从设备端口的总线协议格式及所述主设备端口和所述从设备端口之间的地址映射复杂度,对所述主设备端口与所述从设备端口之间的总线映射关系进行建模,从而第二内嵌总线验证模块根据建模的所述总线映射关系输出第二总线事务

56.根据一些实施例,所述从设备端口和所述主设备端口组成一条总线访问通路,将所述从设备端口和所述主设备端口视为“一组”。
检查同组中的所述从设备端口和所述主设备端口的协议是否为同种总线协议格式

例如,当所述从设备端口和所述主设备端口的总线协议格式都为
axi
,那么认为他们属于相同协议;如果所述主设备端口的总线协议格式是
axi
,而所述从设备端口的总线协议格式是
apb
,则认为它们是属于不同协议

57.根据一些实施例,当所述从设备端口和所述主设备端口的总线协议格式不同时,则应用地址映射对总线事务进行映射建模

58.在
s107
,若所述主设备端口与所述从设备端口有相同的总线协议格式,则在所述第二内嵌总线验证模块与所述第一内嵌总线验证模块之间使用协议关键信息映射来构建映射模型

59.根据一些实施例,若所述主设备端口与所述从设备端口有相同的总线协议格式,那么可将所述第二内嵌总线验证模块与所述第一内嵌总线验证模块采样到的包含相同关键信息的事务作为一组进行比对,从而构建映射模型

60.根据一些实施例,所述相同的协议关键信息包括但不限于地址
、id、range


相同关键信息即认为是一组,所述主设备端口侧采样到对一个包含关键信息访问的总线事务,转换得到预期的所述从设备端口侧的第一总线事务,所述从设备端口侧也需要采样到包含相同关键信息的访问的第二总线事务,将第一总线事务和第二总线事务进行比对

61.根据一些实施例,所述地址
、id、range
这三个都是
amba
协议中的信息,当所述主设备端口与所述从设备端口使用相同总线协议使用所述相同关键信息映射,所述第二内嵌验证模块就能完成绝大部分映射,环境简单

当增加所述关键协议信息,所述第二内嵌验证模块能够识别更多的情况

62.例如,总线事务为一个
64bit

axi
访问,
id
为0,通过总线变成了2个
32bit

axi
操作,在不做
id
映射的情况下,这两个
axi
操作的
id
也会是0,因此可以直接通过
id=0
识别两边的操作

如果无法使用
id
,只能使用地址,则需要将地址转换
。64bit
访问的地址可能是
32’h20
,但是转换后的两个
32bit
的操作,地址会是
32’h20

32’h24
,需要识别这两个地址和原地址的关系,进行映射

63.根据一些实施例,对于主从设备有相同的总线协议格式的情况,可通过配置环境完成建模

64.例如,使用
svt

systemverilog
测试平台)的
amba_systyem_agent
组件,在其
cfg
文件中,配置
master

64bit
数据的
axi
,地址线
32bit
;配置
slave

32bitaxi
,地址线
32bit
,配置
slave
的地址为
32’h1100

vip
就能完成关联

如果
master
发起地址为
32’h1100
的操作,就会检侧
slave
侧是否有关联的操作被采样到

65.在
s109
,若所述主设备端口与所述从设备端口分属不同的总线协议类型
, 则所述第二内嵌总线验证模块使用地址映射进行事务转换,从而构建映射模型

66.根据一些实施例,如果所述主设备端口和所述从设备端口接口是不同协议,则使用地址映射,即相同地址认为是

一组’,所述主设备端口侧采样到对一个地址访问的总线事务,转换得到预期的所述从设备端口侧第一总线事务,所述从设备端口侧也需要采样到对相同地址的访问的第二总线任务,将第一总线事务和第二总线事务进行比对

67.根据一些实施例,

一组’是指对应的一组所述主设备端口和所述从设备端口,本方法中默认具有相同地址的所述主设备端口和所述从设备端口操作,应该映射到一起

68.在
s111
,判断所述地址映射的复杂程度

69.根据一些实施例,判断所述主设备端口和所述从设备端口之间的地址映射复杂度

当所述地址映射仅仅是单一方向的地址截位或者移位,且映射后的地址唯一,则属于简单地址映射

如果有地址转换后多个所述从设备端口地址相同,或者一个所述从设备端口对应多个地址,或者所述从设备端口的地址可以动态映射,或者所述从设备端口端和所述主设备端口端的地址对齐含义不同

例如,所述从设备端口按
32bit
对齐,所述主设备端口按
8bit
对齐的情况,则认为是复杂的地址映射

70.在
s113
,若所述地址映射为复杂地址映射,则利用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件进行总线互联映射,并且接管所述第一内嵌总线验证模块与所述第二内嵌总线验证模块的采样接口,从而构建映射模型

71.根据一些实施例,对于复杂地址映射,需要通过所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件,包括接口组件

环境容器或者回调函数来实现总线互联映射建模,并且接管所述第一内嵌总线验证模块与所述第二内嵌总线验证模块的采样接口,使得所述第一内嵌总线验证模块与所述第二内嵌总线验证模块也实现按映射关系的采样输出所述从设备端口侧的第二总线事务,以便和所述主设备端口侧采样转换后的第一总线事务一致

根据一些实施例,实现总线映射关系建模的方法可根据不同的情景要求进行选择,其中,环境容器和接口组件是环境组件,是相对固化的流程,相对回调函数等会更固定,对环境容器和接口组件的扩展和修改都会影响整个环境

回调函数的应用更加最灵活的,可以随时修改,并且可以在预留的相同接口上,实现不同的功能

但是回调函数要求在环境容器中预先留有回调函数接口,才可以使用,因此使用上有一定的难度

综上,如果是相对固定的流程,通常使用环境容器进行转换

如果是可能多变的流程,通常使用回调函数的方式

以上几种方式都能够实现功能要求,可根据实际场景要求决定方式选择


s115
,若所述地址映射为简单地址映射,则使用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块中的函数实现映射建模

或采用与复杂地址映射相同的方式实现映射建模

72.根据一些实施例,对于简单地址关系,使用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块中的函数

例如,编写
get_dest_global_addr_from_
所述主设备端口的
_addr()

translate_address()
两个函数,按架构方案的总线行实现地址关系的映射建模

73.例如,
addr()

translate_address()
两个都是空函数,是所述第一内嵌总线验证模块与所述第二内嵌总线验证模块预留在处理流程中的接口,会在第一内嵌总线验证模块与所述第二内嵌总线验证模块的固定流程中执行,类似回调函数

例如,当使用扩展
translate_address
函数时,增加内容为如果
addr=32’h1000
,则修改
addr=32’h1200。
那么所述从设备端口侧采样到一个总线事务,地址为
32’h1000
,送给审核组件时,地址就会改为
32’h1200。
但是该方法会对所有接口的地址统一处理,无法区分不同的所述从设备端口接口

所以仅适用于简单的地址映射

74.根据一些实施例,对于简单地址关系,也可以和复杂地址采用相同方式,也可以利用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件,完成映射建模,实现按映射关系的采样输出总线事务

75.重复上述步骤遍历总线访问所有通路,验证芯片整体通路连接关系的正确性

76.若所述地址映射为简单地址映射,则利用所述第一内嵌总线验证模块与所述第二内嵌总线验证模块之外的组件进行总线互联映射

77.根据一些实施例,依照上述方法对每组所述主设备端口与所述从设备端口的通路连接关系进行建模,重复上述步骤对每组不同的所述主设备端口与从设备端口进行建模,直到遍历总线访问所有通路,验证芯片所有端口所对应的多级总线连接关系的正确性

78.图
2a
示出根据示例实施例用于芯片验证的方法采样方式流程图

79.图
2b
示出根据示例实施例用于芯片验证的方法采样方式示意图

80.参见图
2a,
所述芯片包括主设备

从设备,所述主设备与所述从设备之间通过至少一级总线进行通信,所述方法应用于上述的方法建模的映射模型

81.在
s201,
根据测试用例对所述主设备发起第一操作

82.根据一些实施例,在待测试主设备端口发出测试用的总线事务到同组测试的所述从设备端口

83.在
s203,
利用第一内嵌总线验证模块采样主设备端口侧总线,得到第一总线事务

84.根据一些实施例,在所述主设备端口侧,利用第一内嵌总线验证模块对发出的总
线事务进行采样,得到第一总线事务

85.在
s205,
利用第二内嵌总线验证模块采样从设备端口侧总线,根据所述映射模型输出第二总线事务

86.根据一些实施例,在所述从设备端口侧,利用第二内嵌总线验证模块对即将收到的总线事务进行采样,根据上述方法中的映射方法对采样到的总线事务进行转换,得到第二总线事务

87.在
s207,
根据所述第一总线事务与所述第二总线事务的对比结果,自动化验证总线连接关系的正确性

88.根据一些实施例,应用所述映射模型自动化地将所述第一总线事务与所述第二总线事务进行对比,自动化验证总线连接关系的正确性

89.根据一些实施例,多个第二内嵌总线验证模块分别对多个从设备端口侧总线采样,并根据所述映射模型分别输出多个第二总线事务的情况下,同样地应用所述映射模型,自动化地将所述第一总线事务与所述第二总线事务进行对比,自动化验证总线连接关系的正确性

90.参见图
2a
和图
2b
,根据示例实施例,在总线验证中,不仅仅需要验证数据的正确性,还需要对总线通路连接关系进行验证

91.根据一些实施例,验证总线的数据正确性,参见图
2a

2b
,模块a通过总线,向模块b发出总线事务写入数据,然后再从模块b读出数据,验证写入的数据和读出的数据是否相同

如果相同,则模块a与模块b间的总线数据正确

重复上述步骤遍历总线访问所有通路,验证芯片整体数据的正确性

92.根据一些实施例,利用本发明的验证方法验证总线通路连接关系,确定主设备端口

与所述主设备关联的设备端口及所述主设备端口和所述从设备端口的总线协议格式

利用第一内嵌总线验证模块采样主设备端口侧总线的第一总线事务

根据所述主设备端口和所述从设备端口的总线协议格式及所述主设备端口和所述从设备端口之间的地址映射复杂度,利用所述第二内嵌总线验证模块对总线映射关系进行建模,从而利用第二内嵌总线验证模块采样从设备端口侧总线并根据建模的所述总线映射关系输出第二总线事务,从而构建映射模型

利用所述映射模型,可自动化地直接验证芯片各个对应端口间的总线连接关系的正确性

93.参见图
2a
和图
2b
,利用所述第一内嵌总线验证模块在所述主设备端口侧采样,得到第一总线事务;利用第二内嵌总线验证模块在所述从设备端口侧采样得到第二总线事务

94.根据一些实施例,通过将总线的所述主设备端口接口和所述从设备端口接口关联起来,使得在所述主设备端口发出数据,所述从设备端口侧会检测该数据是否发到了对应的所述从设备端口

或者所述从设备端口侧收到数据,会检测所述主设备端口侧是否发出该数据

这样完成总线关系的自动检查

例如,所述主设备端口a发出一个给所述从设备端口b的操作,结果发给了所述从设备端口c,因为不符合映射关系,就能很快被发现

或者所述主设备端口a发错一个给所述从设备端口b的操作,同时发给了所述从设备端口b和所述从设备端口c,因为不符合映射关系,就能很快被发现

95.图3示出根据示例实施例用于芯片验证的方法中应用复杂地址映射实现建模的方
式示意图

96.如果地址映射仅涉及单一方向的地址截位或者移位,且映射后的地址唯一,则属于简单地址映射

否则为复杂地址映射

97.根据一些实施例,根据芯片架构实现方案判断地址映射复杂程度,当所述地址映射仅仅是单一方向的地址截位或者移位,且映射后的地址唯一,则属于简单地址映射

其他则为复杂地址映射,例如,地址转换后多个所述从设备端口地址相同,或者一个所述从设备端口对应多个地址,或者所述从设备端口的地址可以动态映射,或者所述从设备端口端和所述主设备端口端的地址对齐含义不同

则认为是复杂的地址映射

98.根据一些实施例,对于复杂地址映射,修改接口组件的连接,将寄存器传输级地址信号和所述第一内嵌总线验证模块

所述第一内嵌总线验证模块的采样接口相连,通过连接的
bit
位移位

截位和
/
或补充常数位方式,实现地址映射建模

99.根据一些实施例,将寄存器传输级地址信号和所述第一内嵌总线验证模块

所述第一内嵌总线验证模块的采样接口相连,通过将接口组件上的信号进行截位的方式,进行地址映射建模

例如,寄存器传输级输出
32bit
地址,只将其中低
16bit
通过接口组件连接到所述第一内嵌总线验证模块

所述第一内嵌总线验证模块,而输出的高
16bit
,连接到控制函数,或者一个常数

100.根据一些示例实施例,将寄存器传输级地址信号和所述第一内嵌总线验证模块

所述第一内嵌总线验证模块的采样接口相连,通过将接口组件上的信号
bit
位移的方式进行地址映射建模

101.根据一些实施例,修改接口组件的连接完成地址映射建模的方法还可能包括应用接口组件来进行额外的地址区分来实现

102.使用回调函数,在采样完成之后,进行比对之前,将数据进行对应映射改写

根据一些实施例,对于使用回调函数,可以在采样到总线事务,送给审核组件之前添加回调函数接口,并实现回调函数内容

例如,检测总线事务中的
addr=32’h1000
,将
addr
改为
32’h2000
,再送给审核组件

这里的改变方式,应和架构方案书中描述的总线行为一致

103.根据一些实施例,对于
id
压缩和变换的情况处理与同地址信号的处理相类似,即将寄存器传输级 id
信号的一部分通过接口组件接到所述第一

所述第二内嵌总线验证模块,另外的部分值通过环境给出

104.在地址重映射时,使用环境容器或回调函数处理

105.根据一些实施例,对于地址重映射,使用环境容器或回调函数处理

可将寄存器传输级的信号送给环境容器,在环境容器中根据映射关系进行转换后,例如,输入是
32’h1000
,输出要变为
32’h2000
,后再接到所述第一

所述第二内嵌总线验证模块

也可使用回调函数进行地址修改,改变方式应和架构方案书中描述的总线行为一致

106.对于同一个存储空间多个从设备端口的情况,采用其中一个从设备端口作为主口,在环境容器中把数据复制给其他从设备端口的方式同步数据


/
或在环境容器中例化一个存储空间实例,将多个从设备端口的实例化句柄,指向这个存储空间实例来实现

107.根据一些实施例,对于同一个存储空间多个所述从设备端口的情况,即多个地址对应同一块空间,需要进行仿真的数据同步,否则a地址写入,b地址读出,数据不统一,无法映射自动比对

方法包括但不限于采用其中一个所述从设备端口作为主口,在环境容器中
把数据复制给其他所述从设备端口的方式同步数据;或者在环境容器中例化一个存储空间实例,将多个所述从设备端口的实例化句柄,指向这个存储空间实例来实现

108.下面描述根据本发明实施例的两个具体示例

109.示例1:所述主设备端口端是
32bit
数据位宽,
18bit
地址位宽的
ahb
接口,地址按
8bit
对齐;所述从设备端口端是
32bit
数据位宽,
16bit
地址位宽的 apb4
接口,且访问按
32bit
对齐,地址空间
4kb
,且地址
18’h15000

18’h25000
都对应该所述从设备端口

110.总线通过地址右移2位来实现
32bit
对齐访问所述从设备端口

将所述从设备端口侧第二内嵌总线验证模块的地址属性配置为
18’h15000-18’16000, 18’h25000~18’h26000。
111.如果所述从设备端口侧采样到超出该范围的总线事务,上报地址映射错误;控制所述从设备端口侧第二内嵌总线验证模块中 接口组件的地址线
[17:2]
连接到所述从设备端口端
16bit
地址
[15:0]
,第一内嵌总线验证模块中接口组件的
[1:0]
接到所述主设备端口侧的地址
[1:0]
;在环境容器中,实时复制
vip
中’h15000
地址段的数据到
18’h25000
地址段,保持数据的同步

[0112]
在从所述主设备端口端发起一个地址为
18’h15100
的写操作,写数据是a;预期所述从设备端口侧收到一个地址为
16’h5440
的写操作,所述第二总线验证模块的接口对其做了映射修改,通过映射对地址进行移位得到转化后的总线事务地址为
18’h15100
,修改后相关联的从属设备端口侧的总线事务地址与所述主设备端口侧的总线事务地址一致

[0113]
从所述主设备端口端发起一个地址为
18’h25100
的读操作,所述第一内嵌总线验证模块从所述主设备端口侧采样到的总线事务为地址
18’h25100
,读数据为a;预期所述从设备端口侧收到一个
16’h9440
的读操作,读数据是a;所述第二内嵌总线验证模块从所述从设备端口侧采样到的总线事务为地址
18’h25100
,读数据为
a。
[0114]
数据与连接正确性均验证无误,这样这一组端口间的总线验证就此完成

[0115]
示例2:所述主设备端口端是
128bit
数据位宽,
32bit
地址位宽的
axi4
接口;所述从设备端口端是4个
64bit
数据位宽,
24bit
地址位宽的
ahb
接口

且总线通过地址高8位进行译码到不同所述从设备端口,那么就需要使用接口组件来进行额外的地址区分

根据架构方案书地址译码对4个所述从设备端口进行分配,将高8位
0、1、2、3
地址分别分给4个所述从设备端口
0, 所述从设备端口
1, 所述从设备端口
2, 所述从设备端口
3。
[0116]
通过环境固定4个所述从设备端口 vip
的接口组件高位,来区分不同所述从设备端口,即所述从设备端口0的
vip 接口组件
[31:24]=0,
所述从设备端口1的
vip 接口组件
[31:24]=1,
以此类推

[0117]
寄存器传输级会收到
24bit
地址的访问,所述第一

所述第二内嵌总线验证模块则会采样到
32bit
地址的总线事务

[0118]
从所述主设备端口端发起一个地址为
32’h1000_0000

128bit

axi
写操作,预期会在所述从设备端口端转换为2个
64bit
的地址为
24’h000_0000

24’h000_0008

ahb
写操作;并且该操作预期出现在所述从设备端口1,如果所述第二内嵌总线验证模块在所述从设备端口1接口采样到了对应操作总线事务,认为连接检查成功,否则报告检查失败

图4示出
根据本发明示例实施例的计算设备的框图

[0119]
如图4所示,计算设备
30
包括处理器
12
和存储器
14。
计算设备
30
还可以包括总线
22、
网络接口
16
以及
i/o
接口
18。
处理器
12、
存储器
14、
网络接口
16
以及
i/o
接口
18
可以通过总线
22
相互通信

[0120]
处理器
12
可以包括一个或多个通用
cpu(central processing unit
,处理器
)、
微处理器

或专用集成电路等,用于执行相关程序指令

根据一些实施例,计算设备
30
还可包括为处理器
12
进行加速的高性能显示适配器(
gpu

20。
[0121]
存储器
14
可以包括易失性存储器形式的机器系统可读介质,例如随机存取存储器(
ram


只读存储器(
rom
)和
/
或高速缓存存储器

存储器
14
用于存储包含指令的一个或多个程序以及数据

处理器
12
可读取存储在存储器
14
中的指令以执行上述根据本发明实施例的方法

[0122]
计算设备
30
也可以通过网络接口
16
与一个或者多个网络通信

该网络接口
16
可以是无线网络接口

[0123]
总线
22
可以为包括地址总线

数据总线

控制总线等

总线
22
提供了各组件之间交换信息的通路

[0124]
需要说明的是,在具体实施过程中,计算设备
30
还可以包括实现正常运行所必需的其他组件

此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件

[0125]
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤

计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘

光盘
、dvd、cd-rom、
微型驱动器以及磁光盘
、rom、ram、eprom、eeprom、dram、vram、
闪速存储器设备

磁卡或光卡

纳米系统(包括分子存储器
ic


网络存储设备

云存储设备,或适合于存储指令和
/
或数据的任何类型的媒介或设备

[0126]
本发明实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤

[0127]
本领域的技术人员可以清楚地了解到本发明的技术方案可借助软件和
/
或硬件来实现

本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和
/
或硬件,其中硬件例如可以是现场可编程门阵列

集成电路等

[0128]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行

其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的

[0129]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述

[0130]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现

例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集
成到另一个系统,或一些特征可以忽略,或不执行

另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式

[0131]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上

可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的

[0132]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中

上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现

[0133]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中

基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机

服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤

[0134]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述

[0135]
以上具体地展示和描述了本发明的示例性实施例

应可理解的是,本发明不限于这里描述的详细结构

设置方式或实现方法;相反,本发明意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置

网友询问留言已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
技术分类