多内核SoC设计带动调试过程综合化

人们越来越依靠复杂多内核设计的趋势进一步推动了对能够解决各种难题的综合性调试工具的需求。由于多内核与支持结构通常都嵌入到一个共享的soc架构内部,无法再用外部直接监控方法对大部分的处理器间联系进行跟踪,因此常规的零散式调试方法这时已不再适用。

  因此如今的复杂多内核soc设计不再像以往那样,在每个处理器的外部引出端设置很多方便的调试探测点,而是有效地把所有这些处理器间链接都融入到芯片级设计的内部;同时大量支持逻辑如存储器、混合信号、fpga、闪存和i/o结构等也都嵌入芯片内部,这种高集成度soc进一步加大了最终产品的调试难度。此外当设计涉及到来自不同供应商的不同处理器(如arm核和dsp核)混用时,调试环境还必须应付总线结构和数据流之类本质上完全不同的各种特性。

  同时,微控制器和处理器与dsp之间更为复杂的相互联系非常普通,如送给显示器的混合信号、指示设备之间带有信号及数据流的相互作用、将dsp更多充作高级专用计算与变换控制器的协处理器等等,由此也导致了对综合性更强的处理器间调试工具的需求。

  同时控制所有内核

  随着高层次调试过程的进步以及总体设计日益稳定,通常需要专注于具体子模块细节部分的分析与调试,以求优化关键功能或实现最大性能。在这种情况下,调试工具必须能够立足于指定部分,同时兼顾到设计的各个层面。如在蜂窝电话设计中,都认为dsp部分是固定不变的,所以大部分调试过程都转向微控制器部分,但由于dsp是整个数据流的关键环节,因此调试器在进行微控制器调试的同时仍然需要对dsp部分进行复位、运行和控制。

  对综合调试过程优化时,首先要求用户能通过一个公共界面实现对所有内核的同时交流与控制。对每个内核的访问必须完全独立于周围环境,即设计中另一内核或另一部分的状态不应妨碍设计人员对任何其它目标内核的实时行为进行控制。

  设计中的处理器具有主从关系时单独访问尤为重要。传统调试环境下使用不同的工具对每个处理器进行控制,上述步骤非常复杂耗时,因为专门从事dsp部分的设计人员还必须了解微处理器内核的调试环境以设置和起动dsp。实际上这会导致两种截然不同的调试器在各个不同的环节来回调用,从而延缓整个设计进程,且难以实现自动操作。更槽的是,每次宕机后开发人员还必须手工完成所有设置步骤以重启整个过程,回到失效点。

  与之相反,在一个综合调试环境下,微处理器内核和dsp两部分开发人员可以共同使用同一个脚本对具体的设计部分进行设置和仿真,并用类似的过程对主要环节的调试实现自动操作。

  除了减少开发人员花在不同设计部分的学习时间外,使用公共调试工具、脚本和过程还可在开发人员寻求相互帮助和支持时实现更为流畅的协作,不需要为搞清“另一部分”开发人员是否正确设置了“我”的处理器等问题而费神,只要所有开发人员都使用相同的工具和脚本,他们便可在大家熟悉的调试环境中直接对结果进行分析。

  除了处理器单独控制外,综合调试环境对某些或所有处理内核同步操作提供支持也至关重要。关键是实现对多个处理器起动、运行或停止之类同步行为的精确控制,以捕获某个内核相对于另一内核的状态。为了对实时处理进行分析,具备同时使多个处理器起动或使之同时终止的能力也是必需的。

  调试环境的暂停功能应具有一定的灵活性,可执行用户强制暂停(在预定点对过程进行检测)和中断触发暂停(发生失效时采集系统状态),调试系统的灵活性还包括即使某个内核失效,也能单独连续完成系统的其余部分。

  由于微处理器内核和dsp之间的接口日益与实时操作系统和平台级软件混为一体,因此产品设计和调试环境能提供对操作系统的认识并通过更高层次的操作系统对硬件进行控制也很关键。从硬件设计和调试的角度出发,需放弃大量针对软件的流程控制来增进功能,所以它是一个权衡的过程。由此导致一种状态机,使调试器处于对节点而非转换的控制之中。故设计人员在考虑应用更高层次的操作系统功能或平台操作系统控制时,必须了解调试所带来的难度增加,确信所用调试工具能有效地保持对软件和硬件的控制能力。

  一个界面解决所有问题

  综合调试环境最重要的目

  • 多内核SoC设计带动调试过程综合化已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计