CN112861468A - 一种软硬件协同仿真验证的方法、装置和介质 - Google Patents
一种软硬件协同仿真验证的方法、装置和介质 Download PDFInfo
- Publication number
- CN112861468A CN112861468A CN202110181963.6A CN202110181963A CN112861468A CN 112861468 A CN112861468 A CN 112861468A CN 202110181963 A CN202110181963 A CN 202110181963A CN 112861468 A CN112861468 A CN 112861468A
- Authority
- CN
- China
- Prior art keywords
- hardware
- simulation
- software
- subunit
- test data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种软硬件协同仿真验证的方法、装置和介质,根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元,提升了芯片验证效率,保持了仿真的灵活性。依据设定的总线协议,对软件仿真子单元设置软件接口,对硬件仿真子单元设置软件交互接口和硬件交互接口。在启动硬件仿真平台和软件仿真平台后,利用验证组件和软件测试数据对软件仿真子单元执行仿真验证。通过软件交互接口和硬件交互接口将硬件测试数据发送至硬件仿真平台,利用硬件仿真平台对硬件测试数据进行协议解析,将解析完成的测试数据作为硬件仿真子单元的输入数据,实现对硬件仿真子单元的仿真验证。软硬件仿真平台交互的透明性,提升了芯片验证的效率。
Description
技术领域
本发明涉及芯片技术领域,特别是涉及一种软硬件协同仿真验证的方法、装置和计算机可读存储介质。
背景技术
近年来集成电路技术的不断高速发展,芯片的工艺制程已经进入到5纳米阶段,目前世界上采用5纳米工艺的处理器均集成了上百亿个晶体管。芯片规模的扩大使得人工智能与虚拟现实等复杂算法可以在小体积,低功耗的芯片中实现,极大地推动了科技产业的发展。
芯片的工艺制程不断发展使得芯片的设计变得越来越复杂,为了保证芯片设计的正确性,需要在流片之前对芯片的设计进行全面的仿真验证,通过仿真平台产生激励作为芯片的输入信号并检查芯片的输出信号与预期输出信号进行比较来验证芯片设计正确性。如图1所示为现有技术提供的一种芯片验证平台的示意图,当验证人员拿到设计人员提供的待测单元(Device Under Test,DUT)后,需要为该待测单元搭建可以运行仿真验证的验证平台,验证平台包含待测单元与验证组件。验证人员随后使用激励来驱动待测单元并获取待测单元的输出,经过比较判断后判别该输出是否正确。
在芯片的研发周期中,验证工作通常需要占据70%以上的总的研发时间,主要原因是验证平台通常运行在本地计算机的软件仿真环境中。本地计算机的中央处理器来模拟待测单元的硬件行为,这个过程需要消耗大量的时间。某些复杂待测单元的每次验证测试甚至需要数十个小时,严重拖延了芯片的迭代时间。并且针对每个待测单元都需要开发单独的验证平台,这种重复性的开发也消耗了验证人员大量的时间。
可见,如何提升芯片验证的效率,是本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供一种软硬件协同仿真验证的方法、装置和计算机可读存储介质,可以提升芯片验证的效率。
为解决上述技术问题,本发明实施例提供一种软硬件协同仿真验证的方法,包括:
根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;其中,验证组件和所述软件仿真子单元设置于软件仿真平台,所述硬件仿真子单元设置于硬件仿真平台;
依据设定的总线协议,对所述软件仿真子单元设置软件接口,对所述硬件仿真子单元设置软件交互接口和硬件交互接口;
在启动所述硬件仿真平台和所述软件仿真平台后,从总线上获取软件测试数据,利用所述验证组件以及所述软件测试数据对所述软件仿真子单元执行仿真验证;
从总线上获取硬件测试数据,通过所述软件交互接口和所述硬件交互接口将所述硬件测试数据传输至所述硬件仿真平台,利用所述硬件仿真平台对所述硬件测试数据进行协议解析,并将解析完成的测试数据作为所述硬件仿真子单元的输入数据,以实现对所述硬件仿真子单元的仿真验证。
可选地,所述验证组件包括定序器、驱动器和监视器;相应的,所述利用所述验证组件以及所述软件测试数据对所述软件仿真子单元执行仿真验证包括:
利用所述定序器获取所述软件测试数据;利用所述驱动器将所述软件测试数据转换为驱动所述软件仿真子单元的输入数据;
利用所述监视器获取所述软件仿真子单元的输出数据,并将所述输出数据与理论输出数据进行比较,以确定所述软件仿真子单元的仿真验证结果。
可选地,所述从总线上获取硬件测试数据,通过所述软件交互接口和所述硬件交互接口将所述硬件测试数据传输至所述硬件仿真平台包括:
从总线上获取硬件测试数据,对所述硬件测试数据设置优先级标识;并将设置有优先级标识的硬件测试数据进行封装;
通过所述软件交互接口将封装后的硬件测试数据传输至所述硬件交互接口。
可选地,所述利用所述硬件仿真平台对所述硬件测试数据进行协议解析,并将解析完成的测试数据作为所述硬件仿真子单元的输入数据包括:
按照设定的总线协议,对所述封装后的硬件测试数据进行解析,以得到解析后的硬件测试数据及其对应的优先级标识;
依据各所述硬件测试数据对应的优先级标识,将各所述硬件测试数据依次写入相应的队列;
根据各所述队列各自对应的优先级顺序以及设定的调度策略,依次从各所述队列中读取目标硬件测试数据,并将所述目标硬件测试数据作为所述硬件仿真子单元的输入数据。
可选地,所述根据各所述队列各自对应的优先级顺序以及设定的调度策略,依次从各所述队列中读取目标硬件测试数据包括:
根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据;
每读取完当前队列存储的硬件测试数据或者达到预设的时间间隔,则按照优先级顺序从与当前队列相邻的下一个队列中读取目标硬件测试数据;
当遍历完所有所述队列,则返回所述根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据的步骤。
本发明实施例还提供了一种软硬件协同仿真验证的装置,包括分解单元、设置单元、软件仿真验证单元、传输单元和硬件仿真验证单元;
所述分解单元,用于根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;其中,验证组件和所述软件仿真子单元设置于软件仿真平台,所述硬件仿真子单元设置于硬件仿真平台;
所述设置单元,用于依据设定的总线协议,对所述软件仿真子单元设置软件接口,对所述硬件仿真子单元设置软件交互接口和硬件交互接口;
所述软件仿真验证单元,用于在启动所述硬件仿真平台和所述软件仿真平台后,从总线上获取软件测试数据,利用所述验证组件以及所述软件测试数据对所述软件仿真子单元执行仿真验证;
所述传输单元,用于从总线上获取硬件测试数据,通过所述软件交互接口和所述硬件交互接口将所述硬件测试数据传输至所述硬件仿真平台;
所述硬件仿真验证单元单元,用于利用所述硬件仿真平台对所述硬件测试数据进行协议解析;将解析完成的测试数据作为所述硬件仿真子单元的输入数据,以实现对所述硬件仿真子单元的仿真验证。
可选地,所述验证组件包括定序器、驱动器和监视器;相应的,所述软件仿真验证单元包括获取子单元、转换子单元和比较子单元;
所述获取子单元,用于利用所述定序器获取所述软件测试数据;利用所述驱动器将所述软件测试数据转换为驱动所述软件仿真子单元的输入数据;
所述转换子单元,用于利用所述监视器获取所述软件仿真子单元的输出数据;
所述比较子单元,用于将所述输出数据与理论输出数据进行比较,以确定所述软件仿真子单元的仿真验证结果。
可选地,所述传输单元包括设置子单元、封装子单元和传输子单元;
所述设置子单元,用于从总线上获取硬件测试数据,对所述硬件测试数据设置优先级标识;
所述封装子单元,用于将设置有优先级标识的硬件测试数据进行封装;
所述传输子单元,用于通过所述软件交互接口将封装后的硬件测试数据传输至所述硬件交互接口。
可选地,所述硬件仿真验证单元包括解析子单元、写入子单元、读取子单元和作为子单元;
所述解析子单元,用于按照设定的总线协议,对所述封装后的硬件测试数据进行解析,以得到解析后的硬件测试数据及其对应的优先级标识;
所述写入子单元,用于依据各所述硬件测试数据对应的优先级标识,将各所述硬件测试数据依次写入相应的队列;
所述读取子单元,用于根据各所述队列各自对应的优先级顺序以及设定的调度策略,依次从各所述队列中读取目标硬件测试数据;
所述作为子单元,用于将所述目标硬件测试数据作为所述硬件仿真子单元的输入数据。
可选地,所述读取子单元用于根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据;每读取完当前队列存储的硬件测试数据或者达到预设的时间间隔,则按照优先级顺序从与当前队列相邻的下一个队列中读取目标硬件测试数据;当遍历完所有所述队列,则返回所述根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据的步骤。
本发明实施例还提供了一种软硬件协同仿真验证的装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述任意一项所述软硬件协同仿真验证的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述软硬件协同仿真验证的方法的步骤。
由上述技术方案可以看出,根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;配置文件中可以包含需要频繁修改验证的子模块和稳定耗时的子模块,根据配置文件可以将待测单元中需要频繁修改验证的子模块作为软件仿真子单元,将待测单元中稳定耗时的子模块作为硬件仿真子单元。其中,验证组件和软件仿真子单元设置于软件仿真平台,硬件仿真子单元设置于硬件仿真平台,在提升芯片验证效率的同时也保持了仿真的灵活性。依据设定的总线协议,对软件仿真子单元设置软件接口,对硬件仿真子单元设置软件交互接口和硬件交互接口;在启动硬件仿真平台和软件仿真平台后,从总线上获取软件测试数据,利用验证组件以及软件测试数据对软件仿真子单元执行仿真验证。从总线上获取硬件测试数据,通过软件交互接口和硬件交互接口将硬件测试数据传输至硬件仿真平台,利用硬件仿真平台对硬件测试数据进行协议解析,并将解析完成的测试数据作为硬件仿真子单元的输入数据,以实现对硬件仿真子单元的仿真验证。针对不同的总线协议,对各子模块设置了相应的交互接口,并且对软硬件仿真平台交互的数据可以进行协议转换,实现了软硬件仿真平台交互的透明性,即软件仿真平台中的总线与硬件仿真平台中的子模块相互访问就如同没有被分割之前一样,提升了芯片验证的效率。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的一种芯片验证平台的示意图;
图2为本发明实施例提供的一种软硬件协同仿真验证的方法的流程图;
图3为本发明实施例提供的一种硬件仿真平台和软件仿真平台运行时整个数据流动过程的示意图;
图4为本发明实施例提供的一种软件仿真平台映射关系的示意图;
图5为本发明实施例提供的一种硬件仿真平台上对多个队列执行轮询处理的示意图。
图6为本发明实施例提供的一种软硬件协同仿真验证的装置的结构示意图;
图7为本发明实施例提供的一种软硬件协同仿真验证的装置的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种软硬件协同仿真验证的方法。图2为本发明实施例提供的一种软硬件协同仿真验证的方法的流程图,该方法包括:
S201:根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元。
在实际应用中,验证人员可以根据常见的测试单元类型,将需要频繁修改验证的子模块和稳定耗时的子模块分类记载至配置文件中。
配置文件中各子模块可以包含名字、协议类型、主从模式、数据带宽、地址带宽等基础信息。以子模块Submodule1为例,名字:Submodule1,协议类型:AXI,主从模式:Master,数据带宽:32,地址带宽:32。
协议类型目前支持主流的总线协议,如AXI(Advanced eXtensible Interface,总线协议)。主从模式设置为Master时表示此子模块为主动模式,主动发送以及接收数据;设置为Slave时表示此子模块为被动模式,被动发送以及接收数据。数据带宽与地址宽度表示此总线的参数。
在本发明实施例中,可以根据待测试单元所能实现的所有功能,将待测试单元划分为多个子单元。将各子单元与配置文件中记载的需要频繁修改验证的子模块和稳定耗时的子模块进行比较,从而将属于频繁修改验证的子模块作为软件仿真子单元,将属于稳定耗时的子模块作为硬件仿真子单元。
其中,验证组件和软件仿真子单元设置于软件仿真平台,硬件仿真子单元设置于硬件仿真平台。
软件仿真平台与硬件仿真平台之间可以通过高速接口或网口进行连接,其中,高速接口可以包括PCIe(peripheral component interconnect express,高速串行计算机扩展总线标准)接口,USB(Universal Serial Bus,通用串行总线)接口等。
S202:依据设定的总线协议,对软件仿真子单元设置软件接口,对硬件仿真子单元设置软件交互接口和硬件交互接口。
在本发明实施例中,为了满足不同协议类型数据的处理,可以将常见的总线协议进行汇总。
对软件仿真子单元开发针对不同总线协议的软件接口,此软件接口从总线上接收软件测试数据后对软件测试数据进行事务级打包,给软件测试数据加上额外的包头信息。打包后的事务级数据经过软件仿真平台的底层操作系统驱动发送到远端的硬件仿真平台。
对硬件仿真子单元开发针对不同总线协议的软件交互接口和硬件交互接口,此接口模块从PCIe等硬件接口上接收硬件测试数据后对硬件测试数据进行事务级解包,解包后的硬件测试数据经过转换发送给待测单元中的硬件仿真子单元。
在本发明实施例中,可以将使用网络连接本地计算机与硬件仿真平台,这样做的好处是可以将多个计算机通过网络协议与硬件仿真平台进行仿真数据交互,极大的提高了硬件仿真平台的利用率,甚至可以同时并行执行多个仿真任务。
S203:在启动硬件仿真平台和软件仿真平台后,从总线上获取软件测试数据,利用验证组件以及软件测试数据对软件仿真子单元执行仿真验证。
验证组件主要包含定序器,驱动器,监视器。在实际应用中,可以利用定序器获取软件测试数据;利用驱动器将软件测试数据转换为驱动软件仿真子单元的输入数据;利用监视器获取软件仿真子单元的输出数据,并将输出数据与理论输出数据进行比较,以确定软件仿真子单元的仿真验证结果。同时总线监测模块接收到待测单元的数据之后进行功能或代码覆盖率分析。顶层测试平台负责将验证组件与待测单元组合在一起,提供整个软件仿真平台的对外接口。
在实际应用中,可以使用软件编译工具将软件仿真部分代码编译为能够在软件环境下运行的可执行文件。这个可执行文件中包含了软件的验证组件与软件仿真子单元。
S204:从总线上获取硬件测试数据,通过软件交互接口和硬件交互接口将硬件测试数据传输至硬件仿真平台,利用硬件仿真平台对硬件测试数据进行协议解析,并将解析完成的测试数据作为硬件仿真子单元的输入数据,以实现对硬件仿真子单元的仿真验证。
硬件仿真部分主要由三部分组成:硬件交互接口,协议转换模块与硬件仿真子单元。硬件交互接口主要提供协议转换模块与硬件交互的接口,协议转换模块的功能是将硬件交互接口传来的信号进行数据解析,并将解析完成的信号转化为硬件仿真子单元的输入信号。
在实际应用中,可以使用硬件编译工具将硬件仿真部分代码综合为可以在硬件上运行的数据比特流,该数据比特流包含了硬件交互接口,数据转换模块与硬件仿真子单元。
举例说明,假设待测单元可以划分为三个子单元,其中,子单元1为硬件仿真子单元,子单元2和子单元3分别为软件仿真子单元。需要为子单元1设置软件交互接口和硬件交互接口,为子单元2和子单元3设置软件接口即可。
子单元1对应的软件交互接口设置在软件仿真平台上,子单元1对应的硬件交互接口以及功能模块设置在硬件仿真平台上。其中,子单元1的软件交互接口负责将总线发送的数据信息转化为底层PCIe等物理连接可以发送的数据,子单元1的硬件交互接口负责接收底层PCIe等物理连接的数据包并转化为总线数据。子模块2与子模块3作为软件仿真子单元直接运行在软件仿真平台上即可。
需要说明的是,在本发明实施例中,在启动硬件仿真平台和软件仿真平台后,对于软件仿真子单元执行仿真验证操作和对硬件仿真子单元执行仿真验证操作的先后顺序不做限定。
在本发明实施例中,可以将软件接口、软件交互接口、硬件交互接口统称为接口。对于接口的数量不做限定,可以针对每个子单元设置其各自对应的接口,也可以将同类型的子单元共用相同的接口。
硬件仿真平台运行起来之后,可以运行软件仿真平台,整个数据流动过程如图3所示,以主设备为例,当软件仿真平台的软件仿真子模块接收到总线读或是写请求,首先将其转换为DPI-C接口的读或写函数,DPI-C接口的读或写函数再调用底层库函数将总线访问的数据与地址信息打包称为事务级数据,随后通过操作系统的设备驱动将数据发送到PCIe等物理接口上。
硬件仿真平台上设置的待测子模块为硬件仿真子单元。在硬件仿真平台中,底层信号接收模块将PCIe等协议解包后转化为事务级数据,事务级数据随后经过协议转换模块的处理转换为总线读写数据,总线与硬件仿真子模块的访问相互透明。从设备的操作类似,与主设备的区别是从设备需要使用回调函数,即将读或写函数注册到系统函数中,当从设备接收到数据之后回调函数就被立即执行,可以得到所需数据。
为了减少软件仿真平台与硬件仿真平台的信息传输的时间消耗,将软件仿真平台中的DPI读/写函数放在操作系统的用户空间来完成。事务级数据的封装与底层驱动的操作放在操作系统的内核空间完成,内核空间可以直接访问硬件仿真平台的硬件交互接口,从而大大提升了仿真速度。软件仿真平台具体的映射关系如图4所示。
由上述技术方案可以看出,根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;配置文件中可以包含需要频繁修改验证的子模块和稳定耗时的子模块,根据配置文件可以将待测单元中需要频繁修改验证的子模块作为软件仿真子单元,将待测单元中稳定耗时的子模块作为硬件仿真子单元。其中,验证组件和软件仿真子单元设置于软件仿真平台,硬件仿真子单元设置于硬件仿真平台,在提升芯片验证效率的同时也保持了仿真的灵活性。依据设定的总线协议,对软件仿真子单元设置软件接口,对硬件仿真子单元设置软件交互接口和硬件交互接口;在启动硬件仿真平台和软件仿真平台后,从总线上获取软件测试数据,利用验证组件以及软件测试数据对软件仿真子单元执行仿真验证。从总线上获取硬件测试数据,通过软件交互接口和硬件交互接口将硬件测试数据传输至硬件仿真平台,利用硬件仿真平台对硬件测试数据进行协议解析,并将解析完成的测试数据作为硬件仿真子单元的输入数据,以实现对硬件仿真子单元的仿真验证。针对不同的总线协议,对各子模块设置了相应的交互接口,并且对软硬件仿真平台交互的数据可以进行协议转换,实现了软硬件仿真平台交互的透明性,即软件仿真平台中的总线与硬件仿真平台中的子模块相互访问就如同没有被分割之前一样,提升了芯片验证的效率。
考虑到软件仿真平台中出现多个软件仿真子模块需要向硬件仿真平台下发数据时,若前一个软件仿真子模块的数据在硬件仿真平台中还没有被完全处理完成之前,下一个软件仿真子模块再一次触发发送函数,此时就会发生数据丢失。针对此类问题,本发明实施例提出了一种新的基于优先级加轮询机制的调度策略。
在具体实现中,可以从总线上获取硬件测试数据,对硬件测试数据设置优先级标识;并将设置有优先级标识的硬件测试数据进行封装;通过软件交互接口将封装后的硬件测试数据传输至硬件交互接口。
硬件测试数据传输至硬件仿真平台之后,硬件仿真平台可以按照设定的总线协议,对封装后的硬件测试数据进行解析,以得到解析后的硬件测试数据及其对应的优先级标识;依据各硬件测试数据对应的优先级标识,将各硬件测试数据依次写入相应的队列;根据各队列各自对应的优先级顺序以及设定的调度策略,依次从各队列中读取目标硬件测试数据,并将目标硬件测试数据作为硬件仿真子单元的输入数据。
在实际应用中,可以针对每个优先级标识设置其对应的一个先入先出队列(FirstInput First Output),FIFO)。
在本发明实施例中,可以在硬件仿真平台中设置调度器实现对所有队列的有序管理。为了避免调度器一直服务高优先级的FIFO队列,最终造成低优先级的队列一直得不到服务的情况发生,本发明实施例在设置优先级的基础上添加了轮询的调度策略。其中,调度策略可以包括对各队列读写数据时机的设置。
在具体实现中,可以根据各队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从当前队列中读取目标硬件测试数据;每读取完当前队列存储的硬件测试数据或者达到预设的时间间隔,则按照优先级顺序从与当前队列相邻的下一个队列中读取目标硬件测试数据;当遍历完所有队列,则返回根据各队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从当前队列中读取目标硬件测试数据的步骤。
如图5所示为本发明实施例提供的一种硬件仿真平台上对多个队列执行轮询处理的示意图,图5中以16个FIFO队列为例,各FIFO队列用于缓存从软件仿真平台发送过来的数据。调度器根据发送过来数据的优先级,可以采用0至15作为这16个FIFO队列的优先级标识,0表示最低优先级,15表示最高优先级。将数据缓存到不同的FIFO队列中,随后调度器按照从15号FIFO到0号FIFO队列的顺序读取数据送到硬件仿真平台的协议转换模块。为了避免仅对优先级高的队列执行数据的读取操作,在实际应用中,可以每隔一定时间T之后,不管调度器服务的当前FIFO队列是否清空,调度器都将移动到下一个低优先级的FIFO队列进行服务,这样就可以在保证优先级的同时兼顾各个FIFO队列的公平性。其中,T的取值可以根据实际验证平台的数据进行设置。
在本发明实施例中,通过设置多个队列可以实现对大量数据的快速缓存处理,降低了数据丢失的情况发生。并且在设置优先级的基础上添加对各队列轮询的调度策略,可以保证各个队列中数据的有效处理。
图6为本发明实施例提供的一种软硬件协同仿真验证的装置的结构示意图,包括分解单元61、设置单元62、软件仿真验证单元63、传输单元64和硬件仿真验证单元65;
分解单元61,用于根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;其中,验证组件和软件仿真子单元设置于软件仿真平台,硬件仿真子单元设置于硬件仿真平台;
设置单元62,用于依据设定的总线协议,对软件仿真子单元设置软件接口,对硬件仿真子单元设置软件交互接口和硬件交互接口;
软件仿真验证单元63,用于在启动硬件仿真平台和软件仿真平台后,从总线上获取软件测试数据,利用验证组件以及软件测试数据对软件仿真子单元执行仿真验证;
传输单元64,用于从总线上获取硬件测试数据,通过软件交互接口和硬件交互接口将硬件测试数据传输至硬件仿真平台;
硬件仿真验证单元单元65,用于利用硬件仿真平台对硬件测试数据进行协议解析;将解析完成的测试数据作为硬件仿真子单元的输入数据,以实现对硬件仿真子单元的仿真验证。
可选地,验证组件包括定序器、驱动器和监视器;相应的,软件仿真验证单元包括获取子单元、转换子单元和比较子单元;
获取子单元,用于利用定序器获取软件测试数据;利用驱动器将软件测试数据转换为驱动软件仿真子单元的输入数据;
转换子单元,用于利用监视器获取软件仿真子单元的输出数据;
比较子单元,用于将输出数据与理论输出数据进行比较,以确定软件仿真子单元的仿真验证结果。
可选地,传输单元包括设置子单元、封装子单元和传输子单元;
设置子单元,用于从总线上获取硬件测试数据,对硬件测试数据设置优先级标识;
封装子单元,用于将设置有优先级标识的硬件测试数据进行封装;
传输子单元,用于通过软件交互接口将封装后的硬件测试数据传输至硬件交互接口。
可选地,硬件仿真验证单元包括解析子单元、写入子单元、读取子单元和作为子单元;
解析子单元,用于按照设定的总线协议,对封装后的硬件测试数据进行解析,以得到解析后的硬件测试数据及其对应的优先级标识;
写入子单元,用于依据各硬件测试数据对应的优先级标识,将各硬件测试数据依次写入相应的队列;
读取子单元,用于根据各队列各自对应的优先级顺序以及设定的调度策略,依次从各队列中读取目标硬件测试数据;
作为子单元,用于将目标硬件测试数据作为硬件仿真子单元的输入数据。
可选地,读取子单元用于根据各队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从当前队列中读取目标硬件测试数据;每读取完当前队列存储的硬件测试数据或者达到预设的时间间隔,则按照优先级顺序从与当前队列相邻的下一个队列中读取目标硬件测试数据;当遍历完所有队列,则返回根据各队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从当前队列中读取目标硬件测试数据的步骤。
图6所对应实施例中特征的说明可以参见图2所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;配置文件中可以包含需要频繁修改验证的子模块和稳定耗时的子模块,根据配置文件可以将待测单元中需要频繁修改验证的子模块作为软件仿真子单元,将待测单元中稳定耗时的子模块作为硬件仿真子单元。其中,验证组件和软件仿真子单元设置于软件仿真平台,硬件仿真子单元设置于硬件仿真平台,在提升芯片验证效率的同时也保持了仿真的灵活性。依据设定的总线协议,对软件仿真子单元设置软件接口,对硬件仿真子单元设置软件交互接口和硬件交互接口;在启动硬件仿真平台和软件仿真平台后,从总线上获取软件测试数据,利用验证组件以及软件测试数据对软件仿真子单元执行仿真验证。从总线上获取硬件测试数据,通过软件交互接口和硬件交互接口将硬件测试数据传输至硬件仿真平台,利用硬件仿真平台对硬件测试数据进行协议解析,并将解析完成的测试数据作为硬件仿真子单元的输入数据,以实现对硬件仿真子单元的仿真验证。针对不同的总线协议,对各子模块设置了相应的交互接口,并且对软硬件仿真平台交互的数据可以进行协议转换,实现了软硬件仿真平台交互的透明性,即软件仿真平台中的总线与硬件仿真平台中的子模块相互访问就如同没有被分割之前一样,提升了芯片验证的效率。
图7为本发明实施例提供的一种软硬件协同仿真验证的装置70的硬件结构示意图,包括:
存储器71,用于存储计算机程序;
处理器72,用于执行计算机程序以实现如上述任意实施例所述的软硬件协同仿真验证的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任意实施例所述的软硬件协同仿真验证的方法的步骤。
以上对本发明实施例所提供的一种软硬件协同仿真验证的方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
Claims (12)
1.一种软硬件协同仿真验证的方法,其特征在于,包括:
根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;其中,验证组件和所述软件仿真子单元设置于软件仿真平台,所述硬件仿真子单元设置于硬件仿真平台;
依据设定的总线协议,对所述软件仿真子单元设置软件接口,对所述硬件仿真子单元设置软件交互接口和硬件交互接口;
在启动所述硬件仿真平台和所述软件仿真平台后,从总线上获取软件测试数据,利用所述验证组件以及所述软件测试数据对所述软件仿真子单元执行仿真验证;
从总线上获取硬件测试数据,通过所述软件交互接口和所述硬件交互接口将所述硬件测试数据传输至所述硬件仿真平台,利用所述硬件仿真平台对所述硬件测试数据进行协议解析,并将解析完成的测试数据作为所述硬件仿真子单元的输入数据,以实现对所述硬件仿真子单元的仿真验证。
2.根据权利要求1所述的软硬件协同仿真验证的方法,其特征在于,所述验证组件包括定序器、驱动器和监视器;相应的,所述利用所述验证组件以及所述软件测试数据对所述软件仿真子单元执行仿真验证包括:
利用所述定序器获取所述软件测试数据;利用所述驱动器将所述软件测试数据转换为驱动所述软件仿真子单元的输入数据;
利用所述监视器获取所述软件仿真子单元的输出数据,并将所述输出数据与理论输出数据进行比较,以确定所述软件仿真子单元的仿真验证结果。
3.根据权利要求1所述的软硬件协同仿真验证的方法,其特征在于,所述从总线上获取硬件测试数据,通过所述软件交互接口和所述硬件交互接口将所述硬件测试数据传输至所述硬件仿真平台包括:
从总线上获取硬件测试数据,对所述硬件测试数据设置优先级标识;并将设置有优先级标识的硬件测试数据进行封装;
通过所述软件交互接口将封装后的硬件测试数据传输至所述硬件交互接口。
4.根据权利要求3所述的软硬件协同仿真验证的方法,其特征在于,所述利用所述硬件仿真平台对所述硬件测试数据进行协议解析,并将解析完成的测试数据作为所述硬件仿真子单元的输入数据包括:
按照设定的总线协议,对所述封装后的硬件测试数据进行解析,以得到解析后的硬件测试数据及其对应的优先级标识;
依据各所述硬件测试数据对应的优先级标识,将各所述硬件测试数据依次写入相应的队列;
根据各所述队列各自对应的优先级顺序以及设定的调度策略,依次从各所述队列中读取目标硬件测试数据,并将所述目标硬件测试数据作为所述硬件仿真子单元的输入数据。
5.根据权利要求4所述的软硬件协同仿真验证的方法,其特征在于,所述根据各所述队列各自对应的优先级顺序以及设定的调度策略,依次从各所述队列中读取目标硬件测试数据包括:
根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据;
每读取完当前队列存储的硬件测试数据或者达到预设的时间间隔,则按照优先级顺序从与当前队列相邻的下一个队列中读取目标硬件测试数据;
当遍历完所有所述队列,则返回所述根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据的步骤。
6.一种软硬件协同仿真验证的装置,其特征在于,包括分解单元、设置单元、软件仿真验证单元、传输单元和硬件仿真验证单元;
所述分解单元,用于根据设置的配置文件,将待测单元分解为软件仿真子单元和硬件仿真子单元;其中,验证组件和所述软件仿真子单元设置于软件仿真平台,所述硬件仿真子单元设置于硬件仿真平台;
所述设置单元,用于依据设定的总线协议,对所述软件仿真子单元设置软件接口,对所述硬件仿真子单元设置软件交互接口和硬件交互接口;
所述软件仿真验证单元,用于在启动所述硬件仿真平台和所述软件仿真平台后,从总线上获取软件测试数据,利用所述验证组件以及所述软件测试数据对所述软件仿真子单元执行仿真验证;
所述传输单元,用于从总线上获取硬件测试数据,通过所述软件交互接口和所述硬件交互接口将所述硬件测试数据传输至所述硬件仿真平台;
所述硬件仿真验证单元单元,用于利用所述硬件仿真平台对所述硬件测试数据进行协议解析;将解析完成的测试数据作为所述硬件仿真子单元的输入数据,以实现对所述硬件仿真子单元的仿真验证。
7.根据权利要求6所述的软硬件协同仿真验证的装置,其特征在于,所述验证组件包括定序器、驱动器和监视器;相应的,所述软件仿真验证单元包括获取子单元、转换子单元和比较子单元;
所述获取子单元,用于利用所述定序器获取所述软件测试数据;利用所述驱动器将所述软件测试数据转换为驱动所述软件仿真子单元的输入数据;
所述转换子单元,用于利用所述监视器获取所述软件仿真子单元的输出数据;
所述比较子单元,用于将所述输出数据与理论输出数据进行比较,以确定所述软件仿真子单元的仿真验证结果。
8.根据权利要求6所述的软硬件协同仿真验证的装置,其特征在于,所述传输单元包括设置子单元、封装子单元和传输子单元;
所述设置子单元,用于从总线上获取硬件测试数据,对所述硬件测试数据设置优先级标识;
所述封装子单元,用于将设置有优先级标识的硬件测试数据进行封装;
所述传输子单元,用于通过所述软件交互接口将封装后的硬件测试数据传输至所述硬件交互接口。
9.根据权利要求8所述的软硬件协同仿真验证的装置,其特征在于,所述硬件仿真验证单元包括解析子单元、写入子单元、读取子单元和作为子单元;
所述解析子单元,用于按照设定的总线协议,对所述封装后的硬件测试数据进行解析,以得到解析后的硬件测试数据及其对应的优先级标识;
所述写入子单元,用于依据各所述硬件测试数据对应的优先级标识,将各所述硬件测试数据依次写入相应的队列;
所述读取子单元,用于根据各所述队列各自对应的优先级顺序以及设定的调度策略,依次从各所述队列中读取目标硬件测试数据;
所述作为子单元,用于将所述目标硬件测试数据作为所述硬件仿真子单元的输入数据。
10.根据权利要求9所述的软硬件协同仿真验证的装置,其特征在于,所述读取子单元用于根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据;每读取完当前队列存储的硬件测试数据或者达到预设的时间间隔,则按照优先级顺序从与当前队列相邻的下一个队列中读取目标硬件测试数据;当遍历完所有所述队列,则返回所述根据各所述队列各自对应的优先级顺序,选取优先级最高的一个非空队列作为当前队列,从所述当前队列中读取目标硬件测试数据的步骤。
11.一种软硬件协同仿真验证的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至5任意一项所述软硬件协同仿真验证的方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述软硬件协同仿真验证的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110181963.6A CN112861468B (zh) | 2021-02-08 | 2021-02-08 | 一种软硬件协同仿真验证的方法、装置和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110181963.6A CN112861468B (zh) | 2021-02-08 | 2021-02-08 | 一种软硬件协同仿真验证的方法、装置和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112861468A true CN112861468A (zh) | 2021-05-28 |
CN112861468B CN112861468B (zh) | 2022-12-06 |
Family
ID=75989578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110181963.6A Active CN112861468B (zh) | 2021-02-08 | 2021-02-08 | 一种软硬件协同仿真验证的方法、装置和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112861468B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113255265A (zh) * | 2021-06-07 | 2021-08-13 | 上海国微思尔芯技术股份有限公司 | 分割及验证方法、装置、电子设备、存储介质 |
CN113704130A (zh) * | 2021-09-06 | 2021-11-26 | 哲库科技(北京)有限公司 | 一种测试方法、主机、虚拟测试平台及存储介质 |
CN114996077A (zh) * | 2022-08-08 | 2022-09-02 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
CN116257418A (zh) * | 2023-01-04 | 2023-06-13 | 上海御微半导体技术有限公司 | 软硬件联合仿真测试平台及其测试方法 |
CN117521583A (zh) * | 2023-11-17 | 2024-02-06 | 中科苏州智能计算技术研究院 | 一种时钟驱动的软硬件联合仿真方法、系统及存储介质 |
CN117556754A (zh) * | 2024-01-11 | 2024-02-13 | 北京数渡信息科技有限公司 | PCIe交换机芯片硅前仿真系统 |
CN118395918A (zh) * | 2024-04-30 | 2024-07-26 | 北京中科昊芯科技有限公司 | 基于软硬件的芯片仿真方法、装置、测试终端及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499937A (zh) * | 2009-03-16 | 2009-08-05 | 盛科网络(苏州)有限公司 | 一种基于fpga的软硬件协同仿真验证系统及方法 |
CN101630343A (zh) * | 2009-08-18 | 2010-01-20 | 中兴通讯股份有限公司 | 仿真方法及系统 |
CN201522707U (zh) * | 2009-03-16 | 2010-07-07 | 盛科网络(苏州)有限公司 | 基于fpga的软硬件协同仿真验证系统 |
CN106126854A (zh) * | 2016-07-01 | 2016-11-16 | 合肥海本蓝科技有限公司 | 一种软硬件协同仿真交易器和仿真系统 |
US20170140082A1 (en) * | 2015-11-13 | 2017-05-18 | Mentor Graphics Corporation | Target Capture And Replay In Emulation |
CN207037640U (zh) * | 2017-07-21 | 2018-02-23 | 四川汉科计算机信息技术有限公司 | 仿真验证测试分析系统 |
CN109783954A (zh) * | 2019-01-23 | 2019-05-21 | 北京轩宇信息技术有限公司 | 一种ies联合fpga硬件仿真加速系统 |
-
2021
- 2021-02-08 CN CN202110181963.6A patent/CN112861468B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499937A (zh) * | 2009-03-16 | 2009-08-05 | 盛科网络(苏州)有限公司 | 一种基于fpga的软硬件协同仿真验证系统及方法 |
CN201522707U (zh) * | 2009-03-16 | 2010-07-07 | 盛科网络(苏州)有限公司 | 基于fpga的软硬件协同仿真验证系统 |
CN101630343A (zh) * | 2009-08-18 | 2010-01-20 | 中兴通讯股份有限公司 | 仿真方法及系统 |
US20170140082A1 (en) * | 2015-11-13 | 2017-05-18 | Mentor Graphics Corporation | Target Capture And Replay In Emulation |
CN106126854A (zh) * | 2016-07-01 | 2016-11-16 | 合肥海本蓝科技有限公司 | 一种软硬件协同仿真交易器和仿真系统 |
CN207037640U (zh) * | 2017-07-21 | 2018-02-23 | 四川汉科计算机信息技术有限公司 | 仿真验证测试分析系统 |
CN109783954A (zh) * | 2019-01-23 | 2019-05-21 | 北京轩宇信息技术有限公司 | 一种ies联合fpga硬件仿真加速系统 |
Non-Patent Citations (2)
Title |
---|
吴皓等: "《媒体处理器软硬件协同仿真验证平台》", 《浙江大学学报(工学版)》 * |
陈锐等: "《基于UVM的FPGA软硬件联合仿真验证技术研究》", 《空间电子技术》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113255265A (zh) * | 2021-06-07 | 2021-08-13 | 上海国微思尔芯技术股份有限公司 | 分割及验证方法、装置、电子设备、存储介质 |
CN113704130A (zh) * | 2021-09-06 | 2021-11-26 | 哲库科技(北京)有限公司 | 一种测试方法、主机、虚拟测试平台及存储介质 |
CN113704130B (zh) * | 2021-09-06 | 2023-04-11 | 哲库科技(北京)有限公司 | 一种测试方法、主机、虚拟测试平台及存储介质 |
CN114996077A (zh) * | 2022-08-08 | 2022-09-02 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
CN114996077B (zh) * | 2022-08-08 | 2022-11-01 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
CN116257418A (zh) * | 2023-01-04 | 2023-06-13 | 上海御微半导体技术有限公司 | 软硬件联合仿真测试平台及其测试方法 |
CN117521583A (zh) * | 2023-11-17 | 2024-02-06 | 中科苏州智能计算技术研究院 | 一种时钟驱动的软硬件联合仿真方法、系统及存储介质 |
CN117556754A (zh) * | 2024-01-11 | 2024-02-13 | 北京数渡信息科技有限公司 | PCIe交换机芯片硅前仿真系统 |
CN117556754B (zh) * | 2024-01-11 | 2024-03-19 | 北京数渡信息科技有限公司 | PCIe交换机芯片硅前仿真系统 |
CN118395918A (zh) * | 2024-04-30 | 2024-07-26 | 北京中科昊芯科技有限公司 | 基于软硬件的芯片仿真方法、装置、测试终端及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112861468B (zh) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112861468B (zh) | 一种软硬件协同仿真验证的方法、装置和介质 | |
Kukkala et al. | UML 2.0 profile for embedded system design | |
US10521544B2 (en) | Traffic shaping in networking system-on-chip verification | |
CN113342583B (zh) | 芯片验证系统、方法、装置、设备和存储介质 | |
CN116502576B (zh) | 指令流跟踪验证方法及调试系统 | |
CN115686655B (zh) | 用于gpu ip验证的联合仿真系统 | |
CN113986817B (zh) | 运算芯片访问片内存储区域的方法和运算芯片 | |
CN115688676A (zh) | 基于tlm的gpu联合仿真系统 | |
US7478027B2 (en) | Systems, methods, and media for simulation of integrated hardware and software designs | |
CN115622896A (zh) | 一种axi4高速总线及多队列仿真验证方法及仿真验证装置 | |
CN112162879A (zh) | 一种实时多核dsp软件的日志系统 | |
CN115629928B (zh) | 一种面向类脑处理器的软硬协同验证方法及系统 | |
CN115618800B (zh) | 基于dpi的gpu联合仿真系统 | |
Wild et al. | Performance evaluation for system-on-chip architectures using trace-based transaction level simulation | |
US11176018B1 (en) | Inline hardware compression subsystem for emulation trace data | |
CN112836455B (zh) | 一种soc仿真方法及系统 | |
CN111859831A (zh) | 芯片验证方法和系统,及存储介质 | |
CN113496108A (zh) | 一种应用于仿真的cpu模型 | |
CN115684897B (zh) | 芯片测试的方法和装置 | |
CN118093292B (zh) | 一种自适应随机激励验证方法、系统、终端及介质 | |
CN116320052B (zh) | 用于通用验证方法学验证平台的网络报文自动生成方法 | |
CN115983172B (zh) | 用于后仿真的方法和仿真平台 | |
JP2001320386A (ja) | 電子システム | |
US11573883B1 (en) | Systems and methods for enhanced compression of trace data in an emulation system | |
CN109446015B (zh) | 一种NVMe原型仿真验证结构 |
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 |