图形硬件设计中调试与验证的方法与系统的制作方法

文档序号:6612750阅读:231来源:国知局
专利名称:图形硬件设计中调试与验证的方法与系统的制作方法
技术领域
本发明涉及图形硬件,特别涉及一种在图形硬件设计中应用软件模型代 替硬件设计以进行调试与验证的方法与系统。
背景技术
一般地,集成电路设计包括几个阶段,在每个阶段使用不同的工具。集 成电路设计者通常选择几种编程语言中的一种来书写代码。与书写代码的过 程相同步的是仿真。在仿真的过程中,设计者执行一个仿真工具,以程序代 码为输入来测试所作的设计。因为仿真暴露了问题,设计者就可以编辑代码 来解决这些问题,然后再次仿真。在仿真阶段之后,由合成器将代码翻译为 集成电路的逻辑表示。然后由其它工具将逻辑表示翻译为物理的集成电路,
例如,可以翻译为现场可编程逻辑门阵列(FPGA)、特殊应用集成电路(ASIC) 或者传统硅集成电路(custom silicon IC)等才各式。
集成电路设计者可以选用几种类型的编程语言。 一类可以称为硬件设计 语言(HDL),也被称为寄存器传送语言(RTLs)。公众均了解,RTLs语言包括 Verilog和VHDL。 RTLs被认为是底层语言,因为它们描述特殊硬件的特征, 例如定时和并行处理。集成电路设计语言的另一类选择为高级语言,包括C 和0++(以及其它的相关语言),这些语言通常用来开发软件而不是硬件。这 些软件语言允许设计者编写更高层的代码,这提高了编程者的效率。
然而,许多目前流行的仿真工具和合成的工具都是用HDL语言而不是C 或0++语言作为输入,因此,就需要集成电路设计者先用c或o+语言编写代 码,之后再翻译为HDL语言。这一翻译过程可以人工完成,也可以自动完成, 或者用人工和自动相结合的方式完成。另外,使用HDL语言的仿真工具和合 成工具通常不能提供充分的调试能力以使硬件设计者容易地和有效率地为硬 件设计调试。例如,这些仿真和合成工具通常只允许硬件设计者或测试者检 测从仿真工具和合成工具中堆入和提取的数据,但是它们通常不能允许更为 具体或者详细的调试和测试图形硬件设计。

发明内容
本发明的其中 一 个实施例描述了图形硬件设计的调试与验证系统。系统
包括脚本引擎,用来将代表图形函数的脚本翻译为可被软件图形驱动处理
的命令。此软件图形驱动在图形处理单元模型中处理此命令。此图形处理单 元模型可以与图形处理单元硬件设计相对应,用来产生至少一个与脚本中的 图形函数相应的图形帧。
本发明的调试与验证系统还可以包括脚本引擎界面,用来执行软件图形 驱动中以及图形处理单元模型中的命令。
本发明还可以包括脚本引擎,用来执行软件图形驱动和图形处理单元模 型中的命令。此脚本引擎还用来显示至少 一个图形帧以及图形处理单元模型 所产生的调试信息。本发明系统也可以包含调试器,提供调试图形处理单元 模型的能力。
本发明另一个实施例描述了一种图形硬件设计的方法。该方法包含将 代表硬件设计的脚本翻译为软件图形驱动能够处理的命令。本发明方法也可 以包括在软件图形驱动中以及代表图形硬件设计的图形处理单元模型中处 理命令。本发明方法还可以包含产生至少一个与脚本中的图形函数相应的 图形处理单元帧。
下面结合附图进行详细说明,将使本领域技术人员了解本发明的其它系 统、方法、特征和/或有益效果。


图1为本发明的一个实施例的示意图2为本发明的一个实施例中的脚本产生器的流程框图3为图1实施例的其中一个执行路径的流程框图4为图1实施例的一个可替代的执行路径的流程框图5为图1实施例的另一个可替代的执行路径的流程框图6为本发明另一个实施例的示意图7为本发明图形硬件设计中调试与验证的方法的流程图8为本发明图形硬件设计中调试与验证的方法的另一个流程图9为本发明另一个实施例的示意图。
具体实施例方式
以下结合附图详细说明本发明。然而所附图示和说明仅为了清楚地理解 本发明,并非用来对本发明进行限制。任何所作的替换、修改、和选择都属 于本发明的保护范围。
本发明揭露了 一种调试和验证图形硬件设计的系统与方法。图形硬件设 计者或测试者可以使用本发明系统与方法一步一步地执行包含图形操作的应 用程序,来分析和定位图形硬件设计中潜在的错误。另外,用户还可以使用 本发明系统与方法在代表软件应用程序的图形组件的脚本中设置断点,以进 一步分析图形硬件设计。
用户使用本发明系统与方法,还可以利用至少三条执行路经来产生和分 析图形帧或者视频帧,以进一步验证和测试图形硬件设计参考运行时间和
参考栅;参考运行时间、参考软件设备驱动和被测图形硬件;或者,软件设 备驱动和被测图形硬件。这至少三条执行路经允许用户分析和测试图形硬件 设计,也允许用户分析和测试支持图形硬件的软件设备驱动。用户可以使用 单个脚本,也可以同时使用多条执行路径来执行脚本,分析所产生的视频或 图形帧。
请见图1,描述了本发明图形硬件设计中调试与验证系统的一个实施例。 在本实施例中,图形硬件设计中调试与验证系统包括编辑器102,它是本发 明系统的可选组件,用来产生验证图形硬件设计的脚本106。举例来说,如 果想要验证或分析图形硬件设计,本发明的用户可以手动产生包含着命令的 脚本106,命令用脚本语言定义,代表图形操作。
脚本106也可以由脚本产生器104产生。脚本产生器l(M可以从具有图 形组件的软件应用程序中写入或者获取图形操作。例如,利用Direct3D 或 者OpenGL 图形应用软件编程界面的软件应用程序会包含对图形运行时间或 图形应用程序编程界面的调用,它们可以被写入或获取,以及转换成脚本语 言定义的命令。在这种情况下,代表软件应用程序210的图形操作的脚本106 可被转换成可以在脚本引擎108中使用的脚本106。软件应用程序210可以 是游戏软件或者其它具有图形组件的软件。脚本产生器104产生的脚本106 可以被编辑器编辑,这样本系统的用户可以增加、移动或者改变代表图形操 作的脚本命令。例如,如果用户认为不必要对于图形硬件设计的正确性作评
估,用户就可以移动一部分由脚本产生器104所产生的脚本106。
图2为一个具有图形界面208组件的软件应用程序210的实施例。软件 应用程序210还包含其它示范性的模块,包含数据计算202、事件处理206 以及输入/输出204;然而应当理解的是,图示各组件仅作为理解本发明的示 范性举例,并非用来限制本发明。为了显示或者产生图形,软件应用程序210 可以包含图形界面208,与操作系统图形界面214或图形应用程序界面通信, 以执行命令从而将图形输出到屏幕或显示器上。操作系统图形界面214与软 件图形驱动216通信,软件图形驱动216与设备驱动是等效的。在一个较佳 的实施例中,软件图形驱动216用来与图形处理硬件218交互,将提交到标 准化应用程序界面的命令翻译为特定的图形处理硬件所特有的命令。
图形处理硬件218从软件图形驱动216接收命令,处理数据,产生图形 或视频的帧220以显示在屏幕或者其它类似输出设备上。厂商不同,图形处 理硬件设计的差别很大,但是具典型性的是它与软件图形驱动216相联系, 能够执行标准软件应用程序界面所定义的命令,例如Direct3D⑧的应用程序 界面或者OpenGL⑧应用程序界面。
脚本产生器222可以从软件应用程序210或者从软件应用程序210的图 形组件获取或记录命令,以产生图形内容。脚本产生器222能将这些命令转 化为脚本224中由脚本语言定义的命令。在一个非限制性实施例中,脚本语 言的脚本命令可以被组合为如下至少4种命令组群的类型普通命令(co,on commands) 、 二维命令(2D commands),三维命令(3D com隨nds)和视频命令 (video commands)。在这一非限制性实施例中,命令组群具有的功能与软件 图形应用程序界面(API)的API功能相应。
例如,普通命令可以包含用来定义图形操作所用的图形API的版本和类 型的命令,也可以包含图形操作的显示模式或决定,也可以包含与图形或视 频帧相应的颜色品质或密度以及其它属性;本领域普通技术人员应当理解。 另外,普通命令也可以包含定义脚本中的一个或多个断点的命令或指向脚本 引擎108以向文件、显示器或其它输出设备堆叠调试信息的命令。调试信息 可以包含与图形硬件设计的调试相应的信息。
普通命令也可以包含对于达到调试目的有用的其它附加命令。例如,跳 转到脚本中的另 一个点的命令可能对于用户分析硬件设计有用。在本发明的 其中 一个实施例中,普通命令提供了渲染程序的维持状态或放弃状态之间的跳转能力。另 一个示范性的调试命令可以包含使调试信息显示或储存到文件 中的命令。这对于用户评估图形硬件设计来说是有用的,在脚本执行过程中 警示用户他希望见到的特定信息,或者^U叉警示用户脚本的某部分已经到达。
另外,普通命令还可以包含清空D、 Z、 S緩存的命令。再另外,在脚本语言
中也可以包含显示渲染的图形、视频顿或者翻转帧的命令。本领域普通技术
人员应当理解,D緩存是一个包含了属于颜色数据渲染对象的信息的緩存, 在本技术领域内也被认为是目的地緩存。本领域技术人员应理解Z緩存是指 "深度"緩存,储存每一个像素的深度信息。另外,也应理解的是,S缓存 是指"模版"緩存,储存每一个像素的模版值。这些缓存是三维渲染结果的 主存储区域。另外,脚本命令使得图形处理单元中的低水平硬件寄存器的编 程能够提供在图形处理单元(GPU)或GPU替代模型中的详细功能的控制。
二维命令、三维命令和视频命令中所包含的命令与特殊图形应用编程界 面中的命令相似,例如特殊图形应用编程界面为Directs API或者OpenGL API。本领域技术人员应理解上述命令在不同系统中差别很大,依赖于软件应 用所使用的特殊的图形API或者脚本引擎所使用的图形硬件设计。然而,本 领域拥有图形API知识的普通技术人员应能够知道还有很多其它未涉及的变 换,这些变换都属于本发明的保护范围。
现在请再回到图1,参考原理框图。如上所述,本发明系统使用的脚本 106可由编辑器102或者脚本产生器104产生。脚本106包含与脚本语言所 定义的图形操作相应的命令,可被脚本引擎108执行。系统提供给本系统的 用户多种可选择的执行路径,以验证和分析图形硬件设计。这多种执行路径 能允许用户使用用户正在测试的图形硬件设计,也允许用户使用参考系统来 产生图形或者视频的帧以作比对之用。脚本引擎108将代表由脚本语言定义 的图形操作的脚本106翻译为脚本引擎108所执行的命令,以产生图形帧, 也允许本系统用户分析和调试用来产生帧的图形硬件设计。
脚本引擎108也可以包含用户界面110,允许用户既通过^:盘、鼠标或 其它输入设备也可以通过显示器或其它输出设备可视化地与脚本引擎108交 互,以及/或者控制脚本引擎108。用户界面110也允许脚本引擎108将该些 执行路径中的至少一个路径的结果显示给用户。用户界面IIO还能够允许用 户比对至少两个执行路径的结果,来分析图形硬件设计。
本发明系统还可以包含脚本引擎界面114,允许脚本引擎108通过图形
设备驱动118执行脚本106,脚本106为脚本语言形式,代表图形硬件设计。 换句话说,脚本引擎界面114能将脚本106翻译成为一个能够被设备驱动118 处理的格式,因为可能会需要将包含了由脚本语言所定义的命令的脚本翻译 为在图形处理单元中或代表图形处理单元的模型中的设备驱动的调用和后续 调用。脚本引擎界面114的实现方式可以有很多种,依赖于本发明所使用的 设备驱动118和图形处理单元模型122的不同而不同,因为本系统可以按照 所选用的通信协议被设置为执行不同的设备驱动和模型。
本发明系统可以包含图形处理单元模型122。图形处理单元模型122可 以是代表图形处理单元的硬件设计的软件模型,可允许设计者或测试者不需 要专门为测试目的来制作一个物理的图形处理单元即可以分析和验证特定的 硬件设计。如上所述,硬件设计者可以用硬件描述语言(HDL)创建图形硬件设 计。本领域技术人员应理解,用硬件描述语言表述的硬件设计可以4皮翻译为 此设计的一个模型,模型可以用可编程语言来设计,例如C语言或者其它类 似的语言,允许设计者为硬件设计来创建一个工作软件模型。在本发明系统 的架构中使用这些模型,可以创建一个工作图形系统,能产生图形或者视频 帧以达到测试和—险i正的目的。
例如,众所周知,用硬件设计语言所描述的逻辑门能够被翻译为高级语 言例如C语言,来创建硬件设计的模型,这个模型可以被用来建模和测试。 这样的模型在本领域内被称为"C-模型",说明创建图形硬件设计的模型所用 的编程语言为C语言。大家还知道,设备驱动118典型的为软件组件,促进 了操作系统的图形子系统和图形硬件之间的通信。在本发明系统中,通过脚 本引擎界面114和图形处理单元模型122的交互,设备驱动118也可以被分 析和调试。
图形处理单元模型122因为仿真了硬件图形处理单元的功能,所以它能 产生图形、视频帧或GPU图像128,它们能够通过用户界面IIO显示给用户。 换言之,图形处理单元模型122能够产生GPU图像128,代表在脚本106中 的、通过脚本引擎界面114和设备驱动118在图形处理单元模型122中被脚 本引擎108所执行的命令。GPU图像128能够被本发明系统的用户通过用户 界面110或其它工具做分析。另外,用户界面110能够被用来缩放所生成的 图像,以分析得更为详细。本发明系统的用户能够分析所产生的GPU图像128 来测试或验证图形处理单元模型122所代表的图形硬件设计,图形处理单元
模型122是从HDL设计翻译得来的。
另外,因为图形处理单元模型122由可编程语言描述,例如C语言,本 领域普通技术人员应理解,在脚本的执行过程中将产生和获取追踪信息或其 它调试数据,以作分析。特别地,在测试和验证设计的过程中,启示使用某 些硬件设计组件中的数据的信息将被获取和分析,这对调试是有用的。另外, 本系统的用户可以选择通过用户界面110显示某些追踪信息。
本发明系统包含参考运行时间112,与脚本引擎108通信,从脚本引擎 108接收命令以处理脚本命令。本系统的用户可以选择使用参考运行时间112 来执行脚本106。在一个非限制性实施例中,参考运行时间112可以包含 软件供应商提供的运行时间,例如Di rec 13D 运行时间。本系统还包含参考 驱动116,作为图形驱动的原型的参考软件驱动。
本领域技术人员应理解,参考驱动116可以作为在应用和代表硬件设计 的模型之间的界面,也可以验证由图形规范所定义的特征。另外,参考驱动 116可以提供图形硬件设计的性能分析或性能目标概要的基线。参考驱动116 能够与图形处理单元模型122通信,使得图形处理单元模型122产生参考驱 动图像126或参考驱动帧,与脚本106中的、在脚本引擎108和参考运行时 间112以及参考驱动116指导下由图形处理单元模型122产生的命令相应。 这样,本系统的用户可以使用参考驱动在同 一个硬件设计中所产生的视频或 图形帧来分析和验证设备驱动118的设计。
用户也可以分析追踪信息130,结果产生参考驱动图像126,也可以使得 图像126和追踪信息130通过用户界面110显示。用户还可以比对参考驱动 图像126和GPU图像128,也可以通过用户界面110对两个图像执行缩放、 旋转或者其它操作,通过分析本系统所产生的图像来测试和验证设备驱动和 图形硬件设计的设计。
本系统也包含参考栅120,能够渲染视频或音频帧,或渲染参考图像126, 通过参考运行时间112基于脚本106中的命令与参考栅120通信。软件供应 商或者图形应用编程界面的创建者能够提供参考栅120作为图形硬件设计者 的参考工具,如Direct3D 或OpenGL⑧图形API。参考栅120也可以独立 的创建,图形API提供创建的功能。参考栅120是一个在软件中实现的典型 工具,仿真参考硬件的执行,但典型地不具有市场所需的必要的工作特性, 也不能翻译为硬件设计的实现。基于脚本106中的命令,参考栅120能产生
参考图像124, 通过参考运行时间112通信。用户会希望通过用户界面110 观察参考图像,或对比参考图像124和参考驱动图像126或GPU图像128, 来分析和验证硬件设计或设备驱动的执行。
本发明的系统提供至少3条执行路径来执行脚本。用户会通过用户界面 或由脚本中嵌入的命令选择不同的执行路径。不同的执行路径可以并行处理, 因此用户可以通过用户界面或根据分析追踪信息来并行比对所产生的图像。
现在请见图3,在多条执行路径中,用粗体线画出的其中一条执行路径 描述了本发明系统的原理框图。粗体线所示的执行路径是本发明的其中一个 举例。本领域技术人员应理解多个执行路径都可以被用来分析、测试或验证 图形处理单元模型122所代表的图形硬件设计。
用粗体线表示出的执行路径描述了本系统的一条执行路线,在设备驱动 118和图形处理单元模型122中通过脚本引擎来执行脚本,图形处理单元代 表本系统的用户所需要分析和验证的硬件设计。如上所述,典型的情况是用 HDL语言描述硬件设计,而通常编程语言用更高级的语言,例如C语言。用 HDL语言描述的硬件设计一般被翻译为更高级的语言,例如C语言。对硬件 设计作类似这样的翻译操作也可以被用于本系统的图形处理单元模型122。 用户也将能通过本系统测试和分析帮助计算机操作系统与图形硬件之间通信 的设备驱动118。
本执行路径包含设备驱动118和嵌入在可被测试评估的GPU模型中的硬 件设计。系统产生追踪信息130,以备进一步的分析和其它多种应用。通过 脚本引擎界面114、设备驱动118以及代表图形处理硬件系统中的硬件设计 的图形处理单元模型122,本系统执行脚本106,产生GPU图像128,其能够 代表图形或者视频帧,使用户能够通过用户界面110对此图形进行分析、缩 放和处理,以分析、验证或者调试图形处理单元模型122所代表的图形硬件 设计。系统也可以反复多次产生图形来创建移动的图形和视频,供本系统用 户通过用户界面IIO作分析。
现在请见图4,描述了本系统的多条执行路径中,用粗体线标出的其中 一条执行路径描述了本发明系统的另 一个框图。本执行路经为系统用户提供 了产生参考驱动图形126的能力。参考驱动图形126代表了由参考设备驱动 116和代表硬件设计的图形处理单元模型122相结合产生的图形或者视频帧。 这样,本系统用户可以通过比对由设备驱动118所产生的图形和由参考设备
驱动116所产生的图形来验证或者分析设备驱动118。如上所述,参考设备 驱动116可以由图形API(例如,Direct3D API)的软件提供商创建,也可以 由第三方驱动提供商提供,第三方提供的驱动需按照参考规范来操作,可能 会丧失与硬件提供商开发的硬件特殊设备驱动效率一样高的硬件设计的优 点。
由系统反复产生的参考驱动图形126与图3的执行路经产生的GPU图形 128可以通过用户界面相比对。例如,参考驱动图形126和GPU图形128都 可以被缩放、旋转或者其它处理,使得用户能分析所产生的每个图形的正确 性。接下来,可以对所产生的图形进一步分析,来验证和分析硬件设计与软 件设备驱动的设计与执行。利用参考驱动116和设备驱动118执行脚本,图 4中粗体线标出的执行路经允许本系统用户分析由图形处理单元模型122所 代表的硬件设计。
请见图5,描述了本系统另一个执行路经的实施例。粗体线标出的路经 允许用户用参考运行时间112来产生参考图形124。如上所述,参考运行时 间112可以代表提供图形人?1(如0"6"30 人?1)的软件提供商所提供的运行 时间。参考运行时间112可以与参考栅120通信,参考栅120能够产生参考 图形格式的视频或图形帧。如上所述,参考栅120能够按照图形API执行图 形操作,提供参考或者基线,为确保硬件设计或软件设备驱动的正确性提供 比对。
参考图形124代表仅由图形API和代表参考图形硬件的参考栅所产生的 视频或者图形帧。通过用户界面110,用户能够比对参考图形124和参考驱 动图形126或GPU图形128,这对于评估设备驱动118或者图形处理单元模 型122所代表的硬件设计是有用处的。例如,用户可以在用户界面110中对 参考图形124作缩放、旋转或者其它处理,也可以与参考驱动图形126或者 GPU图形12 8作比对,帮助用户验证和分析图形硬件设计。
请见图6,描述了本发明的一个实施例。在本实施例中,本发明包含调 试器150,提供给用户附加的功能。调试器150能够提供给用户允许进一步 与脚本引擎108交互的能力和控制脚本在脚本引擎108中的执行的能力。例 如,调试器150能够与脚本引擎108交互,提供给用户控制脚本执行的能力。 再例如,通过用户界面130执行时,当粗体线标出的或其它路经指示出脚本 的当前位置,用户可使用调试器150让脚本一步一步地执行。虽然在其它图
示中并没有具体描述,本领域普通技术人员应当理解,其它实施例也可以包
含相似的调试器150,其与脚本引擎108通信。
另外,通过用户界面110,用户可以控制脚本106 —步一步地执行。当 分析脚本106和硬件设计时或者分析脚本106所使用的设备驱动时,用户可 以选择让脚本106不间断地4丸行,也可以继续一步一步地执行。例如,如果 脚本106使用图形处理单元模型122或设备驱动118使得产生的帧不符合预 期,用户可以使用调试器150来确定是哪个脚本命令导致了失败。这样,用 户可以更好地理解是硬件设计或设备驱动118的哪部分导致了失败。
另外,调试器150可以通过用户界面110允许用户在脚本106中^:置或 者设置断点。当脚本106中的断点到达时,用户可以在脚本引擎108中暂停 或停止执行脚本106。当分析由图形处理单元模型1"所代表的硬件设计时 或者分析在某条执行路径中所用的设备驱动时,断点提供了非常有用的功能。 另外,调试器150可以将图形处理单元模型1"所产生的追踪信息UO提供 到用户界面110,显示给用户观察。追踪信息130可以包含输入到图形处理 单元模型122的数据和由图形处理单元模型122产生的数据。调试器1M和/ 或用户界面110可以显示追踪信息130,允许进一步操作,例如数据排架、 查询、多种追踪、多种搡作和可能采用的其它调试功能。更有价值的是,与 建构一个硬件GPU然后用已知的方法测试相比较,本发明用断点使脚本106 一步一步地执行,利用调试器150和用户界面IIO观察追踪信息130,分析 和验证图形处理单元模型122更佳。
现在请见图7,描述了本发明方法的流程图。步骤302,获取软件应用程 序210中的图形操作以自动产生脚本106。例如,为了产生图形或^L频帧, 软件应用程序210会向操作系统的图形API发送请求。这些请求能被获取以 产生脚本引擎108处理的脚本106,如上所述。步骤3(M,获取的图形操作被 翻^^为包含脚本命令的脚本106,脚本命令由脚本语言定义。在一个非限定 性实施例中,脚本命令分为4种普通命令、二维命令、三维命令以及视频 命令。步骤304,从所获取的图形指令中产生脚本106。脚本106包含由脚 本语言定义的脚本命令,如上所述。脚本106包含与获取自具有图形组件的 软件应用程序210的图形操作相应的命令。例如,在软件应用程序210中绘 制三维物体的一系列图形操作将被获取,用脚本106代表,脚本106在多种 执行路径中执行。或者,在另一个实施例中,本发明用户手动创建脚本106,脚本106包含产生图形或视频帧的脚本命令。
步骤306,确定执行脚本106的执行路径。如上所述,参考图1-图6的 实施例,用户可以选择多种执行路径来分析和验证硬件设计和/或设备驱动。 例如,用户可以选择在以步骤308为起始的执行路径中执行脚本106,包括 翻译脚本106。位于脚本中的由脚本语言定义的命令4皮翻译为能够被软件设 备驱动216处理的格式。如上所述,脚本106包含由脚本语言定义的脚本命 令,脚本语言定义的脚本命令可能并不是能够被设备驱动理解的格式。因此, 脚本命令被转换为搡作系统图形函数产生的命令格式,操作系统图形函数响 应图形API中执行的函数,例如Direct3D⑧或者OpenGL 图形API。
步骤310,命令在软件图形驱动216中或设备驱动118中处理。如我们 所知,设备驱动118是一个软件组件,允许操作系统或其它软件应用程序210 与硬件组件通信。硬件组件如图形处理单元,既可以具有也可以不具有操作 系统认识并用来与硬件组件交互和执行组建中的操作的标准通信协议。步骤 312,软件图形驱动216处理的命令在图形处理单元才莫型122中执行。如上所 述,图形处理单元模型122可以是硬件设计的软件模型,与软件模型通信而 不是与硬件原型或硬件GPU通信。此模型可以用C语言或者其它编程语言实 现,通过将用硬件描述语言(HDL)所编写的硬件设计翻译为高级编程语言,例 如C语言。另一个可选择的实施例是,有些硬件设计者用高级语言例如C语 言实现硬件设计,这样就不需要翻译了。本发明的较佳实施例是使用此C-模 型创建硬件设计的工作软件模型。因为,例如,当需要执行调试功能时,相 对于HDL所代表的硬件设计,它提供了更简单的模型操作。当测试和分析时, 操作一个由高级编程语言表示的模型要比由HDL语言表示的模型容易的多, 因为高级语言本身提供了更好的适应性。
步骤314,图形处理单元模型122产生图形或视频帧。图形处理单元模 型122代表脚本106中的命令,脚本106由软件驱动216处理并被图形处理 单元模型122执行。通过用户界面110或本领域普通技术人员所知的其它方 法,产生的图形或视频帧能够被分析以评估图形处理单元模型122所代表的 硬件设计。例如,用户可以分析产生的帧是否与脚本引擎108执行的脚本106 产生的预期结果相一致。用户可以通过用户界面110检查或搡作产生的帧, 或者将产生的帧与另 一条可选的执行路径所产生的帧相比对。
步骤316为另一条可选的执行路径的起始。脚本106在步骤316翻译为
命令,本执行路径与上述路径的差别是在步骤317中,由参考运行时间112 处理命令。随后,执行步骤318,参考软件驱动116处理命令。如本发明上 述实施例所述,参考软件驱动116可以是软件驱动,不必具备硬件设计的所 有优点,但是是根据参考图形API实现的,例如DirecUD⑧或者OpenGL 图 形API。步骤320,由参考软件驱动116处理过的命令在代表硬件设计的图 形处理单元模型122中执行。这条执行路径使用图形处理单元模型122和参 考软件驱动116执行脚本106,增强了测试和分析能力。步骤322,脚本106 中的命令在参考软件驱动116中处理后由图形处理单元模型122执行,产生 图形或视频帧。另外,用户可以将步骤322所产生的帧与步骤314所产生的 帧相比对,分析和验证由图形处理单元模型所代表的硬件设计或者软件驱动 或设备驱动的实现。
步骤324描述了本发明另一个可选的执行路径的实施例,用来分析和测 试图形硬件设计。此执行路径提供给用户的方法是在参考运行时间112中 处理脚本的命令,在参考栅120中执行此命令。如上所述,参考运行时间112 是本领域所致的软件组件,典型地由软件图形API的提供商提供或者按照参 考规范实现。步骤328,参考运行时间112处理过的命令在参考栅120中执 行。如本发明上述实施例所述,在步骤330,参考栅120能产生视频或图像 帧。如本领域所知,参考栅120符合图形API例如Direct3D API,为参考 图形处理单元的软件实现,能够用来产生符合参考规范的图形或视频帧。硬 件提供商在开发硬件过程中会使用参考栅120作为基线,以与硬件设计与实 现比对,得知正确性。在这条执行路径中,用户可以将步骤330所产生的帧 与其它执行路径所产生的帧相比对,分析和验证由图形处理单元模型所代表 的硬件设计或者软件驱动或设备驱动的实现。
现在请见图8,描述了一套图形硬件调试和验证系统,包含一计算机系 统12,带有一台显示器14和用户输入设备16,比如,键盘或者鼠标。计算 机系统12也可能在网络22上形成一个节点,但是并不局限于LAN或者WAN。 在这种结构中,用来产生脚本106的脚本或者图形操作通过网络22从远程服 务器24传送到计算机系统12。远程服务器24和计算机系统12之间的连接 方式可以是物理网络接口中的任何一种,比如CAT-5、火线接口、 802.1 1 、 无线、或者其它连接方式。计算机系统12也可以包括光盘驱动器28,用来 接收和读取光盘30,光盘30可以含有脚本106或者具有图形操作的软件应
用程序210,以产生脚本106。
计算机系统12包含存储器34,可以用来存储许多执行模块。在本实施 例中,存储器34包含有脚本翻译模块36、脚本处理模块38和帧产生模块40。 存储器34还可以包含许多其它的模块,比如,可以包含脚本翻译模块36、 脚本处理模块38和帧产生模块40的子模块。
脚本翻译模块36可以把包含有图形操作的脚本106翻译成能够被软件驱 动或者设备驱动传输的格式,软件驱动或者设备驱动用来和图形硬件或代表 图形硬件设计的软件模型交互。上述设备驱动可以是软件组件,促进操作系 统或者其它软件程序和硬件组件之间的通讯。硬件组件可以是硬件图形处理 单元。根据脚本106是否被执行,脚本翻译模块36可以有不同的操作。如脚 本是在如下中的哪一个中执行设备驱动、参考驱动、参考运行时间或者其 它软件组件,其它软件组件在硬件或者代表硬件设计或规范的软件模型中交 互。例如,如果脚本106代表的图形操作要在设备驱动里运行,脚本翻译模 块36就会把脚本命令翻译成设备驱动识别的模式。而如果脚本106所代表的 图形操作将在参考运行时间中处理,脚本翻译模块36就会把脚本命令翻译为 参考运行时间能够识别的格式。
通过使翻译的脚本命令在软件驱动或者设备驱动里运行,脚本处理模块 38能够运行脚本106。脚本处理模块38控制脚本106的运行,并且可以包含 调试功能,可以让用户逐步执行脚本106,同样也可以使用脚本106中断功 能。例如,用户可以在脚本106里设置一个断点,脚本处理模块38在这个断 点就可以中断脚本106的执行,以允许用户检查关于这个脚本的各种数据, 并根据用户的要求继续执行该脚本106。
根据用户选择的执行路径,帧产生模块40可以产生图像或者视频帧。帧 产生模块可以包含至少3个执行路径,在上述揭露的实施例中也有讨论。例 如,帧产生模块40可以包含一个利用软件驱动或者设备驱动的测试执行路径 和一个代表硬件设计的软件模块;可以包含一个利用参考设备驱动的参考驱 动执行路径和代表硬件设计的软件模块;可以包含一个利用参考运行时间的 参考执行路径和一个参考栅。帧产生模块40内的这至少3个执行路径允许用 户分析由软件模块代表的硬件设计,同样允许用户分析软件驱动或者设备驱 动的执行。帧产生模块40允许一个或者多个执行路径并行使用,因此,用户 可以执行使用多条执行路径的同样或者相似的脚本,来比较这些脚本执行后
产生的帧。例如,用户可以并行使用测试执行路径和参考执行路径,以便评 估是否硬件设计和软件驱动程序的执行产生了预期结果,这些结果和由参考 执行路径产生的帧相关联。
需要注意的是,在有的实施例中,脚本翻译模块36、脚本处理模块38 和帧产生模块40可以组合成一个单独的模块,用来执行任何一个由这些单独 分离的模块执行的任务的组合。因此,任何在此描述的模块或者子模块并不 局限于现有的分离的模块。实际上所有模块都可以一个一个单独运行,或者 很容易就可以组合成一个模块。在一些实施例中,通过用户输入设备16和显 示器14里面的图形用户界面,用户可以控制脚本翻译模块36、脚本处理模 块38和帧产生模块40的操作,并使其相互作用。脚本翻译模块36、脚本处 理模块38和帧产生模块40的每一个和任何一个子模块,可以包含一个安排 好的执行指令列表,用来实现逻辑功能。应当指出的是,当脚本翻译模块36、 脚本处理模块38和帧产生模块以及任何一个子模块用软件实现的时候,该系 统可以被存储在任何计算机可读介质上,以便用来使用或者和任何计算机相 关系统或方法相连才妾。
本发明所称的计算机可读介质可以为但并不局限于电的、磁的、光的、 红外的、或者其它物理设备或方法,以便用来包含或者存储计算机程序来使 用,或者和计算机系统或方法相关联。更多计算机可读介质可以包含(并不穷 尽的举例)电路、便携计算机盘片、随机存取存储器、电可擦除只读存储器、 光纤。
图9描述了一个示范性的实施例,在计算机系统12上运行脚本翻译模块 36、脚本处理模块38和帧产生模块40。 一般地,计算机系统12可以包含任 何一个有线或无线计算设备,例如桌上电脑、便携电脑、专用电脑、多处 理器计算设备、移动电话、个人数字助理、掌上电脑、嵌入式设备等。不管 具体怎样,计算机系统12可以包含,举例来说,存储器34、处理设备42、 多个输入/输出界面44、网络界面设备46和集中存储48,其中这些设备中的 每一个都通过数据总线50互相连接。
处理设备42可以包含任何定制的或通用的处理器、中央处理器或者辅助 处理器、宏处理器、 一个或多个特殊应用集成电路、多个数字逻辑门和其它 公知的电子设备。
存储器34可以包含非永久性存储组件(例如,随机存取存储器(RAM,例
如DRAM、 SRAM等))或永久性存储组件(例如,R0M、硬盘、磁带、CDR0M,等)。 存储器34典型地包含操作系统52、 一个或多个应用程序、仿效系统或仿效 程序等。例如,应用程序可以包含应用特殊软件54,其包含脚本翻译模块36、 脚本处理模块38、帧产生模块40。本领域普通技术人员应当可以理解存储器 34能够包含其它组件,为了简洁易懂此处不再赘述。
输入/输出界面44位输入和输出数据提供了许多接口。例如,当计算机 系统12包含个人计算机,接口将为用户输入设备12,例如可以为键盘或鼠 标。当计算机系统包含掌上设备(例如PDA、移动电话),接口将为键或按钮、 触摸屏、格式等。显示器14可以包含计算机监视器或等离子屏幕或液晶显示 器等等。
请进一步参考图9,网络界面设备46包含多个组件,用来通过网络22 发射和/或接收数据。例如,网络界面设备46包含一个既能够与输入设备又 可以与输出设备通信的设备,例如调制/解调器(如Modem)、无线电收发器(如 无线电频率RF、电话接口、南北桥、路由器、网卡等)。
上述实施例仅仅为对于本发明图形硬件调试与验证的多种可能的方式的 举例,应该强调的是可以对上述实施例作多种变换和修改。所有修改和变换 都属于本发明权利要求书的保护范围。
权利要求
1.一种调试和验证图形硬件设计的系统,包含脚本引擎,将代表图形函数的脚本翻译为命令;脚本引擎界面,将该命令翻译为设备驱动能够处理的格式;图形处理单元模型,与图形处理单元的硬件设计相应,执行来自该设备驱动的命令,产生调试信息;以及调试器,提供调试该图形处理单元模型的能力。
2. 根据权利要求l的系统,其特征在于,还包含参考软件驱动,在该图形处理单元模型中处理该命令,其中,该图形处 理单元模型用来产生至少 一个与该脚本中的该图形函数相应的参考驱动图形帧。
3. 根据权利要求l的系统,其中,该图形处理单元模型用可编程语言表示。
4. 根据权利要求l的系统,其特征在于,还包含 参考运行时间,包含图形操作的应用程序界面;以及 参考栅;其中该系统执行该参考运行时间和该参考栅中的该命令,该参考栅产生至少 一个参考图形帧。
5. 根据权利要求4的系统,其中,该脚本引擎允许用户比对至少如下两者该至少 一个图形帧、该至少一个参考图形帧以及该至少一个参考驱动图 形帧。
6. 根据权利要求l的系统,其中,该调试器允许用户在该脚本中设置至 少一个调试断点。
7. 根据权利要求l的系统,还包含脚本产生器,从具有图形组件的软件应用程序中产生代表该图形函数的 该脚本;其中,该脚本产生器从该软件应用程序中获取请求,执行图形操作, 产生该脚本,该脚本包含软件图形驱动的命令。
8. —种调试与验证图形硬件设计的方法,包含如下步骤 将代表图形函数的脚本翻译为设备驱动所处理的命令;在该设备驱动中和代表图形硬件设计的图形处理单元模型中处理该命令;以及产生与该脚本中的该命令相应的至少 一个图形处理单元帧。
9. 根据权利要求8的调试与验证图形硬件设计的方法,其特征在于,还 包含将该脚本翻译为参考软件驱动所处理的命令; 在该参考软件驱动和该图形处理单元模型中处理该命令;以及 产生至少 一个与该脚本中的命令相应的参考驱动帧。
10. 根据权利要求9的调试与验证图形硬件设计的方法,其特征在于, 还包含比较该至少一个参考驱动帧和该至少一个图形处理单元帧,以分析至少 如下之一该图形硬件设计和该设备驱动的设计。
11. 根据权利要求8的调试与验证图形硬件设计的方法,其特征在于, 还包含将该脚本翻译为参考栅所处理的命令;在该参考栅中处理该命令;产生至少 一个与该脚本中的命令相应的参考帧。
12. 根据权利要求11的调试与验证图形硬件设计的方法,其特征在于, 还包含如下步骤比对如下之中的至少两者该至少一个参考帧、该至少一个参考驱动帧 和该至少一个图形处理单元帧;以及在该比对步骤所得结果的基础上,分析至少如下之一该图形硬件设计 和该i殳备驱动的i殳计。
13. 根据权利要求8的调试与验证图形硬件设计的方法,其特征在于, 还包含如下步骤从代表该图形硬件的该图形处理单元模型中产生调试信息;以及 分析该调试信息以验证该图形硬件设计。
14. 根据权利要求8的调试与验证图形硬件设计的方法,其特征在于, 还包含如下步骤在该脚本中设置至少一个断点; 4丸行该脚本到该至少 一个断点; 分析该调试信息;以及继续执行该脚本。
15.根据权利要求8的调试与验证图形硬件设计的方法,其特征在于, 还包含如下步骤通过从执行图形操作的软件应用程序中获取请求以及将该请求转换为该 软件图形驱动的命令,产生该脚本。
全文摘要
本发明为一种调试和分析图形硬件设计的系统与方法。硬件设计用软件模型代表,软件模型以编程语言实现。图形操作可以在软件模型中执行,也可以在参考软件模型中执行,使用户可以分析图形硬件设计和/或设备驱动实现的正确性。
文档编号G06F17/50GK101183400SQ20071016216
公开日2008年5月21日 申请日期2007年12月21日 优先权日2007年12月21日
发明者栋 周, 徐建明, 黄敏杰 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1