调试系统和方法与流程

文档序号:17932072发布日期:2019-06-15 00:58阅读:214来源:国知局
调试系统和方法与流程
本公开总体上涉及已经使用软件调试器被转换为硬件描述的调试软件。
背景技术
:一种用于改进软件系统的性能的技术是将所选择的部分实现为硬件加速器。系统中表现出高计算复杂度并且消耗总运行时间的大部分的那些部分可以是用于实现为硬件加速器的合适候选。例如,硬件加速器可以是专用集成电路(asic)、图形处理单元(gpu)或在现场可编程门阵列(fpga)上运行的电路。软件设计者在创建硬件加速器时采用的常用方法是使用高级合成(hls)工具来将所标识的部分的原始高级语言(hll)规范转换为电路的等效寄存器传输级(rtl)或其他硬件描述语言(hdl)规范。尽管所生成的rtl规范在功能上可以与hll规范相同,但是软件设计者可能需要在系统开发过程中调试rtl规范。涉及定时、并发和竞争条件的问题在开发hll规范时可能已经被掩盖,并且可能在硬件模拟期间浮出水面。此外,软件和硬件库实现的差异、不正确的转换或存储器访问的差异可能会产生实现问题。rtl实现的调试可以通过诸如xilinx公司的模拟器或mentorgraphics公司的模拟器等模拟器来支持。在测试rtl实现时,软件设计者会跟踪低电平信号和寄存器,并解释波形。技术实现要素:一种所公开的调试方法包括由在计算机系统上执行的硬件调试服务器接收用于在高级语言(hll)软件规范中设置断点的hll调试命令。硬件调试服务器将hll调试命令转换为硬件调试命令,该硬件调试命令指定作为软件规范的表示的硬件有限状态机的条件。将硬件调试命令输入到模拟器,并且响应于硬件调试命令,模拟器在有限状态机上添加条件断点。模拟器执行有限状态机表示的模拟,并且响应于在有限状态机中检测到该条件而暂停模拟的执行。一种所公开的调试系统包括处理器和耦合到处理器的存储器布置。存储器布置被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:由硬件调试服务器接收用于在高级语言(hll)软件规范中设置断点的hll调试命令。硬件调试服务器将hll调试命令转换为硬件调试命令,该硬件调试命令指定作为软件规范的表示的硬件有限状态机的条件。将硬件调试命令输入到模拟器,并且响应于硬件调试命令,模拟器在有限状态机上添加条件断点。模拟器执行有限状态机表示的模拟,并且响应于在有限状态机中检测到该条件而暂停模拟的执行。考虑到下面的“具体实施方式”和“权利要求”,将认识到其他特征。附图说明通过阅读以下详细描述并且参考附图,该方法和系统的各个方面和特征将变得很清楚,在附图中:图1示出了使用软件调试技术和方法来支持调试硬件加速器的系统的实现;图2示出了hll源代码的示例以及hls生成的rtl代码的等效部分;图3是示出由硬件调试服务器在使用软件调试器前端调试硬件加速器时使用的数据的生成的数据流图;图4是生成由硬件调试服务器在使用软件调试器前端调试硬件加速器时使用的数据的过程以及在调试硬件加速器的同时硬件调试服务器的动作的流程图;以及图5是示出可以在其上实现硬件调试服务器和模拟器内核的示例性数据处理系统的框图。具体实施方式在以下描述中,阐述了很多具体细节以描述本文中呈现的具体示例。然而,对于本领域技术人员来说很清楚的是,可以在没有下面给出的所有具体细节的情况下实践这些示例的一个或多个其他示例和/或变型。在其他情况下,没有详细描述公知的特征,以免模糊本文中的示例的描述。为了便于说明,可以在不同的图中使用相同的附图标记来指代相同元素或相同元素的附加实例。软件设计者可能熟悉的调试环境与由rtl模拟器提供的调试环境大不相同。软件调试器提供诸如在特定指令或顺序执行的程序代码行处设置断点以及检查和编辑变量的功能,变量的值在程序执行期间可以被存储在寄存器或存储器中。软件调试器在源代码级别呈现调试信息,这允许软件设计者轻松地将软件调试器的期望动作和执行程序的状态与hll程序名称和语句相关联。rtl模拟器的调试环境在信号级别操作。rtl模拟器提供了基于信号状态设置断点、跟踪信号状态、视图波形和检查寄存器的功能。然而,软件设计者可能不熟悉rtl结构并且不熟悉hll程序的元素与rtl结构中的信号名称和特定寄存器之间的关联。因此,软件设计者可能难以及时调试硬件加速器。所公开的方法和系统弥合了软件设计者熟悉的软件调试环境与硬件设计者可用的rtl调试环境之间的差距。这些方法和系统支持在软件调试器中找到的调试特征,诸如在hll程序代码的特定行处设置断点,通过变量的hll名称来检查变量的值以及检查存储器的内容。系统处理hll构造与rtl构造之间的映射,这允许软件设计者像在软件调试器环境中操作一样调试硬件加速器。在所公开的实现中,在计算机系统上执行的硬件调试服务器从软件调试器前端接收用于在hll软件规范中设置断点的调试命令。硬件调试服务器将调试命令转换为指定作为软件规范的表示的硬件有限状态机的条件的硬件调试命令,并且将硬件调试命令输入到模拟器。模拟器在硬件有限状态机上添加条件断点,并且执行有限状态机表示的模拟。模拟器响应于在硬件有限状态机中检测到该条件而暂停模拟的执行。图1示出了使用软件调试技术和方法来支持调试硬件加速器的系统100的实现。该系统支持诸如gdb等软件调试器与从hll源代码生成的硬件加速器的模拟之间的交互。由系统提供的所模拟的硬件加速器的视图由软件调试器在调试hll源代码时提供。该系统包括调试器前端102、硬件调试服务器106和模拟器内核108。模拟器内核包括控制接口112并且模拟硬件加速器的硬件模型110。例如,硬件模型可以是以由寄存器传输级(rtl)语言生命(specify)的硬件有限状态机。具有存储器114的hll模型模拟由硬件模型110可访问的hll设计的存储器组件。硬件调试服务器和模拟器内核在计算机系统104上执行。在一个实现中,调试器前端也可以在计算机系统104上执行。或者,调试器前端可以在经由到网络(诸如lan或因特网)的网络接口而被耦合到计算机系统104的另一计算机系统(未示出)上执行。调试器前端102和硬件调试服务器106可以使用诸如tcp/ip等协议通信地耦合。支持调试软件而非硬件加速器的一些现有的软件调试器包括软件调试服务器,其允许在一个计算机系统上执行的调试器前端控制在另一计算机系统上执行的软件的调试。在一个实现中,调试器前端102可以是通常可用的软件调试器(诸如gnu调试器gdb)的一部分。调试器前端在以原始hll源代码的形式呈现执行程序状态时使用标准格式的调试信息,例如dwarf信息。通过从硬件寄存器读取相应的值来显示hll源代码中的变量名称。在示例实现中,调试器前端102使用与用于与软件调试服务器通信的协议相同的协议来与硬件调试服务器106通信。在涉及来自gdb的调试器前端的实现中,调试器前端使用远程串行协议(rsp)与硬件调试服务器通信,rsp与来自gdb的调试器前端用于与软件调试服务器通信的协议相同。硬件调试服务器106在调试器前端102与模拟器内核108之间转换命令和数据。例如,硬件调试服务器使用tcp/ip以经由控制接口112连接到模拟器内核。通过处理命令并且返回所模拟的硬件模型110的值,控制接口112代表模拟器内核来处理与硬件调试服务器的通信。硬件调试服务器允许调试器前端在调试硬件模型110时以与调试器前端将在调试软件中相同的方式来执行。硬件调试服务器抽象出硬件模拟语义和细节,并且向用户呈现面向软件的视图。模拟器内核108可以是具有本文中描述的适配的已知电路设计模拟器的一部分。在调试场景中,硬件调试服务器106从调试器前端接收用于在高级语言(hll)软件规范中设置断点的hll调试命令。调试硬件加速器的人员与调试器前端交互,以选择用于生成硬件模型110的hll软件规范中的特定指令或行号。本领域技术人员将认识到,已知的hls工具可以用于生成适合于从hll源代码进行模拟的电路设计描述和相应的硬件模型。响应于接收到hll调试命令,硬件调试服务器将hll调试命令转换为硬件调试命令,该硬件调试命令指定由hls工具从软件规范生成的硬件有限状态机的条件。硬件调试服务器然后将硬件调试命令传送到控制接口112以输入到模拟器108。响应于硬件调试命令,模拟器在硬件有限状态机上添加条件断点。在执行硬件有限状态机的模拟时,模拟器响应于在有限状态机中检测到该条件而暂停模拟的执行。一旦在硬件有限状态机中检测到该条件而暂停模拟的执行,模拟器就将暂停传送到硬件调试服务器,并且硬件调试服务器确定与rtl有限状态机中的条件相对应的hll软件规范的行号、指令或语句。然后,硬件调试服务器将hll软件规范的hll行号、指令或语句以及断点的指示输出到调试器前端。在某些情况下,所模拟的硬件加速器可以是系统设计的一部分,其中全局存储器由硬件加速器以及系统的其他硬件和/或软件组件访问。通常通过使用由hls生成的组件(包括硬件加速器)经由直接编程接口(dpi)访问的hll代码(hll存储器模型114)来模拟大存储器。操作调试器前端102的人可能想要检查被存储在hll存储器模型中的hll变量的值。然而,模拟器内核108不能直接访问hll存储器模型,即使hls生成的组件可以在模拟执行的同时访问hll存储器。为了提供由模拟器内核108对hll存储器模型114的直接访问,模拟器内核适于注册用于访问(即,读取或写入)存储器的回调函数。当硬件调试服务器接收到请求hll软件规范的变量的值的hll调试命令并且该变量被存储在hll存储器模型中时,模拟器执行回调函数以由模拟器从存储器读取信号的值。硬件调试服务器将变量的值和hll变量名称输出到调试器前端。图2示出了hll源代码202的示例以及处理hll程序变量“counter”的hls生成的rtl代码204的等效部分。hll源代码具有12个编号行,包括函数语句、变量语句、赋值语句、控制语句、范围分隔符和空行。hll变量“counter”映射到rtl中的5位寄存器,每个寄存器在所生成的fsm机器的不同阶段期间处于活动状态。寄存器包括:reg[4:0]vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_iter1_vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_iter2_vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_iter3_vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_iter4_vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_iter5_vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_iter6_vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_iter7_vadd_counter_reg_95;reg[4:0]ap_pipeline_reg_ier8_vadd_counter_reg_95;hll语句,counter+=1;映射到always块的“if”部分,并且当条件(ap_cs_fsm_pp0_stage0==1'b1)&(ap_enable_reg_pp0_iter0==1'b1)&(exitcond_fu_146_p2==1'b0)在主时钟的上升沿为真时,rtl语句vadd_counter_reg_95<=p_reg2mem_o_i_i_fu_152;在模拟中被执行。hll语句,counter=1;映射到always块的“elseif”部分,并且当条件(ap_cs_fsm_state1==1'b1)&~(ap_start==1'b0)在主时钟的上升沿为真时,rtl语句vadd_counter_reg_95<=ap_const_lv5_0;在模拟中执行。响应于从调试器前端102接收到指定hll行6和10的断点命令,硬件调试服务器将hll断点命令转换为指定rtl条件的对应的rtl模拟器断点命令,并且将命令提交给控制接口112。模拟器内核的控制接口添加断点以在模拟中执行rtl语句之前停止模拟。响应于来自调试器前端的在hll代码行6处设置断点的命令,硬件调试服务器生成设置断点的模拟器内核命令,该断点使得模拟在条件(ap_cs_fsm_state1==1'b1)&~(ap_start==1'b0)在主时钟的上升沿为真时停止,该时钟在rtl语句vadd_counter_reg_95<=ap_const_lv5_0;在模拟中被执行之前。响应于来自调试器前端的在hll代码行10处设置断点的命令,硬件调试服务器生成设置断点的模拟器内核命令,该断点使得模拟在条件(ap_cs_fsm_pp0_stage0==1'b1)&(ap_enable_reg_pp0_iter0==1'b1)&(exitcond_fu_146_p2==1'b0)在主时钟的上升沿为真时停止,该时钟在rtl语句vadd_counter_reg_95<=p_reg2mem_0_i_i_fu_152;在模拟中被执行之前。图3是示出由硬件调试服务器在使用软件调试器前端调试硬件加速器时使用的数据的生成的数据流图。hls工具304输入hll程序302,hll程序302指定要由硬件加速器实现的功能。hls工具生成多个版本的调试信息以供硬件调试服务器106使用。在hls工具流的开始,在前端解析之后但是在优化之前,处理hls中间表示以生成与特定cpu为目标的可执行程序(硬件模型110)。可执行文件具有相关联的高级调试信息306,其用于向调试器前端(图1,#102)提供与原始hll程序302相关的符号。高级调试信息也由硬件调试服务器106在构建交叉引用数据库310时使用。在一个实现中,高级调试信息是dwarf调试信息。在hls工具304的优化和调度过程中,hls工具生成映射信息308。映射信息308指定hll程序302的元素与硬件模型110中的元素之间的关联。硬件模型指定以下有限状态机,活动状态在该有限状态机中指定在模拟期间同时处理的hll程序的那些语句。利用映射信息,可以利用与硬件状态机的状态相对应的模拟器条件来完成hll程序的行号、语句或指令上的断点。硬件调试服务器106输入高级调试信息306和映射信息308,并且生成交叉引用数据库310,其对高级调试信息306与映射信息308进行交叉引用。数据库310由硬件调试服务器106在模拟期间使用硬件模型来查询以查找与在来自调试器前端(图1,#102)的命令中指定的hll程序元素相对应的硬件模型的元素,并且查找与在从模拟器内核(图1,#108)返回的数据中引用的硬件模型的元素相对应的hll程序元素。可以应用断点的hll程序302中的行到对应的硬件状态机元素的映射的构造取决于hls生成的硬件模型110的结构。在一个实现中,硬件模型包括其中hll语句对应于rtl信号的条件的有限状态机。通过查询交叉引用数据库310,硬件调试服务器106可以将来自软件调试器前端的断点命令转换为硬件有限状态机上的等效条件。硬件有限状态机上的条件可以被输入到模拟器内核,以在硬件模型上添加条件断点。通过查询交叉引用数据库,硬件调试服务器可以将从其中命令请求变量的值的软件调试器前端的命令转换为对于来自模拟器内核的硬件信号和变量的值的请求。高级语言级别的变量具有由语言定义的具体基本类型构建的复杂类型系统。当使用hls工具合成高级语言程序时,所生成的硬件通常将这些类型优化和平展为位向量。例如,hls工具可能会确定以高级语言声明为“int”的变量仅使用17个低阶位并且合成包含17位寄存器和位向量的硬件,而不是由高级语言预期的32位寄存器。hls工具捕获类型的转换以提供从hll构造到rtl构造的完整映射。表1示出了在将类型从hll构造转换为rtl构造(反之亦然)时使用的映射信息的类型的文本视图。将每种rtl类型直接映射到原始类型暗示转换规则,诸如符号扩展或零扩展。另外,hls工具可以决定创建硬件,其中高级语言构造被存储在很多不同的rtl寄存器或信号中;映射指定如何将这些很多rtl信号组装回原始高级表示。该映射的实现和存储可以通过二进制编码来完成。hll类型rtl类型转换规则int[16:0]逻辑符号扩展到32位float[31:0]逻辑将32位解释为浮点数unsignedlonglongint两个32位逻辑向量将向量1附加到向量2表1在hls生成的rtl中,hll变量不仅可以被实现为单个寄存器,而且可以被实现为多个寄存器和信号,这些寄存器和信号可以在不同的时钟周期处于活动状态,或者可以基于由hls工具做出的流水线决策而同时处于活动状态。映射信息308指定组成有限状态机的状态寄存器和任何流水线级激活寄存器的寄存器和信号组。表2示出了hll变量“counter”的位置信息的映射位置的示例。表2对于每个hll变量,hls工具创建从这些状态寄存器的不同配置到表示该变量位于该时钟周期的有效信号的其他rtl信号列表的映射。表2所示的文本示例表示由hls工具输出的元数据的二进制编码,并且包括用于将特定位的所有排列表示为对单个映射有效的通配符。当某个fsm状态为活动时,原始hll程序中的每行源代码都在rtl代码中开始执行。当某个rtl条件为真时,诸如当状态寄存器处于某种配置并且存储器提取已经完成时,fsm中的状态是活动的。如表3中以文本方式所示,交叉引用数据库保持原始hll程序中的行与所生成的rtl模型中的以下条件的映射,这些条件对应于表示fsm状态何时开始执行的配置,包括任何生成的流水线信息。注意,映射可以不是一对一的,因为所生成的rtl模型可以同时或无序地启动若干语句,以便最好地利用可用资源并且最大化吞吐量。高级语言可中断行hls生成的条件/fsm状态main.c:5cs_state13==1&&memready==1main.c:6cs_state13==1&&memready==1main.c:7cs_state155==1kernel.cpp:15cs_state16==1&&pipeline_16==1表3图4是生成由硬件调试服务器在使用软件调试器前端调试硬件加速器时使用的数据的过程以及在调试硬件加速器的同时硬件调试服务器的动作的流程图。在框402处,高级合成(hls)工具从hll程序生成高级调试信息。高级调试信息可以是本领域公知的dwarf调试信息。在框404处,hls工具生成hll程序的硬件模型。例如,硬件模型可以是rtl有限状态机。在框406处,hls工具生成hll程序元素到硬件模型的元素的映射。在框408处,在硬件调试服务器被用于硬件模型的模拟之前,硬件调试服务器输入用于生成硬件模型的hll程序的高级调试信息,并且输入hll程序元素到硬件模型的元素的映射。硬件调试服务器根据高级调试信息和hll程序元素到硬件模型的元素的映射来生成交叉引用数据库。在框410处,向模拟器内核注册一个或多个回调函数。可以由模拟器内核响应于来自调试器前端的通过硬件调试服务器做出的请求而执行回调函数,以读取或写入hll存储器模型(图1,#114)。在框412处,模拟器开始执行,其中硬件调试服务器和模拟器内核在一个计算机系统上执行,而调试器前端在同一或另一计算机系统上执行。在框414处,调试器前端从用户输入软件调试命令,并且调试器前端将命令传输到硬件调试服务器。在框416处,硬件调试服务器将软件调试命令转换为与模拟器内核兼容的硬件调试命令。如果来自调试器前端的命令引用hll程序的元素,则硬件调试服务器将引用转换为硬件模型的元素。在框418处,将转换后的命令输入到模拟器内核。决策框420根据特定命令切换处理。对于指定设置断点的命令,在框422处,模拟器内核向硬件模型添加条件断点。条件断点可以指定硬件模型中的信号的状态。在框422之后,过程返回到框414以处理另一命令。对于指定读取信号或变量的值的命令,在框424处,模拟器内核读取信号或变量的值,并且将该值返回给硬件调试服务器。对于从hll存储器模型读取值的命令,在框426处,模拟器内核调用回调函数以读取该值。从hll存储器模型读取的值将被返回到硬件调试服务器。在框428处,对于导致模拟器读取硬件模型的信号值或从hll存储器模型读取的命令,硬件调试服务器查询交叉引用数据库以确定hll程序中与由模拟器内核返回的名称相对应的名称。对于开始模拟的命令,在框430处,模拟器内核开始硬件模型的模拟。在框432处,响应于硬件有限状态机上的条件断点的满足,模拟器暂停模拟并且经由控制接口(图1,#112)而将暂停和条件断点传送到硬件调试服务器。在框434处,硬件调试服务器查询交叉引用数据库(图3,#310)以确定与硬件有限状态机的元素上的条件断点相对应的hll语句。框436处的硬件调试服务器将从模拟器内核返回的数据格式化为与调试器前端兼容的格式,并且将格式化数据输出到调试器前端。处理然后返回到框414以处理来自调试器前端的另一命令。图5是示出可以在其上实现硬件调试服务器106(图1)和模拟器内核(108)的示例性数据处理系统(系统)500的框图。高级合成工具(图3,#304)也可以在系统500上实现。系统500包括至少一个处理器电路(或“处理器”),例如通过系统总线515或其他合适的电路而被耦合到存储器和存储布置520的中央处理器单元(cpu)505。系统500将实现模拟器550和硬件模型110的程序代码存储在存储器和存储布置520内。处理器505执行经由系统总线515从存储器和存储布置520访问的程序代码。在一个方面,系统500并实现为适用于存储和/或执行程序代码的计算机或其他数据处理系统。然而,应当理解,系统500可以以能够执行本公开中描述的功能的包括处理器和存储器的任何系统的形式来被实现。存储器和存储布置520包括一个或多个物理存储器设备,诸如例如本地存储器(未示出)和永久存储设备(未示出)。本地存储器是指通常在程序代码的实际执行期间使用的随机存取存储器或其他非持久存储器设备。持久存储可以实现为硬盘驱动器(hdd)、固态驱动器(ssd)或其他持久数据存储设备。系统500还可以包括一个或多个高速缓冲存储器(未示出),其提供至少一些程序代码和数据的临时存储以便减少在执行期间必须从本地存储器和永久存储器检索程序代码和数据的次数。输入/输出(i/o)设备(诸如用户输入设备530和显示设备535)可以可选地耦合到系统500。i/o设备可以直接或通过中间i/o控制器耦合到系统500。网络适配器545还可以耦合到系统500,以便通过中间私有或公共网络将系统500耦合到其他系统、计算机系统、远程打印机和/或远程存储设备。调制解调器、电缆调制解调器、以太网卡和无线收发器是可以与系统500一起使用的不同类型的网络适配器545的示例。存储器和存储布置520可以存储模拟器550,模拟器550是电子设计自动化(eda)应用的一部分。以可执行程序代码的形式实现的模拟器550由处理器505执行。这样,模拟器550被认为是系统500的一部分。在执行模拟器550的同时,系统500接收并且在硬件模型110上操作。模拟器550、硬件模型110和由模拟器550使用、生成和/或操作的任何数据项是当用作系统500的一部分时或当这样的元素(包括其衍生和/或修改)被加载到ic(诸如可编程ic)中时导致在可编程ic内实现和/或配置电路设计的功能数据结构。可以提供一种调试方法。这样的方法可以包括:由在计算机系统上执行的硬件调试服务器接收用于在高级语言(hll)软件规范中设置断点的第一hll调试命令;由硬件调试服务器将第一hll调试命令转换为第一硬件调试命令,该第一硬件调试命令指定作为软件规范的表示的硬件有限状态机的条件;将第一硬件调试命令输入到在计算机系统上执行的模拟器(108);由模拟器响应于第一硬件调试命令而在有限状态机上添加条件断点;执行有限状态机表示的模拟;以及响应于在有限状态机中检测到该条件而暂停模拟的执行。这样的方法还可以包括:响应于暂停模拟的执行,确定与硬件有限状态机中的条件相对应的hll软件规范的语句;以及输出指示hll软件规范的语句的数据。这样的方法还可以包括:由硬件调试服务器输入与hll软件规范相关联的调试信息;由硬件调试服务器输入提供hll软件规范的元素到硬件有限状态机的元素的映射的调试信息;在数据库中对与hll软件规范相关联的调试信息和hll软件规范的元素到硬件有限状态机的元素的映射进行交叉引用;以及其中转换可以包括从数据库中确定与在第一hll调试命令中所指定的hll语句交叉引用的硬件有限状态机的元素。在一些这样的方法中,确定hll软件规范的语句可以包括从数据库中确定与由所发生的条件断点指示的硬件有限状态机的元素交叉引用的hll软件规范的语句。这样的方法还可以包括:由硬件调试服务器接收请求hll软件规范的变量的值的第二hll调试命令;由硬件调试服务器将第二hll调试命令转换为获取硬件有限状态机的信号的值的第二硬件调试命令;将第二硬件调试命令输入到模拟器;由模拟器读取信号的值;以及与变量的名称相关联地输出信号的值。这样的方法还可以包括:由硬件调试服务器输入与hll软件规范相关联的调试信息;由硬件调试服务器输入提供hll软件规范的元素到硬件有限状态机的元素的映射的调试信息;在数据库中对与hll软件规范相关联的调试信息和hll软件规范的元素到硬件有限状态机的元素的映射进行交叉引用;以及其中转换第二hll调试命令可以包括从数据库中确定与在第二hll调试命令中指定的变量的名称交叉引用的硬件有限状态机的信号。在一些这样的方法中,硬件状态机引用可以用除了可以指定硬件状态机的硬件描述语言之外的语言建模的存储器中的值;向模拟器注册访问存储器的回调函数;由硬件调试服务器接收请求hll软件规范的变量的值的第二hll调试命令;由硬件调试服务器将第二hll调试命令转换为获取硬件有限状态机的信号的值的第二硬件调试命令;将第二硬件调试命令输入到模拟器;执行回调函数以便模拟器从存储器中读取信号的值;并且与变量的名称相关联地输出信号的值。在一些方法中,接收可以包括:经由网络接口来将第一hll调试命令接收到在另一计算机系统上执行的调试器前端。这样的方法还可以包括:响应于暂停模拟的执行而确定与硬件有限状态机中的条件相对应的hll软件规范的语句;输出指示hll软件规范的语句的数据;由硬件调试服务器接收请求hll软件规范的变量的值的第二hll调试命令;由硬件调试服务器将第二hll调试命令转换为获取硬件有限状态机的信号的值的第二硬件调试命令;将第二硬件调试命令输入到模拟器;由模拟器读取信号的值;以及与变量的名称相关联地输出信号的值。这样的方法还可以包括:由硬件调试服务器输入与hll软件规范相关联的调试信息;由硬件调试服务器输入提供hll软件规范的元素到硬件有限状态机的元素的映射的调试信息;在数据库中对与hll软件规范相关联的调试信息和hll软件规范的元素到硬件有限状态机的元素的映射进行交叉引用;以及确定hll软件规范的语句可以包括从数据库中确定与由所发生的条件断点指示的硬件有限状态机的元素交叉引用的hll软件规范的语句;以及其中转换第二hll调试命令可以包括:从数据库中确定与在第二hll调试命令中指定的变量的名称交叉引用的硬件有限状态机的信号。可以提供一种调试系统。这样的调试系统可以包括:处理器;以及耦合到处理器的存储器布置,其中存储器布置可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:由硬件调试服务器接收用于在高级语言(hll)软件规范中设置断点的第一hll调试命令;由硬件调试服务器将第一hll调试命令转换为第一硬件调试命令,该第一硬件调试命令指定可以作为软件规范的表示的硬件有限状态机的条件;将第一硬件调试命令输入到模拟器;由模拟器响应于第一硬件调试命令而在有限状态机上添加条件断点;执行有限状态机表示的模拟;以及响应于在有限状态机中检测到该条件而暂停模拟的执行。在一些这样的系统中,存储器布置还可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:响应于暂停模拟的执行,确定与硬件有限状态机中的条件相对应的hll软件规范的语句;以及输出指示hll软件规范的语句的数据。在一些这样的系统中,存储器布置还可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:由硬件调试服务器输入与hll软件规范相关联的调试信息;由硬件调试服务器输入提供hll软件规范的元素到硬件有限状态机的元素的映射的调试信息;在数据库中对与hll软件规范相关联的调试信息和hll软件规范的元素到硬件有限状态机的元素的映射进行交叉引用;以及其中转换可以包括从数据库中确定与在第一hll调试命令中指定的hll语句交叉引用的硬件有限状态机的元素。在一些这样的系统中,用于确定hll软件规范的语句的指令包括用于从数据库中确定与由所发生的条件断点指示的硬件有限状态机的元素交叉引用的hll软件规范的语句的指令。在一些这样的系统中,存储器布置还可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:由硬件调试服务器接收请求hll软件规范的变量的值的第二hll调试命令;由硬件调试服务器将第二hll调试命令转换为获取硬件有限状态机的信号的值的第二硬件调试命令;将第二硬件调试命令输入到模拟器;由模拟器读取信号的值;以及与变量的名称相关联地输出信号的值。在一些这样的系统中,存储器布置还可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:由硬件调试服务器输入与hll软件规范相关联的调试信息;由硬件调试服务器输入提供hll软件规范的元素到硬件有限状态机的元素的映射的调试信息;在数据库中对与hll软件规范相关联的调试信息和hll软件规范的元素到硬件有限状态机的元素的映射进行交叉引用;以及其中转换第二hll调试命令可以包括:从数据库中确定与在第二hll调试命令中指定的变量的名称交叉引用的硬件有限状态机的信号。在一些这样的系统中,硬件状态机引用可以用除了可以指定硬件状态机的硬件描述语言之外的语言建模的存储器中的值,并且存储器布置还可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:向模拟器注册访问存储器的回调函数;由硬件调试服务器接收请求hll软件规范的变量的值的第二hll调试命令;由硬件调试服务器将第二hll调试命令转换为获取硬件有限状态机的信号的值的第二硬件调试命令;将第二硬件调试命令输入到模拟器;执行回调函数以便模拟器从存储器中读取信号的值;以及与变量的名称相关联地输出信号的值。在一些这样的系统中,用于接收的指令包括用于经由网络接口来将第一hll调试命令接收到在另一计算机系统上执行的调试器前端的指令。在一些这样的系统中,存储器布置还可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:响应于暂停模拟的执行而确定与硬件有限状态机中的条件相对应的hll软件规范的语句;输出指示hll软件规范的语句的数据;由硬件调试服务器接收请求hll软件规范的变量的值的第二hll调试命令;由硬件调试服务器将第二hll调试命令转换为获取硬件有限状态机的信号的值的第二硬件调试命令;将第二硬件调试命令输入到模拟器;由模拟器读取信号的值;以及与变量的名称相关联地输出信号的值。在一些这样的系统中,存储器布置还可以被配置有在由处理器执行时使得处理器执行包括以下各项的操作的指令:由硬件调试服务器输入与hll软件规范相关联的调试信息;由硬件调试服务器输入提供hll软件规范的元素到硬件有限状态机的元素的映射的调试信息;在数据库中对与hll软件规范相关联的调试信息和hll软件规范的元素到硬件有限状态机的元素的映射进行交叉引用;其中用于确定hll软件规范的语句的指令包括用于从数据库中确定与由所发生的条件断点指示的硬件有限状态机的元素交叉引用的hll软件规范的语句的指令;以及其中用于转换第二hll调试命令的指令包括用于从数据库中确定与在第二hll调试命令中指定的变量的名称交叉引用的硬件有限状态机的信号的指令。某些实现涉及一种计算机程序产品(例如,非易失性存储器设备),其包括其上存储有指令的机器或计算机可读介质,这些指令可以由计算机(或其他电子设备)执行以执行这些操作/活动。尽管在一些情况下可以在各个附图中描述各方面和特征,但是应当理解,来自一个附图的特征可以与另一附图的特征组合,即使组合没有明确地示出或明确地描述为组合。该方法和系统被认为适用于用于调试电路设计的各种系统。考虑到说明书,其他方面和特征对于本领域技术人员来说是很清楚的。该方法和系统可以实现为一个或多个处理器,这些处理器被配置为执行软件,被配置为专用集成电路(asic),或者被配置为可编程逻辑器件上的逻辑。说明书和附图旨在仅被视为示例,本发明的真实范围由所附权利要求指示。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1