首页> 中国专利> 支持用于仿真结果观测的信号规范的方法、系统和程序产品

支持用于仿真结果观测的信号规范的方法、系统和程序产品

摘要

根据一种数据处理的方法,由数据处理系统接收包括至少一个条目的数据集,所述至少一个条目通过预定的信号组名称来指定信号组。响应于接收到所述数据集,处理所述数据集中的条目,以便标识信号组名称。访问与含有仿真结果的事件跟踪文件相关联的信号组信息,以便确定作为所述信号组的成员的多个信号的信号名称。然后将来自所述事件跟踪文件的与所述多个信号的实例相关联的仿真结果包括在对仿真结果的呈现中。

著录项

  • 公开/公告号CN101410841A

    专利类型发明专利

  • 公开/公告日2009-04-15

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200780011529.1

  • 发明设计人 G·波波克;W·勒斯纳;D·E·威廉斯;

    申请日2007-05-02

  • 分类号G06F17/50(20060101);

  • 代理机构11247 北京市中咨律师事务所;

  • 代理人于静;张静美

  • 地址 美国纽约

  • 入库时间 2023-12-17 21:49:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-04-24

    未缴年费专利权终止 IPC(主分类):G06F17/50 授权公告日:20110112 终止日期:20190502 申请日:20070502

    专利权的终止

  • 2017-11-24

    专利权的转移 IPC(主分类):G06F17/50 登记生效日:20171106 变更前: 变更后: 申请日:20070502

    专利申请权、专利权的转移

  • 2011-01-12

    授权

    授权

  • 2009-06-10

    实质审查的生效

    实质审查的生效

  • 2009-04-15

    公开

    公开

说明书

技术领域

本发明一般地涉及仿真数字设备、模块和系统,并且特别涉及数字设备、模块和系统的计算机仿真。

背景技术

在大多数数字设计过程中,检验数字设计的逻辑正确性并调试该设计(如果必要的话)是非常重要的步骤。通过实际构建网络或通过在计算机上仿真网络来测试逻辑网络。当逻辑网络变得非常复杂时,在实际构建设计之前仿真该设计是必要的。这在设计被实现为集成电路时尤其如此,因为集成电路的制备要求相当多的时间并且纠正错误的代价很高。数字设计仿真的目的是检验该设计的逻辑正确性。

在典型的由常规电子计算机辅助设计(ECAD)系统所支持的自动化设计过程中,设计师利用硬件描述语言(HDL)(例如VHDL)输入高级描述,从而产生各种电路块及其互连的表示。ECAD系统将该设计描述编译成最适于仿真的格式。然后在开发电路布置之前利用仿真器来检验该设计的逻辑正确性。

仿真器通常是一种软件工具,其操作于电路的仿真模型或数字表示以及表示数据系统的输入的一系列输入激励(即,测试用例)。仿真器生成电路响应的数字表示,然后该数字表示可以作为一列值在显示器屏幕上被观测或被进一步解释(常常通过单独的软件程序),并且以图形形式被呈现在显示器屏幕上。仿真器可以运行在通用计算机上或另外的电子装置部件上(其通常附于通用计算机并专门为仿真而设计)。下文将完全以软件形式运行在通用计算机上的仿真器称为“软件仿真器”。下文将在专门设计的电子装置的辅助下运行的仿真器称为“硬件仿真器”。

通常,软件仿真器进行大量的计算并且在用户看来运行得慢。为了优化性能,对仿真模型的格式进行设计,以便被仿真器高效使用。本质上,硬件仿真器要求包括电路描述的仿真模型以专门设计的格式进行通信。无论哪种情况,都要求从HDL描述转换到仿真格式(下文称之为仿真可执行模型)。

在此将仿真器的仿真可执行模型的测试用例的应用结果称为“所有事件跟踪”(AET)。AET含有仿真可执行模型内信号的逻辑值和/或存储元件。可以利用AET观测器向用户呈现AET的内容以便进行回顾和分析。

如将被理解的,对于大的仿真可执行模型来说,大量数据会呈现在AET中,但并不是所有的数据都与用户有关。因此,常规AET观测器允许用户输入输入/输出(I/O)列表,其指定用户期望观测的仿真可执行模型中的信号。作为响应,常规AET观测器向用户仅呈现I/O列表中所标识的仿真可执行模型内的那些信号。

发明内容

本发明认识到I/O列表的用户输入(例如,利用键盘)是乏味且耗时的,特别是对于复杂的仿真可执行模型。因此,本发明提供了一种用于仿真处理的方法、系统和程序产品。

根据示例性方法,通过数据处理系统来接收包括至少一个条目的数据集,所述至少一个条目通过预定的信号组名称来指定信号组。响应于收到所述数据集,处理所述数据集中的条目,以便标识信号组名称。访问与含有仿真结果的事件跟踪文件相关联的信号组信息,以便确定作为所述信号组的成员的多个信号的信号名称。然后将来自所述事件跟踪文件的与所述多个信号的实例相关联的仿真结果包括在对仿真结果的呈现中。

本发明的所有目的、特征和优点将在下面详细的文字描述中变得显而易见。

附图说明

在所附权利要求中阐明了被认为是本发明的特性的新颖的特征。然而,当结合附图阅读的时候,通过参照下面对说明性实施例的详细描述,将最好地理解本发明本身以及优选的使用方式及其进一步的目的和优点,在附图中:

图1是依照本发明的数据处理系统的图形表示;

图2描绘了图1所说明的数据处理系统的代表性硬件环境;

图3A是依照本发明的教导说明了数字设计实体的简化框图;

图3B是依照本发明的教导描绘了仿真模型的图形表示;

图3C是依照本发明的教导说明了模型构建过程的流程图;

图3D是依照本发明的教导描绘了表示设计的仿真模型数据结构的框图;

图4是描绘了仿真可执行模型的仿真以及向用户呈现仿真结果的流程图;

图5A描绘了依照现有技术的第一常规I/O列表;

图5B描绘了依照现有技术的第二常规I/O列表;

图5C-5D说明了依照本发明的示例性I/O列表;

图6A依照本发明描绘了包括信号组描述符的示例性设计实体HDL文件;

图6B依照本发明说明了包括嵌套信号组描述符的示例性设计实体HDL文件;以及

图7A-7C共同形成了依照本发明的示例性过程的高级逻辑流程图,AET观测器由此处理I/O列表以便生成对AET文件的呈现。

具体实施方式

现在参照附图,并且特别参照图1,其中描绘了数据处理系统10的图形表示,借此可以有利地利用本发明。如图所示,数据处理系统10包括一个或多个节点13与之相连的工作站12。工作站12优选地包括高性能的多处理器计算机,例如可从纽约Armonk的国际商业机器(IBM)公司获得的计算机系统的POWER系列之一。工作站12优选地包括非易失性和易失性内部存储器,用于存储包括ECAD系统的软件应用,依照本发明的方法和系统,其可以被用于开发和检验数字电路设计。如图所示,节点13包括显示设备14、键盘16和鼠标20。在工作站12内执行的ECAD软件应用优选地在显示设备14的显示屏22内显示图形用户接口(GUI),由此,数字电路设计者可以使用键盘16和鼠标20进行交互。因而,通过利用键盘16和鼠标20输入适当的输入,数字电路设计者能够根据下文进一步描述的方法来开发和检验数据电路设计。

图2是数据处理系统10的较为详细的框图。如图所示,数据处理系统10包括一个或多个中央处理单元(CPU)24(例如常规的微处理器),以及通过系统互连26而相互连接的多个其它组件。尽管图2中未示出,然而诸如CPU 24这样的CPU通常包括控制单元,其在计算机存储器中组织数据和程序存储并且在计算机系统的各个部分之间传送数据和其它信息。CPU通常还包括一个或多个运算逻辑单元,其执行诸如加法、比较、乘法等的算术和逻辑操作。

数据处理系统10进一步包括随机访问存储器(RAM)28,只读存储器(ROM)30、支持连接显示设备14的显示适配器32,以及用于连接外围设备(例如盘和带驱动33)的I/O适配器34。数据处理系统10进一步包括用于将数据处理系统10连接到通信网络的通信适配器42以及用于将键盘16、鼠标20、扬声器38、扩音器40和/或其它用户接口设备连接到系统互连26的用户接口适配器36。

如本领域的技术人员将理解的,数据处理系统10在操作系统(例如,AIX)以及一个或多个其它程序的控制下工作,这些程序可以驻留于任何适当的计算机可读介质中,例如RAM 28、ROM 30、磁盘、磁带或光盘(后三者位于盘和带驱动33中)。

所仿真的数字电路设计模型包括至少一个并且通常是多个子单元,下文将其称为设计实体。图3A是其中可以实现本发明的方法和系统的示例性设计实体300的框图表示。设计实体300由多个组件定义:实体名称、实体端口,以及由设计实体300所实现的功能的表示。给定模型内的每个实体都具有唯一的名称(图3A中未明确示出),在每个实体的HDL描述中声明该唯一的名称。此外,每个实体通常含有多个信号互连(被称为端口)以便向实体外部发送信号。这些外部信号可以是整个设计的主要输入/输出(I/O)或整个设计内连接到其它实体的信号。

通常,端口被分类为属于三种截然不同的类型之一:输入端口、输出端口以及双向端口。设计实体300被描绘为具有将信号传送到设计实体300中的多个输入端口303。输入端口303连接至输入信号301。另外,设计实体300包括将信号传送到设计实体300之外的多个输出端口306。输出端口306连接至一组输出信号304。双向端口305被用于将信号传送到设计实体300之内和之外。双向端口305依次连接至一组双向信号309。诸如设计实体300的实体并不需要含有全部三种类型的端口,并且在简并(degenerate)的情况下,根本不含端口。为了实现将实体端口连接到外部信号,利用了映射技术,被称为“端口映射”。端口映射(图3A中未明确示出)由在实体端口名称与实体所连接的外部信号之间的指定对应组成。当构建仿真模型的时候,根据端口映射规范,利用ECAD软件将外部信号连接到实体的适当端口。

最后,设计实体300含有主体部分308,其描述了由设计实体300所实现的一个或多个功能。在数字设计的情况下,除了其它实体的实例化之外,主体部分308还含有存储元件、逻辑门的互连,等等。通过实例化另一实体内的实体,实现整个设计的层次描述。例如,微处理器可以含有相同功能单元的多个实例。如此,微处理器本身将常被建模为单个实体。在微处理器实体内,将存在任何重复的功能实体的多个实例化。

现在参照图3B,其中说明了可以在本发明的优选实施例中利用的示例性仿真模型329的图形表示。仿真模型329包括多个层次设计实体。为了视觉简洁并清楚,互连了仿真模型329内实体的很多端口和信号都未被明确示出。在任何模型中,一个且仅一个实体是所谓的“顶级实体(top-levelentity)”。顶级实体320是涵盖仿真模型329内所有其它实体的实体。也就是说,顶级实体320直接或间接地实例化设计中的所有后辈实体(descendant entities)。仿真模型329是由直接实例化FXU实体321的两个实例321a和321b的顶级实体320组成的。每个实例化均具有关联的描述,其含有实体名称和唯一的实例化名称。对于顶级实体320来说,将描述310标记为“TOP:TOP”。描述310包括实体名称312(其被标记为在冒号之前的“TOP”),并且还包括实例化名称314(其被标记为在冒号之后的“TOP”)。

对于特定实体来说,有可能被多次实例化,如关于FXU实体321的实例化321a和321b所描绘的。实例化321a和321b是FXU实体321的不同实例化,分别具有实例化名称FXU0和FXU1。顶级实体320位于仿真模型329的层次内的最高级别。实例化后辈实体的实体在下文将被称为后辈实体的“先辈(ancestor)”。因此,顶级实体320是直接实例化FXU实体实例化321a和321b的先辈。在仿真模型层级的任何给定级别,所有实例化的实例化名称都必须是唯一的。

在FXU实体321的实例化321a内,分别直接实例化了实体A 325和实体B 326的单个实例实体325a和326a。类似地,相同FXU实体的实例化321b分别含有实体A 325和实体B 326的实例化325b和326b。以类似的方式,实例化326a和实例化326b分别直接将实体C 327的单个实例实例化为实体327a和327b。

假设(不管单个或多重)实例化的所有实体具有唯一的实体名称并且在任何给定层次级别的实例化名称相对彼此而言是唯一的,那么其它实体内的实体嵌套就可以继续达到任意复杂级别。从一个或多个HDL文件构造每个实体,该HDL文件含有描述实体所必需的信息。

与每个实体实例化相关联的是所谓的“实例化标识符”。对于给定实例化的实例化标识符是由从顶级实体实例化名称开始的封闭实体实例化名称所组成的字符串。例如,FXU实体321的实例化321a内的实体C 327的实例化327a的实例化标识符是“TOP.FXU0.B.C”。该标识符用于唯一标识仿真模型内的每个实例化。

在示例性仿真模型329内,各种信号被实例化(例如,信号E、F0、F1、G、H0、H1、L、M、N、P和Q)。每个信号均具有关联的信号名称(例如,“M”)和信号实例化标识符,在优选实施例中,其是由开始于顶级实体实例化名称并且终止于该信号名称的封闭实体实例化名称所组成的字符串。因而,FXU实体321的实例化321a内的信号M的实例化标识符是“TOP.FXU0.A.M”。该实例化标识符用于唯一标识仿真模型内的每个信号实例化。应当注意到,信号(例如,信号P(0..4))可以是多比特信号向量。还应当注意到,一些信号(例如,信号TOP.FXU0.E、TOP.FXU1.E、TOP.FXU0.G和TOP.FXU1.G)当它们跨设计实体边界时被重新命名(分别为信号TOP.FXU0.F0、TOP.FXU1.F1、TOP.FXU0.H0和TOP.FXU1.H1)。

现在参照图3C,其中描绘了可以在本发明的优选实施例中实现的模型构建过程的流程图。该过程开始于一个或多个设计实体HDL源代码文件340以及可能的一个或多个设计实体中间格式文件345,下文称其为“原型文件(proto file)”345,其可从HDL编译器342先前的运行中获得。HDL编译器342处理HDL文件340,开始于仿真模型的顶级实体,并且以递归方式前行通过描述了整个仿真模型的所有HDL或原型文件。

在编译过程期间对于每个HDL文件340来说,HDL编译器342检查原型文件345以确定先前编译的原型文件是否可用和一致。如果这样的文件可用并且一致,则HDL编译器342将不重新编译该特定文件,而是将参考现存的原型文件。如果没有这样的原型文件可用或原型文件不一致,则HDL编译器342明确地重新编译所考虑的HDL文件340并且创建原型文件344用于后续编译。这样的过程在下文中被称为“增式编译(incremental complilation)”并且可以极大加速创建仿真可执行模型348的过程。一旦被HDL编译器342创建,原型文件344就可用,以便充当后续编译中的原型文件345。

除了原型文件344之外,HDL编译器342还在计算机系统10的存储器44中创建两套数据结构,设计实体原型数据结构341和设计实体实例数据结构343。设计实体原型数据结构341和设计实体实例数据结构343充当仿真可执行模型348的内容的存储图像。数据结构341和343通过存储器44被传递到模型构建工具346,该模型构建工具346将数据结构341和343处理到仿真可执行模型348中。

下文将假设每个实体都通过单个HDL文件来描述。根据惯例或用以实施本发明的特定HDL,可以要求该限制。然而,在特定情况下或对于特定HDL来说,有可能通过利用超过一个的HDL文件来描述实体。本领域的技术人员将意识并理解到,如果允许由多个HDL文件来描述实体,则有必要进行扩展以实施本发明。此外,对于每个实体,假设在实体名称与以下二者之间有直接对应:表示实体的HDL文件的名称,以及用于实体的原型文件的名称。

在下面的描述中,将以尾随“.vhdl”的实体名称来指代对应于给定实体的HDL源代码文件。例如,描述顶级实体320的HDL源代码文件将被称为TOP.vhdl。这种标记约定仅用作记法方便而不应当被解释成将本发明的适用范围限制于除了VHDL之外的HDL。

返回附图3B,可以看出每个实体都可以直接或间接地实例化一个或多个其它实体。例如,FXU实体直接实例化A实体325和B实体326。此外,B实体326直接实例化C实体327。因此,FXU实体321直接或间接地实例化A实体325、B实体326和C实体327。由另一实体直接或间接实例化的那些实体在下文中将被称为“后辈”。顶级实体320的后辈是FXU实体321、A实体325、B实体326和C实体327。可以看出每个实体均具有唯一的一组后辈并且每次实例化一实体,就创建该实体及其后辈的唯一实例。在仿真模型329中,FXU实体321被顶级实体320实例化两次,FXU:FXU0 321a和FXU:FXU1 321b。FXU实体321的每个实例化均创建FXU、A、B和C实体的唯一一组实例。

对于每个实体来说,有可能定义被称为“资料清单(bill-of-materials)”或BOM的内容。BOM是具有实体本身以及实体后辈的日期和时间戳的HDL文件列表。再次参照图3C,在编译实体之后,用于实体的BOM被存储在原型文件344中。因此,当HDL编译器342编译HDL文件340中的特定HDL源代码文件的时候,生成包括BOM的原型文件344,该BOM列出了构成实体以及实体后辈(如果有的话)的HDL文件340。BOM还含有当HDL文件正被编译的时候在计算机系统10的盘/带33上相应出现时所参考的每个HDL文件的日期和时间戳。

如果随后改变了构成实体或实体后辈的任何HDL文件,则原型文件344将被标记为不一致,并且HDL编译器342在后续重新编译时将重新编译HDL文件340,如下面较为详细描述的。例如,返回图3B,FXU实体321的BOM所参考的HDL文件是FXU.vhdl、A.vhdl、B.vhdl和C.vhdl,其各自具有适当的日期和时间戳。顶级实体320的BOM所参考的文件是具有适当日期和时间戳的TOP.vhdl、FXU.vhdl、A.vhdl、B.vhdl、C.vhdl和FPU.vhdl。

返回图3C,HDL编译器342在计算机系统10的主存储器44中创建仿真模型的结构的图像。该存储图像由下列组件组成:“原型”数据结构341和“实例”数据结构343。原型是这样的数据结构,即对于模型中的每个实体来说,其含有与实体的端口、实体的正文内容以及直接被该实体所实例化的其它实体的一系列参考有关的信息(在下文中,术语“原型”将被用于指代上述内存数据结构,并且术语“原型文件”将被用于描述中间格式文件344)。因此,原型文件344是由HDL编译器342所产生的内存原型数据结构的盘式表示(on-disk representation)。

实例数据结构是这样的数据结构,即对于模型内实体的每个实例来说,其含有实例的实例名称、实例所参考的实体的名称,以及将实体与外部信号互连所必需的端口映射信息。在编译期间,每个实体将仅具有一种原型数据结构,然而,在实体具有多重实例化的情况下,每个实体可以具有一个或多个实例数据结构。

为了有效地增式编译模型,HDL编译器342遵循编译的递归方法,在该方法中,考虑并从原型文件345加载模型的连续实体(如果这样的文件可用并且与构成那些实体及其后辈的HDL源文件一致的话)。对于不能够从现有原型文件345加载的每个实体来说,HDL编译器342递归地检查实体的后辈,加载可从原型文件345获得的那些后辈实体,并且根据需要创建与原型文件345不一致的用于那些后辈的原型文件344。下面示出了HDL编译器342的主控制循环的伪代码(伪代码右侧的行号并不是伪代码的一部分,而仅仅用作注释方便)。

process_HDL_file(file)                                        5

{                                                             10

      if(NOT proto_loaded(file)){                             15

           if(exists_proto_file(file)AND check_bom(file)){    20

                  load_proto(file);                          25

           }else{                                             30

                  parse_HDL_file(file)                        35

                  for(all instances in file){                 40

                          process_HDL_file(instance);        45

                  }                                           50

                  create_proto(file);                        55

                  write_proto_file(file);                    60

           }                                                  65

      }                                                       70

      create_instance(file):                                  75

}                                                             80

当初始调用编译器342的时候,计算机系统10的存储器44中并不存在原型数据结构341或实例数据结构343。主控制循环(例程process_HDL_file()(行5))被调用并且借助于参数“file”传递顶级实体的名称。算法首先确定是否借助于例程proto_loaded()(行15)而在存储器44中呈现用于当前实体的原型数据结构。要注意,顶级实体的原型数据结构绝不会出现在存储器中,因为该过程是在没有任何原型数据结构被加载到存储器44中的情况下开始的。如果存储器44中存在匹配的原型数据结构,则根据需要通过例程creat_instance()(行75)在存储器44中创建用于当前实体以及当前实体的后辈(如果有的话)的实例数据结构。

然而,如果存储器44中并没有匹配的原型数据结构,则控制转到行20,例程exists_proto_file()在那里检查原型文件345以便确定是否存在用于实体的原型文件。当且仅当存在匹配原型文件的时候,调用例程check_bom()以便确定原型文件345是否一致。为了确定原型文件是否一致,检查原型文件的BOM。例程check_bom()检查BOM中所列出的每个HDL源代码文件,以便确定HDL源代码文件的日期或时间戳是否已经改变或者是否已经删除了HDL源代码文件。如果BOM中任何文件发生这两种情况中的任何一种,则原型文件是不一致的并且例程check_bom()失败。然而,如果check_bom()成功,则控制转到行25,在那里例程load_proto()将原型文件和任何后辈原型文件加载到存储器44中,从而创建当前实体以及当前实体的后辈(如果有的话)的原型数据结构341。process_HDL_file()的构建确保了一旦已经检验出原型文件是一致的,则其所有的后辈原型文件(如果有的话)也是一致的。

如果原型文件不存在或不一致,则控制转到行35,在那里例程parse_HDL_file()加载当前实体的HDL源代码文件。例程parse_HDL_file()(行35)检查HDL源代码文件的语法正确性,并且确定后辈实体(如果有的话)被当前实体实例化。行40、45和50构成循环,其中例程process_HDL_file()被递归调用以便处理当前实体所调用的后辈实体。该过程以深度优先的方式递归重复遍历当前实体的所有后辈,从而创建当前实体的所有后辈的原型数据结构341和原型数据文件344。一旦处理了后辈实体,控制就转到行55,在那里通过例程create_proto()来在存储器44中为当前实体创建新的原型数据结构。然后控制转到行60,在那里通过例程write_proto_file()将新的原型文件344(包括关联的BOM)写入盘33。最后,控制转到行75,在那里例程create_instance()根据需要创建当前实体以及任何后辈实体的实例数据结构343。以这样的方式,process_HDL_file()(行5)递归处理整个仿真模型,从而创建由原型数据结构341和实例数据结构343组成的模型的内存图像。

如图3C中所进一步示出的,本发明进一步允许设计者在设计实体HDL文件340内包括一个或多个信号组指令350,其标识当观测仿真可执行模型348的仿真结果时很可能感兴趣的特定信号。下面参照图6A-6B描述信号组指令350的示例性语义学。除了上述处理之外,HDL编译器342还优选地处理信号组指令350,以便生成信号组信息(SGI)400,其利用任何方便的数据结构(例如,链接列表、表格等)来表示感兴趣的信号的信号实例化标识符。模型构建工具346然后视情况利用一些另外的格式转换将信号组信息(SGI)400放置到仿真可执行模型348内。

现在参照图3D,其中描绘了表示所编译的数据结构的框图,其可以在本发明的优选实施例中实现。存储器44含有原型数据结构361,分别用于仿真模型329中所参考的每个实体。另外,通过实例数据结构362来表示仿真模型329中的实例化。借助于指示仿真模型329内实体的实例化的层次性质的指针来连接实例数据结构362。最后,存储器44含有SGI 400。图3C中的模型构建工具346将存储器44的内容处理到存储器数据结构中,以便产生仿真可执行模型348。

现在参照图4,其中描绘了依照本发明用于仿真设计并观测仿真结果的过程的流程图。如图所示,一旦已经通过图3C的过程获得了仿真可执行模型348,就利用软件和/或硬件仿真器404来在测试用例402的情况下仿真仿真可执行模型348,以便仿真数字设计的操作。在仿真期间,所有事件跟踪(AET)文件406记录表示仿真可执行模型348对测试用例402的响应的数据。AET文件406内的数据包括仿真可执行模型348内随时间的各种信号和/或存储元件的值以及SGI 400。

为了回顾AET文件406的内容,用户通常采用单独的或集成的观测器程序,在此被称为AET观测器410。例如,用户可以请求AET观测器410以图形格式在显示器屏幕22内或以硬拷贝格式呈现来自AET文件406的数据。如上所述,通过在感兴趣的信号的数据集(在此称为I/O列表408)中指定,用户可以将AET观测器410所呈现的数据有利地限制于特定的感兴趣的信号。

如图5A所示,依照现有技术的常规I/O列表500是含有大量条目的列表,每个条目阐明了感兴趣的信号之一的信号实例化标识符,在这种情况下其包括图3B的FXU实例化312a内的所有信号。因而,如将从图5A中给出的简化例子可以理解的,在现有技术中,用户必须利用键盘16输入潜在的大量信号实例化标识符中的每一个。这种手动键盘输入信号实例化标识符的常规技术是乏味并且容易出错的。

另外,一些仿真器404并不保护后辈设计实体中跨设计实体边界进入较高级别设计实体的信号的信号名称。相反,为了消除AET文件中的信号重复,这样的仿真器404仅在AET文件中通过信号在其所出现的最高级别设计实体中的信号名称来标识该信号。因此,如果采用了并不保护信号名称的仿真器404,则用户必须利用这样的信号实例化标识符来指定I/O列表500内的信号,即该信号实例化标识符采用来自信号所出现在的最高级别设计实体的信号的信号名称。例如,通过将图5A的条目502与图5B的I/O列表500’的对应条目504进行比较可以看出,并不保护信号名称的仿真器404的用户必须利用如参考标号504所示的信号实例化标识符F0,而不是如参考标号502所示的信号实例化标识符FXU.E。可以理解,对于其工作主要是关于后辈设计实体的AET观测器410的用户来说,可能难以确定或轻易回想起对用户所熟悉的较低级别设计实体进行实例化的较高级别设计实体中所利用的信号名称。

代替常规的I/O列表500或500’,依照图5C,本发明允许AET观测器410的用户利用一个或多个改进的I/O列表408替换对来自AET文件406的数据的过滤呈现。如图5C所示,I/O列表408是含有一个或多个条目的列表。除了如图5A或5B所示的含有常规信号实例化标识符的零个或多个条目之外,I/O列表408的条目(例如条目510)可以通过对应于SGI400内的信息的信号组实例化标识符来标识具有一个或多个感兴趣的信号的一组信号。

如图所示,信号组实例化标识符以类似于信号实例化标识符的方式而形成,并且由封闭实体实例化名称的字符串组成,该封闭实体实例化名称的字符串开始于顶级实体实例化名称并且终止于由一对尖括号(“<”和“>”)所封闭的信号组名称,这一对尖括号指示括号内的内容是单独的信号组名称空间(namespace)的成员。因而,FXU实体实例化321a内六个感兴趣的信号可以通过单个条目“FXU0.<FXU_Group>”来简单标识,而不是通过将信号实例化标识符单独输入I/O列表408中。如上所述,利用设计实体HDL文件340内的信号组指令350来指定包括信号组FXU_Group的各个信号。

现在参照图6A,其中说明了依照本发明的设计实体HDL文件340a的示例性实施例。如本领域的技术人员应当理解的,设计实体HDL文件340a包括描述设计实体(在这种情况下其是设计实体FXU 321)的常规HDL源代码。常规HDL源代码包括端口映射600以及信号赋值语句602。另外,设计实体HDL文件340a依照本发明包括含有信号组指令350(图3C)的非常规HDL注释。

在设计实体HDL文件340a中,信号组指令350包括两种不同类型的信号组指令:信号组声明610和信号保护指令620。信号组声明610开始于“--!!Signal Group signal_roup_name;”形式的HDL注释,并且结束于“--!!End Signal Group signal_group_name;”形式的HDL注释,其中signal_group_name是对于给定目标设计实体来说唯一的信号组名称(在该例中是FXU_Group)。在信号组声明610的开始和结束语句之间,通过AET观测器410将一个或多个感兴趣的信号的信号名称以所期望的呈现顺序列出。在该实施例中,相对于目标设计实体(例如,FXU设计实体321)指定信号名称。本发明的至少一些实施例允许利用常规语法“..”来相对于目标设计实体指定设计实体层次中较高的信号名称,以便指示层次中的下一较高级别。

优选地允许用户进一步指定与信号组声明610内的信号呈现相关的附加属性。例如,用户可以指定所期望的信号颜色、波形或二进制信号表示的缺省值、所期望的对于非对齐比特向量的对齐,等等。因而,在信号组声明610的语句612中,用户已经指定左对齐5比特信号向量B.C.P(0..4)。

如图6B的设计实体HDL文件340b所进一步描绘的,诸如信号组声明630这样的信号组声明还优选地允许用户指定嵌套信号组到任何合法深度。为了指定包括一部分较大信号组的嵌套信号组,用户只是在信号组声明中包括语句,其对于尖括号(即,“<”和“>”)中所封闭的信号组引用嵌套信号组的实例化标识符。使用尖括号允许HDL编译器342在信号的名称空间与信号组名称之间进行区分。

重新参照图6A,利用信号保护指令620来向仿真器404指示:缺省地并不保护重新命名的信号的较低级别信号名称,这么做是为了特定的重新命名的信号(例如,信号G)。因而,假设仿真器404缺省地并不保护重新命名的信号的较低级别名称,AET文件406将含有信号实例化标识符TOP.FXU0.G和TOP.FXU1.G的数据。如以上参照图5B所讨论的,保护熟悉的信号名称的能力不需要用户向I/O列表输入可能不熟悉的信号实例化标识符TOP.FXU1.H0和TOP.FXU1.H1来观测所保护的信号G的信号数据。

现在参照图7A-7C,其中描绘了依照本发明的示例性过程的高级逻辑流程图,AET观测器410由此来处理I/O列表408。作为逻辑流程图,从逻辑上而不是按顺序描绘了操作,并且很多所说明的操作都可以并行或以替代顺序实现。

如图所示,该过程开始于图7A的块700,并且然后前进到块702,其说明了确定用户是否已经输入I/O列表408的参考范围,也就是说,将参照其来解析所有其它I/O列表条目的仿真可执行模型348的范围。缺省地,参考范围是仿真可执行模型348中的顶级设计实体实例,例如,图3B中的顶级设计实体实例320。在一个实施例中,允许用户输入“Scopelimit:instance_string0.[design_entity].instance_string1”形式的进一步限制参考范围的命令,其中instance_string0和instance_string1是任选的设计实体实例字符串(对于instance_string0来说,开始于顶级设计实体实例),并且方括号中的design_entity是任选的设计实体名称。合法的参考范围命令包括三个任选字段instance_string0、[design_entity]和instance_string1中的至少一个。参考范围命令可以与AET观测器410进行通信,例如,通过命令行或在I/O列表408内。如果插入I/O列表408中,则参考范围命令优选地应用于该I/O列表408中的所有条目。

如块702所示,如果用户还未输入不同的参考范围,则AET观测器410将参考范围缺省地设置成仿真可执行模型348的顶级设计实体实例,如块704所示。此后,该过程通过页面连接符A到图7B。如果在块702处AET观测器410确定用户已经输入了不同的参考范围,则AET观测器410进一步解析该参考范围命令,以便在块710处确定该参考范围命令是否含有括号中的语法(例如,[design_entity])。如果没有,则该过程前进到块713,其说明了AET观测器410确定由参考范围命令所指定的设计实体实例是否存在于仿真可执行模型348中。如果不存在,则处理在块715处出错终止。如果存在,则该过程从块713转到块720,其描绘了AET观测器410将参考范围设置成参考范围命令的instance_string0字段内所指定的特定设计实体实例。例如,假设图3B的仿真可执行模型329,参考范围命令“Scope limit:TOP.FXU0”将参考范围设置成FXU设计实体321的实例321a。在该参考范围情况下,可以将图5C的I/O列表408的条目510简化为<FXU_Group>。此后,该过程通过页面连接符A到图7B。

返回块710,响应于确定参考范围命令采用了括号中的语法,在块712处,AET观测器410接着确定所命名的设计实体是否存在于仿真可执行模型348中。如果不存在,则处理在块714处出错结束。然而,如果指定的设计实体存在于仿真可执行模型348中,则AET观测器410递归地搜索仿真可执行模型348,以便标识由instance_string0所定义的存在于仿真可执行模型348部分内的设计实体的所有实例(如果存在的话)。如块718处所示,如果在指定范围内不存在指定设计实体的任何实例,则处理在块714处出错终止。如果在块718处AET观测器410确定所指定的设计实体的至少一个实例位于指定范围内,则在块722处AET观测器410进一步确定在指定范围内是否仅发现设计实体的单个实例。如果是的话,则该过程转到块720,其说明了AET观测器410将设计实体的此单个实例设置为参考范围。此后,该过程通过页面连接符A到图7B。

如果在块722处AET观测器410确定在指定范围内发现指定设计实体的超过一个的实例,则AET观测器410将设计实体实例的列表呈现给用户进行选择,例如,通过在显示器屏幕22内显示的图形菜单(块724)。然后,AET观测器410接收用户输入,其在定义所期望的参考范围时指定多个设计实体实例中的单个设计实体实例,如块726所示。例如,假设图3B的仿真可执行模型329和图5D的I/O列表408’,在图5D的参考标号512处所给出的参考范围命令“Scope limit:[FXU]”将使得AET观测器410将FXU实例321a和321b定位于仿真可执行模型329内,并且向用户呈现实例321a和321b的实例标识符用于选择。有利地,不管FXU实例321a和321b中的哪一个是感兴趣的并且因此被用户选择,信号组都可以被指定为<FXU_Group>,如图5D的I/O列表408’的条目512中所示。此后,该过程转到已经描述过的块720。

现在参照图7B,该过程开始于页面连接符A,并且然后前进到块730,其表示这样的处理循环,即AET观测器410借此来处理一个或多个I/O列表408内的每个条目以构造对AET文件406的呈现。如果在块730处AET观测器410确定I/O列表内的所有条目都已经被处理,则该过程转到下面所描述的块732。然而,如果I/O列表408内的至少一个条目尚未被处理,则该过程前进到块740,其描绘了AET观测器410移至I/O列表408内的第一或下一信号标识条目,并且将该条目的工作范围初始化成参考范围。相对于参考范围(即,按照参考范围所隐含限制的)来处理I/O列表408内的信号标识条目,并且信号标识条目采用一般形式:

instance_string2.[design_entity*].instance_string3.signals

其中:

instance_string2和instance_string3是任选的设计实体实例字符串;

方括号(即,“[”和“]”)中所封闭的design_entity是任选的设计实体名称;

*是任选的通用操作符,其指示指定范围内所有的design_entity实例;以及

signals是所要求的参数,其指定信号名称、尖括号(即,“<”和“>”)中所封闭的信号组名称,或者空的尖括号(其表示指定范围内的所有信号组)。

图7B中所示的过程从块740前进到块742,其描绘了AET观测器410确定当前信号标识条目是否具有前导设计实体实例限定符(例如,instance_string2)。如果没有,则该过程转到下文所描述的块752。如果有,则该过程从块742前进到块744,其说明了AET观测器410确定所指定的设计实体实例是否存在于仿真可执行模型348的参考范围内。如果不是,则处理在块746处出错终止。如果是,则该过程前进到块750。块750说明了AET观测器410将当前范围设置成通过将设计实体实例限定符所定义的范围附加到参考范围而形成的范围。接着,在块752处AET观测器410确定I/O列表408的信号标识条目内的下一字段是否是方括号中所封闭的design_entity限定符。如果不是,则该过程通过页面连接符B到图7C。如果是的话,则信号标识条目的处理在块754处继续。

块754示出了AET观测器410递归搜索仿真可执行模型348以便在当前范围内定位具有与指定设计实体名称相匹配的实体名称的所有设计实体实例。然后在块756处,AET观测器410确定是否存在任何这样的设计实体实例。如果没有,则处理在出错条件下于块746处结束。如果存在,则在块760处,AET观测器410进一步确定括号中的语法是否含有表示包括指定范围内所有设计实体实例的星号。如果有的话,则AET观测器410将该条目的工作范围缩窄到在块754处所定位的一个或多个设计实体实例(块761)。此后,该过程通过页面连接符B转到图7C。

返回到块760,响应于否定的确定,该过程前进到块762,其说明了AET观测器410确定是否在块754处发现单个设计实体实例。如果发现,则在块764处将工作范围设置成该单个设计实体实例。此后,该过程通过页面连接符B转到图7C。另一方面,如果在块762处AET观测器410确定在块754处发现超过一个的设计实体实例,则AET观测器410向用户呈现设计实体实例的列表以便选择,例如,通过在显示器屏幕22内所显示的图形菜单(块770)。然后,AET观测器410接收用户输入,其在定义所期望的工作范围时指定多个设计实体实例中的一个或多个设计实体实例,如块772中所示。此后,该过程转到块764,其描绘了AET观测器410依照用户的选择而建立一个或多个工作范围。此后,该过程通过页面连接符B转到图7C。

现在参照图7C,该过程开始于页面连接符B,并且然后前进到块774,其描绘了AET观测器410进一步解析信号标识条目,以便确定该条目是否含有更多的实例限定符(例如,instance_string3)来限制工作范围。如果没有,则该过程转到下面所描述的块780。如果有,则在块776处AET观测器410确定是否存在指定的设计实体实例。如果不存在,则该过程在块786处出错结束。如果指定的设计实体实例存在,则AET观测器410将当前信号标识条目的工作范围缩窄到第二实例限定符所指示的设计实体实例(块778)。此后,该过程转到块780。

块780描绘了AET观测器410进一步解析I/O列表408的信号标识条目以便确定该条目的终止signals(信号)字段是否含有单个信号名称或信号组名称。如果signals字段含有信号名称,则在块781处AET观测器410接着确定在工作范围内是否存在指定信号。如果不存在,则处理在出错条件下于块786处终止。如果在块781处AET观测器410确定在工作范围内是否存在指定信号。如果不存在,则处理在出错条件下于块786处终止。如果存在,则AET观测器410将指定信号添加到对AET文件406的呈现中(块782)。此后,该过程通过页面连接符C返回到图7B中的块730。

再次参照块780,响应于确定信号标识条目的signals字段不含信号名称,则该过程转到块783,其描绘了AET观测器410确定signals字段是否含有空的尖括号。如果含有,则AET观测器410在工作范围内的设计实体实例中递归定位所有的信号组实例,如块784处所示。如果在块785处AET观测器确定不存在,则处理在块786处出错终止。另一方面,如果在块785处,AET观测器410确定有一个或多个信号组出现,则在块790处,AET观测器410确定包括来自SGI 400的信号组的各个信号并且将所有这样的信号添加到呈现中。此后,该过程通过页面连接符C返回到图7B。

返回块783,如果AET观测器410确定I/O列表408的信号标识条目的signals字段不含空的尖括号,而是指定了尖括号内的信号组名称,则该过程转到块787。块787说明了AET观测器410在工作范围内的设计实体实例中递归定位指定信号组实例的实例。如块788所表示的,如果没有信号组实例被定位,则处理在出错条件下于块786处结束。可选地,如果所命名的信号组中的至少一个实例被定位,则处理前进到块790以及已经作过描述的后续块。

如前所述,本发明提供了一种处理用于呈现的仿真结果的方法、系统和程序产品。依照本发明,通过使用预先确定的信号组以及视情况使用范围命令,充分降低了过滤仿真结果呈现所要求的用户输入量。另外,通过支持信号保护指令,增强了对仿真结果的轻松理解,其中信号保护指令使得设计者能够指定这样的信号,即在出现信号重新命名时将保护该信号的信号名称。

虽然如参照优选实施例所描述的,已经特别示出了本发明,但是本领域的技术人员应当理解,在不背离本发明的精神和范围的情况下,可以对其进行各种形式和细节的改变。例如,可以利用驻留在如图1和图2中所述的通常配置的一个或多个计算机系统的随机访问存储器28或非易失性存储器中的程序代码来实现本发明的实施例之一。直到计算机系统10要求的时候,程序代码集可以被存储在另外的计算机可读存储设备中,例如盘驱动33或CD-ROM,或者在另外的计算机的数据存储器中,并且当用户希望的时候通过局域网或广域网(例如因特网)传输该程序代码集。计算机可用介质中所含的程序代码可以被称为计算机程序产品。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号