一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

抓取处理器内部信号的系统及方法与流程

2022-02-22 09:25:03 来源:中国专利 TAG:


1.本公开涉及一种抓取集成电路芯片内部信号的系统及方法,且特别涉及一种长时间连续抓取处理器内部信号的系统及方法。


背景技术:

2.硅后调试(post silicon debug)也称作硅后验证(post silicon validation),在数字集成电路芯片制造领域属于后期验证,主要用来对已经制造完成的芯片进行调试。硅后调试的目的是为了定位在传统的硅前验证阶段(如仿真验证、形式验证等等)没有发现的错误、以及在芯片制造过程中引入的错误。常见的硅后调试手段主要有:基于扫描(scan-base)和基于追踪(trace-base)的技术。基于扫描的技术可通过复用已有的扫描链把某一时刻系统的内部状态扫描出来。但这种方式只能静态观测某一时刻的系统状态,且扫描后系统无法继续运行。基于追踪的技术是在系统运行的同时,即时保存系统的内部状态。然而,目前基于追踪的技术只能追踪少部分信号,且难以实现长时间的连续追踪。
3.因此,需要一种长时间连续(即无损)抓取处理器内部信号的方法及系统。


技术实现要素:

4.本公开的主要目的即在于提供一种抓取处理器内部信号的系统及方法,以实现长时间连续抓取处理器内部信号。
5.本公开提出一种抓取处理器内部信号的系统,包括:一主机接口;一跨时钟域发送模块,耦接上述主机接口,用于从上述主机接口接收事务数据,上述主机接口与上述跨时钟域发送模块之间具有一第一抓取线;以及一信号抓取器,耦接上述第一抓取线,上述信号抓取器包含一缓存器;其中,上述主机接口生成一第一事务数据;当上述缓存器有空闲存储空间、且上述跨时钟域发送模块也有空闲存储空间时,上述主机接口发送上述第一事务数据给上述跨时钟域发送模块;上述信号抓取器从上述第一抓取线抓取上述第一事务数据,将上述第一事务数据打包为一第一封包,并将上述第一封包保存在上述缓存器;以及当上述跨时钟域发送模块有空闲存储空间、而上述缓存器没有空闲存储空间时,上述信号抓取器向上述主机接口发送一第一满信号,响应于上述第一满信号,上述主机接口暂停发送上述第一事务数据。
6.本公开提出一种抓取处理器内部信号的方法,包括:一主机接口生成一第一事务数据;当一信号抓取器的一缓存器有空闲存储空间、且一跨时钟域发送模块也有空闲存储空间时,上述主机接口发送上述第一事务数据给上述跨时钟域发送模块;上述信号抓取器抓取上述第一事务数据,将上述第一事务数据打包为一第一封包,并将上述第一封包保存在上述缓存器;以及当上述跨时钟域发送模块有空闲存储空间、而上述缓存器没有空闲存储空间时,上述信号抓取器向上述主机接口发送一第一满信号,响应于上述第一满信号,上述主机接口暂停发送上述第一事务数据。
7.通过本公开提供的抓取处理器内部信号的方法及系统,采用侵入式的抓取方式,
通过对传输路径施加影响,从而达到长时间连续(即无损)抓取内部信号的目的。
附图说明
8.图1是显示根据本公开一实施例所述的计算机系统的架构示意图。
9.图2是显示根据本公开一实施例所述的信号抓取器(signal capture,sc)的示意图。
10.图3a是显示根据本公开一实施例所述的信号抓取器抓取fifo类信号的简要示意图。
11.图3b是显示根据本公开另一实施例所述的信号抓取器抓取fifo类信号的简要示意图。
12.图4是显示根据本公开一实施例所述的信号抓取器抓取sb类信号的简要示意图。
13.图5是显示根据本公开一实施例所述的信号抓取器汇出所存储内部信号的一封包格式的示意图。
14.图6~7是显示根据本公开一实施例所述的在触发模式下信号存储的示意图。
15.【符号说明】
16.110:中央处理器
17.120:前端总线
18.130:北桥控制器
19.140:南桥控制器
20.150:系统存储器
21.200:信号抓取器
22.202:触发模块
23.204:配置模块
24.206:配置接口
25.208:信号保存模块
26.210:缓存器
27.212:存储设备
28.302a~302f:抓取点
29.310:主机接口(hif)
30.320a、330b:cdc_tx
31.320b、330a:cdc_rx
32.361、363:箭头
33.353:反相器
34.351、355:与门
35.352、354:或门
36.valid1、cdc_push_valid、data、stall、cdc_full、full、cdc_stall、c_data、cdc_pop_valid、valid2:信号
37.cl1、cl2:抓取线
38.340、341:relay fifo
bus,fsb)120与北桥控制器130通信。北桥控制器130还耦接系统存储器150和南桥控制器140,中央处理器110通过北桥控制器130与系统存储器150进行通信,并通过北桥控制器130与连接到南桥控制器140的设备(比如硬盘、键盘等等)进行通信。而本公开实施例提供了一种抓取处理器内部信号的方法及装置,可以在中央处理器110与北桥控制器130之间通信时,连续无损抓取输入中央处理器110的信号或从中央处理器110输出的信号。上述的通信也包括中央处理器110与系统存储器150或南桥控制器140之间、藉由北桥控制器130进行的通信,比如中央处理器110从系统存储器150读取数据、或向系统存储器150写数据,等等。本领域技术人员皆知,中央处理器110为了能与设备(比如连接到南桥控制器140的硬盘、键盘等等)通信,会为每个设备分配至少一个内存空间。由于上述信号是中央处理器110与设备之间通信时产生的,所以上述信号中包含上述至少一个内存空间的地址信息,用于标识上述信号来自哪个内存空间、或中央处理器110要把上述信号发送到哪个内存空间。
56.图2是显示根据本公开一实施例所述的信号抓取器(signal capture,sc)200的示意图。如图所示,信号抓取器200为用于硅后调试(post silicon debug)的一模块,包含触发模块202、配置模块204、以及信号保存模块208,且信号保存模块208有缓存器210。另外,信号抓取器200还可外接配置接口206和存储设备212。信号抓取器200可以用于抓取图1所示的中央处理器110与北桥控制器130通信时产生的信号sig(如箭头214所示),并将抓取到的信号sig放入至一封包后、存储到信号保存模块208中的缓存器210中。在一实施例中,缓存器210为静态随机存取存储器(static random access memory,sram)。在一些情况下,还可将存储在缓存器210中的封包转储到存储设备212,存储设备212例如是系统存储器、动态随机存取存储器(dynamic random access memory,dram)或pci express。需要说明的是,如果缓存器210已满,则不能再继续存储新产生的信号sig,此时信号抓取器200会发出一满信号(将信号cap_full设置为1)给图1的中央处理器110(如箭头216所示),以暂停中央处理器110和北桥控制器130之间的通信。等信号抓取器200将保存在缓存器210中的封包转储到存储设备212后,会释放缓存器210中、已经转储到存储设备212的封包所占用的存储空间,并发出一非满信号(将信号cap_full设置为0)给中央处理器110(如箭头216所示),以恢复中央处理器110和北桥控制器130之间的通信。需要说明的一点是,只要缓存器210中存在尚未转储的封包,抓取器200也会执行转储操作,将尚未转储的封包转储到存储设备212,而不必等缓存器210满了之后才转储。后文会结合图3a、3b、4详述信号抓取器200如何抓取信号sig。
57.信号抓取器200是可配置的,调试人员可以通过配置启用或停用信号抓取器200,并可通过配置使信号抓取器200抓起来自或发给地址处于特定位置的信号sig。调试人员可以在遇到系统故障后再启用信号抓取器200,以抓取特定位置附近的信号sig来进行调试,这样可以提高调试效率。本公开中支持两种配置方式:一种是使用特殊模型寄存器(model specific register,msr)进行配置,另一种是使用联合测试工作群组(joint test action group,jtag)接口进行配置;其中,jtag接口配置方式适用于对所有集成电路芯片进行配置。可通过图2所示的配置接口206使用前述两种配置方式之一,发送配置信息给配置模块204,对信号抓取器200进行配置,以使信号抓取器200启动或停止信号抓取。信号抓取器200启动后,信号保存模块208就开始连续不断地抓取信号sig、并将其保存到缓存器210,再将其转储到存储设备212。信号抓取器200支持多种转储模式,包括:串流模式(stream mode)
310或cdc_rx 330a的事务数据,以及可以输出一满/非满信号(cap_full)。在一实施例中,信号抓取器200从抓取线cl1(与hif 310和cdc_tx 320a之间的通信线路交叉连接的线,相交于交叉点302a、302b和302c)抓取由hif 310发送给cdc_tx 320a的事务数据(如箭头361所示)。在另一实施例中,信号抓取器200从抓取线cl2(与hif 310和cdc_rx 330a之间的通信线路交叉连接的线,相交于交叉点302d、302e和302f)抓取由cdc_rx 330a发送给hif 310的事务数据(如箭头363所示)。另外,信号抓取器200输出一满信号(cap_full值为1)或一非满信号(cap_full值为0)给hif 310、cdc_tx 320a和cdc_rx 330a,以暂停或允许hif 310与cdc_tx 320a/cdc_rx 330a之间的事务数据传输,从而实现连续抓取hif 310与cdc_tx 320a/cdc_rx 330a之间传输的事务数据。下面先描述如何实现连续抓取hif 310与cdc_tx 320a之间传输的事务数据。
65.请参考图3a,hif 310和cdc tx 320a之间通信时传输的信号包括:hif 310发送给cdc_tx 320a的信号data和valid1,以及发送给hif 310的stall(暂停)信号。data为要传输的事务数据。valid1用于标识事务数据是否有效,valid1值为1表示事务数据有效,即hif 310已经准备好要传输的事务数据data;valid1值为0表示事务数据无效,即hif 310当前没有要传输的事务数据data。发送给hif 310的stall(暂停)信号用于控制hif 310是否可以发送事务数据data。当stall信号为1时,表示不允许hif 310向cdc_tx 320a传输事务数据data;当stall信号为0时,表示允许hif 310向cdc_tx 320a传输事务数据data。
66.信号抓取器200所发出的cap_full信号经反相器353取非后的信号,与hif 310发出的valid1信号使用与门351做与运算,可生成信号cdc_push_valid。当cdc_push_valid值为1时,表示hif 310有事务数据data要发送给cdc_tx 320a,并且此时信号抓取器200也有足够的空间用于保存本次要传输的事务数据data。
67.cdc_tx 320a所发出的cdc_full信号,用于标识cdc_tx 320a是否还有空闲存储空间接收事务数据data。cdc_full值为0表示cdc_tx 320a还有空闲存储空间,cdc_full值为1表示cdc_tx 320a已没有空闲存储空间。
68.此外,信号cdc_full与cap_full使用或门352做或运算,生成stall信号。当stall值为1时,表示cdc_tx 320a和信号抓取器200中至少有一个已经没有空闲存储空间保存要传输的事务数据data了。当信号stall的值为0、且信号cdc_push_valid的值由0变为1时,表示hif 310已经准备好要传输的事务数据data、并且cdc_tx 320a和信号抓取器200都有空闲存储空间保存事务数据data。这时,信号抓取器200会将当前的事务数据data存储到缓存器210中,同时cdc_tx 320a也保存当前的事务数据data。
69.下面举例说明信号抓取器200抓取事务数据的过程,假设hif 310连续向cdc_tx 320a发送3个事务数据:data1、data2、data3(即图3a标示的data);并假设:发送data1时,cdc_tx 320a和信号抓取器200都有空闲存储空间,发送data2时,cdc_tx 320a有空闲存储空间、信号抓取器200没有空闲存储空间,发送data3时,cdc_tx 320a没有空闲存储空间、信号抓取器200有空闲存储空间。另外,发送data1前,valid1和cdc_push_valid的值为0。
70.首先,hif 310发送事务数据data1。由于cdc_tx 320a和信号抓取器200都有空闲存储空间,信号cap_full和cdc_full都为0,cap_full和cdc_full通过或门352做或运算后生成的stall信号也为0(即当前允许hif310发送事务数据),因此,valid1信号由0变为1。信号cap_full(值为0)经反相器353后变为1,再与valid1(值为1)通过与门351做与运算后生
成的cdc_push_valid的值由0变为1。此时,由于stall值为0、且cdc_push_valid值由0变为1,所以cdc_tx 320a和信号抓取器200都保存事务数据data1。信号抓取器200会把事务数据data1写入封包后存入缓存器210中。然后,由于已发送完事务数据data1,信号valid1和cdc_push_valid又都变为了0。现在,信号抓取器200变为没有空闲存储空间了,因而信号cap_full变为1。cdc_tx 320a还有空闲存储空间,信号cdc_full还是为0。
71.然后,hif 310再发送事务数据data2。此时,由于信号cap_full值为1、而cdc_full值为0,cap_full和cdc_full通过或门352做或运算后生成的stall信号为1(即当前不允许hif 310发送事务数据),因此hif 310不会发送事务数据data2,valid1、cdc_push_valid信号都保持为0。等图2所示的信号保存模块208将缓存器210中保存的封包转储到外接的存储设备212后,信号抓取器200就又有空闲存储空间了,然后信号抓取器200将信号cap_full变为0。此时,cdc_tx 320a和信号抓取器200又都有空闲存储空间,hif 310发送事务数据data2,具体过程与发送事务数据data1的过程相同,此处就不赘述了。发送完事务数据data2后,信号valid1和cdc_push_valid又都变为了0。现在,信号抓取器200还有空闲存储空间,因而信号cap_full变为0。cdc_tx 320a变为没有空闲存储空间了,信号cdc_full变为为1。
72.接着,hif 310又发送事务数据data3。此时,由于信号cap_full值为0、而cdc_full值为1,cap_full和cdc_full通过或门352做或运算后生成的stall信号为1(即当前不允许hif 310发送事务数据),因此hif 310不会发送事务数据data3,valid1、cdc_push_valid信号都保持为0。等cdc_tx 320a把其缓存空间中事务数据发送给cdc_rx 320b后,cdc_tx 320a就又有空闲存储空间了,然后将信号cdc_full变为0。此时,cdc_tx 320a和信号抓取器200又都有空闲存储空间了,hif 310发送事务数据data3,具体过程与发送事务数据data1的过程相同,此处就不赘述了。发送完事务数据data3后,信号valid1和cdc_push_valid又都变为了0。
73.从上述抓取流程可知,信号抓取器200藉由信号cap_full,可以实现连续抓取hif 310发送给cdc_tx 320a的事务数据。
74.下面先描述如何实现连续抓取hif 310与cdc_rx 330a之间的事务数据。与抓取hif 310与cdc_tx 320a之间的事务数据不同的是,信号抓取器200是从抓取线cl2(与hif 310和cdc_rx 330a之间的通信线路交叉连接的线,相交于交叉点302d、302e和302f)抓取由cdc_rx 330a发送给hif 310的事务数据的(如箭头363所示)。
75.请参考图3a,cdc_rx 330a和hif 310之间通信时传输的信号包括:cdc_rx 330a发送给hif 310的信号c_data和cdc_pop_valid,以及发送给cdc_rx 330a的信号cdc_stall。c_data为要传输的事务数据。cdc_pop_valid信号用于标识事务数据是否有效,cdc_pop_valid值为1表示事务数据有效,即cdc_rx 330a已经准备好要传输的事务数据c_data;cdc_pop_valid值为0表示事务数据无效,即cdc_rx 330a当前没有要传输的事务数据cdc_pop_valid。发送给cdc_rx 330a的cdc_stall信号用于控制cdc_rx 330a是否可以发送事务数据c_data。当cdc_stall信号为1时,表示不允许cdc_rx 330a向hif 310传输事务数据c_data。当cdc_stall信号为0时,表示允许cdc_rx 330a向hif 310传输事务数据c_data。
76.信号抓取器200所发出的信号cap_full经反相器353取非后的信号,与cdc_rx 330a发出的cdc_pop_valid信号使用与门355做与运算,可生成信号valid2。当valid2值为1
时,表示cdc_rx 330a有事务数据c_data要发送给hif 310,并且此时信号抓取器200也有足够的空间用于保存本次要传输的事务数据c_data。
77.hif 310所发出的full信号,用于标识hif 310是否还有空闲存储空间接收事务数据c_data。full值为0表示hif 310还有空闲存储空间,full值为1表示hif 310已没有空闲存储空间。
78.此外,信号full与cap_full使用或门354做或运算,生成cdc_stall信号。当cdc_stall值为1时,表示hif 310和信号抓取器200中至少有一个已经没有空闲存储空间保存要传输的事务数据c_data了。当信号cdc_stall的值为0、且信号valid2的值由0变为1时,表示cdc_rx 330a已经准备好要传输的事务数据c_data、并且hif 310和信号抓取器200都有空闲存储空间保存事务数据c_data。这时,信号抓取器200会将当前的事务数据c_data存储到缓存器210中,同时hif 310也保存当前的事务数据c_data。
79.由于信号处理器200从抓取线cl2抓取事务数据的过程,与从抓取线cl1抓取事务数据的过程是类似的,此处就不再举例说明了。
80.图3b是显示根据本公开另一实施例所述的信号抓取器抓取fifo类信号的简要示意图。与图3a不同的是图3b增加了中继先入先出(relay first input first output,relay fifo)装置340和341。relay fifo 340主要用于缓存hif 310发送给cdc_tx 320a的事务数据,relay fifo 341主要用于缓存cdc_rx 330a发送给hif 310的事务数据。
81.如图3b所示,relay fifo 340耦接于hif 310和cdc_tx 320a之间,可以从hif 310接收事务数据data,然后将事务数据data按接收顺序再转发给cdc_tx 320a。relay fifo 340包含一个先入先出队列,可以用于缓存多个来自hif 310的事务数据。初始时stall1、stall、valid1、valid3的值均为0。当stall值为0,hif 310准备好要发送的事务数据data、并将valid1的值置为1时,relay fifo 340接收事务数据data。当stall1值为0,relay fifo 340中还有未发送的事务数据data时,relay fifo 340可以弹出(pop)一个事务数据data、并将valid3设置为1,从而信号抓取器200完成事务数据data的抓取、cdc_tx 320a成功接收到事务数据data。
82.由上述内容可知,图3b中的relay fifo 340对于cdc_tx 320a和信号抓取器200来说是透明的。图3b中的relay fifo 341与relay fifo 340功能类似,并且对于cdc_rx 330a和信号抓取器200来说也是透明的,此处就不再详细介绍了。
83.图4是显示根据本公开一实施例所述的信号抓取器抓取sb类信号的简要示意图400。sb类信号包括cdc的控制信号、cpu的中断(interrupt)信号、cpu的重置(reset)信号、以及一些会影响到cpu行为的控制信号。如图所示,图400包含中央处理器410。中央处理器410,可以从图1所示的北桥控制器130经由fsb 120接收sb类信号(如图4中的输入箭头所示),还可以向北桥控制器130经由fsb 120发送sb类信号(如图4中的输出箭头)。下面先描述信号抓取器200是如何抓取输入到中央处理器410中的sb类信号的。
84.请同时参考图1、图2和图4,如图4所示,中央处理器410包含同步器412、如图2的信号抓取器200。中央处理器410使用同步器(syncro-cell)412接收由北桥控制器130输入的sb类信号,将其同步后再做进一步处理。sb类信号之间往往缺乏相关性,为了便于处理,设计人员可以将中央处理器110中的这些没有相关性的信号组合起来,形成一个多比特(bit)的总线。在本公开中,定义上述总线为通道(channel)。信号抓取器200是从抓取点418a抓取
输入到中央处理器110中的sb类信号的。如前文所述,通道中的信号只要有一个比特发生翻转(toggle,即改变,比如值由0变为1或由1变为0),信号抓取器200就会抓取通道中的全部信号,并将其经由图2中的缓存器210转储到存储设备212。
85.下面描述信号抓取器200是如何抓取由中央处理器410输出的sb类信号的。如图4所示,中央处理器410还包括寄存器414。中央处理器410会将要输出的sb类信号写入寄存器414中,并且与输入sb类信号类似,形成一个通道,然后再输出。信号抓取器200是从抓取点418b抓取输出的sb类信号的。如前文所述,通道中的信号只要有一个比特发生翻转(toggle),信号抓取器200就会抓取通道中的全部信号,并将其经由图2中的缓存器210转储到存储设备212。
86.在另一实施例中,图4中的输入sb类信号和输出sb类信号组合在一起形成一个通道,信号抓取器200每次可从该通道同时抓取到输入和输出sb类信号。
87.图5是显示根据本公开一实施例所述的信号抓取器汇出所存储内部信号的一封包格式500的示意图。前文所述的图2、3a、3b、4中的信号抓取器200抓取到信号(包含fifo类信号和sb类信号)后,会将其以封包格式500打包为一个封包,再将该封包通过缓存器210转储到存储设备212中。如图所示,封包格式500包括一标头(header)字段510及一数据(data)字段520,其中标头字段510包括一封包的标志位511、封包类型(packettype)512、时间戳(timestamp)513、特殊讯息(special message)514。下面对标头510进行详细描述。
88.标头510的第0比特至3比特为标志位511,其值均为1,可以用于标识一个封包的开始。举例来说,当调试(debug)软件从图2所示的存储设备212,读取信号抓取器200抓取到的封包数据进行处理时,会判断所读取到的封包数据的第1个字节的第0比特至第3比特是否都为1,如果都为1表示这个字节是一个封包的第1个字节,标识一个封包的开始;否则表示这个字节不是一个封包的第1个字节,调试软件会再对下一个字节做同样的判断,直到找到一个封包的开始。
89.标头510的第4比特至15比特为封包类型512。每一比特对应一类型,当值为1时,表示当前封包为对应类型的封包。每个类型的封包的数据长度,根据其所包含的信号的数量的不同而各不相同。表格1为一实施例中,对封包类型的定义,以及每一类型封包的数据长度。如表格1所示,封包类型512的第0比特为1时,表示对应的封包为由图1所示的中央处理器110向系统存储器150写数据时,由图2所示的信号抓取器200所抓取到的信号所生成的封包,该封包数据长度为304比特。封包类型512的第1比特为1时,表示对应的封包为由图1所示的系统存储器150向中央处理器110发送数据时,由图2所示的信号抓取器200所抓取到的信号所生成的封包,该封包数据长度为272比特。封包类型512的第2比特为1时,表示对应的封包为由图4所示的中央处理器410接收或发送sb类信号时,由信号抓取器200所抓取到的sb信号所生成的封包,该封包数据长度为100比特。封包类型512的第3比特为1时,表示对应的封包为由信号抓取器200所抓取到的特殊讯息组成的封包。特殊类型信息长度为4比特,会被直接保存到标头510的特殊信息514中,因而其数据长度为0比特。在另一实施例中,封包类型512的第3比特为1时,特殊类型信息也被放入数据字段520中,对应的封包数据长度为4比特。封包类型512的第4-11比特未定义,为保留类型。需要注意的是,前述定义的封包类型及其对应的数据长度仅为举例说明,本领域技术人员可以根据设计需要定义需要的封包类型及其对应的数据长度。
[0090][0091]
表格1
[0092]
标头510的第16比特至27比特为时间戳513,其从信号抓取器200开始工作后不断循环计数,每个时钟周期增加1。当12比特计数器溢出时(即所有比特的值全变为0时),无论当前时钟周期是否存在需要抓取的信号,信号抓取器200都会生成一个时间戳513为0的封包。调试软件在解析从图2所示的存储设备212读取到的封包数据时,会先定义一个时间变量(初始值设为0),每当调试软件发现时间戳513为0的封包时,会将时间变量的值增加4096。调试软件在解析封包数据的过程中,会将该封包中的时间戳513与时间变量中的值相加,作为该封包的时间。举例来说,调试软件将初始时间变量设置为0,在处理到第一个时间戳513为0的封包前,每个封包的时间为封包中时间戳513;在处理到第一个时间戳513为0的封包时,调试软件将时间变量设置为4096(即0 4096),在这之后的处理过程中,每个封包的时间为封包中时间戳513与4096(即当前时间变量的值)的和;在处理到第二个时间戳513为0的封包时,调试软件将时间变量设置为8192(即4096 4096),在这之后的处理过程中,每个封包的时间为封包中时间戳513与8192(即当前时间变量的值)的和;以此类推。这样,只需要用12比特的计数器,就能够表示无限长的时间。
[0093]
标头510的第28比特至31比特为特殊讯息514,用以放置需要频繁抓取的sb类信号。将需要频繁抓取的sb类信号直接存放在特殊讯息514中,生成的封包只包含标头510,所以可以减小需要存储的封包的尺寸。由于抓取需要频繁抓取的sb类信号会生成大量封包,通过减小这些封包的尺寸,可以大大节省图2所示的存储设备212的存储空间。
[0094]
图6~7是显示根据本公开一实施例所述的在触发模式下信号存储的示意图。本公开主要支持两种内部信号存储模式:一为触发(trigger)模式,另一为串流(stream)模式。下面先描述触发模式下如何抓取信号。
[0095]
触发模式下抓取的信号会存储在通过图2所示的配置接口206所设置的存储设备212的地址区间范围(如图6~7所示,可通过设置一基本地址和缓冲大小来指定一地址区间范围)内,可以抓取特定位置(比如特定内存地址)附近的信号(比如波形信息)。还可以通过图2所示的配置接口206,在存储设备212中的上述地址区间范围内设置一如图6~7所示的触发位置。信号抓取器200所抓取到的特定位置附近的信号,会被存储在通过图2所示的配置接口206所设置的触发位置上。在一实施例中,信号抓取器200支持从1/8到7/8等7个不同的触发位置。在另一实施例中,信号抓取器200支持从1/4到3/4等3个不同的触发位置。当信号抓取器200工作完成后,调试软件直接从存储设备212中读取抓取到的封包数据,再对读
取到的封包数据进行分析、整理,就可以得到最终的调试信息。值得注意的是,需要在信号抓取器200抓取信号前,通过图2所示的配置接口206设置上述基本地址、上述缓冲大小及上述触发位置,并设置上述特定位置,其中特定位置可以是一个单一地址,比如0x1234;也可以是一个地址区间,比如0x1234-0x1238。
[0096]
如图6所示,当图2所示的信号抓取器200开始抓取信号时,信号保存模块208会先把与所抓取到的信号所对应的封包依序存储到缓存器210,然后再把所抓取到的封包会从基本地址开始依序存储到存储设备212中(即把抓取到的封包依序转储到存储设备212中)。当信号保存模块208所要保存的封包中的信号正好匹配之前设置的特定位置时,触发模块202会向信号保存模块208发出一触发信号(即,触发发生,如图6的虚线处)。由于此时写入位置(在图6的触发发生位置)还没到达设置的触发位置,后续信号保存模块208依然会依次把与抓取到的信号对应的封包信号转储到存储设备212中,直到到达缓冲大小处,停止运作(即信号抓取器200工作完成)。在这种情况下,触发位置的设置并不起任何作用。所抓取的封包在存储设备212中按时间先后的存储顺序为
①‑②‑③

[0097]
在另一种情况下,当信号保存模块208存储封包的过程中到达触发位置时,如果依然未收到来自触发模块202的触发信号,则信号保存模块208会重新从基本地址开始转储与抓取到的信号对应的封包,而先前存储的封包则被覆盖掉。如此循环覆盖基本地址和触发位置之间的封包,直到接收到触发信号。如图7所示,当信号保存模块208接收到来自触发模块202的触发信号(即,触发发生,如图7的虚线处),则信号保存模块208响应于该触发信号,改为从触发位置开始转储与抓取到的信号对应的封包,直到存储到缓冲大小处,停止运作(即信号抓取器200工作完成)。根据前述存储过程可知,所抓取的封包数据在存储设备212中按时间先后的存储顺序为
②‑①‑③

[0098]
通过上述内容可知,在触发模式下,使用本发明所述的封包存储方法,可以把与特定位置的信号对应的封包存储在触发位置附近。这样,信号抓取器200就可以抓取到特定位置前、后一段区间内的信号了,从而可以使用调试软件通过分析特定位置前后的信号,判断特定位置前后是否存在问题、以及存在何种类型的问题。
[0099]
另外。为了保证覆盖存储封包数据的时候不越界(即不出现只覆盖之前保存的封包数据的一部分的情况,例如,如果之前保存的封包被覆盖了二分之一、而保留下来了二分之一,那么被覆盖封包的标头就被覆盖掉了,所以调试软件将无法解析保留下来的这二分之一的封包数据),信号保存模块208存储的封包数据将保持1mb边界对齐,即在存储完当前封包数据后,如果当前封包数据没有使用完当前1mb的存储空间,且下一个封包的大小超过当前1mb剩余的空间,则信号保存模块208直接将当前1mb剩余的空间补0,而前述下一个封包则会被存储在下一个1mb的开头。
[0100]
下面描述串流模式。
[0101]
而在串流模式下,信号抓取器200的信号保存模块208将与抓取信号对应的封包从基本地址开始按顺序写入至存储设备212中。当信号保存模块208接收到来自触发模块202的触发信号时,停止运作(即信号抓取器200工作完成)。
[0102]
综上所述,本发明提出的抓取处理器内部信号的系统包括主机接口(hif310)、跨时钟域发送模块(cdc_tx 320a)和信号抓取器(200)。跨时钟域发送模块耦接主机接口,用于从主机接口接收事务数据。主机接口与跨时钟域发送模块之间具有第一抓取线(cl1)。信
号抓取器耦接第一抓取线,且信号抓取器包含缓存器(210)。主机接口生成第一事务数据,当缓存器有空闲存储空间、且跨时钟域发送模块也有空闲存储空间时,主机接口发送第一事务数据给跨时钟域发送模块;信号抓取器从第一抓取线抓取第一事务数据,将第一事务数据打包为第一封包,并将第一封包保存在缓存器。当跨时钟域发送模块有空闲存储空间、而缓存器没有空闲存储空间时,信号抓取器向主机接口发送第一满信号(cap_full为1),响应于第一满信号,主机接口暂停发送第一事务数据。
[0103]
上述抓取处理器内部信号的系统还包含存储设备(212),存储设备耦接信号抓取器。当跨时钟域发送模块有空闲存储空间、而缓存器没有空闲存储空间时,信号抓取器将存储在缓存器中之前保存的封包转储到存储设备,然后信号抓取器向主机接口发送第一非满信号(cap_full为0),响应于第一非满信号,主机接口发送第一事务数据,信号抓取器抓取第一事务数据,将第一事务数据打包为第一封包,并将第一封包保存在缓存器。
[0104]
因此,本公开实施例提供一种抓取处理器内部信号的方法及系统,采用侵入式的抓取方式,通过对传输路径施加影响,从而达到无损抓取内部信号的目的。此外,本公开采用12位的时间戳计数器,既能有效减少封包的长度,也能保证内部信号波形的准确重建。再来,本公开支持触发存储模式,能够精确抓取触发位置前后的波形,其中触发位置更可由使用者自行配置。
[0105]
权利要6求书中用以修饰元件的“第一”、“第二”、“第三”等序数词的使用本身未暗示任何优先权、优先次序、各元件之间的先后次序、或方法所执行的步骤的次序,而仅用作标识来区分具有相同名称(具有不同序数词)的不同元件。
[0106]
虽然本公开已以实施范例公开如上,然其并非用以限定本技术,本领域技术人员在不脱离本公开的精神和范围内,当可做些许更动与润饰,因此本技术的保护范围当视所附权利要求书界定范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献