逻辑电路最佳化方法及其装置和逻辑电路合成装置的制作方法

文档序号:6381700阅读:151来源:国知局
专利名称:逻辑电路最佳化方法及其装置和逻辑电路合成装置的制作方法
技术领域
本发明涉及用于生成提供给进行半导体集成电路的逻辑验证的逻辑仿真装置的电路信息的逻辑电路最佳化方法及其相关技术。
背景技术
由于近年来的LSI(Large scale integrated circuit)的大规模化,通过软件仿真进行逻辑电路的验证正在变得不可能。
因而,通过硬件再现电路动作(仿真)的逻辑仿真装置正在实用化。
逻辑仿真装置大致分为两种类型。一种是,搭载多个处理器以强大的计算能力进行仿真的处理器型逻辑仿真装置。
另一种是FPGA型逻辑仿真装置,它搭载多个可由用户自由改变电路动作的FPGA(Field Programmable Gate Array)那样的可编程器件(可变逻辑元件),仿真逻辑动作。
作为现有FPGA型仿真装置的一例,有特开2000-36737号公报(专利文献1)所公开的内容。
如图19所示,这种现有的逻辑仿真装置100,由逻辑芯片101~103,存储器模块104,用户指定芯片105以及相互连接芯片106组成。
逻辑芯片101~103的每一个都是FPGA。存储器模块104仿真存储器器件。用户指定芯片105是用户任意使用的LSI等的硬件IP(Intellectualproperty)。
相互连接芯片106将逻辑芯片101~103,存储器模块104以及用户指定芯片105相互连接。该相互连接芯片106通过交叉开关(crossbar switch)结构连接各芯片。
这里,对专利文献1公开的在FPGA中进行分配电路时的基本方法进行说明。
逻辑电路基本上是由触发器以及连接这些触发器的组合电路构成。
因此,对于FPGA的逻辑电路的分配,以簇(Cluster)单位进行。这里,簇是从触发器的输入端子到前段的触发器(可以是一个,也可以是多个)的输出端子所存在的组合电路与该触发器所构成的电路群。而提取簇的行为称为群聚(Clustering)。
对群聚用



图20是群聚的说明图。图20(a)是群聚前的逻辑电路的概念图,图20(b)是群聚后的逻辑电路的概念图。
图20(a)示出从触发器FF0到触发器FF1、FF2的连接电路的结构例。触发器FF0与触发器FF1、FF2通过组合电路连接。
在图20(a)的电路结构例中,如果进行群聚,则如图20(b)所示生成簇107和簇108。
簇107由组合电路109及触发器FF1构成。簇108由组合电路110及触发器FF2构成。
对于电路中存在的全部触发器实施这样的群聚。将这样生成的簇分配给FPGA。
图21是分配给FPGA的簇的示例图。如图21所示,群聚后,簇111被分配给FPGA112。
以簇单位在FPGA中分配逻辑电路的方法,如Rents法则所示,目的是回避FPGA的I/O(input/output)数不足的问题。
Rents法则是在1960年由IBM的E.F.Rent提出,在逻辑设计中表示I/O管脚(包括块的管脚)与电路规模的关系的法则(http//www.cedcc.psu.edu/ee497i/rents_rule.PDF)。
下式是Rents法则的关系式[公式1]Np=Kp·NgX公式1中,‘Np’表示I/O管脚数,‘Ng’表示电路规模(电路(门)数),‘X’是Rent常数,‘Kp’是比例常数。
即,根据Rents法则,I/O管脚数以电路规模的指数倍的关系增加。
随着当今半导体工艺的微细化,LSI越来越大规模化,对FPGA的逻辑电路的分配变的越来越难。
另一方面,趋势是要求LSI的高速动作,而触发器间的电路级数维持现状或者进行削减,组合电路的并列度在扩大。
因此,即使进行群聚,也会发生不能将逻辑电路适当分配给FPGA的情况。
例如,要配置给FPGA的簇比该FPGA剩余的可以配置的电路规模大的情况下,该簇不能配置给该FPGA,而配置给其他的FPGA。
此时,FPGA的使用效率降低,产生逻辑仿真装置中可处理的电路规模变小的问题。
另外,由于FPGA的使用效率降低,被分配电路密度变小,所以各电路间的信号延迟变大。
因此,附加了信号延迟,产生动作速度即仿真速度降低的问题。

发明内容
本发明的目的在于提供一种逻辑电路最佳化方法及其相关技术,能够提高逻辑仿真装置的可变逻辑元件的使用效率。
为了实现上述目的,本发明的第1逻辑电路最佳化方法包括对输入的逻辑电路信息进行群聚的群聚步骤;在由所述群聚获得的簇当中,在簇长超过预定簇长的簇中插入触发器的插入步骤;对插入了所述触发器的所述簇,进行再群聚的再群聚步骤。
根据该结构,由于在簇长较长的簇中插入触发器,因此簇长较长的簇被分割为簇长较短的多个簇。
因此,在逻辑仿真装置的可变逻辑元件(例如FPGA)中分配簇时的自由度变高。
另外,由于不发生象Rents法则所示的可变逻辑元件的I/O管脚数的门搭载的非效率化,可提高可变逻辑元件的使用效率。
由上,可实现在逻辑仿真装置中分配逻辑电路的最佳化。
本发明的第2逻辑电路最佳化方法,其中所述插入步骤包括测定由群聚获得的簇的簇长的簇长测定步骤;在由群聚获得的簇中,选择簇长超过预定簇长的簇的簇选择步骤;在簇长超过预定簇长的簇中插入触发器的触发器插入步骤。在由再群聚获得的簇中存在簇长超过预定簇长的情况下,按照触发器插入步骤以及再群聚步骤进行处理。
根据该结构,由于对超过预定簇长的簇无遗漏地插入触发器,可以进一步实现最佳化。
本发明的第3逻辑电路最佳化方法,还包括将包含于进行群聚以及再群聚后的逻辑电路信息中的簇分配给逻辑仿真装置的可变逻辑元件时,在未装入可变逻辑元件的簇中插入触发器的步骤;对插入触发器的簇进行再群聚的步骤。
根据该结构,可以进一步实现在逻辑仿真装置中分配逻辑电路的最佳化。
本发明的第4逻辑电路最佳化方法,还包括通过以电路长表示实现逻辑仿真对象的存储器器件的存储器器件,在逻辑电路中置换逻辑仿真对象的存储器器件的步骤。
根据该结构,对于逻辑仿真对象的存储器器件,也与通常的电路同样,可进行最佳化处理。
本发明的第5逻辑电路最佳化方法,电路长以电路级数表示。
根据该结构,通过以电路级数表示实现逻辑仿真对象的存储器器件的存储器器件,对于逻辑仿真对象的存储器器件,也与通常的电路同样,可进行最佳化处理。
本发明的第6逻辑电路最佳化方法,电路长以信号的传送时间表示。
根据该结构,通过以信号的传送时间表示实现逻辑仿真对象的存储器器件的存储器器件,对于逻辑仿真对象的存储器器件,也与通常的电路同样,可进行最佳化处理。
本发明的第7逻辑电路最佳化方法,簇长以电路级数表示。
根据该结构,由于在电路级数较多的簇中插入触发器,因此电路级数较多的簇被分割为电路级数较少的多个簇。
因此,在可变逻辑元件中分配簇时的自由度变高,可以提高可变逻辑元件的使用效率。
本发明的第8逻辑电路最佳化方法,簇长以信号的传送时间表示。
根据该结构,由于在信号传送时间较长的簇中插入触发器,因此信号传送时间较长的簇被分割为信号传送时间较短的多个簇。
因此,在可变逻辑元件中分配簇时的自由度变高,可以提高可变逻辑元件的使用效率。
本发明的第9逻辑电路最佳化方法,包括将包含于进行群聚后的逻辑电路信息中的簇分配给逻辑仿真装置的可变逻辑元件时,在未装入可变逻辑元件的簇中插入触发器的步骤;对插入触发器的簇进行再群聚的步骤。
根据该结构,由于在未装入可变逻辑元件(例如FPGA)的簇中插入触发器,因此未装入可变逻辑元件的簇被分割为簇长较短的多个簇。
因此,可将簇长较短的簇分配给可变逻辑元件,提高可变逻辑元件的使用效率。
由上,可实现在逻辑仿真装置中分配逻辑电路的最佳化。
本发明的第10逻辑电路最佳化方法,其中,要插入的触发器的动作时钟的频率比包含在作为触发器的插入对象的簇的触发器的动作时钟的频率高。
根据该结构,插入触发器之后,也可维持与插入前同样的动作速度。
本发明的第11逻辑电路最佳化方法,包括计算包含在以硬件记述语言记述的模块中的运算元件的数量的步骤;在运算元件的数量比预定值多的模块中插入以硬件记述语言记述的触发器的步骤。
根据该结构,由于逻辑合成后的簇的簇长变短,因此,在逻辑仿真装置的可变逻辑元件(例如FPGA)中分配簇时的自由度变高。
另外,由于不发生象Rents法则所示的可变逻辑元件的I/O管脚数的门搭载的非效率化,可提高可变逻辑元件的使用效率。
由上,可实现在逻辑仿真装置中分配逻辑电路的最佳化。
而且,由于在硬件记述语言阶段插入触发器,与逻辑合成后插入触发器的情况相比,可以更高速地处理。

图1是本发明实施方式1的逻辑仿真系统的方框图。
图2是本发明实施方式1的电路分配装置的方框图。
图3是本发明实施方式1的逻辑电路最佳化装置的方框图。
图4(a)是本发明实施方式1的电路分割前的簇的示例图。
图4(b)是本发明实施方式1的电路分割后的簇的示例图。
图5是说明本发明实施方式1的分割触发器的插入方法的簇的示例图。
图6是说明本发明实施方式1的分割触发器的插入方法的簇的时序图。
图7是本发明实施方式1的逻辑电路最佳化装置的流程图。
图8(a)是本发明实施方式2的逻辑电路最佳化装置的说明图。
图8(b)是本发明实施方式2的逻辑电路最佳化装置的说明图。
图9是通过本发明实施方式2的逻辑电路最佳化装置进行最佳化逻辑电路信息生成处理的流程图。
图10是本发明实施方式3的逻辑电路合成装置的方框图。
图11是本发明实施方式3的功能分割触发器插入前HDL中的模块的示例图。
图12是本发明实施方式3的功能分割触发器插入前的模块的树图。
图13是本发明实施方式3的功能分割触发器插入后HDL中的模块的示例图。
图14是本发明实施方式3的逻辑电路合成装置的流程图。
图15是本发明实施方式4的逻辑电路最佳化装置的方框图。
图16是本发明实施方式4的逻辑电路最佳化装置的动作说明图。
图17是本发明实施方式4的存储器置换表信息的示例图。
图18是本发明实施方式4的逻辑电路最佳化装置的流程图。
图19是现有的逻辑仿真装置的方框图。
图20(a)是现有的群聚前的逻辑电路的概念图。
图20(b)是现有的群聚后的逻辑电路的概念图。
图21是现有的逻辑仿真装置的分配给FPGA的簇的示例图。
具体实施例方式
以下,参照附图来说明本发明的实施方式。
(实施方式1)图1是本发明实施方式1的逻辑仿真系统的方框图。
如图1所示,该逻辑仿真系统具备电路分配装置1以及逻辑仿真装置2。
逻辑仿真装置2中,虽然未图示,搭载有FPGA以及存储器器件等。另外,FPGA中,虽然未图示,搭载有存储器器件。
这里,FPGA是用户可以自由改变电路动作的可变逻辑元件(Programmable Device)的一个例子。
逻辑仿真装置2,例如可使用图19的逻辑仿真装置。
图2是图1的电路分配装置1的方框图。对图2中与图1相同的部分赋予同一符号。
如图2所示,图1的电路分配装置1包括逻辑电路合成装置9、逻辑电路最佳化装置8以及FPGA分配装置10。
逻辑电路合成装置9进行逻辑合成,由硬件记述语言(HDLhardwaredescription language)3生成逻辑电路信息4。
硬件记述语言3是以功能电平记述逻辑电路的语言,例如Verilog-HDL或VHDL等。
逻辑电路信息4是以门和电平记述逻辑电路的信息,例如网络表(netlist)。
图3是图2的逻辑电路最佳化装置8的方框图。如图3所示,逻辑电路最佳化装置8包括群聚部件80、群聚逻辑电路信息存储部件81、簇长测定部件82、簇长存储部件83、簇选择部件84、电路分割部件85、电路分割逻辑电路信息存储部件86、簇长判定部件87、最佳化逻辑电路信息生成部件88以及最佳化逻辑电路信息存储部件89。
群聚部件80从逻辑电路合成装置9生成的逻辑电路信息4中检索触发器,对于全部的触发器进行群聚处理。
更具体地说,群聚部件80从现在选择的触发器的输入端子向着前级的触发器(既有单个的情况,也有多个的情况)的输出端子检索组合的电路,提取由现在选择的触发器以及检索到的组合电路构成的簇。
而群聚逻辑电路信息存储部件81,存储群聚后的逻辑电路信息4(以下称为‘群聚逻辑电路信息’)。
簇长测定部件82测定存储在群聚逻辑电路信息存储部件81中的全部簇的簇长。
这里,簇长例如可用电路级数表示。
另外,簇长例如可用簇传送信号时的传送时间表示。
簇长存储部件83将簇长测定部件82测定的簇长与各簇相关连存储。
簇选择部件84参照簇长存储部件83,选择簇长超过规定值的簇。
这里,上述规定值可以取全部簇长的平均值,或者取对逻辑仿真装置2最佳的值等,可由用户任意指定。
电路分割部件85插入对簇长超过规定值的簇的组合电路进行分割的触发器(以下称为‘分割触发器’)。
也有簇长超过规定值的簇存在多个的情况,此时,对簇长超过规定值的全部簇都插入分割触发器。
举具体例说明电路分割部件85的处理。
图4是根据电路分割部件85的处理的示例图。图4(a)表示电路分割前的簇,图4(b)表示电路分割后的簇。
如图4(a)所示,假设由组合电路CC以及触发器FF1组成的簇C的簇长超过了规定值。
电路分割部件85在簇C中插入分割触发器FF2,群聚部件80对于插入了分割触发器FF2的簇C进行再群聚。
其结果,如图4(b)所示,簇C被分割为由组合电路CC1以及触发器FF2组成的簇C1和由组合电路CC2以及触发器FF1组成的簇C2。
这里,分割触发器FF2以与其他触发器FF0、FF1的动作时钟CLK不同的动作时钟FCLK进行动作。详细说明此点。
如图4(a)所示,触发器FF0-FF1间的组合电路CC以动作时钟CLK的一个时钟进行动作。
因此,如图4(b)所示,插入分割触发器FF2之后,触发器FF0-FF1之间也必须以动作时钟CLK的一个时钟进行动作。
这里,假设分割触发器FF2的动作时钟FCLK是与动作时钟CLK的下降沿同步的时钟。而假设触发器FF0、FF1以及分割触发器FF2进行上升沿动作。
例如,可假设动作时钟FCLK为动作时钟CLK的反转时钟。
另外,例如可假设动作时钟FCLK为与动作时钟CLK的下降沿同步的脉冲波形的时钟。
这样,假设动作时钟FCLK为与动作时钟CLK的下降沿同步的时钟,则需要触发器FF0与分割触发器FF2之间的组合电路CC1以及分割触发器FF2与触发器FF1之间的组合电路CC2的每一个都在动作时钟CLK的半个周期以内动作。
因此,在组合电路CC1以及组合电路CC2在动作时钟CLK的半周期以内动作的电路级数的点,有必要插入分割触发器FF2。
而对于分割触发器FF2可进行触发器功能的许可(enable)控制。
即,通过触发器功能的许可信号ENB,分割触发器FF2可切换锁存(latch)动作或通过(through)动作。因此,不许可(disenable)时,可返回与分割触发器FF2插入前的电路(图4(a))同样的电路结构进行动作。
由此,可确认插入分割触发器FF2时和不插入时的逻辑等价性。
如上所述,对于插入分割触发器FF2的簇C,群聚部件80进行再群聚,形成簇C1、C2。
此时,群聚部件80,在群聚逻辑电路信息存储部件81中存储的群聚逻辑电路信息中,将簇C的信息置换为簇C1、C2的信息,更新群聚逻辑电路信息。
图3的簇长判定部件87,将触发器FF0与分割触发器FF2之间以及分割触发器FF2与触发器FF1之间的各个簇长与规定值进行比较。
而簇长判定部件87,在触发器FF0与分割触发器FF2之间或分割触发器FF2与触发器FF1之间的任一簇长超过规定值的情况下,对电路分割部件85以及群聚部件80,分别执行电路分割处理以及再群聚处理。
电路分割处理以及再群聚处理,在触发器FF0与分割触发器FF2之间以及分割触发器FF2与触发器FF1之间的各个簇长达到规定值以下之前反复进行。通过这样,使所有的簇的簇长达到规定值以下。
这里,设簇长判定部件87中的规定值与簇选择部件84中的规定值是同一值。
另一方面,在触发器FF0与分割触发器FF2之间以及分割触发器FF2与触发器FF1之间的各个簇长达到规定值以下时,簇长判定部件87在图3的最佳化逻辑电路信息生成部件88中执行处理。
再回到图3进行说明。
电路分割逻辑电路信息存储部件86,存储最新更新的群聚电路信息(以下称为‘电路分割逻辑电路信息’)。
最佳化逻辑电路信息生成部件88,基于电路分割逻辑电路信息以及逻辑仿真装置结构信息6,在逻辑仿真装置2搭载的各FPGA中分配包含于电路分割逻辑电路信息中的簇。
接着,最佳化逻辑电路信息生成部件88生成由簇的分配信息与电路分割逻辑电路信息构成的最佳化逻辑电路信息11。
这里,逻辑仿真装置结构信息6是有关逻辑仿真装置2搭载的元件的信息。
例如,逻辑仿真装置结构信息6是表示逻辑仿真装置2搭载的FPGA的个数、种类(例如,可搭载电路(门)数(可搭载的电路规模)等)以及连接关系的信息。
最佳化逻辑电路信息存储部件89存储最佳化逻辑电路信息11。
再返回图2进行说明。
FPGA分配装置10,依据最佳化逻辑电路信息11,生成逻辑仿真装置用电路信息5。
逻辑仿真装置用电路信息5是最佳化逻辑电路信息11的最终的电路分配状态的电路信息。
图1的逻辑仿真装置2,基于该逻辑仿真装置用电路信息5,在各FPGA中配置簇,执行仿真。
接下来,举具体例详细说明分割触发器的插入方法。此例中,以电路级数表示簇长。
图5是说明分割触发器的插入方法的簇的示例图。假设图5的触发器FF0-FF4进行上升沿动作。
图5示出触发器FF4与触发器FF4-FF0、FF1、FF2、FF3之间组合电路组成的一个簇。
这样,对于作为基点的触发器FF4,其前级的触发器FF0-FF3有多个存在的情况。
而在图4中,对于作为基点的触发器FF1,例举其前级的触发器FF0存在一个。
图6是图5的簇的时序图。图6示出触发器FF0-FF4的动作时钟CLK、分割触发器的动作时钟FCLK、触发器FF0-FF3的输入信号IN0-IN3、图5的簇的各节点N2、N4、N6、N6#、N7中的信号波形以及触发器FF4的输出信号OUT。
图6例举插入图5的簇的分割触发器的动作时钟FCLK是与触发器FF0-FF4的动作时钟CLK的下降沿同步的脉冲波形的时钟。
因此,在已插入分割触发器时,其前后的各个组合电路需要在以动作时钟CLK的半周期进行动作的位置插入分割触发器。
这里,由于图5的簇的最大电路级数是4级,因此在其中间位置的第2级的位置插入触发器。
这里,从触发器FF0-FF3到触发器FF4,元件每超过一个,电路级数提高1级。
虽然已在第2级的位置插入了分割触发器,如果在第3级的位置插入分割触发器没有动作速度上的问题,则在第3级的位置插入触发器。
关注从图5的输入信号IN2到输出信号OUT的信号迁移,研究动作速度。
如图6所示,假设输入信号IN0、IN1、IN2、IN3分别为高(high)固定、低(low)固定、从低到高的迁移、低固定。
节点N2是触发器FF2的输出,在动作时钟CLK的上升沿锁存输入信号IN2。
接着,经由逆变器元件INV1、NAND(与非)元件NAND0以及AND(与)元件AND1,传送信号。
由于在节点N6的信号迁移在动作时钟CLK的半周期内就结束,因此即使在动作时钟FCLK的上升沿动作的第3级的位置插入的分割触发器中锁存节点N6的信号也不会产生信号延迟的问题。
因此,在节点N6#、N7中可获得图6那样的波形,可在动作时钟CLK的1周期确保电路动作的透过性的情况下分割簇。
总结以上情况。节点N2、N4、N6在时刻t1的动作时钟CLK的上升沿进行响应,在时刻t2之前迁移信号波形。
即,分割触发器的前级的组合电路在动作时钟CLK的半周期以内进行动作。
另一方面,节点N6#、N7在时刻t2的动作时钟FCLK的上升沿进行响应,在时刻t3之前迁移信号波形。
即,分割触发器的后级的组合电路在动作时钟CLK的半周期以内进行动作。
因此可明白,即使在第3级的位置插入触发器,也没有动作速度上的问题。
响应时刻t3的动作时钟CLK的上升沿,输出信号OUT被输出。
这里,选择器MUX0的输出选择信号被直接传给前级的触发器FF3,中途不存在元件。
因此,选择器MUX0与触发器FF3之间没有必要插入分割触发器。
因此最终是在选择器MUX0与EXOR元件XOR0之间以及选择器MUX0与AND元件AND1之间插入分割触发器。
在簇的第2级插入分割触发器的情况下,共计需要3个分割触发器,而在簇的第3级插入分割触发器时,则只需要插入2个分割触发器。
下面,用图3及流程图,说明逻辑电路最佳化装置8的处理的流程。
图7是图3的逻辑电路最佳化装置8的流程图。
如图7所示,在步骤S1,群聚部件80对仿真对象的逻辑电路信息4进行群聚。
在步骤S2,簇长测定部件82测定由群聚获得的全部簇的簇长。
在步骤S3,簇选择部件84选择簇长超过规定值的簇。
在步骤S4,电路分割部件85在簇长超过规定值的簇中插入分割触发器,进行电路分割。
在步骤S5,群聚部件80对插入分割触发器的簇进行再群聚。
在步骤S6,群聚部件80基于再群聚的结果,更新群聚逻辑电路信息。
在步骤S7,簇长判定部件87对由再群聚获得的簇的簇长是否在规定值以下进行判定。
然后,当由再群聚获得的簇的簇长是在规定值以下时,前进到步骤S8(步骤S7)。
在步骤S8,最佳化逻辑电路信息生成部件88基于电路分割逻辑电路信息以及逻辑仿真装置结构信息6,生成最佳化逻辑电路信息11。
另一方面,由再群聚获得的簇的簇长超过规定值时,前进到步骤S4(步骤S7),再次进行步骤S4到步骤S7的处理,更新群聚逻辑电路信息。因而,最新更新的群聚逻辑电路信息是电路分割逻辑电路信息。
如上所述,本实施方式中,由于在簇长较长的簇中插入分割触发器,因此簇长较长的簇分割为簇长较短的多个簇。
因此,在逻辑仿真装置的FPGA中分配簇时的自由度变高,可提高FPGA的使用效率。
由此,可实现在逻辑仿真装置中分配逻辑电路的最佳化。
另外,由于FPGA的使用效率的提高,电路密集度变高,各电路元件的信号延迟变小。其结果是,仿真速度提高。
而且,图1的电路分配装置1可由计算机中运行的程序实现。但并不限定以程序实现的情况。
另外,FPGA分配装置10可由被称为FPGA编辑器(compiler)的程序实现。但并不限定以程序实现的情况。
(实施方式2)本发明实施方式2的逻辑仿真系统的整体结构与图1是同样的。因此,以图1的逻辑仿真系统作为实施方式2的逻辑仿真系统进行说明。
另外,实施方式2的电路分配装置1的结构与图2是同样的。因此,以图2的电路分配装置1作为实施方式2的电路分配装置1进行说明。
另外,实施方式2的逻辑电路最佳化装置8与图3是同样的。因此,以图3的逻辑电路最佳化装置8作为实施方式2的逻辑电路最佳化装置8进行说明。
图8是实施方式2的逻辑电路最佳化装置8的说明图。图8(a)示出簇22未装入FPGA20的状态,图8(b)示出簇群23装入FPGA20的状态。
图3的最佳化逻辑电路信息生成部件88基于逻辑仿真装置结构信息6,决定将包含于电路分割逻辑电路信息中的各簇最终分配给哪个FPGA,生成最佳化逻辑电路信息11。
但是,如图8(a)所示,要分配给FPGA20的簇22被分配给FPGA20的边界部分等,则有簇22比FPGA20可能配置的剩余电路规模大的情况。
此时,实施方式2在图8(a)的簇22插入分割触发器,生成将簇22细分的多个簇,如图8(b)所示,将FPGA20可以配置的数量的簇组成的簇群23分配给FPGA20。
具体地说,在要分配给FPGA20的簇22比FPGA20可以配置的剩余电路规模大的情况下,电路分割部件85在簇22插入分割触发器。
接着,群聚部件80对插入分割触发器的簇22进行再群聚,更新电路分割逻辑电路信息。
接着,最佳化逻辑电路信息生成部件88以FPGA20的空置区域可以配置的电路规模(电路(门)数)以及FPGA20的I/O数为决定条件,对分割簇22获得的多个簇再次进行分配处理,更新最佳化逻辑电路信息11。
其结果是,获得装入FPGA20可以配置的剩余电路规模的簇群23,并配置给FPGA20。
关于实施方式2以上的点以外的情况,与实施方式1是同样的,省略说明。
现有技术中,在要配置给FPGA的簇比该FPGA可以配置的剩余电路规模大时,将其配置给其他FPGA,而本实施方式,在簇未装入FPGA的空置区域时,如上所述,通过将该簇细分化,可提高FPGA的使用效率。
下面,用流程图说明本实施方式的逻辑电路最佳化装置8的处理流程。
本实施方式的逻辑电路最佳化装置8的处理流程与图7示出的流程图是同样的。
但是,本实施方式与图7的流程图的步骤S8中的最佳化逻辑电路信息生成处理不同,以图9的流程图所示进行最佳化逻辑电路信息生成处理。
图9是通过本实施方式2的逻辑电路最佳化装置8进行最佳化逻辑电路信息生成处理的流程图。
作为前提,假设图7所示的步骤S1至步骤S7的处理已结束。
如图9所示,在步骤S81,最佳化逻辑电路信息生成部件88选择包含电路分割逻辑电路信息的一个簇。
在步骤S82,最佳化逻辑电路信息生成部件88将选择的簇分配给FPGA。
在步骤S83,最佳化逻辑电路信息生成部件88判定分配的簇是否装入FPGA。
分配的簇装入FPGA时(步骤S83),在步骤S84,最佳化逻辑电路信息生成部件88确定该簇的分配信息。
另一方面,分配的簇未装入FPGA时(步骤S83),前进到步骤S86。
在步骤S86,最佳化逻辑电路信息生成部件88判断未装入的簇中是否插入了分割触发器。
未装入的簇中插入分割触发器时(步骤S86),最佳化逻辑电路信息生成部件88前进到步骤S87。
在步骤S87,最佳化逻辑电路信息生成部件88将未装入的簇分配给别的FPGA,前进到步骤S84,确定该簇的分配信息。
另一方面,未装入的簇中未插入分割触发器时(步骤S86),最佳化逻辑电路信息生成部件88前进到步骤S88。
在步骤S88,最佳化逻辑电路信息生成部件88指示电路分割部件85在未装入的簇中插入分割触发器。
接受该指示,电路分割部件85在未装入的簇中插入分割触发器。
此时的分割触发器的插入方法与图7的步骤S4的电路分割处理是同样的,在没有动作速度上的问题的位置插入分割触发器,将簇细分化。细分化的数(分割数)可任意设定。
在步骤S89,群聚部件80对插入分割触发器的簇进行再群聚,更新电路分割逻辑电路信息。
在步骤90,最佳化逻辑电路信息生成部件88将细分化获得的簇分配给FPGA的空置区域,前进到步骤S84,确定细分化获得的簇的分配信息。
而在步骤S85,存在以下的簇时,前进到步骤S81,进行上述处理。
这样,一边按顺序更新簇,一边进行上述处理,确定全部的簇的分配信息,生成由最新的电路分割逻辑电路信息以及确定的分配信息构成的最佳化逻辑电路信息11。
图9例举分割触发器的动作时钟CLK为与通常的触发器的动作时钟CLK的下降沿同步的脉冲波形的时钟。
因此,在未装入FPGA的簇中插入分割触发器时(步骤S86),由于不能对该簇进一步插入分割触发器,因此进行步骤S87的处理。
如上所述,本实施方式由于具有与实施方式1同样的结构,因此与实施方式1同样,将簇长较长的簇分割为簇长较短的多个簇。
而且,本实施方式由于在未装入FPGA的簇中插入触发器,因此未装入FPGA的簇被分割为簇长较短的多个簇。
由此,FPGA的使用效率可进一步提高。
(实施方式3)实施方式1以及实施方式2按照逻辑电路合成装置9生成的逻辑电路信息4进行最佳化处理。
实施方式3在逻辑合成前,即,按照硬件记述语言,进行最佳化处理。
本发明实施方式3的逻辑仿真系统的整体结构与图1是同样的。因此,以图1的逻辑仿真系统作为实施方式3的逻辑仿真系统进行说明。
另外,实施方式3的电路分配装置1的结构与图2是同样的。因此,以图2的电路分配装置1作为实施方式3的电路分配装置1进行说明。
但是,实施方式3的逻辑电路合成装置9以及逻辑电路最佳化装置8的结构与实施方式1是不同的。其他的点与实施方式1是同样的。
图10是本发明实施方式3的逻辑电路合成装置9的方框图。
如图10所示,该逻辑电路合成装置9包括运算元件数计算部件93、模块分割部件90、HDL存储部件91以及合成部件92。
运算元件数计算部件93取出硬件记述语言,分析各模块的功能集合(运算元件块),计算每个模块的从输入端子到输出端子的运算元件的数量。
此时的输入端子、输出端子以及运算元件以硬件记述语言表示。
接着,模块分割部件90选择具有较长处理路径、即从输入端子到输出端子的运算元件的数量较多的路径的模块。
此时,从输入端子到输出端子的运算元件的数量是否较多,通过与规定值比较进行判断。规定值由用户任意设定。
接着,模块分割部件90在具有从输入端子到输出端子的运算元件数较多的路径的模块中,插入以硬件记述语言表示的分割触发器。
此时的分割触发器与实施方式1的分割触发器是同样的。
这样,以硬件记述语言表示的分割触发器称为‘功能分割触发器’。
如上那样,模块分割部件90按照最初输入的硬件记述语言,插入功能分割触发器,更新硬件记述语言。
HDL存储部件91存储更新后的硬件记述语言。
合成部件92进行逻辑合成,由更新后的硬件记述语言生成逻辑电路信息4。
实施方式3的逻辑电路最佳化装置8按照逻辑电路信息4,进行群聚,生成群聚逻辑电路信息。
接着,逻辑电路最佳化装置8参照逻辑仿真装置结构信息6,将包含群聚逻辑电路信息的各簇分配给FPGA。
这样,逻辑电路最佳化装置8由群聚逻辑电路信息以及簇的分配信息生成最佳化逻辑电路信息11。此后的处理与实施方式1是同样的。
举具体例说明图10的逻辑电路合成装置9的动作。
图11是功能分割触发器插入前硬件记述语言中的模块的示例图。
图12是图11的模块的树图。
图13是功能分割触发器插入后硬件记述语言中的模块的示例图。
假设输入到运算元件数计算部件93的硬件记述语言包含图11所示的模块。
该模块包含功能集合40、41。由功能集合40可明白,输入A等待3个运算处理,连接到输出OUT。
运算元件数计算部件93对于其他的输入B、C也进行这样的分析。
通过这样,获得图12所示的树图。该树图只是为了说明方便,并非实际形成的。
模块分割部件90将由运算元件数计算部件93分析获得的输入A、B、C到输出OUT的运算元件的数量与规定值进行比较,在判断为输入A、B、C到输出OUT的运算元件的数较多时,如图13所示,在该模块插入功能分割触发器42。
而图12的树图,在箭头$示出的位置插入功能分割触发器。
下面,用流程图说明图10的逻辑电路合成装置9的处理流程。
图14是图10的逻辑电路合成装置9的流程图。
如图14所示,在步骤S21,运算元件数计算部件93选择包含硬件记述语言的一个模块。
在步骤S22,运算元件数计算部件93计算从输入到输出的运算元件数。
在步骤S23,模块分割部件90将运算元件数计算部件93计算的运算元件数与规定值进行比较,如果运算元件数在规定值以下,前进到步骤S25。
另一方面,在步骤S23,模块分割部件90将运算元件数计算部件93计算的运算元件数与规定值进行比较,如果运算元件数超过规定值,前进到步骤S24。
在步骤S24,模块分割部件90在运算元件数超过规定值的模块中插入功能分割触发器。
在步骤S25,存在下一模块时,前进到步骤S21,进行步骤S21到步骤S25的处理。
反复进行以上的处理,插入功能分割触发器,更新硬件记述语言。
另一方面,在步骤S25,不存在下一模块时,前进到步骤S26,合成部件92由更新后的硬件记述语言生成逻辑电路信息4。
如上所述,本实施方式中,在运算元件数比规定值多的模块中插入以硬件记述语言表示的分割触发器。
由此,逻辑合成后的簇的簇长变短,在逻辑仿真装置FPGA中分配簇时的自由度变高。因此,可提高可变逻辑元件的使用效率。
这样,可实现在逻辑仿真装置中分配逻辑电路的最佳化。
而且,由于在硬件记述语言阶段插入分割触发器,因此与逻辑合成后插入分割触发器的情况相比,可以高速处理。
(实施方式4)
本发明实施方式4的逻辑仿真系统的整体结构与图1是同样的。因此,以图1的逻辑仿真系统作为实施方式4的逻辑仿真系统进行说明。
另外,实施方式4的电路分配装置1的结构与图2是同样的。因此,以图2的电路分配装置1作为实施方式4的电路分配装置1进行说明。但是,实施方式4的逻辑电路最佳化装置8的结构与实施方式1的逻辑电路最佳化装置8的结构不同。
图15是本发明实施方式4的逻辑电路最佳化装置8的方框图。对于图15中与图3同样的部分,赋予同一符号,适当省略说明。
如图15所示,该逻辑电路最佳化装置8是在图3的逻辑电路最佳化装置8的结构中追加置换部件95。
在设计电路中,包含各种各样的存储器器件。例如SRAM(static randomaccess memory)和SDRAM(synchronous dynamic random access memory)等,当然各自的动作性能不同。
而逻辑仿真装置2以及FPGA搭载有SRAM等固定存储器器件。
这里,为了与要实现的存储器器件的动作性能一致,在逻辑仿真装置2或FPGA搭载的固定存储器器件中,追加周边模式电路(ラツパ一电路),实现存储器器件。
接着,置换部件95参照存储器置换表信息,通过以电路长(例如电路级数或信号的传送时间)表示逻辑仿真装置2或FPGA搭载的固定存储器器件,在逻辑电路将上述那样实现的存储器器件置换。
举具体的例子说明上面的点。
图16是图15的置换部件95的动作的说明图。
图17是存储器置换表信息的示例图。
如图16所示,为了与作为要实现的存储器器件SDRAM的动作性能一致,在由搭载逻辑仿真装置2或FPGA的固定存储器器件SRAM36附加由组合电路31、32组成的封装电路(ラツパ一电路)35,实现SRAM34。SRAM34与组合电路30、33连接。
由此实现的SRAM34的信息包含于逻辑电路信息4。
接着,置换部件95参照图17所示的存储器置换表信息,通过以电路长表示包含于逻辑电路信息4的SRAM36,将SRAM34置换为逻辑电路。
例如,若SRAM36为4Mbit的SRAM,则根据图17的存储器置换表信息,该SRAM被看作电路级数‘10’的逻辑电路。
这样,在SRAM36附加封装电路35而形成的SRAM34可看作通常的组合电路。
因此,此后根据图15的逻辑电路最佳化装置8,进行与实施方式1同样的处理,实行最佳化。
图17的存储器置换表信息采用电路级数作为换算值,也可以采用信号的传送时间。
下面,用流程图说明图15的逻辑电路最佳化装置8的处理的流程。
图18是图15的逻辑电路最佳化装置8的流程图。
如图18所示,该流程图是在图7的流程图的步骤S1之前附加了步骤S0。
因此,在步骤S0,置换部件95参照存储器置换表信息,通过以电路长表示实现逻辑仿真对象的存储器器件的存储器器件,将逻辑仿真对象的存储器器件置换为逻辑电路。
由此,可以将逻辑仿真对象的存储器器件看作组合电路。
此后,逻辑电路最佳化装置8进行与实施方式1同样的步骤S1至步骤S8。
也可以实行图9的步骤S81至步骤S90的处理,作为图18的步骤S8的替代。
如上所述,本实施方式由于具有与实施方式1及实施方式2同样的结构,因此可获得与其同样的效果。
而且,本实施方式通过以电路长表示实现逻辑仿真对象的存储器器件的存储器器件,将逻辑仿真对象的存储器器件置换为逻辑电路。
因此,对于逻辑仿真对象的存储器器件,也与通常的电路同样,通过电路分割部件85插入分割触发器而细分化。因此,可实现进一步的FPGA使用效率的提高。
权利要求
1.一种逻辑电路最佳化方法,包括对输入的逻辑电路信息进行群聚的群聚步骤;在由所述群聚获得的簇当中,在簇长超过预定簇长的簇中插入触发器的插入步骤;对插入了所述触发器的所述簇,进行再群聚的再群聚步骤。
2.如权利要求1所述的逻辑电路最佳化方法,其中所述插入步骤包括测定由所述群聚获得的所述簇的簇长的簇长测定步骤;在由所述群聚获得的所述簇中,选择簇长超过所述预定簇长的簇的簇选择步骤;在簇长超过所述预定簇长的所述簇中插入触发器的触发器插入步骤,在由所述再群聚获得的簇中存在簇长超过所述预定簇长的簇的情况下,按照所述触发器插入步骤以及所述再群聚步骤进行处理。
3.如权利要求1所述的逻辑电路最佳化方法,还包括将包含于进行所述群聚以及所述再群聚后的逻辑电路信息中的簇分配给逻辑仿真装置的可变逻辑元件时,在未装入所述可变逻辑元件的簇中插入触发器的步骤;对插入所述触发器的所述簇进行再群聚的步骤。
4.如权利要求1所述的逻辑电路最佳化方法,还包括通过以电路长表示实现逻辑仿真对象的存储器器件的存储器器件,在逻辑电路中置换逻辑仿真对象的所述存储器器件的步骤。
5.如权利要求4所述的逻辑电路最佳化方法,所述电路长以电路级数表示。
6.如权利要求4所述的逻辑电路最佳化方法,所述电路长以信号的传送时间表示。
7.如权利要求1所述的逻辑电路最佳化方法,所述簇长以电路级数表示。
8.如权利要求1所述的逻辑电路最佳化方法,所述簇长以信号的传送时间表示。
9.一种逻辑电路最佳化方法,包括将包含于进行群聚后的逻辑电路信息的簇分配给逻辑仿真装置的可变逻辑元件时,在未装入所述可变逻辑元件的簇中插入触发器的步骤;对插入所述触发器的所述簇进行再群聚的步骤。
10.如权利要求1所述的逻辑电路最佳化方法,其中,要插入的所述触发器的动作时钟的频率比包含在作为所述触发器的插入对象的所述簇中的触发器的动作时钟的频率高。
11.一种逻辑电路最佳化方法,包括计算包含在以硬件记述语言记述的模块中的运算元件的数量的步骤;在运算元件的数量比预定值多的模块中插入以硬件记述语言记述的触发器的步骤。
12.一种逻辑电路最佳化装置,具备对输入的逻辑电路信息进行群聚的群聚部件;在由所述群聚获得的簇当中,在簇长超过预定簇长的簇中插入触发器的电路分割部件,所述群聚部件,对插入所述触发器的所述簇进行再群聚。
13.如权利要求12所述的逻辑电路最佳化装置,还具备测定由所述群聚获得的所述簇的簇长的簇长测定部件;在由所述群聚获得的所述簇中,选择簇长超过所述预定簇长的簇的簇选择部件,在由所述再群聚获得的簇中存在簇长超过所述预定簇长的簇的情况下,所述电路分割部件在该簇中插入触发器。
14.如权利要求12所述的逻辑电路最佳化装置,所述电路分割部件,将包含于进行所述群聚以及所述再群聚后的逻辑电路信息中的簇分配给逻辑仿真装置的可变逻辑元件时,在未装入所述可变逻辑元件的簇中插入触发器;所述群聚部件,对插入所述触发器的所述簇进行再群聚。
15.如权利要求12所述的逻辑电路最佳化装置,还具备置换部件通过以电路长表示实现逻辑仿真对象的存储器器件的存储器器件,在逻辑电路中置换逻辑仿真对象的所述存储器器件。
16.如权利要求15所述的逻辑电路最佳化装置,所述电路长以电路级数表示。
17.如权利要求15所述的逻辑电路最佳化装置,所述电路长以信号的传送时间表示。
18.如权利要求12所述的逻辑电路最佳化装置,所述簇长以电路级数表示。
19.如权利要求12所述的逻辑电路最佳化装置,所述簇长以信号的传送时间表示。
20.一种逻辑电路最佳化装置,具备将包含于进行群聚后的逻辑电路信息中的簇分配给逻辑仿真装置的可变逻辑元件时,在未装入所述可变逻辑元件的簇中插入触发器的电路分割部件;对插入所述触发器的所述簇进行再群聚的群聚部件。
21.如权利要求12所述的逻辑电路最佳化装置,其中,要插入的所述触发器的动作时钟的频率比包含在作为所述触发器的插入对象的所述簇中的触发器的动作时钟的频率高。
22.一种逻辑电路合成装置,具备计算包含在以硬件记述语言记述的模块中的运算元件的数量的运算元件数计算部件;在运算元件的数量比预定值多的模块中插入以硬件记述语言记述的触发器的模块分割部件。
全文摘要
在簇长超过预定簇长的簇C中,插入分割触发器FF2。对于插入了触发器的簇C进行再群聚,获得细分化的簇C1、C2。可以提高在逻辑仿真装置的可变逻辑元件(例如,FPGA)中分配簇时的自由度。
文档编号G06F17/50GK1521665SQ20041000386
公开日2004年8月18日 申请日期2004年2月6日 优先权日2003年2月10日
发明者木村智生, 石田健一, 井本智幸, 一, 幸 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1