CN101183400A - 图形硬件设计中调试与验证的方法与*** - Google Patents
图形硬件设计中调试与验证的方法与*** Download PDFInfo
- Publication number
- CN101183400A CN101183400A CNA2007101621610A CN200710162161A CN101183400A CN 101183400 A CN101183400 A CN 101183400A CN A2007101621610 A CNA2007101621610 A CN A2007101621610A CN 200710162161 A CN200710162161 A CN 200710162161A CN 101183400 A CN101183400 A CN 101183400A
- Authority
- CN
- China
- Prior art keywords
- script
- processing unit
- graphic
- order
- design
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明为一种调试和分析图形硬件设计的***与方法。硬件设计用软件模型代表,软件模型以编程语言实现。图形操作可以在软件模型中执行,也可以在参考软件模型中执行,使用户可以分析图形硬件设计和/或设备驱动实现的正确性。
Description
技术领域
本发明涉及图形硬件,特别涉及一种在图形硬件设计中应用软件模型代替硬件设计以进行调试与验证的方法与***。
背景技术
一般地,集成电路设计包括几个阶段,在每个阶段使用不同的工具。集成电路设计者通常选择几种编程语言中的一种来书写代码。与书写代码的过程相同步的是仿真。在仿真的过程中,设计者执行一个仿真工具,以程序代码为输入来测试所作的设计。因为仿真暴露了问题,设计者就可以编辑代码来解决这些问题,然后再次仿真。在仿真阶段之后,由合成器将代码翻译为集成电路的逻辑表示。然后由其它工具将逻辑表示翻译为物理的集成电路,例如,可以翻译为现场可编程逻辑门阵列(FPGA)、特殊应用集成电路(ASIC)或者传统硅集成电路(custom silicon IC)等格式。
集成电路设计者可以选用几种类型的编程语言。一类可以称为硬件设计语言(HDL),也被称为寄存器传送语言(RTLs)。公众均了解,RTLs语言包括Verilog和VHDL。RTLs被认为是底层语言,因为它们描述特殊硬件的特征,例如定时和并行处理。集成电路设计语言的另一类选择为高级语言,包括C和C++(以及其它的相关语言),这些语言通常用来开发软件而不是硬件。这些软件语言允许设计者编写更高层的代码,这提高了编程者的效率。
然而,许多目前流行的仿真工具和合成的工具都是用HDL语言而不是C或C++语言作为输入,因此,就需要集成电路设计者先用C或C++语言编写代码,之后再翻译为HDL语言。这一翻译过程可以人工完成,也可以自动完成,或者用人工和自动相结合的方式完成。另外,使用HDL语言的仿真工具和合成工具通常不能提供充分的调试能力以使硬件设计者容易地和有效率地为硬件设计调试。例如,这些仿真和合成工具通常只允许硬件设计者或测试者检测从仿真工具和合成工具中堆入和提取的数据,但是它们通常不能允许更为具体或者详细的调试和测试图形硬件设计。
发明内容
本发明的其中一个实施例描述了图形硬件设计的调试与验证***。***包括:脚本引擎,用来将代表图形函数的脚本翻译为可被软件图形驱动处理的命令。此软件图形驱动在图形处理单元模型中处理此命令。此图形处理单元模型可以与图形处理单元硬件设计相对应,用来产生至少一个与脚本中的图形函数相应的图形帧。
本发明的调试与验证***还可以包括脚本引擎界面,用来执行软件图形驱动中以及图形处理单元模型中的命令。
本发明还可以包括脚本引擎,用来执行软件图形驱动和图形处理单元模型中的命令。此脚本引擎还用来显示至少一个图形帧以及图形处理单元模型所产生的调试信息。本发明***也可以包含调试器,提供调试图形处理单元模型的能力。
本发明另一个实施例描述了一种图形硬件设计的方法。该方法包含:将代表硬件设计的脚本翻译为软件图形驱动能够处理的命令。本发明方法也可以包括:在软件图形驱动中以及代表图形硬件设计的图形处理单元模型中处理命令。本发明方法还可以包含:产生至少一个与脚本中的图形函数相应的图形处理单元帧。
下面结合附图进行详细说明,将使本领域技术人员了解本发明的其它***、方法、特征和/或有益效果。
附图说明
图1为本发明的一个实施例的示意图;
图2为本发明的一个实施例中的脚本产生器的流程框图;
图3为图1实施例的其中一个执行路径的流程框图;
图4为图1实施例的一个可替代的执行路径的流程框图;
图5为图1实施例的另一个可替代的执行路径的流程框图;
图6为本发明另一个实施例的示意图;
图7为本发明图形硬件设计中调试与验证的方法的流程图;
图8为本发明图形硬件设计中调试与验证的方法的另一个流程图;
图9为本发明另一个实施例的示意图。
具体实施方式
以下结合附图详细说明本发明。然而所附图示和说明仅为了清楚地理解本发明,并非用来对本发明进行限制。任何所作的替换、修改、和选择都属于本发明的保护范围。
本发明揭露了一种调试和验证图形硬件设计的***与方法。图形硬件设计者或测试者可以使用本发明***与方法一步一步地执行包含图形操作的应用程序,来分析和定位图形硬件设计中潜在的错误。另外,用户还可以使用本发明***与方法在代表软件应用程序的图形组件的脚本中设置断点,以进一步分析图形硬件设计。
用户使用本发明***与方法,还可以利用至少三条执行路经来产生和分析图形帧或者视频帧,以进一步验证和测试图形硬件设计:参考运行时间和参考栅;参考运行时间、参考软件设备驱动和被测图形硬件;或者,软件设备驱动和被测图形硬件。这至少三条执行路经允许用户分析和测试图形硬件设计,也允许用户分析和测试支持图形硬件的软件设备驱动。用户可以使用单个脚本,也可以同时使用多条执行路径来执行脚本,分析所产生的视频或图形帧。
请见图1,描述了本发明图形硬件设计中调试与验证***的一个实施例。在本实施例中,图形硬件设计中调试与验证***包括编辑器102,它是本发明***的可选组件,用来产生验证图形硬件设计的脚本106。举例来说,如果想要验证或分析图形硬件设计,本发明的用户可以手动产生包含着命令的脚本106,命令用脚本语言定义,代表图形操作。
脚本106也可以由脚本产生器104产生。脚本产生器104可以从具有图形组件的软件应用程序中写入或者获取图形操作。例如,利用Direct 3D或者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相联系,能够执行标准软件应用程序界面所定义的命令,例如Direct 3D的应用程序界面或者OpenGL应用程序界面。
脚本产生器222可以从软件应用程序210或者从软件应用程序210的图形组件获取或记录命令,以产生图形内容。脚本产生器222能将这些命令转化为脚本224中由脚本语言定义的命令。在一个非限制性实施例中,脚本语言的脚本命令可以被组合为如下至少4种命令组群的类型:普通命令(commoncommands)、二维命令(2D commands)、三维命令(3D commands)和视频命令(video commands)。在这一非限制性实施例中,命令组群具有的功能与软件图形应用程序界面(API)的API功能相应。
例如,普通命令可以包含用来定义图形操作所用的图形API的版本和类型的命令,也可以包含图形操作的显示模式或决定,也可以包含与图形或视频帧相应的颜色品质或密度以及其它属性;本领域普通技术人员应当理解。另外,普通命令也可以包含定义脚本中的一个或多个断点的命令或指向脚本引擎108以向文件、显示器或其它输出设备堆叠调试信息的命令。调试信息可以包含与图形硬件设计的调试相应的信息。
普通命令也可以包含对于达到调试目的有用的其它附加命令。例如,跳转到脚本中的另一个点的命令可能对于用户分析硬件设计有用。在本发明的其中一个实施例中,普通命令提供了渲染程序的维持状态或放弃状态之间的跳转能力。另一个示范性的调试命令可以包含使调试信息显示或储存到文件中的命令。这对于用户评估图形硬件设计来说是有用的,在脚本执行过程中警示用户他希望见到的特定信息,或者仅仅警示用户脚本的某部分已经到达。另外,普通命令还可以包含清空D、Z、S缓存的命令。再另外,在脚本语言中也可以包含显示渲染的图形、视频帧或者翻转帧的命令。本领域普通技术人员应当理解,D缓存是一个包含了属于颜色数据渲染对象的信息的缓存,在本技术领域内也被认为是目的地缓存。本领域技术人员应理解Z缓存是指“深度”缓存,储存每一个像素的深度信息。另外,也应理解的是,S缓存是指“模版”缓存,储存每一个像素的模版值。这些缓存是三维渲染结果的主存储区域。另外,脚本命令使得图形处理单元中的低水平硬件寄存器的编程能够提供在图形处理单元(GPU)或GPU替代模型中的详细功能的控制。
二维命令、三维命令和视频命令中所包含的命令与特殊图形应用编程界面中的命令相似,例如特殊图形应用编程界面为Direct3DAPI或者OpenGLAPI。本领域技术人员应理解上述命令在不同***中差别很大,依赖于软件应用所使用的特殊的图形API或者脚本引擎所使用的图形硬件设计。然而,本领域拥有图形API知识的普通技术人员应能够知道还有很多其它未涉及的变换,这些变换都属于本发明的保护范围。
现在请再回到图1,参考原理框图。如上所述,本发明***使用的脚本106可由编辑器102或者脚本产生器104产生。脚本106包含与脚本语言所定义的图形操作相应的命令,可被脚本引擎108执行。***提供给本***的用户多种可选择的执行路径,以验证和分析图形硬件设计。这多种执行路径能允许用户使用用户正在测试的图形硬件设计,也允许用户使用参考***来产生图形或者视频的帧以作比对之用。脚本引擎108将代表由脚本语言定义的图形操作的脚本106翻译为脚本引擎108所执行的命令,以产生图形帧,也允许本***用户分析和调试用来产生帧的图形硬件设计。
脚本引擎108也可以包含用户界面110,允许用户既通过键盘、鼠标或其它输入设备也可以通过显示器或其它输出设备可视化地与脚本引擎108交互,以及/或者控制脚本引擎108。用户界面110也允许脚本引擎108将该些执行路径中的至少一个路径的结果显示给用户。用户界面110还能够允许用户比对至少两个执行路径的结果,来分析图形硬件设计。
本发明***还可以包含脚本引擎界面114,允许脚本引擎108通过图形设备驱动118执行脚本106,脚本106为脚本语言形式,代表图形硬件设计。换句话说,脚本引擎界面114能将脚本106翻译成为一个能够被设备驱动118处理的格式,因为可能会需要将包含了由脚本语言所定义的命令的脚本翻译为在图形处理单元中或代表图形处理单元的模型中的设备驱动的调用和后续调用。脚本引擎界面114的实现方式可以有很多种,依赖于本发明所使用的设备驱动118和图形处理单元模型122的不同而不同,因为本***可以按照所选用的通信协议被设置为执行不同的设备驱动和模型。
本发明***可以包含图形处理单元模型122。图形处理单元模型122可以是代表图形处理单元的硬件设计的软件模型,可允许设计者或测试者不需要专门为测试目的来制作一个物理的图形处理单元即可以分析和验证特定的硬件设计。如上所述,硬件设计者可以用硬件描述语言(HDL)创建图形硬件设计。本领域技术人员应理解,用硬件描述语言表述的硬件设计可以被翻译为此设计的一个模型,模型可以用可编程语言来设计,例如C语言或者其它类似的语言,允许设计者为硬件设计来创建一个工作软件模型。在本发明***的架构中使用这些模型,可以创建一个工作图形***,能产生图形或者视频帧以达到测试和验证的目的。
例如,众所周知,用硬件设计语言所描述的逻辑门能够被翻译为高级语言例如C语言,来创建硬件设计的模型,这个模型可以被用来建模和测试。这样的模型在本领域内被称为“C-模型”,说明创建图形硬件设计的模型所用的编程语言为C语言。大家还知道,设备驱动118典型的为软件组件,促进了操作***的图形子***和图形硬件之间的通信。在本发明***中,通过脚本引擎界面114和图形处理单元模型122的交互,设备驱动118也可以被分析和调试。
图形处理单元模型122因为仿真了硬件图形处理单元的功能,所以它能产生图形、视频帧或GPU图像128,它们能够通过用户界面110显示给用户。换言之,图形处理单元模型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可以包含:软件供应商提供的运行时间,例如Direct3D运行时间。本***还包含参考驱动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所代表的图形硬件设计。***也可以反复多次产生图形来创建移动的图形和视频,供本***用户通过用户界面110作分析。
现在请见图4,描述了本***的多条执行路径中,用粗体线标出的其中一条执行路径描述了本发明***的另一个框图。本执行路经为***用户提供了产生参考驱动图形126的能力。参考驱动图形126代表了由参***驱动116和代表硬件设计的图形处理单元模型122相结合产生的图形或者视频帧。这样,本***用户可以通过比对由设备驱动118所产生的图形和由参***驱动116所产生的图形来验证或者分析设备驱动118。如上所述,参***驱动116可以由图形API(例如,Direct3DAPI)的软件提供商创建,也可以由第三方驱动提供商提供,第三方提供的驱动需按照参考规范来操作,可能会丧失与硬件提供商开发的硬件特殊设备驱动效率一样高的硬件设计的优点。
由***反复产生的参考驱动图形126与图3的执行路经产生的GPU图形128可以通过用户界面相比对。例如,参考驱动图形126和GPU图形128都可以被缩放、旋转或者其它处理,使得用户能分析所产生的每个图形的正确性。接下来,可以对所产生的图形进一步分析,来验证和分析硬件设计与软件设备驱动的设计与执行。利用参考驱动116和设备驱动118执行脚本,图4中粗体线标出的执行路经允许本***用户分析由图形处理单元模型122所代表的硬件设计。
请见图5,描述了本***另一个执行路经的实施例。粗体线标出的路经允许用户用参考运行时间112来产生参考图形124。如上所述,参考运行时间112可以代表提供图形API(如Direct3DAPI)的软件提供商所提供的运行时间。参考运行时间112可以与参考栅120通信,参考栅120能够产生参考图形格式的视频或图形帧。如上所述,参考栅120能够按照图形API执行图形操作,提供参考或者基线,为确保硬件设计或软件设备驱动的正确性提供比对。
参考图形124代表仅由图形API和代表参考图形硬件的参考栅所产生的视频或者图形帧。通过用户界面110,用户能够比对参考图形124和参考驱动图形126或GPU图形128,这对于评估设备驱动118或者图形处理单元模型122所代表的硬件设计是有用处的。例如,用户可以在用户界面110中对参考图形124作缩放、旋转或者其它处理,也可以与参考驱动图形126或者GPU图形128作比对,帮助用户验证和分析图形硬件设计。
请见图6,描述了本发明的一个实施例。在本实施例中,本发明包含调试器150,提供给用户附加的功能。调试器150能够提供给用户允许进一步与脚本引擎108交互的能力和控制脚本在脚本引擎108中的执行的能力。例如,调试器150能够与脚本引擎108交互,提供给用户控制脚本执行的能力。再例如,通过用户界面130执行时,当粗体线标出的或其它路经指示出脚本的当前位置,用户可使用调试器150让脚本一步一步地执行。虽然在其它图示中并没有具体描述,本领域普通技术人员应当理解,其它实施例也可以包含相似的调试器150,其与脚本引擎108通信。
另外,通过用户界面110,用户可以控制脚本106一步一步地执行。当分析脚本106和硬件设计时或者分析脚本106所使用的设备驱动时,用户可以选择让脚本106不间断地执行,也可以继续一步一步地执行。例如,如果脚本106使用图形处理单元模型122或设备驱动118使得产生的帧不符合预期,用户可以使用调试器150来确定是哪个脚本命令导致了失败。这样,用户可以更好地理解是硬件设计或设备驱动118的哪部分导致了失败。
另外,调试器150可以通过用户界面110允许用户在脚本106中放置或者设置断点。当脚本106中的断点到达时,用户可以在脚本引擎108中暂停或停止执行脚本106。当分析由图形处理单元模型122所代表的硬件设计时或者分析在某条执行路径中所用的设备驱动时,断点提供了非常有用的功能。另外,调试器150可以将图形处理单元模型122所产生的追踪信息130提供到用户界面110,显示给用户观察。追踪信息130可以包含输入到图形处理单元模型122的数据和由图形处理单元模型122产生的数据。调试器150和/或用户界面110可以显示追踪信息130,允许进一步操作,例如数据排架、查询、多种追踪、多种操作和可能采用的其它调试功能。更有价值的是,与建构一个硬件GPU然后用已知的方法测试相比较,本发明用断点使脚本106一步一步地执行,利用调试器150和用户界面110观察追踪信息130,分析和验证图形处理单元模型122更佳。
现在请见图7,描述了本发明方法的流程图。步骤302,获取软件应用程序210中的图形操作以自动产生脚本106。例如,为了产生图形或视频帧,软件应用程序210会向操作***的图形API发送请求。这些请求能被获取以产生脚本引擎108处理的脚本106,如上所述。步骤304,获取的图形操作被翻译为包含脚本命令的脚本106,脚本命令由脚本语言定义。在一个非限定性实施例中,脚本命令分为4种:普通命令、二维命令、三维命令以及视频命令。步骤304,从所获取的图形指令中产生脚本106。脚本106包含由脚本语言定义的脚本命令,如上所述。脚本106包含与获取自具有图形组件的软件应用程序210的图形操作相应的命令。例如,在软件应用程序210中绘制三维物体的一系列图形操作将被获取,用脚本106代表,脚本106在多种执行路径中执行。或者,在另一个实施例中,本发明用户手动创建脚本106,脚本106包含产生图形或视频帧的脚本命令。
步骤306,确定执行脚本106的执行路径。如上所述,参考图1-图6的实施例,用户可以选择多种执行路径来分析和验证硬件设计和/或设备驱动。例如,用户可以选择在以步骤308为起始的执行路径中执行脚本106,包括翻译脚本106。位于脚本中的由脚本语言定义的命令被翻译为能够被软件设备驱动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实现的,例如Direct3D或者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例如Direct3DAPI,为参考图形处理单元的软件实现,能够用来产生符合参考规范的图形或视频帧。硬件提供商在开发硬件过程中会使用参考栅120作为基线,以与硬件设计与实现比对,得知正确性。在这条执行路径中,用户可以将步骤330所产生的帧与其它执行路径所产生的帧相比对,分析和验证由图形处理单元模型所代表的硬件设计或者软件驱动或设备驱动的实现。
现在请见图8,描述了一套图形硬件调试和验证***,包含一计算机***12,带有一台显示器14和用户输入设备16,比如,键盘或者鼠标。计算机***12也可能在网络22上形成一个节点,但是并不局限于LAN或者WAN。在这种结构中,用来产生脚本106的脚本或者图形操作通过网络22从远程服务器24传送到计算机***12。远程服务器24和计算机***12之间的连接方式可以是物理网络接口中的任何一种,比如CAT-5、火线接口、802.11、无线、或者其它连接方式。计算机***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等))或永久性存储组件(例如,ROM、硬盘、磁带、CDROM,等)。存储器34典型地包含操作***52、一个或多个应用程序、仿效***或仿效程序等。例如,应用程序可以包含应用特殊软件54,其包含脚本翻译模块36、脚本处理模块38、帧产生模块40。本领域普通技术人员应当可以理解存储器34能够包含其它组件,为了简洁易懂此处不再赘述。
输入/输出界面44位输入和输出数据提供了许多接口。例如,当计算机***12包含个人计算机,接口将为用户输入设备12,例如可以为键盘或鼠标。当计算机***包含掌上设备(例如PDA、移动电话),接口将为键或按钮、触摸屏、格式等。显示器14可以包含计算机监视器或等离子屏幕或液晶显示器等等。
请进一步参考图9,网络界面设备46包含多个组件,用来通过网络22发射和/或接收数据。例如,网络界面设备46包含一个既能够与输入设备又可以与输出设备通信的设备,例如调制/解调器(如Modem)、无线电收发器(如无线电频率RF、电话接口、南北桥、路由器、网卡等)。
上述实施例仅仅为对于本发明图形硬件调试与验证的多种可能的方式的举例,应该强调的是可以对上述实施例作多种变换和修改。所有修改和变换都属于本发明权利要求书的保护范围。
Claims (15)
1.一种调试和验证图形硬件设计的***,包含:
脚本引擎,将代表图形函数的脚本翻译为命令;
脚本引擎界面,将该命令翻译为设备驱动能够处理的格式;
图形处理单元模型,与图形处理单元的硬件设计相应,执行来自该设备驱动的命令,产生调试信息;以及
调试器,提供调试该图形处理单元模型的能力。
2.根据权利要求1的***,其特征在于,还包含:
参考软件驱动,在该图形处理单元模型中处理该命令,其中,该图形处理单元模型用来产生至少一个与该脚本中的该图形函数相应的参考驱动图形帧。
3.根据权利要求1的***,其中,该图形处理单元模型用可编程语言表示。
4.根据权利要求1的***,其特征在于,还包含:
参考运行时间,包含图形操作的应用程序界面;以及
参考栅;其中
该***执行该参考运行时间和该参考栅中的该命令,该参考栅产生至少一个参考图形帧。
5.根据权利要求4的***,其中,该脚本引擎允许用户比对至少如下两者:
该至少一个图形帧、该至少一个参考图形帧以及该至少一个参考驱动图形帧。
6.根据权利要求1的***,其中,该调试器允许用户在该脚本中设置至少一个调试断点。
7.根据权利要求1的***,还包含:
脚本产生器,从具有图形组件的软件应用程序中产生代表该图形函数的该脚本;其中,该脚本产生器从该软件应用程序中获取请求,执行图形操作,产生该脚本,该脚本包含软件图形驱动的命令。
8.一种调试与验证图形硬件设计的方法,包含如下步骤:
将代表图形函数的脚本翻译为设备驱动所处理的命令;
在该设备驱动中和代表图形硬件设计的图形处理单元模型中处理该命令;以及
产生与该脚本中的该命令相应的至少一个图形处理单元帧。
9.根据权利要求8的调试与验证图形硬件设计的方法,其特征在于,还包含:
将该脚本翻译为参考软件驱动所处理的命令;
在该参考软件驱动和该图形处理单元模型中处理该命令;以及
产生至少一个与该脚本中的命令相应的参考驱动帧。
10.根据权利要求9的调试与验证图形硬件设计的方法,其特征在于,还包含:
比较该至少一个参考驱动帧和该至少一个图形处理单元帧,以分析至少如下之一:该图形硬件设计和该设备驱动的设计。
11.根据权利要求8的调试与验证图形硬件设计的方法,其特征在于,还包含:
将该脚本翻译为参考栅所处理的命令;
在该参考栅中处理该命令;
产生至少一个与该脚本中的命令相应的参考帧。
12.根据权利要求11的调试与验证图形硬件设计的方法,其特征在于,还包含如下步骤:
比对如下之中的至少两者:该至少一个参考帧、该至少一个参考驱动帧和该至少一个图形处理单元帧;以及
在该比对步骤所得结果的基础上,分析至少如下之一:该图形硬件设计和该设备驱动的设计。
13.根据权利要求8的调试与验证图形硬件设计的方法,其特征在于,还包含如下步骤:
从代表该图形硬件的该图形处理单元模型中产生调试信息;以及
分析该调试信息以验证该图形硬件设计。
14.根据权利要求8的调试与验证图形硬件设计的方法,其特征在于,还包含如下步骤:
在该脚本中设置至少一个断点;
执行该脚本到该至少一个断点;
分析该调试信息;以及
继续执行该脚本。
15.根据权利要求8的调试与验证图形硬件设计的方法,其特征在于,还包含如下步骤:
通过从执行图形操作的软件应用程序中获取请求以及将该请求转换为该软件图形驱动的命令,产生该脚本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101621610A CN101183400B (zh) | 2007-12-21 | 2007-12-21 | 图形硬件设计中调试与验证的方法与*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101621610A CN101183400B (zh) | 2007-12-21 | 2007-12-21 | 图形硬件设计中调试与验证的方法与*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101183400A true CN101183400A (zh) | 2008-05-21 |
CN101183400B CN101183400B (zh) | 2011-06-15 |
Family
ID=39448674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101621610A Active CN101183400B (zh) | 2007-12-21 | 2007-12-21 | 图形硬件设计中调试与验证的方法与*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101183400B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484518A (zh) * | 2014-12-03 | 2015-04-01 | 中国航空工业集团公司第六三一研究所 | 一种需求模型到仿真模型的模型转换方法 |
CN107066378A (zh) * | 2017-01-24 | 2017-08-18 | 成都皓图智能科技有限责任公司 | 一种实时在线gpu通用计算模拟及调试方法 |
CN109214010A (zh) * | 2017-07-07 | 2019-01-15 | 西门子股份公司 | 用于处理指令的自动翻译的方法和*** |
CN111881054A (zh) * | 2020-08-04 | 2020-11-03 | 携程计算机技术(上海)有限公司 | 用户界面自动化测试方法、***、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100366003C (zh) * | 2005-04-28 | 2008-01-30 | 华为技术有限公司 | 仿真路由分析测试的装置及其方法 |
CN100451986C (zh) * | 2006-12-29 | 2009-01-14 | 深圳市明微电子有限公司 | 网络芯片的自动化验证方法 |
CN101008962A (zh) * | 2006-12-29 | 2007-08-01 | 深圳市明微电子有限公司 | 可配置可替换的网络芯片使用参考模型的验证方法 |
-
2007
- 2007-12-21 CN CN2007101621610A patent/CN101183400B/zh active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484518A (zh) * | 2014-12-03 | 2015-04-01 | 中国航空工业集团公司第六三一研究所 | 一种需求模型到仿真模型的模型转换方法 |
CN107066378A (zh) * | 2017-01-24 | 2017-08-18 | 成都皓图智能科技有限责任公司 | 一种实时在线gpu通用计算模拟及调试方法 |
CN109214010A (zh) * | 2017-07-07 | 2019-01-15 | 西门子股份公司 | 用于处理指令的自动翻译的方法和*** |
CN109214010B (zh) * | 2017-07-07 | 2024-01-12 | 西门子股份公司 | 用于处理指令的自动翻译的方法和*** |
CN111881054A (zh) * | 2020-08-04 | 2020-11-03 | 携程计算机技术(上海)有限公司 | 用户界面自动化测试方法、***、设备及存储介质 |
CN111881054B (zh) * | 2020-08-04 | 2023-12-22 | 携程计算机技术(上海)有限公司 | 用户界面自动化测试方法、***、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101183400B (zh) | 2011-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8146061B2 (en) | Systems and methods for graphics hardware design debugging and verification | |
US9754059B2 (en) | Graphical design verification environment generator | |
US7100133B1 (en) | Computer system and method to dynamically generate system on a chip description files and verification information | |
Ball et al. | SLAM and Static Driver Verifier: Technology transfer of formal methods inside Microsoft | |
US9064068B1 (en) | Debuggable opaque IP | |
US6754862B1 (en) | Gaining access to internal nodes in a PLD | |
US8234617B2 (en) | Method and system for re-using digital assertions in a mixed signal design | |
Griebe et al. | A model-based approach to test automation for context-aware mobile applications | |
CN100442293C (zh) | 合并硬件设计语言的原始档案与查验资料档案的方法 | |
CN105912473A (zh) | 基于bdd的移动app自动测试平台和测试方法 | |
CN102053911A (zh) | 基于Android的自动化测试方法、***及移动终端 | |
JP2007012003A (ja) | フィーチャ指向ソフトウェア製品ラインの開発環境を提供するシステム | |
CN112732576B (zh) | 基于用户界面的自动化测试方法、装置及设备 | |
CN102999419B (zh) | 一种Android测试事件记录回放方法及装置 | |
US20070214178A1 (en) | Multi-project verification environment | |
CN101183400B (zh) | 图形硬件设计中调试与验证的方法与*** | |
CN117435483A (zh) | 基于Formal工具的仿真验证激励生成方法、装置、介质及终端 | |
Kerraoui et al. | MATT: multi agents testing tool based nets within nets | |
Schmid et al. | A survey of simulation tools for requirements engineering | |
Heinrich et al. | The palladio-bench for modeling and simulating software architectures | |
US8296697B2 (en) | Method and apparatus for performing static analysis optimization in a design verification system | |
Martens et al. | Diagnosing sca components using wombat | |
CN112765018B (zh) | 一种仪器仪表调试***及方法 | |
Pettit et al. | Modeling behavioral patterns of concurrent software architectures using Petri nets | |
Swearngin et al. | Easing the generation of predictive human performance models from legacy systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |