高阶合成方法和高阶合成装置的制作方法

文档序号:6444034阅读:225来源:国知局
专利名称:高阶合成方法和高阶合成装置的制作方法
背景技术
1、发明领域本发明涉及用于由以行为级(behavior level)描述的电路来合成寄存器转移级电路或门级电路的高阶合成装置和高阶合成方法。
2、相关背景技术随着近期向更大规模LSIs发展的趋势,用高阶合成来设计电路以便缩短LSI设计所需的时间。在高阶合成中,寄存器转移级或门级电路由具有高阶抽象的行为性描述(如算法)的电路合成。
其中,在电路设计中,其中以寄存器转移级来描述电路,且基于该电路描述(circuit description)而执行逻辑合成,大单元(megacell)如存储器不是逻辑合成的目标。因此,当大单元,如存储器将被使用时,电路设计人员必须在寄存器转移级电路描述中作举例描述(instance description)。
另一方面,在使用高阶合成的电路设计中执行行为性描述,且因此可用变量如阵列变量和结构变量描述大单元。结果是,在执行高阶合成时,可为存储器元素资源(memory element resources)如存储器,寄存器文件或寄存器分配变量。
在传统高阶合成中,用于分配变量至寄存器等的技术包括,例如,使用左缘算法,在“HIGH-LEVEL SYNTHESIS,Introduction to Chipan System Design”(Gajski,Wu,Dutt和Lin编辑,美国Kluwer AcademicPublishers 1992年出版)介绍了这种算法。根据使用左缘算法的技术,首先,执行时序安排(scheduling)以确定在行为性描述中执行不同操作的周期,且分析变量寿命。
然后,变量按寿命的顺序分类并依次分配到寄存器,以避免寿命交叠。例如,在变量是阵列变量的情形中,按照前述技术该阵列变量的各个阵列元素被逐个分配至寄存器。
而且,在传统高阶合成中,用于分配变量至存储器的技术包括,例如,其中设计人员指定待分配的阵列变量至任意存储器的技术,由此,在执行用于确定执行操作顺序的时序安排之前阵列变量预先分配至存储器。例如,在JP H05(1993)-101141A中揭示的高阶合成装置中,电路设计人员使用用于存储器分配的命令,以便将在行为级电路中描述的任意阵列变量分配给任意存储器。
然而,在前述将阵列变量分配给存储器的技术中,在阵列变量分配至存储器之后执行时序安排,因此时序安排的执行受到基于指定了分配的存储器的限制。因此,在这样的情形中,其中阵列变量分配至存储器不是最优的,就会出现不能获得最优的时序安排结果的问题。
例如,在使用用C语言编写的结构变量的阵列变量的情形中,行为级电路的描述中,有引用整体的结构变量的情形,还有引用包括在该结构中的成员变量(member variables)的另一个情形。由于其中的引用方法(reference method)的差异,这些情形中用于转移数据的位宽不同。
而且,根据JP H05(1993)-101141A在高阶合成中,当结构变量被分配至存储器,用于存储器数据转移的位宽对每个存储器局限于一种类型。因此,对于引用整体的结构变量和只引用成员变量的情形,难以分配具有用于数据转移的最优位宽的存储器。
而且,对分配的存储器中的数据转移的位宽的限制使得当引用整体的结构变量时的存储器存取频率,和只引用成员变量时的存储器存取频率被确定。
因此,当存储器存取频率影响时序安排结果时,最优时序安排结果将不能获得。为了对付这样的问题,需要高阶合成来选择成为分配目标的存储器,以便避免对时序安排结果的影响,或为了获得最优频率。

发明内容
因此,注意到前述内容,本发明的目的是提供高阶合成方法和高阶合成装置,使得能够根据行为级电路中所描述的操作选择具有最优位宽的存储器,并且最优化存储器存取频率。
为了实现上述目的,本发明的高阶合成方法包括以下步骤(a)计算行为级电路中变量引用(referencing of the variable)的数目;(b)提取变量的位宽并选择多个能够以所提取的位宽进行数据转移的存储器;(c)当变量被分配到其中时,计算步骤(b)中选择的多个存储器中的每一个存储器的存取频率之和,该计算是基于变量引用数目和的位宽执行的;和(d)作为变量分配的目标,选择将在步骤(c)中计算的存储器存取频率最小化的存储器,通过本发明的高阶合成方法,行为级电路所描述的变量被分配至存储器以生成逻辑电路。
而且,为了实现上述目的,本发明的高阶合成装置至少包括引用数目计算单元,其计算行为级电路中变量的引用数目;位宽提取单元,其提取变量的位宽且选择多个能够以提取的位宽数据转移的存储器;和存储器选择单元,当变量被分配到存储器中时,该存储器选择单元为每个所选的多个存储器计算存储器存取频率之和,该计算是基于变量的的引用数目和位宽而进行的,并且作为分配目标,选择一个将计算的存储器存取的频率之和最小化的存储器,该高阶合成装置分配行为级电路中所描述的变量至存储器以生成逻辑电路。
而且,本发明可以是一种纪录介质,其中纪录了用于实施本发明上述高阶合成装置的程序。该程序可安装于计算机并被执行,由此,本发明的高阶合成方法能被执行。
由这些特征,根据本发明的高阶合成装置和高阶合成方法,根据行为级电路中描述的操作可选择具有最优位宽的存储器,且存储器存取频率可被最优化。


图1是方框图,其示意地示出根据本发明实施例1的高阶合成装置的结构;图2是流程图,其示出根据本发明实施例1的高阶合成方法;图3示出用在实施例1中的行为级电路和存储器存取频率,其中图3A示出示例性行为级电路,图3B示出行为级电路所描述的变量的引用数目和位宽,图3C示出可选择的存储器的位宽和存储器存取频率的和;图4示出存储器存取周期表,其用于所选存储器中的存储器存取频率的计算;图5是方框图,示意地示出根据本发明实施例2的高阶合成装置的结构;图6是流程图,示出根据本发明实施例2的高阶合成方法;图7示出用于实施例2的示例性的行为级电路,其中图7A示出在变量分离之前的状态,图7B示出变量分离之后的状态;图8示出其中变量的分离已执行的情形中的频率和, 和其中变量分离没有执行的情形中的频率和,其中图8A示出变量分离已执行的情形中变量的引用数目和位宽,图8B示出变量分离已执行的情形中可选存储器的位宽和频率和,图8C示出变量分离没执行的情形中可选存储器的位宽和频率和;图9是实施例2的高阶合成方法的流程图,其中执行尝试性时序安排;图10是方框图,示意地示出根据本发明实施例3的高阶合成装置的示例性的结构;
图11示出用在实施例3中的示例性的行为级电路,其中图11A示出在变量整合(variable integration)之前的状态,图11B示出变量整合之后的状态;图12示出变量整合之前和变量整合之后的情形中变量位宽和引用数目及可选存储器的位宽和频率和,其中图12A示出变量整合没有执行的情形,而12B示出变量整合已经执行的情形;图13示出阵列变量和阵列元素分离之后,行为级电路,变量位宽和引用数目及可选存储器的位宽和频率和,其中图13A示出图11A所示的行为级电路经变量分离后的状态,图13B示出变量分离执行之后变量的位宽和引用数目,及可选存储器的位宽和频率之和;图14是方框图,其示意地示出根据本发明的实施例3的另一个示例性高阶合成装置的结构;图15示出用在实施例3中的示例性行为级电路,其中图15A示出变量分离和变量整合之前的状态,图15B示出变量分离和变量整合之后的状态;图16示出变量整合和变量分离已执行和没有执行的情形中变量位宽和引用数目,并示出可选存储器的位宽和频率和,其中图16A示出变量整合和变量分离没有执行的情形,而图16B示出变量整合和变量分离已执行的情形;图17是方框图,示意地示出根据本发明实施例3的高阶合成装置的另一个示例性结构;图18示出用在实施例3中的示例性行为级电路,其中图18A示出变量分离之前的状态,而图18B示出变量分离之后的状态;图19是流程图,示出图17中示出的高阶合成装置的操作;图20示出变量分离已执行的情形和变量分离没有执行的情形中的变量的位宽和引用数目,及可选存储器的位宽和频率和,其中图20A示出变量分离没有执行的情形,而图20B示出变量分离已执行的情形;图21是方框图,示意地示出根据本发明实施例4的高阶合成装置的结构;图22是流程图,示出根据本发明实施例4的高阶合成方法。
图23示出用于实施例4中的行为级电路,变量的位宽,和存储器存取频率,其中图23A示出示例性行为级电路,图23B示出示在图23A中的行为级电路中描述的变量的引用数目和位宽,图23C示出每个可选存储器的存储器存取频率和;图24是实施例4的高阶合成方法的流程图,其中执行了尝试性时序安排;图25是方框图,示意地示出根据本发明实施例5的高阶合成装置的结构;图26是流程图,示出根据本发明实施例5的高阶合成方法;图27示出用于实施例5的行为级电路,变量的位宽和存储器存取频率,其中图27A示出示例性行为级电路,图27B示出图27A中所示的行为级电路所描述的变量的引用数目和位宽,图27C示出每个可选存储器的存储器存取频率的和;图28示出图27A中所示的行为级电路的第三个for语句的执行顺序(exicution order),其中图28A示出在执行顺序交换之前的状态,而图28B示出执行顺序交换之后的状态;图29示出图27A中所示的行为级电路的时序安排的结果;图30示出实施例5中所用的存储器存取周期表;图31是方框图,示意地示出根据本发明实施例6的高阶合成装置的结构;图32是流程图,示出根据本发明实施例6的高阶合成方法;图33示出示例性存取方式,其中图33A示出表示对同一存储器的预定频率或更高频率的连续存取的存取方式,图33B示出了表示对不在同一存取周期存取的多个存储器的存取状态的存取方式;图34是方框图,示意地示出根据本发明实施例7的高阶合成装置的结构;图35是流程图,示出根据本发明实施例7的高阶合成方法;图36示出实施例7中所用的行为级电路,变量的位宽和存储器存取的频率,其中图36A示出示例性行为级电路,图36B示出图36A中所示的行为级电路中所描述的变量的引用数目和位宽,而图36C示出每个可选存储器的存储器存取频率之和;图37示出物理存储器单元列表,其中可装配32位存储器;图38是方框图,示意地示出根据本发明实施例8的高阶合成装置的结构;图39是流程图,示出根据本发明实施例8的高阶合成方法。
具体实施例本发明的前述高阶合成方法进一步包括以下步骤整合(integrating)包括在行为级电路所描述的多个阵列变量或结构变量中的变量,以生成新变量。在此,使用新变量执行步骤(a)到(d)。
而且,本发明的前述高阶合成方法可包括以下步骤分离在行为级电路中所描述的阵列变量或结构变量以生成新的变量,该生成新的变量由多个包括在分离结果中的变量组成。在此,可以使用新变量执行步骤(a)到(d)。
而且,本发明的前述高阶合成方法可包括以下步骤联合包括在行为级电路中所描述的多个阵列变量或结构变量中的多个变量,以生成新的阵列变量或结构变量,且分离新的阵列变量或结构变量,以生成由多个包括在分离结果中的变量组成的新的变量。在此,可以使用所述新变量执行步骤(a)到(d)。
在这些实施例中,所述多个变量可以是在行为级电路中同一区段(section)所描述的变量,或所述多个变量可以不是行为级电路中同一区段中所描述的变量。
在这样的情形中,高阶合成方法进一步可包括以下步骤在执行步骤(a)之前,分配行为级电路所描述的所有变量中的每一个至不同存储器,并进行行为级电路中的执行周期的时序安排;指定(specifying)一个执行周期,其中阵列变量或结构变量是基于时序安排的结果存取的,判断在执行周期的预定频率范围内存取的变量是同一区段所描述的变量,且判断不在该频率范围内存取的变量不是同一区段所描述的变量。
而且,同一区段可通过行为级电路中的重复处理定义,且该方法进一步可包括如下步骤从多个变量中指定在同一区段中描述的变量,该多个变量包括在行为级电路中所描述的同一阵列变量或结构变量中。
而且,前述实施例可包括如下步骤执行关于在行为级电路中所描述的阵列变量或结构变量的依赖性(Dependency)分析,以便计算阵列变量或结构变量之中的任意变量之间的距离矢量,且基于该计算的距离矢量指定多个变量。
优选,本发明的前述高阶合成方法可进一步包括如下步骤设定由行为级电路所描述的变量组成的变量组。在步骤(b),变量组的位宽和不构成该变量组的变量的位宽可被提取,且可为每个变量组以及不组成该变量组的变量选择多个存储器。
而且,在这个实施例中,组成变量组的变量可以是行为级电路中同一区段所描述的变量,或可以是不在行为级电路中同一区段所描述的变量。
而且,在这种情形中,优选高阶合成方法进一步包括如下步骤在执行步骤(a),分配在行为级电路中所描述的所有变量的每一个至不同存储器,并执行在行为级电路中的执行周期的时序安排;以及指定执行周期,在所述中期中每个变量是基于时序安排的结果存取的,判断在执行周期的预定频率范围内存取的变量是同一区段内描述的变量,且判断不在执行周期的预定频率范围内存取的变量不是同一区段内描述的变量。
而且,在前述实施例中,为变量组选择的多个存储器中每个可有不同位宽,且可配置的变量组的数目是预先设定的。而且,多个变量组可被配置,且组成至少一个变量组的变量数目和组成另一个变量组的变量数目可以不同。
而且,优选,前述高阶合成方法包括如下步骤在执行步骤(c)之前,分配变量至在步骤(b)中选择的存储器,并执行在行为级电路中的执行周期的时序安排。在步骤(c),可基于时序安排的结果判断是否有可与存储器存取并行执行的操作处理,且如果有该操作处理,存储器存取的频率之和可被改正。
优选,该实施例进一步包括如下步骤提取行为级电路中所描述的重复处理,并分析包括在重复处理中的变量的依赖性(dependence);并基于依赖性的分析结果交换重复处理中的执行顺序,以便将在同一时间引用的变量在同一执行周期执行。
而且,优选地,前述高阶合成方法包括如下步骤在执行步骤(c)之前,分配变量至在步骤(b)中选择的存储器中,并执行在行为级电路中的执行周期的时序安排;且在执行步骤(d)之后,显示对所选的存储器的存取方式,该存取方式是从时序安排获得的。
在该实施例中,对同一存储器的预定频率或更高频率的连续存取可从时序安排的结果中获取,并且示出存取的存取方式可被显示。而且,不是在同一执行周期中存取的多个存储器可从时序安排的结果中提取,示出对提取的多个存储器的存取条件的存取方式可被显示。
而且,优选地,本发明前述的高阶合成方法包括如下步骤规定相应于所选存储器的多个存储器单元,并在该多个存储器单元中选择一个满足关于执行周期中的延迟时间的预定条件的存储器单元。在不能选择满足关于执行周期中某个延迟时间的预定条件的存储器单元的情况下,则步骤(d)可再次执行。
该实施例优选进一步包括如下步骤分配变量至所选的存储器,且执行行为级电路中执行周期的时序安排。可基于时序安排结果和多个存储器单元中的每个的存取时间,通过计算多个存储器单元中的每个存储器一个执行周期内的延迟时间,且通过判断所计算的延迟时间满足预定条件与否而执行存储器单元的选择。
而且,前述高阶合成方法可包括如下步骤在执行步骤(d)之后,分配变量至所选的存储器,且执行布局(layout),由此,生成指定所选存储器的至少一个的设定的位置和与所选存储器连接的电路的设定的位置的布局信息。在此,多个存储器单元中的每个存储器单元的存取时间可从布局信息确定。
而且,优选地,本发明的前述高阶合成方法包括如下步骤在执行步骤(d)之后,分配变量至所选存储器,且执行布局,由此,生成规定所选存储器的至少一个设定的位置和与所选存储器连接的电路的设定的位置的布局信息;基于该布局信息,确定所选存储器的至少一个存取时间,布线的(routing)拥塞程度和死区面积;和在存取时间被确定的情形中,使用该存取时间执行行为级电路中执行周期的时序安排。
而且,优选地,该实施例包括如下步骤在布线拥塞程度被确定的情形中,作出布线拥塞程度是否满足预定条件的判断。在此,如果布线的拥塞程度不满足预定条件,则可对非所选的存储器再次执行步骤(d)。
而且,优选地,该实施例包括如下步骤在死区面积被确定的情形中,作出死区面积是否满足预定条件的判断。在此,如果死区面积不满足预定条件,则可对非所选的存储器再次执行步骤(d)。
下面参考

本发明的高阶合成装置和高阶合成方法。注意本发明的高阶合成方法和本发明的高阶合成装置不局限于下面的实施例。
实施例1下面参考图1到4说明根据本发明实施例1的高阶合成装置和高阶合成方法。首先,上述实施例1的高阶合成装置的结构将参考图1说明如下。图1是方框图,其示意地示出根据本发明实施例1的高阶合成装置。
示于图1的高阶合成装置10分配变量至存储器以便生成逻辑电路,在行为级电路11中描述了从多个变量中被指定要分配至存储器的所述变量。
如图1所示,高阶合成装置10包括引用数目计算单元1;位宽提取单元2;存储器选择单元3;时序安排单元4;和资源(resource)分配单元5。行为级电路11是行为性描述中所表示的电路,且该电路用硬件描述语言如Verilog-HDL和编程语言如C语言描述。
引用数目计算单元1读取行为级电路11,规定行为级电路11中描述的多个变量中所有被指定分配至存储器的变量,并为每个变量计算引用数目。引用数目意味着每个变量在行为级电路11中被提到的次数。计算的引用数目被输出到变量信息数据库12,并被存储在变量信息数据库12中。
位宽提取单元2读取行为级电路11并提取其引用数目已通过引用数目计算单元1计算出来的所有变量中的每一个的位宽,然后选择能够以提取的位宽进行数据转移的多个存储器。位宽提取单元2产生所选存储器的列表(可选存储器列表),并将其输出至存储器信息数据库13。可选存储器列表被存储在存储器信息数据库13中。
由此,可选存储器列表额外地包括用于识别所选存储器(可选存储器)的识别信息和关于存储器位宽的信息。而且,位宽提取单元2输出用于为每个变量指定提取的位宽的信息至存储器信息数据库13。用于为每个变量指定提取的位宽的信息存储在存储器信息数据库13中以便和可选存储器关联。
存储器选择单元3从可选存储器中选择具有合适位宽的存储器,这成为为每个指定要分配至存储器的变量的分配目标。在实施例1中,存储器选择单元3读取存储器信息数据库13以获得可选择存储器列表和变量的位宽,并进一步读取变量信息数据库12以获得引用数目。
而且,在基于所获得的信息,变量被分配至各个可选存储器的情形中,存储器选择单元3计算存储器存取的频率之和,同时参考图4所示的存储器存取周期表,这将在后面介绍。而且,存储器选择单元3将各个可选存储器的频率彼此比较,并选择一个最小化所计算的频率之和的存储器作为分配目标。
作为结果,被分配给行为级电路11中的变量的存储器,即变量的值将存储于其中的存储器被确定。而且,存储器选择单元3输出具有所述变量的行为级电路至电路数据库14,关于所述变量要被分配到的存储器已被确定。
更具体地,在实施例1中,电路数据库14存储控制关系和行为级电路11中所描述的操作与变量的关系,所述关系由CDFG(控制数据流图),AST(抽象语法树)等表示。为了这个目的,存储器选择单元3将变量已分配至其中的存储器的信息(特征)加到电路数据库14的变量中。
注意,在实施例1中,控制关系和操作与变量的关系由CDFG表示。CDFG是由控制流和数据流(变量和操作的输入/输出关系)组成的图(参见图29)。因此,存储器选择单元3将分配了变量的存储器的信息(特征)加至存储在电路数据库14中CDFG中的变量节点。
时序安排单元4分配所选存储器并执行时序安排。更具体地,时序安排单元4从电路数据库14中获取已经确定了存储器的分配的电路(CDFG),并执行关于所取电路(CDFG)的时序安排以确定操作的执行周期。而且,在完成时序安排之后,时序单元4将其操作的执行周期已被确定的电路(CDFG)输出至电路数据库14。
资源分配单元15从电路数据库14中获取其中操作的执行周期已被确定的所述电路(CDFG)。而且,基于此,资源分配单元5执行对资源的分配,例如对每个操作的资源分配,和除存储器分配的寄存器分配,并生成寄存器转移级或门级逻辑电路。生成的逻辑电路被输出至外部。注意,在实施例1中,时序安排单元4和资源分配单元5经配置能执行前述“HIGH-LEVEL SYNTHESIS,Introduction to Chipand System Design(高阶合成,芯片和系统设计导论)”揭示的技术。
然后,根据实施例1的高阶合成方法将参考图2到4说明如下。可通过操作示于图1的根据实施例1的高阶合成装置执行实施例1的高阶合成方法。因此,下面基于高阶合成装置的操作说明高阶合成方法,并在需要时参考图1。图2是流程图,其示出根据本发明实施例1的高阶合成方法。
如图2所示,首先,引用数目计算单元1指定行为级电路11中所描述的变量中所有指定分配至存储器的变量,并为每个变量(S1)计算引用数目。引用数目计算单元1输出所计算的引用数目至变量信息数据库12。
然后,位宽提取单元2提取在步骤S1已经为其计算了引用数目的每个变量的位宽,(步骤S2)。而且,位宽提取单元2选择多个能以提取的位宽进行数据转移的存储器作为可选择存储器,产生可选择存储器列表,该列表规定可选择存储器并将其输出至存储器信息数据库13(步骤S3)。
其后,基于在步骤S1计算的引用数目和在步骤S2提取的各个变量的位宽,当在步骤S1规定的变量被分配至各个可选择存储器时,存储器选择单元3计算存储器存取频率的和(步骤S4)。
此后,存储器选择单元3作出关于是否已为所有可选择存储器计算了存储器存取频率的和的判断(步骤S5)。如果没有为存储在存储器信息数据库13中所有可选择存储器完成存储器存取频率的和的计算,存储器选择单元3再次执行步骤S4。另一方面,如果为所有可选择存储器完成了存储器存取频率的和的计算,那么存储器选择单元3执行步骤S6。
在步骤S6,存储器选择单元3将在步骤S4中计算的各个可选择存储器的存取频率的和相互比较,并选择最小化存储器存取的频率和的可选择存储器作为分配目标。
而且,存储器选择单元3输出具有所述变量的行为级电路至电路数据库14,关于所述参数要分配的存储器已被确定。以这种方式,通过执行步骤S1至S6,可完成行为级电路11中所描述的变量至所述存储器的分配。
然后,通过时序安排单元4进行时序安排(步骤S7)和通过资源分配单元5进行资源分配,由此生成逻辑电路(步骤S8)。生成的逻辑电路被输出至外部。
现在参考图3和图4,图2中的步骤S1至S6将更具体地说明如下。图3示出用于实施例1中的行为级电路和存储器存取频率,其中图3A示出示例性行为级电路,图3B示出行为级电路中所描述的变量的引用数目和宽度,图3C示出可选择存储器的位宽和存储器存取频率和。图4示出存储器存取周期表,其用于所选存储器的存取频率的计算。
在示于图3A的例子中的行为级电路中,阵列变量a和b是指定被分配至存储器的变量。由此,虽然图3A示出两个变量被指定分配至存储器的情形,指定被分配至存储器的变量的数目在本发明中不特别受到限制。
而且,在图3A中,阵列变量a是具有aaa结构包括成员变量m1和m2的一个阵列变量。例如,至于成员变量m1,有引用作为整体的阵列变量a的情形,也有引用单个成员变量m1的情形。以这种方式,变量具有两类引用方法。
因此,在步骤S1,如图3B所示,引用数目计算单元1除了指定阵列变量a和b,还指定成员变量a.m1和a.m2作为被指定分配至存储器的变量。
而且,如图3B所示,除了计算图3A中所示的行为级电路11中的阵列变量a和b(“读取”和“写入”)的引用数目,引用数目计算单元1也计算各个成员变量a.m1和a.m2的引用数目。
在图3A所示的行为级电路11中,成员变量m1和m2的数据类型被指定为char型。char型表示变量的位宽是8位。而且,阵列变量a的位宽等于包括在该结构中的所有成员变量的位宽之和。而且,在图3A所示的行为级电路11中,阵列变量b的数据类型被指定为int型,int型表示变量的位宽为32位。
因此,在步骤S2,如图3B所示,位宽提取单元2提取8位作为成员变量a.m1和a.m2的位宽,提取16位作为阵列变量a的位宽,提取32位作为阵列变量b的位宽。
而且,在步骤S3,位宽提取单元2确定要分配阵列变量a的存储器的位宽为8位或16位,并确定要分配阵列变量b的存储器的位宽为32位。
然后,如图3C所示,位宽提取单元2选择具有8位位宽的存储器M1和具有16位位宽的存储器M2,作为阵列变量a将被分配至其中的存储器,并选择具有32位位宽的存储器M3作为用于阵列变量b的可选择存储器。
而且,位宽提取单元2产生可选择存储器列表,其中存储器M1和M3的组合是可选择存储器A,存储器M2和M3的组合是可选择存储器B,并输出可选择存储器列表。在图3C中,“a位宽”指示出阵列变量a将被分配至其中的存储器的位宽,“b位宽”指示出阵列变量b将被分配至其中的存储器的位宽。
在步骤S4,存储器选择单元3引用图4中所示的存储器存取周期表以计算出关于各个可选存储器的存取频率和。如图4所示,存储器存取周期表示出分配了变量的存储器的存取频率,其中为变量位宽(以下缩写为“BW(变量)”)和存储器位宽(以下缩写为“BW(存储器)”)之间各种大小关系,并为读取(读取)和写入(写入)示出所述频率。图4中所示的存储器存取频率表示引用变量一次所需的存储器存取周期数目。
更具体地,存储器选择单元3将各个可选择存储器的BW(变量)和BW(存储器)之间的关系应用到图4中所示的存储器存取周期表,以便计算出关于各个可选择存储器的变量的一次引用操作所需的存储器存取频率,为每次读取和写入执行该计算。
而且,存储器选择单元3将这些计算的存储器存取频率乘以各个可选择存储器的引用数目以便计算出存储器存取频率和。注意,在可选择存储器包括多个存储器组合的情形中,应为每个组合的存储器执行上面的乘法,且计算出乘积的和。
例如,变量a被分配至存储器M1(位宽8位)和变量b被分配至存储器M3(位宽32位)的情形将在下面说明。因为变量a.m1的位宽和变量a.m2的位宽都是8位,它们彼此相等,从而BW(变量)等于BW(存储器)。
因此,由图4,对于读取和写入,存储器存取频率都变为“1”。从图3B,变量a.m1的引用数目对读取和写入都是“10”。因此,变量a.m1的读取和写入都需要10个周期,这意味着总的需要20个周期。
相似地,对于变量a.m2,需要10个周期,对于变量a需要20个周期。由此,当存储器M1分配给变量a,存储器存取频率之和变成50个周期。同时,当存储器M3被分配给变量b,因为存储器的位宽是32位,所以总的需要10个周期。
在此,因为阵列变量a分配至其中的存储器M1和阵列变量b分配至其中的存储器M3是独立的存储器,在图3A中第三个“for”语句中变量a的读取和变量b的写入可同时执行。因此,当判断步骤S5中存储器的选择时,可使用存储器M1的频率和(参见图3C)。
然后,变量a被分配至存储器M2(位宽16位)和变量b被分配至存储器M3(位宽32位)的情形将说明如下。由图3B和图4,当存储器M2被分配给变量a时,所述频率和变为60个周期。在这个情形中,变量a的读取和变量b的写入也可同时执行,所以在步骤S5中判断存储器的选择时,可使用存储器M2的频率和(参见图3C)。
注意,在图4中,当存储器位宽大于变量的位宽时(BW(变量)<BW(存储器))写入周期变为2个周期。这是因为相应于一次写入位宽的数据应先被读取。
例如,当具有16位位宽的存储器被分配给变量a,则以变量a的单位执行写入操作。因此,即使当只对成员变量a.m1执行写入,则也对成员变量a.m2执行写入。因为这个原因,必须在变量a的数据先被读取之后再执行写入,因此读取需要一个周期,写入需要一个周期,即总共需要两个周期。
在步骤S6,基于示于图3C的结果,存储器选择单元3选择存储器M1(位宽8位)作为变量a的分配目标,选择存储器M3(位宽32位)作为变量b的分配目标。
在此,图3A所示的行为级电路中,当具有8位的存储器被选中时,频率和变得最小。然而,在不是单个引用成员变量a.m1和a.m2的情形中,当具有32位位宽的存储器被选中时,总的频率变得最小。
如上所述,根据实施例1,可根据行为级电路中描述的操作选择具有最优位宽的存储器。因此,存储器存取频率可被最优化。
例如,在具有多个变量引用方法的变量,如C语言中的结构变量,被分配给存储器的情况中,即使有多个具有不同位宽的存储器可作为分配目标,能够最小化存储器存取频率的存储器被选为分配目标。因此,不同于传统高阶合成装置和高阶合成方法,实施例1允许获得最优时序安排结果。
通过在计算机中安装一个能实施图2中的步骤S1到S8的程序,并执行该程序,可以实施实施例1的高阶合成装置。在这种情形中,计算机的CPU(中央处理单元)用作引用数目计算单元;位宽提取单元;存储器选择单元;时序安排单元;和资源分配单元,以及执行相应的处理。
而且,在实施例1中,变量信息数据库12,对于存储器信息数据库13和电路数据库14,可通过将整理(making up)这些数据库的数据文件存储在计算机提供的存储装置,如硬盘中,或通过安装一个将该数据文件存储在读取装置中并和计算机连接的记录介质来使用这些数据库。而且,可通过不同于构成引用数目计算单元1等的计算机的计算机来实现这些数据库。下面的实施例2到8中的高阶合成装置也可通过类似于实施例1的高阶合成装置的计算机而实现。
实施例2现参考图5到9,根据本发明实施例2的高阶合成装置和高阶合成方法将说明如下。首先,将参考图5说明根据本发明的高阶合成装置的结构。图5是方框图,其示意地示出根据本发明实施例2的高阶合成装置的结构。
如图5所示,实施例2的高阶合成装置20包括变量分离单元21,这是其与图1所示的实施例1的高阶合成装置10不同之处。实施例2的高阶合成装置20其余的结构类似于示于图1中实施例1的高阶合成装置10。
变量分离单元21将行为级电路11中所描述的变量分离成多个变量以生成新的变量。用这些新的变量,变量分离单元21修改行为级电路11。而且,不同于实施例1,实施例2的引用数目计算单元1和位宽提取单元2读取被变量分离单元21修改的行为级电路22(以下称为“修改的行为级电路”)以继续处理。
由变量分离单元21执行的变量分离将说明如下。在实施例2中,有两种方法用于通过变量分离单元21分离变量,包括存取集中方法(access concentration method)和存取分布方法(access distributionmethod)。
根据存取集中方法,在同一区段中描述的包括在行为级电路11中同一阵列变量或结构变量中的多个变量被分配至另一个阵列变量或结构变量,而不在同一区段描述的多个变量的每一个都分配至不同的阵列变量或结构变量。根据存取分布方法,在同一区段被描述的包括在行为级电路11中的同一阵列变量或结构变量中的多个变量的每一个被分配至不同的阵列变量或结构变量。
例如,当结构变量通过存取集中方法被分离时,从而在同一区段描述的多个成员变量被分配至一个存储器,不在同一区段描述的多个成员变量的每一个被分配至不同的存储器,在恒定的时间段内对多个存储器的存取集中到对一个存储器上,因此使得其它不操作的存储器在该时间段暂停。
另一方面,当结构变量被存取分布方法分离时,在恒定的时间段内对不同的存储器执行存取,因此使得可以对不同存储器同时存取,并降低存储器存取频率。
以这种方式,根据变量分离方法可获得不同效果,且变量分离单元21可按照对作为最终产品的LSIs的要求指定分离方法。
现参考图6到8,实施例2的高阶合成方法将说明如下。根据实施例2的高阶合成方法可通过操作图5所示的实施例2的高阶合成装置来执行。因此,下面将根据高阶合成装置的操作介绍高阶合成方法,并在需要时参考图5。
图6是流程图,其示出根据本发明实施例2的高阶合成方法。图7示出用于实施例2的示例性行为级电路,其中图7A示出变量分离之前的状态,而图7B示出变量分离之后的状态。
图8指示出在变量分离已执行的情形和变量分离没有执行的情形中的频率之和。图8A示出变量分离已执行的情形的变量引用数目和位宽,图8B示出变量分离已执行的情形的可选择存储器的位宽和频率和。图8C示出变量分离没有执行的情形的可选择存储器的位宽和频率和。
如图6所示,首先,被分离单元21指定多个变量中同一区段中描述的变量,所述多个变量包括在行为级电路11中描述的阵列变量或结构变量(步骤S101)。
更具体地,在行为级电路11如图7A所示的情形中,变量分离单元21指定包括在结构变量aaa中的多个成员变量(a.m1,a.m2,a.m3,a.m4)中在同一区段中描述的变量。
在实施例2中,重复过程规定的区段被认为是同一区段,且根据变量是否描述于一个for语句中来判断该变量是否在同一区段中描述。因此,a.m1和a.m3被判断为描述于同一区段,且a.m2和a.m4被判断为描述于同一区段。
然后,变量分离单元21分离描述于行为级电路11中的阵列变量或结构变量,并生成由包括在分离结果中的变量组成的新的变量(步骤S102)。而且,变量分离单元21产生修改的行为级电路22,其中新的变量被描述(参见图7B)。
在实施例2中,变量分离单元21分离结构变量并产生由包括在分离结果中的成员变量组成新的结构变量。而且,变量分离单元21通过存取分布方法分离变量,所以组成新变量的各个成员变量不在同一区段中描述。
更具体地,如图7B所示,变量分离单元21分离结构变量aaa并产生由不在同一区段中描述的a.m1和a.m2组成的结构变量aaa1,和由不在同一区段中描述的a.m3和a.m4组成的结构变量aaa2。
然后,引用数目计算单元1读取修改的行为级电路22。接着,引用数目计算单元1指定所有被指定分配至存储器的变量,并为各个变量计算引用数目(步骤S11)。
除了读取修改的行为级电路22,步骤S11的执行类似于实施例1的步骤S1。而且,如图8A中表的第二列和第三列所示,计算结构变量aaa1的成员变量a1.m1和a1.m2的引用数目和结构变量aaa2的成员变量a2.m3和a2.m4的引用数目,也计算阵列变量a1,a2和b的引用数目。
其后,位宽提取单元2读取修改的行为级电路22并提取在步骤S11中已计算出其引用数目的变量的位宽(步骤S12),如图8A的表中第四列所示。除了位宽提取单元2读取修改的行为级电路22,步骤S12的执行类似于实施例1的步骤S2。
而且,位宽提取单元2选择存储器作为可选择存储器,并产生指定可选择存储器的可选择存储器列表(步骤S13)。而且,位宽提取单元2输出可选择存储器列表至存储器信息数据库13。
在实施例2中,位宽提取单元2选择存储器M11(8位)和存储器M12(16位)作为分配阵列变量a1的存储器,选择存储器M13(8位)和存储器M14(16位)作为分配阵列变量a2的存储器,并选择存储器M15(32位)作为分配阵列变量b的存储器。
而且,位宽提取单元2产生并输出可选择存储器列表以便指定存储器M11,M13和M15的组合作为可选择存储器A,指定存储器M11,M14和M15的组合作为可选择存储器B,指定存储器M12,M13和M15的组合作为可选择存储器C,指定存储器M12,M14和M15的组合作为可选择存储器D。
其后,类似于实施例1的步骤S4,存储器选择单元3访问示于图4中的周期表并计算图8B中第四列所示的存储器存取频率之和(步骤S14)。
注意,还是在实施例2中,阵列变量a1被分配至其中的存储器,阵列变量a2被分配至其中的存储器和阵列变量b被分配至其中的存储器是分离的存储器。因此各个阵列变量的读取和写入可在图7B中所示的“for”语句中同时执行。因此,阵列变量的最大的频率和被填入图8C所示的存储器存取的“总频率”字段。
然后,类似于实施例1的步骤S5,存储器选择单元3作出关于是否已经为所有可选择存储器计算存储器存取频率的判断。
如果没有为所有可选择存储器完成存储器存取频率和的计算,存储器选择单元3再次执行步骤S14。另一个方面,如果已经为所有可选择存储器完成存储器存取频率和的计算,那么存储器选择单元3执行步骤S16。
在步骤S16,类似于实施例1中的步骤S6,存储器选择单元3比较可选择存储器A到D的频率和,并选择最小化存储器存取频率和的可选择存储器作为分配目标。
此后,类似于实施例1,通过时序安排单元4的时序安排(步骤S17),通过资源分配单元5的资源分配等被执行,由此,产生逻辑电路(步骤S18)。产生的逻辑电路被输出至外部。
然后检查步骤S101和步骤S102没有执行的情形,其意味着变量分离没有执行。在这种情形中,为阵列变量a(参见图7A)和阵列变量b选择可选择存储器A’和B’。这种情形中存储器存取频率示于图8C中。
如同可从图8B和图8C中所看到的那样,变量没有分离的情形要求至少70个周期,然而,在变量分离的情形中可降低频率至40个周期。以这种方式,根据实施例2,结构变量可分离,且同一区段所描述的成员变量的每一个都被分配至不同的存储器,因此相对实施例1频率可进一步降低。
虽然,如上所述,实施例2的变量分离单元21通过存取分布方法分离变量,变量也可通过存取集中方法分离,通过变量集中方法,例如变量被分离成包括a.m1和a.m3的结构变量和包括a.m2和a.m4的结构变量。
在这种情形中,a.m1和a.m3被分配至同一存储器,a.m2和a.m4也被分配至同一存储器,因此,增加了每个存储器都不被使用的时间段。所以,在该时间段存储器可以暂停,从而使得LSI的功率消耗降低。
虽然实施例2中的同一区段被指定为用for语句描述的区段,该同一区段不局限于此。例如,行为级电路11中或修改的行为级电路22中的基本模块可被定义为所述同一区段。
或者,时序安排单元4可执行与步骤S17中的时序安排不同的尝试性时序安排,且可从该尝试性时序安排的结果判断为在同一周期存取的多个成员变量可被定义为在同一区段描述的变量。
下面介绍一个实施例,其中时序安排单元4执行尝试性时序安排。即使在用于尝试性时序安排的实施例中,高阶合成装置具有类似于图5中的结构。然而,从变量分离单元21(参见图5)和时序安排单元4(参见图5)的操作看,该装置不同图5中所示的高阶合成装置。因此,执行高阶合成方法的步骤也和图6中所示的不同。
现参考图9,实施例2的执行尝试性时序安排的高阶合成方法将介绍如下。图9是实施例2的执行尝试性时序安排的高阶合成方法的流程图。下面的介绍中在需要时也会参考图5。
如图9所示,首先,时序安排单元4执行尝试性时序安排(步骤S111)。更具体地,时序安排单元4将行为级电路11中所描述的所有变量中的每一个分配至不同的存储器,以执行行为级电路11的执行周期的时序安排。
然后,变量分离单元21指定在同一区段描述的变量(步骤S112)。更具体地,首先,基于步骤S111的尝试性时序安排结果,变量分离单元21指定存取阵列变量或结构变量的执行周期。而且,变量分离单元21指定在执行周期的预定频率范围内存取的变量,由此作出这些变量是否在同一区段被描述的判断。
例如,在执行周期的频率范围被设为3的情形中,如果图7A中所示的“a[i].m1”的执行周期是周期1,而“a[i].m3”的执行周期是周期3,那么存取可在频率范围3内执行。结果,变量被判断为在同一区段被描述。
然后,基于步骤S112的结果,变量分离单元21分离变量(步骤S113)。此后,类似于图6中的例子,执行步骤S11到步骤S18。在该实施例中,描述于同一区段的变量可被分配至不同存储器,因此和实施例1相比,频率进一步被降低。
实施例3现参考图10至20,根据本发明实施例3的高阶合成装置和高阶合成方法将说明如下。
根据实施例3的高阶合成装置和高阶合成方法不仅能够实现变量分离,而且能够实现包括在同一阵列变量或结构变量内的多个变量(成员变量和阵列变量)的整合(integration),以生成新变量(变量整合)。而且,虽然描述于行为级电路中的结构变量和实施例2中的成员变量是分离的,实施例3使描述于行为级电路中的阵列变量能够和阵列元素分离。
图10是方框图,其示意地示出根据本发明实施例3的高阶合成装置的示例性结构。图11示出用于实施例3中的示例性行为级电路,其中图11A示出在变量整合之前的状态,图11B示出变量整合之后的状态。
如图10所示,高阶合成装置30包括变量整合装置31,其与示于图5的实施例2中的高阶合成装置不同。高阶合成装置30的其余结构与图5中的实施例2中的高阶合成装置相似。变量整合单元31整合行为级电路11中描述的包括在多个阵列变量或结构变量中的多个变量,以生成新的变量。更具体地,变量整合单元31整合行为级电路11中描述的包括在同一阵列变量中的多个阵列元素中某些元素以生成新的变量。
例如,在图11A所示的行为级电路11中,阵列变量a的阵列元素a[i]和a[i+1]描述于同一for语句,因此这些成员可在同一时间存取。因此,如图11B所示,变量整合单元31整合a[i]和a[i+1]以生成新的变量aaa。
当通过操作图10中高阶合成装置30执行高阶合成方法时,变量整合是通过变量整合单元31而非图6中所示的实施例2的步骤S102执行的。在这种情形中,引用数目计算单元1和位宽提取单元2读取经变量整合之后的修改的行为级电路32(参见图11B)。其它步骤的执行与实施例2的高阶合成方法相似。
图12示出变量整合已执行的情形和变量整合未执行的情形中,变量的位宽和引用数目并示出可选择存储器的位宽和频率和。图12A示出变量整合没有执行的情形,图12B示出变量整合已执行的情形。
在变量整合单元31(参见图10)执行关于行为级电路11(参见图11A)的变量整合情形中,在修改的行为级电路32(参见图11B)中描述的阵列变量a分配给16位存储器(可选择存储器A)。在这种情形中,如图12B所示,存储器存取频率和变为10个周期。
另一个方面,如图12A所示,在没有关于行为级电路11(参见图11A)执行变量整合,且可选择存储器A’被分配的情形中,存储器存取频率和总共变为的20个周期,包括10个周期的a[i]和10个周期的a[i+1]。虽然在图12A的例子中8位存储器被分配给阵列变量a,即使当16位存储器而不是8位存储器被分配,存储器存取频率将为12个周期(参见图4)。
以这种方式,类似于实施例2,和实施例1相比,实施例3也使得频率的进一步减少。
而且,图10中所示的实施例3的高阶合成装置30可具有变量分离单元而非变量整合单元31,该变量分离单元能将图11A所示的行为级电路11中描述的阵列变量a的阵列元素分离。
图13示出阵列变量的阵列元素分离后,行为级电路,变量的位宽和引用数目及可选择存储器的位宽及频率和,其中图13A示出图11A中所示的行为级电路经变量分离后的状态,图13B示出当变量分离执行后,变量的位宽和引用数目,及可选择存储器的位宽和频率和。
如图13所示,当示于图11A的阵列变量a经过阵列元素分离以产生阵列变量a1和a2,每个产生的阵列变量的位宽为8位。而且,每个所述阵列变量可被分配至8位存储器M21或M22(可选择存储器A),且这些存储器可独立存取,因此存储器存取频率和为10个周期。
可从图13中看到,类似于变量整合的情形,这个实施例也可降低频率,并且和实施例1相比较,可进一步降低频率。
下面说明根据实施例3的另一个示例性高阶合成装置和高阶合成方法。图14是方框图,其示意地示出根据本发明实施例3的高阶合成装置的结构。图15示出用在实施例3中的示例性行为级电路,其中图15A示出在变量分离和变量整合之前的状态,图15B示出在变量分离和变量整合之后的状态。
如图14所示,高阶合成装置33具有变量分离/整合单元34,这是与图5所示的实施例2中的高阶合成装置20不同之处。高阶合成装置33余下的结构和图5所示的高阶合成装置20类似。变量分离/整合单元34首先整合包括在在行为级电路11中描述的多个阵列变量或结构变量中的多个变量,以生成新的阵列变量或结构变量。另外,变量分离/整合单元34分离这些新阵列变量或结构变量,以产生由包括在分离结果中的多个变量组成的新变量。也就是,分离/联合单元34使得能够实现变量分离和变量整合。
在实施例3中,变量分离/联合单元34整合包括在二阶阵列变量a中(参见图15A)的多个阵列元素,以生成新的阵列变量(未示出),并分离这个新阵列变量以生成由包括在分离结果中的阵列元素组成(参见图15B)的新的阵列变量a1和a2。
当通过操作示于图14的高阶合成装置33而执行高阶合成方法时,变量整合和变量分离可通过变量分离/联合单元34而不是示于图6中的实施例2的步骤S102执行。在这个情形中,引用数目计算单元1和位宽提取单元2读取经过变量分离和变量整合的修改的行为级电路35(参见图15B)。其它步骤的执行类似于实施例2的高阶合成方法。
根据这样的使得能够实现变量分离和变量整合的实施例,在示于图15A的行为级电路的情形中,其中描述了存取这个阵列变量的顺序不同的二阶或更高阶阵列变量和多个重复循环(repetition loops),执行于各个重复循环的重复的处理可被略去,因此降低了频率。
图16示出变量整合和变量分离已执行的情形及变量整合和变量分离未执行的情形中,变量的位宽和引用数目,并示出可选择存储器的位宽和频率和。图16A示出变量整合和变量分离没有执行的情形,图16B示出变量整合和变量分离已执行的情形。
如图16B所示,在变量分离/联合单元34(参见图14)执行关于行为级电路11的变量整合和变量分离(参见图14和图15)情况下,描述于修改的行为级电路35的阵列变量a1和a2可分配给16位存储器M31或M32(可选择存储器A)(参见图15B)。这些存储器可独立地存取,因此,在这种情形中,存储器的存取频率和变为200个周期。
另一个方面,如图16A所示,在没有对行为级电路11(参见图11A)执行变量分离和变量整合的情形中,阵列变量a被分配至8位存储器(可选择存储器A’),因此,存储器的存取频率和变为800个周期。虽然在图16A的例子中,8位存储器被分配给阵列变量a,即使分配16位存储器而不是这个存储器,存储器存取频率将是800个周期(参见图4)。
以这种方式,类似于实施例2,与实施例1相比,该实施例使得进一步降低频率。
下面继续说明另一个根据实施例3的示例性高阶合成装置和高阶合成方法。图17是方框图,其示意地示出根据本发明实施例3的高阶合成装置的结构。图18示出用于实施例3的示例性行为级电路,其中图18A示出变量分离之前的状态,图18B示出变量分离之后的状态。
如图17所示,高阶合成装置36包括依赖性分析单元37和变量分离单元38,这是与示于图5中实施例2的高阶合成装置20不同之处。该高阶合成装置36的其余结构类似于图5所示的高阶合成装置20。
依赖性分析单元37执行关于在行为级电路11中描述的阵列变量或结构变量的依赖性分析,并判断这些变量中的任意变量之间是否具有依赖性。如果有依赖性,依赖性分析单元37计算具有依赖性的变量之间的距离矢量。而且,依赖性分析单元37输出用于指示依赖性的有无的信息和计算的距离矢量至变量依赖性信息数据库15。
变量分离单元38从变量依赖性信息数据库15取信息,并确认依赖性的有无。如果有依赖性,变量分离单元38基于计算的距离矢量,指定构成新变量的变量,并执行变量分离。在这方面变量分离单元38和图5所示的变量分离单元21不同。如果在变量之间没有依赖性,通过指定在同一区段描述的变量,变量分离单元38可以和图5所示的变量分离单元21相同的方式执行变量分离。
更具体地,在示于图18A的行为级电路11的情形中,依赖性分析单元37判断在阵列元素a[i]和a[i+1]之间有依赖性。这个情形中,变量分离单元38执行关于阵列变量a的变量分离。在此,距离矢量是1,变量分离单元38将相间隔的元素分离为如图18B所示的彼此不同的变量。因此,产生新阵列变量a1和a2。
注意,按照Nakata在Asakura shoten(1999)出版的“Structure andOptimization of Compiler”中的解释,可通过由阵列元素的指标变量确定丢番图(Diophantine)方程,并通过解该方程而执行阵列元素的依赖性分析。
下面说明示于图17中的高阶合成装置36的操作。实施例3的高阶合成方法也可通过操作高阶合成装置36而执行。图19是流程图,其示出图17所示的高阶合成装置的操作。下面的说明在需要时就参考图17。
如图19所示,首先,依赖性分析单元37执行关于行为级电路11中所描述的阵列变量或结构变量的依赖性分析(步骤S121),并输出依赖性分析的结果至变量依赖性信息数据库15。
其后,变量分离单元38确认依赖性的有无(步骤S122)。如果没有依赖性,类似于图6所示的步骤S101,变量分离单元38指定描述于同一区段的变量(步骤S124),此后,类似于图6所示的步骤S102变量分离单元38执行变量分离(步骤S125)。
另一个方面,如果有依赖性,基于所计算的距离矢量,变量分离单元38指定构成新变量(阵列变量)的变量(步骤S123),并执行变量分离(步骤S125)。在此,在步骤S125,产生修改的行为级电路39,在该修改的行为级电路39上变量分离单元38执行变量分离。
此后,基于修改的行为级电路39,计算引用数目(步骤S11),且提取位宽(步骤S12)。而且,类似于图6中的例子,执行步骤S13到步骤S18。
图20示出在变量分离已执行的情形和变量分离未执行的情形中,变量的位宽和引用数目,并示出可选择存储器的位宽和频率和。图20A示出变量分离未执行的情形,而图20B示出变量分离已执行的情形。
如图20B所示,在变量分离单元38(参见图17)执行关于行为级电路11(参见图18A)的变量分离的情形中,可以为在修改的行为级电路39(参见图18B)中描述的每个阵列变量a1和a2分配8位存储器。在这种情形中,存储器存取频率和变为10个周期。
另一个方面,如图20A所示,在没有对行为级电路11(参见图11A)执行变量分离的情形中,只有一个8位存储器可被分配给阵列a,因此存储器存取频率和变为20个周期。
以这种方式,类似于实施例2,与实施例1相比,该实施例也使得频率进一步降低。
此外,根据实施例3,阵列变量可与阵列元素分离或联合,因此可增加用于分配存储器的变化。作为结果,可获得一种可实现降低频率的用于分配存储器的方法。
实施例4现参考图21到23,根据本发明实施例4的高阶合成装置和高阶合成方法将说明如下。首先,将参考图21说明根据实施例4的高阶合成装置的结构。图21是方框图,其示意地示出根据本发明实施例4的高阶合成装置的结构。
如图21所示,根据实施例4的高阶合成装置包括变量组设定单元41,这是与图1所示的实施例1的高阶合成装置10不同之处。而且,高阶合成装置40的位宽提取单元42在功能上不同于示于图1的高阶合成装置10的位宽提取单元2。至于其余方面,高阶合成装置40类似于图1中的高阶合成装置10配置。
变量组设定单元41设定一个或多个由描述于行为级电路11中的变量组成的变量组。为了这个目的,位宽提取单元42提取变量组的位宽和不构成变量组的变量的位宽。而且,位宽提取单元42选择多个存储器(可选择存储器)作为变量组和不构成变量组的变量的分配目标。
下面介绍通过变量组设定单元41执行的变量组的设定。在实施例4中,有两种通过变量组设定单元41执行的设定变量组的方法,包括集中分组方法;和分布分组方法。
根据集中分组方法,变量组是由行为级电路11中描述于同一区段的变量构成。根据分布分组方法,变量组是由行为级电路11中不在同一区段描述的变量构成。根据分布分组方法,多个描述于同一区段的变量每个都构成不同变量组。
例如,在由集中分组方法设定多个组,并且每个变量组分配不同存储器的情形中,在一个恒定的时间段内对存储器的存取集中于一个存储器,因此使得其它不被操作存储器在该时间段暂停。
另一个方面,当通过分布分组方法设定多个组时,可对不同存储器同时进行存取,因此降低存储器的存取频率。
以这种方式,根据变量分组方法获得不同效果,且变量分组设定单元41可按照作为最终产品的LSIs所要求的效果指定分组方法。
而且,作为设定变量组的方法,集中分组方法包括这样一种方法,其中在多个变量组中构成每个变量组的变量的数目是一致的,还包括在多个变量组中构成每个变量组的变量的数目不一致的方法。
在采用前一个设定方法的情形中,因为存储器使用率对各个变量组一致,可使用同一尺寸的存储器。因此,可获得有利于LSI布局的优势。
另一个方面,在采用后一个设定方法的情形中,因为变量的数目在各个变量组中不同,具有短引用周期的变量组可被设定。因此,在恒定时间段内存取的存储器的数目可被降低,所以可以使增加使存储器暂停的的时间段。
而且,在实施例4中,可为变量组设定单元41允许设定的变量组数目设定上限。当为变量组数目设定了上限时,可避免要分配的存储器数目增加的情形,而这种情形会增加会增加LSI的开销面积(anarea of an overhead)。
现参考图22到23,根据实施例4的高阶合成方法将说明如下。可通过操作示于图21的根据实施例4的高阶合成装置40执行实施例4的高阶合成方法。因此,下面根据高阶合成装置的操作来说明高阶合成方法,同时在需要时参考图21。
图22是流程图,其示出根据本发明实施例4的高阶合成方法。图23示出用于实施例4的行为级电路,变量的位宽和存储器存取频率,其中图23A示出示例性行为级电路,图23B示出在图23A所示的行为级电路中描述的变量的引用数目和位宽,图23C示出每个可选择存储器的存取频率和。
如图22所示,首先,引用数目计算单元1读取行为级电路11以便计算描述于行为级电路11的每个变量的引用数目(步骤S21)。注意,以类似于图2中的步骤S1的方式执行步骤S21。
更具体地,在示于图23A的行为级电路11的情形中,计算出关于阵列变量a和b及成员变量a.m1,a.m2,a.m3,a.m4,b.n1和b.n2的引用数目。
然后,变量组设定单元41判断在步骤S21规定的各个变量是否描述于同一区段,并基于该判断结果,设定变量组(步骤S22)。在实施例4中,类似于实施例2,关于变量是否被描述于同一区段的判断可根据变量是否在一个for语句被描述而做出。
在图22的例子中,变量组设定单元41采用分布分组方法,其中没有在同一区段中描述的变量构成变量组。在示于图23A的行为级电路中,阵列变量a和b没有在同一for语句中描述。也就是,这些变量没有描述于同一区段。因为这个原因,在图22的例子中,变量组设定单元41设定由阵列变量a和b组成的组g1,如图23B所示。
然后,位宽提取单元42提取关于变量组和不构成变量组的变量的位宽(步骤S23),而且产生可选择存储器列表,其中选择了作为可选择存储器的存储器(步骤S24)。而且,位宽提取单元42输出可选择存储器列表至存储器信息数据库13。
更具体地,位宽提取单元42,如图23B所示,提取变量组g1以及不构成变量组的成员变量a.m1,a.m2,a.m3,a.m4,b.n1和b.n2的位宽。
在图23的例子中,通过从包括在变量组的变量中指定具有最大位宽的变量,并提取该指定的变量的位宽而执行变量组的位宽。例如,在图23A的例子中,因为阵列变量a和b都是32位,变量组g1的位宽变为32位。而且,即使当n1和n2是chr型的,且阵列变量b的位宽是16位的,如果阵列变量a具有32位位宽,则变量组g1的位宽就是32位的。
在图22的例子中,变量组和不构成变量组的成员变量被分配至一个存储器。由于这一原因,如图23C所示,8位存储器M41,16位存储器M42,和32位存储器M43被选择作为可选择存储器。
注意,虽然在图23A所示的行为级电路11中只设定一个变量组,如果多个变量组在实施例4中出现,分别为每个变量组提取位宽。而且,当有多个变量组时,考虑到多个变量组被分配至一个存储器的情形,位宽提取单元42产生可选择存储器列表。
然后,基于在步骤S21计算的引用数目和在步骤S23提取的位宽,存储器选择单元3计算如图23C所示的每个可选择存储器的存取频率之和(步骤S25)。在此,与图2所示的步骤S4类似地执行步骤S25。
然后,类似于示于图2的步骤S5,存储器选择单元3判断是否已为所有可选择存储器计算了存取频率和(步骤S26)。
如果没有为所有可选择存储器完成频率和计算,存储器选择单元3再次执行步骤S25。另一个方面,如果为所有可选择存储器完成频率和计算,那么存储器选择单元3执行步骤S27。
在步骤S27,类似于示于图2中的步骤S6,存储器选择单元3比较关于各个可选择存储器的存取频率和。在实施例4中,存储器选择单元3选择最小化存储器存取频率和的32位存储器M43作为分配的目标。
此后,类似于图2所示的步骤S7和S8,通过时序安排单元4执行时序安排(步骤S28),通过资源分配单元5执行资源分配等,由此,生成逻辑电路(步骤S29)。生成的逻辑电路被输出到外部。
如上所述,类似于实施例1,根据行为级电路中描述的操作实施例4也使得可以选择具有最优位宽的存储器,因此最优化存储器存取频率。
而且,与实施例1不同,因为在实施例4中,作为分配至存储器的目标的多个变量被分配至一个存储器,可以节省当要用多个存储器时所产生的开销面积。因此,用在LSI中的存储器的面积将被减小。
虽然实施例4中的同一区段被指定作为for语句所明说的区段,同一区段不局限于此。例如,类似于实施例2,行为级电路11中的基本模块被定义为同一区段。
而且,时序安排单元4可执行与步骤S28中的时序安排不同的尝试性时序安排。在这种情形中,由尝试性时序安排的结果判断为在同一周期被存取的多个变量可被定义为在同一区段被描述。
下面说明时序安排单元4执行尝试性时序安排的一个实施例。即使在尝试性时序安排实施例中,高阶合成装置具有类似于图21中的结构。然而,从变量组设定单元41(参见图21)和时序安排单元4(参见图5)的操作看,该装置不同于图21中所示的高阶合成装置。因此,用于执行高阶合成方法的步骤也不同于图22中所示的方法。
现参考图24,实施例4的高阶合成方法将被说明如下,其中尝试性时序安排被执行。图24是流程图,其示出实施例4的执行尝试性时序安排的高阶合成方法。下面的说明在需要时可参考图21。
如图24所示,首先时序安排单元4执行类似于图9所示的步骤S111的尝试性时序安排(步骤S131)。更具体地,时序安排单元4将行为级电路11中描述的所有变量中的每一个分配至不同存储器,以便执行行为级电路11中执行周期的时序安排。
然后,引用数目计算单元1执行步骤S21(参见图22)。而且,变量组设定单元41基于步骤S131中时序安排的结果指定描述于同一区段的变量,并设定变量组(步骤S132)。
更具体地,变量组设定单元41指定在预定的执行周期频率范围内存取的变量,因此做出变量是否在同一区段中描述的判断。类似于图9所示的步骤S112,执行关于所述变量是否在同一区段的判断。
然后,类似于图22中的例子,步骤S23到步骤S29被执行。在这样的实施例中,变量组可被设定为包括没有在同一区段中描述的变量,且多个作为目标被分配至存储器的变量可被分配至一个存储器。
实施例5
现参考图25到图30,根据本发明实施例5的高阶合成装置和高阶合成方法将被说明如下。首先,参考图25说明根据实施例5的高阶合成装置。图25是方框图,其示意地示出本发明实施例5的高阶合成装置的结构。
如图25所示,根据实施例5的高阶合成装置50包括依赖性分析单元51和执行顺序交换单元53,这是与图1所示的实施例1中高阶合成装置10不同之处。而且,从功能上看,高阶合成装置50的存储器选择单元52和时序安排单元54不同于图1所示的高阶合成装置10的存储器选择单元3和时序安排单元4。至于其余的方面,高阶合成装置50配置得与图1中所示的高阶合成装置10类似。
依赖性分析单元51具有不同于图17所示的实施例3中依赖性分析单元37的功能。依赖性分析单元51提取行为级电路11中所述的重复处理,分析包括在提取的重复处理中的变量的依赖性,并输出分析结果至变量依赖性信息数据库55。执行顺序交换单元53根据通过依赖性分析单元51作出的依赖性分析结果,交换重复处理中的执行顺序,从而在同一时间被引用的变量可在同一执行周期执行。
不同于示于图1的实施例1的时序安排单元4的时序安排单元54,在将被分配变量的存储器被确定之前执行时序安排。在实施例5中,在存储器选择单元52计算存储器存取频率之前,时序安排单元54分配变量至所选择的作为可选择存储器的存储器中,以便在行为级电路11中进行执行周期的时序安排。因此,可以获得存储器被存取的周期和操作被执行的周期之间的关系。
而且,除了类似于图1所示实施例1的存储器选择单元3的功能外,存储器选择单元52具有如下功能,也就是,基于时序安排单元54进行的时序安排结果,存储器选择单元52做出是否存在一个可以和存储器存取并行执行的操作处理的判断。如果有这样的操作处理,存储器选择单元52校正计算的存储器存取频率和。
在实施例5中,存储器选择单元52由时序安排结果判断存储器存取是否是在前的读取周期(处理),其中写入在读取之后,并判断前面的读取周期是否能与其它操作处理并行执行。而且,作为判断的结果,如果有前面的读取周期,并且该前面的读取周期可以和其它操作处理并行执行,存储器选择单元52校正总的频率以使存储器存取的在前的读取周期的频率不包括在总的频率内。
现参考图26到30,根据实施例5的高阶合成方法将说明如下。可通过操作示于图25的根据实施例5的高阶合成装置50执行实施例5的高阶合成方法。因此,下面基于高阶合成装置的操作描述高阶合成方法,同时如果需要就参考图25。
图26是流程图,其示出根据本发明实施例5的高阶合成方法。图27示出用在实施例5中的行为级电路,变量的位宽和存储器存取频率,其中图27A示出示例性行为级电路,图27B示出图27A所示的行为级电路中描述的变量的引用数目和位宽,图27C示出每个可选择存储器的存取频率和。
如图26所示,首先,引用数目计算单元1读取行为级电路11,以便为在行为级电路11中描述的每个变量计算引用数目(步骤S31)。注意与图2所示的步骤S1类似地执行步骤S31。
更具体地,在示于图27A的行为级电路的情形中,引用数目计算单元1计算关于阵列变量a到c和成员变量a.m1,a.m2,b.m1,b.m2,c.m1和c.m2的引用数目,如图27B所示。注意图27B只示出阵列变量a和成员变量a.m1和a.m2的引用数目。
然后,依赖性分析单元51分析描述于行为级电路11的包括在for循环中的变量的依赖性(步骤S32)。更具体地,依赖性分析是关于包括在图27A所示的第一个到第四个for语句的变量执行的。而且,依赖性分析单元5 1输出分析结果至变量依赖性信息数据库55。
然后,执行顺序交换单元53从变量依赖性信息数据库55读取依赖性分析单元51分析结果,并基于该结果判断执行顺序是否可交换,也就是,在同一时间被引用的多个变量是否被包括在所述for语句中(步骤S33)。
作为判断结果,如果执行顺序不能交换,类似于图2所示的实施例1中的步骤S2(参见图27B),位宽提取单元2提取各个变量的位宽(步骤S35)。
另一方面,如果执行顺序可以交换,执行顺序交换单元53交换执行顺序(步骤S34),然后,位宽提取单元2执行步骤S35。
在实施例5中,执行顺序交换单元53做出关于示于图27A的行为级电路11中第三个for语句执行顺序可交换的判断,并交换关于第三个for语句的执行顺序。下面参考图28说明这一操作。
图28示出示于图27A的行为级电路中的第三个for语句的执行顺序,其中图28A示出在执行顺序交换之前的状态,图28B示出执行顺序交换之后的状态。在图28中,第三个for语句由源代码表示。
在实施例5中,执行顺序交换单元53从图28A所示的行为级电路提取在写入处理之前所需的读取处理(在前读取处理),并交换在前读取处理的顺序,如图28B所示。
如可从图28A中可看到的一样,在交换之前,阵列变量在一个for循环中存取数目是三次,且所需的频率和变为27个循环。相反,如可从图28B中看到的那样,在交换之后,阵列变量在一个for循环中存取数目是两次,因此,可减少一次存取。此外,所需的频率和变为19次(循环内18个周期,循环外一个周期),所以总的可以减少8个周期。
当步骤S35被执行时,位宽提取单元2选择阵列变量a,b和c将要分配至其中的存储器。在实施例5中,8位存储器和16位存储器被选择作为各个阵列变量的可选择存储器。注意,图27C示出仅用于阵列变量a的可选择存储器M51(8位)和M52(16位)。
然后,时序安排单元54执行行为级电路11中的执行周期的时序安排(步骤S37)。在此,当为被选做可选存储器的存储器分配变量时,执行所述时序安排,并为每个可选择存储器执行时序安排。
图29示出图27A所示的行为级电路的时序安排结果。图29示出当可选择存储器是16位时时序安排的结果。而且,图29示出图27A所示的行为级电路中的第二个for语句和第三个for语句。
在图29中,实线所表示的箭头示出数据流和控制流,虚线所表示的箭头示出在写入(W)处理之前的读取(R)处理(在前读取处理),当存储器的位宽大于变量的位宽时,该写入处理是必须的。
而且,在图29中,参考数字62a和62b表示当存储器位宽大于变量的位宽时的写入(W)处理,61a到61c表示当存储器位宽大于变量的位宽时在前的读取处理。三角标记表示for循环的重复判断。参考数字63表示“*”的操作处理,64表示“+”的操作处理,65表示读取处理。
然后,存储器选择单元52计算每个可选择存储器的存取频率(步骤S38)。在实施例5中,与其它实施例不同,示于图30的存储器存取周期表被用于频率的计算。图30示出用在实施例5中的存储器存取周期表。
而且,在实施例5中,存储器选择单元52做出关于存储器存取是否是在前的读取处理的判断,如果存储器存取是在前的读取处理,做出关于该处理是否能与其它操作处理并行执行的判断。然后,基于判断结果,存储器选择单元52校正计算的频率的计算结果。而且,在执行顺序于步骤S34中交换的情形中,存储器选择单元52校正频率的计算结果。下面参考图27B介绍这一过程。
图27C中的“频率1(第三列)”示出在不考虑步骤S37中的时序安排和步骤S34中执行顺序的交换的情况下计算得到的频率。也就是,通过引用示于图27B的引用数目和示于图30的存储器存取周期表,示出类似于示于图2的实施例1中的步骤S4计算的频率。
更具体地,在可选择存储器是M51的情形中,m1(R)+m1(W)+m2(W)+a(R)=9+10+9+(10×2)=48。在可选择存储器是M52的情形中,m1(R)+m1(W)+m2(W)+a(R)=9+(10×2)+(9×2)+10×2=57。
图27C中的“频率2(第四列)”示出当存储器选择单元52由时序安排结果判断存在在前的读取周期,且其可与其它操作处理并行执行时的频率。
如图29所示,在16位可选择存储器M52的情形中,示于图29的操作处理“+”64和在前的读取处理61a在同一个周期中,因此它们可彼此并行执行。因此,计算被执行使得对变量a.m1的在前读取处理61a的频率不包括在总频率中。
更具体地,在可选择存储器是M52的情形中,m1(R)+m1(W)+m2(W)+a(R)=9+10+(9×2)+10=47。在可选择存储器是M51的情形中,不执行在前的读取处理,且因此频率变成等于“频率1(第三列)”。
图27C中的“频率3(第五列)”示出考虑了频率2和步骤S34中执行顺序交换的情形的频率。
可从图29中所示的第三个for语句看到,作为步骤S34中执行顺序交换的结果,读取处理65和在前的读取处理61c在同一个周期彼此并行处理。因此,计算被执行使得在前读取处理61c的频率不包括在总频率中。这里,因为在前读取处理61b在循环外执行,在前读取处理61b的频率(1个周期)应被加上。
更具体地,在可选择存储器是M52的情形,m1(R)+m1(W)+m2(W)+a(R)=9+10+(9+1)+10=39。在可选择存储器是M51的情形,在前读取处理不执行,因此频率应变成等于“频率1(第三列)”。
然后,类似于示于图2中的步骤S5,存储器选择单元52做出关于是否已经为所有可选择存储器计算出存储器存取频率和的判断(步骤S39)。
如果还没有为所有可选择存储器计算出存储器存取频率和,存储器选择单元52再次执行步骤S38。另一个方面,如果已经为所有可选择存储器完成频率和计算,那么存储器选择单元52执行步骤S40。
在步骤S40,类似于示于图2的步骤S6,存储器选择单元52比较各个可选择存储器的存取频率和。在实施例5中,存储器选择单元52选择最小化存储器存取频率和的16位的存储器M52作为分配目标。
最后,类似于示于图2的步骤S8,执行通过资源分配单元5等进行的资源的分配,由此生成逻辑电路(步骤S41)。生成的逻辑电路被输出到外部。
如上所述,在实施例5中,类似于实施例1,可根据行为级电路中描述的操作选择具有最优位宽的存储器。因此,存储器存取频率可被最优化。
而且,根据实施例5,依赖性分析和时序安排使得可以进行可与存储器存取并行执行的对操作处理是否存在的分析,并且可以考虑对存储器存取的部分周期被隐藏的情况。因此,和实施例1比较,可分配具有进一步优化位宽的存储器。
实施例6现参考图1到33,根据本发明实施例6的高阶合成装置和高阶合成方法将说明如下。首先,将参考图31说明根据实施例6的高阶合成装置的结构。图31是方框图,示意地示出根据本发明实施例6的高阶合成装置的结构。
如图31所示,根据实施例6的高阶合成装置60包括存储器存取分析单元44,这是与示于图21的实施例4的高阶合成装置40不同之处。而且,从功能上看,高阶合成装置60的时序安排单元43与图21所示的高阶合成装置40的时序安排单元4不同。至于其余的方面,高阶合成装置60配置为类似于示于图21的实施例4的高阶合成装置40。
与时序安排单元4不同(参见图21),时序安排单元43在位宽提取单元42产生可选择存储器列表之后和存储器选择单元3选择存储器之前执行时序安排,执行时序安排以便变量被分配至所选择的存储器(可选择存储器),并执行行为级电路11中执行周期的时序安排被。为每个可选择存储器执行通过时序安排单元43进行的时序安排。
作为这样的时序安排结果,时序安排单元43获得表示对存储器执行存取的周期和操作被执行的周期之间的关系的信息,且时序安排单元43输出该信息至存储器存取分析单元44。
而且,在存储器选择单元3在可选择存储器中选择作为分配目标的存储器之后,存储器存取分析单元41使显示设备45显示对存储器的存取方式,存取方式是从通过时序安排单元43进行的时序安排获得的。
在实施例6中,存储器存取分析单元44提取以预定频率或更高频率对同一存储器的连续存取出现的情形中的存取方式,并提取没有在同一周期存取的多个存储器出现的情形中的存取方式,并让显示装置45显示存取方式。
而且,输入装置46被连接到存储器存取分析单元44,由此来自使用高阶合成装置60的用户的指令可通过输入装置46输入。
现参考图32到33,根据实施例6的高阶合成方法将被说明如下。可通过操作示于图31中的根据实施例6的高阶合成装置60执行实施例6的高阶合成方法。因此,下面根据高阶合成装置的操作描述高阶合成方法,同时在需要时参考图31。图32是流程图,示出根据本发明实施例6的高阶合成方法。
如图32所示,类似于示于图22中实施例4的例子,首先,按顺序执行下面的程序计算行为级电路11中描述的各个变量的引用数目(步骤S21);设定变量组(步骤S22);提取位宽(步骤S23)和产生可选择存储器列表(步骤S24)。
然后,在实施例6中,与示于图22中的实施例4的例子不同,时序安排单元43执行时序安排(步骤S51)。更具体地,时序安排单元43分配变量至可选择存储器列表中规定的可选择存储器,并执行行为级电路11中的执行周期的时序安排。
然后,类似于示于图22中实施例4的例子,存储器选择单元3计算存储器存取频率(步骤S25)。而且,存储器选择单元3做出关于是否为所有可选择存储器完成时序安排和频率和计算的判断(步骤S52)。
如果没有为所有可选择存储器完成时序安排和频率和计算,步骤S51和步骤S25被再次执行。另一个方面,如果已经为所有可选择存储器完成时序安排和频率和计算,类似于示于图22中实施例4的例子,存储器选择单元3选择作为分配目标的将所述频率和最小化的存储器(步骤S27)。
然后,存储器分析单元44输出存取方式的显示数据至显示装置45,且该显示装置45显示存取方式,该存取方式示出步骤S51中的时序安排结果(步骤S53)。在此,步骤S53中输出的存取方式是在步骤S27中所选择的存储器被分配给所述变量的情形中的存取方式。
更具体地,存储器分析单元44首先提取对同一存储器和多个存储器以预定频率或更高频率的连续存取,该多个存储器不在步骤S51的时序安排结果中的同一周期存取。
结果,如果前者可以被提取,那么存储器存取分析单元44使显示器45显示表示这些连续存取的存取方式(参见图33A)。如果后者可被提取,那么存储器存取分析单元44使显示器装置45显示表示这多个存储器的存取状态的存取方式(参见图33B)。下面参考图33描述存取方式。
图33示出示例性存取方式,其中图33A示出的存取方式显示了以预定频率或更高频率对同一存储器的连续存取,而图33B示出的存取方式显示了没有在同一周期存取的多个存储器的存取状态。
如图33A和33B所示,存取方式具有“时序安排视图(schedulingview)”,示出时序安排结果,而“存储器存取视图(memory accessview)”示出时序安排视图中变量的存储器映射(mapping)。在存储器存取视图中,垂直轴表示执行周期的数目,图中的数字示出被存取的存储器的地址。图33中M61和M62表示分配给变量a的存储器。
在示于图33A和33B的时序安排视图中,每个执行周期被虚线划分,其示出例如W:a[2i]和W:a[2i+1]被安排在分开的执行周期中。而且,图33A和33B示出的存取方式是行为级电路中的存取方式,其中描述了将变量i增加1的重复循环。
当示于图33A中的存取方式在显示装置45显示时,用户可明白对存储器M61执行某个频率或更高频率的连续存取。另一个方面,当示于图33B的存取方式在显示装置45显示时,用户可明白存储器M61和存储器M62不在同一周期存取。因此,用户可判断从当前对存储器的分配获得的存取方式是否符合他/她的意图。
此后,存储器存取分析单元44判断通过输入装置46的表示出存取方式是用户所期望的存取方式的输入是否出现(步骤S54)。如果用户的输入指示出存取方式不是用户所期望的存取方式,该过程再次从步骤S22中的变量组的设定开始。另一个方面,如果用户的输入指示出存取方式是用户所期望的,则产生逻辑电路(步骤S55)以便完成该过程。
如上所述,根据实施例6,用户可从显示的存储器的存取方式确认对存储器的变量分配符合他/她的意图。因此,在不符合他/她的意图的存取方式的情中,该过程可返回至变量组的设定,从而执行更有效的分组(组设定)。
注意,示于图31到33的例子描述了变量组被设定的情形。然而,实施例6不局限于这样的例子,例如,该实施例可应用在如实施例1到3中那样变量被分离或整合的情形。
实施例7现参考图34到37,根据本发明实施例7的高阶合成装置和高阶合成方法将说明如下。首先,参考图34说明根据实施例7的高阶合成装置的结构。图34是方框图,其示意地示出根据本发明实施例7的高阶合成装置。
如图34所示,根据实施例7的高阶合成装置70包括约束判断单元(constraint judgment unit)72,这是与实施例1中高阶合成装置10不同之处。而且,从功能上看,提供于高阶合成装置70中的存储器选择单元71不同于提供于图1中所示的实施例1中高阶合成装置10的存储器选择单元3。至于其余的方面,高阶合成装置70配置为类似于图1所示的高阶合成装置10。
当存储器选择单元71选择将被分配变量的存储器时,约束判断单元72指定多个相应于所选择存储器的存储器单元。在此,在实施例7中,约束判断单元72根据用于LSI设计的程序库(未示出)指定存储器单元。
而且,约束判断单元72做出关于规定的存储器单元的存取时间是否满足预定条件,即是否发生延迟误差。作为判断的结果,如果存在不产生延迟误差的存储器单元,约束判断单元72选择具有最短存取时间的存储器单元。另一个方面,如果所有指定的存储器单元产生延迟误差,约束判断单元72不选择任何存储器。
更具体地,在实施例7中,约束判断单元72首先从用于LSI设计的程序库中获取指定存储器单元的存取时间。然后,从通过时序安排单元4进行的时序安排的结果中,约束判断单元72确定指定存储器单元中除了存储器存取的所述操作的执行时间,并计算一个周期中的延迟时间。例如,如果存储器存取时间是4纳秒,且除了存储器存取的操作的执行时间为7纳秒,则延迟时间为11纳秒。
而且,约束判断单元72比较一个周期中计算的延迟时间和预定的延迟时间(以下称为“延迟约束时间”)。例如,假定延迟约束时间被设定为10纳秒。在计算的延迟时间为如上所述的11纳秒的情形中,该情形产生的延迟误差为1纳秒(=11纳秒-10纳秒)。而且,由此,对存储器存取时间的约束变为3纳秒(=4纳秒-1纳秒)。
另一个方面,如果存储器存取时间比上面的情形中的更短,例如,如果存储器存取时间是3纳秒,延迟时间变为10纳秒(=3纳秒+7纳秒),这在延迟约束时间内,因此该情形满足对延迟的约束。
而且,在存储器选择单元7 1选择存储器之后,如果约束判断单元72不选择任何存储器单元,存储器选择单元71排除所选择的可选择存储器,并从可选择存储器中再次选择存储器。
然后,根据实施例7的高阶合成方法将参考图35到36说明如下。可通过操作图34所示的根据实施例7的高阶合成装置执行实施例7的高阶合成方法。因此,下面根据高阶合成装置的操作说明高阶合成方法,同时在需要时参考图34。
图35是流程图,其示出根据本发明实施例7的高阶合成方法。图36示出用在实施例7中的行为级电路,变量的位宽和存储器存取频率。图36A示出示例性行为级电路,图36B示出关于描述于示于图36A中的行为级电路中的变量的引用数目和位宽,图36C示出每个可选择存储器的存取频率和。
如图35所示,类似于示于图2中实施例1的步骤S1和步骤S2,首先,计算描述于行为级电路11中的各个变量的引用数目(步骤S61);提取位宽(步骤S62);产生可选择存储器列表(步骤S63)。
结果,如图36B所示,每个变量的引用数目和位宽被指定。而且,如图36C所示,8位存储器M71和32位存储器M72被选择作为可选择存储器。
然后,类似于示于图2中的实施例1的步骤S4到S6,每个可选择存储器的存取频率和被计算(步骤S64);确认是否为每个可选择存储器完成所述计算(步骤S65);选择将所述频率最小化的存储器(步骤S66)。
在实施例7中,如可从图36C中看到的那样,当32位存储器M72被选择时,频率和最小,因此选择存储器M72。
此后,类似于示于图2中实施例1的步骤S7,变量被分配给所选择的存储器(存储器M72)以便执行时序安排(S67)。
然后,在实施例1的情形中,生成逻辑电路以便完成该过程。然而,在实施例7中,约束判断单元72指定相应于所选择的存储器(存储器M72)的存储器单元(步骤S68)。
然后,约束判断单元72为每个指定的存储器单元计算延迟时间,并判断是否有其计算的延迟时间在延迟约束时间之内的存储器单元(步骤S69)。
作为判断的结果,如果有其计算的延迟时间在延迟约束时间之内的存储器单元,约束判断单元72选择具有最短的存储器存取时间的存储器单元(步骤S70)。此后,类似于实施例1中图2的例子,生成逻辑电路(步骤S8)以便完成该过程。
另一个方面,作为判断的结果,如果没有其计算的延迟时间在延迟约束时间之内的存储器单元,再次执行步骤S66。在此,在从可选择存储器列表中排除最初选择的存储器后执行步骤S66。
在图35的例子中,时序安排被执行一次,然后从时序安排结果确定延迟时间,以便做出关于延迟误差的判断。然而,在实施例7中,而是首先为存取时间确定上限,而不是执行时序安排,并且可根据存取时间的上限做出关于延迟误差的判断。
现参考图37,步骤S66到S70将被更具体地说明如下。图37示出一个物理存储器单元列表,其中可安装32位存储器。图37示出当每个存储器单元被使用时的存取时间和面积。
例如,下面说明其中延迟约束时间被设为如上所述的10纳秒,除了存储器存取的其它操作的执行时间是7纳秒的情形。在这个情形中,对存储器存取时间的约束是3纳秒。
首先,如图37所示,存储器单元“T1610”,“T1620”,“T3210”和“T3220”被指定为相应于存储器选择单元71所选择的存储器的存储器单元。
其后,做关于每个存储器单元是否产生延迟误差的判断。例如,在示于图37的存储器单元“T3220”的情形中,因为存取时间是4纳秒,所以判断在步骤S68中延迟误差为1纳秒。类似地,在存储器单元“T1620”的情形中,延迟误差被判断为0.5纳秒。
另一个方面,因为存储器单元“T1610”的存取时间为2.5纳秒,且存储器单元“T3220”的存取时间为3.0纳秒,这些存储器不产生延迟误差。因此,判断出存在满足对存取时间约束的存储器单元。
然后,具有较短存储时间的存储器单元“T160”被选择。虽然最终根据实施例7中的存取时间选择存储器单元,可是例如,根据存储器单元的面积选择存储器单元。也就是,可选择具有最小面积的存储器单元“T3210”。
如上所述,根据实施例7,即使当存取时间根据存储器大小变化时,变量可被分配至最优存储器,因为存取时间可被当作选择存储器的评价指标。
实施例8现参考图38到39,根据本发明实施例8的高阶合成装置和高阶合成方法将被说明如下。首先,根据实施例8的高阶合成装置的结构将参考图38说明。图38是方框图,示意地示出根据本发明实施例8的高阶合成装置的结构。
如图38所示,根据实施例8的高阶合成装置80包括布局单元84,这是与示于图34的实施例7的高阶合成装置不同之处。而且,从功能的角度看,高阶合成装置80中的存储器选择单元81,约束判断单元82和时序安排单元83,与示于图34的高阶合成装置的70的存储器选择单元3,约束判断单元72和时序安排单元4不同。至于其余的方面,高阶合成装置80配置为类似于示于图34的高阶合成装置70。
布局单元84分配变量至由存储器选择单元81选择的存储器,且执行布局以便生成布局信息。布局信息指定所选择的存储器和连接至这些存储器上的电路的设定位置。布局信息被输出至布局信息数据库86。
在实施例8中,通过根据由资源分配单元5生成的逻辑电路的布局设计,布局单元84进行布局信息的产生。也就是,在实施例8中,资源分配单元5为通过布局单元84进行的布局设计生成逻辑电路。生成的逻辑电路被输出至电路连接信息数据库85,且布局单元84按需要访问电路连接信息数据库85。
而且,根据布局信息布局单元84确定所选择存储器的存取时间,布线(routing)的拥挤程度和死空间面积,这些也和布局信息一起被输出至布局信息数据库86。
类似于示于图34的实施例7中的约束判断单元72,约束判断单元82可指定相应于所选择的存储器的存储器单元,而且计算每个存储器单元的延迟时间,并做出关于该延迟时间是否在延迟约束时间内的判断。
除了这些功能,实施例8中的约束判断单元82具有做出关于布线拥挤程度和死空间面积中是否至少有一个满足预定条件(以下称为“布局约束”)判断的功能。
而且,除了类似于示于图34中实施例7的存储器选择单元71的那些功能,存储器选择单元81具有下面的功能也就是,如果约束判断单元82判断布线的拥挤程度和死空间面积中至少一个不满足布局约束,存储器选择单元81再次选择一个存储器作为可选择存储器,该存储器不同于最初所选择的存储器。
然后,根据实施例8的高阶合成方法将参考图39说明如下。实施例8的高阶合成方法可通过操作根据示于图38的实施例8的高阶合成装置而执行。因此,下面根据高阶合成装置的操作描述高阶合成方法,同时如果需要就参考图38。图39是流程图,其示出根据本发明实施例8的高阶合成方法。
如图38所示,类似于示于图35中实施例7的步骤S61到S66,首先执行下面的步骤计算引用数目(步骤S71);提取位宽(步骤S72);产生可选择存储器列表(步骤S73);计算存储器存储频率和(步骤S74);确认是否为所有可选择存储器完成该计算(步骤S75),和选择将频率最小化的存储器(步骤S76)。
在实施例8中,在作为目标的行为级电路11如图36A所示的情形中,类似于实施例7选择示于图36C的存储器M72。
然后,与实施例7不同,实施例8中的布局单元84分配行为级电路11中描述的变量至所选择的存储器,以便执行布局(步骤S77)。由此,产生布局信息(步骤S77)。从步骤S77,可获得所选择存储器的存取时间,布线的拥挤程度和死空间面积。
虽然没有在图39中示出,时序安排单元83和资源分配单元5执行时序安排和资源分配(逻辑电路的合成),以执行布局。根据从这些步骤获得的逻辑电路,布局被执行。
然后,约束判断单元82做出关于在步骤S77获得的布线拥挤程度和死空间面积是否满足所述布局约束的判断(步骤78)。
更具体地,约束判断单元82做出关于在步骤S77获得的布线拥挤程度是否在预定的布线拥挤程度的范围内的判断,或关于在步骤S77获得的死空间面积是否在预定的死空间面积的范围内的判断。注意,虽然对实施例8中的布线拥挤程度和死空间面积都做出判断,但可只对它们中的一个做出判断。
作为判断的结果,如果满足布局约束,时序安排单元83执行对所选择存储器的分配,并执行时序安排(步骤S79)。与实施例7不同,在实施例8中,步骤S79中的时序安排是通过使用从步骤S77中获得的存储器存取时间执行的。
另一个方面,如果布局约束不能满足,存储器选择单元81再次选择存储器(步骤S76)。在该情形的步骤S76中,使用可选择存储器列表以便排除已经选择的存储器。
然后,在步骤S79中的时序安排完成之后,类似图35所示的步骤S68,约束判断单元82指定相应于所选择的存储器(存储器M72)的存储器单元(步骤S80)。
然后,类似于示于图35中的步骤S69,约束判断单元82计算每个指定存储器单元的延迟时间,并做出关于是否存在其计算的延迟时间在延迟约束时间范围内的存储器单元的判断(步骤S81)。
在此,在实施例8中,通过把从步骤S77中的布局中获得的存储器存取时间加到LSI设计的程序库中指定的存储器存取时间上而计算得到所选择的存储器延迟时间。因此,存储器单元的存取时间的计算精度可得到增强。
作为判断的结果,如果计算的延迟时间在延迟约束时间范围内的存储器单元存在,约束判断单元82选择最小化存储器存取时间的存储器单元(步骤S82)。然后,类似于图2所示的实施例1中的例子,生成逻辑电路(步骤S8)以便完成该过程。
另一个方面,作为判断结果,如果计算的延迟时间在延迟约束时间范围内的存储器单元不存在,再次执行步骤S76。这种情形中,在从可选择存储器列表中排除最初选择的存储器后执行步骤S76。
如上所述,根据实施例8,布局被执行,并根据从该过程获得布局信息,可执行对存储器的分配。也就是,根据实施例8,关于存取时间的精确信息可根据存储器和连接到其上的电路的物理布局信息获得。而且,可以考虑布线的可能性和布局面积效率。因此,可为物理装配分配最优存储器。
以这种方式,根据本发明的高阶合成装置和高阶合成方法,根据行为级电路中描述的操作而具有最优位宽的存储器可被选择,且存储器的存取频率可被最优化。
本发明可以其它形式实施而不偏离本发明的精神或基本特征。该申请中公开的实施例的各个方面都被认为是说明性的,而非限制性的。本发明的范围由权利要求限定,而非前述说明书,和权利要求书等价的含义和范围内的所有变化都包括在权利要求保护范围内。
权利要求
1.一种高阶合成方法,通过所述方法,行为级电路中所描述的变量被分配至存储器中以生成逻辑电路,所述方法包括如下步骤(a)计算行为级电路中变量引用数目;(b)提取变量的位宽并选择多个能够以所述提取的位宽进行数据转移的变量;(c)当变量分配到在步骤(b)中所选的多个存储器时,计算所述存储器的每一个的存取频率之和,基于所述变量的引用数目和位宽执行所述计算;以及(d)选择最小化步骤(c)中计算的存储器存取频率之和的存储器作为分配所述变量的目标。
2.如权利要求1所述的高阶合成方法,进一步包括如下步骤整合包括在行为级电路中所描述的多个阵列变量或结构变量中的多个变量,以生成新的变量,其中为所述新变量执行所述步骤(a)到(d)。
3.如权利要求1所述的高阶合成方法,进一步包括如下步骤分离在所述行为级电路中描述的阵列变量或结构变量以生成由包括在所述分离结果中的多个变量组成的新的变量,其中对所述新变量执行所述步骤(a)到(d)。
4.如权利要求1所述的高阶合成方法,进一步包括如下步骤整合在所述行为级电路中描述的多个阵列变量或结构变量中包括的多个变量,以生成新的阵列变量或结构变量,和分离所述新阵列变量或结构变量以生成新变量,所述新变量由多个包括在所述分离结果中的变量组成,其中为所述新变量执行所述步骤(a)到(d)。
5.如权利要求2到4中任一项所述的高阶合成方法,其中所述多个变量是在所述行为级电路的同一区段中描述的变量。
6.如权利要求2到4中任一项所述的高阶合成方法,其中所述多个变量是不在所述行为级电路的同一区段描述的变量。
7.如权利要求5或6所述的高阶合成方法,其进一步包括在执行步骤(a)之前,将所有描述于所述行为级电路中的变量的每一个分配至不同存储器,并执行行为级电路中的执行周期的时序安排;以及指定执行周期,其中基于所述时序安排的结果存取所述阵列变量或结构变量,判断在执行周期的预定频率范围内存取的变量是在同一区段中描述的变量,并判断没有在所述执行周期的预定频率范围内存取的变量不是在同一区段中描述的变量。
8.如权利要求5或6所述的高阶合成方法,其中所述同一区段是通过在行为级电路中的重复处理定义的,该方法进一步包括如下步骤从包括在所述行为级电路中描述的同一阵列变量或结构变量中的多个变量中指定在同一区段中描述的变量。
9.如权利要求2到4中任一项所述的高阶合成方法,进一步包括如下步骤执行关于在所述行为级电路中描述的阵列变量或结构变量的依赖性分析,以计算所述阵列变量或结构变量中任意变量之间的距离矢量,以及基于所述计算的距离矢量指定多个变量。
10.如权利要求1所述的高阶合成方法,进一步包括如下步骤设定由描述于所述行为级电路的变量组成的变量组,其中,在步骤(b),提取所述变量组的位宽和不组成所述变量组的变量的位宽,且为每个所述变量组和不组成该变量组的变量选择多个存储器。
11.如权利要求10所述的高阶合成方法,其中组成所述变量组的变量是描述于所述行为级电路同一区段的变量。
12.如权利要求10所述的高阶合成方法,其中所述组成所述变量组的变量是没有描述于所述行为级电路同一区段的变量。
13.如权利要求11或12所述的高阶合成方法,进一步包括如下步骤在执行步骤(a)之前,将所有描述于所述行为级电路中的变量分配至不同存储器,并执行所述行为级电路中的执行周期的时序安排;以及指定执行周期,其中基于所述时序安排的结果存取每个所述变量,判断在执行周期的预定频率范围内存取的变量是在同一区段中描述的变量,并判断没有在所述范围内存取的变量不是在同一区段中描述的变量。
14.如权利要求10所述的高阶合成方法,其中为所述变量组选择的所述多个存储器每个都有不同的位宽。
15.如权利要求10所述的高阶合成方法,其中所述可配置的变量组的数目是预先设定的。
16.如权利要求11所述的高阶合成方法,其中配置所述多个变量组,且组成至少一个变量组的变量的数目不同于组成另一个变量组的变量数目。
17.如权利要求1所述的高阶合成方法,进一步包括如下步骤在执行步骤(c)之前,分配所述变量至在步骤(b)选择的存储器,并执行所述行为级电路中执行周期的时序安排,其中,在步骤(c),基于时序安排的结果判断是否存在能够与存储器存取并行执行的操作处理,且如果有这样的操作处理,校正存储器存取的频率和。
18.如权利要求17所述的高阶合成方法,进一步包括如下步骤提取所述行为级电路中描述的重复处理,并分析包括在重复处理中的变量依赖性;以及基于依赖性分析结果,交换重复处理中的执行顺序,从而在同一时间被引用的变量能在同一执行周期执行。
19.如权利要求1所述的高阶合成方法,进一步包括如下步骤在执行步骤(c)之前,分配所述变量至步骤(b)选择的存储器,并执行行为级电路中的执行周期的时序安排;以及在执行步骤(d)之后,显示对所选的存储器的存取方式,所述存取方式是从所述时序安排中获得。
20.如权利要求19所述的高阶合成方法,其中从所述时序安排结果中提取以预定频率或更高频率对同一存储器的连续存取,并且示出所述存取的存取方式被显示。
21.如权利要求19所述的高阶合成方法,其中从时序安排结果中提取不在同一执行周期存取的多个存储器,并且示出对所述提取的多个存储器的存取条件的存取方式被显示。
22.如权利要求1所述的高阶合成方法,进一步包括如下步骤指定相应于所选择存储器的多个存储器单元,和从多个存储器单元中选择满足关于一个执行周期内的延迟时间的预定条件的存储单元,其中,在不能选择满足关于一个执行周期内的延迟时间的预定条件的所述存储器的情形中,步骤(d)被再次执行。
23.如权利要求22所述的高阶合成方法,进一步包括如下步骤分配变量至所选择的存储器,并执行所述行为级电路中的执行周期的时序安排,其中根据所述时序安排的结果和所述多个存储器单元中每个的存取时间为所述多个存储器中的每个计算一个执行周期内的延迟时间,并通过判断所计算的延迟时间是否满足所述预定条件,来执行所述存储器单元的选择。
24.如权利要求22所述的高阶合成方法,进一步包括如下步骤在执行步骤(d)之后,分配所述变量至所选择的存储器,并执行布局,由此,生成布局信息,所述布局信息至少指定所选择的存储器的被设定的位置,和与所选择存储器连接的电路的被设定的位置,其中所述多个存储器中每个的存取时间从所述布局信息确定。
25.如权利要求1所述的高阶合成方法,进一步包括如下步骤在执行步骤(d)之后,分配所述变量至所选择的存储器,并执行布局,由此,生成布局信息,所述布局信息至少指定一个所选择的存储器的被设定的位置,和与所选择存储器连接的电路的被设定的位置;基于所述布局信息,确定所选择的存储器的存取时间,布线的拥挤程度,和死空间的面积中的至少一个;以及在所述存取时间被确定的情形中,使用所述存取时间执行所述行为级电路中执行周期的时序安排。
26.如权利要求25所述的高阶合成方法,进一步包括如下步骤在布线的拥挤程度被确定情形中,做出关于所述布线的拥挤程度是否满足预定的条件的判断,其中如果所述布线的拥挤程度不满足预定条件,对除所选择的存储器之外的存储器再次执行步骤(d)。
27.如权利要求25所述的高阶合成方法,进一步包括如下步骤在死空间的面积被确定情形中,做出关于所述死空间的面积是否满足预定的条件的判断,其中如果所述死空间的面积不满足预定条件,对除所选择的存储器之外的存储器再次执行步骤(d)。
28.一种高阶合成装置,其将行为级电路中描述的变量分配至存储器,以生成逻辑电路,该装置包括引用数目计算单元,其计算在所述行为级电路中的所述变量的引用数目;位宽提取单元,其提取所述变量的位宽,并选择多个能够以所提取的位宽进行数据转移的存储器;以及存储器选择单元,用于在所述变量分配至所选择的多个存储器中的每个中时,为所选择的多个存储器中的每一个计算存储器存取频率和,基于所述变量的所述引用数目和位宽执行该计算,并选择最小化所计算的存储器存取频率之和的存储器作为分配目标。
29.一种纪录介质,其中纪录有程序,该程度使得计算机将行为级电路中描述的变量分配给存储器,并生成逻辑电路,其中所述程序包含使计算机执行如下步骤的命令(a)计算在所述行为级电路中的所述变量的引用数目;(b)提取所述变量的位宽,并选择多个能够以所提取的位宽进行数据转移的存储器;(c)当所述变量分配到在步骤(b)中选择的所述多个存储器中时,为在步骤(b)中选择的所述多个存储器中的每一个计算所述存储器存取频率和,基于所述变量的引用数目和位宽执行所述计算;以及(d)选择最小化在步骤(c)中计算的存储器存取频率之和的存储器作为分配变量的目标。
全文摘要
本发明揭示一种高阶合成方法和高阶合成装置,其中首先,在行为级电路中描述的变量的引用数目被计算。然后,该变量的位宽被提取,且多个能够以所提取的位宽进行数据转移的存储器被选择。其次,当变量被分配至其中时,基于所以数目和变量的位宽,多个存储器中的每个存储器的存取频率和被计算。最后,作为分配变量的目标,最小化存储器所计算的存取频率和的存储器被选择。
文档编号G06F17/50GK1624698SQ20041010062
公开日2005年6月8日 申请日期2004年12月6日 优先权日2003年12月5日
发明者服部大, 小川修, 黑川圭一 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1