电子系统中的暂时辅助资源共享的制作方法

xiaoxiao2020-7-22  14

专利名称:电子系统中的暂时辅助资源共享的制作方法
技术领域
本发明主要涉及电子系统,更详细地说,涉及通过资源共享来优化电子电路。
背景技术
因为许多原因,电子系统一般含有复制的(duplicative)电路。复制的电路可被设计到电子系统中,用于实现并行操作和额外的数据吞吐量。例如,分组路由器使用许许多多的同样信道来获得所需要的吞吐量。此外,多媒体、电信、数字信号处理(DSP)和微处理器设计中的应用自然需要关键电路资源的多份拷贝。另一方面,在大电路设计中,电路资源的平面复制经常是无意识的,并不会被仔细考虑,为改善留下了空间。资源共享是可以通过共享和重新使用复制的电路来优化电子电路的一种方式。通过在若干处理器或用户之间共享复制的电路,资源共享使得电子系统在设计和制造上更加便宜和更加有效。为了使用资源共享来优化设计,必须首先识别该复制的电路,之后在任意可能的时间将其共享。图IA示出了根据现有技术中的在具有相同电路及共同输入/输出 (I/O)信号的模块之间的资源共享。图IA包括两个相同的电路和/或功能模块,克隆产品 (克隆产品)A 101和克隆产品B 102,该克隆产品A 101和克隆产品B 102分别具有同样的I/O信号,入。(IN)。和出。(OUT)。。因为克隆产品A 101和克隆产品B 102含有复制的电路和同样的1/0,所以克隆产品A 101和克隆产品B 102被确定为用于共享的候选物。克隆产品A 101和克隆产品B 102中每一个包括复制的电路,该复制的电路可由克隆产品A 101和克隆产品B 102共享。通过用单个共享资源103来替换克隆产品A 101和克隆产品 B 102并适当地对公共I/O布线,可以实现在复制的电路克隆产品A 101和克隆产品B 102 之间共享资源。克隆产品A 101和克隆产品B 102的功能都得到保持,但通过资源共享,电路所需要的资源减少了。资源共享可能导致电子电路总的尺寸减小。结果,资源共享变成了流行课题,已经使用资源共享研究出了用于优化电子系统的不同方法。在电子电路设计中,经常执行变换来优化某些设计目标。变换可用来完成资源共享,因此降低了电路所使用的面积。“合并变换(folding transformation)”是用于降低集成电路所使用的硅的面积的系统方法之一。这种算法操作可应用于单个功能单元用以减少其资源需求,也可应用于多个功能单元用以减少其数量。图IB举例说明了根据现有技术的资源共享,该资源共享在具有相同或相似功能和/或电路并包括不同的I/O信号的用于共享的候选物之间使用2X合并变换。共享之前,两个候选物克隆产品A 101和克隆产品B 102中的每一个都具有连接到同一时钟源Ck的分开的时钟输入,以及不同的1/0(即,INtl 和OUTtl对应于克隆产品A 101,而入I(IN1)和出^OUT1)对应于克隆产品B 102)。因为克隆产品A 101和克隆产品B 102中的每一个都包含相同或相似的电路和/或功能,因此可共享克隆产品A 101和克隆产品B 102中的每一个所利用的资源。可执行合并变换来共享资源,包括将克隆产品A 101和克隆产品B 102合并到单组公共硬件资源上,例如共享资源 103,并增加多路复用电路以在分别对应于克隆产品A 101和克隆产品B 102的I/O之间选择。而在本例中,两个候选物属于同一时钟域,资源共享也可以在不同时钟域的候选物之间,例如在给定的时间处候选物中只有一个候选物将被使用的情况下。在至少某些实施例中,多路复用电路包括多路复用和多路分解电路(例如图IB中所示的MUX 105和DeMUX 106),以及选择电路(例如选择电路109)。在图IB所示出的配置中,多路复用电路连接到共享资源103上,用于在克隆产品A 101的I/O和克隆产品B 102 的I/O之间交替选择。当选择电路109输出第一选择值(比如说二进制0),该值被置于线 113上,使得MUX 105的选择输入133选择对应于克隆产品A 101的输入INtl以通过MUX105 并进入到共享资源103的输入。同样地,置于线131上的该值(二进制0)也在DeMUX 106 的选择输入135处被接收,使得共享资源103的输出通过DeMUX 106,并通过DeMUX 106的对应于克隆产品A 101的输出Out 0。可替换地,当选择电路109输出第二选择值(比如说二进制1)到线131上时,该值使得MUX 105的选择输入133选择对应于克隆产品B 102的输入IN1以通过MUX 105进入到共享资源103的输入。同样地,置于线131上的该值(二进制的1)也在DeMUX 106的选择输入135处被接收,使得共享资源103的输出通过DeMUX 106,并在DeMUX 106的对应于克隆产品B 102的OUT1处被输出。这样,即使克隆产品A 101和克隆产品B 102包含不同的I/O信号,也可共享克隆产品A 101和克隆产品B 102的资源。使用大致一半的原始资源(减去多路复用器开销)便可保持克隆产品A 101和克隆产品B 102两者的功能。专利号为7,093,204 (下文中用“Oktem的专利”表示)、题为“用于多信道电路的自动合成的方法和设备”的美国专利描述了一种方法和装置,该方法和装用于从使用合并变换的单信道电路中自动生成多信道电路的时间多路复用设计。在Oktem的专利中,单信道电路被复制N次,造成了含有N条分开的信道的多信道电路。之后该N条信道中的每一个变成了具有相同电路和不同I/O信号的用于共享的候选物。之后执行合并变换,用于共享多信道电路的N个信道中的资源。然而,Oktem的专利改变了所接收的电路的功能,而不是在不改变其功能的情况下优化电路。—204专利部分内容的接续,美国专利公开号为 2007-0174794 Al扩展了 Oktem的专利,用于接收具有多个逻辑模块实例的设计,并自动将该系统转换为具有初始块的共享时间多路复用变型的第二设计。此外,Oktem的专利没有教导出于资源共享的目的,发现之前未知的相似或相同的电路子集。更多关于合并变换的细节可在Keshab K. Parhi, Wiley-Interscience, 1999的“VLSI数字信号处理系统设计和实现”中找到。Oktem的专利包含现有技术的论述,由此其被我们作为参考包括进来。Atmakuri等人的专利号为6,438,730的美国专利进一步讨论了集成电路上的传统资源共享。Atmakuri的专利确定了响应于公共选择信号,电子电路中的两个或以上的支路是否驱动公共输出。若是则确定判定结构是否在支路中含有公共的算术运算,以使得设计可被优化。资源共享与调度一起,也被认为是高级综合,在其中共享用于执行多个功能的算术运算是普遍的。此外,许多之前的资源共享解决方案限于特定情况。例如和初始模块比起来,之前的一些解决方案以非常不同的方式实现共享模块,例如频繁发生软件程序碎片的硬件实现,或者将初始网表转换成执行另一功能的网表。Milito的专利号为5,596,576、题为“用于资源共享的系统和方法”的美国专利陈述了向用户动态分配资源,并以不同速率向用户计费。在一些专利中资源共享的概念涉及通信信道或无线频谱,例如Acampora的专利号为 4,495,619、题为“使用资源共享和编码的用于增加的容量的发射机和接收机”。以Lou等人的专利号为7,047,344、题为“资源共享设备”的美国专利为代表的另一种类涉及共享通过总线连接的个人计算机的外围设备,诸如打印机、键盘和鼠标。Whitaker等人(以下称作“Whitaker的专利”)的题为“使用选择操作符的数字逻辑优化”的美国专利6,779,158描述了 ASIC型网表的变换,通过晶体管和标准单元级的资源共享,并通过使用实质上是多路复用的选择强化的标准单元,所述变换优化了诸如面积的设计目标。在这些标准单元的布局上给予了很多考虑。然而该领域中传统的常识是在映射到ASIC型门电路之前要观察最重要的共享。当Whitaker的专利提及可能考虑更高级的提取,其中模块将含有多个单元,其不提供在映射到单元发生之前可以应用的解决方案。 此外,假定没有用Whitaker的专利中描述的ASIC型单元库来设计FPGA,则该专利没有应用到FPGA上。电子电路中已使用时间多路复用资源共享。例如,J.E.Thornton在“控制数据 6600中的并行操作”,AFIPS Proceedings FJCC,第2部分,26卷,1964,3340页中所描述的⑶C 6600计算机的外围和控制处理器(PACP),通过循环的方式获得共用资源的访问权来共享执 亍硬件。此夕卜,Tumme It shammer,Hoe禾口 Piischel的、公布在IEEE Trans, on CAD26(9)2007年9月上的“时间多路复用多常数乘法”中讨论了单个常数乘法中的时间共享,用以减小数字信号处理器(DSP)应用中的电路尺寸。然而,其技术局限于多常数乘法。Maiyuran等人的专利号为6,735,712的、的题为“用于按需资源共享的利用多时钟交叉域的可动态配置的时钟方案”(以下称作“Maiyuran的专利”)描述了以不同时钟频率驱动的两个或多个模块之间或之中的资源共享。Maiyuran的专利局限于使用三个时钟, 并且公开了一个模块如何从其他模块中临时使用部分资源。Maiyuran的专利选择性地应用具有第一或第二时钟的频率的时钟信号。这样一种可动态配置的时钟方案可能难于实现, 并且可能导致限制性的应用,而固定频率的时钟信号更实用。专利号为6,401,176, Fadavi-Ardekani等人的题为“多端口共享存储器的多代理使用”采取了仲裁器和超级代理,该超级代理比其他代理更频繁地使用共享存储器。给该超级代理提供了优先访问权,限制了代理“打开窗口”。N. Weaveret等人在2003 FPGA讨论会上提出的“用于Xilinx Virtex FPGA的放置后C-slow再定时”描述了半手动的FPGA流程,其通过使用由再定时跟踪的所有触发器的复制品,接收电路设计并创建该设计的多线程版本。然而,此方法改变了设计或逻辑模块的功能。等效的技术由Mplicity公司(M普力斯缇公司)商业化,该Mplicity公司发布了门级Hannibal工具和RTLGenghis-Khan工具。所述Harmibal工具将单个逻辑模块变换成增强的虚拟多级逻辑块。Genghis自动将单逻辑块RTL变换成虚拟多级逻辑块RTL,而Khan执行自动门级优化。该过程启用开关可被设置成2x,3x或4x。Mplicity的资料公开了多核CPU的应用。对于单个时钟域则公开了对时钟的处理。Mplicity的资料还公开了若干个基于块的技术,用于验证用其工具所创建的多线程块。然而,Mplicity的资料没有公开具有不同功能的共享块或者自动选择用于多线程的单个或多个块。由A. DeHon等人在FCCM 2006上提出的“分组切换vs.时间多路复用FPGA覆盖网络”的出版物,比较了分组切换网络和FPGA互连的虚拟化(时间复用)以用于Butterfly Fat Tree(蝴蝶胖树)中的稀疏计算(sparse computation)。但是此成果并未公开同步 (clocking)或使用一个以上的时钟域。

发明内容
本发明的至少某些实施例包括用于优化集成电路的方法和设备,包括接收该集成电路的设计;识别两个或多个具有相似功能的设计的子集,作为用于共享的候选物;以及通过在用于共享的每个候选物间使用合并变换来共享资源而产生设计的修改描述,该合并变换包括将用于共享的候选物合并到一组对每个都共有的电路资源上,并在每个用于共享的候选物的操作之间进行时间多路复用。实施例进一步包括确定用于共享的候选物中的哪个可在更高时钟频率下被操作; 以及在更高时钟频率下、在快速时钟的交替的微周期内,执行用于共享的候选物的时间多路复用,其中快速时钟比初始电路的一个或多个系统时钟快。实施例进一步包括确定用于共享的候选物中的哪个包括暂时不相交的功能;以及通过使用初始电路的一个或多个系统时钟,执行具有暂时不相交的功能的用于共享的候选物的时间多路复用。某些实施例包括通过生成多路复用电路,在每个用于共享的候选物的操作之间进行时间多路复用,用以在对应于每个用于共享的候选物的输入中时间复用,以及还包括生成多路分解电路,以用于将从设计的共享子集处接收的输出时间多路分解。


从之后详细的描述中并结合附图可获得对本发明至少某些实施例的更好的理解, 其中图IA例示了根据现有技术中具有相同电路和共同输入/输出(I/O)信号的模块之间的资源共享。图IB例示了根据现有技术用于共享的候选物之间的使用2X合并变换的资源共享,所述候选物具有相同的或相似的功能和/或电路,并包括不同的I/O信号。图2A例示了根据本发明示例性实施例的用于共享的候选物之间的使用快速时钟 2X合并变换的资源共享,所述候选物具有相同或相似的功能和/或电路,并包括不同的I/O信号。图2B例示了电路时序图,其示出了图2A中根据本发明示例性实施例的用于共享的2X合并的候选物之间的时间多路复用。图2C例示了根据本发明示例性实施例的图2A中用于共享的候选物之间使用快速时钟2X合并变换的资源共享,该候选物还包括X-周期时序逻辑延迟。图2D例示了根据本发明示例性实施例的图2A中用于共享的候选物之间使用快速时钟2X合并变换的资源共享,该候选物还包括1-周期时序延迟。图2E例示了电路时序图,其示出了图2D根据本发明示例性实施例的用于共享的 2X合并的候选物之间的时间多路复用。图3例示了根据本发明代表性实施例的用于共享的候选物之间使用快速时钟4X 合并变换的资源共享,所述候选物具有X-周期时序延迟和不同的I/O信号。图4例示了根据本发明的一个实施例的示例性方法,用于在共享资源内N折 (N-pIieating)的状态时序元件。图5A例示了根据本发明示例性实施例的用于共享的候选物间的资源共享,该候选物包括流水线和状态时序元件。图5B例示了电路时序图,该电路时序图示出了图5A中根据本发明示例性实施例的用于共享的候选物之间的时间多路复用。图6A例示了循环展开。图6B例示了根据本发明示例性实施例的循环再卷起(re-rolling)。图7例示了根据本发明示例性实施例的连接到I/O总线的I/O客户间的资源共享。图8A例示了根据本发明示例性实施例的具有一个或多个未使用地址端口的存储器中的资源共享。图8B例示了存储器地址位的配置的并排(side-by-side)比较。图8C例示了分别使用3位和4位地址的可寻址存储器单元的并排比较。图9例示了根据本发明的示例性实施例的存储器中的资源共享。图IOA例示了根据本发明一个实施例在与多路复用器选择电路耦接的交叉开关上执行合并变换。图IOB例示了根据本发明另一实施例在与多路复用器选择电路耦接的交叉开关上执行合并变换。图IlA例示了根据本发明示例性实施例的通过N路复用共享资源的方法。图IlB例示了根据本发明示例性实施例的通过N路复用(N-plexing)共享资源方法的更多细节。图IlC例示了占据(account for)根据本发明示例性实施例通过图11A-11B中的 N路复用共享资源的方法中的时序逻辑。图IlD例示了根据本发明示例性实施例的评测共享时机的方法。图12例示了根据本发明示例性实施例使用展开来验证利用N路复用的资源共享的方法。图13A例示了根据本发明示例性实施例在具有一个或多个未使用地址端口的存储器间资源共享的方法。图13B例示了根据本发明示例性实施例在存储器间资源共享的方法。图14例示了根据本发明示例性实施例将设计的一个或多个子集分解为用于资源共享的更小子集的方法。图15例示了根据本发明示例性实施例通过再卷起展开的(unrolled)循环、使用合并变换来识别共享时机的方法。图16例示了示例性的数据处理系统,在该系统上可实施本发明的方法和设备。
具体实施例方式出于解释的目的,为了提供对本发明透彻的理解,整个说明书列出了大量的具体细节。然而对本领域技术人员来说显而易见的是,在缺少这些具体细节中一些细节的情况下也可以实现本发明。在其他实例中,为了避免使本发明的描述模糊,不再描述公知的或者常规的细节。I. 时丨旬g用合并变j免的Ng各g用申,子设i十
通过使用资源共享,至少某些实施例能够优化电子系统。资源共享使得电子系统更加便宜,也具有更好的空间效率和能效。实施例通过使用合并变换并结合同一时钟或不同的时钟来描述共享,而在完全相同的时序限制下,产生的电子系统能够执行和初始系统完全相同的功能,但是却使用较少的资源来做这些。实施例可以被用来优化电子电路,该电路在一个或多个现场可编程门阵列(FPGA) 上、专用集成电路(ASIC)上、微处理器(CPU)上、数字信号处理器(DSP)上、印刷电路板 (PCP)上、其他电路设计等的上面实现。此外,实施例找出在电子系统设计内的用于共享的时机,并在一个或多个所定位的“用于共享的候选物上”执行资源共享。可以一个或多个规范级来描述这些用于共享的候选物,该规范级包括高级描述,例如芯片级或系统级,嵌入式系统级,软件子例程级,映射网表级,寄存器传输逻辑(RTL)级,硬件描述语言(HDL)级,原理图级,技术独立门级,技术依赖门级,和/或电路平面布置图级等。此外,用于共享的候选物可以是任意类型,例如一个或多个功能模块,子电路,数据块或代码块,软件例程,环结构体的一部分,数据流程图的子集,和/或控制流程图的子集等。此外,用于共享的候选物可以相互之间完全相同,或者在不同程度上有所区别,其包括一个或多个用于共享的相似候选物,用于共享的连接候选物的集合,用于共享的并非全部连接的候选物的集合,用于共享的周围有逻辑电路的候选物,用于共享并与其他用于共享的候选物的子集相似的候选物,以及可由用于共享的特殊设计的超级候选物所代替的用于共享的候选物。在用于共享的候选物不相同的情况下,可使用控制电路来选择输出在候选物间有所不同的功能,用以允许候选物共享其共有的资源。本发明的实施例描述了用于识别电子系统中用于共享资源的候选物,将它们相互间时间多路复用,优化性能,并验证功能正确性的新颖机制。此处该过程被定义为N路复用 (N-plexing)。此外,更快的时钟可能有助于减少现有的资源复制,用以降低面积、成本和/ 或功耗需求,特别是利用用于多个逻辑信道的片上支持。本发明的至少某些实施例接收集成电路的描述(门级网表,RTL描述,HDL描述,高级描述,用C语言的描述等),并以相同或其他方式产生经修改的描述,其目标是改善成本、 大小、能耗或功耗特征中的一个或多个。首要的基本策略在于识别用于共享未被同时使用的候选物,例如可以被实施来共享某些物理资源(公共的的DSP功能,MPEG-4功能等)的用于不兼容标准(GSM vs. CDMA, Quick Time vs. WINDOWS MEDIA vs. REAL VIDEO vs. DIVX 等)的通信和多媒体电路。第二基本策略在于识别用于共享的候选物,可在较高时钟频率下加速和/或操作该候选物,并通过多功能(例如,D0LBY7. 1家庭-影院音响的7个相同信道,画中画视频流,多个TCP/IP链路或网络电话(Voice Over IP)信道)来共享该候选物。此外,本发明预期了源自所述两个基本策略的策略,例如功能分解。派生策略的一个实例为将用于共享的候选物(例如乘法器或FFT电路)分解成若干个相同的部件,该相同的部件可被共享,导致形成了具有相同功能的更小的电路。另一个实例为将两个用于共享的候选物分解,使得能够共享他们各自的部件。图2A例示了根据本发明示例性实施例的用于共享的候选物之间使用快速时钟2X 合并变换的资源共享,所述候选物具有相同的或相似的功能和/或电路,并包括不同的I/O 信号。出于公开的目的,诸如图2A-图7中所示的克隆产品A 201和克隆产品B 201的克隆的电路,可以是电子系统设计和/或描述的任意子集。此外,克隆产品A 201和克隆产品B 202指的是具有相同或相似的电路和/或功能的用于共享的任意候选物,包括具有相同电路和/或功能的候选物,和/或在电路和/或功能上以不同程度变化而不同的候选物。在共享之前,这两个相同或相似的用于共享的候选物克隆产品A 201和克隆产品 B 202每个都具有各自的时钟信号Ck,以及不同的1/0(例如,对应于克隆产品A 201的INtl 和OUT0,以及对应于克隆产品B 202的IN1和OUT1)。克隆产品A 201包括IN0和OUT0,而克隆产品B 202包括INJPOUV出于描述的目的,假定INtl和IN1是不同的输入,以及OUTtl 和OUT1是不同的输出。因此,克隆产品A 201包含了和克隆产品B 202不同的输入/输出。 因为克隆产品A 201和克隆产品B 202包含了相同或相似的电路,所以可通过使用合并变换而共享克隆产品A 201和克隆产品B 202中的每一者所利用的资源。通过将克隆产品A 201和克隆产品B 202合并到单组公共资源、共享资源203和连接复用电路上而执行该合并变换,以在分别对应于克隆产品A201的I/O和对应于克隆产品B 202的I/O之间选择。多路复用线路包括多路复用电路和多路分解电路(例如图2A中显示的MUX 205 和DeMUX 206),以及选择电路(例如选择电路209)。在图2A所例示的配置中,多路复用电路连接到共享资源203周围,用以在克隆产品A 201的I/O和克隆产品B 202的I/O之间二者择一。MUX 205可被实施为本领域公知和可预期的常规多路复用器,或者实施为并行多路复用器或PMUX,其假定了独热(one-hot)编码选择信号。当然也有其他可能,例如通过使用异或(XOR)门(这兼顾了输入和输出),可以将反相器多路复用到旁路(线)上。更普遍地讲,通过考虑功能,可执行函数Fl(X)和F2(x)(此处χ是一个或多个输入信号)的多路复用/多路分解,G(sel,x) = (sel ? Fl(x) :F2(x)),并使用现有的逻辑优化工具来综合其实施。因此,有各种不同的“多路复用”电路的实施。此外,时间多路复用设计子集并不具有同样的功能,即,Fl(X) ! =F2(x)。在发明人是Igor L. Markov和Kenneth S. McElvain的美国专利申请序列号为12,204,777、题为 “电子系统中的近似功能匹配”的共同待决的专利申请中教导了识别子集组,该识别子集组允许紧凑的(compact)多路复用形式,该申请作为参考被并入本文。该共同待决的申请也教导了如何创立超级模块,即,多路复用形式的简洁实施。当选择电路209输出第一选择值(比如说二进制0),该值被置于线261上,使得 MUX 205的选择输入263选择对应于克隆产品A 201的输入INtl,从而通过MUX 205而进入到共享资源203的输入。类似地,在DeMUX 206的选择输入265处也接收置于线261上的该值(二进制0),使得共享资源203的输出通过DeMUX 206而在对应于克隆产品A 201的 DeMUX 206的OUTtl处输出。可替换地,当选择电路209输出第二选择值(比如说二进制1) 时,该值被置于线261上,使得MUX 205的选择输入263选择对应于克隆产品B 202的输入 IN1,从而通过MUX 205而进入到共享资源203的输入。类似地,在DeMUX 206的选择输入 265处也接收置于线261上的该值(二进制1),使得共享资源203的输出通过DeMUX 206 而在对应于克隆产品B202的DeMUX 206的OUT1处输出。照这样,即使克隆产品A 201较之于克隆产品B 202包括了不同的I/O信号,也可共享克隆产品A 201和克隆产品B 202 的资源。通过使用大致一半的初始资源(即,减去多路复用电路开销)而保持了克隆产品 A 201和克隆产品B 202的功能。上面以实例的方式给出但非限制,因为可以以本领域公知的不同方式实现多路分解电路。例如,DeMUX 206可以是常规的多路分解器。可替换地,DeMUX 206可以被实施为并行多路分解器或pDeMUX,其假定了独热编码选择信号。该多路分解器用于从共享资源中分配时间多路复用输出信号到一组接收逻辑电路,该接收逻辑电路对应于之前由共享电路资源的相同或相似设计子集中的每一者所提供的输出信号,其中该多路分解器包括选择输入,用以在基于所分配线程的接收逻辑电路间选择。然而,可以以一组输出使能时序电路来实现多路分解器电路206,以从共享资源中分配时间多路复用输出信号到一组接收逻辑电路,该接收逻辑电路对应于之前由共享电路资源的相同或相似设计子集中的每一者所提供的输出信号。在这种情况下,每组输出使能时序电路包括使能输入,用以在基于前述所分配线程的接收逻辑电路之间选择。此外,多路分解器206可以所分配的时间复用输出信号的扇出电路来实现。在此情况下,接收逻辑本身将必须含有使能信号,用以在基于所分配线程的接收逻辑电路间选择。其他这样的电路配置也预期在本发明的范围内。为了对用于诸如克隆产品A 201和克隆产品B 202的使用合并变换的电路元件共享资源,功能必须是暂时不相交(disjoint)或者能够被加速到更高的时钟频率。暂时不相交的功能意味着输入和/或输出在不同时间是看得见的。也就是说,在同样的系统时钟周期期间,各自的输入和/或输出将永不重叠。例如,暂时不相交地功能可被置于不同的时钟周期或者被数百万的时钟周期所分开。此外,不是暂时不相交的功能必须能够在较高频率下操作。这种功能被认为是“同时期可见的(contemporaneously observable) ”或“暂时重叠的”功能。在“同时期可见的”或“暂时重叠的”功能的情况下,必须在同样的系统时钟的时钟周期期间执行这种功能。为了实现该功能,在一些情况下,系统时钟可被加速,获得比初始系统时钟快2、3、4或甚至是16倍的快速时钟。如果使用快速时钟而将系统时钟加速到原来的N倍,则可将N倍的功能挤进(pack into)初始系统时钟的单个周期。可在快速时钟周期所划定的“微周期(micro-cycle) ”期间执行此功能。例如,如果初始系统时钟可被加速到2X倍,则在与初始系统时钟同样的周期期间执行两倍的功能。图2A描述了以下情况,其中用于共享克隆产品A 201和克隆产品B 202的候选物包括暂时重叠或同期可见的功能和/或操作。也就是说,用于共享克隆产品A 201和克隆产品B 202的候选物包括一个或多个重叠输入和/或输出。这意味着要么同时需要克隆产品A 201和克隆产品B 202的某些输入,要么同时需要克隆产品A 201和克隆产品B 202的某些输出,或者二者兼有之。共享前,克隆产品A 201和克隆产品B 202均被由“Ck”表示的系统时钟所时钟控制。共享后,快速时钟2X用于时钟控制选择电路209和共享资源203。 在这种情况下,选择快速时钟2X来将系统时钟加速2倍。因此,快速时钟2X在时钟频率上是命名为Ck的初始系统时钟的二倍,该初始系统时钟之前用于时钟控制克隆产品A 201和克隆产品B 202。如上所述,选择电路用于在分别对应于克隆产品A 201和克隆产品B 202的1/0 之间二选其一地做出选择。如今快速时钟2X被施加到选择电路209上,选择电路触发快了两倍。因此,用快速时钟2X来时钟控制选择电路209创建了微周期,该微周期内选择电路在分别对应于克隆产品A 201和克隆产品B 202的1/0间二选其一地触发。如今可在快速时钟2X的周期所划定的交替的微周期上执行克隆产品A201和克隆产品B 202的功能。结果在初始系统时钟的一个时钟周期期间执行克隆产品A 201和克隆产品B 202的功能。也就是说,至少某些实施例中,现在使用快速时钟在同一个时钟周期期间执行两倍的在初始
16系统时钟的一个时钟周期期间被初始执行的功能。结果,使用合并变换并结合加速的时钟来实现电子系统中的暂时辅助资源共享。现参见图2B,其例示了电路时序图,该电路时序图示出了图2A中根据本发明示例性实施例的用于共享的2X合并的候选物之间的时间多路复用。正如可从图2B中看到的那样,初始时钟或系统时钟“Ck”通过值从0到1再返回0而循环,而快速时钟2X在同样的时间周期内做两次这样的转换。也就是说,快速时钟2X被加速到二倍的初始系统时钟频率。 如上所述,该快速时钟用于建立微周期,在该微周期内,初始电路克隆产品A 201和克隆产品B 202中每一者的功能可跨过共享资源203而被时间多路复用。在图2B中,快速时钟2X 在to时刻从低到高转换。至少某些实施例中,该转换可对应于二进制上从0到1的转换。 然而这是以解释而非限制的方式给出的,因为任意时钟转换都认为是位于本发明公开的范围之内。快速时钟2X在t0时刻从低到高转换,因此时钟选择电路209使得选择电路209输出一个值(比如说二进制0)到线261上,并且进入到MUX 205的选择输入263上。此值可进一步使得MUX 205选择输入IN。,以通过MUX205而到达输出。这并不打算限制本说明,因为快速时钟2X从低到高的转换可以被配置使得选择电路209输出不同的值并选择MUX 205 的不同输入。这仅仅是设计选择。也就是说,图2A中,可配置选择电路209以使得在快速时钟2X从低到高的第一次转换期间,选择MUX 205的输入1队。但是选择电路209也可被配置,以使得在快速时钟2X从低到高的第一次转换期间,选择MUX 205的输入IN115类似地,快速时钟2X在t0时刻从低到高转换,因此时钟选择电路209使得选择电路209输出一个值(比如说二进制0)到线261上,并且进入到DeMUX 206的选择输入265 上。此值可进一步使得DeMUX 206选择输入OUT。,以传到DeMUX 206的输出。再一次地,这并不打算限制本说明,因为可以配置快速时钟2X的从低到高的转换,以使得选择电路209 输出不同的值并选择DeMUX 206的不同输出。这仅仅是设计选择。也就是说,图2A中,可配置选择电路209,以使得在快速时钟2X从低到高的第一次转换期间,选择MUX 205的输入 IN。。但是也可配置选择电路209,以使得在快速时钟2X从低到高的第一次转换期间,选择 DeMUX 206 的输出 OUT1。然而在这两个情况下,置于线261上并分别在MUX 205的选择输入263和DeMUX 206的选择输入265处接收的值,使得在快速时钟2X的周期所划定的给定微周期期间选择对应于克隆产品A 201和/或克隆产品B 202的功能的交替选择。这样,选择电路209可操作用来选择正确的输入和对应的输出,以启动克隆产品A 201与克隆产品B 202之间的时间多路复用,现在克隆产品A 201和克隆产品B 202被合并到共享资源203上。快速时钟2X在tl时刻从低到高转换,因此时钟选择电路209使得选择电路209 输出一个值(比如说二进制1)到线261上,并且进入到MUX 205的选择输入263上。此值可进一步使得MUX 205选择输入IN1,通过MUX 205而到达输出。这并不打算限制本说明, 因为可以配置快速时钟2X的从低到高的转换,使得选择电路209输出不同的值并选择MUX 205的不同输入。这仅仅是设计选择。也就是说,图2A中,可配置选择电路209,以使得在快速时钟2X从低到高的第二次转换期间,选择MUX 205的输入IN115然而也可配置选择电路209,以使得在快速时钟2X从低到高的第二次转换期间,选择MUX 205的输入IN。。类似地,快速时钟2X在tl时刻从低到高转换,因此时钟选择电路209使得选择电路209输出一个值(比如说二进制1)到线261上,并且进入到DeMUX 206的选择输入265 上。此值可进一步使得DeMUX 206选择输出OUT1,传到DeMUX 206的输出。再一次地,这并不打算限制本说明,因为可以配置快速时钟2X的从低到高的转换,使得选择电路209输出不同的值并选择DeMUX 206的不同输出。然而在这两个例子中,置于线261上并分别在MUX 205的选择输入263和DeMUX 206的选择输入265处接收的值,使得在快速时钟2X的周期所划定的给定微周期期间选择对应于克隆产品A 201和/或克隆产品B 202的功能的交替选择。这样,选择电路209可操作用于选择正确的输入和对应的输出,以启动在克隆产品A 201和克隆产品B 202之间的时间多路复用,现在克隆产品A 201和克隆产品B 202被合并到共享资源203上。此外,选择电路209的操作可被看作通过共享资源203而分配一个或多个线程。基于共享资源的候选物数量来分配线程。通过对信号时间多路复用、通过共享资源203使用分配的线程来调整(coordinate)输入和其对应的输出。每个分配的线程与快速时钟的微周期对应,在该微周期内执行用于共享的各个候选物的每个操作的时间多路复用。因此,在与初始系统时钟所划定的周期相同的时间周期内,图2A的配置使用由快速时钟所辅助的合并变换来共享候选物克隆产品A 201和克隆产品B 202中的资源。在克隆产品A 201和克隆产品B 202的功能暂时不相交的情况下,共有功能可被合并到共享资源203上,通过使用初始系统时钟的周期来时间复用共有功能;然而,在克隆产品A 201和克隆产品B 202的功能为暂时重叠和/或同时期可见的情况下,共有功能可被合并到共享资源203上,通过使用快速时钟所分隔的微周期来时间复用共有功能。这在图2B中有例示,其中在t0期间,即快速时钟2X的第一转换期间,选择克隆产品A 201的功能并允许对应于克隆产品A 201的输入INtl从MUX 205的输入通过进入到共享资源203的输入。来自共享资源203的输出随后通过对应于克隆产品A 201的DeMUX 206 的输出OUT—类似地,在tl期间,即快速时钟2X的第二转换期间,选择克隆产品B 202的功能并允许对应于克隆产品B 202的输入IN1 WMUX 205的输入通过进入到共享资源203。 来自共享资源203的输出随后通过对应于克隆产品B 202的DeMUX 206的输出0UI\。此模式无限重复。因此,使用利用快速时钟并由时间多路复用所辅助的合并变换实质上需要克隆产品A 201和克隆产品B 202以前所需要的一半资源。此外,使用时间辅助的合并保持了完全相同的电路功能,该电路功能最初可分别使用克隆产品A 201和克隆产品B 202而得到的。 在可将经识别的用于共享的候选物的功能和/或电路加速到更高频率的情况下,使用快速时钟执行该临时辅助资源共享是有利的,因为由此引起的面积节省大概在10% -90%,其取决于许多因素,包括半导体工艺、电路制造、使用和市场-特定功率-性能的限制。在集成电路和其他电子子系统领域,当前的潮流是将越来越多的电路和/或功能组合到更小的电路外形(profile)上。随着集成电路和其他电子系统以及子系统变得越来越复杂,节省面积的需要与成本节约直接关联。此外,一个重要的副产品是降低了由漏电流引起的功耗。漏电流直接正比于电路设计中晶体管的数量;因此,每当整个电路或其他硬件资源减少时,由漏电流引起的耗用功率(power drain)也减少。此外,由于半导体做得越来越小,漏电流耗用功率的问题变得越来越显著,并造成在许多新的半导体制造工艺中增加小部分总功率。
另外,此处描述的实施例允许共享时机的精确或部分匹配。如上所论述的,用于共享的候选物可包括相同或相似的电路和/或功能,并以任意规格标准被匹配。可使用组合逻辑综合来获得部分匹配,以实现部分匹配的有效多路复用。此说明书打算定位用于共享的候选物,该候选物可以是电子设计的任意子集。两个相似候选物中的每个可被重新构造成超级模块,该超级模块具有每个候选物的功能。在超级模块情况的至少某些实施例中,控制电路可用于选择出功能和/或其他硬件资源,其在两个相似的设计子集之间有所不同。 因此,实施例在相同或相似的电路和/或功能的任意集合中提供共享资源,该集合可以是电路设计的任意子集。因此,在更多种类的情况下,某些实施例能共享更多的资源,并具有更小的开销,结果使得系统成本、大小、能量和功率需求有了更大程度的节约,并可能改善性能。当然,在用于共享的候选物之间的功能不是暂时不相交的情况下,暂时辅助资源共享或N路复用设计需要加速系统时钟的能力。在该情况下,可结合该描述的原理来使用公知的电路优化技术。在N路复用之后可应用公知的设计优化来改善性能、面积、功率和其他参数。图IlA例示了根据本发明示例性实施例通过N路复用共享资源的方法。提供了实施例用以优化电子系统。为了这样做,接收电子电路或其他电子系统的设计或描述(操作 1101)。读取电子系统的输入描述后,至少某些实施例识别用于共享的时机。其可通过自动或通过读取提供的提示或通过跟随特定指示来实现。如前所述,可以以任意方式来实现该电子电路,可以以任意水平来表示该电子电路。基于相同或相似的电路和/或功能来识别用于共享的候选物(操作1103)。至少某些实施例中,暂时不相交的候选物被识别(操作1105)和N路复用,包括将用于共享的暂时不相交的候选物合并到每个所共有的电路上 (操作1107),之后使用初始系统时钟,在每个暂时不相交的候选物中时间多路复用(操作 1109)。下一步,用于共享的能够在更高频率下操作的候选物(操作1111)被识别并被N路复用,包括将能够在更高频率下操作的候选物合并到每个所共有的电路上(操作1113),之后使用快速时钟在能够在更高频率下操作的每个候选物中时间多路复用(操作1115)。对于可合并的资源(用于共享的候选物),其输出从未在同一时间被使用,实施例可以产生一个或多个使能信号,对于每个时钟周期而言,该使能信号识别其输出已被使用的候选物。对于可在更高时钟速率下操作的可合并资源和/或物理资源而言,通过在快速时钟的交替时钟周期上使用它们,实施例识别能够共享这种模块的多个功能。本发明能够改变或加速一个或多个系统时钟中,或者它能够用一个或多个新时钟来丰富该系统。至少在某些实施例中,连到初始可合并资源的输入可能通过选择/多路复用器门而被重新连接(re-cormect)到共享资源上。图IlB例示了根据本发明示例性实施例的通过N路复用共享资源方法的更多细节。至少在某些实施例中,为了执行时间多路复用,必须添加多路复用和多路分解电路来通过共享的资源选择合适的线程和协调的(coordinate) 信号。在例示的实施例中,多路复用电路(例如图2A中的MUX 205)连接到共享资源的输入,例如图2A中的共享资源203(操作1117)。之后,多路分解电路(例如图2A中的DeMUX 206)连接到共享资源的输出(操作1119)。之前供应到N个用于共享的候选物的每个候选物的输入被连接到多路复用电路的输入(操作1121)。之前N个用于共享的候选物的每个候选物所供应的输出被连接到多路分解电路的输出(操作1123)。然后,分配线程(操作
191125),并且使用选择电路来调整(coordinate)通过共享资源的时间多路复用信号,以适当地触发多路复用和多路分解电路中的输入(操作1127)。II.占据(account for)时序逻辑图2C例示了图2A中根据本发明示例性实施例的在用于共享的候选物之间使用快速时钟2X合并变换的资源共享,所述候选物还包括X-周期时序逻辑延迟。在这种情况下, 克隆产品A 201和克隆产品B 202中的每个都包含χ阶的时序逻辑。时序逻辑和纯组合逻辑的不同点在于每一阶时序逻辑需要1-周期的延迟,用于信号通过电路。因此,χ阶的时序逻辑导致跨过克隆产品A 201和克隆产品B 202中每一者的χ-周期时序延迟。类似地,表示要由克隆产品A 201和克隆产品B 202共享的硬件资源的共享资源203必须也包含χ-周期的时序延迟。也就是说,在输入INtl和IN1分别到达OUTtl和OUT1前,将分别进入到χ-周期时序克隆产品A 201和χ-周期时序克隆产品B 202的输入INtl和IN1将被延迟初始系统时钟的χ个时钟周期。相应地,跨过共享资源203的延迟将是χ个周期。为了占据χ-周期时序候选物克隆产品A 201和克隆产品B 202中的时序延迟,也必须在选择线267上增加χ-周期延迟,该选择线267馈入DeMUX206的选择输入265。线 267上的该χ-周期延迟将适当地占据跨过共享资源203的χ-周期时序延迟,使得在合适的时间在DeMUX 206的选择输入265处接收选择电路209置于线261上的选择信号。在例示的实施例中,可使用延迟电路占据该延迟。在图2C中,这是用延迟电路211实现的。延迟电路211也由快速时钟2X时钟控制。延迟电路可被设计为使用下列等式来延迟选择信号(χ MOD N)=选择线267的延迟,其中χ表示时钟周期内跨越共享资源203的时序延迟,以及其中N表示合并到共享资源上的候选物数量。使用该等式,选择线267的延迟可被适当地设置以匹配跨过共享资源203的延迟。 例如,在克隆产品A 201、克隆产品B 202和共享资源203中的每一者都包括3-周期时序延迟的情况下,若χ = 3,,则公式(3 MOD 2) = 1,1-周期延迟可置于线261上,从而在其到达线267以馈入DeMUX 206的选择输入265之前,将选择信号261延迟1个周期。然而,这是以解释而非限制的方式给出的,可使用任意数量的各种电路配置来适当地延迟选择信号 267和/或在合适的时间触发DeMUX 206的输入265。在快速时钟2X的情况下,这样的一个例子为在DeMUX 206的选择输入265处简单地切换导线。操作期间,选择电路206将由快速时钟2X时钟控制。在快速时钟2X的第一周期上,选择电路209将输出一个值(表示0)到线261上,使得选择输入263选择MUX 205的输入之一(比如说INtl)用以通过MUX 205并被输出到共享资源203。然而,在该值到达DeMUX 206的输入265之前,由选择电路209置于线261上的值将被延迟。特别是,线261上的该值将在延迟电路211处被接收,并被适当地延迟。选择电路209和延迟电路211的组合选择正确的线程,该线程在正确的时间通过共享资源203。这样,基于分配的进程通过时间多路复用该信号通过共享资源203而调整输入和其对应的输出。每个分配进程将对应于快速时钟的一个微周期,在该微周期中执行各个候选物(克隆产品A 201和克隆产品B 202)的每个操作的时间多路复用。该操作更详细地示例于图2D-2E中。图2D例示了图2A中根据本发明示例性实施例的用于共享的候选物间使用快速时钟2X合并变换的资源共享,所述候选物进一步包括 1-周期时序延迟。图2D含有图2C所示框图中“共享后”部分的放大视图。共享后,共享资源203包括锁存器217,该锁存器是本领域公知的用于顺序存储电子信号的时序逻辑元件 (通常存储二进制值)。诸如锁存器217的锁存器在时钟信号的一个相位(例如,低或高) 期间存储其输入的信号值,而当时钟信号在相反相位(例如,高或低)时允许信号“透明”通过。因此对电路中信号必须通过的每个锁存器而言,发生时序延迟。这是以解释而非限制的方式给出的,因为诸如触发器的其他时序逻辑元件也会促成电子电路和系统中的时序延迟。图2D中,共享资源203也包括组合逻辑电路222和223,来自MUX 205的输入信号必须通过组合逻辑电路222和223才能到达DeMUX 206。然而不像诸如锁存器217的时序逻辑电路,组合逻辑电路并不会促成跨过电子电路的时序延迟。因此在操作中,来自MUX 205的输入在快速时钟2X的第一周期期间将通过组合逻辑电路222并存储于锁存器217 中。在快速时钟2X的下一周期,存储于锁存器217中的输入值将通过组合逻辑电路223并被输出到DeMUX 206的输出。以同样方式配置MUX 205和DeMUX 206,正如其在图2C中那样。此外,将延迟电路 211配置得和图2C中一样。在该例中,图2D使用的选择逻辑电路是二元计数器(modulo-2 counter) 2090然而,这是以解释方式而非限制,因为任意选择电路或本领域公知的其他机制都被认为位于本描述的范围。在例示的实施例中,二元计数器由快速时钟2X时钟控制。 所述二元计数器通过值0、1重复地相加,之后重复返回0,等等。结果,通过重复放置值0或 1到线261上、定义分别对应于线程_0和线程_1的微周期0和微周期1,二元计数器209 执行前述选择电路的操作。因此,二元计数器209放置值0或1到线261上,该放置值0或 1经由延迟电路211馈入到MUX 205的选择输入263和DeMUX 206的选择输入265。在图2D的例子中,公式(1M0D 2) = 1个周期延迟,因此在从二元计数器209输出到线261上的值和延迟信号267之间将有1-周期延迟。二元计数器209在值0和1之间触发MUX 205和DeMUX 206的选择输入,使得分别选择对应于OUTtl和OUT1的INtl和IN1被选择。当二元计数器209在快速时钟2X的第一周期输出0(数到0)时,一个周期的延迟之后选择MUX205的INtl以及DeMUX 206的OUT。。之前提供给克隆产品A 201的输入INtl被输入到共享资源203中并通过组合逻辑电路222传播,最后存储(或锁存)于锁存器217上。 在快速时钟2X的下一周期,在锁存器217中锁存的值从锁存器217被输出,并通过组合逻辑电路223传播到DeMUX 206的输入。一个周期的延迟之后,选择线267到达DeMUX 206 的选择输入265,并选择DeMUX 206的输出OUTtl。现在使用时间多路复用并跨过共享资源 203,执行之前在克隆产品A 201中所执行的功能。同样地,在快速时钟2X的下一周期,当二元计数器209输出1 (数到1),一个周期的延迟之后选择MUX 205的IN1以及DeMUX 206的0UI\。因此之前提供给克隆产品B 202 的输入IN1被输入到共享资源203中,在该共享资源中其通过组合逻辑电路222传播,最后锁存于锁存器217上。在快速时钟2X的下一周期,从锁存器217将锁存器217中锁存的值输出和通过组合逻辑电路223传播并进入到DeMUX 206的输入。一个周期的延迟之后,选择线267到达DeMUX 206的选择输入265,并选择DeMUX 206的输出0UI\。如今使用时间多路复用并跨过共享资源203,执行之前在克隆产品B 202中所执行的功能。
21
图2E详细地例示了这些操作,其示出了图2D根据本发明示例性实施例的用于共享的2X合并候选物之间的时间多路复用。正如所示的那样,快速时钟2X被加速到以前的初始系统时钟Ck频率的二倍(2X)。在例示的实施例中,在时间周期t0,快速时钟2X在241 处的第一次正转换(即,从0到1的转换)期间,图2D中的二元计数器209数到值0并将该值置于线261上(操作248)。线261上的值0使得MUX 205将入^ (InO)传过组合逻辑电路222,将产生的信号传播到锁存器217上(也由快速时钟2X时钟控制),并在锁存器217 的输出233处被锁存(操作250)。在此例中,因为存在位于共享资源203内的时序逻辑元件(存器217),所以跨过延迟电路211将有1-周期延迟。从而,线267上的值将是线261上的被延迟一个周期的值。 其在图2E的时序图中得到例示,其中在t0时线261上的值0在tl时出现在线267上,tl 是快速时钟2X的下一时钟周期。在时间周期tl,在242处快速时钟2X的第二次正转换期间,图2D中的二元计数器209数到值1并将该值置于线261上(操作249)。线261上的值1使得MUX 205将入 !(Inl)传过组合逻辑电路222,将产生的信号传播到锁存器217上(也由快速时钟2X时钟控制),在锁存器217的输出233处被锁存(操作251)。此外在tl处,线267上的值0使得DeMUX 206的出Q(0UtQ)被选择(操作252)。在快速时钟2X的每个周期重复该过程。考虑到将两个用于共享的候选物合并到共享资源上而筹划(cast) 了上述实施例。术语N路复用(N-plexing)指的是基于N个经识别的用于共享的候选物而执行N次时间多路复用的合并变换。例如,在上述例子中,用两(2)个相同或相似的用于共享的候选物 (克隆产品A201和克隆产品B202)来执行N路复用。然而说明书并不局限于此,因为只要对应的电路和/或功能可被加速N倍,任意数量的用于共享的候选物就可被识别,以用于共享电路资源。图3例示了根据本发明示例性实施例在用于共享的候选物之间使用快速时钟 4X合并变换的资源共享,所述候选物具有χ-周期时序延迟和不同的I/O信号。在图3的例子中,现在我们有四(4)个设计子集,所述设计子集用以合并到共享资源203上并被合适地时间多路复用,所述设计已被识别为用于共享的候选物。共享前,χ-周期时序克隆产品 A 201、η-周期时序克隆产品B 202、χ-周期时序克隆产品C 207和χ-周期时序克隆产品 D 208被识别为包含了相同或相似的功能和/或电子电路。图3示出了用四(4)个经识别的用于共享的候选物来N路复用。现在这四个候选物被合并到一组其共有的资源上。因此在该实施例中,四倍的功能被压缩到同一共享资源 203中。从而,必须提供初始系统时钟频率的四倍频率的快速时钟一快速时钟4Χ,以跨过共享资源完成四倍的工作。在2路复用的例子中,快速时钟需要是初始系统时钟的两倍快,以在同一共享资源203上执行两个不同的用于共享候选物的功能。在图3的例子中,现在有四个用于共享的候选物,因此必须将时钟加速到快速时钟4Χ,使得在快速时钟4Χ所划定的四个微周期内跨过共享资源203可以完成四倍的工作。此外在某些实施例中,可使用公式 (x MOD η)来计算延迟电路211中的延迟,其中χ是跨过了每一个用于共享的候选物及共享资源203的时序延迟,而N如之前那样是共享资源的候选物的数量。诸如2位格雷码计数器209的选择电路现在在四(4)个不同的输入/输出组合或线程间选择。在例示的实施例中,2位计数器用于在四个线程中的每一个上循环,因为2位计数器依次计数包含0,1,2和3的四个值,之后重复返回到0。每个分配的线程对应于如之前那样的一个计数值,但是此例中有四个不同的线程在四个微周期间协调。2位格雷码计数器209可用作选择电路。格雷码是二进制数字系统,其中两个连续的二进制码区别仅在于一位。通过连续的二进制值增或减时,格雷码具有仅改变一位值的特点。因此可以使用格雷码计数器,以使用最不可能的二进制转换来循环二进制值。结果,因为在电路内切换晶体管,2位格雷码计数器209能降低功耗量。至少在某些实施例中这是重要的,因为选择电路以快速时钟频率在0,1,2和3之间不断地切换值。然而,这是以解释而非限制的方式给出的,因为任意以有组织和协调的方式在四个不同输入之间重复地选择的选择电路都认为是位于本发明的范围之内。共享资源203、2位格雷码计数器209和延迟电路211中的每一个都由快速时钟 4X时钟控制。MUX 205包含了对应于ΙΝ0、ΙΝ”ΙΝ2和IN3的四个输入0-3。DeMUX 206包含了对应于OUTtl、OUT1、OUT2和OUT3的四个输出0-3。在第一微周期内,比如说微周期1,将执行对应于克隆产品A 201的从InO到OutO的功能,在微周期2内将执行对应于克隆产品B 202的从IN1到OUT1的功能,同样地在微周期3和4内将分别执行克隆产品C 207和克隆产品D 208的功能。因此,实施例需要加速该系统时钟,通常加速等于或小于用于共享资源的候选物的数量N的倍数。然而,也支持更快的时钟。只要在足够的时钟速率下时钟控制N个候选物以处理给初始电路的输入,实施例就可操作用来在经识别的任意N个共享候选物中共享资源。图4包括例示了根据本发明一个实施例的示例性方法的框图,用于占据共享资源内的状态时序元件。共享前,电路400包括组合逻辑电路401,状态时序元件402在组合逻辑电路401的输入而状态时序元件403在输出。状态时序元件被定义为任意的时序逻辑电路,例如位于反馈环内的锁存器或触发器。立刻参考图5Α,克隆产品A显示了位于反馈环内的时序元件的一个例子。在例示的实施例中,FFIa是状态时序元件,因为它的位置在反馈环430Α内。当诸如图4中的元件402和403的状态时序元件存在于设计中用以N路复用时,每个状态时序元件必须是N折的(N-plicated)。N折包含将每个状态时序元件变换成N 个时序元件,如前面的那样,其中N是被N路复用到共享资源的候选物的数量。N折包含用一串N个等时(isochronous)状态元件来替换每个状态时序元件。在一些实施例中,一串 N个等时状态元件可由N阶移位寄存器实现。在其他实施例中,诸如随机存取存储器(RAM) 的存储器可用于代替一串N个等时状态元件。共享后,至少在某些实施例中,含有组合逻辑电路401和状态时序元件402及403 的N个候选物被合并到一组共享资源上。N个组合逻辑电路元件401被N路复用到共享的组合逻辑电路405上,以及N个状态时序元件402和403被N折分别产生状态时序元件404 和406,其中状态时序元件404和406中的每一个都包括一串N个等时状态元件(由N表示),详细显示于407中。当能够N折所有的时序元件时,这经常是低效的。如果时序元件首先被识别,而之后被归类为流水线(pipeline)或状态时序元件,则可避免这种完全的复制。流水线时序元件跨过共享资源仅仅增加了延迟,并可用来占据图2A的延迟电路211。 至少在某些实施例中,状态时序元件需要N折。只要设计被多路复用N次,每个状态时序元件一定是N折的。这样做是为了保持每个线程的环境(context)。这在图5A和5B中有更详细的显示。图5A例示了根据本发明示例性实施例的用于共享的候选物之间的资源共享,该候选物包括流水线和状态时序元件。在例示的实施例中,共享前候选物克隆产品A包括时序元件(触发器)FF0a、FF1a、FF& 和组合逻辑电路419A和420A,而候选物克隆产品B包括FF0B、FFIb, FF2b和组合逻辑电路 419B和420B。因为FFIa和FFIb是时序元件且被分别包含于反馈环430A和430B中,所以它们被识别为将被N折的状态时序元件。因为剩余的触发器并非位于反馈环内,所以它们被识别为流水线时序元件。在例示的实施例中,共享后状态时序逻辑电路是N折的,结果形成了一串N个等时状态元件FFIa和FF1B。注意在共享后,N个状态元件FFIa和FFIb仍然位于共享资源的反馈环430内。流水线时序元件并不改变,除非它们现在由快速时钟2X所时钟控制。图5B例示了示出了图5A中根据本发明示例性实施例的用于共享的候选物之间的时间多路复用的时序图。快速时钟2X的第一正转换发生于时间、处。正如前面那样,快速时钟2X初始系统时钟的频率的二倍。在时间、处,输入^itl(对应于线程0)从诸如图 2A(未示出)MUX 205的多路复用电路中被选择,并通过FF0a/FF0b传播。Ltl (线程0)通过组合逻辑电路419继续传播和进入到第一 FF1,并被存储(保持)于第一 FFl的输出472 处,直到下一时钟周期为止(操作441完成)。在时间、处,快速时钟2X的第二个正转换发生,存储于第一 FFl的输出472(线程0)处的值传播到第二 FFl并被存储于输出471处,直到下一周期为止(操作443完成)。 同时,也在、处,输入^i1 (线程1)从诸如图2A的MUX 205的多路复用电路(未示出)中被选择,并通过FF0a/FF0b传播,继续通过组合逻辑电路419并进入到第一 FF1,以及被保持于第一 FFl的输出472处,直到下一时钟周期为止(操作442完成)。在时间t2,快速时钟2X的第三个正转换发生,存储于第一 FFl的输出472(线程 1)处的值传播到第二 FF1,并被保持于输出471处,直到下一周期为止(操作446完成)。 同时,也在t2处,输入^itl(线程0)从诸如图2A的MUX 205的多路复用电路(未示出)中再一次被选择,并通过FF0a/FF0b传播,继续通过组合逻辑电路419向第一 FFl前进(操作 445)。在同一时钟周期中,保持于第二 FFl的输出471(进程0)处的该值被分成反馈通路和前馈通道。前馈通道包含保持于第二 FFl的输出471 (线程0)处的信号,该信号通过组合逻辑电路420传播到FF2A/FF2B,其中该信号保持于FF2a/FF 的输出OutcZOut1处(操作 444完成)。反馈通道包含保持于第二 FFl的输出471(线程0)处的信号,该信号在反馈环 430周围传播并通过组合逻辑电路419传播,其中该信号通过FF0a/FF0b而与来自输入的值(线程0)逻辑组合,并进入到组合逻辑电路419。一旦来自线程0的每个值被组合和保持于第一 FFl中,操作445便完成了。在时间t3,快速时钟2X的第四个正转换发生,存储于第一 FFl的输出472 (线程0) 处的值传播到第二 FF1,并被保持于输出471处,直到下一周期为止(操作448完成)。同时也在t3处,输Ah1 (线程1)从诸如图2A的MUX 205的多路复用电路(未示出)中再一次被选择,并通过FF0A/FF0J.播,继续通过组合逻辑电路419向第一FFl前进(操作447)。 在同一时钟周期中,保持于第二 FFl的输出471处(进程1)的该值被分成反馈通路和前馈通道。前馈通道包含保持于第二 FFl的输出471处的信号(线程1),该信号通过组合逻辑电路420传播到FF2A/FF2B,其中该信号保持于FF2a/FF 的输出OutcZOut1处(操作449完成)。反馈通道包含保持于第二 FFl的输出471(线程1)处的信号,该信号在反馈环430周围传播并通过组合逻辑电路419传播,其中该信号通过FF0a/FF0b而与来自输入In1 (还是线程1)的值逻辑组合,并进入到组合逻辑电路419。一旦来自线程1的每个值被组合和保持于第一 FFl中,操作447便完成了。对于快速时钟2X的每个周期重复该过程。通过所描述的将该状态时序元件N折来占据状态时序元件的反馈。以这种方式,保持通过共享资源而运行的进程。例如线程0的输入值与线程0的反馈值组合。同样地,线程1的输入值与线程1的反馈值组合。该调整允许在没有混合线程的情况下多个候选物共享包括状态时序元件的资源。因此,在N个共享相同硬件资源的候选物间共享资源时,N折起了保持每个线程环境的作用。图IlC例示了占据根据本发明示例性实施例的通过图1IA-IIB中的N路复用共享资源的方法中的时序逻辑。至少在某些实施例中,必须识别用于共享的候选物内的时序元件(操作11 )。下一步,实施例确定被识别的时序元件是否是流水线或状态时序元件(操作1131)。一旦识别是状态时序元件,它们可如上所述的那样被N折(操作1133)。之后可确定和占据跨过共享资源的时序延迟(操作113 。占据跨过共享资源的时序延迟的一种这样的方式提供了延迟电路,例如图2A中的延迟电路211。如上所述,在N路复用后可应用公知的设计优化,以改善性能、面积、功率和其他参数。例如,通过该设计,寄存器再定时(retiming)可以更统一地分配N折触发器,减小了关键路径的长度,从而允许更快的时钟速度或更大的时序余量(timing slack)。实际上,它对于此技术的成功可能是重要的,因为它会在整个设计中分布N路复用的触发器(FF)。但在一些例子中,这并不需要,且可避免。III.评测和验证图IlD例示了根据本发明示例性实施例评测共享时机的方法。读取电子系统的输入描述后,至少在某些实施例中识别用于共享的时机。至少在某些实施例中,考虑每个可合并的资源(例如用于共享的候选物)(操作1137),并评测从N路复用资源中潜在地获得的改善(操作1138)。可分别考虑每个可合并的资源。在示出的实施例中,在判定块1139 处,确定是否已经考虑了足够数量的经识别的可合并资源。如果未考虑足够数量的可合并资源,则控制流向操作1140而考虑下一个可合并资源。如果已考虑足够数量的可合并资源,则控制流向操作1141,在该操作中评测了每个可合并资源的等级(rank)并建立了等级阈值(操作1142)。至少在某些实施例中,等级阈值可以是截止定点(cut-off),在该点之下可合并资源并不会提供足够的好处来证明正被N路复用。等级阈值可基于许多因素来确定,包括上述优化参数的任意组合。一旦每个可合并资源被分级以及等级阈值已被建立,则实施例开始处理该可合并资源,从具有最高等级的可合并资源开始(操作1143)。在判定块1144处再次考虑每个可合并资源,并确定可合并资源是否满足等级阈值。若否,则可合并资源不包含在N路复用资源的最终输出中(操作1148)且控制流到图IlA0如是这样的话,实施例提供如果可合并资源与之前已包含在最终输出中的可合并资源兼容的话,可合并资源被N路复用并包含于最终的输出中(操作1145)。至少在某些实施例中,如果其与之前合并的资源不兼容,则可合并资源可能不会包含于最终输出中。例如,在考虑中的可合并资源可能是之前合并的资源的子集或超集。在这些实施例中,可合并资源可能不包含于最终输出中。控制流向判定块1146,在该处确定是否已经评测了所有被分级的资源。若是,则控制流向图12。若否,则控制流向操作1147,在操作1147处之前计算的等级被随意
25地更新,之后控制流回到操作1142,在操作1142处重建等级阈值。评测、可能评分、可能执行每个用于共享的时机。可通过尝试性的实施来执行评测,评测可能会也可能不会包含于最终输出中,这依赖于是否改善了参数,所述参数例如实际的资源利用、成本、空间、性能度量、能量或功率消耗。实施例也可能用N路复用时间共享资源来验证电子系统。至少在某些实施例中, 通过“展开(unfolding) ” N路复用资源而重建初始电路、功能模块和/或附加物来执行验证(validating)。图12例示了根据本发明示例性实施例使用展开来验证利用N路复用的资源共享的方法。至少在某些实施例中,展开(或非虚拟化(imVirtUalized))N路复用共享的资源,用于重建初始电路设计。之后该重建的电路设计与初始电路设计相比较,用以验证N路复用的设计。展开被定义为与合并相反。因此N路复用的集成电路设计的展开应该产生初始电路设计,就像它在合并前的那样。至少在某些实施例中,这包括为每个线程_ 识别码(thread_id)克隆(clone)共享的逻辑(操作1250),需要时输出(fan out)各自的输入信号,以及循环遍历(iterate through)线程选择电路的所有可能thread_id,例如图2A中的选择电路209 (操作1251)。之后实施例可能通过恒定传播各个thread_id经由每个克隆产品简化该设计,以复原初始模块或子电路(操作1253)。恒定传播是将公知常数值带入表达式的过程。在这种情况下,threacLid是可能被传播以简化电路的公知常数。 该threacLid的恒定传播建立了分离的时间片(time-slice),其中多路复用电路不再存在 (从N路复用电路中移除MUX和DeMUX)。恒定传播thread_id的另一个效果在于快速时钟将变成之后可被移除的悬摆线(dangling wire)。控制流向操作1255,其中产生的电路对着初始设计的对应部分被等效核查。例如基于仿真或SAT的技术的现代技术可快速地证明结果设计的等效性(equivalence)。在操作1263处,如果分离的时间片与初始电路不匹配,控制流向操作1269,此处电路是无效的。如果存在匹配,修改的电路设计是有效的(操作 1265)。在其他实施例中,使用公知的仿真驱动技术来执行验证。一种这样的技术包括用多个输入/输出组合轮换合并资源的1/0,并将结果与初始电路上执行的相同仿真比较。例如可将用于MPEG4电路的同一电影驱动到合并资源的输入,并确定合并资源的输出或性能是否不同。IV.处理存储器因为存储元件必须将其值保持许多周期,不能通过执行几个线程而共享一个这样的元件。然而,如果一直在容量以下使用一个固定大小的存储器模块,另一模块可能适合未使用的地址空间。使用了不到50%容量的一对同样大小的模块(用于FPGA的常见例子)允许容易地整合到一个现有存储器上。当共享存储模块时,一个或多个扩展的地址位可在初始模块间起逻辑选择的作用,而不需要选择电路或多路复用电路。图8A例示了根据本发明示例性实施例在具有一个或多个未使用地址端口的存储器中的资源共享。至少在某些实施例中,诸如RAM 801和RAM 802的存储器可被识别为用于共享的候选物,或者可以是经识别的用于共享的候选物的任意子集。如果RAM 801和RAM 802包括至少一个未使用的地址端口,则其可通过使用N路复用在不需要多路复用电路的情况下被共享。在图8A中,RAM 801 包括数据_输入(datajn)端口 815、地址端口 811、读/写端口 813和数据_输出(data_ out)端口 817。同样地,RAM 802包括datajn端口 815、地址端口 811、读/写端口 813和data_0Ut端口 817。用一个未使用的地址端口来寻址的存储器的一个例子示于图8B中,其例示了存储地址位配置的并排比较。图8B的左手边举例说明了具有一个未使用地址位的 4位可寻址存储器的例子。在该例中,最高有效位(MSB)是未使用的。结果,存储器中的可寻址存储单元(memory location)被限制成可存取3位的地址单元。这样一种存储器只包括八(8)个可寻址存储单元(见图8C)。然而在图8B的右手边,说明了没有未使用地址的 4位可寻址存储器的例子。在该例中,存储器内的可寻址存储单元包括可存取全部4位地址的所有存储单元。这样一种存储器包括十六(16)个可寻址存储单元,其是左边存储器的两倍。这进一步显示于图8C中,图8C例示了分别使用3位和4位寻址的可寻址存储单元的并排比较。例如图8C左手边描述的那样,使用3位寻址的结果是只有总共8(0到7)个可寻址存储单元可用于存储数据。相反,例如图8C右手边描述的那样,使用4位地址的结果是总共16(0到1 个可寻址存储单元可用于存储数据。因此,通过提供两倍的可寻址存储单元,每个额外的存储器地址位(或端口)导致存储器容量翻倍。因此在图8A中,如果RAM 801和RAM 802中的每个都具有未使用的地址端口,则它们中的每个将只支持一半的可寻址存储单元,该单元将在其他方面可用。使用N路复用共享之后,通过将未使用的地址端口用作线程标识符(thread_id),RAM 801和RAM802中的每一个可被塞入具有双倍容量的共享存储器内。例如在图8B中,如果bit3被用作thread_ id,则当thread_id,位3(bit3) =0时,可存取最初的(first)八个可寻址单元。最初的八个可寻址单元可被分配到可合并存储器RAM 801或RAM 802中的一者。同样地,当thread_ id,bit3= 1时,可存取其次的(second)八个可寻址单元。其次的八个可寻址单元可被分配到可合并存储器RAM 801或RAM 802中的另一者。该合并技术形成了诸如图8A中具有翻倍容量的RAM 803的共享存储器。RAM 803包括data_in端口 821、读/写端口拟4和data_ out端口 825。然而RAM 803的可用地址端口 823的最高有效位(MSB)被用作thread_id 822,用于在RAM 203的内容中选择,而RAM 203对应于合并候选物RAM 801和RAM 802。因此thread_id 822的值可被用于在共享的RAM 803中的RAM 801和RAM 802之间选择。电路操作期间,建立在每个RAM中的解码器被用于解码存储地址,并将其置于存储器的地址端口上。在此例中,内置解码器可被影响(leveraged),以在共享双倍容量RAM 803的每个候选物之间提供多路复用。这可以在无需多路复用电路的情况下完成,所述多路复用电路例如关于附图2A所描述的MUX 205。图13A例示了根据本发明示例性实施例在具有一个或多个未使用地址端口的存储器间资源共享。至少在某些实施例中,识别两个或多个具有一个或多个未使用地址端口的现有存储器(操作1311)。使用合并变换,在两个或多个存储器之间共享资源,其中未使用的地址位可被用作threacLid,以在两个或多个共享资源的存储器之间切换(操作 1313)。最后,实施例影响内置解码器来执行多路复用(操作1315)。在被N路复用的可合并资源中经常发现嵌入式存储器。当从预设计部件的库中取出存储块时,新的存储块可能与任意公知的配置不匹配。这发生在合并最大的可用RAM时。 例如,可能没有另外的同样大小的RAM来与最大可用RAM共享资源。如果最大可用RAM包括十(10)个地址端口,而其他可用于共享的RAM只包含九(9)个地址端口,则其不匹配,也不能如图8描述的那样被合并。同样的问题在包含预制造存储器的FPGA上发生得甚为频繁。 图9例示了根据本发明示例性实施例连接等效存储块以提供两倍的容量。至少在某些实施例中,相等大小的存储器可被匹配以用于资源共享。这示于图9的左手边,其中RAM 902被连接到一起以在合并电路中提供二倍的容量。然而在某些例子中,同样尺寸的两个RAM可能不可用。在这种情况下,现有的RAM可能被重新平衡以共享资源。在图9中,RAM 901包括8位的data_in端口 911、8位的data_out端口 912、9位的地址端口 913和读/写端口 914。因此,RAM 901可能被重新平衡以匹配RAM 902的其他实例。此处,对于固定容量,可以利用FPGA和ASIC设计环境的性能来重新配置固定容量的存储器I/O。实施例提供了 RAM 901的重新平衡,包括增加至少一个额外的地址端口到现有存储器结构上并减少一半的数据端口组。一旦存储器被重新平衡,其可与其他RAM 902组合,假定在存储器库中或合并电路内可用其他的RAM 902。图1 例示了根据本发明示例性实施例在存储器间共享资源的方法。至少在某些实施例中,可根据需要重新平衡存储器(操作1301)。例如,如果现有存储器与在大小上彼此不兼容,为了在它们上面执行合并技术,则可能需要重新平衡来匹配存储结构。在这些情况下,可以通过增加地址线并移除数据线、并以与图9中示例性实施例相似的方式来重新平衡现有存储器。该操作后可能随后是通过将兼容存储器(重新平衡的或其它形式的)合并成双倍容量的共享存储器(操作130 来在现有存储器中共享电路。最后,实施例影响内置解码器以执行多路复用(操作1305)。以这种方式,当存储器配置不同时,通过重新平衡而组合现有存储器。V.使用内置的功能部件在存储器的情况下中,现有内置解码器和寄存器可被影响,而不需要额外的多路复用电路。例如,图2中的多路复用和多路分解电路中的每一个可能是多余的,因为可影响内置地址解码器来提供多路复用,而存储器中的寄存器可以提供多路分解。然而,使用集成电路设计的内置功能部件(feature),其他配置作为共享时机存在。例如,展开的循环通常包含复制的电路和/或功能。图6A例示了循环展开(loop unrolling)。循环结构(例如图6A左上方所描述的例子)是用于程序代码的常用技术。出于各种不同的原因循环结构用在编程中,并且基于编程语言循环结构可采取任意数量的不同形式。图6A右上方显示了该图左上方显示的示例循环结构的展开方案。此外,基于该图右上方的展开循环,图6A的较低部分例示了硬件中所产生的电路的实例。对于循环结构中的每次迭代,展开的循环可包括相同或相似的电路和/或功能,正如图6A中较低部分所描述的那样。在该图中,相同或相似的电路包括克隆产品A 606、克隆产品B 607、克隆产品C 608和克隆产品D 609。同样地,展开的循环也典型地包括耦合到相同或相似电路和/或功能的已注册输入和输出。已注册的I/O包括reg(注册)601、reg 602、reg 603、reg 604和reg 605。在遍历循环结构的每次迭代(iteration)的最后,索引值(此例中是j)和变量(此例中是数据)必须更新和存储以用于下一个循环迭代。因此,至少在某些实施例中,来自循环结构每次迭代的存储值可存储于已注册的输出/输入中。结果,经常有很多包含于展开的循环中的复制电路和/或功能。该电路可提供共享时机。诸如图6A较低部分所示的优化电路和/或功能的一种方法是循环再卷起 (re-roll)。参见图6B,其例示了根据本发明示例性实施例的循环再卷起。在图6B的上部, 展开的循环和图6A描述的相似。至少在某些实施例中,展开的循环可被再卷起以利用共享时机。图6B的下部例示了对应于该图上部的展开循环的再卷起循环。在该例中,对于展开的循环的每次迭代,可发现相同或相似的电路和/或功能,并被识别为可合并资源。例如, 图6B中潜在的可合并资源可包括克隆产品A 606、克隆产品B 607、克隆产品C 608和克隆产品D 609。此外,图6B中潜在的可合并资源也可包括reg 601、reg 602、reg 603、reg 604 和 reg 605。一旦可合并资源被识别并被确定为在展开的循环内,则根据图6B所述的配置可合并资源可被N路复用。现在,每个循环迭代在reg 601/602/603/604/605 (reg 601/602/603/604/605 是 reg 601、reg 602、reg 603、reg 604、reg 605 的共享方案)注册。此外,包含于克隆产品A 606、克隆产品B 607、克隆产品C 608和克隆产品D 609中的复制电路可被合并到共享资源657上。反馈循环671模拟循环结构,诸如图6A右上方所述的循环结构。对于每次迭代,值被循环回MUX 655,并在reg 601/602/603/604/605被注册。 在下一次迭代中,注册值将可用于共享资源657上。再一次,共享资源的候选物数量决定了快速时钟频率,在这种情况下达到4X的初始系统时钟。2位格雷码计数器651被用作选择电路,而注册的输出被置于reg 653中,因此在该配置中避免了输出多路复用器的需要。图15例示了根据本发明示例性实施例通过再卷起展开的循环、使用合并变换来识别共享时机的方法。至少在某些实施例中,接收集成电路的描述和/或设计(操作1501), 并识别位于展开的循环结构中的用于共享的候选物(操作1505)。一旦识别了展开的循环中的用于共享的候选物,则可使用图6B较低部所描述的合并变换来共享资源,从而以较少的资源创建经修改的电路设计(操作1507)。这样,展开的循环可被再卷起,以利用资源共享时机来优化集成电路设计。通过使用集成电路设计的内置功能部件,其他配置存在作为共享时机。例如,图7 例示了根据本发明示例性实施例连接到I/O总线的I/O客户端间的资源共享。至少在某些实施例中,根据该描述的原理可共享I/O客户端。示范性电路设计700包括I/O客户克隆产品1 702、克隆产品2 703、克隆产品3 704和克隆产品4 705,每一个都如图所描述的那样耦合到I/O总线701上。此外,设计700包括分别对应于每个I/O客户的I/O连接711-714。 共享之后,每个I/O客户可被合并到共有电路上(共享的720),并使用总线701被时间复用。因为在该情况下有四(4)个可合并资源,所以利用了快速时钟4X。此外,该情况下的选择电路722包括由快速时钟直接触发的简单触发器。在图7中,可影响总线701来提供多路复用。从总线上发出的信号和发往总线的信号可由总线控制器所控制,该控制器可被配置为在对应于每个可合并资源(该可合并资源包括克隆产品1 702、克隆产品2 703、克隆产品3 704和克隆产品4 705)的输入间选择,所述可合并资源跨过共享的资源720而共享资源。这样,通过总线701本身而提供了多路复用和多路分解功能。因此,多路复用器和多路分解器(例如图2A中的MUX 205和DeMUX 206)不再是必需的。可被识别为合并电路和/或功能的额外实例在图10A-10B中有描述。图IOA例示了根据本发明一个实施例在与多路复用器选择电路耦接的交叉开关(crossbar)上执行合并变换。至少在某些实施例中,可通过使用32位总线1010来执行交叉开关1011。共享前,MUX 1001到1004中的每一个与32位总线的每一者耦接,并用于选通电路,以允许输 Λ 1021、1022、1023和1024上的耦接总线的一者分别传到MUX 1001到1004的输出1025、 1026、1027、1028。在例示的实施例中,MUX 1001到1004中的每一个分别包含3位选择输入 1005、1006、1007 和 1008,每一个分别包含 32 位输入 1021、1022、1023 和 1024。MUX 1001
29到1004中的每一个还分别包括32位输出1025、1026、1027和1(^8。依赖于3位选择输入上的值,允许来自交叉开关1011的32位总线1010上的对应的32位输入通过。合并变换后,多路复用器1001、1002、1003和1004中的每一个被合并到共享MUX 1033上,并使用额外的MUX 1031来选定选择输入1005到1008。此外,使用多路分解器1032 来对输出多路分解,以将共享MUX 1033的输出分解成输出1025到10 ,输出1025到10 分别由之前合并的MUX 1001到1004提供。如之前例示的例子中,选择电路1030可以是由快速时钟触发的触发器。在该配置中,如例示的那样,32位MUX可用于在众多可合并32 位MUX间共享资源。然而,该配置较之于最优配置包含了稍多的多路复用开销。图IOB例示了根据本发明另一实施例在与多路复用器选择电路耦接的交叉开关上执行合并变换。该图中,通过替换具有输出使能锁存器(或触发器)1053、1054、1055和1056的多路分解器 1032,图IOA中的合并电路被进一步优化。此外,PMUX 1031用于替换普通MUX 1031,以在输出使能线上提供独热方案(one-hot scenario),该输出使能线用于选择哪个输出使能锁存器将传递从共享MUX 1033输出的值。输出使能锁存器1053到1056用作多路分解器电路。只要选定了选择输入1005到1008中的一个,就相应地选定了对应的输出使能锁存器 1053 到 1056。在一些情况下,通过将一件件设计分解成更小件的设计并在更小件中寻找共享时机,可以识别可合并资源。图14例示了根据本发明示例性实施例将一个或多个设计子集分解为用于资源共享的更小子集的方法。至少在某些实施例中,接收集成电路的设计和/或其他描述(操作1407),以及设计的一个或多个子集被分解为更小的子集,用于寻找共享时机(操作1409)。在设计的更小子集间识别了可合并资源后,资源可在更小子集间共享(操作1411)。这样,可以发现另外的资源共享时机。图16显示了典型的数据处理系统的一个例子,例如数据处理系统1600,其可用于本发明。注意,在图16例示了数据处理系统的各个部件时,并不打算代表任意特定的结构或互连所述部件的方式,因为这些细节并非与发明密切相关。还应该明白的是,也可使用具有更少部件或可能具有更多部件的网络计算机或其他数据处理系统。图16的数据处理系统例如可以是工作站、运行窗口(Windows)操作系统的个人计算机(PC)或者苹果麦金托什 (Macintosh)计算机。如图16所示,数据处理系统1601包括耦接到微处理器1603的系统总线1602、R0M 1607、易失性RAM 1605以及非易失性存储器1606。微处理器1603可以如图16的例子所示的那样耦接到高速缓存存储器1604上,该微处理器可以是设计成执行任意指令集的处理器。系统总线1602与这些各种各样的部件互连在一起,也将部件1603、1607、1605和1606 互连到显示控制器和显示设备1608,以及互连到诸如输入/输出(1/0)设备1610的外围设备上,例如键盘、调制解调器、网络接口、打印机、扫描仪、视频摄像机和该领域公知的其他设备。通常,1/0设备1610通过输入/输出控制器1609耦接到系统总线1602上。易失性 RAM 1605通常被实施为动态RAM(DRAM),该动态RAM为了刷新和保持存储器中的数据,不断地需要电源。非易失性存储器1606通常是磁性硬盘驱动器,或磁光驱,或光驱,或DVDRAM或即使电源从系统移除也能保持数据的其他种类的存储器系统。通常,虽然不需要,但是非易失性存储器1606也将是随机存取存储器。虽然图16显示出了非易失性存储器1606是直接耦合到数据处理系统中其余部件的本地设备,但是应该理解的是,本发明可以利用与系统远离的非易失性存储器,例如通过诸如调制解调器和以太网(未示出)的网络接口而耦接到数据处理系统的网络存储设备。系统总线1602可包括一条或多条通过各种桥、控制器和/或适配器(未示出)而相互连接的总线,这在本领域是公知的。在一个实施例中,I/O 控制器1609包括用于控制USB外围设备的USB(通用串行总线)适配器,和/或用于控制 IEEE-1394外围设备的IEEE-1394总线适配器。本说明书中显而易见的是,本发明的特征可以至少一部分具体化于软件、硬件、固件或其组合中。也就是说,该技术可以在响应于其处理器、执行存储器所包含的指令序列的计算机系统或其他数据处理系统中执行,该处理器例如是微处理器,所述存储器例如是ROM 1607、易失性RAM 1605、非易失性存储器1606,高速缓存1604或远程存储设备(未示出)。 在各个实施例中,可结合软件指令来使用硬件电路,用以执行本发明。因此,该技术不限定于硬件电路和软件的任何具体组合,或者用于由数据处理系统1600执行的指令的任意特定源。此外,在该说明书中,将各种功能和操作描述为由软件代码执行或由软件代码所引起,用于简化描述。但是本领域技术人员应认识到,通过这种表达所表示的是该功能由处理器执行代码而产生,该处理器例如是微处理器1603。可使用机器可读介质来存储软件和数据,当数据处理系统1600执行该软件和数据时将使系统执行本发明的各种方法。该可执行软件和数据可存储于各种地方,例如包括图16所示的ROM 1607、易失性RAM 1605、非易失性存储器1606和/或高速缓存1604。部分软件和/或数据可存储于这些存储设备中的任意一者中。本发明还涉及用于执行此处操作的装置。可以为了所需要的目的而特别地构造该装置,或者该装置可以包含通用计算机,其被存储于计算机中的计算机程序选择性地激活或重新配置。这样一种计算机程序可被存储于或发送到机器可读介质中。机器可读介质包括以机器(例如计算机、网络设备、个人数字助理、制造工具、具有一组一个或多个处理器的任意设备,等等)可存取的方式提供(例如存储和/或发送)信息的任意机制。例如,机器可读介质包括可记录的/不可记录的介质,例如但不限定于机器可读存储介质(如任意类型的盘,包括软磁盘,光盘,CD-ROM,磁光盘,只读存储器(ROM),随机存取存储器(RAM), EPR0M,EEPR0M,闪速存储器,磁卡或光卡,或者适于存储电子指令的任意类型的介质),或者机器可读传输(但不是存储)介质,例如但不限定于任意类型的电子、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)。此外,需要明白的是,此处描述的各种实施例可由数据处理系统来执行,该系统比系统1600具有更多或更少的部件;例如,这种数据处理系统可以是蜂窝式电话,或个人数字助理(PDA),或娱乐系统,或媒体播放器(如iPod)或者消费电子设备等,其中的每一个可用于执行本发明的一个或多个实施例。在前述的整个说明书中,提及的“一个实施例”、“实施例”、“一个示例性实施例”等表示描述的实施例可能包括特定的功能部件(feature)、结构或特征,但是每个实施例可能不必包括特定的功能部件、结构或特征。此外,这种短语不必指代同样的实施例。当结合实施例描述特定的功能部件、结构或特征时,认为将这些功能部件、结构或特征与其他实施例结合在本领域技术人员的知识范围内,不论这是否被明确描述过。只要不脱离本发明原理, 在此处所显示的结构和实施例中可以做各种改变。此外,可结合其他图中显示的实施例来使用显示于各个图中的实施例的功能部件。
在上面所列出的描述以及权利要求中,可以使用术语“耦接”和“连接”连同它们的派生词。需要明白的是,这些术语并不规定为相互同义。更确切地,在特定的实施例中,“连接”用于表明两个或多个元件相互之间直接物理或电气连接。“耦接”的意思可以是两个或多个元件直接物理或电气连接。然而,“耦接”的意思也可以是两个或多个元件相互之间并非直接连接,不过仍然相互合作或相互作用。上面所列出的详细描述的某些部分,以计算机存储器内数据位操作的算法或符号表示来呈现。这些算法描述或表示是数据处理领域技术人员向该领域其他技术人员最有效地传达他们工作主旨(substance)而使用的手段。在这儿,算法通常被设想成能导致所需结果的操作的首尾一致的(self-consistent)序列。该操作是需要对物理量进行物理处理 (physical manipulation)的操作。虽然并不必然如此,但通常这些量以电或磁信号的形式存在,该信号能够被存储、转换、组合、比较或处理等。主要是共用的原因,已证明把这些信号称作位、值、元件、符号、特性、术语、数量等等有时是很方便的。此外,上面所列出的详细描述的某些部分使用电路和寄存器传输级(RTL)表示, 用以举例说明本发明。这些例子并不表示对本发明的限制,此处教导的方法也适用于行为描述和软件程序。然而应该记住的是,所有这些和所有相似的术语将与合适的物理量相关,仅并仅是应用到这些量上的方便标签。除非特别声明,否则正如从上述提出的论述中显而易见的那样,应该明白,整个说明书中,使用诸如“处理”、或“计算”、或“运算”、或“确定”、或“显示” 等术语的论述,指代计算机系统或类似的电子计算设备的动作和过程,所述类似的电子计算设备将计算机系统寄存器和存储器内表示为物理(电学)量的数据进行操作并变换为其他数据,所述其他数据类似地表示为计算机系统存储器或寄存器或其他这种信息存储、发送或显示设备中的物理量。另外,此处出现的算法和显示,与任意特定的计算机系统或其他装置并不是内在地相关。可依照此处的教导而用程序使用各种通用系统,或者它可证明建造更专用的装置用于执行该方法操作是方便的。这些用于多种系统的结构来自上面的描述。此外,没有关于任意特定的程序语言来描述本发明。应该明白的是,各种程序语言可用于执行此处本发明的所述教导。本发明的实施例可能包括上面提出的各种操作、或更少操作、或更多操作、或不同于此处所述的顺序的操作。该操作可实施于机器可执行指令中,该指令使得通用或专用处理器执行某些操作。可替换的,这些操作可由特定硬件部分执行,该特定硬件部分包含了用于执行该操作的硬连线逻辑,或者可由已编程的计算机部件和自定义硬件部件的任意组合
来完成。出于解释的目的,贯穿上面的描述,为了提供对本发明透彻的理解提出了众多具体的细节。然而对于本领域技术人员来说显而易见的是,没有这些具体细节中的某一些也可实行本发明。因此,应该根据所附权利要求书和其法律等效物来判断本发明的范围和精神。
权利要求
1.一种优化集成电路的方法,该方法包括接收所述集成电路的设计的描述;识别两个或多个具有相似功能、但是具有一个或多个不同的输入/输出(I/O)信号的设计的子集,作为用于共享的候选物;以及使用合并变换产生设计的共享子集,该设计由在每个用于共享的候选物中共享电路资源所产生,该合并变换包括将用于共享的候选物合并到一组每个都共有的电路资源上,并在每个用于共享的候选物的操作间进行时间多路复用。
2.根据权利要求1所述的方法,其中,用于共享的候选物包括下列中的一个或多个具有相同功能的候选物;具有相似功能的候选物;用于共享的连接的候选物的集合;用于共享的候选物的集合,所述候选物并非全部都连接;周围具有逻辑电路的用于共享的候选物; 具有与用于共享的其他候选物的子集相似的功能的用于共享的候选物;以及可由特别设计的超级模块取代的用于共享的候选物。
3.根据权利要求2所述的方法,其中,采用额外的选择电路来选出在每个用于共享的候选物之间不同的功能。
4.根据权利要求1所述的方法,还包括确定哪个用于共享的候选物在更高的时钟频率下可被操作;以及在更高时钟频率下,在由快速时钟周期所划定的交替的微周期内,执行用于共享的候选物的时间多路复用。
5.根据权利要求4所述的方法,还包括;确定哪个用于共享的候选物中包括暂时不相交功能;以及通过使用时钟,执行具有暂时不相交功能的用于共享的候选物的时间多路复用,所述时钟源自初始电路的一个或多个系统时钟。
6.根据权利要求5所述的方法,其中,通过加速电路的初始系统时钟、丰富具有一个或多个额外的时钟信号的电路或多路复用一个或多个时钟中的一种方式,来获得所述快速时钟。
7.根据权利要求6所述的方法,其中,所述快速时钟比所述一个或多个系统时钟的速度最多快至η倍,其中η等于合并到所述共享电路资源的用于共享的候选物的数量。
8.根据权利要求7所述的方法,其中,在每个用于共享的候选物的操作间进行时间多路复用还包括生成多路复用电路,用以对对应于每个用于共享的候选物的输入进行时间多路复用。
9.根据权利要求8所述的方法,其中,生成所述多路复用电路包括将之前提供给每个用于共享的候选物的输入重新连接到多路复用器的输入;以及将多路复用器的输出连接到所述设计的共享子集的输入上。
10.根据权利要求9所述的方法,其中,在每个用于共享的候选物的操作间进行时间多路复用还包括生成多路分解电路,用于对接收来自所述设计的共享子集的输出进行时间多路分解。
11.根据权利要求10所述的方法,其中,生成所述多路分解电路包括将所述设计的共享子集的输出连接到所述多路分解电路的输入上,用以接收来自所述设计的共享子集的经时间多路复用的输出;以及将之前从每个所述用于共享的候选物所提供的输出重新连接到所述多路分解电路的输出上。
12.根据权利要求11所述的方法,该方法还包括分配线程到每个所述用于共享的候选物上;以及基于所分配的线程,通过所述设计的共享子集来调整经时间多路复用的信号。
13.根据权利要求12所述的方法,其中,所述多路分解电路以多路分解器的形式实现, 以将来自所述设计的共享子集的经时间多路复用的输出分布到一组接收逻辑电路上,其中该多路分解器包括用于基于所分配的线程在所述接收逻辑电路中进行选择的选择输入。
14.根据权利要求12所述的方法,其中,所述多路分解电路是一组输出使能时序电路, 用于将来自所述设计的共享子集的经时间多路复用的输出分布到一组接收逻辑电路上,其中所述一组输出使能时序电路中的每一者包括用于基于所分配的线程在所述接收逻辑电路中能够进行选择的使能输入。
15.根据权利要求12所述的方法,其中,所述多路分解电路是扇出电路,用于将来自所述设计的共享子组的经时间多路复用的输出分布到一组接收逻辑电路上,其中每个所述接收逻辑电路包括用于基于所分配的线程在所述接收逻辑电路中能够进行选择的使能信号输入。
16.根据权利要求12所述的方法,其中,使用选择电路来实现将线程分配到每个所述用于共享的候选物上和基于所分配的线程并通过所述设计的共享子集来调整经时间多路复用的信号,用以通过触发耦接到所述多路复用电路的选择输入的选择线来在线程间进行切换,并触发耦接到所述多路分解电路的选择输入的选择线。
17.根据权利要求16所述的方法,其中所述选择电路是η元计数器,其中η是合并到所述共享电路资源上的用于共享的候选物的数量。
18.根据权利要求17所述的方法,该方法还包括增加零个或多个周期的时序延迟到所述选择线上,以用于占据所述设计的共享子集上的时序延迟,所述选择线耦接到所述多路分解电路的输入。
19.根据权利要求18所述的方法,其中,根据公式(χMOD η)来增加所述时序延迟,其中χ表示所述设计的共享子集上的所述时序延迟,以及η表示合并到所述共享电路资源的用于共享的候选物的数量。
20.根据权利要求19所述的方法,该方法还包括将所述设计的共享子集中的时序元件识别为流水线时序元件和状态时序元件中的一种。
21.根据权利要求20所述的方法,该方法还包括将在所述设计的共享子集中被识别的每个状态时序元件η-折,其中η-折包括将每个状态时序元件变换成η个逻辑流水线时序元件。
22.根据权利要求21所述的方法,其中,所述η个逻辑流水线时序元件组成具有η阶的移位寄存器。
23.根据权利要求1所述的方法,其中,用于共享的候选物包括软件例程、数据流图的子集、控制流图的子集、功能模块、HDL代码块、循环结构体和子电路中的一个或多个。
24.根据权利要求1所述的方法,其中,待优化的所述集成电路以现场可编程逻辑阵列 (FPGA)或专用集成电路(ASIC)中的一个或多个形式得以实现。
25.根据权利要求24所述的方法,其中,以一个或多个规范级来描述所述电路,所述规范级包括高级描述、映射网表,RTL级、HDL级、原理图级、电路级、技术独立门级、技术依赖门布局级和平面布置图级。
26.根据权利要求21所述的方法,该方法还包括识别所述电路内的展开的循环结构,并将该展开的循环结构再卷起,包括如果一个或多个用于共享的候选物在展开的循环结构内,则通过使用合并变换来共享所述用于共享的候选物中的资源,从而生成卷回的循环结构,以及在输入和反馈环之间多路复用,所述输入被提供给所述展开的循环结构,所述反馈环来自所述设计的共享子集的输出,其中所述反馈环和所述多路复用电路的剩余输入一起被短路。
27.根据权利要求21所述的方法,该方法还包括影响所述用于共享的候选物的内置功能部件,以在每个所述用于共享的候选物的操作间执行时间多路复用,该内置功能部件包括解码器、多路复用器和总线。
28.根据权利要求27所述的方法,其中,如果所述用于共享的候选物包括现有存储器结构,则执行下列各项在用于共享的候选物内识别现有存储器结构,所述候选物至少包括一个未使用的地址端口 ;以及使用合并变换来生成共享存储器结构,该共享存储器结构由共享每个所述现有存储器结构中的资源而产生,所述合并变换包括将现有存储器结构合并到一组每个都共有的电路资源上,并在每个现有存储器结构的操作间进行时间多路复用。
29.根据权利要求28所述的方法,其中,通过影响新的存储器结构中的内置地址解码器来执行时间多路复用,其中所述共享存储器结构的至少一个未使用的地址端口被用作线程标识符,用以在共享所述共享存储器结构的电路资源的现有结构中进行多路复用。
30.根据权利要求29所述的方法,还包括优化所述集成电路中的现有存储器结构,包括识别作为用于共享资源的候选物的设计中的兼容和不兼容的存储器结构;重新平衡不兼容的存储器结构的1/0,以在作为用于共享的候选物的设计中构建额外的兼容的存储器结构,所述重新平衡包括增加至少一个额外的地址端口到不兼容的存储器结构,并将现有存储器结构的一组数据端口减半,从而产生重新平衡的兼容的存储器结构, 该重新平衡的兼容的存储器结构具有至少一个未使用地址端口和双倍的可寻址存储单元数量;以及使用合并变换来生成共享存储器结构,该共享存储器结构由所述兼容的存储器结构中的共享资源产生,所述合并变换包括将所述兼容的存储器结构合并到一组每个都共有的电路资源上,并在每个所述兼容的存储器结构的操作间进行时间多路复用。
31.根据权利要求30所述的方法,其中,通过影响所述共享存储器结构的内置地址解码器来执行时间多路复用,其中所述共享存储器结构的至少一个未使用的地址端口被用作线程标识符,以在共享资源的所述兼容的存储器结构中进行多路复用。
32.根据权利要求27所述的方法,其中,如果所述用于共享的候选物是耦接到双向I/O总线的I/O客户端,则该双向I/O总线执行所述多路复用。
33.根据权利要求21所述的方法,该方法还包括评测从所述合并变换中获得的结果, 以确定是否在修改的电路描述的最终输出中包括每个候选物,其中,如果从资源共享中获得的结果改善了一组参数中的一个或多个,则每个所述用于共享的候选物被包含于所述修改的电路描述的最终输出中,所述参数包括实际资源利用、成本、大小、空间、性能度量、以及能量和功率消耗。
34.根据权利要求33所述的方法,该方法还包括通过执行下列各项中的一个或多个来验证修改的电路描述检查多个个案的结果,出于一种或多种目的在所述个案中使用所述修改的电路描述的每个资源,并将从检查中获得的结果与将同样数量的多个个案应用于初始电路设计上所获得的结果进行比较;以及将合并的电路展开,以确定所述设计的初始电路配置是否得到恢复。
35.根据权利要求1所述的方法,该方法还包括 将所述设计的一个或多个子集分解成更小的子集;以及使用合并变换在每个更小的子集中共享电路资源,所述合并变换包括将所述更小的子集合并到一组每个都共有的电路资源上,并在每个所述更小子集的操作间进行时间多路复用。
36.根据权利要求35所述的方法,该方法还包括 确定哪个更小的子集在更高时钟频率下可被操作;在更高时钟频率下,在由快速时钟周期所划定的交替的微周期内,执行更小子集的时间多路复用;确定哪个更小子集包括暂时不相交功能;以及使用初始电路的一个或多个系统时钟,来执行具有暂时不相交功能的更小子集的时间多路复用。
37.一种提供指令的计算机可读存储介质,当由计算机运行时所述指令执行用于优化集成电路的方法,该方法包括接收所述集成电路的设计的描述;识别两个或多个具有相似功能、但是具有一个或多个不同的输入/输出(I/O)信号的设计的子集,作为用于共享的候选物;以及使用合并变换产生所述设计的共享子集,该设计由在每个用于共享的候选物中共享电路资源所产生,该合并变换包括将用于共享的候选物合并到一组每个都共有的电路资源上,并在每个用于共享的候选物的操作间进行时间多路复用。
38.根据权利要求37所述的计算机可读存储介质,其中,用于共享的候选物包括下列中的一个或多个具有相同功能的候选物;具有相似功能的候选物;用于共享的连接的候选物的集合;用于共享的候选物的集合,这些候选物并非全部都连接;周围具有逻辑电路的用于共享的候选物;具有与用于共享的其他候选物的子集相似的功能的用于共享的候选物;以及可由特别设计的超级模块取代的用于共享的候选物。
39.根据权利要求37所述的计算机可读存储介质,所述方法还包括 确定哪个用于共享的候选物在更高的时钟频率下可被操作;以及在更高时钟频率下,在由快速时钟周期所划定的交替的微周期内,执行用于共享的候选物的时间多路复用。
40.根据权利要求39所述的计算机可读存储介质,所述方法还包括;确定哪个用于共享的候选物包括暂时不相交功能;以及通过使用时钟,执行具有暂时不相交功能的用于共享的候选物的时间多路复用,所述时钟源自初始电路的一个或多个系统时钟。
41.根据权利要求40所述的计算机可读存储介质,其中所述快速时钟比所述一个或多个系统时钟的速度最多快至η倍,其中η等于合并到所述共享电路资源的用于共享的候选物的数量。
42.根据权利要求41所述的计算机可读存储介质,其中在每个用于共享的候选物的操作间进行时间多路复用还包括生成多路复用电路,用以对对应于每个用于共享的候选物的输入进行时间多路复用。
43.根据权利要求42所述的计算机可读存储介质,其中生成所述多路复用电路包括将之前提供给每个用于共享的候选物的输入重新连接到多路复用器的输入;以及将多路复用器的输出连接到所述设计的共享子集输入上。
44.根据权利要求43所述的计算机可读存储介质,其中在每个用于共享的候选物的操作间进行时间多路复用还包括生成多路分解电路,用于对接收来自所述设计的共享子集的输出进行时间多路分解。
45.根据权利要求44所述的计算机可读存储介质,其中,生成所述多路分解电路包括将所述设计的共享子集的输出连接到所述多路分解电路的输入上,用以接收来自所述设计的共享子集的经时间多路复用的输出;以及将之前从每个所述用于共享的候选物所提供的输出重新连接到所述多路分解电路的输出上。
46.根据权利要求45所述的计算机可读存储介质,所述方法还包括分配线程到每个所述用于共享的候选物上;以及基于所分配的线程,通过所述设计的共享子集来调整经时间多路复用的信号。
47.根据权利要求46所述的计算机可读存储介质,其中,所述多路分解电路以多路分解器的形式实现,以将来自所述设计的共享子集的经时间多路复用的输出分布到一组接收逻辑电路上,其中该多路分解器包括用于基于所分配的线程而在接收逻辑电路中进行选择的选择输入。
48.根据权利要求47所述的计算机可读存储介质,其中,使用选择电路来实现将线程分配到每个所述用于共享的候选物上和基于所分配的线程并通过所述设计的共享子集来调整经时间多路复用的信号,用以通过触发耦接到所述多路复用电路的选择输入的选择线来在线程间进行切换,并触发耦接到所述多路分解电路的选择输入的选择线
49.根据权利要求48所述的计算机可读存储介质,所述方法还包括增加零个或多个周期的时序延迟到所述选择线上,以用于占据所述设计的共享子集上的时序延迟,所述选择线耦接到所述多路分解电路的输入。
50.根据权利要求49所述的计算机可读存储介质,所述方法还包括将所述设计的共享子集中的时序元件识别为流水线时序元件和状态时序元件中的一种。
51.根据权利要求50所述的计算机可读存储介质,所述方法还包括将在所述设计的共享子集中被识别的每个状态时序元件η-折,其中η-折包括将每个状态时序元件变换成 η个逻辑流水线时序元件。
52.根据权利要求51所述的计算机可读存储介质,所述方法还包括识别电路内的展开的循环结构,并将该展开的循环结构再卷起,包括如果一个或多个用于共享的候选物在展开的循环结构内,则通过使用合并变化来共享所述用于共享的候选物中的资源、从而生成卷回的循环结构,以及在输入和反馈环之间多路复用,所述输入被提供给所述展开的循环结构,所述反馈环从所述设计的共享子集的输出端进行,其中所述反馈环和所述多路复用电路的剩余输入一起被短路。
53.根据权利要求51所述的计算机可读存储介质,所述方法还包括影响用于共享的候选物的内置功能部件,以在每个所述用于共享的候选物的操作间执行时间多路复用,该内置功能部件包括解码器、多路复用器和总线。
54.根据权利要求53所述的计算机可读存储介质,其中,如果所述用于共享的候选物包括现有存储器结构,则执行下列各项在用于共享的候选物内识别现有存储器结构,所述候选物至少包括一个未使用的地址端口 ;以及使用合并变换来生成共享存储器结构,该共享存储器结构由每所述现有存储器结构中共享资源而产生,所述合并变换包括将现有存储器结构合并到一组每个都共有的电路资源上,并在每个现有存储器结构的操作间进行时间多路复用。
55.根据权利要求53所述的计算机可读存储介质,所述方法还包括优化所述集成电路中的现有存储器结构,包括识别作为用于共享资源的候选物的设计中的兼容和不兼容的存储器结构;重新平衡不兼容存储器结构的1/0,以在作为用于共享的候选物的设计中构建额外的兼容的存储器结构,所述重新平衡包括增加至少一个额外的地址端口到不兼容的存储器结构,并将现有存储器结构的一组数据端口减半,从而产生重新平衡的兼容的存储器结构,该重新平衡的兼容的存储器结构具有至少一个未使用地址端口和双倍的可寻址存储单元数量;以及使用合并变换来生成共享存储器结构,该共享存储器结构由在所述兼容的存储器结构中共享资源而产生,所述合并变换包括将所述兼容的存储器结构合并到一组每个都共有的电路资源上,并在每个所述兼容的存储器结构的操作间进行时间多路复用。
56.根据权利要求51所述的计算机可读存储介质,评测从所述合并变换中获得的结果,以确定是否在所述修改的电路描述的最终输出中包括每个候选物。
57.根据权利要求56所述的计算机可读存储介质,所述方法还包括通过执行下列各项中的一个或多个来验证所述修改的电路描述检查多个个案的结果,出于一种或多种目的在所述个案中使用所述修改的电路描述的每个资源,并将从检查中获得的结果与将同样数量的多个个案应用于初始电路设计上获得的结果进行比较;以及将合并的电路展开,以确定所述设计的初始电路配置是否得到恢复。
58.根据权利要求57所述的计算机可读存储介质,所述方法还包括 将所述设计的一个或多个子集分解成更小的子集;以及使用合并变换而在每个更小的子集间共享电路资源,所述合并变换包括将所述更小的子集合并到一组每个都共有的电路资源上,并在每个所述更小子集的操作间进行时间多路复用。
59.根据权利要求58所述的计算机可读存储介质,还包括 确定哪个更小的子集在更高时钟频率下可被操作;在更高时钟频率下,在由快速时钟周期所划定的交替微的周期内,执行更小子集的时间多路复用;确定哪个更小子集中包括暂时不相交功能;以及使用初始电路的一个或多个系统时钟,来执行具有暂时不相交功能的更小子集的时间多路复用。
全文摘要
一种用于优化集成电路的方法和装置,通过识别电路中具有相似功能的能够共享电路资源的功能模块,以及产生电路的修改的描述来优化集成电路,在该电路中将相似功能模块被合并到共有电路资源上并使用初始系统时钟或快速时钟来时间复用该相似功能模块。
文档编号G06F7/57GK102369508SQ200980143247
公开日2012年3月7日 申请日期2009年7月24日 优先权日2008年9月4日
发明者I·L·马尔科夫, K·S·麦克埃尔文 申请人:新思公司

最新回复(0)