CN1885295A - 使用逻辑单元建置集成电路 - Google Patents

使用逻辑单元建置集成电路 Download PDF

Info

Publication number
CN1885295A
CN1885295A CNA2006100864377A CN200610086437A CN1885295A CN 1885295 A CN1885295 A CN 1885295A CN A2006100864377 A CNA2006100864377 A CN A2006100864377A CN 200610086437 A CN200610086437 A CN 200610086437A CN 1885295 A CN1885295 A CN 1885295A
Authority
CN
China
Prior art keywords
model
integrated circuit
plu
produce
clu
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
Application number
CNA2006100864377A
Other languages
English (en)
Other versions
CN1885295B (zh
Inventor
罗伯特·A·阿尔菲里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US11/158,180 external-priority patent/US7483823B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN1885295A publication Critical patent/CN1885295A/zh
Application granted granted Critical
Publication of CN1885295B publication Critical patent/CN1885295B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明描述了使用高级语言设计并产生集成电路的系统和方法。高级语言用于产生性能模型、功能模型、定义集成电路的可合成寄存器传输级代码,和验证环境。高级语言可用于产生用于特定用户确定功能的定制计算逻辑单元的模板。高级语言和编译程序允许功率节省和定制电路布局的优化,从而使得集成电路的功耗具有改良的每瓦特性能。

Description

使用逻辑单元建置集成电路
技术领域
本发明的实施例大体涉及集成电路的计算机辅助设计,且更具体而言,本发明的实施例涉及从通用数据库中产生多种模型。
背景技术
常规的集成电路计算机辅助设计使用不同的代码数据库来产生集成电路的多种模型。需要花费许多人工和机器时间来验证不同的模型是否正确。举例而言,用于定义功能需求的集成电路的架构模型般由一工程组编写。接着,一般由另一工程组编写产生集成电路的寄存器传输级(RTL)模型,且相对于架构模型验证RTL模型的功能。也可开发集成电路的周期精确性能模型来调整架构模型和RTL模型。因为使用不同语言开发每一模型,所以每一模型的验证实质上是确保所制造的集成电路功能适当。然而,每一模型的验证也是耗时的,例如,一般需要编写验证测试平台和测试,以及形式验证测试平台和断言。
因此,需要可用于产生可产生集成电路的多种模型的通用数据库的高级语言。
发明内容
本发明设计用于设计并产生集成电路的新系统和方法。高级语言用于建置一集成电路,包括产生性能模拟、功能模型、定义集成电路的可合成RTL代码,和验证环境。高级语言或高级语言的子语言可用于产生用于特定功能的定制计算逻辑单元的模板。高级语言和编译程序允许功率节省和定制电路布局的优化,从而使得集成电路的功耗具有改良的每瓦特性能。
用于设计集成电路的本发明的方法的多种实施例,包括根据用高级语言编写的源代码产生表示集成电路的通用数据库。高级语言用于指定可编程逻辑单元,其中可编程逻辑单元的完整表示包括在通用数据库中。产生由可编程逻辑单元中的一者指定的模板以用于用高级语言或子语言编写的可定制逻辑单元,其中所述模板包括与可定制逻辑单元相连接的接口的表示。优化表示集成电路的通用数据库的一部分以产生特定目标树,其中特定目标树对应于集成电路的多种目标模型中的至少一者,且包括可定制逻辑单元的表示。
本发明的多种实施例包括计算机可读媒体,其用于存储用于使得计算装置产生集成电路的多种最终目标模型的指令。计算机可读媒体包括一第一指令集、一第二指令集和一第三指令集。当执行第一指令集时,所述第一指令集根据用高级语言编写的源代码产生表示集成电路的通用数据库的第一部分,其中所述第一指令集指定可编程逻辑单元。当执行第二指令集时,所述第二指令集根据用高级语言编写的源代码产生表示集成电路的通用数据库的第二部分,其中所述第二指令集指定可定制逻辑单元。当执行第三指令集时,所述第三指令集优化表示集成电路的通用数据库的一部分一产生特定目标树,其中所述特定目标树对应于集成电路的多种最终目标模型的至少一者。
附图说明
因此,通过参考实施例,可详细理解本发明的上述特征的方式、本发明的更特定描述、上文的简要概述,所述实施例中的一些特点在附图中说明。然而应注意,附加的图式仅用来说明本发明的典型实施例,且并不因此而认为是对本发明范畴的限制,因为本发明可允许扩展到其它均等有效实施例。
图1A说明根据本发明的一个或一个以上方面使用高级语言产生集成电路的多种特定模型的例示性方法的流程图。
图1B说明当根据本发明的一个或一个以上方面执行展示于图1A中的方法步骤时,由高级语言产生以产生集成电路的多种特定模型的系统组件。
图1C是根据本发明的一个或一个以上方面以高级语言表示的例示性逻辑单元的图示。
图2说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤105的例示性方法的流程图。
图3A说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤110的例示性方法的流程图。
图3B、3C和3D说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤115以产生RTree的例示性方法的流程图。
图4A和4B说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤115以产生最终目标模型的例示性方法的流程图。
图4C、4D、4E和4F说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤125以产生最终目标模型的例示性方法的流程图。
图5是根据本发明的一个或一个以上方面的计算系统的方框图。
具体实施方式
在以下描述中,陈述大量特定细节以便提供对本发明的更为全面的理解。然而,所属领域的技术人员应清楚,在缺少一个或一个以上此类特定细节的情况下,仍可实施本发明。已在其它实例中描述了熟知的特征,以避免本发明不清晰。
                       建置集成电路的高级语言
有一种高级的新式语言可以产生集成电路的大部分,包括集成电路的各种模型,例如性能模型、功能模型、仿真模型。在进行编译时,高级语言产生结构树(ATree),结构树是可产生MTree和RTree等其它树的语义装饰性来源树。MTree是表示集成电路的通用数据库,集成电路的优化程序可用来产生特定的模型,例如性能模拟模型、软件模板和功能模拟环境。在本发明的其它实施例中,MTree不包括详细的时序信息,尽管MTree可包括例如状态机等时间排序相关性。RTree是从MTree产生的通用数据库。
与MTree不同,RTree是时序精确的,且其包括基于芯片物理布局的回馈信息。RTree表示集成电路,其优化程序可用来产生特定的模型,例如可合成RTL代码、低功率结构、物理设计平面布置和布局,以及半形式的验证环境。通过使用通用数据库缩短芯片设计时间,来产生芯片的各种不同模型和环境。用以产生ATree、MTree、RTree的优化程序和编译程序可用于产生其它芯片,从而允许编程人员用高级语言快速而高效地编写源代码,从而与不同模型是通过手动产生或使用不同数据库产生的情况相比,将以更大的可靠性和更短的时帧来产生各个芯片。此通用数据库也提供中央存储库用于芯片设计、统一源代码和在单一设计环境内产生的数据库。
图1A说明根据本发明的一个或一个以上方面,使用高级语言产生例如芯片等集成电路的各种特定模型的示范方法的流程图。在步骤100中,使用高级语言编写集成电路源代码。结合图1C描述用于各元件的源代码的实例。
在步骤105中,将源代码解析成使源代码模型化的中间树格式(称为ATree)。结合图2更为详细地描述步骤105。在步骤110中,调用各PLU产生器以将ATree编译成另一中间树的格式(称为MTree),此将结合图3A进行描述。在步骤115中,使用特定目标优化程序以产生优化的MTree,从而产生相应的目标模型,此将结合图4A和图4B进行描述。
在步骤120中,MTree与时序信息组合以产生另一中间树的格式(称为RTree),此将结合图3B进行描述。在步骤125中,特定目标优化程序用于产生优化的RTree,从而产生相应的目标模型,此将结合图4C、4D、4E和4F进行描述。
MTree和RTree的各模型模块、接口和逻辑以及其组合是所需来产生例如模型、模板、环境等所有最终目标的功能的超集。MTree和RTree是用以概述最终目标代码格式的细节的中间代码树。MTree和RTree包括用于建构模块、接口以及模块内的逻辑的实用程序。
与RTree不同,MTree并不包括精确的循环式时序信息,从而简化PLU和CLU产生器,这些产生器用以处理MTree以产生不要求精确的循环式信息的模型和环境。从MTree以及基于来自芯片物理布局的回馈信息的时序信息,产生RTree,其中MTree和时序信息可影响从RTree产生的特定目标模型。例如,当基于芯片布局的时序信息在首次产生RTree的情况下无效时,使用缺省的时序信息产生RTree。或者,替代或除去来自物理布局的回馈信息,可使用用户指定的时序信息和回馈合成信息。
相比较而言,MTree不受芯片物理布局的影响,且因此不接收回馈信息。在步骤120中,调用优化程序来编译部分MTree和RTree,并产生最终的目标。所属领域的技术人员应了解,任何配置来执行图1A的方法步骤的系统及其等效物都落入本发明的范畴。
图1B说明当根据本发明的一个或一个以上方面执行图1A所示的方法步骤时,由高级语言产生来形成集成电路的各种特定模型的系统组件。如先前所述,使用高级语言编写集成电路源代码130。ATree数据库135从源代码130产生。MTree数据库140从ATree数据库135产生。MTree数据库140可包括指回到ATree数据库135的节点中的节点,从而减少冗余度并确保代码在MTree数据库140与ATree数据库135之间的一致性。在本发明的一个实施例中,使用基本C++类实施节点遍历。结合每一个树数据库,使用与其它树数据库中的节点在不同数字的空间内的“节点类别”。所得C++类加强了对特定树的相应节点的遍历。
RTree数据库142从MTree数据库140产生。RTree数据库142可包括指回到MTree数据库140的节点中的节点,从而减少冗余度并确保代码在MTree数据库140与RTree数据库142之间的一致性。特定树和模型145从MTree数据库140和RTree数据库142产生。特定树和模型145的物理布局模型等物理性质可包含在RTree数据库142中,以提高特定树和模型145的性能和/或晶粒面积的结果。
高级语言的特点是,其将范例与计算分开。范例与芯片的基础构造相关,用于数据移动和临时存储等相对一般的函数。各种范例可用于每一特定芯片,且这些范例经常是专门针对每一芯片进行编写的,即使它们与先前芯片中所用的范例大体相同。相比较而言,计算并非一般性的,其时常表示唯一的算法和处理能力。范例可自动从高级语言产生,而计算则可由编程人员编写。在本发明的某些实施例中,高级语言的子语言可用于编写计算或产生器。
从高级语言产生的芯片包括来自两个不同类型的单元,范例逻辑单元(PLU)和计算逻辑单元(CLU)。PLU由高级语言进行指定,且可跨越芯片中的一个或一个以上的功能单元或物理单元。PLU逻辑和相关环境可自动产生,以提供对MTree数据库中的PLU的完整表示。可手动编写CLU,将其插入到自动产生的PLU包覆中,例如CLU模板。CLU通常执行完全定义的函数,且可为数十行的代码。所产生的PLU包覆提供框架和PLU与CLU之间的精确时序。编程人员可编写CLU代码且自动产生用于测试CLU的独立验证环境。所产生的PLU包覆允许在编写特定CLU代码之前,将CLU用于模拟模型中。此外,因为接口协议代码已包括在所产生的PLU包覆中而使得编程人员未编写接口协议代码,所以减少了由编程人员引入的错误。一旦编程人员已验证了CLU代码在所产生的CLU环境中的功能,CLU便将在包括CLU的环境中适当运作。
传统上,芯片设计要求编程人员对被认为会是PLU和CLU的单元进行编码。然而,一旦芯片设计完成,便难以抽取出可供重复使用的类似PLU功能的通用部分,因为代码是被定制来用于混合了类似CLU功能和类似PLU功能的特定设计的。当使用高级语言时,编程人员可集中精力对特定的CLU编码和开发可供重复使用的优化程序,以产生用于CLU的PLU和PLU包覆。
                            计算逻辑单元
CLU的实例包括在一个或一个以上的时钟周期中执行的函数,例如地址翻译程序、判优程序、算法数据路径、数据格式转换程序、有限状态机、多路复用器、数据包扩展器等。CLU通常被一个芯片中的单个单元使用,且通常不可被相同生产线以外的其它芯片重复使用。CLU通常安置于一个布局分区内,且倾向于根据晶粒面积而变得更为紧缩,且因此不会冲击在物理设计期间进行的布局折衷。
CLU的编程人员可验证产生于PLU包覆中的CLU的功能。在某些情况下,CLU的编程人员可使用自检测试以验证CLU。例如,自检测试可用于确保地址翻译程序CLU具有良好的载入平衡而没有混叠现象。类似地,对于数学函数CLU,自检测试可用于确保以最小的舍入误差产生光滑函数。CLU模板在较大的芯片级环境下适当运作,且无需CLU编程人员进行验证。除了指定接口以外,所产生的PLU包覆提供严格的CLU时序框架。在设计过程的早期,CLU模板可结合CLU晶粒面积的估算值一起使用,以开始芯片的物理设计过程。在物理设计期间,将协商时序预算,或在PLU与CLU之间进行时序对面积的权衡。
                      范例逻辑单元
可在芯片的不同部分重复使用PLU,但是PLU通常具有可定制的或可配置的部分,可能在PLU中包括一个或一个以上的CLU。PLU可包含一个或一个以上的接口,且每一接口可传输一个或一个以上类型的数据包。数据包指定PLU或CLU的接口,且稍后翻译成与集成电路中的物理线缆相关的信号。如本文中另外所述,用高级语言定义多周期数据包,并在设计过程中的稍后时间点,专门由PLU和CLU产生器自动分成不同的周期。这项划分最好是基于物理设计信息或用于指定接口带宽值的性能限制来进行。
与CLU不同,PLU通常跨越芯片上的多个物理单元,且可能跨越芯片上的所有物理单元。类似地,PLU通常跨越芯片上的多个布局分区,且因此可能对芯片的布局具有显著的影响。PLU并不常执行函数,但却移动或临时存储接收到的数据包。例如,PLU可执行输入排列、判优、等待时间缓冲、高速缓冲存储、性能统计监视、存储可编程值等。PLU也可采用工业标准接口,诸如PCI-E(外围组件接口总线)等。
优化程序用于基于MTree或RTree的一部分产生PLU。例如,优化程序可由编程人员编写以产生先入先出存储器(FIFO)。例如RTL模型、功能模型(Fmodel)、仿真模型等各类模型可使用优化程序产生。同样,各类环境且尤其是验证环境也可产生。不再是建立验证环境来比较不同模型间的预期结果,所产生的验证环境而是用于验证优化程序适当运作,意即,产生正确的模型以通过建构使得优化程序产生的模型正确。当CLU用于PLU中时,产生可标识数据模式的简单CLU可代替实际的CLU,以验证优化程序产生了PLU。不再是验证每一个特定的PLU,编程人员验证可使用参数进行配置以产生许多不同的PLU的优化程序。例如,FIFO产生优化程序可包括对于多个时钟、各种数据宽度、各种深度、易测性选项等的参数。
由于不确定性,由PLU执行的功能通常比由CLU执行的功能PLU更难以验证。因此,产生PLU,开发出用于若干芯片设计的可重复使用的PLU产生器,而不是手动编写代码来执行类似的功能是有益的。通过减少设计中花费的时间和对手动编写代码的验证,使用PLU产生器来提高效率。
PLU也可得到形式验证,意即,通过插入输入和输出的断言语句,数学上证明RTL模型是正确的,接着,通过形式验证工具,以分段方式运行RTL模型。特别地,PLU的上游部分可在PLU的下游部分之前得到形式验证。PLU的下游部分可使用来自上游部分的输出限制,作为其输入限制。在此形式分段验证中所用的限制可结合PLU的每一部分或结合整个PLU自动产生。
产生器所产生的PLU的通用属性包括复位信号,其于全局范围加以标识且因此被适当地连接到功能和物理复位树。其还可包括空闲信号,表示PLU不处理数据的时间。PLU还可具有多个时钟域,不同的时钟域之间具有适当的异步边界。可基于物理设计限制为每一PLU接口指定或选择各种接口协议。例如,可能的接口协议包括请求/忙碌协议或有效/信用协议。请求/忙碌协议指定PLU提供数据包(request=1),将此数据包在时钟周期内在busy=0时传递到接收器。有效/信用协议指定在将数据包提供给接收器之前,PLU必须自此接收器接收信用。可使用基于物理设计限制所需的高速数据源同步传输,来实施使用有效/信用协议的接口。无论接口是否是数据源同步性的,有效/信用、请求/忙碌等与编程人员无关,因此协议选择通常在芯片的物理设计模型的产生过程中进行,且可基于接口需要穿越芯片的距离。
PLU或CLU输入数据包可置放在一个或一个以上的虚拟通道中,且多线程输入FIFO存储器模型分别由PLU或CLU产生器自动产生。专用槽或共享槽分布的规范可使用高级语言进行编程。对虚拟通道所作的分配例如可基于数据包字段(例如目标分区号)的最低有效位(LSB)而为静态的,或例如可基于存储页面的行和存储体的组合而为动态的。PLU或CLU输入FIFO存储器可根据特定类型的数据包的数量来指定。或者,输入FIFO存储器可基于同步或异步传输等待时间(基于物理设计信息甚至包括中继器(若需要))自动设定大小。回应于输入数据包,PLU或CLU可输出可延迟的、不可延迟的或基于来自CLU的信用信号的输出数据。输入数据包可通过接收的PLU或CLU或存储于存储资源(例如单或多线程FIFO存储器、高速缓冲存储器等)中,被立即消耗掉。或者,输入数据包可经过被配置来在数据存储前执行数据过滤功能的CLU。
高级语言或高级语言的子语言允许在PLU和CLU内指定输入高速缓冲存储器的参数。这些参数可指定(但不限于):(i)相关性,例如直接映射、固定的、全部数目的存储体、分区;(ii)数据一致性机制,例如写回、写经或只读;或(iii)行置换算法,例如最近最少使用(LRU)、最近最少分配(LRA),或使用CLU定制。例如无效策略、写回刷新和置换行或整个高速缓冲存储器等特定操作也可使用参数来指定。高速缓冲存储器标记查找机制可自动产生或使用CLU定制。
如先前所述,PLU产生器可经设计以指定例如PCI-E等工业标准接口。这类PLU产生器也可通过使用如下参数来配置,这些参数用以指定字节组的数目、虚拟通道的数目(无论虚拟通道是否包括读取返回数据重排序)、对虚拟通道的未完成读取的最大数目,或对等重映射寄存器组的数目。也可处理PLU以产生功能模型、性能模型或其它模型。
类似地,可设计PLU产生器,以指定主机接口、存储器接口、存储器管理单元等。可使用如下参数配置主机接口PLU产生器,这些参数用以指定主机处理器读写FIFO存储器的深度、控制寄存器、专用主机处理器写虚拟通道、推进缓冲器的数目、直接内存存取(DMA)引擎的数目,或实体块处理。可使用用以指定存储器配置和存储器类型的参数,来配置用于存储器接口的PLU产生器。可使用如下参数配置用于存储器管理单元的PLU产生器,这些参数用以指定客户端的数目和特定客户端要求,例如每一客户端的未完成请求的最大数目,而无论是否将破坏非对准请求,或无论是否需要为无序返回重新排序缓冲等。
PLU和CLU是可进行环境切换的,其意味在任何时钟周期中可将PLU中的数据扫描到PLU或CLU之中或之外。例如时钟门控等功率节省部件也可包括于PLU和CLU中。性能监视信号也可自动产生以用于PLU和CLU,且可自动投送到功率监视控制单元。在PLU产生器和CLU模板产生器中建构这些部件,以确保与由于编程人员对每一部件的不同解译而易产生错误的手动编写每一PLU相比,这些部件功能对于每一PLU和CLU正确。此外,排程限制经常导致将较小的功率管理最优化包括进来。自动化的芯片建构和功率最优化产生更为有效和可能为较低成本的装置。
                 用高级语言表示的例示性逻辑单元
逻辑单元(LU)包括PLU、CLU和较低阶层LU。其可为其它LU的客户端或服务器。图1C是根据本发明的一个或一个以上的方面,用高级语言表示的例示性逻辑单元Niso_hub 150的图示。Niso_hub 150与10个客户端、FE 155、DA 160、SCC 165、Host195、Cniso 183、Dniso 180、Stream 175、WID 170、MPEG 185和Hostnb 190连接。Niso_hub 150接收nvclk时钟输入。这些客户端是使用高级语言进行定义的逻辑单元。每一客户端接口可包括这些数据包:xx2fb、fb2xx_ack、fb2xx_rdat和fb2xx_flush_resp。本文中存在用以指定这些数据包的异常的机制。表1所示的代码建立了Niso_hub 150的接口。通过说明,使用高级语言来定义代码。然而,可使用其它语言来定义函数。
                            表1
Iu niso_hub:
   clock nvclk
   client fe,da,scc,wid,stream,dniso,cniso,mpeg,hostnb,host:
      request packet xx2fb
      response packet fb2xx_ack
      response packet fb2xx_rdat
      response packet fb2xx_flush_resp
表2所示的代码指定用于Niso_hub 150接口中的xx2fb数据包,其中fb_op_t为所列举的3位字段。最后一列指定数据包的每一字段的位宽,例如op、rd、ctx_dma_idx、adr,subid、wid,sz、alom和wdat。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
                           表2
packet xx2fb:
  ctrl  fb_op_t      op
  ctrl  U            rd                 1
  ctrl  U            ctx_dma_idx        4
  ctrl  U            adr                8
  ctrl  U            subid              8
  ctrl  U            wid                2
  ctrl  U            sz                 5
  ctrl  U            alom               1
  data  U            wdat[!rd*(sz+1)] 256
表3中所示的代码指定用于Niso_hub 150接口中的fb2xx_ack、fb2xx_flush和fb2xx_rdat数据包。这些数据包各回应于xx2fb数据包且定义特定回应。例如,当xx2fb数据包中的op字段与FB_OP_FLUSH匹配,断言fb2xx_flush_resp的flush_completed字段。类似地,当断言xx2fb数据包中的rd字段时,将相应fb2xx_rdat数据包的subid字段设置成等于xx2fb数据包的subid字段,且相应fb2xx_rdat数据包的rdat字段(返回用以读取操作的数据)有sz+1个周期长且每一周期1<<(5+wid)位宽。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
                               表3
packet fb2xx_ack:
    response to xx2fb
           ctrl  U           status       4
packet fb2xx_flush_resp:
    response to xx2fb:
      when op==FB_OP_FLUSH
           ctrl  U           flush_completed 1
packet fb2xx_rdat:
    response to xx2fb:
      when rd
          ctrl  U            subid=xx2fb.subid
          data  U            rdat[xx2fb.sz+1]bits(xx2fb_wdat)
表4中所示的代码指定对于指定用于FE 155的xx2fb数据包接口的异常。例如,xx2fb数据包的op字段可能不具有对应于FB_OP_BIND_PD的列举值,且ctx_dma_idx字段可能仅具有在0与7之间的值(包括0和7)。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
                          表4
for client fe:
  for packet xx2fb:
    assert op !=FB_OP_BIND_PD
    assert ctx_dma_idx in 0..7
表5中所示的代码指定fb2xx_flush_resp数据包不受WID 170支持,且指定对于指定用于WID 170的xx2fb数据包接口的异常。例如,xx2fb数据包的op字段可能不具有对应于FB_OP_BIND_PD、FB_OP_BIND_INST_CLK_PTR或FB_OP_FLUSH的列举值,ctx_dma_idx字段必须具有值0,且wid字段必须具有值2。Subid字段从8位增至10位,且wdat字段从256位减至128位。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
                         表5
for client wid:
  delete packet fb2xx_flush_resp
  for packet xx2fb:
     ctrl    U          subid                10
     data     U         wdat[!rd*(sz+1)]   128
     assert op!=FB_OP_BIND_PD
     assert op!=FB_OP_BIND_INST_BLK_PTR
     assert op!=FB_OP_FLUSH
     assert ctx_dma_idx==0
     assert wid==2
表6所示的代码指定对于指定用于Stream 175的xx2fb数据包接口的异常。例如,xx2fb数据包的op字段可能不具有对应于FB_OP_BIND_PD或FB_OP_BIND_INST_BLK_PTR的列举值。Rd字段总是负的,ctx_dma_idx字段具有值0,且wid字段具有值3。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
                               表6
for client stream:
   for packet xx2fb:
       assert op!=FB_OP_BIND_PD
       assert op!=FB_OP_BIND_INST_BLK_PTR
       assert !rd
       assert ctx_dma_idx==0
       assert wid==3
表7所示的代码指定对于指定用于Dniso 180的xx2fb数据包接口的异常。例如,删除了ctx_dma_idx字段。xx2fb数据包的op字段可能不具有对应于FB_OP_BIND_INST_BLK_PTR、FB_OP_BIND_PD、FB_OP_VIRTUAL或FB_OP_BIND_INST_OBJ_PTR的列举值。Wdat字段从256位减至32位,且wid字段具有值0。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
                             表7
for client dniso:
 for packet xx2fb:
    delete ctx_dma_idx
    data     U        wdat[!rd*(sz+1)]    32
    assert op!=FB_OP_BIND_PD
    assert op!=FB_OP_BIND_INST_BLK_PTR
    assert op!=FB_OP_BIND_INST_OBJ_PTR
    assert op!=FB_OP_VIRTUAL
    assert wid==0
表8所示的代码指定对于指定用于MPEG 185的xx2fb数据包接口的异常。例如,mpeg_engine_id_idx_t字段添加到xx2fb数据包,且使用ctx_dma_idx字段确定mpeg_engine_id_idx_t字段的值。Wdat字段从256位减至128位,且wid字段可能仅具有范围在从0到2(包括0和2)的值。op字段可能不具有对应于FB_OP_BIND_PD的列举值。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
                               表8
       enum_type mpeg_engine_id_idx_t:
       enum FB_MPEG_ENGINE_ID_IDX_VP  0
       enum FB_MPEG_ENGINE_ID_IDX_MDEC  1
       enum FB_MPEG_ENGINE_ID_IDX_ME  2
for client mpeg:
      for packet xx2fb:
         ctrl  mpeg_engine_id_idx_tengine_id_idx
         data   U       wdat[!rd*(sz+1)]     128
         assert op!=FB_OP_BIND_PD
         assert(engine_id_idx==FB_MPEG_ENGINE_ID_IDX_VP &&
  ctx_dma_idx in 0..8)‖
             (engine_id_idx==FB_MPEG_ENGINE_ID_IDX_MDEC &&
  ctx_dma_idx in 0..4)‖
             (engine_id_idx==FB_MPEG_ENGINE_ID_IDX_ME &&
  ctx_dma_idx in 0..4)
         assert wid in 0..2
除了定义Niso_hub 150的接口外,还使用高级语言定义Niso_hub 150的函数。表9中所示的代码指定由Niso_hub 150执行的函数。例如,指定判优函数且产生称为winner1的“赢取”数据包。CLU的合格性,subrequest_info、wdat_reformatter和rdat_reformatter例示于Niso_hub 150内,且可手动编写代码以执行那些CLU的函数。通过说明,使用高级语言定义代码。然而,可使用其它语言定义函数。
执行PLU判优函数,以从由Niso_hub 150自客户端FE 155、DA 160、SCC 165、Host 195、Cniso 183、Dniso 180、Stream 175、WID 170、MPEG 185和Hostnb 190接收到的数据包,确定winner1。指定判优策略和使用从客户端接收到的“alom”位的选项,其中alom用于表示具有“至少多于一个”的xx2fb数据包用于Niso_hub 150。接着将winner1发送到fb2hubtlb数据包中的hubtbl单元(未图示)。用于fb2hubtlb数据包中的字段从winner1自动复制,而忽略未被使用的字段。Wdat和we_字段与winner1分离,且可能保持在例如寄存器文件和FIFO存储器等存储资源中。
从hub2tbl2fb数据包中的hubtlb接收子请求,且通过client_id将其存储在存储资源中。这些子请求基于hub2tbl2fb数据包中的subresponse_numbers重新排序。
编写subrequest_info CLU以执行跟踪函数,以确定客户端子请求的状态。使用另一判优函数以基于子请求确定winner2。编写wdat_reformatter CLU以执行winner2、wdat和we_的数据格式化。wdat_reformatter产生输出到XBAR单元的niso2xbar数据包。XBAR通过发送xbar2niso数据包中的rdat来作出回应。编写rdat_reformatter CLU,以基于rdat中的client_id将fb2xx_rdat数据包输出到适当的客户端。
                                    表8  arbitrate winner1 from clients
policy    programmable_fixed_prio
alom      xx2fb.alom
eligibility computesend winner1 to hubtlb.fb2hubtlb:
hold wdat,we_receive subrequest from hubtlb.hub2tlb2fb:
store into subrequests:
  bin by client_id
  reorder by subresponse_numbercompute subrequest_info:
  in subrequest.client_id,subrequest.{last,status}
  out eligible[subrequests.num_bins]
  out status[subrequests.num_bins]arbitrate winner2 from subrequests
  policy  programmable_fixed_prio
 alom     !hubtlb2fb.last_subreq
 eligibility request_info.eligiblecompute wdat_reformatter:
 in winner2,client[winner2].xx2fb.{wdat,we_}
 out niso2xbar  //packetsend wdat_reformatter.niso2xbar to xbar.niso2xbarreceive rdat from xbar.xbar2nisocompute rdat_refomnatter:
 in rdat
 out fb2xx_rdat  //packetsend rdat_reformatter.fb2xx_rdat to client[client_id].fb2xx_rdat
高级语言可用于例示PLU中的一个和一个以上的CLU。使用高级语言和高级语言的子语言,产生编程人员可编写函数的模板,以执行所需的操作。也可关于CLU产生验证环境。因为在PLU中指定了接口,所以编程人员可集中精力建构和验证CLU的功能,而不是CLU与其所连接的单元之间的相互关系。
                         高级语言编译程序
图2说明根据本发明的一个或一个以上方面的,用以执行图1A中所示的步骤105的示范方法的流程图。在步骤205中,高级语言编译程序解析源代码且检查ATree的语义。编译程序在其解析源代码时建置ATree,且使ATree的结构相应于源代码。例如,每一ATree的节点对应于高级语言的语句或部分语句,例如所参考的标识符。因此,每一ATree节点具有唯一的“类别”。ATree节点通常具有多个保持在列表中的子节点。存在用于基于节点类别快速且象征性遍历子节点的应用程序。此外,这些应用程序可用于注释节点。或者,一个节点可指定另一节点来定义在遍历过程中使用的路径。
扩展源代码中的宏并将其置放在ATree中。在解析过程中,可使用临时符号表来分析标识符,从而填充从标识符参考的ATree节点到标识符声明的ATree节点间的指针。估算分配语句且用ATree节点的相关常量替代。语义检查程序在解析器所产生的ATree上运行并检查正确性。例如,语义检查程序可检查定义了所有的标识符、标识符未定义两次、所有范例选项合法等。在本发明的某些实施例中,语义检查程序也将向ATree添加供稍后的编译阶段使用的注释,(例如)使PLU产生器更易于编写。
在步骤210中,编译程序自源代码产生ATree并装饰ATree,意即,在ATree中注释有用的信息。每条与节点相关的信息具有一个类别和类型。最通用的类型是“int”和“ptr”,其中后者是指向ATree中另一节点的指针。参考源代码的行,用源代码行号注释每一ATree节点,以达到完成错误报告的目的,例如(类别=line_num,类型=int)。
在步骤215中,编译程序扩展ATree,执行最优化和简化。例如,可扩展特定CLU和PLU的每一实例。此外,可执行ATree最优化,例如消除失效代码、基于源代码中其它地方的常数表达式简化表达式、宏模板扩展等。ATree到达下一阶段以产生MTree,且可将ATree写到可供读取以用于调试目的文件中。ATree文件用作产生MTree的单一来源,MTree接着用于产生RTree和随后的目标,例如RTL、性能模型、功能模型等。
图3A说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤110的例示性方法的流程图。在步骤300中,调用PLU产生器来处理ATree,并产生在另一中间树格式(由MTree表示)中表示的每一PLU。类似地,在步骤305中,调用CLU产生器来处理ATree,并产生MTree中的每一CLU,其中使用高级语言的子语言编写CLU。MTree平行于用于实施每一PLU和CLU的底层模块和接口。每一PLU和CLU产生器产生部分的MTree,且将所有的部分MTree链接于一起以形成完整的MTree。用于MTree中的逻辑构造跟语言无关,且不应包括时序限制(timing constraint)。
图3B说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤120的例示性方法的流程图。在步骤310中,所述方法判定回馈布局信息(back annotated layoutinformation)是否可用,如果可用,那么在步骤315中,MTree与回馈布局信息组合以产生优化MTree(RTree)。RTree平行于用于实施每一PLU和CLU的底层模块和接口。用于RTree中的逻辑构造跟语言无关,且包括时序限制。
如果在步骤310中回馈布局信息不可用,那么在步骤320中通过组合MTree与缺省时序信息来产生RTree。为了产生RTree,估计用于每一基本动作将花费的许多周期以使模块流水线化。这些估计对应于在较精确或其它特定限制不可用时(例如,在模块或芯片的合成或物理布局之前)所使用的缺省值。在步骤325中,特定目标优化程序处理RTree并产生目标模型(RTL模型)。PLU通常定义内部接口和用于数据管理的数据结构,以及功能模型目标不需要但RTL模型目标需要的细节。RTree包括需要模拟周期到周期的行为的模块和接口。
RTL模型目标的优化RTree包括芯片的整个RTL基础结构连同时序信息,且其时钟周期精确。在步骤435中,由特定目标代码发射器根据步骤115中产生的优化RTree产生芯片的RTL模型。特定目标代码发射器产生用于PLU的所有RTL模块,且产生模块模板(例如,PLU包覆),其包括用于CLU的时钟、复位、输入和输出信号。
将用于CLU的经解码的可编程配置信息存储在CLU之外,且表示为可编程寄存器值的输入。特定目标代码发射器也可产生反映流程的每一模块的时序图和数据包进出每一模块的时序。特定目标代码发射器基于回馈物理设计信息(当可用时)声明接口协议。特定目标代码发射器也可为标识为内容可切换的PLU和CLU产生内容切换逻辑。因为大多数芯片都是自动产生,所以代码复查可集中在人工产生的代码,特别是CLU。因此代码复查过程更有效,且投入特定目标优化程序和特定目标代码发射器的开发中的努力可补充到若干芯片设计中。
在本发明的一些实施例中,使用RTree产生的特定目标模型可在较高级(例如,ATree、MTree或RTree级)而不是RTL代码级处调试。源代码级调试器和波形观测仪可由开发者用来调试执行RTL代码时所产生的模拟。因此,开发者可在高级语言中调试芯片设计,而不是在最终目标模型的特定语言(例如,Verilog、VHDL、C++或其类似语言)中调试芯片设计。
特定目标代码发射器也可实施关于时钟的RTL模型中的优化。举例而言,可按精细粒度产生触发器群的使能,以使时钟门控能达到精细粒度的程度。类似地,区块级时钟门控可为PLU实施。因为其物理设计模型也根据RTree产生,所以需要用于布局的时钟树信息、额外时钟树和子树也集成到物理设计模型中。在本发明的一些实施例中,用于RTL模型的特定目标代码发射器提前一个或一个以上的时钟周期产生预计算的值,以满足时序需求。举例而言,分割事务FIFO存储器可用于排列读写请求与数据。在本发明的一些实施例中,特定目标代码发射器也可产生自时序异步逻辑或在时钟的两个边沿上计时的逻辑。特定而言,所述计时方案可基于每一模块产生。
特定目标代码发射器也可实施关于功率的RTL模型中的优化。应产生所产生RTL模型以避免总线切换回零,除非区块级时钟门控生效。一些如反向偏压的低功率技术需要RTL支持慢唤醒,因此所产生RTL模型应在这个框架内操作。RTL特定目标代码发射器判定区块的输入通信量速率,且可实施反相偏压和较低时钟速率,或可实施数据的累积以避免在许多时钟周期上传递较少量的数据。举例而言,数据的积累可用于避免保持DRAM页打开若干时钟周期,而读或写较少量的数据。对于分区间接口而言,可通过比较前一周期的总线状态与当前周期的总线状态,且倒置新数据使得不大于50%的信号在周期之间改变,来实施DBI(数据总线倒置)。这个特征可基于平面布置距离信息来实施。
特定目标代码发射器也可实施关于可测试性和改良生产率的RTL模型中的优化。具体而言,可将逻辑插入服务器PLU(如交叉接口)中以在PLU未完全起作用的情况下允许模块被禁止或重新路由数据。冗余模块或逻辑和用以使能冗余模块的使用的支持逻辑也可为关键PLU或CLU产生。可自动地为RAM、高速缓冲存储器线、分区间电线或其类似物添加冗余。
图3C说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤120的另一例示性方法的流程图。在步骤330中,所述方法判定用户指定时序信息是否可用,且如果可用,那么在步骤335中,将MTree与用户指定时序信息组合以产生RTree。用户指定时序信息可包括在MTree内的PLU和CLU示例中。用户指定时序信息包括有模块使用的寄存器类型,如输入和/或输出寄存器和其它流水线限制。
如果在步骤330中用户指定时序信息,那么在步骤360中,通过组合MTree与缺省的时序信息来产生RTree。在步骤345中,特定目标优化程序处理RTree,且产生目标模型(RTL模型)。
图3D说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤120的另一例示性方法的流程图。在步骤350中,所述方法判定回馈合成信息是否可用,且如果可用,那么在步骤355中,将MTree与回馈合成信息组合以产生RTree。特定而言,回馈合成信息包括不满足时序的路径。
如果在步骤350中用户指定时序信息不可用,那么在步骤360中通过组合MTree与缺省的时序信息来产生RTree。在步骤365中,特定目标优化程序处理RTree,且产生目标模型(RTL模型)。
可组合图3B、3C和3D中所示的方法,例如,可通过组合MTree与时序信息(例如,来自布局的回馈或合成或用户指定的时序信息)的任何组合来产生RTree。
                        特定目标优化程序
调用特定目标优化程序以通过优化特定目标(例如,RTL、性能模拟器、功能模型或其类似物)的MTree或RTree来产生所述目标的经优化的MTree或RTree。使用RTree来产生需要周期精确信息的目标,使得周期精确优化在所有PLU上一致。所述优化发生在整个芯片上,且与范例无关,这意味着所述优化可补充到新的范例。此外,优化程序可使用来自布局的回馈信息以产生每一目标的经优化的RTree(包括基于物理布局的时序信息)。优化程序也检查模块示例之间的接口并优化所述接口。举例而言,在芯片上路由接口的距离将判定是利用中继器使用有效/信用协议,还是使用请求/忙碌协议,所述请求/忙碌协议接着由于增大的等待时间可影响输入FIFO深度。类似地,低频宽限制可用于判定接口的宽度,并可判定是否传递控制接着传递数据,或利用数据控制。
接着调用特定目标代码发射器来取得经优化的MTree或RTree并写出最终目标,例如适当的输出文本语言、环境文件和报告。特定目标代码发射器走过经优化的MTree或RTree并产生用于最终目标的代码。特定目标代码发射器也可产生报告,其将MTree或RTree中的注释链接到源代码。一旦指定了PLU、CLU或简单CLU模型、数据包和频宽,便可产生性能模拟器模型和晶粒面积估计。类似地,当提供了输入数据包的到达速率时,也可产生原始性能估计,例如,性能/面积、性能/瓦特或其类似物。可使用性能模型产生更精确的估计,如结合图4C所述。
图4A说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤115以产生最终目标的例示性方法的流程图。在步骤405中,特定目标优化程序用于产生功能模型目标的经优化的MTree。使用每一PLU的最简单的表示以减少执行功能模型模拟所需的时间。特定而言,可使用零时间函数(即,程序上的)调用。特定而言,可在PLU的MTree表示中使用零时间函数(即,程序上的)调用。可在RTree中使用每一PLU的不同表示,尤其时包括周期精确信息的表示。举例而言,在RTree中,PLU表示可包括区块级时钟门控、触发器使能、数据总线倒置、特定接口协议,和其类似物。
同样,CLU函数也可由零时间函数表示。可在单周期中将包括多周期数据包的数据包提供给CLU函数以进行模拟。在单周期中出现多周期数据包也简化了插入自动产生的CLU模板中的代码的编写,因为编程人员不需要积累多个时钟周期上的输入。在设计过程中的稍后点(具体而言,在展示物理设计特征之后)判定有多少时钟周期用于传输数据包。编程人员不指定所需的周期数,而可指定特定接口的频宽,且将特定目标优化程序判定周期数,正如特定目标优化程序判定用于特定接口的时序或协议,例如,源同步、请求/忙碌、有效/信用,或其类似物。
在步骤410中,有特定目标代码发射器根据经优化的MTree产生芯片的功能模型。在模拟期间,零时间函数调用的使用改良了性能。举例而言,将每一数据包作为执行线程来处理,且可经由尽可能多的函数区块执行每一数据包,直到所述数据包被中断。当函数区块使来自不同接口的输入数据包同步时可中断数据包。用户空间线程数据包可用于在所述情况下中断数据包。当PLU(服务器或客户端)具有一客户端PLU时,组件可访问另一服务器,如读帧缓冲器的纹理单元PLU(服务器)。纹理单元PLU向帧缓冲器发出读请求(零时间函数调用),且帧缓冲器在零时间回应。因为功能模型是从单个数据库中产生的,所以模拟器知道每一客户端和服务器的语义,且可有效地执行功能模型。当一个数据包产生更多的数据包时,所述数据包可被模拟成“循环”,且在每次通过所述循环时发出零时间函数调用。
功能模型可替代常规的C++模拟模型,其一般有一个或一个以上的设计师在开发芯片期间编写。因为用高级语言表示功能模型,所以高级语言源代码级调试器可用于调试所产生的功能模型,而不是直接使用C++调试器所产生的功能模型。
图4B说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤115以产生最终目标的另一例示性方法的流程图。在步骤415中,特定目标优化程序用于产生软件模型目标的经优化的MTree。具体而言,可保留芯片接口和可编程寄存器一产生另一经优化的MTree。在本发明的一些实施例中,PLU和CLU产生器也用于产生由软件使用的数据结构。在步骤420中,由特定目标代码发射器根据在步骤415中产生的经优化的MTree产生芯片的软件模型。软件模型可包括用于驱动程序、数据结构、方法注入代码、用于控制内容切换的代码和虚拟存储器配置例行程序的模板。
图4C说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤125以产生最终目标的例示性方法的流程图。在步骤425中,特定目标优化程序用于产生平面布置模型目标的经优化的RTree。在步骤430中,由特定目标代码发射器根据经优化的RTree产生芯片的平面布置模型。特定目标代码发射器可用于产生物理设计平面布置模型,包括一系列模块和接口,其包括实例计数和面积和功率估计。为每一PLU的逻辑和RAM的数量计算晶粒面积估计。可通过在合成期间产生的物理设计模型提供更精确的估计。也可通过物理设计代码发射器执行面积优化和时序优化。举例而言,可视需要插入中继器以满足较长互连件上的时序,且可用锁存器、脉冲锁存器、或脉冲触发器来替代触发器。
在合成之前,可通过编程人员编写CLU来提供CLU晶粒面积估计。作为平面布置模型产生的信息(如电线长度)可与MTree组合,且由特定目标优化程序和特定目标代码发射器使用,以确定分区间接口协议(例如,请求/busy_next、有效/信用或其类似物)并插入中继器触发器。平面布置模型可为每一模块和接口使用静态和动态的功率估计,以在平面布置模型内分配模块,从而使晶粒表面上的功耗平衡。
图4D说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤125以产生最终目标的另一例示性方法的流程图。在步骤440中,特定目标优化程序用于产生性能模型目标的经优化的RTree。在步骤450中,由特定目标代码发射器根据在步骤115中产生的经优化的RTree产生芯片的性能模型RTL。可模拟性能模型以使芯片性能有效,从而允许芯片设计师快速地利用不同设计进行试验。在步骤450中,根据在步骤440中产生的性能模型RTree来产生性能模拟环境。在步骤455中,另一特定目标代码发射器用于产生性能仿真环境。性能模拟环境和性能仿真环境可用于模拟在步骤445中产生的性能模型RTL。
为了产生性能模型RTL,移除所有的数据逻辑,且保留可影响通过芯片的数据包流的性能的控制逻辑,以产生性能模型的经优化的RTree。常规地,人工编写周期精确性能模型,且使用芯片的功能模型使其有效。自动产生性能模型的能力缩短了性能有效化所需的时间,因为性能模型是根据通用RTree产生的。因此,其与芯片的其它最终目标模型一致且保持最新。
PLU的性能模型能自动产生,而CLU可人工编写。然而,CLU的性能模型一般是CLU的功能模型的子集。因此,CLU的功能模型可用于产生相同CLU的性能模型。
经移除的数据逻辑的晶粒面积和功耗可被保留。性能模型可包括回馈平面布置信息,以获得距离且决定后绑定接口(late-binding interface),如接口宽度和FIFO深度。逻辑的精确同步时序可包括在性能模型中。高级语言为编程人员提供语法,以指定在CLU和PLU之间使用的数据包字段部分,其为芯片的性能模型所需。在性能模型中自动产生PLU内所含的数据包。
与性能特征类似的是,可产生低功率特征以模拟区块级时钟门控、反向偏压、时钟减慢和其类似物。因为性能模型不包括数据,所以估计正在改变的数据位的百分比以产生动态功率估计。回馈性能模拟结果可用于影响由RTL或其它特定目标代码发射器进行的低功率代码产生决定的类型。举例而言,RAM或高速缓冲存储器的使能粒度的确定可用于降低功耗。可使用多种参数模拟性能模型以估算每单位面积的所测量性能或每瓦特性能,且折衷架构。
图4E说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤125以产生最终目标的另一例示性方法的流程图。在步骤460中,对应于RTL模型目标产生RTree的验证环境。验证环境可包括区块级测试平台、配置文件、用于将多周期数据包注入区块中的通用例行程序,和激励源。同样,也可产生完全的芯片测试平台、配置文件、通用例行程序和激励源。验证环境可允许进行芯片的功能模型和RTL模型的源代码级调试。举例而言,编程人员可使用验证工具来在数据包从一个逻辑单元传递到另一个逻辑单元时观测所述数据包。编程人员可及时地捕获数据包前后状态,以观测所述数据包如何改变。
在步骤465中,根据RTL模型目标的RTree产生形式验证模型。通过基于每一区块的输入限制的分析产生独特的输入向量,形式验证模型可用于执行半形式或形式验证。输入向量可包括文件中以用于半形式验证,其中具有明显延迟。可重放文件,且将结果与功能模型模拟结果相比较。同样,可产生输入限制以在(例如)使用符号分析工具的形式验证期间使用。
在步骤470中,使用特定目标代码发射器(仅产生RTL的时序部分)根据RTL目标的RTree产生仿真模型。举例而言,RTree的特定部分可包括在经优化的RTree中,以仿真芯片的一部分。或者,可产生RTL的一版本来进行仿真,其在晶粒面积上更小,且更缓慢。举例而言,可溢出高速缓冲存储器,可使接口变得狭窄,且可减小FIFO存储器深度,以减少由仿真模型使用的门数。仿真模型可映射到仿真装置上,且可经执行以模拟芯片的性能,这比使用性能模型来模拟性能更有效。仿真模型也可用于标识并改正控制逻辑中的错误。
除了根据MTree和RTree产生性能模型、RTL模型、软件模型、验证模型和其类似物外,特定目标代码发射器可用于产生合成模型(环境),其用于合成RTL经优化的MTree或RTree以产生芯片的物理设计模型。图4F说明根据本发明的一个或一个以上方面执行展示于图1A中的步骤125以产生最终目标模型的另一例示性方法的流程图。在步骤480中,对应于RTL模型目标产生合成环境。合成环境可包括区块级时序限制和配置文件。在步骤485中,特定目标代码发射器基于RTree产生芯片的门级模型。合成模型和平面布置模型用于产生芯片的物理模型,其如本文进一步所述。在步骤490中,特定目标代码发射器基于RTree产生芯片的功能合成模型,即,布局环境。
所产生的合成环境包括PLU的所产生时序限制、在PLU跨越多个分区的情况下的PLU的部分、LCU和引脚。可使用市售合成工具来合成一些逻辑单元,而可自定义设计或产生其它逻辑单元。物理设计代码发射器可判定一些PLU结构是否可作为宏产生并标准化。接着可将共用使用的宏设计成定制电路,以达成改良性能和晶粒密度,减少的等待时间和功率。物理设计代码发射器也可优化路由以最小化连线电容、(可能地)再定位引脚、指定接口协议、改变接口宽度(数据包)、改变数据路径宽度,和其类似方面。
通过使用单个数据库,使得用以产生各种最终目标模型的ATree是有利的,因为每一最终目标模型与其它最终目标模型一致。参数的改变可在重新产生最终目标模型时在每一最终目标模型中反映。可自动建置最终目标模型,且可为特定目的建置最终目标模型的子集。举例而言,编写CLU的编程人员仅需要建置功能模型、RTL模型、验证模型和合成目录。自动产生PLU和高级区块。因此,编程人员可迭代阻断设计变体且快速地使CLU有效。由CLU模板提供的接口提供允许编程人员独立工作(即,不必与潜在地改变接口区块同步)的抽象层。此外,在高级语言中编写的ATree也可用于印制电路板(PCB)设计和验证。此外,溢出特定单元或改变深度和宽度可应用于PCB设计和验证。
如接口距离、区块纵横比和引脚位置之类的物理设计信息经提供以产生RTree,且在产生经优化的RTree期间使用所述物理设计信息。当修改如时钟速度之类的参数时,可重新产生物理设计模型和相关信息以调整设计。举例而言,可需要使时钟速率与特定总线速度或外部存储器速度的速度相匹配。类似地,可根据RTree快速产生低速度芯片的物理设计模型。低速度芯片具有减小的晶粒面积和对应的减少的生产成本。如功率、性能和功能特征之类的其它参数可经改变,以使用相同RTree或基于经修改源代码产生的RTree来快速产生其它芯片的物理设计模型。
用于产生合成模型的经优化的RTree包括来自平面布置模型的信息,其用于产生后合成物理布局所需的许多配置项。这个信息包括分区(特别是不同分区中的PLU的分区)、每一宏的纵横比、每一宏上的引脚位置、互连件、时钟分配、时钟门控、测试时钟、所插入的中继器、源同步接口和所插入的功能内建自测试(BIST)逻辑。所属领域技术人员应了解,经配置以执行图2、图3A、图3B、图3D、图3E、图4A、图4B、图4C、图4D、图4E或图4F中的方法步骤或其它均等步骤的任何系统在本发明的范畴内。
           用于使用逻辑单元建置集成电路的例示性系统
图5是根据本发明的一个或一个以上方面的个别计算系统的例示性实施例的方框图,其整体表示为500,且包括一处理器505、一内存512和一系统接口510。计算系统500可以是桌上型计算机、服务器、膝上型计算机、掌上型计算机(palm-sized computer)、图形输入板计算机、游戏控制台、便携式无线终端(如PDA或行动电话)、基于模拟器的计算机,或其类似物。包括系统内存控制器的处理器505可直接与内存512建立接口(如图所示),或可通过系统接口510与内存512通信。系统接口510可以是I/O(输入/输出)接口或桥接装置,包括用以直接与内存512建立接口的系统内存控制器。
源代码515、ATree编译程序520、ATree 522、MTree编译程序525、RTree编译程序526、MTree 528、RTree 529、优化程序530、经优化的MTree 532、经优化的RTree 533、发射器535和最终目标模型538存储在内存512中。当执行ATree编译程序520时,由处理器505解析用高级语言表示的源代码515。处理器505将所产生的ATree 522存储在内存512中。由处理器505执行包括在MTree编译程序525和RTree编译程序526中的PLU和CLU产生器以分布产生MTree 528和RTree 529。通用,由处理器505执行特定目标优化程序530以产生经优化的MTree 532和RTree 533。由处理器505执行特定目标发射器535以产生最终目标模型538。
通过使用通用数据库来产生多种不同的芯片模型和环境,可缩短芯片设计时间。用于产生ATree、MTree、RTree和特定模型的优化程序和编译程序可用于产生其它芯片,从而允许编程人员有效地并快速地利用高级语言编写源代码,使得以更大可靠性且在比人工或使用不同数据库产生不同模型更短的时间范围中产生每一芯片。使接口协议和数据包传输抽象化,从而简化设计和验证过程。可在模块级自动产生传统上人工执行以实施例功率优化、插入冗余逻辑、插入内容切换逻辑和其类似物的冗长的优化。此外,通用数据库便利了物理设计信息到RTree的反馈,从而达成在芯片的逻辑设计和物理设计之间的更紧密的耦合。
芯片设计流程中的改良是使用高级语言来详细说明芯片并产生通用数据库和最终目标模型的另一益处。通用数据库可用于产生性能模型和模拟环境、产生功能模型和模拟环境、产生寄存器传输级模型和合成环境、产生软件模型,并产生仿真模型。此外,因为,仅CLU包括人工编写的代码,所以可更有效地进行代码复查。可通过特定PLU和CLU和同类宏结构的位片数据路径布局和定制布局更有效地使用晶粒面积。
尽管前述内容针对本发明的实施例,但是可在不偏离本发明的基本范畴的情况下,可设计本发明的其它和另外的实施例,且本发明的范畴由所附权利要求书确定。因此,应在说明性意义而不是限制性意义上看待前述描述和图式。方法项中的步骤列表并不暗示以任何特定顺序执行所述步骤,除非在所述项中有明确陈述。
             参考数字
源代码                 130        优化的Rtrees         533
ATREE数据库            135        发射器               535
MTREE数据库            140        最终目标模型         538
RTREE数据库            142
特定树和模型           145
NISO_HUB               150
FE                     155
DA                     160
SCC                    165
WID                    170
STREAM                 175
DNISO                  180
CNISO                  183
MPEG                   185
HOSTNB                 190
HOST                   195
计算机系统             500
处理器                 505
系统接口               510
存储器                 512
源代码                 515
ATREE汇编程序          520
ATREE                  522
MTREE汇编程序          525
RTREE汇编程序          526
MTREE                  528
RTREE                  529
优化程序               530
优化的Mtrees           532

Claims (10)

1.一种设计一集成电路的方法,其包含:
根据用一高级语言编写的源代码产生一表示所述集成电路的通用数据库,所述高级语言指定可编程逻辑单元,其中所述可编程逻辑单元的一完整表示包括在所述通用数据库中;
产生一用于一可定制逻辑单元的模板,其中所述模板由所述可编程逻辑单元中的一者指定,且包括与所述可定制逻辑单元相连接的接口的一表示;和
优化表示所述集成电路的所述通用数据库的一部分以产生以特定目标树,其中所述特定目标树对应于所述集成电路的多种目标模型中的至少一者,且包括所述可定制逻辑单元的一表示。
2.根据权利要求1所述的方法,其进一步包含以下步骤:修改一指定一时钟速度限制、一功耗限制或一频宽限制的参数,以及重新产生表示所述集成电路的所述通用数据库。
3.根据权利要求1所述的方法,其进一步包含将时序信息与表示所述集成电路的所述通用数据库组合,以产生一时钟周期精确的经优化数据库。
4.根据权利要求1所述的方法,其中所述通用数据库包括时间排序相关性,且时钟周期是不精确的。
5.根据权利要求1所述的方法,其中所述特定目标树对应于所述集成电路的一功能模型、所述集成电路的一软件模型,或所述集成电路的一寄存器传输级模型。
6.一种用于集成电路设计的系统,其包含:
一高级语言,其经配置以指定逻辑单元;
一编译程序,其经配置以处理所述高级语言,并产生表示一集成电路的一通用数据库,所述集成电路包括对应于所述逻辑单元的组件;
特定目标优化程序,其经配置以处理所述通用数据库的一部分,并产生一对应于所述集成电路的一特定模型的特定目标树;和特定目标代码发射器,其经配置以处理一特定目标树,并产生所述集成电路的一最终目标模型。
7.根据权利要求6所述的系统,其中所述逻辑单元中的一者是一存储器管理单元或一存储器接口。
8.根据权利要求6所述的系统,其中所述通用数据库包括一对应于所述逻辑单元中的一者的模板和接口,或由所述特定目标优化程序中的一者使用以产生所述特定目标树中的一者的物理设计信息。
9.根据权利要求6所述的系统,其中所述特定目标发射器确定用于所述逻辑单元中的两者之间接口的一接口协议,且所述高级语言将所述逻辑单元之间的接口指定为与一特定接口协议无关的多周期数据包。
10.根据权利要求6所述的系统,其中多周期数据包中的一者是在估计所述逻辑单元中的一者的一功能模型时在一单时钟周期中输入的。
CN2006100864377A 2005-06-21 2006-06-21 使用逻辑单元建置集成电路 Active CN1885295B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/157,716 US7363610B2 (en) 2005-06-21 2005-06-21 Building integrated circuits using a common database
US11/158,180 US7483823B2 (en) 2005-06-21 2005-06-21 Building integrated circuits using logical units
US11/158,180 2005-06-21
US11/157,716 2005-06-21

Publications (2)

Publication Number Publication Date
CN1885295A true CN1885295A (zh) 2006-12-27
CN1885295B CN1885295B (zh) 2011-01-19

Family

ID=37583445

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006100864377A Active CN1885295B (zh) 2005-06-21 2006-06-21 使用逻辑单元建置集成电路

Country Status (2)

Country Link
US (1) US7363610B2 (zh)
CN (1) CN1885295B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113947050A (zh) * 2021-08-27 2022-01-18 芯华章科技股份有限公司 用于生成形式验证环境的方法、电子设备及存储介质
US20220197636A1 (en) * 2016-03-04 2022-06-23 Montana Systems Inc. Event-driven design simulation

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2683106B1 (en) 2004-10-29 2018-03-21 Fujitsu Limited Communications apparatus and communications system using multicarrier transmission mode
US7483823B2 (en) * 2005-06-21 2009-01-27 Nvidia Corporation Building integrated circuits using logical units
JP2008047053A (ja) * 2006-08-21 2008-02-28 Toshiba Corp アサーション記述変換装置および変換方法
US7448008B2 (en) * 2006-08-29 2008-11-04 International Business Machines Corporation Method, system, and program product for automated verification of gating logic using formal verification
US7694242B1 (en) * 2006-12-11 2010-04-06 Cadence Design Systems, Inc. System and method of replacing flip-flops with pulsed latches in circuit designs
JP4774376B2 (ja) * 2007-02-20 2011-09-14 富士通株式会社 設計支援装置,設計支援プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
US7661050B2 (en) * 2007-05-04 2010-02-09 International Business Machines Corporation Method and system for formal verification of partial good self test fencing structures
US8424004B2 (en) * 2007-06-23 2013-04-16 Microsoft Corporation High performance script behavior detection through browser shimming
US7501963B1 (en) * 2007-10-17 2009-03-10 Micron Technology, Inc. Balanced data bus inversion
US20100095256A1 (en) * 2008-08-04 2010-04-15 Paparao Kavalpati Power State Transition Verification For Electronic Design
US9064075B1 (en) * 2008-12-02 2015-06-23 The Mathworks, Inc. Automatic assignment of signals for a functional model
US9323502B2 (en) 2013-03-15 2016-04-26 Nvidia Corporation System, method, and computer program product for altering a line of code
US9015643B2 (en) 2013-03-15 2015-04-21 Nvidia Corporation System, method, and computer program product for applying a callback function to data values
US20140278328A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System, method, and computer program product for constructing a data flow and identifying a construct
US9015646B2 (en) 2013-04-10 2015-04-21 Nvidia Corporation System, method, and computer program product for translating a hardware language into a source database
US9021408B2 (en) 2013-04-10 2015-04-28 Nvidia Corporation System, method, and computer program product for translating a source database into a common hardware database
US9171115B2 (en) 2013-04-10 2015-10-27 Nvidia Corporation System, method, and computer program product for translating a common hardware database into a logic code model
US9244810B2 (en) 2013-05-23 2016-01-26 Nvidia Corporation Debugger graphical user interface system, method, and computer program product
US8943448B2 (en) 2013-05-23 2015-01-27 Nvidia Corporation System, method, and computer program product for providing a debugger using a common hardware database
US10440640B2 (en) * 2013-10-15 2019-10-08 Vigo Software Ltd Base station conditions resource adaptation
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9984194B2 (en) * 2015-09-15 2018-05-29 Arm Limited Integrated circuit design
US10095822B1 (en) 2016-12-12 2018-10-09 Cadence Design Systems, Inc. Memory built-in self-test logic in an integrated circuit design
US10192013B1 (en) * 2016-12-12 2019-01-29 Cadence Design Systems, Inc. Test logic at register transfer level in an integrated circuit design
US11281834B1 (en) * 2019-08-05 2022-03-22 Xilinx, Inc. Protection of high-level language simulation models

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471398A (en) * 1991-07-01 1995-11-28 Texas Instruments Incorporated MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist
US5841663A (en) * 1995-09-14 1998-11-24 Vlsi Technology, Inc. Apparatus and method for synthesizing integrated circuits using parameterized HDL modules
JP2954894B2 (ja) 1996-12-13 1999-09-27 株式会社半導体理工学研究センター 集積回路設計方法、集積回路設計のためのデータベース装置および集積回路設計支援装置
EE200100189A (et) 1998-09-30 2002-08-15 Cadence Design Systems, Inc. Plokkidel põhineva väljatöötamise metodoloogia
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6505328B1 (en) * 1999-04-27 2003-01-07 Magma Design Automation, Inc. Method for storing multiple levels of design data in a common database
US6647524B1 (en) * 1999-04-30 2003-11-11 Worldwide Semiconductor Manufacturing Corporation Built-in-self-test circuit for RAMBUS direct RDRAM
US6853970B1 (en) * 1999-08-20 2005-02-08 Hewlett-Packard Development Company, L.P. Automatic design of processor datapaths
US6447683B1 (en) * 2000-10-09 2002-09-10 Water Environment Research Foundation Pathogen destruction process for biosolids
JP2003006255A (ja) * 2001-06-22 2003-01-10 Fujitsu Ltd Hdl自動修正装置およびhdl自動修正プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体
CN102902839B (zh) 2002-04-25 2016-04-06 新思科技公司 管理集成电路设计的装置和方法
US7184946B2 (en) 2003-06-19 2007-02-27 Xilinx, Inc. Co-simulation via boundary scan interface
US20050049843A1 (en) 2003-08-29 2005-03-03 Lee Hewitt Computerized extension apparatus and methods
GB0322050D0 (en) 2003-09-20 2003-10-22 Spiratech Ltd Modelling and simulation method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220197636A1 (en) * 2016-03-04 2022-06-23 Montana Systems Inc. Event-driven design simulation
US11934825B2 (en) * 2016-03-04 2024-03-19 Montana Systems Inc. Event-driven design simulation
CN113947050A (zh) * 2021-08-27 2022-01-18 芯华章科技股份有限公司 用于生成形式验证环境的方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN1885295B (zh) 2011-01-19
US7363610B2 (en) 2008-04-22
US20070005329A1 (en) 2007-01-04

Similar Documents

Publication Publication Date Title
CN1885295A (zh) 使用逻辑单元建置集成电路
Phelps et al. Anaconda: simulation-based synthesis of analog circuits via stochastic pattern search
CN1666202A (zh) 管理集成电路设计的装置和方法
US9251300B2 (en) Methods and tools for designing integrated circuits with auto-pipelining capabilities
CN1879110A (zh) 模拟系统以及用于模拟和验证控制系统的计算机实施的方法
CN1147813C (zh) 生产数字信号处理器的方法
CN1505790A (zh) 带有可编程组件的基于块的设计方法
CN1102934A (zh) 增量连接系统
US20070124717A1 (en) Method and program product for protecting information in EDA tool design views
CN1728153A (zh) 支持配置实体的选择性表示的配置说明语言的方法和系统
US10586003B1 (en) Circuit design using high level synthesis and linked hardware description language libraries
IE20080800A1 (en) A system level power evaluation method
JP5682079B2 (ja) 集積回路におけるシステム、アーキテクチャおよびマイクロアーキテクチャ(sama)表現
Cai et al. Retargetable profiling for rapid, early system-level design space exploration
US20130091482A1 (en) Method and apparatus for design space exploration acceleration
US20130346926A1 (en) Automatic optimal integrated circuit generator from algorithms and specification
US10394983B2 (en) Method to automatically generate and promote timing constraints in a Synopsys Design Constraint format
CN1744093A (zh) 数据流图处理方法及具备可重构电路的处理装置
CN1301362A (zh) 软件生成装置和软件生成方法
CN1491385A (zh) 随选vcd系统和方法
Wibowo Interoperability of reconfiguring system on FPGA using a design entry of hardware description
Xiu et al. Early research experience with OpenAccess Gear: An open source development environment for physical design
US7886253B2 (en) Design structure for performing iterative synthesis of an integrated circuit design to attain power closure
JP2006268165A (ja) 集積回路のタイミング解析装置、集積回路のタイミング最適化装置、集積回路のタイミング解析方法、集積回路のタイミング最適化方法、集積回路基板の製造方法、制御プログラムおよび可読記録媒体
US20090319986A1 (en) Data processing apparatus, method therefor, and computer program

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