在验证范畴,虚拟探针增强了硬件加速仿真作为数据中心资源对硬件规划人员和软件开发人员的吸引力。
硬件加速仿真不断证明它自身便是一种便当的东西,既可用于硬件/软件协同验证,也可用于测验硬件和软件的集成。
发动操作体系并履行软件应用程序需求经过数十亿个验证周期 — 传统的根据软件的剖析东西无法担任这项使命。只要根据硬件的验证引擎才可供给应对这一应战所需的吞吐量。正因为如此,硬件加速仿真和 FPGA 原型规划才会成为当今规划和验证团队的验证东西箱中的必备引擎。
经过硬件加速仿真和 FPGA 原型规划,嵌入式软件开发人员能够验证嵌入式软件并履行体系验证,这是一项极具吸引力的功用。只要经过硬件加速仿真,他们才干承认嵌入式体系软件能够与底层硬件协同作业,因为 FPGA 原型规划没有供给可调试内部作业的硬件规划可见性。
别的,在规划周期中,项目组成员能够运用硬件加速仿真的时刻一般远早于运用 FPGA 原型的时刻。因而,运用硬件加速仿真技术,软件开发团队开端进行验证的时刻要早于运用 FPGA 原型的状况。
硬件工程师也能够认识到在硬件加速仿真上运转软件的优势。当实践软件产品榜首次在硬件上运转时,它简直总会暴露出硬件过错,即便最全面的验证办法也会遗失一些过错。及早运转软件能够暴露出这些过错,以便咱们加以处理。这样不只简略,而且本钱较低。
物理探针
曩昔,软件开发人员运用物理 JTAG 探针来调试在硬件加速器上运转的代码(图 1)。JTAG 规范界说了一系列信号,以及经过四管脚接口读取和写入物理芯片中的寄存器的办法。这种做法的初衷是供给一种测验芯片的办法,让测验工程师窥视封装芯片的内部,承认它是否正常作业。
软件开发人员意识到他们能够运用相同的接口,读取和写入芯片中的处理器的通用寄存器。能够读取和写入处理器的主寄存器,意味着他们能够调试在处理器上运转的程序。
经过一些奇妙的接口,他们能够运用嵌入式调试器(例如 Lauterbach 的 Trace-32 或 ARM 的 DS-5),将指令发送到 JTAG 探针,以提取或设置衔接到探针的板载处理器的状况。这是开发人员运转和调试嵌入式体系上的“裸机”程序和驱动程序的最常用办法。
运用当今的硬件加速仿真体系,可经过衔接到外部器材的任何 I/O 卡,输出规划的任何信号。这种办法可用于输出 JTAG 接口的四个信号。经过将这些来自硬件加速器中的规划的信号衔接到 JTAG 探针,软件开发人员能够在硬件加速仿真规划上,履行与在原型板上相同的调试作业。
因为 JTAG 探针将在规划后期用于原型板上,而且或许还在后续项目中运用,因而软件开发人员一般都了解该探针的运用办法和效果。在硬件加速仿真规划上调试软件时,软件开发人员自然会选用这种了解的东西。
尽管 JTAG 接口让调试器能够直接读取和写入寄存器,但要正确地调试程序,还需求能够读取和写入内存而且操控程序的履行。为了满意这种需求,处理器规划人员添加了调试器可拜访的寄存器,以便将内存读取和写入指令刺进到履行管道中。这样一来,调试器就能够彻底拜访规划中的一切内存和内存映射的器材。
别的,这些规划人员还选用了断点寄存器和其他调试支撑电路,然后令 JTAG 调试器能够操控程序的履行。这意味着,经过衔接至处理器的 JTAG,调试器能够显现程序源代码、处理器的寄存器、内存、变量以及程序的仓库。因而,调试器能够设置断点,运转和单步调试程序,而这些正是软件开发人员希望现代化软件调试环境能够供给的功用。
处理 JTAG 探针问题
尽管 JTAG 探针完成了在硬件加速仿真规划上的软件调试,但它也有缺陷。榜首,JTAG 探针和在硬件加速器中运转的规划都有它们自己的自激时钟。为了坚持同步,这些时钟有必要保持共同的速度。假如做不到,调试器和规划之间的衔接将会丢掉。
许多状况下,需求重置探针;而有些时分,还将需求重置规划自身。有时减慢乃至中止硬件加速器中的规划时钟对错常有用的,因为这样能够收集和上载规划上的波形。这样一来,开发人员就能够检查规划的状况,或许对规划进行强制赋值,使其变换到新值。实质上,假如硬件加速器上的时钟不能减慢或中止,硬件开发人员将会丢掉许多硬件调试功用。
运用 JTAG 探针存在的第二个问题是功用。因为存在两个独立的时钟域,一个在硬件加速器上,另一个在探针上,数据将在两个域之间传递,就会发生跨时钟域问题。为了处理这个问题,探针上的时钟速度一般低于处理器的时钟速度。在原型板上,处理器的时针速度可到达几百兆赫乃至千兆赫,这不是问题。但在硬件加速仿真中,时钟运转速度为一兆赫或两兆赫,这或许让速度减慢许多。
例如,在 ARM Cortex-A57 中分步运转单个指令,需求超越 400 万个比特的 JTAG 扫描链活动。假如处理器的时钟在 2 MHz 的频率下运转,JTAG 时钟的频率是它的四分之一,也便是 500 kHz,则在分步运转之后,需求 8 秒才干更新调试器中的视图。
另一个功用问题是程序下载时刻。软件开发人员运用扫描链,经过 JTAG 探针将程序下载到方针。假如程序很大,则将程序加载到存储器或许要花费一个小时乃至更长时刻。大多数软件开发人员无法承受这种功用水平。
JTAG 业务处理器
有一种运用 JTAG 调试器的办法能够消除这些问题。硬件加速仿真体系能够经过电路和硬件加速器内置的编程功用,驱动和采样规划中的任何信号。咱们无需经过 I/O 卡从规划中收集信号,然后运用物理探针予以驱动,而是能够运用“业务处理器”,经过编程方法驱动规划中的 JTAG 信号。与物理探针相同,业务处理器也能够驱动相同的信号,使其变换到相同的值,然后供给相同的调试功用。
因为规划和 JTAG 业务处理器都在硬件加速仿真体系的操控下,因而时钟由硬件加速器操控。时钟域能够同步,因而能消除多个时钟的问题。