CN112632885B - 软硬件联合验证***及方法 - Google Patents
软硬件联合验证***及方法 Download PDFInfo
- Publication number
- CN112632885B CN112632885B CN202011573586.2A CN202011573586A CN112632885B CN 112632885 B CN112632885 B CN 112632885B CN 202011573586 A CN202011573586 A CN 202011573586A CN 112632885 B CN112632885 B CN 112632885B
- Authority
- CN
- China
- Prior art keywords
- software
- data
- hardware
- verified
- driving
- 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
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/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/08—HW-SW co-design, e.g. HW-SW partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软硬件联合验证***及方法。该***包括:驱动软件、基于systemc模拟的存储器和异构集群;驱动软件嵌入在systemc框架中;驱动软件根据预设验证需求向异构集群发送驱动指令;存储器加载并保存待验证数据;异构集群根据驱动指令从存储器中提取待验证数据,计算得到输出数据,发送至驱动软件;驱动软件根据输出数据进行软硬件的联合验证。通过systemc模拟异构集群,驱动软件嵌入systemc框架,为驱动软件提供与硬件功能相等的模型,实现驱动软件对硬件的控制流程,协助软件前期的开发与调试,为硬件提供标准数据。解决了现有技术中软件与硬件在大多数的***开发中分开进行,导致开发周期长的技术问题。
Description
技术领域
本发明涉及集成电路设计技术领域,尤其涉及一种软硬件联合验证***及方法。
背景技术
工业界广泛应用的集成电路验证方法有:基于验证平台的仿真验证,形式化验证,软硬件协同验证。其中仿真验证、形式化验证为典型的以硬件设计为中心的验证方法。通过建立合理完备的测试用例,检查RTL硬件设计(寄存器级设计)在特定的激励下是否会产生相应的响应,完成自下而上的单元测试、集成测试和***测试等。
数据流架构人工智能***的设计涉及软硬件的紧密合作,由于硬件和软件设计在大多数***开发中是分开的,如果完全等硬件和软件分开开发完再合并验证,将会使得整个开发流程冗长而繁杂——期间上层软件不知道如何控制硬件,下层硬件也无法得到准确的数据进行测试验证。这样会导致整合过程发现问题又要回过头来修改双方的接口或者重新计算,这将付出更多的时间和代价。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种软硬件联合验证***及方法,旨在解决现有技术中软件与硬件在大多数的***开发中分开进行,导致开发周期长的技术问题。
为实现上述目的,本发明一种软硬件联合验证***,所述软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,所述驱动软件嵌入在所述存储器与异构集群对应的systemc框架中;
所述驱动软件,用于根据预设验证需求向所述异构集群发送驱动指令;
所述存储器,用于加载待验证数据,并对所述待验证数据进行保存;
所述异构集群,用于根据所述驱动指令从所述存储器中提取所述待验证数据,根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述驱动软件;
所述驱动软件,用于根据所述输出数据进行软硬件的联合验证。
可选地,所述驱动软件、所述存储器以及所述异构集群通过套接口与事务级总线进行通信。
可选地,所述异构集群包括引擎单元,所述引擎单元包括直接存储器访问以及引擎核心;
所述直接存储器访问,用于根据所述驱动指令从所述存储器中提取待验证数据,将所述待验证数据发送至所述引擎核心;
所述引擎核心,用于根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述直接存储器访问;
所述直接存储器访问,用于将所述输出数据发送至所述驱动软件。
可选地,所述引擎单元还包括处理器;
所述直接存储器访问,还用于根据所述驱动指令确定处理器指令,将所述处理器指令发送至所述处理器;
所述处理器,用于接收所述处理器指令,根据所述处理器指令启动所述引擎核心。
可选地,所述引擎单元还包括状态寄存器;
所述处理器,还用于在接收到所述处理器指令时,向所述状态寄存器发送配置信号;
所述状态寄存器,用于根据所述配置信号接收来自所述驱动软件的配置参数,根据所述配置参数进行调整,得到引擎静态参数;
所述引擎核心,还用于根据所述待验证数据以及所述引擎静态参数计算得到输出数据,将所述输出数据发送至所述直接存储器访问。
可选地,所述引擎单元为N个,N≥1。
可选地,所述待验证数据包括预设神经网络模型的相关系数、偏置项以及输入数据中至少一项。
可选地,所述待验证数据还包括所述预设神经网络模型中位于直连层的数据。
可选地,所述异构集群,还用于将所述输出数据发送至所述存储器,以使所述存储器对所述输出数据进行保存。
此外,为实现上述目的,本发明还提出一种软硬件联合验证方法,所述软硬件联合验证方法应用于如上所述的软硬件联合验证***,所述软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,所述驱动软件嵌入在所述存储器与异构集群对应的systemc框架中;
所述软硬件联合验证方法,包括:
所述驱动软件根据预设验证需求向所述异构集群发送驱动指令;
所述存储器加载待验证数据,并对所述待验证数据进行保存;
所述异构集群根据所述驱动指令从所述存储器中提取所述待验证数据,根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述驱动软件;
所述驱动软件根据所述输出数据进行软硬件的联合验证。
本发明的软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,驱动软件嵌入在存储器与异构集群对应的systemc框架中;驱动软件根据预设验证需求向异构集群发送驱动指令;存储器加载待验证数据,并对待验证数据进行保存;异构集群根据驱动指令从存储器中提取待验证数据,根据待验证数据计算得到输出数据,将输出数据发送至驱动软件;驱动软件根据输出数据进行软硬件的联合验证。通过systemc对异构集群进行模拟,把驱动软件嵌入sysemc框架,为软件提供一个与硬件功能相等的模型,实现了软件对硬件的控制流程,基于本发明提出的软硬件联合验证***,可以协助软件前期的开发与调试,为硬件提供标准数据。本发明模拟硬件架构,运行时完全模拟硬件的控制流与数据流,解决了现有技术中软件与硬件在大多数的***开发中分开进行,导致开发周期长的技术问题。
附图说明
图1是本发明软硬件联合验证***第一实施例的结构框图;
图2是本发明软硬件联合验证***一实施例的开发周期对比示意图;
图3是本发明软硬件联合验证***第二实施例的结构框图;
图4为本发明软硬件联合验证***一实施例的引擎单元数据处理示意图;
图5为本发明软硬件联合验证***第三实施例的结构框图;
图6为本发明软硬件联合验证***一实施例的神经网络计算流程示意图;
图7为本发明软硬件联合验证方法第一实施例的流程示意图。
附图标号说明:
标号 | 名称 | 标号 | 名称 |
10 | 驱动软件 | 50 | 直接存储器访问 |
20 | 存储器 | 60 | 引擎核心 |
30 | 异构集群 | 70 | 处理器 |
40 | 引擎单元 | 80 | 状态寄存器 |
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了一种软硬件联合验证***,参照图1,图1为本发明软硬件联合验证***第一实施例的结构框图。
本实施例中,所述软硬件联合验证***驱动软件10、基于systemc模拟的存储器20以及基于systemc模拟的异构集群30,所述驱动软件10嵌入在所述存储器20与异构集群30对应的systemc框架中;
所述驱动软件10,用于根据预设验证需求向所述异构集群30发送驱动指令。本实施例中,systemc是一种软/硬件协同设计语言,驱动软件10作为与硬件交互最直接的软件嵌入到systemc框架中,作为整个***的发起者,访问与控制异构集群30。预设验证需求可以为功能验证、性能验证以及匹配验证,软硬件开发过程不同,预设验证需求不同,还取决于驱动软件10对应的软件代码以及上层软件通过驱动软件10发出的控制指令,例如,在进行与硬件匹配的软件开发时,半成品软件通过驱动软件10向异构集群30发送启动指令,判断异构集群30这一模拟硬件能否正常启动。又例如,在开发设计过程中,测试硬件的计算速度,通过驱动软件10对硬件的计算时间进行监测,判断硬件的计算性能。本实施例对预设验证需求不加以限制。驱动指令为提前通过函数进行包装的启动指令或者验证指令,用于模拟实际软硬件联合验证场景,驱动指令可以根据实际的硬件测试用例通过软件代码编译。
需要说明的是,驱动软件10中包含有关硬件设备的信息,在本实施例中有关硬件设备为模拟出的异构集群30,驱动软件10的作用是正确的识别、管理、访问以及控制异构集群30。
所述存储器20,用于加载待验证数据,并对所述待验证数据进行保存。本实施例中,存储器20采用双倍速率同步动态随机存储器20(DDR),用于存储异构集群30需要使用到的数据,可以由驱动软件10将待验证数据发送至存储器20。
所述异构集群30,用于根据所述驱动指令从所述存储器20中提取所述待验证数据,根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述驱动软件10。本实施例中,异构集群30可以为引擎单元40,承载神经网络的计算与输入输出任务,异构集群30在接收到驱动指令时,从存储器20中提取待验证数据,在具体实现中,一边提取数据时,一边启动引擎进行计算,同时会输出数据,以此达到数据流的效果,异构集群30在未计算完成时,将这一阶段的输出数据传输至存储器20进行存储,在进行下一阶段的计算时,再次从存储器20中提取对应的输入数据,对输入数据进行计算,直到得到最终输出数据,将其发送至驱动软件10。
所述驱动软件10,用于根据所述输出数据进行软硬件的联合验证。本实施例中,驱动软件10根据异构集群30计算得到的输出数据以及运行状态数据完成软硬件之间的联合验证,依此来协助驱动软件10的前期开发。驱动软件10对异构集群30进行管理,异构集群30的运行结果保持与实际硬件一致,根据运行结果为硬件提供标准数据,
参照图2,图2为本发明软硬件联合验证***一实施例的开发周期对比示意图,图2中的模型研发即为本实施例提出的软硬件联合验证***的研发,从图中可以看出传统的软硬件开发流程中软件与硬件不能很好的并行起来,软件只能在硬件设计完成之后,才能进行相应的与硬件相关的开发,驱动(driver)类软件尤其是。虚拟原型的开发流程中,模型(model)的加入使得整个开发流程更加紧凑与高效。本实施例提出的systemc模型作为一个抽象级别高的模型,使得驱动类软件的开发紧跟硬件的脚步,使得硬件在开发完之后几乎不用等软件,就能进行集成测试(或者***测试)。软硬件联合验证***建立于片上***(soc)开发早期,此时,CPU选型未定,IP核选型也未定,底层操作***也不确定,通过本实施例提出的软硬件联合验证***可以协助软件的前期开发与调试,为硬件设计验证产生参考数据并提供早期的精度验证,在开发中期,提供标准数据,协助硬件模块级验证和***级验证,还可以为硬件提供性能分析。
进一步地,所述驱动软件10、所述存储器20以及所述异构集群30通过套接口与事务级总线进行通信。本实施例中,驱动软件10、存储器20以及异构集群30通过事务级总线通信,通过套接口连接至事务级总线,使用事务级总线(TLM bus)以及套接口(socket)完成软硬件接口的模拟。这个接口抽象掉了总线的各种协议,模块之间的通信使用函数调用的方法来实现。这样模块不需要关注端口定义以及端口时序,提高了建模速度,优化了最终的模型运行速度。
本发明的软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,驱动软件嵌入在存储器与异构集群对应的systemc框架中;驱动软件根据预设验证需求向异构集群发送驱动指令;存储器加载待验证数据,并对待验证数据进行保存;异构集群根据驱动指令从存储器中提取待验证数据,根据待验证数据计算得到输出数据,将输出数据发送至驱动软件;驱动软件根据输出数据进行软硬件的联合验证。通过systemc对异构集群进行模拟,把驱动软件嵌入sysemc框架,为软件提供一个与硬件功能相等的模型,实现了软件对硬件的控制流程,基于本发明提出的软硬件联合验证***,可以协助软件前期的开发与调试,为硬件提供标准数据。本发明模拟硬件架构,运行时完全模拟硬件的控制流与数据流,解决了现有技术中软件与硬件在大多数的***开发中分开进行,导致开发周期长的技术问题。
基于上述软硬件联合验证***的第一实施例,提出第二实施例,参照图3,图3为本发明软硬件联合验证***第二实施例的结构框图。
如图3所示,本发明实施例提出的软硬件联合验证***中所述异构集群30包括引擎单元40,所述引擎单元40包括直接存储器访问50以及引擎核心60;
所述直接存储器访问50,用于根据所述驱动指令从所述存储器20中提取待验证数据,将所述待验证数据发送至所述引擎核心60。本实施例中,直接存储器访问50(DirectMemory Access,DMA)是一种在***内部转移数据的独特模块,DMA模块负责把数据从存储器20DDR搬运到引擎单元40内部,或者将引擎单元40内部的数据传输给DDR或者驱动软件10。
所述引擎核心60,用于根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述直接存储器访问50。本实施例中,引擎核心60负责处理神经网络的算子。
所述直接存储器访问50,用于将所述输出数据发送至所述驱动软件10。
所述引擎单元40还包括处理器70;
所述直接存储器访问50,还用于根据所述驱动指令确定处理器70指令,将所述处理器70指令发送至所述处理器70。本实施例中,驱动软件10通过DMA确定处理器70的指令,将指令离线编译后通过DMA传输至处理器70中,从而使处理器70监视和直接控制引擎单元40的启动与停止。
所述处理器70,用于接收所述处理器70指令,根据所述处理器70指令启动所述引擎核心60。本实施例中,处理器70(uc)可以采用arm cortex系列处理器70,用来接管上层软件的功能,调配和控制引擎的启动与停止。
所述引擎单元40还包括状态寄存器80;
所述处理器70,还用于在接收到所述处理器70指令时,向所述状态寄存器80发送配置信号。本实施例中,处理器70在被驱动软件10启动后开始配置寄存器。
所述状态寄存器80,用于根据所述配置信号接收来自所述驱动软件10的配置参数,根据所述配置参数进行调整,得到引擎静态参数。本实施例中,状态寄存器80,用于接受驱动软件10的配置,存储有引擎静态参数,引擎静态参数在每一层神经网络计算时都会保持不变。在开发设计过程中,通过向状态寄存器80放入不同的程序以及参数,实现不同的计算内容。
所述引擎核心60,还用于根据所述待验证数据以及所述引擎静态参数计算得到输出数据,将所述输出数据发送至所述直接存储器访问50。本实施例中,DMA提取数据、引擎核心60计算以及DMA输出数据可以是同步进行的,达到数据流的效果,DMA从DDR中提取相关系数(Coefficient)以及偏置项(bias)这两个神经网络计算所需参数,在预设神经网络有直连层(shortcut)的情况下也会提取直连层的数据。然后提取输入数据用来计算。最后输出数据通过DMA传输回DDR或者交给驱动软件10处理。引擎核心60从状态寄存器80中提取相关引擎静态参数,与神经网络对应的相关系数等参数分发到各个部件进行计算。
参照图4,图4为本发明软硬件联合验证***一实施例的引擎单元40数据处理示意图,图4中,software表征驱动软件10的操作,uc_read表征处理器70读操作,DMA_read表征存储器20读操作,uc_write表征处理器70写操作,DMA_write表征存储器20写操作,Engine表征引擎核心60的操作,inst为指令,coef为相关系数(Coefficient),bias为偏置项(bias),sc为直连层数据(shortcut),data为输入数据,calc表征计算过程,result为输出结果。根据图4可知,软件通过包装好的函数通过DMA获取处理器70对应的指令,离线编译好处理器70指令后通过DMA发送至处理器70,从而启动处理器70,通过DMA分别获取相关系数、偏置项、直连层数据以及输入数据传输给引擎核心60进行计算,将结果通过DMA反馈给软件,在这一过程中,处理器70始终读取各类参数,实现对引擎单元40内参数的调配与控制。图4为举例说明了一种最基本和经典的情况。引擎单元40数据处理过程还存在不启动处理器70的情况,本实施例对此不加以限制。
本实施例的软硬件联合验证***中异构集群包括引擎单元,引擎单元包括直接存储器访问以及引擎核心;直接存储器访问根据驱动指令从存储器中提取待验证数据,将待验证数据发送至引擎核心;引擎核心根据待验证数据计算得到输出数据,将输出数据发送至直接存储器访问;直接存储器访问将输出数据发送至驱动软件;驱动软件根据输出数据进行验证。通过systemc模型对这些硬件的真实模块进行模拟,实现与硬件功能相等,对整个异构集群进行模拟,做到寄存器级精确,基于本实施例提出的软硬件联合验证***,可以协助软件前期的开发与调试,为硬件提供标准数据。本实施例模拟硬件架构,运行时完全模拟硬件的控制流与数据流,解决了现有技术中软件与硬件在大多数的***开发中分开进行,导致开发周期长的技术问题。
基于上述软硬件联合验证***的第一实施例和第二实施例,参照图5,图5为本发明软硬件联合验证***第三实施例的结构框图。
在本实施例中,所述引擎单元40为N个,N≥1。本实施例中,参照图5,图5中引擎单元40为2个,在具体实现中,可以采用其他个数,本实施例对此不加以限制。
可以理解的是,采用CAISA引擎和PP(Precise Processing)引擎作为本实施例的引擎单元40,承载了神经网络的计算与输入输出任务,CAISA引擎和PP引擎同属数据流架构,所应对的需求不一致,CAISA引擎是以int8或者int16为基础的神经网络计算引擎,主要处理主流的神经网络算子,CAISA引性能高,PP引擎则是以fp(浮点)运算为基础,处理一些必须要用fp的算子,性能不如CAISA。两个引擎都有所支持的算子池,其中既包括两个都支持的相同的算子,也包括只在某一个引擎内支持的算子。应用时驱动软件10根据预设验证需求,把算子分配到CAISA引擎或者PP引擎,每个引擎启动之前都需要被正确地设置。
所述待验证数据包括预设神经网络模型的相关系数、偏置项以及输入数据中至少一项。本实施例中,预设神经网络模型为提前配置的神经网络计算模型,待验证数据中包含计算神经网络所需的每一层网络层对应的相关系数、偏置项以及输入数据。参照图6,图6为本发明软硬件联合验证***一实施例的神经网络计算流程示意图,图6仅作为举例参考,对应的流程不代表分开的时间,有些流程和操作在实际过程中会并行起来,例如从存储提取数据、启动引擎进行计算以及输出数据等,以此达到数据流的效果。
所述待验证数据还包括所述预设神经网络模型中位于直连层的数据。本实施例中,在驱动软件10检测到预设神经网络模型中包含直连层数据时,将直连层数据传输至存储器20进行保存,引擎单元40在进行神经网络计算时,从存储器20中提取直连层数据,以进行计算。
所述异构集群30,还用于将所述输出数据发送至所述存储器20,以使所述存储器20对所述输出数据进行保存。本实施例中,异构集群30可以将输出数据发送至存储器20进行保存,例如,在对预设神经网络模型计算完一层数据后,将这一层的输出数据发送给存储器20进行存储,方便在下一层计算时,将这一输出数据作为输入数据提取,根据输入数据再次进行计算。
本实施例的软硬件联合验证***中引擎单元为N个,N≥1,根据多个引擎单元所支持的算子池,从存储器中提取预设神经网络模型的相关系数、偏置项以及输入数据中至少一项,从而实现神经网络计算。通过systemc模型对这些硬件的真实模块进行模拟,实现与硬件功能相等,基于本实施例提出的软硬件联合验证***,可以为硬件对于神经网络的实现提供早期的架构探索与算法实现。本实施例模拟硬件架构,运行时完全模拟硬件的控制流与数据流,解决了现有技术中软件与硬件在大多数的***开发中分开进行,导致开发周期长的技术问题。
本发明实施例提供了一种软硬件联合验证方法,参照图7,图7为本发明软硬件联合验证方法第一实施例的流程示意图。
所述软硬件联合验证方法应用于如权上所述的软硬件联合验证***,所述软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,所述驱动软件嵌入在所述存储器与异构集群对应的systemc框架中;
所述软硬件联合验证方法,包括:
步骤S10:所述驱动软件根据预设验证需求向所述异构集群发送驱动指令。
可以理解的是,systemc是一种软/硬件协同设计语言,驱动软件作为与硬件交互最直接的软件嵌入到systemc框架中,作为整个***的发起者,访问与控制异构集群。预设验证需求可以为功能验证、性能验证以及匹配验证,软硬件开发过程不同,预设验证需求不同,还取决于驱动软件对应的软件代码以及上层软件通过驱动软件发出的控制指令,例如,在进行与硬件匹配的软件开发时,半成品软件通过驱动软件向异构集群发送启动指令,判断异构集群这一模拟硬件能否正常启动。又例如,在开发设计过程中,测试硬件的计算速度,通过驱动软件对硬件的计算时间进行监测,判断硬件的计算性能。本实施例对预设验证需求不加以限制。驱动指令为提前通过函数进行包装的启动指令或者验证指令,用于模拟实际软硬件联合验证场景,驱动指令可以根据实际的硬件测试用例通过软件代码编译。
需要说明的是,驱动软件中包含有关硬件设备的信息,在本实施例中有关硬件设备为模拟出的异构集群,驱动软件的作用是正确的识别、管理、访问以及控制异构集群。
步骤S20:所述存储器加载待验证数据,并对所述待验证数据进行保存。
可以理解的是,存储器采用双倍速率同步动态随机存储器(DDR),用于存储异构集群需要使用到的数据,可以由驱动软件将待验证数据发送至存储器。
步骤S30:所述异构集群根据所述驱动指令从所述存储器中提取待验证数据,根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述驱动软件。
需要说明的是,异构集群可以为引擎单元,承载神经网络的计算与输入输出任务,异构集群在接收到驱动指令时,从存储器中提取待验证数据,在具体实现中,一边提取数据时,一边启动引擎进行计算,同时会输出数据,以此达到数据流的效果,异构集群在未计算完成时,将这一阶段的输出数据传输至存储器进行存储,在进行下一阶段的计算时,再次从存储器中提取对应的输入数据,对输入数据进行计算,直到得到最终输出数据,将其发送至驱动软件。
步骤S40:所述驱动软件根据所述输出数据进行软硬件的联合验证。
可以理解的是,驱动软件根据异构集群计算得到的输出数据以及运行状态数据完成软硬件之间的联合验证,依此来协助驱动软件的前期开发。驱动软件对异构集群进行管理,异构集群的运行结果保持与实际硬件一致,根据运行结果为硬件提供标准数据,
参照图2,图2为本发明软硬件联合验证***一实施例的开发周期对比示意图,图2中的模型研发即为本实施例提出的软硬件联合验证***的研发,从图中可以看出传统的软硬件开发流程中软件与硬件不能很好的并行起来,软件只能在硬件设计完成之后,才能进行相应的与硬件相关的开发,驱动(driver)类软件尤其是。虚拟原型的开发流程中,模型(model)的加入使得整个开发流程更加紧凑与高效。本实施例提出的systemc模型作为一个抽象级别高的模型,使得驱动类软件的开发紧跟硬件的脚步,使得硬件在开发完之后几乎不用等软件,就能进行集成测试(或者***测试)。软硬件联合验证***建立于片上***(soc)开发早期,此时,CPU选型未定,IP核选型也未定,底层操作***也不确定,通过本实施例提出的软硬件联合验证***可以协助软件的前期开发与调试,为硬件设计验证产生参考数据并提供早期的精度验证,在开发中期,提供标准数据,协助硬件模块级验证和***级验证,还可以为硬件提供性能分析。
进一步地,所述驱动软件、所述存储器以及所述异构集群通过套接口与事务级总线进行通信。本实施例中,驱动软件、存储器以及异构集群通过事务级总线通信,通过套接口连接至事务级总线,使用事务级总线(TLM bus)以及套接口(socket)完成软硬件接口的模拟。这个接口抽象掉了总线的各种协议,模块之间的通信使用函数调用的方法来实现。这样模块不需要关注端口定义以及端口时序,提高了建模速度,优化了最终的模型运行速度。
本发明的软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,驱动软件嵌入在存储器与异构集群对应的systemc框架中;驱动软件根据预设验证需求向异构集群发送驱动指令;存储器加载待验证数据,并对待验证数据进行保存;异构集群根据驱动指令从存储器中提取待验证数据,根据待验证数据计算得到输出数据,将输出数据发送至驱动软件;驱动软件根据输出数据进行软硬件的联合验证。通过systemc对异构集群进行模拟,把驱动软件嵌入sysemc框架,为软件提供一个与硬件功能相等的模型,实现了软件对硬件的控制流程,基于本发明提出的软硬件联合验证***,可以协助软件前期的开发与调试,为硬件提供标准数据。本发明模拟硬件架构,运行时完全模拟硬件的控制流与数据流,解决了现有技术中软件与硬件在大多数的***开发中分开进行,导致开发周期长的技术问题。
在一实施例中,所述异构集群包括引擎单元,所述引擎单元包括直接存储器访问以及引擎核心;
步骤S30,包括:
所述直接存储器访问根据所述驱动指令从所述存储器中提取待验证数据,将所述待验证数据发送至所述引擎核心;
所述引擎核心根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述直接存储器访问;
所述直接存储器访问将所述输出数据发送至所述驱动软件。
在一实施例中,所述引擎单元还包括处理器;
所述直接存储器访问根据所述驱动指令从所述存储器中提取待验证数据,将所述待验证数据发送至所述引擎核心之后,所述方法还包括:
所述直接存储器访问根据所述驱动指令确定处理器指令,将所述处理器指令发送至所述处理器;
所述处理器接收所述处理器指令,根据所述处理器指令启动所述引擎核心。
在一实施例中,所述引擎单元还包括状态寄存器;
所述直接存储器访问根据所述驱动指令确定处理器指令,将所述处理器指令发送至所述处理器之后,所述方法还包括:
所述处理器在接收到所述处理器指令时,向所述状态寄存器发送配置信号;
所述状态寄存器根据所述配置信号接收来自所述驱动软件的配置参数,根据所述配置参数进行调整,得到引擎静态参数;
相应地,所述所述引擎核心根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述直接存储器访问,包括:
所述引擎核心根据所述待验证数据以及所述引擎静态参数计算得到输出数据,将所述输出数据发送至所述直接存储器访问。
在一实施例中,所述引擎单元为N个,N≥1。
在一实施例中,所述待验证数据包括预设神经网络模型的相关系数、偏置项以及输入数据中至少一项。
在一实施例中,所述待验证数据还包括所述预设神经网络模型中位于直连层的数据。
在一实施例中,步骤S40之后,所述方法还包括:所述异构集群将所述输出数据发送至所述存储器,以使所述存储器对所述输出数据进行保存。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种软硬件联合验证***,其特征在于,所述软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,所述驱动软件嵌入在所述存储器与异构集群对应的systemc框架中;
所述驱动软件,用于根据预设验证需求向所述异构集群发送驱动指令;
所述存储器,用于加载待验证数据,并对所述待验证数据进行保存;
所述异构集群,用于根据所述驱动指令从所述存储器中提取所述待验证数据,根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述驱动软件;
所述驱动软件,用于根据所述输出数据进行软硬件的联合验证;
其中,所述异构集群包括引擎单元,所述引擎单元包括直接存储器访问以及引擎核心;
所述直接存储器访问,用于根据所述驱动指令从所述存储器中提取待验证数据,将所述待验证数据发送至所述引擎核心;
所述引擎核心,用于根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述直接存储器访问;
所述直接存储器访问,用于将所述输出数据发送至所述驱动软件。
2.如权利要求1所述的软硬件联合验证***,其特征在于,所述驱动软件、所述存储器以及所述异构集群通过套接口与事务级总线进行通信。
3.如权利要求1所述的软硬件联合验证***,其特征在于,所述引擎单元还包括处理器;
所述直接存储器访问,还用于根据所述驱动指令确定处理器指令,将所述处理器指令发送至所述处理器;
所述处理器,用于接收所述处理器指令,根据所述处理器指令启动所述引擎核心。
4.如权利要求3所述的软硬件联合验证***,其特征在于,所述引擎单元还包括状态寄存器;
所述处理器,还用于在接收到所述处理器指令时,向所述状态寄存器发送配置信号;
所述状态寄存器,用于根据所述配置信号接收来自所述驱动软件的配置参数,根据所述配置参数进行调整,得到引擎静态参数;
所述引擎核心,还用于根据所述待验证数据以及所述引擎静态参数计算得到输出数据,将所述输出数据发送至所述直接存储器访问。
5.如权利要求1所述的软硬件联合验证***,其特征在于,所述引擎单元为N个,N≥1。
6.如权利要求1至5中任一项所述的软硬件联合验证***,其特征在于,所述待验证数据包括预设神经网络模型的相关系数、偏置项以及输入数据中至少一项。
7.如权利要求6所述的软硬件联合验证***,其特征在于,所述待验证数据还包括所述预设神经网络模型中位于直连层的数据。
8.如权利要求1至5中任一项所述的软硬件联合验证***,其特征在于,所述异构集群,还用于将所述输出数据发送至所述存储器,以使所述存储器对所述输出数据进行保存。
9.一种软硬件联合验证方法,其特征在于,所述软硬件联合验证方法应用于如权利要求1至8中任一项所述的软硬件联合验证***,所述软硬件联合验证***包括:驱动软件、基于systemc模拟的存储器以及基于systemc模拟的异构集群,所述驱动软件嵌入在所述存储器与异构集群对应的systemc框架中;
所述软硬件联合验证方法,包括:
所述驱动软件根据预设验证需求向所述异构集群发送驱动指令;
所述存储器加载待验证数据,并对所述待验证数据进行保存;
所述异构集群根据所述驱动指令从所述存储器中提取所述待验证数据,根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述驱动软件;
所述驱动软件根据所述输出数据进行软硬件的联合验证;
其中,所述异构集群包括引擎单元,所述引擎单元包括直接存储器访问以及引擎核心;
所述异构集群根据所述驱动指令从所述存储器中提取所述待验证数据,根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述驱动软件,包括:
所述直接存储器访问根据所述驱动指令从所述存储器中提取待验证数据,将所述待验证数据发送至所述引擎核心;
所述引擎核心根据所述待验证数据计算得到输出数据,将所述输出数据发送至所述直接存储器访问;
所述直接存储器访问将所述输出数据发送至所述驱动软件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011573586.2A CN112632885B (zh) | 2020-12-25 | 2020-12-25 | 软硬件联合验证***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011573586.2A CN112632885B (zh) | 2020-12-25 | 2020-12-25 | 软硬件联合验证***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112632885A CN112632885A (zh) | 2021-04-09 |
CN112632885B true CN112632885B (zh) | 2023-01-03 |
Family
ID=75325729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011573586.2A Active CN112632885B (zh) | 2020-12-25 | 2020-12-25 | 软硬件联合验证***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632885B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356494A (zh) * | 2021-12-08 | 2022-04-15 | 深圳云天励飞技术股份有限公司 | 一种神经网络模拟器的数据处理方法、装置和终端 |
CN116755771B (zh) * | 2023-07-24 | 2024-04-26 | 太初(无锡)电子科技有限公司 | 一种基于软硬件交互反馈的矩阵乘模块合法性验证方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504692A (zh) * | 2009-03-25 | 2009-08-12 | 炬力集成电路设计有限公司 | 一种验证和测试片上***的***及方法 |
CN102480467A (zh) * | 2010-11-25 | 2012-05-30 | 上海宇芯科技有限公司 | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 |
CN106528364A (zh) * | 2016-12-15 | 2017-03-22 | 盛科网络(苏州)有限公司 | 基于存储器访问驱动的自动化协同验证平台的搭建方法 |
CN107851150A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于可信i/o的安全硬件和软件证明的技术 |
CN111027277A (zh) * | 2019-11-12 | 2020-04-17 | 天津大学 | 一种软硬件协同的验证方法 |
CN111353263A (zh) * | 2018-12-21 | 2020-06-30 | 创发信息科技(苏州)有限公司 | 软硬件设计与验证平台*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928816A (zh) * | 2006-09-26 | 2007-03-14 | 武汉大学 | 嵌入式***软件的模型驱动与构件化开发方法 |
CN102183759B (zh) * | 2011-01-25 | 2013-05-01 | 中国船舶重工集团公司第七一五研究所 | 基于Linux集群的声纳实时信号处理实现方法 |
CN109543212B (zh) * | 2018-10-10 | 2023-02-28 | 深圳市紫光同创电子有限公司 | 可编程逻辑器件的功能测试方法、装置及计算机存储介质 |
-
2020
- 2020-12-25 CN CN202011573586.2A patent/CN112632885B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504692A (zh) * | 2009-03-25 | 2009-08-12 | 炬力集成电路设计有限公司 | 一种验证和测试片上***的***及方法 |
CN102480467A (zh) * | 2010-11-25 | 2012-05-30 | 上海宇芯科技有限公司 | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 |
CN107851150A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于可信i/o的安全硬件和软件证明的技术 |
CN106528364A (zh) * | 2016-12-15 | 2017-03-22 | 盛科网络(苏州)有限公司 | 基于存储器访问驱动的自动化协同验证平台的搭建方法 |
CN111353263A (zh) * | 2018-12-21 | 2020-06-30 | 创发信息科技(苏州)有限公司 | 软硬件设计与验证平台*** |
CN111027277A (zh) * | 2019-11-12 | 2020-04-17 | 天津大学 | 一种软硬件协同的验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112632885A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105205249B (zh) | 一种soc调试验证***及其软硬件协同方法 | |
CN107038280B (zh) | 一种软硬件协同仿真的验证***及其方法 | |
US7366650B2 (en) | Software and hardware simulation | |
CN112632885B (zh) | 软硬件联合验证***及方法 | |
EP1093619B1 (en) | System and method for identifying finite state machines and verifying circuit designs | |
CN113297073B (zh) | 芯片中算法模块的验证方法、装置、设备及可读存储介质 | |
CN113342583B (zh) | 芯片验证***、方法、装置、设备和存储介质 | |
CN113434355B (zh) | 模块验证方法、uvm验证平台、电子设备及存储介质 | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
Ruospo et al. | A pipelined multi-level fault injector for deep neural networks | |
US9690888B2 (en) | Method and apparatus for system design verification | |
US8504344B2 (en) | Interface between a verification environment and a hardware acceleration engine | |
CN115828839A (zh) | 一种soc芯片***级验证***及方法 | |
JPH11513512A (ja) | ディジタル信号プロセッサの製造方法 | |
CN113868120A (zh) | 工业软件调试方法、装置、计算机设备和存储介质 | |
Lin et al. | Functional verifications for SoC software/hardware co-design: From virtual platform to physical platform | |
CN109783837A (zh) | 仿真设备、仿真***、仿真方法和仿真程序 | |
CN115062496B (zh) | 嵌入式应用的验证方法、装置、电子设备及芯片 | |
CN106648895A (zh) | 一种处理数据的方法、装置及终端 | |
CN114912358A (zh) | 一种基于uvm的卷积神经网络验证*** | |
CN115562931A (zh) | 处理器调试模块验证方法、装置、电子设备和存储介质 | |
CN115062571A (zh) | 应用于集成电路器件的数据区域动态选取方法、***、设备和计算机可读存储介质 | |
CN113272813B (zh) | 定制数据流硬件模拟仿真方法、装置、设备及存储介质 | |
CN113792522A (zh) | 仿真验证方法、装置及计算设备 | |
TWI266070B (en) | Chip-level design under test verification environment and method thereof |
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 |