集成电路开发系统的制作方法

文档序号:6487261阅读:427来源:国知局
专利名称:集成电路开发系统的制作方法
技术领域
本公开文件涉及一种集成电路开发系统,并且,尤其涉及一种集成电路开发系统,其包括硬件对象、一促进硬件对象之间消息的通信结构、以及一在该硬件对象上的允许系统的软件表示与执行的系统。
背景技术
集成电路(IC)设计与开发是当前一个非常困难和昂贵的过程。当现今的ASIC(Application Specific Integrated Circuit,特定用途集成电路)方法学和EDA(Electronic Design Automatic,电子设计自动化)工具的严格限制正导致设计者不能有效地利用每一种新制造技术提供的所有额外门时,一个不断加宽的设计差距(Design Gap)正在出现。
全定制设计(Full custom design)已经变得极其昂贵,甚至当那些设计导致大量规则结构时也是如此,比如Cache Memory-高速缓存存储器,这是因为每一种新制造技术在低层细节上指数增加的复杂性不允许在可用时间内的很新的设计。集成电路的速度正受限于当前的结构,该结构对于长导线和越来越多的芯片元件间的相互连接具有不断增加的需求,这种不断增加的相互连接数量正导致一种新的制造范例,其中连接线上的缺陷处于支配地位。
当制造技术继续提升晶体管密度达到在单个晶粒(Die)上近十亿个晶体管时,正变得明显的是,急剧上升的设计成本、指数增加的验证工作、现有设计工具的固有限制、以及不能有效重新使用以前所进行的,将使得未来的开发极其昂贵且仅少数可用。
图1A和1B所示的是利用ASICs与FPGAs(Field Programmable GateArray,现场可编程门阵列)来产生一个集成电路的范例过程。该设计以创建一个系统模型开始,见这里所示的作为互相连接功能As,Bs及Cs。该系统模型能以任何方式来构造;这样的一个建模系统包括,例如,一个方块图、一个统一建模语言(UML,Unified Modeling Language)模型或者一个数据流程图。一旦该系统模型被完成,将手动产生一个软件描述,该软件描述是耗时且难以检查的。该软件描述可以在例如C、C++、Java、Matlab、Smalltalk或System C中生成。接着,该软件描述被手动转译为寄存器传输级(RTL,Register Transfer Level)描述,其可以被用于创建该系统的一个逻辑门模型。RTL是对硬件描述语言(HDL,HardwareDescription Languages),比如Verilog或VHDL的一个通称,其可以被用于通过综合来产生一个逻辑门模型。RTL被用于创建ASIC(图1A)或FPGA(图1B)解决方案。再者,手动将软件描述转译为RTL是既费时又难于检查的。对于一个ASIC,一旦综合已经创建了一个逻辑门模型,利用半自动硬件布局工具,更多的软件被用于对功能门进行布局和布线。一旦布局和布线完成,所产生的图形(Pattern)被最优化以对制造过程中的光学效应负责。需要主意的是,需要对过程进行多次重复优化,,而且某些优化是手动执行的。最后,一个掩模组被创建并被用于制作特殊设计的ASIC。
参考图1B,通过类似的过程来产生一个FPGA,再者,一个RTL描述与综合被用来开发该逻辑门模型。为了确保该设计在物理上符合目标部分,需要好几个重复修正。一旦了解映射,该设计被测试以确保符合时序要求。如果时序设计要求起初不符合,则RTL的结构必须被修改,直到映射和时序要求两者都被满足。例如,具有多个并行运行的相同逻辑的重复,往往是非常必要的,以确保能够符合时序限制;这仅能通过改变所述RTL描述来完成。最后,对应FPGA上的每一个元件的逻辑映射被载入到一个只读存储器中。当此FPGA装置被开机时,所有的FPGA元件都自动从只读存储器中被加载以产生所期望的功能。
因为晶体管与其它IC元件的缩小尺寸,全定制设计将需要比现在所用的更多的设计者,其增加了巨大的复杂性,并且比现有技术需要指数上更多的时间和资源来进行开发。在降低硬件复杂性和降低在硬件上出错的验证风险的尝试中,许多系统现在正利用一种硬件与软件的结合。在这种新的范例中,性能被交换以对抗利用在许多元件的可编程硬件上运行的软件,以至于功能和错误在装置被制造后被固定。这个共同设计过程,其中软件和硬件共同存在以产生解决方案,是一个近二十年来已被广泛探索但少有成就的问题。
硬件和软件元件的广泛地重新使用,是确保大型的、复杂的设计能在一个合理的时间内被执行和被识别所必须的,其已证实为不可达到的并且仅被用于小的、紧密型设计中心内的一个有限范围。
本发明提出的和现有技术中的其它限制的实施例。


图1A是一方块图,说明用来设计ASIC的典型过程;图1B是一方块图,说明用来设计FPGA的典型过程;图2是一时序图,说明一个数据传输协议;图3是一方块图,说明一数据寄存器的一个抽象图;图4是一方块图,说明根据本发明实施例的一协议寄存器的另一抽象图;图5是一包含组合逻辑的协议寄存器的方块图;图6A-6E是方块图,说明一由一系列协议寄存器形成的数据流水线的行为;图7是本发明实施例的另一协议寄存器的方块图;图8是本发明实施例的另一协议寄存器的示意图;
图9是图8的协议寄存器的一个状态转移图;图10说明显示无效数据成员的一个数据包的两个方块图;图11说明两个数据包如何能被结合;图12是一方块图,说明一个传统FIFO元件如何能被整合到本发明中;图13是一方块图,显示一个硬件对象如何能利用协议寄存器来构建;图14是一示意图,显示分叉、接合及协议寄存器的等效结合;图15是一示意图,显示一协议寄存器的一个非同步实施;图16是一时序图,显示伪非同步时钟产生;图17是一方块图,显示一协议寄存器的一个伪非同步实施;图18是一个示例硬件对象的方块图;图19是一方块图,说明硬件对象是如何能由已有的硬件对象来定义;图20A-20C是方块图,说明硬件对象的不同类型;图21是一方块图,说明硬件对象的另一类型;图22是一方块图,说明硬件对象如何能利用消息与彼此通信;图23是一方块图说明一消息分叉对象;图24是一方块图,说明一消息接合对象;图25说明一具有许多实际形成的硬件对象的示例的可重新设置的芯片;图26是一方块图,说明用于与开发系统的一个可重新设置芯片结合的对象库;图27是一方块图,说明软件对象层次结构;图28是一方块图,说明一个硬件系统的一个软件模型;图29是一方块图,说明软件对象如何被映射到一个可重新设置的芯片上;图30是一方块图,说明能被依附到每一软件对象系统的额外信息;图31是一流程图,说明为了实现在一个可重新设置的芯片上用于开发软件系统的过程;以及图32-35是说明一个利用本发明的实施例能产生的示例系统图。
具体实施例方式
本发明实施例包括一个用于集成电路开发的系统,该开发系统的元件包括硬件和软件对象。这些对象可以被实例化、指令化、参数化并连接于一个软件环境以实现不同功能。一旦在软件中,所述的描述定义了一组对象的拓扑与性质,这些对象就分层地由其它对象组成。该层次结构的最低层表示一个基元对象(primitive object)。通过利用一个硬件,其能实现该功能并维持一个软件对象的基本性质,该软件描述的拓扑与性质是所有需要定义一件硬件的,该硬件能执行所期望的功能。利用本发明的实施例,电路设计者只需很少或不需了解硬件或硬件设计的知识,而只需软件描述就能够设计硬件系统。
通信基本原理根本地,形成在一个集成电路(IC)上的硬件对象利用电信号在彼此间进行通信,电信号的状态被定义来表示数据。例如,一个具有在一个工作电压和一个接地参考电压之间的中间点以上的电压值的电信号,能够被视为表示一个“1”或高(HIGH)值,而在该中间点电压以下的电压能够被视为表示一个“0”或低(LOW)值。为确保信号完整,仅一个接近该接地参考的有限电压范围被视为一个低值。类似地,仅一个接近工作电压的有限电压范围被视为一个高值。任何在这两个限制之间的电压是一个未定义的逻辑状态。
在所有的讨论与图示中,一个高值指示出该信号是被确立的;一个低值是一个未被确立的值。任何信号的动态意义(active sense)是不由该项高或低来决定的。
多个信号能够在对象间沿一个并行数据总线进行传输,该并行数据总线允许数据从第一个点同时传送到第二个点。能够在一个特定时间内被传送的数据量是由总线的数据宽度和更新数据状态的频率来定。
很多时候,数据传输协议被用于管理数据何时与如何在对象间传输。该协议典型地并不是实际“数据”传输的自身部分,而是指示有关数据的品质或同步该数据的传输。例如,一个接收对象能够指示何时它为忙碌且不能接收数据。
图2是一个时序图,说明一个相对简单的数据传输协议,其中接收对象通过确立一个“接受”信号来指示其接收数据的有效性。类似地,一个发送对象指示其正发送的数据是有效或无效,无效数据可取任何值且其从不会被使用。
参考图2,一个高接受(Accept)信号指示接收对象能够接收数据。一个高有效(Valid)信号指示数据具有一个有用值。当接受信号和有效信号都是高时,在发送对象和接收对象之间发生数据传输。一个时钟(Clock)信号在图2中被示出。时钟在其上升沿(positive edge)触发该有效、接收、及数据信号。数据信号可以为一个单比特,或可以包括同时发送的数据的多个比特。一般数据总线宽度是2的指数,比如8、16、32或64。
在第一个时钟脉冲,在图2中所示的时钟信号的上升沿,该有效比特被驱动为高,指示数据信号是一个有意义的值。然而,接受信号为低,这表示接收对象未准备好来接收数据。该数据信号保持值数据1(DATA1)直到当接受信号为高的时钟沿4,该接受信号在时钟沿3被驱动为高,指示接收对象准备来接收。在时钟沿4,数据1被由发送对象传输至接收对象。一个箭头表示数据的传输。在时钟沿6、7和9,由于有效信号与接受信号都为高而发生传输。在所有其它时钟沿由于有效信号和接受信号其中之一或两个都是低而没有发生传输。时钟在图2中被显示,通过显示其时钟沿的跃迁而有助于讨论。图2所示的传输协议是优先等级协议中之一,其中接收对象指示已准备好接收而不须预先了解发送对象的状态。
图3是一个方块图,说明一个协议寄存器50。该寄存器是在一个输入界面和一个输出界面之间的一组存储元件。图3中的界面利用如图2中详细说明的相同协议。该输入界面利用输入_接受(in_accept)信号来指示存储元件52和54能被更新,如果输入_接受是高,存储元件54存储输入_数据(in_data)上的值,以及存储元件52存储输入_有效(in_valid)上的值。值得注意的是,存储元件52和54可以保持一个或更多个(有效,数据)值对(value pairs)。该输出界面显示存储元件52在输出_有效(out_valid)上最久的值和存储元件54在输出_数据(out_data)上最久的值。当输出_接受(out_accept)信号是高的时候,在所述输出_有效和所述输出_数据上的值被改变为下一个次久的(有效,数据)值对,否则它们不改变。存储元件56包含所述输出_接受信号的历史记录并被用于计算信号所述输入_接受的下一个值。
图4是另一个协议数据寄存器70的方块图,其包括存储元件72、74、76和78。存储元件72、74和76对应于图3中协议寄存器50的存储元件52、54和56,它们的操作也与之相似,这些元件的论述为了简洁而被省略。存储元件78扩展寄存器70以便也存储包(Packet)标识符值的历史记录。图3中的寄存器50存储(有效,数据)对的历史记录;图4中的寄存器70存储(有效,(数据,包_标识(packet_id)))三元组的历史记录。在每三元组中,一个高有效信号值指示(数据,包_标识)对值是否是有意义的。若该有效值为低,则该(数据,包_标识)对不能被使用,或一个未定义的结果可能发生。该(数据,包_标识)是一个对,其中包标识值指示数据值在一个较大数据群或数据包中的位置。通常,包消息将包含比能被同时并行传输的更多的数据,并且该消息将被分离为多个数据“字(words)”。这里使用的术语“消息包(message packet)”和“字”是要在最广泛的意义下来解释,并不是隐含任何特定的结构、形式或限制。因此,多数据组、或字可能需要被发送以传输一个单个消息包。
在一个实施例中,包_标识值是一个单比特,而当然也可能是一个较大群中或消息包中数据的成员身份的任何指示。在一个特定的实施例中,所述包_标识的一个低值指示它是一个消息包中的最后一个字,其它全部的字对于包_标识将具有一个高值。根据这个指示,消息包中的第一个字通过检测一个的高包_标识值来确认,所述高包_标识值紧接在当前字之前的字的一个低值之后高。可选择的声明,所述包_标识的第一个高值指示一个消息包中的第一个字,所述高值跟随在一个先前包_标识的一个低值后面高。如果利用一个单比特包_标识,仅第一和最后字能被确认。
图5说明了一个包括组合逻辑的协议寄存器80。图5中的协议寄存器80类似于图3中的协议寄存器50,但包括一个在输出界面上的逻辑87。在图5所示的实施例中,该逻辑87是一两个输入的或(OR)门。该逻辑87将来自寄存器82的否定输出_有效信号与输出_接受信号结合以确保协议寄存器80总是对次久的(有效,数据)进行更新,即使输出_有效为低。对此行为的实际使用在下面进行详细说明。
图6A-6E是说明组成流水线(pipeline)90的一串协议寄存器80的行为的方块图。该流水线90包括9个寄存器,标为R1-R9。图6A-6E中的每一个图说明一个不同的时间周期,t1-t5。该流水线90利用来自下一个接收对象(未示出)的输出_接受信号,如上所述,当该下一个接收对象不能接收数据时驱动该输出_接受信号为低,该输出_接受信号在序列t1-t5中总是为低,指示接收对象在t1-t5期间并非正在接收。再次参考图5,存储位置86计算一个输入_接受信号,并将其发送回下一寄存器。例如,寄存器R1的输入_接受信号是寄存器R2的输出_接受信号,以此类推。在这种方式下,来自接收对象的输出_接受信号沿着流水线90次序向下发送。
参考图6A,在时间t1,该流水线90保有三个有效字D1、D2和D3,该流水线90保有被认为无效的其它数据。有效数据被表示为这些单个寄存器中的阴影盒,而无效数据被表示为非阴影盒。如上所述,在每一个周期中,该流水线90采用一个来自下一接收对象的输出_接受信号。该流水线90也接受另一个来自发送对象(未示出)的(有效,数据)对。在图6A(时间t1)中,数据D4的一个第四有效字被发送至该流水线90。
因此,在时间t1,有有效数据D1、D2、D3的三个字,其全部被存储于该流水线90分开的协议寄存器R2、R5及R8中。在中间输出_接受信号为高的每一个周期中,这些(有效,数据)对前进到下一寄存器。在周期t1中,图5中的逻辑87允许寄存器R1被更新,即使出现R1的输出_接受为低。在周期t2和t3,R2的中间输出_接受因R2包含无效数据而保持高。图5中的逻辑87的作用是,除去该流水线90中的任何无效数据字,以及确保该流水线90中的每一寄存器R1-R9仅在它正存储有意义的数据时停止处理。
逻辑87的动作在全部寄存器R1-R9之间被重复,并且允许D1、D2及D3之间的所有无效数据在周期t5被去除。值得注意的是,即使出现在R1的输出_接受被保持为低,指示接收对象并非正接收数据,这个无效数据也被去除。在其它方面会是浪费的周期中,本发明的实施例允许该流水线继续有效地处理数据。
图7是一个协议寄存器100的方块图,该协议寄存器100结合了协议寄存器70(图4)和图5中的逻辑87两方面,该协议寄存器100包括存储位置102、104、106和108,以便存储如图4所述的各单独信号。一个逻辑元件107包括一个对应于图5中的逻辑87的“或”(OR)功能。当然,该逻辑元件107是能由提供相同功能的任何组合门来形成。
图8是一个示意图,用以说明根据本发明实施例的一个具有单一历史记录的协议寄存器100的一个实现。图8中的该协议寄存器100包括作为边沿触发时钟的“D”型触发器(flip flop)说明的存储寄存器,。此外,某些触发器包括一个允许输入(enable input),当该允许输入为高时其仅允许输入值在上升沿(positive edge)被传送到输出。这里的描述利用一个主同步时钟(未示出)来说明操作,而该电路可适用于执行如下所述的异步时钟。
D型触发器132、134和138形成第一寄存器组能够存储一个(有效,数据,包_标识)三元组值(value triples),这个寄存器组命名为“侧寄存器(side register)”130。D型触发器122、124和128形成第二寄存器组能够存储另一个(有效,数据,包_标识)三元组值,这个寄存器组命名为“主寄存器”120。多路复用器(Multiplexer)142、144和148形成一个逻辑组,其允许主寄存器120被加载入来自输入(若信号输入_接受为高)、或来自所述侧寄存器130(若信号输入_接受为低)的一个(有效,数据,包_标识)三元组值。
如前所述,数据值的宽度能是任何数量的比特。
逻辑功能127和137对应于图5中的逻辑87,并且其详细功能这里不描述了。寄存器126创建延迟一个周期的输出_接受的一个复本,其变成输入_接受(忽略逻辑功能127和137的作用)。
当输入_接受为高时,侧寄存器130被载入所述输入的三元组,否则该侧寄存器保留先前的三元组值。多路复用器142、144及148及输入_接受与输出_接受的组合控制主寄存器120的作用。表1为主寄存器的操作。
表1

表1显示该协议寄存器110有四个状态正常、正停止、已停止及开始。正常状态是指寄存器正正常工作时-将下一个三元组值直接从输入界面传送到输出界面。正停止状态发生在输出界面输出_接受信号变为低,指示接收对象不能接收数据,且输入界面输入_接受信号尚未变为低时。在正停止状态期间,一个新输入的三元组值的值可被接受-其被存储在侧寄存器130。已停止状态是在输入和输出界面都不传送任何数据且寄存器120与130都充满了有效数据时。开始状态是在输出界面传送最久的三元组值而输入界面已经停止时。在开始状态,保存于侧寄存器130的次久三元组值被传送到主寄存器120。协议寄存器110的状态转换图在图9中被给出,显示所述状态以及导致每一状态改变的输出_接受信号的转换。
图10显示了构成一长度为5的包的集成的(有效,数据,包_标识)三元组值的两个可能视图。每一个三元组值被标记为一个字,W1-W5。寄存器视图显示该包由有效的与无效的三元组值所组成,利用阴影盒表示有效例。当有效为低时,包_标识信号是未定义的,如同那些数据信号一样。所述包_标识信号是一个单比特信号,其中低表示所述包中的最后一个字。如上所述,由低到高的包_标识转换决定包中的第一个字。
图10中的包视图通过仅画出有效字来抽象有效信号状态,这是多字包的最方便的视图。
图11显示的是,在每一长度为5字的情况中,两个相同长度的包如何能被逐字地结合。在图10中的包视图中,作用非常简单每个字被分开地结合以生成一个长度5的新包。逐周期(cycle-by-cycle)的行为是更复杂的,并且图10中的寄存器视图说明每一个包中的有效信号如何影响实际操作。
图11使用两个包,A与B,每一个都有5个字并分别被依次标识为A1-A5和B1-B5。在图11的范例中,这种结合产生一个长度5的新包,每一输出字为A1+B1,A2+B2,…,A5+B5。
图11显示了从T1到T10的每一周期内的操作。在周期T1,输入字A1与B1二者被接受并且A1+B1的和输出。在周期T1的输出(有效,数据,包_标识)的三元组值为(1,A1+B1,1)。在周期T2中,因为B2是无效的,没有加法发生,所以A2将等待B2直到周期T5,那时A2和B2二者都出现且能被相加以产生输出三元组值(1,A2+B2,1)。在周期T2、T3及T4,输出三元组值是(0,X,X),其中X是任何未定义的值,因为没有有效输出。在周期T6,A3和B3是可用的且输出三元组值是(1,A3+B3,1)。在周期T7,B4在输入口,但必须等待A4,产生无效的输出三元组值(0,X,X)。在周期T8,A4和B4被结合起来产生输出三元组值(1,A4+B4,1)。在周期T9,B5是在输入口,但必须等待A4,产生无效输出三元组值(0,X,X)。在周期T10,A5与B5二者都能被接受以产生最后的字(1,A5+B5,0)。
在图11中,包_标识字段能为包A字包_标识字段的一复制,或从包B字复制。该位置是对称的,因为在这个示例中,这些包必须是相等长度。图11显示了这些无效字如何不被破坏,而根据进入包(incoming packets)中的无效字的相对位置被重新排列在输出包中。合并这些包所需的时间周期总是至少如最长包一样长。
图12说明一个传统设计的先进先出(FIFO,First-In First-Out)元件144如何能被转变为图3中的协议寄存器50。一个传统的FIFO元件144能是同步的,利用一主时钟、或异步的,其中输入界面和输出界面是利用独立的、无关的时钟来分别被记时的。该传统FIFO元件144利用一个推进(push)信号将输入数据推进入FIFO。当FIFO是满时,该FIFO产生一个满信号。当满是高时确立推进信号的行为是未声明的,这是因为一些实现丢弃了所述输入数据并且在这些条件下一些简单地忽略了该推进信号。类似地,该传统FIFO元件144利用一个弹出(pop)信号从FIFO输出数据。当FIFO为空的时候,还提供了一个空(empty)信号。类似于推进/满问题,当空信号是高时确立弹出信号是未定义的,因为一些实施输出未定义的值同时在这些条件下其它者忽略该弹出信号。
图12说明了该FIFO元件144是如何通过加入逻辑功能140、141、142及143而被转变为图3中的协议寄存器50的。该输入_数据和输出_数据信号正好对应于该FIFO元件144的输入和输出数据端口。反相器(Inverter)140确保如FIFO为非空则输出_有效为高,即在FIFO元件144上有数据。反相器142确保如FIFO为非满则输入_接受为高,即在FIFO元件144上仍有可用空间。具有两输入端的与(AND)逻辑功能141和143确保该FIFO元件144的任何可能未定义的行为是通过移除非法状态来排除的,所述非法状态为推进(push)=高,同时FIFO元件144是满;且弹出(pop)=高同时该FIFO元件144为空。
图13说明如何利用图3中的协议寄存器50、或如上所述的一些示例协议寄存器、或其组合来创建硬件对象。图13中顶部的示例显示了一个简单流水线(pipeline)级,其中有一个输入端及一个到硬件对象150的端口。该硬件对象150利用消息与系统的其它部分进行通信,这些消息能利用图10所述的打包(packet binding)方式来构建,消息的内容与结构并非由图10中的打包方式所规定,并且任何消息的形式与内容是容易被构建的,包含,但不限于数据、操作数、结果、命令、指令、路由方向、消息状态标志及内部结构标识符。
所有消息都被异步处理。对于输入端口,异步意味着能在任何时间接收一个消息-如输入消息不能被硬件对象150处理时,唯一动作是阻止该输入。如果一个消息的任何部分不能被采用或处理时,则由协议寄存器155驱动它的输入_接受信号为低来实现。对于输出端口,异步意味着仅在准备好时能够输出一个消息-如输出消息并未准备好时对于硬件对象150的唯一动作是什么都不输出,这由协议寄存器156驱动它的输出_有效信号为低来实现。
具有控制硬件对象150的动作的异步消息对创建直接对应于软件对象的行为与性质的硬件对象是很有用的。在硬件对象150内部的电路系统151能为任何电路的组合,因为协议寄存器155与156将该电路系统151与任何周围的电路系统隔离并且因此具有预料之外的副作用(sideeffects)。另外,利用异步消息除去外部所产生的任何时序问题,因为消息能在任何时间被接收和输出。
图13中所包含的是该硬件对象150的一个二选一的实现。硬件对象152和硬件对象150之间的关系将说明如下,但重要的是需要注意协议寄存器157和158能直接分别对应于协议寄存器155和156。另外,电路系统153可与电路系统151完全相同。硬件对象152包含一简单FIFO 154和一额外的协议寄存器159,FIFO 154与协议寄存器159的动作是缓冲与延迟任何输入消息。在一同步系统中,与硬件对象150比较时,这种延迟可能导致硬件对象152的操作中等待时间(latency)的变化、但可能在通过量或功能上不具任何影响。在一非同步系统中,没有任何时间与等待时间上的严格概念,并且所以硬件对象152和硬件对象150具有一致的行为。
图13中的内部协议寄存器159显示出在一硬件对象内部协议寄存器能具有有用的功能,并非只在边界。本发明的较佳实施例中,在任何有用地使用该寄存器时,专门地使用该协议寄存器。
图14显示了一个简单接合(join)与简单分叉(fork)功能,每一个具有协议寄存器的不同结合。
所述接合功能160对所有对应于图10中打包方式的消息进行操作,一个消息被详细说明于图13的说明中。一个最简单形式的接合功能160具有两个输入端161和162,一个输出端168,并且使在两个输入端161和162所接收的消息同步。该同步是仅通过在输入端161与162都具有一个消息的第一字时开始输出消息、并仅通过在输入界面161与162都已经接收开始同步处理的消息的最后一个字来完成。
所述分叉功能163对所有对应于图10中打包方式的消息进行操作,一个消息被详细说明于图13的说明中。一个最简单形式的分叉功能163具有两个输出端165和166、一个输入端164,并将使在输入端164所接收的输入消息复制到两个输出端165和166。该复制过程仅通过在输入端164具有一个消息的第一字时开始该执行,并仅通过在输出界面165和166都已发出开始处理的该消息的最后一个字来完成。
图3中的协议寄存器50在图14中被显示为一个填满的矩形,作为一个示例,矩形167表示一个协议寄存器。图14显示了所有产生相同分叉和接合功能的等效拓扑-这些协议寄存器的有效放置(effect placing)并不改变其功能。如图13的说明中所做的详细解释,将协议寄存器插入到一非同步系统并不影响时序或功能。
图14中的不同拓扑显示出能任意做出插入一个协议寄存器的决定。在本发明的较佳实施例中,寄存器被置于一集成电路(IC)上以便使每一个协议寄存器具有近乎相等的电负载及因此与之相似的时序特性。通过执行此规则,每个协议寄存器基本上一致地工作。如果硬件对象利用协议寄存器作为如图13所示的端口来构建时,该硬件对象的输入和输出端口将具有一致的功能及电性能,独立于该IC上被选择来实现硬件对象的协议寄存器,这允许硬件对象能被重新定位或重新被举例而无副作用,对于硬件而言的一个重要特征是硬件构造一个软件对象,该软件对象的例子被假设在任何地点任何时间行为都一致。
图15给出了图8中的协议寄存器实现110如何能被扩展产生一个协议寄存器,所述协议寄存器利用异步时钟,clk1和clk2,分别提供给输入与输出界面不重复或丢失一个(有效,数据,包_标识)的三元组值。D型触发器171、172、173和174执行一个同步功能,借此,一到同步器的转变可能产生一亚稳定的输入电压,并且该同步器的动作是(随机地)将该亚稳的电压分解为一个有效高或低电压。该同步器的分辨率(resolution)可以是随机的,因为在该亚稳定事件后,原始转变需要至少两个周期能保持稳定,因此真逻辑值将总是在下一周期被正确地取样。在很多系统中,超过两个D型触发器(171,172或173,174)能被串连以降低一个亚稳定输出电压的可能性,或者一个特定地同步器元件能被用来代替D型触发器171,172,173及174。
图15显示出有效与接受信号是明确地被同步。输入_数据和输入_包_标识(in_packet_id)信号被同步地取样,并且图15中的逻辑动作确保当输出_有效和输出_接受为高且完成一个到接收协议寄存器(未示出)的转换时,输出_数据和输出_包_标识(out_packet_id)信号不改变。
图15中的有效和接受逻辑创建一个锁存器(latch),借此一个逻辑高值被经由同步器之一被传送并且不能被重置(reset)为低直到在其它同步器中对应的高值被接收。
在该重置状态中,关键的节点175与176是低,且177与178是高,这是该电路的静止状态。在该静止状态中,主要输出的输出_有效为低且输入_接受为高,即该寄存器为空的且准备开始。具有输出_有效=低意味着输出_接受的状态是与该静止状态无关。下一状态仅能在输入_有效变为高时产生,因此输入一个(有效,数据,包_标识)三元组值。一个状态寄存器179确保节点177将能与在下一周期上的输入_接受一起变为低,这将确保不再有输入数据能被接受。节点177的低值是利用触发器171及172被同步,最后在节点178上产生一个低值。随着节点176与178都为低,输出_有效被驱动为高。一个状态寄存器180记录转换发生时的时间,即,当输出_有效与输出_接受二者都为高时的时间。状态寄存器180确保节点176在紧跟转换的下一个周期内变为高,让节点176为高将迫使输出_有效为低以使数据的转换不被重复。节点176上的高值利用触发器173及174被同步,最后在节点175上产生一个高值。
关键节点175与176为高且177与178为低的状态是一休息状态,其中一个转换已经完成。在该休息状态中,让节点175为高将开始一串事件,借此,节点177、178、176和175最终都回到它们各自为低、低、高和高的静止状态。在这一点,在输入_有效变为高时开始一个新的转换。
图16是一个时序图,说明如何由一个主时钟来构建不同的时钟频率。在图16中,产生两个“异步(asynchronous)”频率,in_clk和out_clk。这些频率总是低于主时钟频率master_clk,并且不必具有相同的符号间隔(mark-space)或甚至一致的时钟沿。在图16中,对于master_clk的每15个正时钟沿,在每个in_clk与out_clk中有4个正时钟沿(若假设重复该序列)。这意味着in_clk与out_clk两者的频率都是master_clk频率的4/15,但在in_clk与out_clk间时钟沿的不同布局表示这两个时钟实际上是彼此不同步的。
图16显示出实质上非同步的时钟能相对容易地由一主同步时钟来产生,并且进一步地,对每一输出时钟具有任意频率分割率(frequencydivision ratios)。在图16中,in_clken是一个允许信号(与master_clk同步),其被在master_clk的负沿(negative edge)上取样,并且随后被用来作为一个具有master_clk的与(AND)功能的标记以便产生in_clk。类似地,out_clken是一个允许信号(与master_clk同步),其在master_clk的负沿被取样,并且随后被用来作为一个具有master_clk的与功能的时标以便产生out_clk。图16所说明的时钟图解为已知的伪异步时钟(pseudo-asynchronous clocking)。
图17显示了图8中的协议寄存器实现110如何能被扩展来产生一个协议寄存器,其利用一伪异步IN_CLK与OUT_CLK分别用于输入与输出界面,而不须重复或丢失一个(有效,数据,包_标识)三元组值。伪异步IN_CLK与OUT_CLK产生于MASTER_CLK及如图16所述的in_clken与out_clken。图8的逻辑被复制在代表IN_CLK的阴影区域并产生一个协议寄存器196。该阴影区域中的所有D型触发器利用IN_CLK来计时,在命名为MASTER_CLK的非阴影区域内增加的逻辑用于确保协议被重新安排,以至于在命名为OUT_CLK的阴影区域所表示的输出界面被正确的形成并对齐于该OUT_CLK信号。D型触发器190利用MASTER_CLK信号来计时。
图17的非阴影区域中的逻辑是以一方式来设置以确保操作与图8中的实现一致,如果IN_CLK与OUT_CLK是一致的,甚至以in_clken与out_clken永久为高的最快速率。在此情况下,该逻辑运算是清晰的。逻辑门191总是输出一个低值,如同D型触发器190。逻辑门192、193及194因此是在通过模式(pass mode)并且输出_接受与输出_有效的状态直接被协议寄存器196控制。
对于其它情况,其中图17中in_clken与out_clken并非永久为高时,在非阴影区域的这些门被控制以使输出_有效与逻辑门193的输出(其是以IN_CLK所计时的协议寄存器196的输出_接受)是在正确状态当下一个in_clken尚未由驱动输出_有效为低来确立时,逻辑门192去除复制输出_有效的可能性,并且逻辑门193确保“输出_接受”被扩展(且未遗漏)直到通过驱动门193的输出为高的下一个in_clken确立。
硬件对象图18说明了一个硬件对象的功能图。如上所述,硬件对象包括受一些协议寄存器限制的电路系统,这些协议寄存器能是与如上所述相同的寄存器。寄存器的存在一点也不影响电路系统的逻辑流,而被用来通过分割长信号线来平衡电负载。每一硬件对象是被完全封装且不受任何其它对象状态的影响。这些硬件对象通过发送消息或消息包来彼此通信。这些包能包含指令或数据、或二者。在某些实施例中,一个硬件对象的内部状态可以仅通过利用消息来被询问或改变。一旦一个硬件对象收到指令和适当数据,接收的硬件对象能处理这些数据以产生输出,该输出能随后被发送至另一对象。
在所述的开发系统中,硬件对象通常是中等级别纹理型(medium-grained)的,即,非最简单功能,比如一个与(AND)门,但也不是一个极度复杂的功能,其将倾向破坏所述硬件对象集的一般本质。中等级别纹理型对象的一些范例包含IO结构、微处理器、RAM、及有限状态机(FSM)。某些对象是非常通常的用途;其它的具有一固定功能。对象能有子功能,其能被继承,例如一个乘法累加(MAC)对象能在某些应用中充当一加法器或一乘法器。
硬件对象300包含一组特殊的中心电路系统304,其典型地被至少一个输入协议寄存器310与一个输出协议寄存器310所限制。在图18中,多数协议寄存器310被给出。实际上,由于协议寄存器310的存在和/或布局不影响电路操作,所以有可能具有一个硬件对象,其没有任何协议寄存器而不会破坏对象的功能或操作的能力。相反地,一硬件对象300可包含数打的寄存器,在该中心电路系统304内部和在边界处。将一协议寄存器310置于任何地方的能力能够被用来排除形成在一个芯片中的长信号线,通过选择平衡电阻性与电容性负载的物理位置。该协议寄存器310可稍微彼此不同,因为某些寄存器可以是很小的而同时其它寄存器可具有额外的特征或能力。典型地,协议寄存器可由它们能同时传送地数据信号的数目来区分,示例系统可包括几类不同类型的协议寄存器。
硬件对象300可单独放置,但其与多个硬件对象联系在一起是更有用的。图19显示了9个硬件对象300,标示为U1-U9。这些硬件对象300中的两个,U4和U7,是独立的,且在这个示例中不与一硬件对象相关联。多数硬件对象300能被结合以产生其它硬件对象,其比单个硬件对象自身具有更多或更好的功能。如图19中所示,硬件对象U1、U2、U3和U5被彼此连接产生了一个硬件对象320,该硬件对象320可简单地形成为一个特定的独立电路,具有其组成元件间的内部通信。然而,利用本发明的实施例,单个的硬件对象不会简单地因为它们与其它元件结合而失去它们的一般性。相反地,由较小的硬件对象的集合来构建效力更大的硬件对象是利用这里所包含的发明概念的一个明显优点。
图19也说明了通过结合硬件对象U5、U6、U8及U9所形成的另一个硬件对象330。从一个功能角度来看,U5同时是硬件对象320与330二者的一个成员,是无关紧要的。在某些情况下,共享的功能来自于拥有由分离的硬件所组成的硬件对象U5,并且硬件对象320与硬件对象330的每一元件功能操作在独立的硬件上。在另一情况中,硬件对象320与硬件对象330的元件功能运行在硬件对象U5内的共享硬件上。分时功能(time-sharing functionality)必须出现于硬件对象320与硬件对象330中,以确保所述硬件能被任何适当优先级或性能标准分享。
图20A-20C给出了多个示例硬件对象300,每一个都具有一个不同的中心电路系统304。图20A显示了一个硬件对象300,其在它的中心电路系统304中包含一个乘法(Multiply)功能,该乘法功能可通过一硬件乘法器或现有技术中已熟知的其它方法来实现。这些协议寄存器310在硬件对象300与其它对象之间提供一个统一的数据界面。图20B显示了一个硬件对象300,其在它的中心电路系统304中包含一个存储器(memory)和一个移位器(shifter)。在这个示例中,存储器和移位器直接彼此通信,没有通过一个协议寄存器310。在该中心电路系统304内通信,除了可以使用硬件对象边界的协议寄存器外,可以利用内部协议寄存器310。或者其它形式的通信能被用在该中心电路系统304中。例如,如图20B中所示,存储器和移位器利用一直接总线协议可直接彼此通信。此外,如果需要,存储器和移位器能通过一串行线来通信。为了组装硬件对象与开发能被实现的系统,在任何硬件对象300的中心电路系统304中的元件如何彼此通信相对而言是不重要的。图20B中的这些硬件对象300也包括这些协议寄存器310,以有利于对象间的通信。
图20C显示了在中心电路系统304中还有其它元件的硬件对象300的一个另外示例。在此示例中,一个存储器与状态机被额外地连接到一个寄存器文件(register file)和一个算术逻辑单元(ALU,Arithmetic LogicUnit)上。这个示例说明了并非中心电路系统304地所有元件必须彼此直接通信,并且利用任何方法或协议的通信能被集成在它们自己的特定硬件对象300中。然而,在几乎所有的情况中,包含在中心电路系统304“边缘(edges)”的协议寄存器310将促进硬件对象易于聚集以产生效力强大且复杂的对象。
图21说明硬件对象不必由与其它硬件对象相同的边界所限制。在图21中,五个硬件对象被说明。固定在IC基板上的四个硬件对象是342、344、346及348。一个对象350由对象342、344及346的元件组成,该对象350包含完整的对象342与346,但仅包含对象344的一部分。特殊地,该对象350利用存储器及硬件对象344的中心电路系统304中的仅一个ALU。需要注意的是,该对象350仍被协议寄存器310所限制,因为该硬件对象344的中心电路系统304已在内部使用它们。在此实施例中,该对象350能利用在硬件对象344的中心电路系统304内部的协议寄存器310。对象344中剩余的ALU与整个对象348在此未被分配,但能被用来形成另一硬件对象。
对象利用发送异步消息来彼此通信,这在本发明较佳的实施例中能利用发送消息包到彼此来被实现,该消息包并不限制消息的内容或结构,这些消息可包含数据、指令、地址、和/或关于消息包自身的信息。图22说明两个硬件对象360和370,其利用它们各自的协议寄存器310之间的消息来彼此通信。本发明的实施例不要求任何特定消息格式或要求消息遵守任何特定协议。当然,当一个系统正被设计时,发送器与接收器之间对消息结构的理解必须被形成,以便发送器与接受器能正确地解释这些消息。
图22还说明了一个示例消息380,其包含10个字,该示例消息380随一路由命令开始,该路由命令可能是一个目标地址或一个诸如“ROUTELEFT”的固定命令。当硬件对象的一系统被连接并固定在一个可重新设置的芯片上时,如下所述,在IC基板上的每一个硬件对象可以被分配一个唯一的地址。消息能根据这个唯一的地址、或者例如根据导向指令(steering commands)来指向。在路由信息之后,该消息380包含标记(flag),其能被用来识别包含在消息中的信息类型或甚至该消息的高阶结构,因为根据协议发送到协议寄存器310上的的消息能表现为好几种类型,所以标记能被用来指示哪些类型被使用。标记可以指示消息的形式,比如仅包含数据、包含指令,等等。图22中的示例消息380进一步包含一串指令和操作数以及将被接收对象370所使用的不同标记。在某些实施中,接收对象可将接收自一发送对象的某些或全部的指令与操作数简单地传递到另一对象。传递的消息被利用在其中第一对象将一个消息发送到未直接连接到该第一对象的另一个对象中。
图23说明了一个“消息分叉”对象400,其包括多个基本对象402、404、406、408及410。一个单一数据流A输入到对象400,并且产生两个输出A1与A2。该分叉能对包含在数据流A中任何数据或操作数进行操作。在该分叉基元对象402中,该消息流A被分成两个组件流(componentstreams)A1与A2。在它的最基本形式中,该分叉对象402简单地从数据流A复制数据来生成两个流A1及A2。在其它实施例中,该分叉对象402能对进来的流在其被分成组件流之前进行操作。例如,该分叉对象402可接受数据流A中的一个混合数字流并只将整数分到流A1及将浮点数分到流A2。分叉对象400的其它实施例能简单地分开流而无须对其进行操作,比如在一个特定范围的所有地址的消息能进入输出流A2,而所有其它消息进入输出流A1。在此方式下,大量进入的数据能穿过多个分开的并行过程来被分开。分叉的其它类型包括导向分叉(steering forks),其在一个固定方向对包进行操作除非遇到该消息包中的一个路由命令,在该点该导向分叉遵守该路由命令。虽然仅依照产生两个结果(resultant)数据流A1及A2来进行说明,但多数分叉对象能被连接以产生任何数量的结果流。
图23也说明了对象404与406能对消息流A2进行操作以产生非常复杂的分叉功能。类似地,对象408和410能对消息流A1进行操作以产生进一步功能。由五个对象402、404、406、408及410所形成地对象结构的重要性在于,消息流A1及A2是被并行操作的。例如,若多个流中之一被临时阻挡,则其它流继续处理。
图23并不限制任何流的长度尤其是,使得输出流B1与B2不同长度可能是必要的,即使在本例中,它们二者是由相同长度的输入消息所调用的。
图24说明了一个“接合(joining)”对象420,其接受两个输入流并接合它们为一个单一的流。类似于图23中所描述的分叉对象,该接合对象420能够采用几乎任何必要的形式来实现一个所期望功能。一个普通的接合功能是同步两个输入消息。在此情况下,两个输入消息都必须出现在任何输出流开始产生之前,而且一旦开始,同步处理过程直到每一输入消息全部已被接收才能完成。另一普通的功能是“交替接合(alternate join)”功能,其将第一输入消息复制以到达输出。一旦一个输入消息被接受,在其它输入上的另一消息等待该复制来完成。通常,该“交替接合”功能根据一种近来最少使用策略来作出公平决定,但普遍使用其它变体(variants),其具有固定输入优先级或充当在输入消息中编码的优先级。该接合功能,及它的类似的分叉功能,对一个异步计算系统是非常有用的,因为该功能能被用来产生一个在并行处理的输出间的计算次序。
图24给出了能通过将硬件对象结合在一起而产生的复杂接合功能。在对象422与424之间的反馈项429与430允许实现输入消息流431和432的非常复杂的结合。类似地,对象428能被用来后处理基本连接对象426的输出,使得最终接合对象420比该内部基本接合对象426复杂更多。类似于图23,该接合对象420的基本特性在于它的成分元(componentpieces)是独立操作的。
具有容易组合的硬件对象、独立操作以及利用如图21、23及24中所述的非同步消息来通信并不足以保证最大系统性能。进一步地,利用一个如上所述的变体协议寄存器确保每一系统内元件对象将继续处理数据,直到它被完全停止(当它不能输出且充满有效数据)。
如上所述的硬件对象能以硅或在另一种基板上以一种直接的方式来被形成。图25说明一个示例芯片450,其具有许多物理上形成的硬件对象454与455的实例。这些对象通过连接在协议寄存器之间的数据线来相互连接,这些协议寄存器具有上面所述的其它协议寄存器的性质。输入与输出接脚(pins)458给芯片450提供一个界面。标准通信协议,比如USB或火线(Firewire)可能被连接到芯片450,通过包含被编程来执行特殊连接协议的特别硬件对象454来连接。
在芯片450上形成的对象454和455的特别结合,能依赖于由芯片450所服务的应用类型来变化。然而,现代技术能支持非常大量数目的物理对象,因而使得适用性广泛。因为在硬件芯片450上的硬件对象能相对容易地进行设置与重新设置,该芯片450能较佳地作为一个可重新设置的标准零件,或RSP(Re-configurable Standard Part)。实现在RSP上的物理硬件对象实例的总数量可以是在100-100,000量级上或更多。不同物理硬件对象的总数量(此例中仅两个)将是相当少的,比如在10的量级。当然,任何类型的数目或硬件对象的总数目能被实现在该RSP上而不会背离在此说明的发明概念。
通过选择哪些硬件对象被实施在一个基本RSP上,特殊RSPs能对于特别的市场而进行优化。一个常见的示例是用于计算硬件的折中的芯片存储器能力(trading-off on-chip memory capacity)。例如,一个具有多个计算物理硬件对象,诸如加法器、移位器和乘法器,的RSP在DSP(数字信号处理)市场中是很有用的。在另一种情况下,具有更多的芯片存储器(on-chip memory)将有用于网络路由市场,其中存储大的数据组并缓冲网络包比纯数学计算更重要。
软件对象一旦软件对象被定义,本发明实施例允许通过开发相互连接的硬件对象的描述(description)来构建系统。最后,此描述被加载入一个RSP,如上所述,以及利用一个非常普通的结构产生一个完全编程的、非常特定的系统。一旦编程完毕,该RSP系统被完成且准备好用于操作。
为了创建相互连接的硬件对象的系统,硬件对象定义的软件描述被存储在一个对象库中。一个示例的库在图26中被说明了,在该图中被说明的是一个库对象A、B、C和D的集合。这些库对象是基元对象描述的预先定义的集合。唯一的消息协议和如上所述的每一硬件对象的封装的存在使得硬件对象的软件对象描述能够被嵌入于该硬件对象中。
在本发明中被实施的一个软件对象的基本特性包括独立执行、对象间的非同步消息、封装(encapsulation)和对处境不敏感。
独立执行是一个关键特性,其将软件从其所运行于的下述硬件的操作中移去,允许很多不同的软件结构来被有效地实现而无硬件限制。
异步消息是很重要的,因其允许软件描述能够独立于所有在硬件设计中的传统时序问题。另外,它强制任何实时软件功能都要被明确的定义于该软件中,而不是具有一些被处理器周期所定义的“实时”。
封装和对处境不敏感允许软件对象具有一致的功能与性能,无关于一个IC上硬件实现的物理位置,并无关于特定的IC类型。一旦一个硬件对象能被构建成·具有嵌入封装,·是对处境不敏感的·独立操作·异步通信·是真正的可重新定位的·能为任何大小·能为任何复杂性通过简单利用一个支持面向对象编程(OOP)的软件描述来建立硬件对象继承、多态性及模组化是相对容易的。因此,硬件对象具有严格遵守面向对象编程原则的软件描述。
一个对象从硬件角度与从软件角度之间没有任何功能差异,所有硬件对象能被单纯视为对象库软件基元的实例,所有软件对象能被视为完全封装的硬件对象的纯描述,在本发明实施例中,在硬件与软件角度之间存在一完全的、可证明的、一对一的映射。所述开发系统中的硬件/软件二分法是一基于协议寄存器与底层硬件对象的规则与关系的真实的从下而上的结构。所有软件行为与所有硬件对象的硬件具体信息被包含在对象定义当中-它们能被集中存储并能被继承。这允许创建新对象,因为所有硬件规则与关系能继承自子实例。
图26说明了对象A是由四个相互连接的基元对象组成,其中三个是基元类型#1而其中一个是类型#2。一旦对象A被放于库中,该对象本身是可被另外的对象所使用的。例如,对象B,类似于对象A,同样的也被显示为其它基元对象的集合,同时,对象D则仅是对象A与B的集合、而并非任何基元对象的直接实例。这些层次结构关系保存所有的面向对象编程性质,比如继承。然而,存储在库中的软件对象不需要被限制于基元对象。这将被在对象C的定义中说明,其包括另一个库对象B连同某些额外的互相连接的基元对象一起。软件对象层次结构也在图27中被说明,其显示许多个被分层地聚集成软件对象460的基元对象。软件对象462简单地是一个单一基元对象,而软件对象464和466则分别包括两个和三个基元对象。该库的新软件对象能通过定义一个新层的层次结构与抽象(abstraction)来创建。因为所有硬件的特定规则与关系是继承自这些子(children)对象,所以新软件对象的硬件信息被自动创建。在实际中,能利用C++、Java、或任何其它的面向对象编程语言来开发对象库。
系统开发在图28中说明了一个完整系统的示例软件模型。该图示出了一个MPEG2解码对象470,其由硬件基元的集合与来自一对象库的视频解码部分的预定义软件对象组装而成。该视频解码库480包含单独的基元对象P1-P7,连同一个移动对象(motion object)472及一个解压缩对象476。该移动对象472创建于两个基元,P3、P5,而解压缩对象474创建于三个基元,P2、P4及P6。该P6基元是一反离散余弦变换(DCT-1)基元对象。基元P1和P7是输入/输出基元对象。组装的该解码器470还包括利用一个外部帧存储(frame store)476,其在某些实施例中能利用片外存储器(off-chip memory)使其产生作用。参照该解码器的实施例,进一步的细节将在下面给出。
图28中的软件模型是该系统的一个真实的面向对象编程描述这些对象独立运行并且该编码只简单地是对象实例的一个集合。一旦一个系统被这样的一个软件模型来描述,它是可作为一个可执行的软件段(piece),且具有将该模型有效映射到硬件所需的结构信息。
一旦一个软件系统为一个软件集合,并且最终硬件对象被创建,该系统被映射到一个RSP 450(图25)以产生一个硬件产品。在操作上,当系统设计者设计该系统模型时,他或她直接利用来自对象库的特性,其依次被从下面的基本的物理硬件对象的特性直接产生。因此,当系统设计者描述所想要的系统时,该所期望系统的特性将已经具有下面嵌入的物理硬件对象的特性。从所期望系统到下面物理硬件对象的直接对应关系使得映射到RSP成为一个相对简单的分配过程。
在图29中,说明了一个示例的映射系统,该图说明了图28中的MPEG2解码对象470被映射到图25中的RSP 450,用以产生被编程为一个MPEG2解码器的系统芯片480。该解码器470的每一基元对象P1-P7被分配到该RSP 450的硬件对象454和455中之一。被设置为基元对象P1-P9的位于下面的物理硬件对象454和455的性质是相同于用来从对象库480(图28)开发解码器470的性质。解码器470的对象P1和在RSP 450上标识为“1”的已编程的物理硬件对象454都是输入对象,接受到该系统的输入消息。类似地,对象P7和标识为“7”已编程的物理对象455是输出对象,其传送已解码的视频。
包含解压缩对象474的基元对象P2、P4及P6被直接映射到在RSP 450上的三个分别标识为“2”、“4”和“6”的物理硬件对象上。该解压缩对象474的层次结构特性被保持在该RSP 450上,如阴影区域474所示。类似地,包含移动对象472的基元对象P3和P5被直接映射到分别标识为“3”和“5”的两个物理硬件对象上。移动对象472的层次结构特性被保持在RSP 450上,如阴影区域472所示。
图28的帧存储476是在该软件模型中此示例被标记为片外(off-chip)的,且因此未被映射在RSP 450上,而是创建了标识为“双向(to/from)帧存储”的界面信号。
不是所有的在RSP 450上的物理硬件对象454和455都被用于每一系统的实现。事实上,很可能的是许多物理硬件对象将不被使用。这些不被使用的物理硬件对象可以被关闭,或可以被设定以极低的时钟速率运行以便节省功率。
如上所述,硬件对象固有地包含软件对象的描述、功能和性质。此外,硬件对象具有额外的特性要求,特殊地一个使硬件执行所要的功能的设置二进制程序(configuration binary program),;所需要的硬件资源量;及管理硬件如何被连接的连接规则。在本发明的一个实施例中,仅有一个对象版本,其具有一种可能的下面物理硬件对象拓扑。在其它实施例中,有多种不同的拓扑以及下面的物理硬件对象的混合,这些物理硬件对象能被编程以创建一个对象(利用依附于对象的该设置二进制)。在后一种情况下,该对象被认为具有不同具体形式。
一个对象的每一具体形式具有完全相同的嵌入软件对象,而每一个具有不同可能的硬件拓扑及随后产生不同性能与能通过用户选择特定具体形式来交换的资源利用的混合。
图30说明了能被附加到一个软件对象具体形式的附加信息。软件对象490被说明了,其能为任何类型的对象描述,例如图28中的解码器470。当开发软件对象490的时候,选择一个物理硬件对象拓扑,并且产生一个连接规则列表。该连接规则明确指定拓扑为满足一特定目标所能忍受的最大与最小延迟,并且当基元对象被直接映射到RSP 450的硬件时必须被满足。参考如上所述的硬件对象,对能与每一硬件对象关联的协议寄存器数量有一实际限制。因此,对每一硬件对象相互连接的层次有一个对应的限制。换而言之,在一个RSP 450上的每一硬件对象是不大可能被直接连接到使用在软件对象中的每一其它硬件对象上的,因此,连接规则列表492被用来确保彼此接近(例如满足性能要求)的对象能是彼此接近、以及不需被直接连接的对象不必这样连接。参考图30的连接规则列表492,其表明A.d和A.d(两个硬件对象的端口“d”)之间的连接必须被直接连接,即,具有恰好1跳线(hop)的连接长度。其它对象无需这样直接相互连接,以及可分别被上至3个或上至7个的连接分开。实际上,如果未被直接连接的对象需要彼此通信,它们发送一具有一个地址或路由命令的消息到所要的硬件对象。
一个资源列表494指示多少数量以及何种类型的在RSP 450上的物理硬件对象形成软件对象具体形式的拓扑。当设计系统的时候,一个设计规则检查器能被利用来追踪在一个RSP 450上的可利用资源,并防止系统设计者在设计时超过物理上可用的资源数量。
连接规则492和资源列表494两者都是能利用继承来容易地从一个软件对象中的子基元推倒出来。仅基元对象具有一个定义的拓扑。
一个二进制列表496是在物理硬件对象中被载入指令存储器或设置寄存器中并控制特定物理硬件对象如何操作的一个微代码(micro-code)或微指令(microinstructions)的列表。例如,微代码能被存储于指令序列,以至于当硬件对象被初始化的时候,所读取的第一条指令是所要的用于硬件对象执行的第一条指令。
因为系统软件对象模型是与RSP 450上的硬件对象同构的,已设置好的RSP 450将如在该系统模型中所模拟的一样进行操作。
实际上,该二进制列表496将典型地被存储在某些类型的存储器中,其可以是EEPROM、闪存(flash)或其它类型的只读存储器,或位于RSP450内或外的其它类型的存储器。当RSP被加电的时候,一个初始化过程首先初始化所有的硬件对象到一个初始状态。一个物理硬件对象可被设置在复位(reset)以变成一个将自动地载入初始指令的功能。该初始指令随后被执行以使顶层的二进制列表496被载入RSP 450。该二进制列表能利用如上所述的消息包协议被分布到单独的硬件对象。一旦该二进制的第一部分被载入到它们各自的对象,这些对象可以开始工作,等待第一输入数据。
在图31中,说明了一个用于解释创建一个完全被编程系统的过程的流程图。在过程510中,一个流程500开始于将问题分割为它的组件部分(component parts)。接着,在过程520中,库对象被导入设计系统。随着系统被开发,在一决策530中,设计者决定是否有正确软件对象出现在库中。如果所需的对象未出现,比如对象尚未存在或需要一个新性能的具体形式,该设计者能在过程532中创建它们并在库中存储最新创建的对象。当设计完毕且所有必需对象都被包含在库中的时候,该设计在过程540中被测试。该设计在过程550中被检查。如果该设计未通过设计测试,比如连接规则不能符合,流程500返回循环并且创建一个新的对象具体形式,以及该设计被测试。一旦设计完毕,来自RSP 450的硬件约束(constraints)的列表被与设计特征相匹配,以使其能在过程560中被映射到已编程的RSP,如上所述。
本发明的实施例尤其适于高数据信息量的应用,因为在RSP 450上的硬件对象集合以大量的并行方式异步运行,这对于利用复杂算法来操作大量数据的非常大的系统来说,将产生难以置信的潜力。一些特别的非常适合的潜在应用包括,用于视频编码的动作估计、高分辨率的视频编码与处理、激光写入器的光栅算法、用于高速无线网络的加速器、极安全的加密、存储域网络、HDTV视频扫描、用于802.13、802.11g及其它无线协议的FEC、SNORT侵入探测、及用于显示速率变化的临时视频内插,等等。
本发明实施例的一个主要方面是完整性,具有一个固有能力以构建高性能集成电路且仅利用软件来改变它们。完整性意味着软件-硬件共同设计问题仅利用软件描述来消除。
利用本发明的实施例,软件和硬件角度、以及它们的实现是一致且相同的。这允许开发系统的使用者利用标准工具和语言来编写程序,以及随后直接将它们实现在硬件上,具有所有辅助的性能好处。
本发明实施例的使用者不需具有任何硬件知识或经验。这样的一个用户仅简单写或运用软件来产生一个系统,该系统能如同现今仅定制IC能提供的非常高性能系统一样的复杂。一旦该系统被定义在一个软件中,该软件定义被用于设置一个通用IC,其利用一个预存在的物理硬件对象集来创建。一个唯一通用芯片、所述RSP及连接有一软件对象库的结合,允许用户快速设计与测试一个系统,该系统是利用现今工具几乎不能被容易设计或具有如此多性能的系统。
实施例图32、33、34和35说明了如何利用简单对象来构建一个相对复杂对象的示例。该示例对象将两个流卷积在一起以产生一个该两个流的过滤后的形式(filtered version)。时域(time domain)中的卷积等价于频域(frequency domain)中的相乘(multiplication),并且被用于多个过滤器被串连的应用,比如在无线通信系统。设计的目标是创建卷积(convolution)对象,以便于多于一个的硬件乘法器能保持忙碌而不需具有将相同值同时无线传送至多个组件对象的全局连接。
图32给出了一个卷积基元对象,其中,六个协议寄存器形成了三个输入端口(标示为ui、wi、yi)和三个输出端口(标示为wi+1、ui+1、yi+1)。硬件对象中的电路系统是一个硬件乘法器和一个加法器。硬件对象中的连接被设置来执行如下操作wi+1=wiui+1=uiyi+1=ui*wi+yi图32也显示了该对象的一个示意图,来说明输入和输出端口、以及标示为“CP”的基元。
图33显示了用于图32的卷积基元对象的翻译码(pseudo-code)。这些端口被声明为通道(CHANNEL)类型的输入(INPORT)或输出(OUTPORT)连接,局部变量ui、wi、yi被声明为整数(integer)类型。程序中的第一代码行是通道a和通道b的接合功能,该接合功能直到两通道a和b都具有有效输入时才完成,在通道a所接收的值被分配给变量ui,而在通道b所接收的值被分配给变量wi。接下来两行,将ui和wi分别复制到输出通道d和e。该行“c→yi”等价于另一具有乘法硬件的输出的接合功能,并通过利用“接合(a→ui,b→wi,c→yi)”能被包含在第一行中,但是分离开这二者,如图33所示,允许乘法硬件继续进行即使在通道c上的输入尚未发生。最后一行指示ui*wi+yi的值是在通道f上被输出的。
图34显示了用于本实施例中的另一基元对象,其中,(该六个可用中)有五个协议寄存器形成了两个输入端口(标示为ui、wi)和三个输出端口(标示为ui+1、wi+1、yi+1)。硬件对象中的电路系统仅为一个硬件乘法器。硬件对象中的连接被设置为执行如下操作wi+1=wiui+1=uiyi+1=ui*wi图34还示出了该对象的一个示意图,说明输入和输出端口、及标示为“X”的基元,“X”为“乘法(multiplay)”的简写。
图35说明了图32和图34中的两个基元对象如何被结合在一个拓扑中以产生卷积对象。需要注意的是,所有连接保持点-点(point-point),其保持连线简单,并允许性能被基元对象所规定,而不由全局连线来规定。
卷积对象的功能由如下方程来给出y(i)=Σk=0ju(k)w(j-k)]]>0≤j<7在图35的示例中,为了简化,假设w(i)与u(i)对于i>3为零,而在一个真实串流系统(streaming system)中,比最前的四个更多的输入值能被使用。如果我们扩展该序列,每一输出项由下面的方程给出y(0)=u(0)*w(0)y(1)=u(0)*w(1)+u(1)*w(0)y(2)=u(0)*w(2)+u(1)*w(1)+u(2)*w(0)y(3)=u(0)*w(3)+u(1)*w(2)+u(2)*w(1)+u(3)*w(0)y(4)=u(1)*w(3)+u(2)*w(2)+u(3)*w(1)y(5)=u(2)*w(3)+u(3)*w(2)y(6)=u(3)*w(3)为了显示图35中的拓扑正确地产生这些项,首先检查输出y(0)。该输出y(0)是由基元对象600的yi+1输出所产生,其简单地是所要的u(0)*w(0)。接下来,检查输出y(1)。该输出y(1)由基元对象601的yi+1输出所产生,其是函数y(1)=yi+1601=u(1)*wi+1600+yi+1602]]>在如上的方程中,上标指示产生该输出的特定对象。对象600和对象602操作如下wi+1600=w(0)]]>ui+1600=u(0)]]>yi+1602=ui+1600*w(1)]]>通过合并最后四个方程,可以看到的是y(1)=u(1)*w(0)+u(0)*w(1)对剩下的输出y(2),...,y(6),继续进行高斯消元过程(the process ofGaussian elimination)。
所述系统的实现是直接依照以上的公开来制造,通常,实现细节留给系统设计者。特定硬件对象的单独选择、协议寄存器、消息格式等是实现特性,并可能需要凭经验被发现。本发明相比于现有方法,提出了一种首创(pioneering)的范例转移(paradigm shift)按照此方式进行系统的设计与实现。
因此,尽管一包含硬件和软件对象的集成电路开发系统的特定实施例已被论述,该特定参考不应被认为是对本发明范围的限制,而该范围是由以下的权利要求及其等效来决定的。
权利要求
1.一种芯片上的硬件寄存器,包括一第一多数个存储元件,用以存储一组数据,一表示所述存储的数据组有效性的信号,及一表示在一群所述存储的数据组中有关于前一数据组与后一数据组的成员身份的信号;及一更新输入信号,指示所述存储元件中的值能被所述后一组数据所取代。
2.如权利要求1所述的硬件寄存器,进一步包括一第二多数个存储元件,用以存储一复制数据组、一表示所述存储的复制数据组一有效性的信号、及一表示在一群所述存储的复制数据组中有关于其它数据组的成员身份的信号;一额外存储元件,是被构建来存储所述更新输入信号并产生一更新输出信号,其是从所述更新输入信号延迟一个周期;一第一组的一个或更多个逻辑元件,其被构建来产生一第一信号以便当所述更新输出信号被确立时产生一新复制数据组、一表示所述群中成员身份的新信号、及一表示将被载入到所述第二多数个存储元件的所述新复制数据组有效性的新信号;及一第二组的一个或更多个逻辑元件,其被构建以产生一第二信号以便当所述更新输入信号被确立且所述更新输出信号不被确立时导致目前存储于所述第二多数个存储元件的所述复制数据组被载入到所述第一多数个存储元件中。
3.如权利要求1所述的硬件寄存器,其中,所述第一与第二多数个存储元件包含边缘触发的触发器。
4.如权利要求1所述的硬件寄存器,其中,所述第一组逻辑元件包括一“或”功能,所述或功能具有一第一输入,是连接至表示在一群所述复制数据组中有关于其它数据组的成员身份的所述信号的一个否定信号,一第二输入,是连接至所述更新输出信号,及一输出。
5.如权利要求4所述的硬件寄存器,进一步包含有一多工器,所述多工器具有一第一输入,连接至所述第二多数个寄存器的一输出,一第二输入,将一原始输入连接至所述硬件寄存器,一输出,将一输入连接至所述第一多数个寄存器,及一输入,连接至所述或门的所述输出。
6.如权利要求2所述的硬件寄存器,进一步包括一个“或”功能,所述或功能具有一第一输入,连接至表示一群所述存储的数据组中有关其它数据组的成员身份的所述信号的一否定信号,一第二输入,连接至所述更新输出信号,及一输出。
7.如权利要求6所述的硬件寄存器,其中,所述输出被连接至所述额外存储元件的一输入。
8.如权利要求6所述的硬件寄存器,其中,所述输出被连接至所述第一多数个存储元件的一允许输入。
9.一种实现一个协议寄存器的方法,包括将数据并行加载入一第一与一第二组存储元件,所述数据包括一指示所述数据有效性的指示器、并包括一个作为一群中一成员的所述数据的一位置的指示器;接收一指示一被连接至所述协议寄存器的一输出的一接收对象的能力的第一接受信号,以便接受数据;接收一指示所述接受对象的能力的第二接受信号以便接受数据,所述第二接受信号在所述第一接受信号之后被接收;比较所述第一接受信号与所述第二接受信号;当所述第一接受信号与所述第二接受信号二者都不被确立时,将所述数据保留在两组的存储元件中;当所述第一接受信号与所述第二接受信号二者都被确立时,将新数据并行载入到所述第一与第二组存储元件中;当所述第一接受信号不被确立而所述第二接受信号被确立时,将数据从所述第一组存储元件载入到所述第二组存储元件中;及当所述第一接受信号被确立而所述第二接受信号不被确立时,将所述数据组保留在所述第二组存储元件中并将一新组数据载入到所述第一组存储元件中。
10.如权利要求9所述的方法,进一步包括当一个信号指示出目前存储于所述第二组存储元件的所述数据是无效时,总是将新数据载入到所述第二组存储元件中。
11.如权利要求10所述的方法,进一步包括当一个信号指示出目前存储于所述第一组存储元件的所述数据是无效时,总是将新数据载入到所述第一组存储元件中。
12.如权利要求9所述的方法,进一步包括当一个信号指示出目前存储于所述第一组存储元件的所述数据是无效时,总是将新数据载入到所述第一组存储元件中。
13.一种数据界面协议,包括多数个数据信号,包含一群指示器以指示一群中的所述数据的所述成员身份以及所述群中所述数据信号的一相对位置;一有效信号,以指示所述数据信号的所述有效性;及一接受信号,以指示出所述多数个数据信号与所述有效信号能被新的多数个数据信号来代替。
14.如权利要求13所述的数据界面协议,其中,当所述接受信号是不被确立且所述有效信号是不被确立时,所述数据信号与有效信号能进一步被代替。
15.如权利要求13所述的数据界面协议,其中,所述群指示器是一单个包识别符信号。
16.如权利要求15所述的数据界面协议,其中,所述包识别符信号仅在一群数据组的一最后元件上不被确立。
17.如权利要求15所述的数据界面协议,其中,一个随后群的数据组中的一第一元件是能通过一已从不确立状态变成一确立状态的所述包识别符信号来决定。
18.一种数据流水线元件,包括一输入界面,包含用以存储多数个数据信号的寄存器,所述数据信号包含有一群指示器以指示一个群中的所述数据信号的所述成员身份以及所述群中所述数据信号的一相对位置,一有效信号,以指示所述数据信号的有效性,及一接受信号,以指示所述多数个数据信号以及所述有效信号能被新的多数个数据信号代替。
19.如权利要求18所述的数据流水线元件,进一步包括一个输出界面。
20.一数据流水线,包括有多数个次序连接的权利要求20的所述流水线元件,所述流水线能够在传输中具有多于一个数据组值,其中如果在传输中所有所述数据组的所有所述有效信号是不被确立时,所述流水线逻辑上为空;如果在传输中所有所述数据组的所有所述有效信号是被确立时,所述流水线为满;及只有当所述流水线是满的,到所述流水线的一个输入界面接受信号是不被确立。
21.一种接合元件,包括一第一输入界面,其包含第一寄存器以存储包含一群指示器以指示第一群中的所述第一数据信号的所述成员身份以及所述第一群中的所述第一数据信号的一相对位置的多数个第一数据信号、一指示所述第一数据信号的所述有效性的有效信号、及一指示所述多数个第一数据信号与所述有效信号能被新的多数个第一数据信号代替的接受信号;一第二输入界面,包含第二寄存器以存储包含一群指示器以指示一第二群中的所述第二数据信号的所述成员身份以及所述第二群中所述第二数据信号的一相对位置的多数个第二数据信号、一指示所述第二数据信号的所述有效性的有效信号、及一指示所述多数第二数据信号与所述有效信号能被新的多数个第二数据信号代替的接受信号;一输出界面;以及接合电路系统,其连接至所述输入界面与所述输出界面,并被构建来仅对接收自所述第一输入界面、所述第二输入界面、或者是所述第一与所述第二输入界面两者的完整数据群进行操作。
22.如权利要求21所述的接合元件,其中,所述接合电路系统被构建来对在所述第一输入界面上的所述数据群与所述第二输入界面上的所述数据群的一成对的组合上执行一个功能。
23.如权利要求22所述的接合元件,其中,所述接合电路系统被构建来在接收来自所述第一输入界面上的所述数据群的一第一数据成分与来自所述第二输入界面上的所述数据群的一第一数据成分之后开始结合。
24.如权利要求22所述的接合元件,其中,所述接合电路系统被构建来仅在接收来自所述第一输入界面上的所述数据群的一个最后数据成分与来自所述第二输入界面上的所述数据群的一个最后数据成分之后结束所述结合。
25.如权利要求21所述的接合元件,其中,所述接合电路系统被构建来对所述第一输入界面上的所述数据群与所述第二输入界面上的所述数据群执行一个选择功能。
26.如权利要求25所述的接合元件,其中,所述接合电路系统被构建来从最早出现一第一数据成分的那一输入界面上选择所述数据群。
27.如权利要求25所述的接合元件,其中,所述接合电路系统被构建来仅在接收所选择的输入界面上的一最后数据成分之后做一新选择。
28.如权利要求26所述的接合元件,其中,所述第一与第二输入界面二者同时出现一第一数据成分,并且其中所述接合电路系统被构建以作出所述选择的决定。
29.如权利要求28所述的接合元件,其中,所述接合电路系统被构建以选择最近最少被使用的所述输入界面。
30.如权利要求28所述的接合元件,其中,所述接合电路系统被构建以随机选择所述输入界面。
31.如权利要求28所述的接合元件,其中,所述接合电路系统被构建以根据一优先级来选择所述输入界面。
32.一分叉元件,包括一输入界面,包含寄存器以存储包含一群指示器以指示一群中的所述数据信号的所述成员身份以及所述群中所述数据信号的一相对位置的多数个数据信号、一指示所述数据信号的所述有效性的有效信号、及一指示所述多数数据信号与所述有效信号能被新的多数个数据信号代替的接受信号;一组分叉电路系统,连接至所述输入界面并被构建来仅对接收自所述输入界面的完整数据群进行操作;一第一输出界面;及一第二输出界面。
33.如权利要求32所述的分叉元件,其中,所述分叉电路系统被构建来复制所述输入界面上的所述数据群并将所述复制群送至所述第一输出界面及所述第二输出界面。
34.如权利要求33所述的分叉元件,其中,所述分叉电路系统被构建来在接收所述输入界面上的一群的一第一数据信号之后开始复制。
35.如权利要求33所述的分叉元件,其中,所述分叉电路系统被构建来在发送所述第一输出界面上的一群的一最后数据信号并且在发送所述第二输出界面上一群的一最后数据信号之后结束复制。
36.一用以一次一个字地接受数据流的数据界面,所述数据界面包括一输入,用以同时接受来自连接至所述数据界面的前一级的一条或更多条数据作为一数据字,所述一条或更多条数据包括一消息包识别符;一输入,用以接受所述接受的数据字的一有效性的一指示;一输入,用以接受一种为被连接至所述数据界面的后一级的,接受由所述数据界面所传输的所述数据字的能力的指示,一负载电路被构建为,如果所述后一级接受所述数据字的所述能力的所述指示是肯定的、或者如果所述接受的数据字是无效的,所述负载电路致使所述数据界面从所述前一级载入下一数据字;以及一包检测电路,被构建来从所述消息包识别符检测一个新消息包的所述开始。
37.如权利要求36所述的数据界面,其中,所述包检测电路被构建来检测在第一数据字的所述消息包识别符与第二数据字的所述消息包识别符的一个数据状态转换。
38.如权利要求36所述的数据界面,其中,所述包检测电路被构建来识别一不被确定的消息包识别符作为一个消息包中的一最后数据字。
39.如权利要求38所述的数据界面,其中,所述包检测电路被构建来识别一个被确定的消息包识别符,所述识别符作为一随后消息包中的一第一字跟随在一消息包中的所述最后字之后。
40.一种在基板上的硬件对象,包括一输入界面,连接至一发送对象并被构建以产生一独立于来自所述发送对象的任何信息的输入接受信号,所述输入界面被构建来接受一个或多个来自所述发送对象的消息包;一对象核心,连接至所述输入界面并被构建来仅在接收任何消息包中的一数据组之后改变状态;以及一输出界面,连接在所述核心与一接收对象之间,所述输出界面被构建来产生一独立于来自所述接收对象的任何信息的数据有效信号且被构建来发送一个或多个消息包至所述接收对象。
41.如权利要求40所述的硬件对象,其中,所述发送至所述接收对象一个或多个数据包是与从所述发送对象接受的所述一个或多个消息包一致。
42.如权利要求40所述的硬件对象,其中,来自所述发送对象的一个所述消息包之一包含数据、一个表示所述数据一有效性的信号、及一识别一消息包中成员身份与所述消息包中的一相对位置的信号。
43.如权利要求40所述的硬件对象,其中,所述消息包可能包含多于一个的数据组。
44.如权利要求40所述的硬件对象,其中,所述对象核心被构建来接收非同步于所述对象核心的一时钟的一消息包。
45.如权利要求40所述的硬件对象,其中,所述对象核心被构建来发送一非同步于一接收对象的一时钟的一消息包。
46.如权利要求40所述的硬件对象,其中,所述对象核心包括一第一核心部分,被构建来对第一信息进行操作;一内部协议界面,连接至所述第一核心部分;以及一第二核心部分,连接至所述内部协议界面并且被构建来对第二信息进行操作。
47.如权利要求46所述的硬件对象,其中,所述内部协议界面在结构上完全相同于所述输入界面。
48.如权利要求47所述的硬件对象,其中,所述内部协议界面能被设置为所述硬件对象的一第二输入界面。
49.如权利要求46所述的硬件对象,其中,所述内部协议界面在结构上完全相同于所述输出界面。
50.如权利要求49所述的硬件对象,其中,所述内部协议界面能被设置为所述硬件对象的一第二输出界面。
51.一系统,包括一第一硬件对象,其形成在一基板上;一第二硬件对象,其形成在所述基板上;及一协议寄存器,其连接在所述第一与第二硬件对象之间,所述协议寄存器包含一第一数据寄存器用以存储消息数据、一第二数据寄存器用以存储一有效性信号、及一第三数据寄存器用以存储一包成员身份的信号。
52.如权利要求51所述的系统,其中,所述第一硬件对象包含所述协议寄存器。
53.如权利要求51所述的系统,其中,所述协议寄存器是与所述第一硬件对象与所述第二硬件对象分开的。
54.如权利要求51所述的系统,其中,所述协议寄存器将一指示所述协议寄存器接受数据的所述能力的接受信号传递至所述第一硬件对象。
55.如权利要求54所述的系统,其中,所述接受信号是由所述第二硬件对象所产生。
56.如权利要求54所述的系统,其中,所述接受信号是在所述协议接收一不被确定的有效信号之后由所述协议寄存器所产生。
57.一软件对象,其具有能通过接收非同步消息来被调用的方法,所述软件对象通过一个设置好的硬件对象来实现,所述硬件对象包含有一协议寄存器,其实现一软件方法界面;一对象核心,连接至所述协议寄存器并且被构建来仅在接收任何消息包中的一数据组之后改变状态,所述对象核心被设置来执行所述软件对象的所有所述方法。
58.如权利要求57所述的硬件对象,进一步包含一个或多个协议寄存器,其每一个实现一分开的软件方法界面。
59.如权利要求58所述的硬件对象,其中,所述对象核心被连接至所述一个或更多个协议寄存器并且被构建来并行执行软件方法。
60.如权利要求57所述的硬件对象,其中,所述对象核心包含一个或更多个内部协议寄存器。
61.如权利要求60所述的硬件对象,其中,一个或更多个所述内部协议寄存器被配置来实现软件方法。
62.如权利要求61所述的硬件对象,其中,多于一个的软件对象能并行执行。
63.如权利要求57所述的硬件对象,进一步包括一个或更多个协调同时执行的硬件对象以实现所述软件对象。
64.如权利要求57所述的硬件对象,进一步包括一第二硬件对象,其具有一个或更多个被配置来实现软件方法的内部协议寄存器,其中整个所述第一硬件对象与所述第二硬件对象的一部分协调同时执行以实现所述软件对象。
65.如权利要求61所述的硬件对象,进一步包括一第二硬件对象,其具有一个或更多个被配置来实现软件方法的内部协议寄存器,其中所述第一硬件对象的一部分与所述第二硬件对象的一部分协调同时执行以实现所述软件对象。
66.一种在一包含多个硬件对象的系统上执行一功能的方法,所述方法包括将非同步消息发送至所述多数个硬件对象中的一个或多个以调用所述软件对象方法。
67.一集成电路开发系统,包括一多数个硬件对象的描述库,每一所述多数个硬件对象被构建来对消息包进行操作并且每一对象具有相对相似的电负载特性;以及一模拟器,其参考所述库并被构建来接受一命令以产生所述描述中之一的一实例、并接受一命令以连接两个或更多个所述被创建的实例。
68.如权利要求67所述的开发系统,其中,所述库进一步包含一软件对象的集合。
69.如权利要求68所述的开发系统,其中,所述软件对象的集合是分层的,在所述层次系统的底部具有多数个基元对象,其中每一基元对象是与物理硬件对象的一个或更多个部分相关联的。
70.如权利要求69所述的开发系统,其中,所述软件对象的集合之一能包含任何数量的多数个基元对象,其中一所述软件对象的所述关联是通过集合所述基元对象的所述关联来产生的。
71.如权利要求67所述的开发系统,进一步包含一输出模块,其被构建来产生所有所述被创建的实例的一输出文件。
72.如权利要求71所述的开发系统,其中,所述输出文件是可执行而不用编辑。
73.如权利要求71所述的开发系统,其中,所述输出文件是一软件对象。
74.如权利要求71所述的开发系统,其中,所述库包含有一软件对象集合并且其中所述输出文件能被增加到所述库中并可被用作一软件对象。
75.一种为实例的硬件对象的集合编写程序的方法,包括接受其本身是所述所引用的硬件对象的抽象集合的软件对象的集合,每一软件对象包含一用于所述软件对象的硬件对象列表,一用以连接所述列出的硬件对象的规则列表,及一要被载入到所述列出的硬件对象的说明文件;接受实例的硬件对象的所述集合的描述;将一识别符分配到来自所述硬件对象列表的每一所述实例的硬件对象;以及利用所述识别符来产生所述实例的硬件对象集合的一个初始化文件以替换所述指令文件中的符号信息。
76.如权利要求75所述的方法,进一步包括将所述初始化文件存储于一存储器中。
77.如权利要求76所述的方法,其中,所述存储器是所述实例的硬件对象之一。
78.如权利要求76所述的方法,其中,所述存储器是与所述实例的硬件对象分开的。
79.如权利要求75所述的方法,其中,所述实例的硬件对象之中的一个是存有引导指令的只读存储器。
80.如权利要求75所述的方法,其中,所述实例的硬件对象之中的一个被重置为一被构建来载入引导指令的一状态机器。
全文摘要
本发明的实施例包含一种用于集成电路开发的系统,该开发系统的元件包含硬件与软件对象,这些对象能被引证、指令化、参数化、及连接于一个软件环境以实现不同功能。一旦在软件中,该描述定义了一组对象的拓扑与特性以及由此的全部功能,这些对象是由一组基元对象分层地组成。通过利用一个能够模拟设定为预先建立封装的硬件对象的任何基元对象的硬件,该拓扑与特性定义了一个能够实现所要的、所实施的功能的硬件。利用本发明的实施例,电路设计者能以很少或无需关于硬件或硬件设计的知识,而仅需一个高级软件描述来设计硬件系统。
文档编号G06F5/06GK101044485SQ200480017196
公开日2007年9月26日 申请日期2004年6月18日 优先权日2003年6月18日
发明者安东尼·马克·琼斯, 保罗·M·瓦森 申请人:安布里克股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1