CN110134561B - 一种软硬件协同验证中调试信息的输出方法及装置 - Google Patents

一种软硬件协同验证中调试信息的输出方法及装置 Download PDF

Info

Publication number
CN110134561B
CN110134561B CN201910418803.1A CN201910418803A CN110134561B CN 110134561 B CN110134561 B CN 110134561B CN 201910418803 A CN201910418803 A CN 201910418803A CN 110134561 B CN110134561 B CN 110134561B
Authority
CN
China
Prior art keywords
display terminal
virtual display
preset
debugging information
output
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
Application number
CN201910418803.1A
Other languages
English (en)
Other versions
CN110134561A (zh
Inventor
崔昭华
张楠赓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canaan Bright Sight Co Ltd
Original Assignee
Canaan Bright Sight Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canaan Bright Sight Co Ltd filed Critical Canaan Bright Sight Co Ltd
Priority to CN201910418803.1A priority Critical patent/CN110134561B/zh
Publication of CN110134561A publication Critical patent/CN110134561A/zh
Application granted granted Critical
Publication of CN110134561B publication Critical patent/CN110134561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种软硬件协同验证中调试信息的输出方法及装置,方法包括:将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上,并将调试信息的标准输出设备重定向至虚拟显示终端;响应于调试信息的打印输出指令,将调试信息输出至虚拟显示终端,并采用预设硬件描述语言在虚拟显示终端直接打印输出调试信息。利用该方法及装置,能够显著提高软硬件协同验证中调试信息的输出效率及速度。

Description

一种软硬件协同验证中调试信息的输出方法及装置
技术领域
本发明属于验证领域,具体涉及一种软硬件协同验证中调试信息的输出方法及装置。
背景技术
随着以IP(Intellectual Property,知识产权)核复用为核心的设计技术的出现,集成电路应用设计已经进入片上系统(System on a Chip,简称SoC)时代,SoC是一种高度集中的嵌入式片上系统。芯片设计汇总的任何缺陷都会导致整个芯片的设计失败,因此,在流片之前,必须对芯片的系统功能进行验证,其中,软硬件协同验证是SoC设计的核心技术,所谓软硬件协同验证是指在硬件的物理原型(电路板或芯片)生产出来之前,通过一个系统模型来运行软件,以此来检查硬件设计中的错误、软件中的缺陷以及软/硬件接口中的错误。软硬件协同验证中,使用处理器模型是将硬件仿真与软件执行调试相结合的关键,通过处理器模型用硬件仿真实现软硬件协同验证。处理器执行软件程序并与外设内存通信,可以是真实的寄存器转换级(Register Transfer Level,简称RTL)CPU或者是指令执行的仿真器等。调试过程以硬件仿真的输出记录信息作为主要的调试手段。
在嵌入式系统中的传统软件调试过程中,打印函数的输出信息到显示终端通常使用的是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,简称UART)接口,即通过UART接口把输出字符传输到输出显示终端上,输出过程效率比较慢,原因包括:(1)UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输,输出信息是以字符为单位的美国信息交换标准代码(American StandardCode for Information Interchange,简称ASCII),每个字符输出过程需要转换为8位比特的串行信号,并且UART传输的过程还要增加开始位、奇偶校验位和停止位。(2)UART串行通信接口作为低速外设接口,其传输速度本身也比较低。(3)软硬件协同验证的基础运行在RTL级别的硬件仿真平台上,其执行过程是基于事件响应的,比如一个时钟触发过程就需要整个设计平台全部都触发一次事件,这样当设计规模较大时,每个打印输出过程需要实际执行的硬件仿真负载会变得非常大,如果是做门级别仿真更是会使得仿真时间变得非常长。
由此可以看出,现有技术中SoC软硬件协同验证中存在调试信息输出效率较低的问题。
发明内容
针对上述SoC软硬件协同验证中存在调试信息输出效率较低这一问题,提出了一种软硬件协同验证中调试信息的输出方法及装置,利用这种方法/装置,能够显著提高软硬件协同验证中调试信息的输出效率及速度。
本发明提供了一种软硬件协同验证中调试信息的输出方法,方法包括:
将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上,并将调试信息的标准输出设备(stdout)重定向至虚拟显示终端;
响应于调试信息的打印输出指令,将调试信息输出至虚拟显示终端,并采用预设硬件描述语言在虚拟显示终端直接打印输出调试信息。
在一实施例中,其中,将虚拟显示终端挂接到SOC验证仿真环境中的并行总线上包括:
基于预设硬件描述语言,将SoC验证仿真环境中的总线信号绑定在一起。从而形成接口(interface);
将虚拟显示终端通过接口(interface)绑定到SoC验证仿真环境中的总线信号中,并为虚拟显示终端分配预设总线地址。
在一实施例中,其中,还包括:通过对所述SoC仿真环境中的底层驱动程序进行预设操作,从而将调试信息的标准输出设备(stdout)重定向至虚拟显示终端;
其中,预设操作包括:在底层驱动程序中,将字符输出函数(printk)中的第一子函数替换为预设的第二子函数;
其中,第一子函数用于驱动串口执行输出操作,第二子函数用于驱动预设写操作,预设写操作包括将输出的调试信息直接写入虚拟显示终端的预设总线地址中。
在一实施例中,其中,预设硬件描述语言为Verilog HDL语言和/或SystemVerilog语言。
在一实施例中,其中,响应于调试信息的打印输出指令,将调试信息输出至虚拟显示终端,并在虚拟显示终端中直接打印输出调试信息包括:
响应于调试信息的打印输出指令,将调试信息并行传输至虚拟显示终端;
调用预设打印函数,在虚拟显示终端内部直接对所接收到的调试信息字符进行打印输出操作。
在一实施例中,其中,预设打印函数为Verilog HDL语言的$fwrite函数。
本发明还提供了一种软硬件协同验证中调试信息的输出装置,包括:
重定向模块,用于将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上,并将调试信息的标准输出设备(stdout)重定向至虚拟显示终端;
输出模块,用于响应于调试信息的打印输出指令,将调试信息输出至虚拟显示终端,并在虚拟显示终端中直接打印输出调试信息。
在一实施例中,其中,重定向模块具体用于:
基于预设硬件描述语言,将SoC验证仿真环境中的总线信号绑定在一起。从而形成接口(interface);
将虚拟显示终端通过接口(interface)绑定到SoC验证仿真环境中的总线信号中,并为虚拟显示终端分配预设总线地址。
在一实施例中,其中,重定向模块具体用于:
还包括:通过对所述SoC仿真环境中的底层驱动程序进行预设操作,从而将调试信息的标准输出设备(stdout)重定向至虚拟显示终端;
其中,预设操作包括:在底层驱动程序中,将字符输出函数(printk)中的第一子函数替换为预设的第二子函数;
其中,第一子函数用于驱动串口执行输出操作,第二子函数用于驱动预设写操作,预设写操作包括将输出的调试信息直接写入虚拟显示终端的预设总线地址中。
在一实施例中,其中,预设硬件描述语言为Verilog HDL语言和/或SystemVerilog语言。
在一实施例中,其中,输出模块具体用于:
响应于调试信息的打印输出指令,将调试信息并行传输至虚拟显示终端;
调用预设打印函数,在虚拟显示终端内部直接对所接收到的调试信息字符进行打印输出操作。
在一实施例中,其中,预设打印函数为Verilog HDL语言的$fwrite函数。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过采用将调试信息的标准输出设备重定向至并行挂接到总线上的虚拟显示终端,加速了SOC验证中输出打印调试信息的输出速度,提高了SOC软硬件协同验证的效率。对于设计规模较大的SOC芯片的门级仿真加速更加明显。采用基于system verilog语言的接口(interface)作为虚拟显示终端和待验证SOC系统总线的连接媒介,无需在设计待验证SoC芯片时就预留用于挂接虚拟显示终端的冗余地址空间,简化了挂接流程;通过简单修改底层驱动程序,减少了打印输出函数的标准输出设备的重定向的复杂度;通过采用硬件描述语言的打印函数,实现软件打印调试信息通过硬件仿真平台的输出显示。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举说明本发明的具体实施方式。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的有点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为根据本发明一实施例的调试信息的输出方法的流程示意图;
图2a为根据本发明一实施例的采用UART进行调试信息输出的示意图;
图2b为根据本发明一实施例的采用虚拟显示终端进行调试信息输出的示意图;
图3为根据本发明另一实施例的调试信息的输出方法的流程示意图;
图4为根据本发明又一实施例的调试信息的输出方法的流程示意图;
图5为根据本发明一实施例的调试信息的输出装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面对本发明的实施方式中提及的技术术语进行简单解释,以便更好地理解本方案。
片上系统(System on a chip,简称SoC,),是指在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术。
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,简称UART),用于将要传输的资料在串行通信与并行通信之间加以转换,通常被集成于其他通讯接口的连结上。
硬件描述语言(Hardware Description Language,简称:HDL),是电子系统硬件行为描述、结构描述、数据流描述的语言。利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。
下面将参考附图并结合实施例来详细说明本发明。
图1是根据本发明实施例的一种软硬件协同验证中调试信息的输出方法的示意性流程图。如图1所示,具体包括如下步骤:
步骤101、将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上,并将调试信息的标准输出设备(stdout)重定向至所述虚拟显示终端;
步骤102、响应于所述调试信息的打印输出指令,将所述调试信息输出至所述虚拟显示终端,并采用预设硬件描述语言在所述虚拟显示终端直接打印输出所述调试信息。
具体地,在上述步骤101中,SoC验证仿真环境指的是SOC验证仿真环境。本实施例的软硬件协同验证中,将硬件仿真与软件执行调试相结合,通过处理器执行软件并与外设内存通信,调试信息的输出原理是在软件程序中执行C语言的打印函数printf(),printf()函数是标准输出函数,一般用于向标准输出设备按规定格式输出信息;并行总线是并行接口与处理器之间传递数据的通道;标准输出设备(stdout)是指采用打印函数printf()输出数据的目的地。例如,传统的嵌入式系统中,上述调试信息的标准输出设备(stdout)通常为通过UART串口传输到外部显示器,而本实施例中,将上述调试信息的标准输出设备(stdout)重定向至挂接到系统总线上的虚拟显示终端。
具体地,在上述步骤102中,所述调试信息的打印输出指令指的是调用打印函数printf()以执行打印调试信息的指令。例如,当调试人员想要观察被调试程序的运行情况是否符合预设要求时,可以采用在被调试程序中插入上述打印函数程序的方法,当被调试程序运行到该打印函数程序时,就会自动触发执行上述打印输出指令。进一步地,由于在上述步骤101中,调试信息的标准输出设备(stdout)已经重定向至虚拟显示终端,因此该打印调试信息会直接传送到该虚拟显示终端上,而无需经由串口传送到外设显示设备上。
本发明实施例的基本思路在于,不使用UART串口作为输出调试信息的传输路径,而是采用总线上挂接的虚拟显示终端对调试信息进行直接地打印显示。而虚拟显示终端是并行连接到SoC验证仿真环境中的系统总线上的,因此向该虚拟显示终端的数据传输是以总线位宽为单位的,比如在32位总线中,一次可以传输4个字符信息到该虚拟显示终端。进一步可以在虚拟显示终端内部使用硬件描述语言直接对获取的字符进行打印输出操作。采用这一方案,就可以高效率地实现在软硬件协同仿真的过程中,将软件打印调试信息通过硬件仿真平台的输出显示。
举例来说,图2a示出了当通过UART串口作为输出调试信息的传输路径时的数据传输示意图。参见图2a,外部显示器通过UART串口串行连接至SoC验证仿真环境中的总线上,CPU执行待验证软件程序并输出调试信息,在调试信息的传输中存在两个导致输出效率低的过程,一是UART传输串行数据的过程,二是显示器将UART发来的串行数据翻译为字符的过程,例如,如果采用UART串行传输一个字符,需要8位数据位、1个开始位、一个校验位、一个结束位,也即共需要11个时钟周期,显示器需要接收8bit之后再转化为一个字节(byte)才能进行终端显示。此外,这里的11个时钟周期是指UART的串口工作时钟,而串口工作时钟通常要比内部总线时钟慢很多,比如串口时钟1.5Mhz,内部总线时钟200Mhz。其中,显示器可以内置于SoC验证仿真平台,或者,该显示器也可以是独立于SoC验证仿真平台的外部设备,比如,服务器等,本实施例不作限定。
举例来说,图2b示出了当通过虚拟显示终端作为输出调试信息的传输路径时的数据传输示意图。参见图2b,在SoC验证仿真环境中,虚拟显示终端并联挂接至总线上,进而得以与仿真环境中的CPU并联通信,CPU执行待验证软件程序并输出调试信息。基于此,如果采用虚拟终端输出字符则只需要一个并行传输过程、也即仅需一个内部总线时钟周期即可,比如在32位总线中,一次可以传输4个字符信息到该虚拟显示终端。
可选地,图2a和图2b中的CPU,可以是真实的RTL级CPU,也可以是指令执行的仿真器,本申请对此不作具体限制。值得注意的是,本实施例都不考虑总线的延迟过程,因为总线延迟过程对于UART串行输出和虚拟显示终端输出是一致的。
由此可以看出,上述通过UART串口输出以及通过虚拟显示终端输出调试信息的实际运行效率实际相差非常大,本发明对提升调试信息的打印输出效率有明显的提升。
基于图1的调试信息的输出方法,本申请的一些实施例还提供了该调试方法的一些具体实施方案,以及扩展方案,下面进行说明。
进一步地,在一实施例中,参见图3,步骤101中的将虚拟显示终端挂接到SOC验证仿真环境中的并行总线上包括:
步骤301、基于预设硬件描述语言,将所述SoC验证仿真环境中的总线信号绑定在一起,从而形成接口(interface);
步骤302、通过所述接口将所述虚拟显示终端(interface)绑定到所述SoC验证仿真环境中的总线信号中,并为所述虚拟显示终端分配预设总线地址。
具体地,步骤301中,上述预设硬件描述语言优选为system verilog,进而基于system verilog语言定义接口(interface),使该接口(interface)作为虚拟显示终端和待验证SOC系统总线的连接媒介。
本领域技术人员可以理解的是,System Verilog是一种硬件描述和验证语言,它基于IEEE1364-2001Verilog硬件描述语言,并对其进行了扩展,system verilog语言主要用于芯片的实现和验证流程上,并为系统级的设计流程提供了强大的连接能力。
具体地,以下结合system verilog语言,对上述步骤301中,基于预设硬件描述语言,将所述SoC验证仿真环境中的总线信号绑定在一起,从而形成接口(interface)中,这一“绑定”(bind)技术进行详细描述:基于Verilog语言的模块连接是通过模块端口实现的,因此,为了给设计中的各个模块定义端口,必须对期望的硬件设计有一个详细的认识。然而在设计的早期,难以把握设计的细节,难以对各个模块定义端口;并且,一旦模块的端口定义完成就很难再改变端口的配置,无法对定义好的端口进行调整;此外,由于设计中的许多模块具有相同的端口定义,在每个模块中进行相同的定义的过程增加了重复工作。基于上述技术问题,system verilog语言提供了一个高层抽象的模块连接方式,这个连接被称为接口(Interface)。接口独立于模块、且接口在模块中就像一个单一的端口一样使用。例如,在最简单的形式下,一个接口可以认为是一组线网。进一步地,可以将总线的所有信号绑定在一起,从而组成一个接口。通过使用该接口,验证人员在仿真一个设计的时候,无需首先建立各个模块间的互连。进一步地,随着设计的深入推进,接口内的相应信号也会表示出来。此外,当接口发生变化时,这些变化也会在使用该接口的所有模块中反映出来,而无需对每一个模块进行更改。
进一步地,通过在总线信号形成的接口(interface)中,为虚拟显示终端分配预设总线地址,可以实现将虚拟显示终端挂接到SOC验证仿真环境中的并行总线上。基于上述绑定技术,无需在设计待验证SoC芯片时就预留用于挂接虚拟显示终端的冗余地址空间,分配的预设总线地址在SOC系统中与原有设计模块不冲突,且虚拟显示终端在总线上与处理设备是并行连接关系,所以传输是以总线位宽为单位的,比如32位总线一个传输可以传输4个字符信息。
进一步地,在一实施例中,由于在传统的软硬件协同调试中,输出信息到显示终端通常使用的是通过UART接口把输出字符传输到输出显示终端上,对应地,在嵌入式系统的底层驱动程序中,字符输出函数printk同样是被设计用于驱动UART输出,因此为了实现调试信息在虚拟显示终端上的输出,步骤101还可以包括:
还包括:通过对所述SoC仿真环境中的底层驱动程序进行预设操作,从而将所述调试信息的标准输出设备(stdout)重定向至所述虚拟显示终端;
具体地,上述预设操作可以包括:在底层驱动程序中,将字符输出函数(printk)中的第一子函数替换为预设的第二子函数;
具体地,所述第一子函数可以是用于驱动串口执行输出操作,串口可以是UART串口,所述第二子函数可以用于驱动预设写操作,该预设写操作包括将所述输出的调试信息直接写入所述虚拟显示终端的所述预设总线地址中。
举例来说,上述用于驱动串口执行输出操作的第一子函数的代码形式可以包括:
Figure BDA0002065316200000101
Figure BDA0002065316200000111
举例来说,上述用于驱动预设写操作的第二子函数的代码形式可以包括:
Figure BDA0002065316200000112
可以看出,上述第一子函数到第二子函数的替换中,对底层驱动程序的修改内容包括:(1)使用staticvoid定义虚拟显示终端“paral_putf”;(2)将字符串格式化输出从“uart_putf”替换为“paral_putf”,从而在Soc验证仿真环境中的底层驱动程序中指定虚拟显示终端地址,并输出字符到虚拟显示终端。基于此,通过对底层驱动程序的简单修改,即可完成打印输出函数的标准输出设备的重定向。
进一步地,在一实施例中,预设硬件描述语言为Verilog HDL语言和/或SystemVerilog语言,本申请对此不作具体限制。
进一步地,在一实施例中,参见图4,步骤102中,响应于所述调试信息的打印输出指令,将所述调试信息输出至所述虚拟显示终端,并采用预设硬件描述语言在所述虚拟显示终端直接打印输出所述调试信息具体可以包括:
步骤401、响应于所述调试信息的打印输出指令,将所述调试信息并行传输至所述虚拟显示终端;
步骤402、调用预设打印函数,在所述虚拟显示终端内部直接对所接收到的所述调试信息字符进行打印输出操作。
具体地,上述步骤401中,由于虚拟显示终端通过挂接到总线上而并行连接至执行软件程序的处理器,因而可以将软件的调试信息从处理器并行传输至所述虚拟显示终端。
具体地,上述步骤402中,上述所调用的预设打印函数优选为基于Verilog HDL语言的$fwrite函数。通过采用硬件描述语言的打印函数,这样在软硬件协同仿真的过程中就可以实现软件打印调试信息通过硬件仿真平台的输出显示。
本实施例,通过采用以上方案,加速了SOC验证中输出打印调试信息的输出速度,提高了SOC软硬件协同验证的效率。对于设计规模较大的SOC芯片的门级仿真加速更加明显。采用基于system verilog语言的接口(interface)作为虚拟显示终端和待验证SOC系统总线的连接媒介,无需在设计待验证SoC芯片时就预留用于挂接虚拟显示终端的冗余地址空间,简化了挂接流程;通过简单修改底层驱动程序,减少了打印输出函数的标准输出设备的重定向的复杂度;通过采用硬件描述语言的打印函数,实现软件打印调试信息通过硬件仿真平台的输出显示。
图5是根据本发明实施例的一种软硬件协同验证中调试信息的输出装置50的示意性框图。如图5所示,装置50具体包括:
重定向模块501,用于将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上,并将所述调试信息的标准输出设备(stdout)重定向至所述虚拟显示终端;
输出模块502,用于响应于所述调试信息的打印输出指令,将所述调试信息输出至所述虚拟显示终端,并采用预设硬件描述语言在所述虚拟显示终端直接打印输出所述调试信息。
具体地,针对上述重定向模块501,SoC验证仿真环境指的是SOC验证仿真环境。本实施例的软硬件协同验证中,将硬件仿真与软件执行调试相结合,通过处理器执行软件并与外设内存通信,调试信息的输出原理是在软件程序中执行C语言的打印函数printf();并行总线是并行接口与处理器之间传递数据的通道;标准输出设备(stdout)是指打印函数printf()的标准输出设备,也即输出数据的目的地。例如,传统的嵌入式系统中,上述调试信息的标准输出设备(stdout)通常为通过UART串口传输到外部显示器,而本实施例中,将上述调试信息的标准输出设备(stdout)重定向至挂接到系统总线上的虚拟显示终端。
具体地,针对上述输出模块502,所述调试信息的打印输出指令指的是调用打印函数printf()以执行打印调试信息的指令。例如,当调试人员想要观察被调试程序的运行情况是否符合预设要求时,可以采用在被调试程序中插入上述打印函数程序的方法,当被调试程序运行到该打印函数程序时,就会自动触发执行上述打印输出指令。进一步地,由于在上述步骤101中,调试信息的标准输出设备(stdout)已经重定向至虚拟显示终端,因此该打印调试信息会直接传送到该虚拟显示终端上,而无需经由串口传送到外设显示设备上。
本发明实施例的基本思路在于,不使用UART串口作为输出调试信息的传输路径,而是采用总线上挂接的虚拟显示终端对调试信息进行直接地打印显示。而虚拟显示终端是并行连接到SoC验证仿真环境中的系统总线上的,因此向该虚拟显示终端的数据传输是以总线位宽为单位的,比如在32位总线中,一次可以传输4个字符信息到该虚拟显示终端。进一步可以在虚拟显示终端内部使用硬件描述语言直接对获取的字符进行打印输出操作。采用这一方案,就可以高效率地实现在软硬件协同仿真的过程中,将软件打印调试信息通过硬件仿真平台的输出显示。
举例来说,图2a示出了当通过UART串口作为输出调试信息的传输路径时的数据传输示意图。参见图2a,外部显示器通过UART串口串行连接至SoC验证仿真环境中的总线上,在调试信息的传输中存在两个导致输出效率低的过程,一是UART传输串行数据的过程,二是显示器将UART发来的串行数据翻译为字符的过程,例如,如果采用UART串行传输一个字符,需要8位数据位、1个开始位、一个校验位、一个结束位,也即共需要11个时钟周期,显示器需要接收8bit之后再转化为一个字节(byte)才能进行终端显示。此外,这里的11个时钟周期是指UART的串口工作时钟,而串口工作时钟通常要比内部总线时钟慢很多,比如串口时钟1.5Mhz,内部总线时钟200Mhz。其中,显示器可以内置于SoC验证仿真平台,或者,该显示器也可以是独立于SoC验证仿真平台的外部设备,比如,服务器等,本实施例不作限定。
举例来说,图2b示出了当通过虚拟显示终端作为输出调试信息的传输路径时的数据传输示意图。参见图2b,在SoC验证仿真环境中,虚拟显示终端并联挂接至总线上,进而得以与仿真环境中的CPU并联通信。基于此,如果采用虚拟终端输出字符则只需要一个并行传输过程、也即仅需一个内部总线时钟周期即可,比如在32位总线中,一次可以传输4个字符信息到该虚拟显示终端。
可选地,图2a和图2b中的CPU,可以是真实的RTL级CPU,也可以是指令执行的仿真器,本申请对此不作具体限制。值得注意的是,本实施例都不考虑总线的延迟过程,因为总线延迟过程对于UART串行输出和虚拟显示终端输出是一致的。
由此可以看出,上述通过UART串口输出以及通过虚拟显示终端输出调试信息的实际运行效率实际相差非常大,本发明对提升调试信息的打印输出效率有明显的提升。
基于图5的调试信息的输出装置,本申请的一些实施例还提供了该调试装置的一些具体实施装置,以及扩展装置,下面进行说明。
在一实施例中,其中,重定向模块具体用于:
基于预设硬件描述语言,将SoC验证仿真环境中的总线信号绑定在一起。从而形成接口(interface);
将虚拟显示终端通过接口(interface)绑定到SoC验证仿真环境中的总线信号中,并为虚拟显示终端分配预设总线地址。
在一实施例中,其中,重定向模块具体用于:
还包括:通过对所述SoC仿真环境中的底层驱动程序进行预设操作,从而将调试信息的标准输出设备(stdout)重定向至虚拟显示终端;
其中,预设操作包括:在底层驱动程序中,将字符输出函数(printk)中的第一子函数替换为预设的第二子函数;
其中,第一子函数用于驱动串口执行输出操作,第二子函数用于驱动预设写操作,预设写操作包括将输出的调试信息直接写入虚拟显示终端的预设总线地址中。
在一实施例中,其中,预设硬件描述语言为Verilog HDL语言和/或SystemVerilog语言。
在一实施例中,其中,输出模块具体用于:
响应于调试信息的打印输出指令,将调试信息并行传输至虚拟显示终端;
调用预设打印函数,在虚拟显示终端内部直接对所接收到的调试信息字符进行打印输出操作。
在一实施例中,其中,预设打印函数为Verilog HDL语言的$fwrite函数。
本实施例,通过采用以上方案,加速了SOC验证中输出打印调试信息的输出速度,提高了SOC软硬件协同验证的效率。对于设计规模较大的SOC芯片的门级仿真加速更加明显。采用基于system verilog语言的接口(interface)作为虚拟显示终端和待验证SOC系统总线的连接媒介,无需在设计待验证SoC芯片时就预留用于挂接虚拟显示终端的冗余地址空间,简化了挂接流程;通过简单修改底层驱动程序,减少了打印输出函数的标准输出设备的重定向的复杂度;通过采用硬件描述语言的打印函数,实现软件打印调试信息通过硬件仿真平台的输出显示。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (12)

1.一种软硬件协同验证中调试信息的输出方法,其特征在于,包括:
将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上,并将调试信息的标准输出设备重定向至所述虚拟显示终端;
响应于所述调试信息的打印输出指令,将所述调试信息输出至所述虚拟显示终端,并采用预设硬件描述语言在所述虚拟显示终端中直接打印输出所述调试信息。
2.根据权利要求1所述的方法,其特征在于,将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上包括:
基于预设硬件描述语言,将所述SoC验证仿真环境中的总线信号绑定在一起,从而形成接口;
通过所述接口将所述虚拟显示终端绑定到所述SoC验证仿真环境中的总线信号中,并为所述虚拟显示终端分配预设总线地址。
3.根据权利要求2所述的方法,其特征在于,还包括:通过对所述SoC仿真环境中的底层驱动程序进行预设操作,从而将所述调试信息的标准输出设备重定向至所述虚拟显示终端;
其中,所述预设操作包括:在所述底层驱动程序中,将字符输出函数中的第一子函数替换为预设的第二子函数;
其中,所述第一子函数用于驱动串口执行输出操作,所述第二子函数用于驱动预设写操作,所述预设写操作包括将所述输出的调试信息直接写入所述虚拟显示终端的所述预设总线地址中。
4.根据权利要求2所述的方法,其特征在于,所述预设硬件描述语言包括Verilog HDL语言和/或System Verilog语言。
5.根据权利要求1所述的方法,其特征在于,响应于所述调试信息的打印输出指令,将所述调试信息输出至所述虚拟显示终端,并在所述虚拟显示终端中直接打印输出所述调试信息包括:
响应于所述调试信息的打印输出指令,将所述调试信息并行传输至所述虚拟显示终端;
调用预设打印函数,在所述虚拟显示终端内部直接对所接收到的所述调试信息字符进行打印输出操作。
6.根据权利要求5所述的方法,其特征在于,所述预设打印函数为Verilog HDL语言的$fwrite函数。
7.一种软硬件协同验证中调试信息的输出装置,其特征在于,包括:
重定向模块,用于将虚拟显示终端挂接到SoC验证仿真环境中的并行总线上,并将调试信息的标准输出设备重定向至所述虚拟显示终端;
输出模块,用于响应于所述调试信息的打印输出指令,将所述调试信息输出至所述虚拟显示终端,并在所述虚拟显示终端中直接打印输出所述调试信息。
8.根据权利要求7所述的装置,其特征在于,所述重定向模块具体用于:
基于预设硬件描述语言,将所述SoC验证仿真环境中的总线信号绑定在一起,从而形成接口;
通过所述接口将所述虚拟显示终端绑定到所述SoC验证仿真环境中的总线信号中,并为所述虚拟显示终端分配预设总线地址。
9.根据权利要求8所述的装置,其特征在于,所述重定向模块具体用于:
通过对所述SoC仿真环境中的底层驱动程序进行预设操作,从而将所述调试信息的标准输出设备重定向至所述虚拟显示终端;
其中,所述预设操作包括:在所述底层驱动程序中,将字符输出函数中的第一子函数替换为预设的第二子函数;
其中,所述第一子函数用于驱动串口执行输出操作,所述第二子函数用于驱动预设写操作,所述预设写操作包括将所述输出的调试信息直接写入所述虚拟显示终端的所述预设总线地址中。
10.根据权利要求8所述的装置,其特征在于,所述预设硬件描述语言包括Verilog HDL语言和/或System Verilog语言。
11.根据权利要求7所述的装置,其特征在于,所述输出模块具体用于:
响应于所述调试信息的打印输出指令,将所述调试信息并行传输至所述虚拟显示终端;
调用预设打印函数,在所述虚拟显示终端内部直接对所接收到的所述调试信息字符进行打印输出操作。
12.根据权利要求11所述的装置,其特征在于,所述预设打印函数为Verilog HDL语言的$fwrite函数。
CN201910418803.1A 2019-05-20 2019-05-20 一种软硬件协同验证中调试信息的输出方法及装置 Active CN110134561B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910418803.1A CN110134561B (zh) 2019-05-20 2019-05-20 一种软硬件协同验证中调试信息的输出方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910418803.1A CN110134561B (zh) 2019-05-20 2019-05-20 一种软硬件协同验证中调试信息的输出方法及装置

Publications (2)

Publication Number Publication Date
CN110134561A CN110134561A (zh) 2019-08-16
CN110134561B true CN110134561B (zh) 2023-07-14

Family

ID=67571650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910418803.1A Active CN110134561B (zh) 2019-05-20 2019-05-20 一种软硬件协同验证中调试信息的输出方法及装置

Country Status (1)

Country Link
CN (1) CN110134561B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117194276A (zh) * 2023-11-06 2023-12-08 沐曦集成电路(上海)有限公司 芯片软硬件联合仿真调试系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309542A (zh) * 2020-01-20 2020-06-19 广州芯德通信科技股份有限公司 一种嵌入式系统调试模块及其构建方式
CN116384305B (zh) * 2023-06-05 2023-08-01 英诺达(成都)电子科技有限公司 数据通信方法、装置、系统、设备及计算机存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
CN1873626A (zh) * 2005-06-01 2006-12-06 中兴通讯股份有限公司 一种自动生成桩和驱动函数的单元测试系统及方法
CN101059773A (zh) * 2007-02-07 2007-10-24 北京航空航天大学 基于总线模型的嵌入系统仿真平台
CN102521444A (zh) * 2011-12-08 2012-06-27 青岛海信信芯科技有限公司 软硬件协同仿真/验证方法及装置
CN102681924A (zh) * 2011-04-25 2012-09-19 中国电子科技集团公司第三十八研究所 软硬件协同验证平台
CN106407800A (zh) * 2016-09-20 2017-02-15 腾讯科技(深圳)有限公司 一种hook的方法及终端设备
CN107797846A (zh) * 2017-09-26 2018-03-13 记忆科技(深圳)有限公司 一种Soc芯片验证方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
CN1873626A (zh) * 2005-06-01 2006-12-06 中兴通讯股份有限公司 一种自动生成桩和驱动函数的单元测试系统及方法
CN101059773A (zh) * 2007-02-07 2007-10-24 北京航空航天大学 基于总线模型的嵌入系统仿真平台
CN102681924A (zh) * 2011-04-25 2012-09-19 中国电子科技集团公司第三十八研究所 软硬件协同验证平台
CN102521444A (zh) * 2011-12-08 2012-06-27 青岛海信信芯科技有限公司 软硬件协同仿真/验证方法及装置
CN106407800A (zh) * 2016-09-20 2017-02-15 腾讯科技(深圳)有限公司 一种hook的方法及终端设备
CN107797846A (zh) * 2017-09-26 2018-03-13 记忆科技(深圳)有限公司 一种Soc芯片验证方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117194276A (zh) * 2023-11-06 2023-12-08 沐曦集成电路(上海)有限公司 芯片软硬件联合仿真调试系统
CN117194276B (zh) * 2023-11-06 2024-01-23 沐曦集成电路(上海)有限公司 芯片软硬件联合仿真调试系统

Also Published As

Publication number Publication date
CN110134561A (zh) 2019-08-16

Similar Documents

Publication Publication Date Title
US5600579A (en) Hardware simulation and design verification system and method
CN110134561B (zh) 一种软硬件协同验证中调试信息的输出方法及装置
CN100487709C (zh) Soc软硬件一体化设计验证方法
KR101035832B1 (ko) 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템
US5493672A (en) Concurrent simulation of host system at instruction level and input/output system at logic level with two-way communication deadlock resolution
CN100565472C (zh) 一种适用于多处理器核系统芯片的调试方法
US20110307847A1 (en) Hybrid system combining TLM simulators and HW accelerators
CN102508753B (zh) Ip核验证系统
CN113076227A (zh) Mcu验证方法、系统和终端设备
CN112560377B (zh) 基于虚拟平台与fpga联合的仿真验证方法及系统
CN102480467B (zh) 一种基于网络通讯协议的soc软硬件协同仿真验证方法
CN100487668C (zh) 一种嵌入式处理器的调试方法
KR20030066641A (ko) 효율적인 데이터 로딩 및 언로딩을 위하여 합성된 패킷기반 프로토콜 논리를 이용한 하드웨어 보조 설계 검증시스템
CN114611445A (zh) 基于FPGA原型的SoC软硬件协同验证系统及方法
CN115496018A (zh) 一种SoC芯片多版本验证方法、装置及设备
US6134481A (en) Message protocol
CN115622896A (zh) 一种axi4高速总线及多队列仿真验证方法及仿真验证装置
CN100433024C (zh) 软硬件协同仿真通信方法
CN115903569A (zh) 一种全数字综合模块化航电系统
CN113496108B (zh) 一种应用于仿真的cpu模型
JP2015011363A (ja) 協調検証装置及び協調検証方法
JP2004310568A (ja) シミュレータ装置、シミュレーション方法および性能解析方法
CN116090372B (zh) 一种基于fpga的芯片仿真加速方法和系统
US11573883B1 (en) Systems and methods for enhanced compression of trace data in an emulation system
CN117251314A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201202

Address after: Room 206, 2 / F, building C, phase I, Zhongguancun Software Park, No. 8, Dongbei Wangxi Road, Haidian District, Beijing 100094

Applicant after: Canaan Bright Sight Co.,Ltd.

Address before: 100094 Zhongguancun Software Park Phase I Building C Block 101, 8 Wangxi Road, Haidian District, Beijing

Applicant before: Canaan Creative Co.,Ltd.

GR01 Patent grant
GR01 Patent grant