一种片上系统总线行为检测方法和装置技术领域
本发明涉及片上系统(System on Chip,SoC)领域,尤其涉及一种SoC总
线行为检测方法和装置。
背景技术
当前SoC芯片运行速度越来越快,其处理器的主频已经达到2GHz以上,
因此单靠测试机台无法捕捉到瞬间信号,更不可能深入到芯片内部捕捉总线信
号,这就需要一个监控模块嵌入到芯片内部实时捕捉总线信号。
然而,现有的监控模块如SonicsMT和FlexNoC监控模块中,只能对高级
可扩展接口(Advanced eXtensible Interface,AXI)总线的某些信号进行抓取,
具体地说,现有的监控模块只能对AXI总线地址和命令进行抓取,而无法对
AXI总线数据进行抓取;总之,现有的监控模块功能较为单一,无法满足对SoC
芯片进行调试的多样化需求。
发明内容
为解决上述技术问题,本发明实施例期望提供一种SoC总线行为检测方法
和装置,能够满足SoC总线调试的多样化需求。
本发明的技术方案是这样实现的:
本发明实施例提供了一种片上系统SoC总线行为检测方法,包括:
接收SoC总线信号,所述SoC总线信号包括SoC高级可扩展接口AXI总
线信号;
基于接收的AXI总线信号进行至少以下一种操作:抓取AXI总线通道数据、
对进行AXI总线数据传输时总线传输参数进行至少一次统计;所抓取的AXI
总线通道数据包括至少以下一种数据:所述AXI总线写数据通道传输的数据、
所述AXI总线读数据通道传输的数据;每次统计的总线传输参数包括:对应的
统计时间内总线传输的平均延时或所占有的平均带宽。
上述方案中,所述抓取AXI总线通道数据,包括:在AXI总线信号中写地
址通道(Write address channel,AW)传输的信号满足预设的第一触发条件,或
AXI总线信号中读地址通道(Read address channel,AR)传输的信号满足预设
的第二触发条件时,抓取AXI总线通道数据。
上述方案中,所抓取的AXI总线通道数据为AXI总线信号中使能信号有效
的各个通道的数据。
上述方案中,所述方法还包括:设置K组寄存器,每组寄存器用于存储总
线传输参数的一次统计结果,K为大于1的整数;
在对AXI总线数据传输时总线传输参数进行统计时,在L组寄存器被写入
统计结果时,读取所述L组寄存器中的统计结果,L为小于K的整数。
上述方案中,进行AXI总线数据传输时每次统计的总线传输的平均延时的
计算公式为:
T=total_delay/n
其中,T表示对应一次统计的总线传输的平均延时,Total_delay表示对应
的统计时间内各个Burst传输所耗费的时间之和,n表示对应的统计时间内所发
生的Burst传输的个数;
进行AXI总线数据传输时每次统计的总线传输所占有的平均带宽B的计算
公式为:
B=total_byte/total_cycle
其中,B表示对应的一次统计的总线传输所占有的平均带宽,total_byte表
示对应的统计时间内各个Burst传输所传输的数据量的和,total_cycle表示对应
的统计时间所经历的时钟周期数。
上述方案中,所述方法还包括:接收AXI总线信号对应的时间戳信息。
上述方案中,所述SoC总线信号还包括:AXI一致性扩展(AXI Coherency
Extensions,ACE)总线信号;
在接收SoC总线信号之后,所述方法还包括:基于接收的ACE总线信号
抓取ACE总线通道数据。
上述方案中,所述抓取ACE总线通道数据包括:在ACE总线信号AC通
道传输的信号满足预设的第三触发条件时,抓取ACE总线通道数据。
上述方案中,所抓取的ACE总线通道数据为ACE总线信号中使能信号有
效的各个通道的数据。
上述方案中,所述方法还包括:抓取ACE总线信号对应的时间戳信息。
本发明实施例还提供了一种SoC总线行为检测装置,包括:接收模块和检
测模块;其中,
接收模块,用于接收SoC总线信号,所述SoC总线信号包括AXI总线信
号;
检测模块,用于基于接收的AXI总线信号进行至少以下一种操作:抓取
AXI总线通道数据、对进行AXI总线数据传输时总线传输参数进行至少一次统
计;所抓取的AXI总线通道数据包括至少以下一种数据:所述AXI总线写数据
通道传输的数据、所述AXI总线读数据通道传输的数据;每次统计的总线传输
参数包括:对应的统计时间内总线传输的平均延时或所占有的平均带宽。
上述方案中,所述检测模块,具体用于在AXI总线信号中AW通道传输的
信号满足预设的第一触发条件,或AXI总线信号中AR通道传输的信号满足预
设的第二触发条件时,抓取AXI总线通道数据。
上述方案中,所抓取的AXI总线通道数据为AXI总线信号中使能信号有效
的各个通道的数据。
上述方案中,所述检测模块还包括K组寄存器,每组寄存器用于存储总线
传输参数的一次统计结果,K为大于1的整数;
在对AXI总线数据传输时总线传输参数进行统计时,在L组寄存器被写入
统计结果时,读取所述L组寄存器中的统计结果,L为小于K的整数。
上述方案中,所述接收模块,还用于接收ACE总线信号;
在接收SoC总线信号之后,所述方法还包括:基于接收的ACE总线信号
抓取ACE总线通道数据。
上述方案中,所述检测模块,具体用于在ACE总线信号AC通道传输的信
号满足预设的第三触发条件时,抓取ACE总线通道数据。
上述方案中,所抓取的ACE总线通道数据为ACE总线信号中使能信号有
效的各个通道的数据。
本发明实施例提供的一种SoC总线行为检测方法和装置,接收SoC总线信
号,所述SoC总线信号包括AXI总线信号;基于接收的AXI总线信号进行至
少以下一种操作:抓取AXI总线通道数据、对进行AXI总线数据传输时总线传
输参数进行至少一次统计;所抓取的AXI总线通道数据包括至少以下一种数据:
所述AXI总线写数据通道传输的数据、所述AXI总线读数据通道传输的数据;
每次统计的总线传输参数包括:对应的统计时间内总线传输的平均延时或所占
有的平均带宽。如此,本发明实施例支持对AXI总线数据的抓取和AXI总线数
据的参数统计,能够满足SoC总线调试的多样化需求。
附图说明
图1为本发明SoC总线行为检测方法的第一实施例的流程图;
图2为本发明SoC总线行为检测方法的第一实施例中抓取AXI总线通道数
据的过程的示意图;
图3为本发明SoC总线行为检测方法的第一实施例中统计一次总线传输参
数的时序示意图;
图4为本发明SoC总线行为检测方法的第一实施例中统计总线传输参数的
过程的示意图;
图5为本发明SoC总线行为检测方法的第一实施例中进行连续统计的时序
示意图;
图6为本发明SoC总线行为检测方法的第一实施例中抓取ACE总线通道
数据的过程的示意图;
图7为本发明SoC总线行为检测方法的第二实施例的应用场景的示意图;
图8为本发明SoC总线行为检测方法的第二实施例中总线数据抓取的流程
图;
图9为本发明SoC总线行为检测方法的第二实施例中总线传输参数的统计
的流程图;
图10为本发明实施例SoC总线行为检测装置的第一组成结构示意图;
图11为本发明实施例SoC总线行为检测装置的第二组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清
楚、完整地描述。
图1为本发明SoC总线行为检测方法的第一实施例的流程图,如图1所示,
该方法包括:
步骤100:接收SoC总线信号,SoC总线信号包括AXI总线信号。
这里,AXI总线信号通常包括以下至少一个通道的信号:AR通道信号、
AW通道信号、读数据通道(Read data channel,R)信号、写数据通道(Write data
channel,W)信号和写响应通道(Write response channel,B)信号。
进一步地,还可以接收AXI总线信号对应的时间戳(timestamp)信息,从
而可以准确地获知总线握手的时刻以及响应握手的时刻。
本步骤中,为了改善AXI总线信号的各个通道信号之间的时序,可以在接
收AXI总线信号之前,对AXI总线信号的各个通道信号之间的时序进行调整,
例如,采用基本逻辑单位slice对AXI总线信号的各个通道信号之间的时序进
行调整。
本步骤中,SoC总线信号还可以包括AXI一致性扩展(AXI Coherency
Extensions,ACE)总线信号;这里,ACE总线信号通常包括以下至少一个通
道的信号:AC通道(snoop address channel)信号、CR通道(snoop response
channel)信号、CD通道(snoop data channel)信号。
进一步地,还可以接收ACE总线信号对应的时间戳信息,从而可以准确地
获知总线握手的时刻以及响应握手的时刻。
本步骤中,为了改善ACE总线信号的各个通道信号之间的时序,可以在接
收ACE总线信号之前,对ACE总线信号的各个通道信号之间的时序进行调整,
例如,采用基本逻辑单位slice对ACE总线信号的各个通道信号之间的时序进
行调整。
步骤101:基于接收的AXI总线信号进行至少以下一种操作:抓取AXI总
线通道数据、对进行AXI总线数据传输时总线传输参数进行至少一次统计;所
抓取的AXI总线通道数据包括至少以下一种数据:所述AXI总线写数据通道传
输的数据、所述AXI总线读数据通道传输的数据;每次统计的总线传输参数包
括:对应的统计时间内总线传输的平均延时或所占有的平均带宽。
具体地,所述抓取AXI总线通道数据包括:接收第一数据抓取信号;在第
一数据抓取信号有效时,对接收的AXI总线各个通道的数据进行抓取,在第一
数据抓取信号无效时,停止对接收的AXI总线各个通道的数据的抓取流程。这
里,第一数据抓取信号的有效性可以预先设置,例如,第一数据抓取信号为高
电平信号或低电平信号,当第一数据抓取信号为高电平信号时,表明第一数据
抓取信号有效;当第一数据抓取信号为低电平信号时,表明第一数据抓取信号
无效。
本步骤中,所述抓取AXI总线通道数据包括:在AXI总线信号中AW通
道传输的信号满足预设的第一触发条件,或AXI总线信号中AR通道传输的信
号满足预设的第二触发条件时,抓取AXI总线通道数据;在AXI总线信号中
AW通道传输的信号不满足预设的第一触发条件,且AXI总线信号中AR通道
传输的信号不满足预设的第二触发条件时,不抓取AXI总线通道数据。
这里,预设的第一触发条件可以根据以下至少一个要素设置:AW通道传
输的AWID信号、AW通道传输的AWADDR信号、AW通道传输的AWLEN
信号、AW通道传输的AWSIZE信号、AW通道传输的AWBURST信号;预设
的第二触发条件可以根据以下至少一个要素设置:AR通道传输的ARID信号、
AR通道传输的ARADDR信号、AR通道传输的ARLEN信号、AR通道传输的
ARSIZE信号、AR通道传输的ARBURST信号。
本步骤中,所抓取的AXI总线通道数据为AXI总线信号中使能信号有效的
各个通道的数据。这里,与AXI总线信号中每个通道信号对应的使能信号的有
效性可以预先设置。
如此,通过合理地设置第一触发条件、第二触发条件和使能信号的有效性,
可以灵活地抓取AXI总线通道数据,降低抓取的AXI总线通道数据的数据量。
示例性地,下面通过一个具体例子对抓取AXI总线通道数据的过程进行说
明。
AXI协议支持Outstanding传输访问,即能够发出多个未完成的事务;AXI
协议可以利用ID标记每个Burst传输,因此在本发明第一实施例中设置两个寄
存器组id_reg及id_cnt,其中,寄存器组id_reg用于记录每个Burst传输的ID
号,id_cnt用于记录相同ID号的Burst传输到达的先后顺序的索引,这里,若
存在相同的ID号的多个Burst传输,将第i1个到达的Burst传输的先后顺序的
索引记为i1,i1为自然数。
图2为本发明SoC总线行为检测方法的第一实施例中抓取AXI总线通道数
据的过程的示意图,如图2所示,gbal_id_reg表示按照预先设置的查询顺序排
列的Burst传输的查询顺序,预先设置的查询顺序为图2中的箭头顺序(由上
到下);寄存器组id_reg由多个存储单元(slot)组成,每个slot用于存储一个
ID号,寄存器组id_cnt由多个存储单元组成,每个slot用于存储一个索引的值。
图2描述了从T0时刻到T4时刻AXI总线通道数据的抓取过程,具体说明
如下:
在T0时刻,第一数据抓取信号由无效变为有效,然而,此时还存在一个
ID为0的Burst传输没有完成。
在T1时刻,接收到一个Burst传输的响应,在接收到的Burst传输的响应
与T0时刻未完成的Burst传输匹配时,表示T0时刻未完成的ID为0的Burst
传输已经在T1时刻完成,此时,在寄存器组id_reg和寄存器组id_cnt中,将
与T0时刻未完成的ID为0的Burst传输相对应的slot无效,图2中,将无效
的slot存储的数据标记为X。
在T2时刻,针对新的Burst传输,在寄存器组id_reg和寄存器组id_cnt
中,查找有效的slot,搜索出满足预设的第一触发条件或第二触发条件的Burst
传输对应的slot,将该slot标记为“已匹配”;将不满足预设的第一触发条件且
不满足预设的第二触发条件的Burst传输对应的slot标记为“不匹配”。这里,
对于“不匹配”的slot,不需要抓取对应的Burst传输数据。图2中,标记为“已
匹配”的slot对应T2时刻表格的第二行,标记为“不匹配”的slot对应T2时刻
表格的第三行至第五行。
在T2时刻,对于写数据操作,如果写ID标记(WID)与标记为“已匹配”
的slot中存储的ID相同,且对应的标记为“已匹配”的slot存储的索引的值最
小,则认为WID与对应的标记为“已匹配”的slot中存储的ID匹配,此时将
写数据(WDATA)、写选通(WSTRB)、写最后一个(WLAST)和写ID标记
(WID)全部抓取,并将抓取后的数据发送到FIFO中。
在T2时刻,对于读数据操作,如果读ID标记(RID)与标记为“已匹配”
的slot中存储的ID相同,且对应的标记为“已匹配”的slot存储的索引的值最
小,则认为RID与对应的标记为“已匹配”的slot中存储的ID匹配,此时将
读数据(RDATA)、读响应(RRESP)、RID及读最后一个(RLAST)全部抓取,
并将抓取后的数据发送到FIFO中。
在T3时刻,对于写数据操作,在响应ID(BID)等于0时,如果BID与
标记为“已匹配”的slot中存储的ID相同,且对应的标记为“已匹配”的slot
存储的索引的值最小,则认为BID与对应的标记为“已匹配”的slot中存储的
ID匹配,此时标记为“已匹配”的slot对应的Burst传输已经完成,因此将T3
时刻Burst传输已经完成的slot标记为无效,该无效的slot对应图2中T3时刻
表格的第二行;然后,在寄存器组id_reg和寄存器组id_cnt中,将其余ID等
于0的slot对应的索引值均减1,并将写响应(BRESP)、BID发送到FIFO中。
在T3时刻,对于读数据操作,在RID等于0且RLAST有效的情况下,如
果RID与标记为“已匹配”的slot中存储的ID相同,且对应的标记为“已匹
配”的slot存储的索引的值最小,则认为标记为“已匹配”的slot对应的Burst
传输已经完成,因此将T3时刻Burst传输已经完成的slot标记为无效;然后,
在寄存器组id_reg和寄存器组id_cnt中,将其余ID等于0的slot对应的索引值
均减1,并将RLAST、RDATA和RRESP发送到FIFO中。
在T4时刻,对于写数据操作,在BID等于0时,如果BID与标记为“不
匹配”的slot中存储的ID相同,且对应的标记为“不匹配”的slot存储的索引
的值最小,则认为BID与对应的标记为“不匹配”的slot中存储的ID匹配,
此时标记为“不匹配”的slot对应的Burst传输已经完成,仅将T4时刻Burst
传输已经完成的slot标记为无效,而不进行数据的抓取和发送,这时因为Burst
传输并不满足预设的第一触发条件和第二触发条件。
在T4时刻,对于读数据操作,在RID等于0且RLAST有效的情况下,如
果RID与标记为“不匹配”的slot中存储的ID相同,且对应的标记为“不匹
配”的slot存储的索引的值最小,则认为标记为“不匹配”的slot对应的Burst
传输已经完成,此时仅将T4时刻Burst传输已经完成的slot标记为无效,该标
记为无效的slot对应图2中T4时刻表格的第三行;在T4时刻不进行数据的抓
取,这是因为Burst传输并不满足预设的第一触发条件和第二触发条件。
本步骤中,进行AXI总线数据传输时通常使用Burst传输机制进行数据传
输,Burst传输机制包括但不限于递增猝发、回卷猝发。
示例性地,进行AXI总线数据传输时每次统计的总线传输的平均延时可以
根据以下公式计算:
T=total_delay/n
其中,T表示对应一次统计的总线传输的平均延时,Total_delay表示对应
的统计时间内各个Burst传输所耗费的时间之和,n表示对应的统计时间内所发
生的Burst传输的个数;具体地,Total_delay=T1+T2+…+Tn,T1至Tn分别表
示对应的统计时间内第1个Burst传输至第n个Burst传输所耗费的时间。
进行AXI总线数据传输时每次统计的总线传输所占有的平均带宽可以根据
以下公式计算:
B=total_byte/total_cycle
其中,B表示对应的一次统计的总线传输所占有的平均带宽,total_byte表
示对应的统计时间内各个Burst传输所传输的数据量的和,单位为位,total_cycle
表示对应的统计时间所经历的时钟周期数,total_cycle为自然数;具体地,
total_byte的计算公式为:Total_byte=(L1+L2+…+Ln)*8,其中,L1至Ln分别
表示对应的统计时间内第1个Burst传输至第n个Burst传输所传输的数据量,
单位为字节。
图3为本发明SoC总线行为检测方法的第一实施例中统计一次总线传输参
数的时序示意图,如图3所示,ACLK表示全局时钟信号,AWVALID表示写
地址有效,AWREADY表示写地址准备,AWADDR表示写地址,AWSIZE表
示一次写传输中一拍数据的最大字节数,AWLEN指示一次写传输有多少拍数
据,BVALID表示写响应有效,BREADY表示响应准备,BRESP表示写响应;
图3中示例性的说明了T1至Tn的含义。
进一步地,所述对进行AXI总线数据传输时的总线传输参数进行至少一次
统计包括:接收统计触发信号;在统计触发信号有效时,对进行AXI总线数据
传输时总线传输参数依次进行至少一次统计,在统计触发信号无效时,停止对
进行AXI总线数据传输时总线传输参数进行统计。这里,统计触发信号的有效
性可以预先设置,例如,统计触发信号为高电平信号或低电平信号,当统计触
发信号为高电平信号时,表明统计触发信号有效;否则,当统计触发信号为低
电平信号时,表明统计触发信号无效。
具体地,可以采用如下两种统计模式来确定每次统计的终止时间点。
第一种统计模式:对进行AXI总线数据传输时的总线传输参数进行第1次
统计的开始时间点为统计触发信号由无效变为有效的时刻,终止时间点为以下
两个时间点中的较早的时间点:统计触发信号由有效变为无效的时刻、第1次
统计所经历的时钟周期数超过预设的时钟周期数Fixed_cycle的时刻。
当j大于1时,对进行AXI总线数据传输时总线传输参数进行第j次统计
的开始时间点为第j-1次统计的终止时间点或第j-1次统计的终止时间点之后总
线握手首次成功的时刻,对进行AXI总线数据传输时总线传输参数进行第j次
统计的终止时间点为以下两个时间点中的较早的时间点:统计触发信号由有效
变为无效的时刻、第j次统计所经历的时钟周期数超过预设的时钟周期数
Fixed_cycle的时刻。
第二种统计模式:对进行AXI总线数据传输时总线传输参数进行第1次统
计的开始时间点为统计触发信号由无效变为有效的时刻,终止时间点为以下两
个时间点中的较早的时间点:统计触发信号由有效变为无效的时刻、进行第1
次统计时各个Burst传输所传输的数据量的和大于预设的数据量Fixed byte的时
刻。
当j大于1时,对进行AXI总线数据传输时总线传输参数进行第j次统计
的开始时间点为第j-1次统计的终止时间点或第j-1次统计的终止时间点之后总
线握手首次成功的时刻,对进行AXI总线数据传输时总线传输参数进行第j次
统计的终止时间点为以下两个时间点中的较早的时间点:统计触发信号由有效
变为无效的时刻、进行第j次统计时各个Burst传输所传输的数据量的和大于预
设的数据量Fixed byte的时刻。
这里,第一种统计模式可以称为规定时钟周期数的统计模式,第二种统计
模式可以称为规定数据量的统计模式。
示例性地,下面通过一个具体例子对进行AXI总线数据传输时统计总线传
输参数的过程进行说明。
由于AXI协议可以利用ID标记每个Burst传输,因此通过记录AXI总线
上ID的变化,可以计算每个Burst传输的延时和他们花费的总延时。具体地,
设置三个寄存器组gbal_ID_reg、ID_reg和ID_cnt,其中,寄存器组gbal_ID_reg
用于记录整个统计时间内每个Burst传输的ID,寄存器组ID_reg用于记录统计
触发信号有效的时间内每个Burst传输的ID,寄存器组ID_cnt用于记录相同ID
号的Burst传输到达的先后顺序的索引,这里,若存在相同的ID号的多个Burst
传输,将第i2个到达的Burst传输的先后顺序的索引记为i2,i2为自然数。
图4为本发明SoC总线行为检测方法的第一实施例中统计总线传输参数的
过程的示意图,如图4所示,寄存器组gbal_ID_reg存储的ID号按照预先设置
的查询顺序排列,预先设置的查询顺序为图4中的箭头顺序(由上到下);,寄
存器组gbal_ID_reg由多个slot组成,每个slot用于存储一个ID号,寄存器组
ID_reg由多个slot组成,每个slot用于存储一个ID号,寄存器组ID_cnt由多
个slot组成,每个slot用于存储一个索引的值。寄存器组ID_reg和寄存器组
ID_cnt的深度为5。图4示例性地描述了从T0时刻到T4时刻统计总线传输参
数的过程,具体说明如下:
在T0时刻,统计触发信号无效,还有两个Burst传输的响应没有返回,即
图4中寄存器组gbal_ID_reg中ID为0的Burst传输响应没有返回;这里,寄
存器组gbal_ID_reg中ID为X的slot为无效的slot,该无效的slot对应图4中
T0时刻的第一行和第三行。在T0时刻,不记录没有返回响应的Burst传输的
ID顺序,只记录没有返回响应的Burst传输的ID;在任意一个Burst传输的响
应返回时,将对应的返回响应的Burst传输的RID/BID与寄存器组gbal_ID_reg
中ID进行比较;在对应的返回响应的Burst传输的RID/BID与寄存器组
gbal_ID_reg中的ID匹配时,将对应的slot无效,直至寄存器组gbal_ID_reg中
所有的slot都无效。
在T1时刻,统计触发信号变为无效,新的Burst传输有效,针对新的Burst
传输,在寄存器组ID_reg和寄存器组ID_cnt中,查找有效的slot,搜索出满足
预设的第一触发条件或第二触发条件的Burst传输对应的slot,将该slot标记为
“已匹配”,标记为“已匹配”的slot对应T1时刻表格的第二行。在T1时刻,
将不满足预设的第一触发条件且不满足预设的第二触发条件的Burst传输对应
的slot标记为“不匹配”。这里,对于“不匹配”的slot,不需要抓取对应的总
线传输数据。
针对标记为“已匹配”的Burst传输,从新的Burst传输有效开始的时刻对
时钟周期数进行计数。
需要说明的是,在T1时刻,当ID号为0的Burst传输的响应返回时,需
要先在寄存器组ID_reg和寄存器组ID_cnt中,将与统计触发信号有效前寄存
器组gbal_ID_reg中ID为0的Burst传输对应的slot无效,以避免统计触发信
号有效前Burst传输对统计造成影响,这里,无效的slot对应图4中T1时刻表
格的第三行。
在T2时刻,当ID号为0的Burst传输的响应返回时,在寄存器组ID_reg
和寄存器组ID_cnt中,将与统计触发信号有效前寄存器组gbal_ID_reg中ID为
0的Burst传输对应的slot无效,以避免统计触发信号有效前Burst传输对统计
造成影响。从图4中可以看出,此时,统计触发信号有效前所有的Burst传输
均已传输完成。
在T3时刻,新的Burst传输有效,针对新的Burst传输,在寄存器组ID_reg
和寄存器组ID_cnt中,查找有效的slot,搜索出满足预设的第一触发条件或第
二触发条件的Burst传输对应的slot,在T3时刻,将不满足预设的第一触发条
件且不满足预设的第二触发条件的Burst传输对应的slot标记为“不匹配”。这
里,对于“不匹配”的slot,不需要抓取对应的Burst传输数据;这里,“不匹
配”的slot对应图4中T3时刻表格的第一行。
在T4时刻,ID为0的Burst传输的响应返回,由于统计触发信号有效前的
Burst传输均已传输完成,此时,在寄存器组ID_reg和寄存器组ID_cnt中,查
找ID为0且索引值为1的slot,将该slot无效,该slot对应图4中T4时刻表
格的第二行,停止对时钟周期数的计数,得出完成对应的Burst传输所耗费的
时间。在T4时刻,新的Burst传输出现,该Burst传输满足预设的第一触发条
件或第二触发条件,将该Burst传输对应的slot标记为“已匹配”,重新针对该
新的Burst传输进行时钟周期数的计数,这里,该标记为“已匹配”的slot对
应图4中T4时刻表格的第三行。
进一步地,AXI总线可以连接多个主设备以及多个从设备;在一个主设备
通过AXI总线读取一个从设备的数据,或者,一个主设备通过AXI总线向一个
从设备写入数据时,可以根据预先配置的任意一个主设备的地址,来统计该主
设备读写数据时的平均时延和所占有的平均带宽;同理,可以根据预先配置的
任意一个从设备的地址,来统计从设备被读取数据/被写入数据时的平均时延和
所占用的平均带宽;进一步地,可以根据预先配置的任意一个主设备和任意一
个从设备的地址,来统计对应主设备读写对应从设备的数据时的平均时延和所
占用的平均带宽。
优选地,还可以设置K组寄存器来存储统计结果,K为大于1的整数,每
组寄存器用于存储总线传输参数的一次统计结果;在对AXI总线数据传输时的
总线传输参数进行统计时,如果L组寄存器被写入统计结果,则利用外部设备
将该L组寄存器的统计结果读取出去,L为小于K的整数;例如,在L组寄存
器被写入统计结果之后,产生中断并向外部的CPU发出请求信息,请求将该L
组寄存器的统计结果读取出去。这里,L和K的值可以根据实际应用场景进行
设置,例如K取8,L取4。
需要说明的是,如果外部设备不能及时将该L组寄存器的统计结果读取出
去,则在该L组寄存器的统计结果被新的统计结果覆盖时,产生写覆盖中断。
可以看出,对进行AXI总线数据传输时总线传输参数进行多次统计时,可
以实现统计触发信号有效的持续时间内总线传输参数的连续统计,如此,可以
绘制出总线传输参数随时间的变化波形图,有利于更准确的掌握总线行为。
图5为本发明SoC总线行为检测方法的第一实施例中进行连续统计的时序
示意图,如图5所示,windows表示统计触发信号有效的持续时间,ACLK表
示全局时钟信号,START表示统计触发信号,当START为高电平时,表示统
计触发信号有效,当START为低电平时,表示统计触发信号无效;perf表示统
计结果获取时序,P1至Pk分别表示统计触发信号有效的持续时间内获取的k
个统计结果,k大于1;end_flag为高电平信号或低电平信号,当end_flag为低
电平信号时,表示正在进行某一次统计,当end_flag变为高电平,end_flag拉
起时,表示某一次统计终止。
进一步地,如果步骤100中SoC总线信号还包括ACE总线信号,则在本
步骤中,还需要基于接收的ACE总线信号抓取ACE总线通道数据。
具体地,所述抓取ACE总线通道数据包括:接收第二数据抓取信号;在第
二数据抓取信号有效时,对接收的ACE总线各个通道的数据进行抓取,在第二
数据抓取信号无效时,停止对接收的ACE总线各个通道的数据的抓取流程。这
里,第二数据抓取信号的有效性可以预先设置,例如,第二数据抓取信号为高
电平信号或低电平信号,当第二数据抓取信号为高电平信号时,表明第二数据
抓取信号有效;否则,当第二数据抓取信号为低电平信号时,表明第二数据抓
取信号无效。
本步骤中,所述抓取ACE总线通道数据包括:在ACE总线信号AC通道
传输的信号满足预设的第三触发条件时,抓取ACE总线通道数据;在ACE总
线信号AC通道传输的信号不满足预设的第三触发条件时,不抓取ACE总线通
道数据。
这里,预设的第三触发条件可以根据以下至少一个要素设置:AC通道传
输的ACADDR信号、AC通道传输的ACSNOOP信号。
本步骤中,所抓取的ACE总线通道数据为ACE总线信号中使能信号有效
的各个通道的数据。这里,与ACE总线信号中每个通道信号对应的使能信号的
有效性可以预先设置。
如此,通过合理地设置第三触发条件和使能信号的有效性,可以灵活地抓
取ACE总线通道数据,降低抓取的ACE总线通道数据的数据量。
示例性地,下面通过一个具体例子对抓取ACE总线通道数据的过程进行说
明。
ACE总线协议不支持利用ID标记每个Burst传输,在本发明第一实施例中
设置寄存器组cnt、cnt_cd、max_cnt、max_cnt_cd,其中,寄存器组cnt用于记
录AC通道传输的先后顺序,寄存器组cnt包括多个slot,每个slot用于存储一
个表示AC通道传输的先后顺序的索引值,在有多个AC通道传输的信号先后
到达的情况下,索引值越小,则说明对应的AC通道传输的信号越先到达;寄
存器组cnt_cd用于记录CD通道传输的先后顺序,寄存器组cnt包括多个slot,
每个slot用于存储一个表示CD通道传输的先后顺序的索引值,在有多个CD
通道传输的信号先后到达的情况下,索引值越小,则说明对应的CD通道传输
的信号越先到达。通常,寄存器组cnt和寄存器组cnt_cd存储的索引值大于等
于1的自然数。
图6为本发明SoC总线行为检测方法的第一实施例中抓取ACE总线通道
数据的过程的示意图,如图6所示,寄存器组max_cnt包括至少一个slot,每
个slot用于记录第二数据抓取信号有效前未传输完成的一个Burst传输对应的
AC通道传输的先后顺序的索引值;寄存器组max_cnt_cd包括至少一个slot,
每个slot用于记录第二数据抓取信号有效前未传输完成的一个Burst传输对应
的CD通道传输的先后顺序的索引值。
图6示例性地描述了从T0时刻到T4时刻ACE总线通道数据的抓取过程,
具体说明如下:
在T0时刻,第二数据抓取信号无效,CRRESP信号或CDLAST信号有效,
此时直至寄存器组max_cnt和寄存器组max_cnt_cd中每个slot记录的索引值变
为不断进行减1处理,直至寄存器组max_cnt和寄存器组max_cnt_cd中每个slot
记录的索引值变为0,此时第二数据抓取信号有效前所有的Burst传输均已完成。
在T1时刻,第二数据抓取信号有效,如果ACE总线信号满足预设的第三
触发条件,则将寄存器组cnt/寄存器组cnt_cd中对应的slot标记为“已匹配”,
这里,标记为“已匹配”的slot对应图6中T1时刻表格的第二行和第四行,此
时,将标记为“已匹配”的slot对应的AC通道传输的信号发送到FIFO中,
AC通道传输的信号至少包括以下一种:ACVALID信号、ACREADY信号、
ACADDR信号、ACSNOOP信号、ACPORT信号。
在T1时刻,如果AC通道传输的数据/CD通道传输的数据不满足预设的第
三触发条件,则将寄存器组cnt/寄存器组cnt_cd中对应的slot标记为“不匹配”,
这里,标记为“不匹配”的slot对应图6中T1时刻表格的第一行、第三行和第
五行。
在T2时刻,CDLAST信号有效,此时将寄存器组cnt_cd中索引值为1的
slot无效,并将寄存器组cnt_cd中记录的其余索引值全部减1,这里,该无效
的slot在图6中用索引值X表示;在T2时刻,ACE总线信号满足预设的第三
触发条件,则将寄存器组cnt/寄存器组cnt_cd中对应的slot标记为“已匹配”,
此时,将标记为“已匹配”的slot对应的CD通道传输的信号发送到FIFO中,
CD通道传输的信号至少包括以下一种:CDVALID信号、CDREADY信号、
CDDATA信号、CDLAST信号。
在T3时刻,CRRESP信号有效,此时将寄存器组cnt中索引值为1的slot
无效,并将寄存器组cnt中记录的其余索引值全部减1,里,该无效的slot在图
6中用索引值X表示;在T3时刻,ACE总线信号满足预设的第三触发条件,
则将寄存器组cnt/寄存器组cnt_cd中对应的slot标记为“已匹配”,此时,将标
记为“已匹配”的slot对应的CR通道传输的信号发送到FIFO中,CR通道传
输的信号至少包括以下一种:CRVALID信号、CRREADY信号、CRRESP信号。
在T4时刻,CRRESP信号和CDLAST信号有效,将寄存器组cnt中索引
值为1的slot无效,将寄存器组cnt_cd中索引值为1的slot无效,并将寄存器
组cnt_cd和寄存器组cnt中记录的其余索引值全部减1;在T4时刻ACE总线
信号不满足预设的第三触发条件,则将寄存器组cnt/寄存器组cnt_cd中对应的
slot标记为“不匹配”,此时,不会将抓取ACE总线通道数据。
本发明的SoC总线行为检测方法的第一实施例,首先可以对AXI总线数据
进行抓取,与现有的只能对AXI总线地址和命令进行抓取的技术方案相比,可
以更准确的获知总线行为;其次可以对ACE总线信号进行抓取,能够适用更多
的应用场景;最后可以完成对AXI总线传输的相关参数的统计;如此,本发明
的SoC总线行为检测方法的第一实施例可以支持多种功能,能够满足SoC总线
调试的多样化需求。
第二实施例
为了能更加说明本发明的目的,在本发明第一实施例的基础上,进行进一
步的举例说明。
图7为本发明SoC总线行为检测方法的第二实施例的应用场景的示意图,
如图7所示,处理器700代表一个主设备,处理器700和从设备701之间通过
AXI总线/ACE总线进行数据传输;检测仪702用于采用本发明对处理器和从
设备之间的总线数据传输的行为进行检测,DDR存储器703用于存储检测仪得
出的总线行为检测结果。检测仪702通过从接口连接AXI总线/ACE总线,用
于监控AXI总线/ACE总线;检测仪702通过主接口连接DDR存储器703,检
测仪702对AXI总线/ACE总线的监控属于非侵入式监控,因此不会干扰处理
器和从设备之间的总线数据传输。
具体地,针对上述应用场景,分别对总线数据抓取和总线传输参数的统计
的流程进行说明。
图8为本发明SoC总线行为检测方法的第二实施例中总线数据抓取的流程
图,如图8所示,该流程包括:
步骤800:预先配置总线数据抓取的参数;配置第一数据抓取信号/第二数
据抓取信号有效,跳至步骤801。
具体地,预先配置总线数据抓取的参数包括:设置触发条件,配置AXI总
线/ACE总线各个通道的使能信号的有效性,设置AXI总线/ACE总线信号的时
间戳抓取功能,配置AXI总线/ACE总线各个通道在DDR存储器中存储空间,
配置AXI总线/ACE总线每个通道在DDR存储器中存储的粒度为1K;
进一步地,预先配置SoC总线行为检测的各种参数还包括:配置针对AXI
总线/ACE总线至少一个通道的中断屏蔽,配置中断清除和抓取数据结束时的中
断信号,抓取数据结束时的中断信号标记为drain_out,当drain_out拉高为高电
平时,表示发出抓取数据结束时的中断信号。
当某一个通道配置有中断屏蔽时,忽略对应通道发出的中断信号。
步骤801:判断AXI总线/ACE总线的至少一个通道是否发出中断信号,
如果是,则跳至步骤802;否则,跳至步骤804。
步骤802:判断发出中断信号的通道是否配置有中断屏蔽,如果是,则返
回至步骤801;如果否,则跳至步骤803。
步骤803:将DDR中与发出中断信号的通道对应的数据读出,待数据读出
后,清除中断,返回至步骤801。
本步骤中,所述将DDR中与发出中断信号的通道对应的数据读出包括:
查询中断号,根据中断号判断中断信号来自哪个通道,之后,通知CPU配置相
应的DMA读取方式,将对应通道的数据从DDR读取出来,将读取出的数据存
储到外部存储器如USB中。
步骤804:判断是否结束总线数据抓取,如果不结束总线数据抓取,则返
回至步骤801;如果结束总线数据抓取,则配置第一数据抓取信号/第二数据抓
取信号无效,跳至步骤805。
这里,结束总线数据抓取的时机可以用户自己确定。
步骤805:检测仪将自身内部的残余数据排空,发出抓取数据结束时的中
断信号,将DDR中与没有设置中断屏蔽的每个通道对应的数据读出,在数据
读取完毕时,清除中断,结束流程。
具体地,所述将DDR中与没有设置中断屏蔽的每个通道对应的数据读出
包括:基于没有设置中断屏蔽的各个通道,通知CPU配置相应的DMA读取方
式,将对应通道的数据从DDR读取出来,将读取出的数据存储到外部存储器
中。
需要说明的是,如果AXI总线/ACE总线各个通道均设置中断屏蔽,则在
检测仪将自身内部的残余数据排空后,直接结束流程。
图9为本发明SoC总线行为检测方法的第二实施例中总线传输参数的统计
的流程图,如图9所示,该流程包括:
步骤900:预先配置总线传输参数的统计参数;配置统计触发信号有效,
跳至步骤901。
具体地,配置总线传输参数的统计参数包括:配置至少一个主设备的地址,
用于统计对应主设备在总线数据传输时的平均时延和所占有的平均带宽;配置
至少一个从设备的地址,用于统计对应从设备在总线数据传输时的平均时延和
所占有的平均带宽;预先配置至少一个主设备的地址和至少一个从设备的地址,
用于统计对应主设备到对应从设置之间的总线数据传输的平均时延和所占有的
平均带宽;配置统计模式。
配置总线传输参数的统计参数还可以包括:配置针对至少一个通道的统计
结果的中断屏蔽,配置中断清除和统计结束时的中断信号。
步骤901:判断是否收到CPU发出的读请求中断,如果有,则跳至步骤902,
否则,跳至步骤904。
具体地,检测仪内部配置有八组统计寄存器,每次统计结束后会将统计结
果发送到一个统计寄存器中,当得出四组统计结果时,发出读请求中断,请求
CPU读取统计结果。
步骤902:根据需要读取的每组统计结果的类型,判断对应的统计结果是
否设置有中断屏蔽,如果是,则返回至步骤901;如果否,则跳至步骤903。
步骤903:将统计结果读出,待数据读出后,清除中断,返回至步骤901。
步骤904:判断是否结束统计过程,如果不结束统计过程,则返回至步骤
901;如果结束统计过程,则配置统计触发信号无效,跳至步骤905。
这里,结束统计过程的时机可以用户自己确定。
步骤905:发出统计结束时的中断信号,基于没有设置中断屏蔽的各个通
道的统计结果,将剩余的统计结果读出,清除中断,结束流程,此时,可以针
对统计结果进行分析。
需要说明的是,如果获取的AXI总线各个通道的统计结果均设置中断屏蔽,
则在步骤904之后,直接结束流程。
第三实施例
针对本发明实施例的方法,本发明实施例还提供了一种SoC总线行为检测
装置。
图10为本发明实施例SoC总线行为检测装置的第一组成结构示意图,如
图10所示,该装置包括:接收模块1000和检测模块1001;其中,
接收模块1000,用于接收SoC总线信号,所述SoC总线信号包括AXI总
线信号。
检测模块1001,用于基于接收的AXI总线信号进行至少以下一种操作:抓
取AXI总线通道数据、对进行AXI总线数据传输时总线传输参数进行至少一次
统计;所抓取的AXI总线通道数据包括至少以下一种数据:所述AXI总线写数
据通道传输的数据、所述AXI总线读数据通道传输的数据;每次统计的总线传
输参数包括:对应的统计时间内总线传输的平均延时或所占有的平均带宽。
具体地,所述检测模块1001,用于在AXI总线信号中AW通道传输的信
号满足预设的第一触发条件,或AXI总线信号中AR通道传输的信号满足预设
的第二触发条件时,抓取AXI总线通道数据。
这里,所抓取的AXI总线通道数据为AXI总线信号中使能信号有效的各个
通道的数据。
进一步地,所述检测模块1001还包括K组寄存器,每组寄存器用于存储
总线传输参数的一次统计结果,K为大于1的整数。
在对AXI总线数据传输时总线传输参数进行统计时,在L组寄存器被写入
统计结果时,读取所述L组寄存器中的统计结果,L为小于K的整数。
进一步地,所述接收模块1000,还用于接收ACE总线信号。
在接收SoC总线信号之后,所述方法还包括:基于接收的ACE总线信号
抓取ACE总线通道数据。
具体地,所述检测模块1001,用于在ACE总线信号AC通道传输的信号
满足预设的第三触发条件时,抓取ACE总线通道数据。
这里,所抓取的ACE总线通道数据为ACE总线信号中使能信号有效的各
个通道的数据。
在实际应用中,所述接收模块1000和检测模块1001均可由位于终端设备
中的中央处理器(Central Processing Unit,CPU)、微处理器(Micro Processor
Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程
门阵列(Field Programmable Gate Array,FPGA)等实现。
第四实施例
为了能更加体现本发明的目的,在本发明第三实施例的基础上,进行进一
步的举例说明。
图11为本发明实施例SoC总线行为检测装置的第二组成结构示意图,如
图11所示,该装置包括:第一时序调整单元1100、第二时序调整单元1101、
AXI总线检测单元1102、ACE总线检测单元1103、统计单元1104、配置单元
1105、第一清除单元1106、第二清除单元1107、数据传输单元1108和第三时
序调整单元1109;其中,
配置单元1105,用于配置总线数据抓取的参数和总线传输参数的统计参数,
将配置完成的总线数据抓取的参数发送至AXI总线检测单元/ACE总线检测单
元,将配置完成的总线传输参数的统计参数发送至统计单元。这里,配置总线
数据抓取的参数和总线传输参数的统计参数的过程已经在本发明第二实施例中
作出详细说明,这里不再赘述。
进一步地,配置单元1105可以接收来自外部设备的配置信息,并基于接收
到的配置信息来配置相关参数;配置单元1105与外部设备通过APB((Advanced
High performance Bus)接口进行交互。
第一时序调整单元1100,用于接收AXI总线各个通道的信号,对接收的各
个通道的信号进行时序调整,将时序调整的各个通道的信号分别发送至AXI总
线检测单元、第一清除单元、第二清除单元和统计单元;这里,第一时序调整
单元1100可以采用基本逻辑单位slice实现;图1中,AW、AR、W、R、B分
别表示AXI总线AW通道、AR通道、W通道、R通道和B通道。
第二时序调整单元1101,用于接收ACE总线各个通道的信号,对接收的
各个通道的信号进行时序调整,将时序调整的各个通道的信号分别发送至ACE
总线检测单元、第一清除单元和统计单元;这里,第二时序调整单元1100可以
采用基本逻辑单位slice实现;图1中,AC、CR、CD分别表示AXI总线AC
通道、CR通道和CD通道。
第一清除单元1106,用于实时监控AXI总线行为和ACE总线行为,接收
第一数据抓取信号和第二数据抓取信号,在第一数据抓取信号有效时,对第一
数据抓取信号有效前AXI总线检测单元接收的数据进行清除;在第二数据抓取
信号有效时,对第二数据抓取信号有效前ACE总线检测单元接收的数据进行清
除;如此,可以防止对应数据抓取信号有效前接收的总线数据对总线数据抓取
造成影响。
第二清除单元1107,用于实时监控AXI总线行为,接收统计触发信号,在
统计触发信号有效时,对统计触发信号有效前统计单元接收的数据进行清除;
如此,可以防止统计触发信号有效前统计单元接收的数据对后续的总线传输参
数的统计过程造成影响。
AXI总线检测单元1102,用于在第一数据抓取信号有效时,对接收的AXI
总线各个通道的数据进行抓取,将抓取的各个通道的数据发送至数据传输单元。
这里,对AXI总线各个通道的数据进行抓取的过程已经在本发明第一实施例作
出说明,这里不再重复。
ACE总线检测单元1103,用于在第二数据抓取信号有效时,对接收的ACE
总线各个通道的数据进行抓取,将抓取的各个通道的数据发送至数据传输单元。
这里,对ACE总线各个通道的数据进行抓取的过程已经在本发明第一实施例作
出说明,这里不再重复。
统计单元1104,用于在统计触发信号有效时,对进行AXI总线数据传输时
总线传输参数依次进行至少一次统计,将得出的统计结果通过配置单元向外发
送。这里,对总线传输参数的统计过程已经在本发明第一实施例作出说明,这
里不再重复。
数据传输单元1108,用于对接收的数据进行打包处理,并将打包处理后的
数据发送至第三时序调整单元。
具体地,数据传输单元1108包括先入先出队列(First Input First Output,
FIFO)子单元和数据处理子单元;其中,FIFO子单元用于接收来自AXI总线
检测单元1102和ACE总线检测单元1103的数据,在接收的至少一个通道的数
据达到对应的通道阈值时,启动写操作,将达到通道阈值的数据发送至数据处
理子单元;示例性地,当FIFO深度为16时,AW通道、AR通道和AC通道的
通道阈值为4,W通道、R通道、B通道、CD通道和CR通道的阈值为8。这
里,如果FIFO子单元中,如果多个通道的数据同时达到对应的通道阈值,则
采用预设的轮询顺序轮询将对应的多个通道的数据发送至数据处理子单元。
数据处理子单元,用于将接收的各个通达的数据按照约定的数据结构组装
后输出。这里,为了降低开发难道和验证复杂程度,SoC总线行为检测装置向
外输出数据的数据宽度规定为64位,这样,数据处理子单元向外输出的数据的
数据宽度需要是恒定值。也就是说,数据处理子单元要将接收的数据组合成为
固定长度的数据并向外输出;特别地,当AXI总线各个通道的数据抓取过程结
束时,如果FIFO子单元中的至少一个通道的数据没有达到对应的通道阈值,
这时,针对对应通道的数据添入冗余数据,使之达到对应的通道阈值,这样有
利于数据处理子单元的数据处理过程。
为了高效地传输数据,在该数据处理子单元占用中设置了两个状态机,一
个是地址状态机,用于地址的产生和拆分(比如跨4K传输时,需要将一个完
整的数据结构打断),另一个是地址状态机,用于数据的合并和拆分,示例性地,
AXI总线通道数据的数据宽度是32位时,数据处理子单元就需要将两个AXI
总线通道数据合并后向外输出;在AXI总线的通道数据的数据宽度时32位时,
数据处理子单元将一个AXI总线的通道数据拆分为两组数据向外输出;如此,
数据处理子单元通过数据的合并和拆分,可以大大提高数据的传输效率。
第三时序调整单元1109,用于对接收的数据进行时序调整,并将经时序调
整后的数据发送至外部的存储单元中;这里,第三时序调整单元1109可以采用
基本逻辑单位slice实现。
进一步地,为了解决抓取的数据量大,外部的存储单元无法存取的问题,
在外部的存储单元中为每个通道的数据设置一块受限的地址空间,地址空间粒
度为1K,在这块地址空间上进行写操作,当抓取的一个通道的数据的数据量
达到对应通道的地址空间的一半时,发出中断,通知CPU将抓取的对应通道的
数据读取。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计
算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和
硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算
机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储
器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品
的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方
框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结
合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或
其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可
编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个
流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备
以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的
指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流
程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使
得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处
理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个
流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范
围。