论文部分内容阅读
动态电路的概念自20世纪80年代被提出来,因其具备晶体管数目少、扇入电容小、跳变速度快、流水开销小等优点,而被广泛应用于各种高性能处理器中。自动化所正在承担研发的高性能代数处理器对性能、面积、功耗等指标都具有极高的要求,动态电路因其卓越性能而被纳入设计当中,故迫切需要建立一套动态电路设计流程。然而,基于动态电路的设计存在较多的难题,市场上的商用工具均不支持动态电路的设计,而且目前并没有形成一种业界所通用和开放的方法与流程。如现有的业界产商并未提供可进行设计的动态逻辑单元库,且主流EDA工具不支持动态电路的建库,这使得动态电路建库工作成为电路设计的一大挑战。此外,多米诺逻辑电路要求单边性(即不存在反向逻辑),导致电路的自动化综合变得很困难,亦无商用EDA工具支持。针对以上问题,本文主要研究在动态电路设计中所涉及的三方面内容,分别为动态单元的建库、电路自动化综合以及电路的单边化(unate transform)。 (1)针对目前业界并不提供可进行设计的动态逻辑单元库,以及商用EDA工具不支持动态电路单元的刻画与建库的情况,本文提出了一种动态单元的建库方法,包括制定刻画的具体参数,如时序、延时、功耗等动态参数,以及对这些参数刻画的方法,包括使用PassFail/Bisection方法提取时序信息、电荷累积方法提取电容信息以及电流积分方法提取功耗信息等。并自动生成刻画仿真激励,利用仿真工具Hspice对动态电路单元进行参数提取。最终实现了对动态单元的参数自动化刻画以及建库工作。相比NanoTime工具,本方法的刻画结果具有更健全的参数信息与更高的数据精度,且能够更好地支持大逻辑单元的刻画,并成功应用在XXX处理器设计实践中。 (2)针动态电路单元存在综合工具难以辨识的时钟端,以及逻辑参数库中仅存在具有单边性质的逻辑单元,而未能被EDA工具综合的问题,本文提出了一种通过对动态单元建立相应的伪静态库,而实现利用现有EDA工具对动态电路自动综合的方法。本文采取了对原有动态单元库去时钟化以及逻辑扩充的方式,建立一套能够被综合工具识别与逻辑映射的伪静态逻辑库,使得动态电路能够被自动综合。该方法已经成功实验,并具备较好的稳定性。相比于传统设计动态电路的人工定制综合方法,本方法具有更优越的综合效率,时间耗费获得两个数量级的减少。 (3)针对动态电路不具备反向逻辑,逻辑跳变仅能单向跳变的问题,本文提出一种基于bubble pushing方法实现电路单边化的层级推进算法。首先,将电路中的单元进行逻辑表达式提取,并使用多叉树结构对提取的表达式进行表示与变换。然后,在此基础上将电路映射为一个基于多叉树元胞的逻辑网络。最后,再利用层级推进算法,依次对逻辑网络自后级向前级推进,以实现对电路的反向逻辑向前推进效果。本方法获得比较好的推进效果并大大提高时间效率,实验表明,相比传统方法,时间节省在10%以上。 总的来说,本文从对动态电路设计实现出发,深入研究了其设计流程中的若干关键性问题,并获得了一定的成效,为动态电路设计实现方面的发展做出了积极的研究与实践探讨。