CN116737606B - 基于硬件仿真加速器的数据缓存方法、装置、设备及介质 - Google Patents
基于硬件仿真加速器的数据缓存方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116737606B CN116737606B CN202311026485.7A CN202311026485A CN116737606B CN 116737606 B CN116737606 B CN 116737606B CN 202311026485 A CN202311026485 A CN 202311026485A CN 116737606 B CN116737606 B CN 116737606B
- Authority
- CN
- China
- Prior art keywords
- memory
- sdl
- data
- dynamic buffer
- dynamic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 182
- 238000000034 method Methods 0.000 title claims abstract description 124
- 230000015654 memory Effects 0.000 claims abstract description 549
- 239000000872 buffer Substances 0.000 claims abstract description 405
- 238000005070 sampling Methods 0.000 claims abstract description 71
- 230000008569 process Effects 0.000 claims abstract description 43
- 230000006870 function Effects 0.000 claims description 94
- 238000004364 calculation method Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 abstract description 26
- 238000004891 communication Methods 0.000 abstract description 8
- KDLHZDBZIXYQEI-UHFFFAOYSA-N Palladium Chemical compound [Pd] KDLHZDBZIXYQEI-UHFFFAOYSA-N 0.000 description 26
- 238000010586 diagram Methods 0.000 description 13
- 229910052763 palladium Inorganic materials 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 5
- 239000000523 sample Substances 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种基于硬件仿真加速器的数据缓存方法、装置、设备及介质,涉及通信技术领域。该方法包括:在硬件仿真加速器中的SDL功能组件进行数据采样时,控制SDL功能组件向第一存储器缓存采样到的数据;第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器;在检测到第一存储器处于数据存满状态的情况下,在多个动态缓冲存储器中确定第二存储器;第二存储器为第一存储器数据存满时具有空余缓存空间的动态缓冲存储器;控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样的数据。根据本申请实施例,能够有效解决硬件仿真加速器运行过程中的数据溢出问题。
Description
技术领域
本申请属于通信技术领域,尤其涉及一种基于硬件仿真加速器的数据缓存方法、装置、设备及介质。
背景技术
通常,在芯片前端验证时,硬件仿真加速器由于能够有效加速待测芯片的验证过程,因此在芯片设计验证过程中具有重要地位。通过使用硬件仿真加速器,能够在芯片研发的早期阶段就让整颗芯片软硬件协同涉及成为可能。通过硬件仿真加速,以更短的时间来验证设计,可以加快编译、高级调试、功耗分析、仿真加速和混合硬件仿真,大大缩短整个产品研发周期。
硬件仿真加速器(例如palladium)提供了一种对实时运行时的数据进行监控的工具:SDL(State Description Language,状态描述语言)。SDL支持基于设计信号值控制并监控palladium运行,例如何时停止、或何时捕获探测数据等。通常情况下,SDL监控采样得到的数据需要暂存至palladium中的EXTRAM资源,由外部服务器或个人计算机上部署的编译器VXE从EXTRAM中读取缓存的SDL的采样数据,并显示在编译器VXE工具界面上。
然而,目前硬件仿真加速器palladium中的EXTRAM资源极为有限,并且,由于硬件仿真加速器各种编译器参数配置的影响限制,palladium中SDL写入EXTRAM的频率(即SDL的采样时钟频率)通常会大于编译器VEX从EXTRAM中读取的频率(即VEX的显示时钟频率),此种情形下,硬件仿真加速器palladium中的EXTRAM极易出现数据写满溢出现象,从而导致无法编译或者运行中内存溢出报错。
发明内容
本申请实施例提供一种基于硬件仿真加速器的数据缓存方法、装置、设备及介质,能够有效解决硬件仿真加速器运行过程中出现的数据溢出问题。
第一方面,本申请实施例提供一种基于硬件仿真加速器的数据缓存方法,该基于硬件仿真加速器的数据缓存方法包括:
在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制SDL功能组件向第一存储器缓存采样到的数据;第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器;
在检测到第一存储器处于数据存满状态的情况下,在多个动态缓冲存储器中确定第二存储器;第二存储器为第一存储器数据存满时具有空余缓存空间的动态缓冲存储器;
控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据;
其中,在多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;目标存储器用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。
在一些可能的实施方式中,该基于硬件仿真加速器的数据缓存方法还包括:
在控制SDL功能组件向第二存储器缓存采样到的数据的过程中,控制处于数据存满状态的第一存储器向目标存储器传输所存储的数据;
响应于编译器的数据读取请求,将目标存储器接收并存储的数据输出至编译器,以使编译器基于目标存储器提供的数据进行编译显示。
在一些可能的实施方式中,在控制SDL功能组件向第一存储器缓存采样到的数据之前,该基于硬件仿真加速器的数据缓存方法还包括:
获取SDL功能组件支持的采样时钟频率和编译器支持的显示时钟频率;
在采样时钟频率大于显示时钟频率的情况下,通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器。
在一些可能的实施方式中,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存方法还包括:
基于采样时钟频率和显示时钟频率的比值,确定所需创建的多个动态缓冲存储器的目标数量;
创建多个动态缓冲存储器,包括:
按照目标数量,创建多个动态缓冲存储器。
在一些可能的实施方式中,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存方法还包括:
基于目标存储器的内存大小,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器,包括:
按照所确定的任一动态缓冲存储器所占用的逻辑资源大小,调取硬件仿真加速器中处于空闲状态的逻辑资源,以创建多个动态缓冲存储器。
在一些可能的实施方式中,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存方法还包括:
获取硬件仿真加速器的编译选项配置参数;
基于编译选项配置参数,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器,包括:
按照所确定的任一动态缓冲存储器所占用的逻辑资源大小,调取硬件仿真加速器中处于空闲状态的逻辑资源,以创建多个动态缓冲存储器。
在一些可能的实施方式中,基于编译选项配置参数,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小,包括:
基于SDL实例化缓存计算公式,计算得到SDL实例化缓存;
基于SDL显示缓存计算公式,计算得到SDL显示缓存;
基于SDL实例化缓存和SDL显示缓存,确定任一动态缓冲存储器所占用的逻辑资源大小;
其中,SDL实例化缓存计算公式包括:T*N*20;
T是硬件仿真加速器中编译器选项指定的SDL追踪深度;N是硬件仿真加速器中编译器选项指定的SDL实例总数;
其中,SDL显示缓存计算公式包括:D*(G/8+W/8+8*N);
D是硬件仿真加速器中编译器选项指定的SDL显示深度;G是硬件仿真加速器中编译器选项指定的SDL全局显示指标;W是硬件仿真加速器中编译器选项指定的SDL显示宽度。
在一些可能的实施方式中,创建多个动态缓冲存储器,包括:
定义目标动态缓冲存储器中的数据位宽和地址深度;目标动态缓冲存储器为多个动态缓冲存储器中的任一动态缓冲存储器;
根据数据位宽和地址深度,声明目标动态缓冲存储器对应的二维数组;
在创建多个动态缓冲存储器之后,该基于硬件仿真加速器的数据缓存方法还包括:
在检测到目标动态缓冲存储器的读写时钟状态为第一状态时,控制SDL功能组件向目标动态缓冲存储器对应的二维数组缓存采样到的数据;
在检测到目标动态缓冲存储器的读写时钟状态为第二状态时,控制目标动态缓冲存储器向目标存储器传输二维数组中存储的数据。
在一些可能的实施方式中,SDL功能组件采样到的数据为SDL功能组件监控硬件仿真加速器中的至少一个信号得到;该基于硬件仿真加速器的数据缓存方法还包括:
在采样时钟频率大于显示时钟频率的情况下,若检测到硬件仿真加速器中处于空闲状态的逻辑资源不足时,降低SDL功能组件支持的采样时钟频率;
和/或, 减少当前SDL功能组件所监控的信号数量。
在一些可能的实施方式中,SDL功能组件采样到的数据为SDL功能组件监控硬件仿真加速器中的至少一个信号得到;该基于硬件仿真加速器的数据缓存方法还包括:
在SDL功能组件同时采样得到与多个信号一一对应的多个数据的情况下,确定多个信号中各信号的信号权重;
按照多个信号中各信号的信号权重,对多个数据进行优先级排序;
基于多个数据的优先级排序,控制SDL功能组件依次将多个数据缓存至多个动态缓冲存储器中。
第二方面,本申请实施例提供了一种基于硬件仿真加速器的数据缓存装置,该基于硬件仿真加速器的数据缓存装置包括:
第一控制模块,用于在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制SDL功能组件向第一存储器缓存采样到的数据;第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器;
第一确定模块,用于在检测到第一存储器处于数据存满状态的情况下,在多个动态缓冲存储器中确定第二存储器;第二存储器为第一存储器数据存满时具有空余缓存空间的动态缓冲存储器;
第二控制模块,用于控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据;
其中,在多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;目标存储器用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。
第三方面,本申请实施例提供了一种基于硬件仿真加速器的数据缓存设备,该基于硬件仿真加速器的数据缓存设备包括:
处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如上述本申请实施例中任意一项提供的基于硬件仿真加速器的数据缓存方法。
第四方面,本申请实施例提供了一种计算机存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如上述本申请实施例中任意一项提供的基于硬件仿真加速器的数据缓存方法。
本申请实施例的基于硬件仿真加速器的数据缓存方法、装置、设备及介质,通过在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制SDL功能组件向当前多个动态缓冲存储器中具有空余缓存空间的第一存储器缓存采样到的数据;在检测到第一存储器处于数据存满状态的情况下,重新在多个动态缓冲存储器中确定此时处于空闲状态的第二存储器;控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据。其中,在多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;上述目标存储器可以用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。相较于现有技术,本申请实施例提供的一种基于硬件仿真加速器的数据缓存方法、装置、设备及介质,通过控制切换上述多个动态缓冲存储器中的存储器缓存SDL功能组件采样到的数据,以及控制多个动态缓冲存储器中相应的动态缓冲存储器向目标存储器传输所存储的采样数据,相当于实现了SDL功能组件与目标存储器之间的数据缓冲,能够有效解决硬件仿真加速器运行过程中存在的目标存储器数据写满溢出的问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种相关技术中基于硬件仿真加速器的数据缓存方法的流程示意图;
图2是本申请实施例提供的一种基于硬件仿真加速器的数据缓存方法的流程示意图;
图3是本申请实施例提供的一种基于硬件仿真加速器的数据缓存方法的场景实施例流程示意图;
图4是本申请实施例提供的一种动态缓冲存储器的结构示意图;
图5是本申请实施例提供的另一种基于硬件仿真加速器的数据缓存方法的流程示意图;
图6是本申请实施例提供的一种基于硬件仿真加速器的数据缓存装置的结构示意图;
图7是本申请实施例提供的一种基于硬件仿真加速器的数据缓存设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
如背景技术部分所示,通常情况下,硬件仿真加速器运行过程中由SDL监控采样得到的数据需要暂存至palladium中的EXTRAM资源,再由外部服务器或个人计算机上部署的编译器VXE从EXTRAM中读取缓存的SDL的采样数据,并显示在编译器VXE工具界面上。为便于理解上述过程,下面请参见图1,图1是本申请实施例提供的一种相关技术中的基于硬件仿真加速器的数据缓存方法的流程示意图。如图1所示,硬件仿真加速器中的SDL功能组件会将其采样得到的数据传输并缓存至目标存储器中,该目标存储器可以相当于前文中的EXTRAM。编译器通过与硬件仿真加速器进行交互,实现对目标存储器中缓存数据的访问及读取,并将其显示至编译器工具界面中,该编译器可相当于前文中的编译器VXE,该编译器通常部署于外部服务器或个人计算机中。
然而,本申请发明人研究发现,上文介绍的相关技术中的缓存数据方案存在缺陷。具体原因在于:SDL使用的是硬件仿真加速器中的EXTRAM资源。目前随着芯片规模越来越大,SDL需要进行实时监控的信号也越来越多,从而导致采样数据量日益增多。而EXTRAM资源同硬件仿真加速器的容量相关,即:EXTRAM资源是有限的。因此,现阶段存在日益增多的待缓存的SDL采样数据与硬件仿真加速器中大小固定的EXTRAM资源不相匹配的问题。
并且,在实际应用中,由于硬件仿真加速器运行效率以及相应参数配置要求SDL采样数据速率不能过慢,而编译器的显示时钟频率又受限于外部服务器或个人计算机的频率,因此硬件仿真加速器中SDL写入EXTRAM的频率(即SDL的采样时钟频率)往往会大于编译器VEX从EXTRAM中读取的频率(即VEX的显示时钟频率)。
以硬件仿真加速器palladium为例,通常Palladium硬件仿真加速的频率理论上最大能够达到4Mhz,实际上通常只能达到100khz-1000khz,SDL采样频率需要与palladium硬件仿真加速器的频率适配,编译器VXE软件显示的频率大概为100khz。此种情形下,SDL在实际运行过程中采样频率过快,导致硬件仿真加速器中的EXTRAM极易出现数据写满溢出现象,从而导致无法编译或者运行中内存溢出报错。
然而,经本申请发明人进一步研究发现,为解决上述硬件仿真加速器运行过程中的EXTRAM数据写满溢出问题,现有方案中已经提出了一些解决方案,例如:通过增加硬件仿真加速器资源以增加SDL内存容量,即增加EXTRAM容量。但该方案由于硬件仿真加速器价格昂贵,无法大批量应用,方案实用性相对较低。因此,目前业界仍然亟待一种新的数据缓存方案,以有效解决上文提出的硬件仿真加速器运行过程中内存数据写满溢出的问题。
有鉴于上,为了解决上述现有技术问题,本申请实施例提供了一种基于硬件仿真加速器的数据缓存方法、装置、设备及介质。应注意,本申请提供的实施例并不用来限制本申请公开的范围。
下面首先对本申请实施例所提供的基于硬件仿真加速器的数据缓存方法进行介绍。
图2示出了本申请一实施例提供的基于硬件仿真加速器的数据缓存方法的流程示意图。此方法应用于硬件仿真加速器,该硬件仿真加速器具体可以包括palladium等。如图2所示,该基于硬件仿真加速器的数据缓存方法包括以下步骤:
S210、在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制SDL功能组件向第一存储器缓存采样到的数据;第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器;
S220、在检测到第一存储器处于数据存满状态的情况下,在多个动态缓冲存储器中确定第二存储器;第二存储器为第一存储器数据存满时具有空余缓存空间的动态缓冲存储器;
S230、控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据;其中,在多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;目标存储器可以用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。
通过上述描述可知,本申请实施例的基于硬件仿真加速器的数据缓存方法,通过在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制SDL功能组件向当前多个动态缓冲存储器中具有空余缓存空间的第一存储器缓存采样到的数据;在检测到第一存储器处于数据存满状态的情况下,重新在多个动态缓冲存储器中确定此时处于空闲状态的第二存储器;控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据。其中,在多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;上述目标存储器可以用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。
相较于现有技术,本申请实施例提供的一种基于硬件仿真加速器的数据缓存方法,通过控制切换上述多个动态缓冲存储器中的存储器缓存SDL功能组件采样到的数据,以及控制多个动态缓冲存储器中相应的动态缓冲存储器向目标存储器传输所存储的采样数据,能够实现SDL功能组件与目标存储器之间的数据缓冲,进而能够有效解决硬件仿真加速器运行过程中存在的目标存储器数据写满溢出的问题。
下面对上述步骤210至步骤220的具体实现方式进行详细描述。
在S210中,具体实现时,在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,从多个动态缓冲存储器中选取第一存储器,并控制SDL功能组件向第一存储器传输所采样到的数据,以将所采样的数据缓存至第一存储器中。应理解地是,本实施例及后文中出现的“控制”一词,具体可以包括调度、操控、干预等含义。
其中,上述第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器。换言之,该第一存储器为多个动态缓冲存储器中处于空闲状态的动态缓冲存储器。
本实施例中,上述多个动态缓冲存储器可以基于硬件仿真加速器中处于空闲状态的逻辑资源进行创建得到,动态缓冲存储器具体形式可以为随机存取存储器(randomaccess memory,RAM)。
上述多个动态缓冲存储器的具体数量可以根据实际需求动态调整,本申请对此不做限制,例如两个、三个甚至更多。以及,本实施例中SDL功能组件采样到的数据可以以数据流形式进行传输。
还需要补充地是,在上述多个动态缓冲存储器中包括不止一个具有空余缓存空间的存储器时,可以是从多个具有空余缓存空间的动态缓冲存储器中进行随机挑选。或者,在其他一些可行的实施例中,也可以是根据预先设定的动态缓冲存储器调取顺序进行上述第一存储器的选择,对此本申请不做严格限定。
在S220中,具体实现时,硬件仿真加速器控制SDL功能组件将所采样的数据缓存至第一存储器,直至第一存储器中的空余缓存空间占用完毕,在此过程中硬件仿真加速器可以持续或间歇性检测第一存储器的内存占用情况。
当在检测到第一存储器处于数据存满状态的情况下,确定下一个空闲的动态缓冲存储器,以用于后续动态缓冲存储器切换。具体地,当第一存储器数据存满时,从多个动态缓冲存储器中选取此时具有空余缓存空间的第二存储器。
与前述实施例类似,在多个动态缓冲存储器中存在不止一个具有空余缓存空间的动态缓冲存储器中,可以从该多个具有空余缓存空间的动态缓冲存储器中随机选取,或者按照预设调取顺序进行选取,以实现第二存储器的确定,本申请对此不做严格限制。
在S230中,具体实现时,由硬件仿真加速器控制SDL功能组件由第一存储器切换至向第二存储器缓存采样到的数据。如此,由已存满数据的第一存储器切换至具有空余缓存空间的第二存储器,使得SDL功能组件能够将采样到的数据有效传输并缓存至第二存储器中,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据。
应理解地是,本实施例中,在第二存储器中的空余缓存空间同样被占用完毕的情况下,可以是继续从上述多个动态缓冲加速器中选取具有空余缓存空间的动态缓冲存储器,并控制SDL功能组件切换至向该动态缓冲存储器缓存采样到的数据。以此类推,直至SDL功能组件采样到的数据传输完毕,或者,直至该硬件仿真加速器断电强制关机等。
其中,在上述多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,上述至少一个动态缓冲存储器中的各动态缓冲存储器可以分别向硬件仿真加速器中固定的目标存储器传输所存储的数据。
上述目标存储器设置在硬件仿真加速器中,可以用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。上述编译器可以部署在外部电子设备中,电子设备可以例如服务器或者个人计算机等。以硬件仿真加速器为palladium为例,该目标存储器可以是EXTRAM,该编译器可以为编译器VXE。
需要补充的是,在本申请一些实施例中,在上述至少一个动态缓冲存储器中的各动态缓冲存储器分别向目标存储器传输所存储的数据时,可以是在SDL功能组件采样到的数据传输完毕后,按照数据缓存顺序依次将各个动态缓冲存储器中存储的数据分批传输至目标存储器。
或者,也可以是在SDL功能组件向具有空余缓存空间的动态缓冲存储器传输采样到的数据的过程中,将已存满数据的动态缓冲存储器中存储的数据同步传输并缓存至目标存储器中,应理解的是,上述仅为示例,本申请并不以此为限。
以及,在一些可能的实施例中,为了进一步减少内存数据溢出可能性,在各个动态缓冲存储器分别向目标存储器传输所存储的数据的过程中,编译器还可以是将目标存储器中存储的数据实时读取出去,目标存储器中已被读取输出的数据会被同步清除。
在一些更为具体的实施方式中,可选的,为了更为合理地利用上述多个动态缓冲存储器,实现对SDL功能组件采样数据的数据缓冲,该基于硬件仿真加速器的数据缓存方法还可以包括:
在控制SDL功能组件向第二存储器缓存采样到的数据的过程中,控制处于数据存满状态的第一存储器向目标存储器传输所存储的数据;
响应于编译器的数据读取请求,将目标存储器接收并存储的数据输出至编译器,以使编译器基于目标存储器提供的数据进行编译显示。
具体实现时,可以在是在当前动态缓冲存储器接收并缓存SDL功能组件采样到的数据的同时,将上一个已经存满数据的动态缓冲存储器中存储的采样数据传输至目标存储器中进行缓存。
以及,在SDL功能组件采样时,硬件仿真加速器可以接收来自外部电子设备发起的编译器的数据读取请求,并响应于该数据读取请求将目标存储器所接收并存储的数据输出至编译器。如此,编译器在接收到目标存储器提供的数据后,通过对数据进行编译显示,能够使得相关仿真调试人员及时进行获知硬件仿真加速器的内部运行状况。
为便于理解,下面以一个具体实例对本申请提供的基于硬件仿真加速器的数据缓存方法进行介绍。示例性的,上述多个动态缓冲存储器由动态缓冲存储器1和动态缓冲存储器2组成。在SDL功能组件开始进行数据采样时,动态缓冲存储器1和动态缓冲存储器2均具备空余缓存空间。
具体实现时,在第一个数据缓冲周期,将SDL功能组件采样到的数据缓存至具有空余缓存空间的动态缓冲存储器1中,直至动态缓冲存储器1中写满存储数据。
在第二个数据缓冲周期,将SDL功能组件采样到的数据切换缓存至动态缓冲存储器2,同时将动态缓冲存储器1在第一个数据缓冲周期缓存的采样数据传送至硬件仿真加速器中固定的目标存储器中。
在第三个数据缓冲周期,将SDL功能组件采样到的数据由动态缓冲存储器2切换缓存回至动态缓冲存储器1中,同时将动态缓冲存储器2在第二个数据缓冲周期缓存的采样数据传输至上述目标存储器中,如此循环,最终直至SDL功能组件数据采样操作结束。
在以上举例的各个数据缓冲周期中,目标存储器中存储的数据会被外部编译器不断读取并同步清除,以便为接收来自动态缓冲存储器1或动态缓冲存储器2中缓存的数据提供可用缓存空间。如此,本示例通过对数据分流缓冲缓存的方式,最终有效解决了目标存储器的数据溢出的问题。
需要强调,上述多个动态缓冲存储器由动态缓冲存储器1和动态缓冲存储器2组成仅是一种可能示例,本申请并不以此为限。在其他一些实施方式中,上述多个动态缓冲存储器中除动态缓冲存储器1和动态缓冲存储器2外,还可以包括动态缓冲存储器3等。
这样,在达到前述示例中的第三个数据缓冲周期时,硬件仿真加速器可以将SDL功能组件采样到的数据由动态缓冲存储器2切换缓存至动态缓冲存储器3,同时将动态缓冲存储器2在第二个数据缓冲周期缓存的采样数据传输至上述目标存储器中,以此类推,本实施例对此不再继续展开描述。
为了便于理解上述实施例提供的基于硬件仿真加速器的数据缓存方法,以下以一个具体的场景实施例对上述方法进行说明。图3是本申请实施例提供的一种基于硬件仿真加速器的数据缓存方法的场景实施例流程示意图。
图3所示的场景实施例流程示意图中,硬件仿真加速器具体可以为palladium,目标存储器可以是EXTRAM,编译器可以为编译器VXE。该硬件仿真加速器中包括M选1数据选择单元,该M选1数据选择单元具体形式可以为使用verilog硬件描述语言编写得到的程序代码,可以用于承担数据缓存过程中的动态缓冲存储器的选择切换功能。
图3中的M个动态缓冲存储器具体可以基于硬件仿真加速器中处于空闲状态的逻辑资源进行创建得到,M个动态缓冲存储器中任一动态缓冲存储器具体形式可以为RAM。
本场景实施例中,在SDL功能组件开始进行数据采样时,动态缓冲存储器1、动态缓冲存储器2至动态缓冲存储器M均具备空余缓存空间。
具体实现时,示例性地,在SDL功能组件开始进行数据采样的情况下,硬件仿真加速器palladium通过调度M选1数据选择单元,将SDL功能采样到的数据缓存至具有空余缓存空间的动态缓冲存储器1。
在将采样数据存储至动态缓冲存储器1的过程中,硬件仿真加速器palladium实时判断动态缓冲存储器1的内存状态,如果检测到该动态缓冲存储器1中数据写满已不具备空余缓冲空间,则重新调度M选1数据选择单元,将SDL功能组件采样到的数据由动态缓冲存储器1切换缓存至动态缓冲存储器2。
在由动态缓冲存储器2缓存SDL功能组件采样组件得到的数据的过程中,硬件仿真加速器palladium还可以调度M选1数据选择单元,以优先将动态缓冲存储器1中存满的采样数据传送至目标存储器EXTRAM中。
依此类推,通过将SDL功能组件的采样数据写入上述M个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器中,并在当前动态缓冲存储器写满数据后执行动态缓冲存储器切换,以此完成对SDL功能组件采样数据的缓存缓冲。
并且,此过程中,硬件仿真加速器palladium按照采样数据写入动态缓冲存储器的顺序,将上述M个动态缓冲存储器中至少一个动态缓冲存储器所缓存的采样数据分批缓存至目标存储器EXTRAM中。以及,此过程中,目标存储器EXTRAM可以实时向编译器VXE提供SDL功能组件采样到的数据,以使编译器VXE能够对采样数据进行及时编译显示。
本实施例中,通过在SDL功能组件及目标存储器EXTRAM中执行如上述实施例中的数据缓冲操作,从而解决了现有不同规模集成电路使用硬件仿真加速器(Palladium)SDL功能组件进行实时数据监控时的内存不足或者溢出的问题。本申请使用多个动态缓冲存储器突破palladium的硬件容量限制,通过整合硬件内存资源,使用硬件仿真加速器palladium内部空闲的逻辑资源来构建上述多个动态缓冲存储器,使得硬件仿真加速器palladium资源利用率呈现最大化,同时间接节约了成本,避免了逻辑资源浪费。
根据本申请的一些实施例,可选的,考虑到若编译器支持的显示时钟频率等于或高于SDL功能组件支持的采样时钟频率,那么在实际仿真测试过程中,即使不引入本申请中上述多个动态缓冲存储器,目标存储器中所存储的SDL功能组件采样到的数据也能够被编译器快速读取出去,目标存储器内存数据溢出的可能性相对较小。
基于此,为了更具有针对性地应用本申请中的数据缓存方案,以避免增加数据传输流程复杂度以及硬件仿真加速器中不必要的逻辑资源占用,在控制SDL功能组件向第一存储器缓存采样到的数据之前,该基于硬件仿真加速器的数据缓存方法还可以包括:
获取SDL功能组件支持的采样时钟频率和编译器支持的显示时钟频率;
在采样时钟频率大于显示时钟频率的情况下,通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器。
具体实现时,上述SDL功能组件支持的采样时钟频率由硬件仿真加速器具体配置参数决定。编译器支持的显示时钟频率通常取决于编译器所在服务器或个人计算机的显示频率。
上述采样时钟频率和显示时钟频率可以预先基于与硬件仿真加速器的软硬件交互手段传输至硬件仿真加速器中,以实现其对采样时钟频率和显示时钟频率的获取。
其中,上述与硬件仿真加速器的软硬件交互手段,可以具体例如硬件仿真加速器palladium与其控制软件XeDebug之间的交互等,本申请对此不做具体限制。
在硬件仿真加速器获取到SDL功能组件支持的采样时钟频率和编译器支持的显示时钟频率后,通过对二者进行比对,判断采样时钟频率和显示时钟频率之间的大小关系。在确定采样时钟频率大于显示时钟频率的情况下,调配硬件仿真加速器中闲置的逻辑资源,创建得到上述多个动态缓冲存储器。
需要补充的是,上述闲置的逻辑资源可以例如硬件仿真加速器中未被占用的逻辑门资源等,多个动态缓冲存储器可具体例如RAM等可同时支持读写的存储器,对此本申请不做严格限定。
在一些更为具体的实施例中,考虑到硬件仿真加速器中逻辑资源的使用并非没有限制,因此,为了实现对空闲逻辑资源更为高效地利用,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存方法还可以包括:
基于采样时钟频率和显示时钟频率的比值,确定所需创建的多个动态缓冲存储器的目标数量;上述创建多个动态缓冲存储器,可以包括:
按照目标数量,创建多个动态缓冲存储器。
具体实现时,在获取到上述采样时钟频率和显示时钟频率,并确认采样时钟频率大于显示时钟频率的情况下,通过计算采样时钟频率和显示时钟频率的比值,确定具体所需创建的动态缓冲存储器的目标数量,以此实现对硬件仿真加速器中空闲逻辑资源的合理规划及利用。
示例性地,若SDL功能组件的采样时钟频率是编译器显示时钟频率的5倍,则可以将所需创建的动态缓冲存储器的数量配置为5。
以及,在一些可能的情形下,在上述SDL采样时钟频率和编译器显示时钟频率的比值不为整数时,可以按照预设规则进行取整。例如,通过对计算得到的比值的整数部分进行加1取整等,本实施例对此不做严格限制,具体可结合实际数据缓冲需求等设置。
在一些更为具体的实施例中,与前述实施例类似地,考虑到硬件仿真加速器中逻辑资源的使用并非没有限制,因此为了进一步高效地实现对硬件仿真加速器中空闲逻辑资源的利用,可选的,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存方法还可以包括:
基于目标存储器的内存大小,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
上述通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器,可以包括:按照所确定的任一动态缓冲存储器所占用的逻辑资源大小,调取硬件仿真加速器中处于空闲状态的逻辑资源,以创建多个动态缓冲存储器。
具体举例而言,可以直接按照目标存储器的内存大小来调取硬件仿真加速器中处于空闲状态的逻辑资源,以创建多个与目标存储器同等大小的动态缓冲存储器。
或者,考虑到在一些情形下,目标存储器的内存资源并非均可供SDL功能组件的采样数据进行缓存。基于此,本实施例中,还可以按照目标存储器的向SDL采样数据提供的最大可用内存占比确定任一动态缓冲存储器所占用的逻辑资源大小。如此,能够进一步实现对硬件仿真加速器中闲置逻辑资源的有效利用。
在一个具体示例中,硬件仿真加速器为palladium,目标存储器可以是EXTRAM。SDL功能组件最终缓存采样数据使用的是Palladium的EXTRAM资源,但是EXTRAM的资源并不是全部给SDL使用的。在理想状态下,SDL功能组件仅能够占用EXTRAM70%左右的资源。
例如,若EXTRAM的内存容量上限为64G,那么SDL功能组件实际最大可用EXTRAM内存容量为:64G*70%=44.8G。此种情形下,可以将按照44.8G的内存大小调取palladium中的空闲逻辑资源,以创建多个内存大小均为44.8G的动态缓冲存储器。
当然,有时为了充分保障实现多个动态缓冲存储器的数据缓冲功能,也可以将各个动态缓冲存储器的内存大小配置在44.8G至64G范围内。其中,不同动态缓冲存储器内存大小可不相同。
根据本申请的一些实施例,为了实现对空闲逻辑资源更为高效地利用,可选的,除了上述可以基于目标存储器的内存大小来确定所需配置的各个动态缓冲存储器的内存大小外,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存方法还可以包括:
获取硬件仿真加速器的编译选项配置参数;
基于编译选项配置参数,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器,可以包括:
按照所确定的任一动态缓冲存储器所占用的逻辑资源大小,调取硬件仿真加速器中处于空闲状态的逻辑资源,以创建多个动态缓冲存储器。
具体地,为保障硬件仿真加速器中不同功能的正常运转,在实际应用前往往需要提前为硬件仿真加速器进行相关参数配置。其中,硬件仿真加速器的编译选项配置参数则具体关乎SDL功能组件的功能实现。
本实施例中,通过参考与SDL功能组件相关联的编译选项配置参数,来具体确定多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小,多个动态缓冲存储器用于对SDL功能组件采样到的数据进行缓冲。如此,有助于针对性地创建上述多个动态缓冲存储器。
根据本申请的一些实施例,更为具体地,上述基于编译选项配置参数,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小,可以包括:
基于SDL实例化缓存计算公式,计算得到SDL实例化缓存;
基于SDL显示缓存计算公式,计算得到SDL显示缓存;
基于SDL实例化缓存和SDL显示缓存,确定任一动态缓冲存储器所占用的逻辑资源大小;
上述SDL实例化缓存计算公式可以包括:T*N*20。
上述SDL显示缓存计算公式可以包括:D*(G/8+W/8+8*N)。
在上述SDL实例化缓存计算公式和SDL显示缓存计算公式中,T是硬件仿真加速器中编译器选项指定的SDL追踪深度,即硬件仿真加速器编译器选项sdlTraceDepth指定的值。N是硬件仿真加速器中编译器选项指定的SDL实例总数,即硬件仿真加速器编译器选项sdlinstance指定的值。
D是硬件仿真加速器中编译器选项指定的SDL显示深度,即硬件仿真加速器编译器选项sdlDisplayDepth指定的深度。G是硬件仿真加速器中编译器选项指定的SDL全局显示指标,即硬件仿真加速器编译器选项sdlGlobalDisplay指定的值。W是硬件仿真加速器中编译器选项指定的SDL显示宽度,即硬件仿真加速器编译器选项sdlDisplayWidth指定的值。
以及,需要补充的是,本申请中的SDL功能组件运行依赖于SDL脚本调用,SDL脚本由各类实例化模块(INSTANCE)构成。上述SDL实例化缓存可理解为上述不同实例化模块缓存所需占用的内存大小。
上述SDL显示缓存可理解为支撑SDL采样数据缓存所需的内存大小。SDL实例化缓存(SDL trace buffer)和SDL显示缓存(SDL display buffer)都会消耗的硬件仿真加速器中目标存储器的内存资源。
举例而言,在硬件仿真加速器中,若以下编译选项配置参数成立:
sdlTraceDepth=8M (T);
sdlinstance=64 (N);
sdlDisplayDepth=8M (D);
sdlGlobalDisplay=64 (G);
sdlDisplayWidth=32k (W);
那么,由前述SDL显示缓存计算公式则可以计算得到,此硬件仿真加速器中的SDL显示缓存为:8M * (64/8 + 32768/8 + 64*3) = 34GB。
由上述SDL实例化缓存计算公式可以计算得到,该硬件仿真加速器中的SDL实例化缓存为:8M*64*20=10GB。
此种情形下,上述基于SDL实例化缓存和SDL显示缓存,确定任一动态缓冲存储器所占用的逻辑资源大小,则可以例如:按照SDL实例化缓存和SDL显示缓存之和44GB调取硬件仿真加速器中的空闲逻辑资源,以创建多个内存大小均为44G的动态缓冲存储器。
当然,有时为了充分保障实现多个动态缓冲存储器的数据缓冲功能,也可以将各个动态缓冲存储器的内存大小配置地较44GB稍大些。其中,不同动态缓冲存储器内存大小可不相同。
需要说明的是,在其他一些可行的实施例中,在计算得到上述SDL实例化缓存和SDL显示缓存之后,也可结合实际需求为SDL实例化缓存和SDL显示缓存赋予不同权重并进行相应逻辑运算处理(例如逻辑加、逻辑乘等),来实现对多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小的确定,本申请对具体如何运用上述SDL实例化缓存和SDL显示缓存并不做具体限制。
根据本申请的一些实施例,下面请参见图4及图5来对动态缓冲存储器的具体创建以及读写操作过程进行详细介绍。图4是本申请实施例提供的一种动态缓冲存储器的结构示意图;图5是本申请实施例提供的另一种基于硬件仿真加速器的数据缓存方法的流程示意图。
结合图4及图5,可选的,上述创建多个动态缓冲存储器,可以包括:
定义目标动态缓冲存储器中的数据位宽和地址深度;目标动态缓冲存储器为多个动态缓冲存储器中的任一动态缓冲存储器;
根据数据位宽和地址深度,声明目标动态缓冲存储器对应的二维数组;
在创建多个动态缓冲存储器之后,该基于硬件仿真加速器的数据缓存方法还可以包括:
在检测到目标动态缓冲存储器的读写时钟状态为第一状态时,控制SDL功能组件向目标动态缓冲存储器对应的二维数组缓存采样到的数据;
在检测到目标动态缓冲存储器的读写时钟状态为第二状态时,控制目标动态缓冲存储器向目标存储器传输二维数组中存储的数据。
具体实现时,上述多个动态缓冲存储器的具体形式可以为RAM或寄存器等。以动态缓冲存储器为RAM为例,如图4所示,RAM的结构只主要由三部分电路组成:
1)行、列地址译码器:它是一个二进制译码器,将地址码翻译成行列对应的具体地址,然后去选通该地址的存储单元,对该单元中的信息进行读出操作或进行写入新的信息操作。例如一个10位的地址码A4A3A2A1A0=00101,B4B3B2B1B0=00011时,则将对应于第5行第3列的存储单元被选中。
2)存储体:它是存放大量二进制信息的“仓库”,该仓库由成千上万个存储单元组成。而每个存储单元存放着一个二进制字信息,二进制字可能是一位的,也可能多位。存储体或RAM的容量:存储单元的个数*每个存储单元中数据的位数。例如一个10位地址的RAM,共有210个存储单元,若每个存储单元存放一位二进制信息,则该RAM的容量就是210(字)×1(位)=1024字位,通常称1K字位(容量)。
3)I/O及读写控制电路:该部分电路决定着存储器是进行读出信息操作还是写入新信息操作。RAM可以与其它的外面电路相连接,实现信息的双向传输(即可输入,也可输出),使信息的交换和传递十分方便。其中,RAM的片选端可用于接收片选信号,若接收到片选信号,则代表当前RAM被选中,选中后此RAM才能进行数据的读写操作。
请参见图5,下面以目标动态缓冲存储器为例对其具体创建以及数据缓存处理过程进行介绍。其中,目标动态缓冲存储器为多个动态缓冲存储器中的任一动态缓冲存储器。
在图5所示的流程示意图中,首先定义目标动态缓冲存储器中的数据位宽(DATA_WIDTH)和地址深度(ADDR_WIDTH)。再根据所定义的目标动态缓冲存储器的数据位宽和地址深度,声明目标动态缓冲存储器对应的二维数组,以此实现对目标动态缓冲存储器的创建。
其中,上述目标动态缓冲存储器的数据位宽和地址深度,具体可以结合前述实施例中计算得到的动态缓冲存储器占用的逻辑资源大小、硬件仿真加速器中可用的闲置逻辑资源以及相关数据操作经验等来具体定义,本申请对此不作展开说明。
在创建上述目标动态缓冲存储器之后,通过对上述二维数组进行数据写入或者数据读取,以实现此目标动态缓冲存储器在SDL功能组件与目标存储器之间的数据缓冲。
继续结合图5所示,在硬件仿真加速器中,上述目标动态缓冲存储器配置有其对应的读写时钟。读写时钟的不同值,指示该目标动态缓冲存储器的不同读写时钟状态。
在检测到目标动态缓冲存储器的读写时钟状态为第一状态时,例如检测到读写时钟WE=1时,控制SDL功能组件向目标动态缓冲存储器对应的二维数组缓存采样到的数据。在检测到目标动态缓冲存储器的读写时钟状态为第二状态时,例如WE=0,则控制目标动态缓冲存储器向目标存储器传输二维数组中存储的数据。
需要说明的是,为了更为合理地实现对上述二维数组的数据操作,在进行数据缓存以及数据读取输出时,还可以指定在二维数组中的具体操作地址。例如,根据地址A,将SDL功能组件采样的数据Data1写入该目标动态缓冲存储器对应的二维数组中,以实现对此二维数组的数据写入操作(Write)。根据地址B,将该目标动态缓冲存储器对应的二维数组中存储的数据Data2读取并输出值目标存储器中,以实现对此二维数据的数据读取操作(Read)。
以及,在实际应用过程中,除参考上述目标动态缓冲存储器的读写时钟状态对二维数组进行操作外,还可以结合其他时钟信号来更为合理、准确地实现对此目标动态缓冲存储器的操作。
例如,在另一些实施例中,在硬件仿真加速器中还可以设置有芯片使能信号CE,该信号CE的值可以用于具体指示硬件仿真加速器中芯片使能(chip enable)情况。
如此,在对目标动态缓冲存储器的二维数组进行数据写入或数据读取操作之前,可以先通过检测信号CE的值,来确认硬件仿真加速器中芯片是否使能有效。
这样,在确认硬件仿真加速器中芯片使能有效的情况下,再具体判断目标动态缓冲存储器的读写时钟状态,从而更为有效地执行了对上述二维数组的数据读写操作。
根据本申请的一些实施例,经本申请发明人研究发现,在创建多个动态缓冲存储器的阶段,有可能存在由于硬件仿真加速器中逻辑资源占用繁忙、闲置逻辑资源不足,从而导致动态缓冲存储器无法正常创建的情形。
但是,若无法正常创建动态缓冲存储器,则无法通过数据缓冲来解决硬件仿真加速器中的目标存储器中出现的数据写满溢出问题,从而有可能导致无法编译或者运行中内存溢出报错的严重后果。
因此,针对上述无法正常创建动态缓冲存储器的情形,本申请提出采用以下方案来有效缓解SDL功能组件采样数据对目标存储器的缓存压力,以避免硬件仿真加速器运行过程中出现上述无法编译或者运行中内存溢出报错等严重后果。具体地,上述SDL功能组件采样到的数据为SDL功能组件监控硬件仿真加速器中的至少一个信号得到;该基于硬件仿真加速器的数据缓存方法还可以包括:
在采样时钟频率大于显示时钟频率的情况下,若检测到硬件仿真加速器中处于空闲状态的逻辑资源不足时,降低SDL功能组件支持的采样时钟频率;
和/或,减少当前SDL功能组件所监控的信号数量。
为便于理解本实施例,下面先对SDL功能组件运行机制进行解释。本实施例中,SDL功能组件运行依赖于SDL脚本调用,SDL脚本由不同实例化模块(INSTANCE)构成。其中,实例化模块内部具体又由状态机(STATE Machine)构成,状态机内部可以根据预设触发条件触发状态跳转,跳转后运行预设程序指令以执行预设操作。
上述SDL功能组件采样到的数据,具体可以是基于至少一个实例化模块监控硬件仿真加速器中的至少一个信号得到。当硬件仿真加速器测试需求变化,SDL功能组件所需监控的信号数量也会随之改变,相应地,所运行的实例化模块的数量也会有所调整。示例性地,SDL脚本中包括实例化模块1,该实例化模块1中的状态机用于实时对信号data_in进行监控,若data_in信号值变化发生更新,则会触发状态跳转,将(例如更新后的data_in信号值等)反馈输出。
换言之,SDL功能组件通过该实例化模块1监控信号data_in,并在监控此信号的过程中进行数据采样。其中,采样得到的数据可以为上述信号变化信息,例如更新后的data_in信号值及信号值更新时间等。
由上述SDL功能组件运行机制可知,SDL功能组件采样数据的数据量实际上会受到运行的实例化模块的数量影响。通常所需监控的信号越多,所运行的实例化模块数量愈多,最终SDL功能组件采样得到的数据量增加。此外,SDL功能组件的采样时钟频率越大,也会使得单位时间内采样得到的数据量越大,从而进一步使得目标存储器中内存数据溢出概率增加。
基于此,本实施例中,在采样时钟频率大于显示时钟频率的情况下,若检测到硬件仿真加速器中闲置逻辑资源不足,则通过动态降低SDL功能组件支持的采样时钟频率;和/或,减少当前SDL功能组件所监控的信号数量,来有效减少SDL功能组件采样数据量,以此来缓解SDL功能组件采样数据对目标存储器的缓存压力,进而避免硬件仿真加速器运行过程中出现上述无法编译或者运行中内存溢出报错等严重后果。
根据本申请的一些实施例,可选的,本申请发明人考虑到在实际基于硬件仿真加速器进行芯片仿真测试时,不同采样信号对于仿真测试的重要度可能并不一致。一些情形下,相关测试人员可能希望能够优先编译显示重要信号对应的采样数据。
基于此,本实施例为了有效实现对SDL功能组件采样数据的合理调度缓存,上述SDL功能组件采样到的数据为SDL功能组件监控硬件仿真加速器中的至少一个信号得到;该基于硬件仿真加速器的数据缓存方法还可以包括:
在SDL功能组件同时采样得到与多个信号一一对应的多个数据的情况下,确定多个信号中各信号的信号权重;
按照多个信号中各信号的信号权重,对多个数据进行优先级排序;
基于多个数据的优先级排序,控制SDL功能组件依次将多个数据缓存至多个动态缓冲存储器中。
本实施例中,为了充分实现对采样数据的合理调度,首先在获取基于SDL功能组件采样得到的多个信号各自对应的数据的情况下,对不同数据对应的不同信号的信号权重。其中,该信号权重可以是由相关测试人员根据实际仿真测试需求及相关经验设定,并预先写入硬件仿真加速器中。
在确定多个信号中各信号的信号权重之后,按照多个信号中各信号的信号权重,对多个数据进行优先级排序。例如,信号的信号权重越大,该信号对应数据的优先级越高。
如此,在确定上述多个数据的优先级排序之后,根据多个数据的优先级不同,控制SDL功能组件依次将多个数据缓存至多个动态缓冲存储器中。例如,数据优先级越高,则控制SDL功能组件愈先将此数据优先缓存至多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器中。
这样一来,通过对不同数据的缓存操作进行优先级调度,使得优先级较高的数据能够优先缓存,从而有利于保证后续缓存至目标存储器中以输出给编译器,使得编译器能够对优先级高的数据优先编译显示,最终灵活有效地实现了对SDL功能组件采样数据的合理调度缓存。
基于上述实施例提供的基于硬件仿真加速器的数据缓存方法,本申请还提供了与上述基于硬件仿真加速器的数据缓存方法相对应的一种基于硬件仿真加速器的数据缓存装置,下面通过图6对基于硬件仿真加速器的数据缓存装置进行详细介绍。
图6示出了本申请一实施例提供的基于硬件仿真加速器的数据缓存装置的结构示意图。图6示出的基于硬件仿真加速器的数据缓存装置600包括:
第一控制模块610,用于在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制SDL功能组件向第一存储器缓存采样到的数据;第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器;
第一确定模块620,用于在检测到第一存储器处于数据存满状态的情况下,在多个动态缓冲存储器中确定第二存储器;第二存储器为第一存储器数据存满时具有空余缓存空间的动态缓冲存储器;
第二控制模块630,用于控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据;
其中,在多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;目标存储器用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。
本申请实施例的基于硬件仿真加速器的数据缓存装置,通过设置相应的功能模块,以在硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制SDL功能组件向当前多个动态缓冲存储器中具有空余缓存空间的第一存储器缓存采样到的数据;在检测到第一存储器处于数据存满状态的情况下,重新在多个动态缓冲存储器中确定此时处于空闲状态的第二存储器;控制SDL功能组件切换至向第二存储器缓存采样到的数据,以通过多个动态缓冲存储器缓存SDL功能组件采样到的数据。其中,在多个动态缓冲存储器中至少一个动态缓冲存储器存满SDL功能组件采样到的数据的情况下,至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;上述目标存储器可以用于向与硬件仿真加速器适配的编译器提供SDL功能组件采样到的数据。相较于现有技术,本申请实施例提供的一种基于硬件仿真加速器的数据缓存装置,通过控制切换上述多个动态缓冲存储器中的存储器缓存SDL功能组件采样到的数据,以及控制多个动态缓冲存储器中相应的动态缓冲存储器向目标存储器传输所存储的采样数据,相当于实现了SDL功能组件与目标存储器之间的数据缓冲,能够有效解决硬件仿真加速器运行过程中存在的目标存储器数据写满溢出的问题。
在一些可能的实施方式中,该基于硬件仿真加速器的数据缓存装置还可以包括:
第二控制模块,可以用于在控制SDL功能组件向第二存储器缓存采样到的数据的过程中,控制处于数据存满状态的第一存储器向目标存储器传输所存储的数据;
第一输出模块,可以用于响应于编译器的数据读取请求,将目标存储器接收并存储的数据输出至编译器,以使编译器基于目标存储器提供的数据进行编译显示。
在一些可能的实施方式中,在控制SDL功能组件向第一存储器缓存采样到的数据之前,该基于硬件仿真加速器的数据缓存装置还可以包括:
第一获取模块,可以用于获取SDL功能组件支持的采样时钟频率和编译器支持的显示时钟频率;
第一创建模块,可以用于在采样时钟频率大于显示时钟频率的情况下,通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器。
在一些可能的实施方式中,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存装置还可以包括:
第二确定模块,可以用于基于采样时钟频率和显示时钟频率的比值,确定所需创建的多个动态缓冲存储器的目标数量;
上述创建多个动态缓冲存储器,具体可以包括:
按照目标数量,创建多个动态缓冲存储器。
在一些可能的实施方式中,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存装置还可以包括:
第三确定模块,可以用于基于目标存储器的内存大小,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
上述第一创建模块、通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器,具体可以包括:
按照所确定的任一动态缓冲存储器所占用的逻辑资源大小,调取硬件仿真加速器中处于空闲状态的逻辑资源,以创建多个动态缓冲存储器。
在一些可能的实施方式中,在创建多个动态缓冲存储器之前,该基于硬件仿真加速器的数据缓存装置还可以包括:
第二获取模块,可以用于获取硬件仿真加速器的编译选项配置参数;
第四确定模块,可以用于基于编译选项配置参数,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
上述第一创建模块、通过调取硬件仿真加速器中处于空闲状态的逻辑资源,创建多个动态缓冲存储器,具体可以包括:
按照所确定的任一动态缓冲存储器所占用的逻辑资源大小,调取硬件仿真加速器中处于空闲状态的逻辑资源,以创建多个动态缓冲存储器。
在一些可能的实施方式中,上述第四确定模块、基于编译选项配置参数,确定所需创建的多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小,具体可以包括:
第一计算子模块,可以用于基于SDL实例化缓存计算公式,计算得到SDL实例化缓存;
第二计算子模块,可以用于基于SDL显示缓存计算公式,计算得到SDL显示缓存;
第一确定子模块,可以用于基于SDL实例化缓存和SDL显示缓存,确定任一动态缓冲存储器所占用的逻辑资源大小;
其中,SDL实例化缓存计算公式可以包括:T*N*20;
T是硬件仿真加速器中编译器选项指定的SDL追踪深度;N是硬件仿真加速器中编译器选项指定的SDL实例总数;
其中,SDL显示缓存计算公式可以包括:D*(G/8+W/8+8*N);
D是硬件仿真加速器中编译器选项指定的SDL显示深度;G是硬件仿真加速器中编译器选项指定的SDL全局显示指标;W是硬件仿真加速器中编译器选项指定的SDL显示宽度。
在一些可能的实施方式中,上述创建多个动态缓冲存储器,具体可以包括:
定义目标动态缓冲存储器中的数据位宽和地址深度;目标动态缓冲存储器为多个动态缓冲存储器中的任一动态缓冲存储器;
根据数据位宽和地址深度,声明目标动态缓冲存储器对应的二维数组;
在创建多个动态缓冲存储器之后,该基于硬件仿真加速器的数据缓存装置还可以包括:
第三控制模块,可以用于在检测到目标动态缓冲存储器的读写时钟状态为第一状态时,控制SDL功能组件向目标动态缓冲存储器对应的二维数组缓存采样到的数据;
第四控制模块,可以用于在检测到目标动态缓冲存储器的读写时钟状态为第二状态时,控制目标动态缓冲存储器向目标存储器传输二维数组中存储的数据。
在一些可能的实施方式中,SDL功能组件采样到的数据可以为SDL功能组件监控硬件仿真加速器中的至少一个信号得到;该基于硬件仿真加速器的数据缓存装置还可以包括:
调节模块,可以用于在采样时钟频率大于显示时钟频率的情况下,若检测到硬件仿真加速器中处于空闲状态的逻辑资源不足时,降低SDL功能组件支持的采样时钟频率;
和/或,减少当前SDL功能组件所监控的信号数量。
在一些可能的实施方式中,SDL功能组件采样到的数据可以为SDL功能组件监控硬件仿真加速器中的至少一个信号得到;该基于硬件仿真加速器的数据缓存装置还可以包括:
第五确定模块,可以用于在SDL功能组件同时采样得到与多个信号一一对应的多个数据的情况下,确定多个信号中各信号的信号权重;
排序模块,可以用于按照多个信号中各信号的信号权重,对多个数据进行优先级排序;
第五控制模块,可以用于基于多个数据的优先级排序,控制SDL功能组件依次将多个数据缓存至多个动态缓冲存储器中。
基于本申请上述实施例提供的基于硬件仿真加速器的数据缓存方法,下面对本申请提供的一种基于硬件仿真加速器的数据缓存设备进行介绍。请参见图7,图7是本申请一实施例提供的基于硬件仿真加速器的数据缓存设备的结构示意图。
基于硬件仿真加速器的数据缓存设备可以包括处理器701以及存储有计算机程序指令的存储器702。
具体地,上述处理器701可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit ,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器702可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器702可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器702可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器702可在综合网关容灾设备的内部或外部。在特定实施例中,存储器702是非易失性固态存储器。
存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。
处理器701通过读取并执行存储器702中存储的计算机程序指令,以实现上述实施例中的任意一种基于硬件仿真加速器的数据缓存方法。
在一个示例中,数据基于硬件仿真加速器的数据缓存设备还可包括通信接口703和总线710。其中,如图7所示,处理器701、存储器702、通信接口703通过总线710连接并完成相互间的通信。
通信接口703,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线710包括硬件、软件或两者,将基于硬件仿真加速器的数据缓存设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、***组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线710可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该基于硬件仿真加速器的数据缓存设备执行本申请实施例中的基于硬件仿真加速器的数据缓存方法,从而实现图2描述的基于硬件仿真加速器的数据缓存方法。
另外,结合上述实施例中的基于硬件仿真加速器的数据缓存方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种基于硬件仿真加速器的数据缓存方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或***。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
Claims (11)
1.一种基于硬件仿真加速器的数据缓存方法,其特征在于,所述方法包括:
在所述硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制所述SDL功能组件向第一存储器缓存采样到的数据;所述第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器;
在检测到所述第一存储器处于数据存满状态的情况下,在所述多个动态缓冲存储器中确定第二存储器;所述第二存储器为所述第一存储器数据存满时具有空余缓存空间的动态缓冲存储器;
控制所述SDL功能组件切换至向所述第二存储器缓存采样到的数据,以通过所述多个动态缓冲存储器缓存所述SDL功能组件采样到的数据;
其中,在所述多个动态缓冲存储器中至少一个动态缓冲存储器存满所述SDL功能组件采样到的数据的情况下,所述至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;所述目标存储器用于向与所述硬件仿真加速器适配的编译器提供所述SDL功能组件采样到的数据;
在所述控制所述SDL功能组件向第一存储器缓存采样到的数据之前,所述方法还包括:
获取所述SDL功能组件支持的采样时钟频率和所述编译器支持的显示时钟频率;
在所述采样时钟频率大于所述显示时钟频率的情况下,通过调取所述硬件仿真加速器中处于空闲状态的逻辑资源,创建所述多个动态缓冲存储器;
在所述创建所述多个动态缓冲存储器之前,所述方法还包括:
基于所述采样时钟频率和所述显示时钟频率的比值,确定所需创建的所述多个动态缓冲存储器的目标数量;
所述创建所述多个动态缓冲存储器,包括:
按照所述目标数量,创建所述多个动态缓冲存储器。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在控制所述SDL功能组件向所述第二存储器缓存采样到的数据的过程中,控制处于数据存满状态的所述第一存储器向所述目标存储器传输所存储的数据;
响应于所述编译器的数据读取请求,将所述目标存储器接收并存储的数据输出至所述编译器,以使所述编译器基于所述目标存储器提供的数据进行编译显示。
3.根据权利要求1所述的方法,其特征在于,在所述创建所述多个动态缓冲存储器之前,所述方法还包括:
基于所述目标存储器的内存大小,确定所需创建的所述多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
所述通过调取所述硬件仿真加速器中处于空闲状态的逻辑资源,创建所述多个动态缓冲存储器,包括:
按照所确定的所述任一动态缓冲存储器所占用的逻辑资源大小,调取所述硬件仿真加速器中处于空闲状态的逻辑资源,以创建所述多个动态缓冲存储器。
4.根据权利要求1所述的方法,其特征在于,在所述创建所述多个动态缓冲存储器之前,所述方法还包括:
获取所述硬件仿真加速器的编译选项配置参数;
基于所述编译选项配置参数,确定所需创建的所述多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小;
所述通过调取所述硬件仿真加速器中处于空闲状态的逻辑资源,创建所述多个动态缓冲存储器,包括:
按照所确定的所述任一动态缓冲存储器所占用的逻辑资源大小,调取所述硬件仿真加速器中处于空闲状态的逻辑资源,以创建所述多个动态缓冲存储器。
5.根据权利要求4所述的方法,其特征在于,所述基于所述编译选项配置参数,确定所需创建的所述多个动态缓冲存储器中任一动态缓冲存储器所占用的逻辑资源大小,包括:
基于SDL实例化缓存计算公式,计算得到SDL实例化缓存;
基于SDL显示缓存计算公式,计算得到SDL显示缓存;
基于所述SDL实例化缓存和所述SDL显示缓存,确定所述任一动态缓冲存储器所占用的逻辑资源大小;
其中,所述SDL实例化缓存计算公式包括:T*N*20;
T是所述硬件仿真加速器中编译器选项指定的SDL追踪深度;N是所述硬件仿真加速器中编译器选项指定的SDL实例总数;
其中,所述SDL显示缓存计算公式包括:D*(G/8+W/8+8*N);
D是所述硬件仿真加速器中编译器选项指定的SDL显示深度;G是所述硬件仿真加速器中编译器选项指定的SDL全局显示指标;W是所述硬件仿真加速器中编译器选项指定的SDL显示宽度。
6.根据权利要求1所述的方法,其特征在于,所述创建所述多个动态缓冲存储器,包括:
定义目标动态缓冲存储器中的数据位宽和地址深度;所述目标动态缓冲存储器为所述多个动态缓冲存储器中的任一动态缓冲存储器;
根据所述数据位宽和所述地址深度,声明所述目标动态缓冲存储器对应的二维数组;
在所述创建所述多个动态缓冲存储器之后,所述方法还包括:
在检测到所述目标动态缓冲存储器的读写时钟状态为第一状态时,控制所述SDL功能组件向所述目标动态缓冲存储器对应的所述二维数组缓存采样到的数据;
在检测到所述目标动态缓冲存储器的读写时钟状态为第二状态时,控制所述目标动态缓冲存储器向所述目标存储器传输所述二维数组中存储的数据。
7.根据权利要求1所述的方法,其特征在于,所述SDL功能组件采样到的数据为所述SDL功能组件监控所述硬件仿真加速器中的至少一个信号得到;所述方法还包括:
在所述采样时钟频率大于所述显示时钟频率的情况下,若检测到所述硬件仿真加速器中处于空闲状态的逻辑资源不足时,降低所述SDL功能组件支持的采样时钟频率;
和/或,减少当前所述SDL功能组件所监控的信号数量。
8.根据权利要求1所述的方法,其特征在于,所述SDL功能组件采样到的数据为所述SDL功能组件监控所述硬件仿真加速器中的至少一个信号得到;所述方法还包括:
在所述SDL功能组件同时采样得到与多个信号一一对应的多个数据的情况下,确定所述多个信号中各信号的信号权重;
按照所述多个信号中各信号的信号权重,对所述多个数据进行优先级排序;
基于所述多个数据的优先级排序,控制所述SDL功能组件依次将所述多个数据缓存至所述多个动态缓冲存储器中。
9.一种基于硬件仿真加速器的数据缓存装置,其特征在于,所述装置包括:
第一控制模块,用于在所述硬件仿真加速器中的状态描述语言SDL功能组件进行数据采样的过程中,控制所述SDL功能组件向第一存储器缓存采样到的数据;所述第一存储器为多个动态缓冲存储器中具有空余缓存空间的动态缓冲存储器;
第一确定模块,用于在检测到所述第一存储器处于数据存满状态的情况下,在所述多个动态缓冲存储器中确定第二存储器;所述第二存储器为所述第一存储器数据存满时具有空余缓存空间的动态缓冲存储器;
第二控制模块,用于控制所述SDL功能组件切换至向所述第二存储器缓存采样到的数据,以通过所述多个动态缓冲存储器缓存所述SDL功能组件采样到的数据;
其中,在所述多个动态缓冲存储器中至少一个动态缓冲存储器存满所述SDL功能组件采样到的数据的情况下,所述至少一个动态缓冲存储器中的各动态缓冲存储器分别向固定的目标存储器传输存储的数据;所述目标存储器用于向与所述硬件仿真加速器适配的编译器提供所述SDL功能组件采样到的数据;
在所述控制所述SDL功能组件向第一存储器缓存采样到的数据之前,所述装置还包括:
第一获取模块,用于获取所述SDL功能组件支持的采样时钟频率和所述编译器支持的显示时钟频率;
第一创建模块,用于在所述采样时钟频率大于所述显示时钟频率的情况下,通过调取所述硬件仿真加速器中处于空闲状态的逻辑资源,创建所述多个动态缓冲存储器;
在所述创建所述多个动态缓冲存储器之前,所述装置还包括:
第二确定模块,用于基于所述采样时钟频率和所述显示时钟频率的比值,确定所需创建的所述多个动态缓冲存储器的目标数量;
所述创建所述多个动态缓冲存储器,包括:
按照所述目标数量,创建所述多个动态缓冲存储器。
10.一种基于硬件仿真加速器的数据缓存设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-8任意一项所述的基于硬件仿真加速器的数据缓存方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-8任意一项所述的基于硬件仿真加速器的数据缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311026485.7A CN116737606B (zh) | 2023-08-15 | 2023-08-15 | 基于硬件仿真加速器的数据缓存方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311026485.7A CN116737606B (zh) | 2023-08-15 | 2023-08-15 | 基于硬件仿真加速器的数据缓存方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116737606A CN116737606A (zh) | 2023-09-12 |
CN116737606B true CN116737606B (zh) | 2023-12-05 |
Family
ID=87917263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311026485.7A Active CN116737606B (zh) | 2023-08-15 | 2023-08-15 | 基于硬件仿真加速器的数据缓存方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737606B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000026660A (ko) * | 1998-10-22 | 2000-05-15 | 윤종용 | 전류소모를 감소시키기 위한 내부클럭발생회로 |
CN103164314A (zh) * | 2013-02-22 | 2013-06-19 | 中国人民解放军国防科学技术大学 | 基于异步物理层接口的PCIe接口芯片硬件验证方法 |
WO2017197434A1 (en) * | 2016-05-20 | 2017-11-23 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
CN115269522A (zh) * | 2022-07-26 | 2022-11-01 | 广州文远知行科技有限公司 | 一种分布式文件缓存方法、***、设备和存储介质 |
CN116541032A (zh) * | 2023-07-04 | 2023-08-04 | 英诺达(成都)电子科技有限公司 | 数据烧录方法、装置、设备及计算机存储介质 |
-
2023
- 2023-08-15 CN CN202311026485.7A patent/CN116737606B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000026660A (ko) * | 1998-10-22 | 2000-05-15 | 윤종용 | 전류소모를 감소시키기 위한 내부클럭발생회로 |
CN103164314A (zh) * | 2013-02-22 | 2013-06-19 | 中国人民解放军国防科学技术大学 | 基于异步物理层接口的PCIe接口芯片硬件验证方法 |
WO2017197434A1 (en) * | 2016-05-20 | 2017-11-23 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
CN115269522A (zh) * | 2022-07-26 | 2022-11-01 | 广州文远知行科技有限公司 | 一种分布式文件缓存方法、***、设备和存储介质 |
CN116541032A (zh) * | 2023-07-04 | 2023-08-04 | 英诺达(成都)电子科技有限公司 | 数据烧录方法、装置、设备及计算机存储介质 |
Non-Patent Citations (3)
Title |
---|
Palladium Z1开创数据中心级硬件仿真加速新时代;单祥茹;《中国电子商情(基础电子)》;12-14 * |
基于PalladiumXP硬件加速器的JTAG UVM***设计;胡海生;《中国集成电路》;第24卷(第06期);31-34 * |
基于硬件仿真加速平台的PCIE***级调测试方法;柏颖;马玲芝;郭嘉;陈少辉;;电子技术应用(第08期);28-31 * |
Also Published As
Publication number | Publication date |
---|---|
CN116737606A (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590099B (zh) | 一种多主机访问从机的方法、扩展装置及存储介质 | |
US20120266029A1 (en) | Arrangement for processing trace data information, integrated circuits and a method for processing trace data information | |
JP5308098B2 (ja) | 情報処理装置試験プログラム及び方法 | |
CN111989655B (zh) | 一种soc芯片、确定热点函数的方法及终端设备 | |
US11436188B2 (en) | Resource optimization and update method, server, and device | |
EP3391224B1 (en) | Method and apparatus for data mining from core traces | |
CN115641906A (zh) | 存储装置的测试方法、测试装置及*** | |
CN113779912A (zh) | 一种芯片验证***、方法、装置、电子设备及存储介质 | |
CN103197914A (zh) | 多处理器延迟执行 | |
CN109407655B (zh) | 一种调试芯片的方法及装置 | |
CN109542341B (zh) | 一种读写io监测方法、装置、终端及计算机可读存储介质 | |
CN110728306A (zh) | 反向代理评价模型中目标参数选取方法及相关装置 | |
CN116737606B (zh) | 基于硬件仿真加速器的数据缓存方法、装置、设备及介质 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
CN112363883A (zh) | 一种cpu压力测试方法及装置 | |
CN101206613A (zh) | 高速基本输入/输出***调试卡 | |
US20040268200A1 (en) | Pseudo bus agent to support functional testing | |
CN116055349A (zh) | 一种流式数据的检测方法、装置及设备 | |
CN1420407A (zh) | 计算机*** | |
CN111352825B (zh) | 数据接口的测试方法、装置及服务器 | |
EP2788865B1 (en) | Method, device and computer program product for measuring user perception quality of a processing system comprising a user interface | |
US20120123761A1 (en) | Testing Software On A Computer System | |
CN116594862B (zh) | Dbms的测试方法、装置、电子设备及可读存储介质 | |
US20210173989A1 (en) | Simulation signal viewing method and system for digital product | |
CN117093353B (zh) | 一种中断控制方法、装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |