首页> 中国专利> 一种在芯片仿真模型上进行软件调试的方法

一种在芯片仿真模型上进行软件调试的方法

摘要

本发明提出一种在芯片仿真模型上进行软件调试的方法,在芯片仿真模型所在主机/服务器上对ICE软件的两个调试协议转换线程进行建模,其中一个线程用于接收调试主机的调试命令,另一个线程用于监测芯片状态;两个调试协议转换线程与芯片仿真模型以线程/进程间通信方式进行通信,与调试主机通过基于互联网络的调试通信协议进行通信,芯片仿真模型所在主机/服务器与调试主机通过互联网络进行通信。本发明通过对ICE软件的两个调试协议转换线程进行建模,实现芯片仿真模型与调试主机的通信连接,使得调试人员可以像调试真实芯片一样对芯片仿真模型进行软件调试,便于在执行结果错误时,查找出错点并修正。

著录项

  • 公开/公告号CN112329369A

    专利类型发明专利

  • 公开/公告日2021-02-05

    原文格式PDF

  • 申请/专利权人 安徽芯纪元科技有限公司;

    申请/专利号CN202011242307.4

  • 申请日2020-11-09

  • 分类号G06F30/343(20200101);G06F30/331(20200101);G06F9/54(20060101);

  • 代理机构34147 合肥律众知识产权代理有限公司;

  • 代理人邓盛花

  • 地址 230000 安徽省合肥市高新区习友路3366号博微产业园系统协同中心7楼

  • 入库时间 2023-06-19 09:49:27

说明书

技术领域

本发明涉及芯片仿真技术领域,尤其是一种在芯片仿真模型上进行软件调试的方法。

背景技术

现如今,芯片已经在各种电子设备中发挥着重要作用,大部分电子设备的运行都依赖于其内部芯片的实现。芯片实现包括芯片设计和芯片制造两个阶段。芯片设计包括软件设计和逻辑电路设计,软件是芯片的灵魂,用于描述芯片所实现的功能,逻辑电路是实现芯片功能而设计的硬件电路。芯片制造的主要步骤就是依据芯片设计结果进行流片,但是芯片一经流片,其内部逻辑就无法再改变。如果芯片设计阶段出现问题,就只能重新流片,这样一来造成的损失无疑是巨大的。芯片流片的成本非常高,这就对芯片设计提出了更高的要求,确保芯片设计的正确性。为此,在芯片设计过程中,通常通过构建芯片仿真模型对芯片逻辑功能的正确性进行验证。

芯片仿真模型包括软件仿真模型、硬件仿真模型,其中软件仿真模型一般基于systemc等开源框架开发,硬件仿真模型一般以verilog/systemverilog/VHDL语言建立,可以经过后端处理后转化为网表、GDSII版图,是芯片前端设计的具体表示。

可编程芯片是指可以运行软件的芯片,如CPU、DSP、集成有CPU的SOC芯片等。对于可编程芯片,在芯片设计阶段,不论是软件仿真模型,还是硬件仿真模型,均应对芯片上运行的软件行为进行仿真。一般通过软件或EDA工具,将芯片上将要运行的软件加载到芯片仿真模型,再对该软件的运行结果进行仿真,以验证芯片逻辑功能的正确性,是芯片验证最重要的环节之一,是保证可编程芯片逻辑功能正确性的必由之路。

现有技术中,在芯片仿真模型对软件的执行进行仿真时,仅能观察软件的执行结果。当执行结果不符合预期时,难以定位出错位置,这也不符合软件开发人员常规的开发方式。对于比较复杂的软件(如芯片内部固化的加载软件、外设驱动软件、轻量型的嵌入式操作系统)进行仿真时,有必要提供对仿真的软件进行调试的功能。

目前,常规的芯片仿真环境如systemc/systemverilog/verilog,均不能直接支持对芯片上运行软件进行调试。这是因为芯片上运行的软件与芯片的具体架构密切相关,不同的芯片必须以不同的方式对其调试功能进行仿真。

对于真实芯片,一般通过在线仿真器ICE(In-Circuit Emulator)进行调试,该设备通常包括一块FPGA芯片和一块嵌入式CPU芯片。CPU芯片上运行的软件通过USB或网线与调试主机通信,FPGA芯片通过标准JTAG协议对芯片进行控制。芯片内部设计有JTAG控制逻辑,JTAG控制逻辑一方面通过标准JTAG协议与ICE中的FPGA逻辑通信,另一方面通过总线或硬件信号访问芯片内部资源,如寄存器、片上SRAM、外设控制和状态寄存器。

发明内容

针对现有技术不能对芯片仿真模型上运行的软件进行调试的问题,本发明提出一种在芯片仿真模型上进行软件调试的方法。

本发明保护一种在芯片仿真模型上进行软件调试的方法,在芯片仿真模型所在主机/服务器上对ICE软件的两个调试协议转换线程进行建模,其中一个线程用于接收调试主机的调试命令,另一个线程用于监测芯片状态;两个调试协议转换线程与芯片仿真模型以线程/进程间通信方式进行通信,与调试主机通过基于互联网络的调试通信协议进行通信,芯片仿真模型所在主机/服务器与调试主机通过互联网络进行通信。

进一步的,若芯片仿真模型完全由systemc实现,且对芯片上的调试逻辑进行抽象,直接以函数的方式实现对芯片上寄存器、外设、片上SRAM的访问,则两个调试协议转换线程与systemc芯片仿真模型直接以线程/进程间通信方式进行通信。

进一步的,若芯片仿真模型完全由systemc描述,且芯片上的JTAG控制逻辑由systemc实现,则两个调试协议转换线程与systemc芯片仿真模型之间通过systemc实现的FPGA仿真逻辑进行通信;FPGA仿真逻辑一方面从systemc芯片仿真模型接收JTAG线路的逻辑变化并解析,另一方面以线程/进程间通信方式与两个调试协议转换线程进行通信。

进一步的,若芯片仿真模型的处理器内核由systemc实现,其余部分外设逻辑由verilog/systemverilog实现,则两个调试协议转换线程直接与systemc处理器内核仿真模型通信。

进一步的,若芯片仿真模型的芯片内部JTAG控制逻辑由systemc实现,其余部分逻辑由verilog/systemverilog实现,则两个调试协议转换线程仅直接与systemc实现的芯片内部JTAG控制逻辑通信。

进一步的,若芯片仿真模型完全由verilog/systemverilog实现,则使用systemc对ICE软件的FPGA逻辑进行建模,systemc仿真的FPGA逻辑一方面与芯片仿真模型之间传输仿真的JTAG信号,另一方面与两个调试协议转换线程之间以线程/进程间通信方式通信。

本发明还保护一种基于上述软件调试方法的芯片仿真模型软件调试系统。

本发明的有益效果:1、通过ICE软件的两个调试协议转换线程进行建模,实现芯片仿真模型与调试主机的通信连接,使得调试人员可以像调试真实芯片一样对芯片仿真模型进行软件调试,便于在执行结果错误时,查找出错点并修正;2、既可以对systemc实现的纯软件模拟器进行调试,也可以对verilog/systemverilog/systemc实现的混合仿真平台进行调试;3、实现芯片仿真模型的远程调试、跨网段调试。

附图说明

图1为实施例1第一种建模方式下的调试系统示意图;

图2为实施例1第二种建模方式下的调试系统示意图;

图3为实施例2第一种建模方式下的调试系统示意图;

图4为实施例2第二种建模方式下的调试系统示意图;

图5为实施例2第三种建模方式下的调试系统示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

实施例1

一种在芯片仿真模型上进行软件调试的方法,在芯片仿真模型所在主机/服务器上对ICE软件的两个调试协议转换线程进行建模,其中一个线程用于接收调试主机的调试命令,另一个线程用于监测芯片状态。

若以线程的方式对这两个线程进行建模,则这两个线程与芯片仿真模型以线程间通信方式进行通信,这里的线程间通信方式包括全局变量、消息队列等。

若以进程的方式对这两个线程进行建模,则这两个进程与芯片仿真模型以进程间通信方式进行通信,这里的进程间通信方式包括管道、共享内存等。

两个调试协议转换线程与调试主机通过调试通信协议进行通信,这里的调试通信协议一般通过Ethernet网络传输。芯片仿真模型所在主机/服务器与调试主机通过互联网络进行通信。只要芯片仿真模型所在主机/服务器与调试人员操作的调试主机能够通过互联网络通信,调试人员就可以远程对该芯片仿真模型进行软件调试,调试方式类似于真实芯片的调试方式。

在本实施例中,芯片仿真模型完全由systemc实现。Systemc实现的芯片仿真模型中的逻辑是对硬件的仿真,主要以时钟驱动的方式工作,而模拟ICE软件的两个线程直接运行在主机/服务器上,如何建立两者之间的通信是需要考虑的问题。下面分两种不同层次的建模进行讨论。

一、对芯片上的调试逻辑进行高层抽象,直接以函数的方式实现对芯片上寄存器、外设控制或状态寄存器、片上SRAM的访问。

这种建模方式下,两个调试协议转换线程与systemc芯片仿真模型直接以线程/进程间通信方式进行通信,如图1所示。

二、芯片上的JTAG控制逻辑由systemc实现。

这种建模方式下,需要在两个调试协议转换线程与systemc芯片仿真模型之间增设一个systemc实现的FPGA仿真逻辑。该FPGA仿真逻辑一方面从systemc芯片仿真模型接收JTAG线路的逻辑变化并解析,另一方面以线程/进程间通信方式与两个调试协议转换线程进行通信,如图2所示。

显然,第一种方式实现较为简单,仿真速度较快,但并不能完全模拟真实芯片的行为;而第二种方法实现较为复杂,仿真速度较慢,但与真实芯片的行为更为接近。

实施例2

区别于实施例1,在本实施例中,芯片仿真模型部分或完全由verilog/systemverilog实现。

主流的EDA工具支持对verilog/systemverilog和systemc建模的模型同时进行仿真,即芯片仿真模型中的一部分逻辑由verilog/systemverilog实现,另一部分逻辑由systemc实现。

本发明同样可以对verilog/systemverilog实现的芯片仿真模型进行软件调试,限制在于芯片仿真模型中至少包括一部分systemc实现的软件仿真模型,这部分软件仿真模型可以是处理器内核,也可以是芯片内部JTAG逻辑,甚至可以是ICE中的FPGA逻辑。

一、芯片仿真模型的处理器内核由systemc实现,其余部分外设逻辑由verilog/systemverilog实现。

这种建模方式下,两个调试协议转换线程直接与systemc处理器内核仿真模型通信即可,如图3所示。

二、芯片仿真模型的芯片内部JTAG控制逻辑由systemc实现,其余部分逻辑由verilog/systemverilog实现。

这种建模方式下,两个调试协议转换线程仅直接与systemc实现的芯片内部JTAG控制逻辑通信,如图4所示。

三、芯片仿真模型完全由verilog/systemverilog实现。

这种建模方式下,需使用systemc对ICE上的FPGA逻辑进行建模,systemc仿真的FPGA逻辑一方面与芯片仿真模型之间传输仿真的JTAG信号,另一方面与两个调试协议转换线程之间以线程/进程间通信方式通信,如图5所示。芯片内部逻辑完全由verilog/systemverilog实现,该芯片仿真模型与真实芯片行为最为接近。

一般,大型芯片仿真模型的计算量非常大,需要在高性能服务器上进行仿真,软件开发人员只能远程登录服务器,通过查看仿真波形的方式查看软件仿真结果,效率非常低下。基于本发明提出的软件调试方法,调试人员可以在本地通过调试软件对在远程服务器上仿真的芯片仿真模型直接进行软件调试,便于在执行结果错误时,查找出错点并修正。

显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号