CN101782894A - 算术程序转换装置、算术程序转换方法及程序 - Google Patents
算术程序转换装置、算术程序转换方法及程序 Download PDFInfo
- Publication number
- CN101782894A CN101782894A CN201010004685A CN201010004685A CN101782894A CN 101782894 A CN101782894 A CN 101782894A CN 201010004685 A CN201010004685 A CN 201010004685A CN 201010004685 A CN201010004685 A CN 201010004685A CN 101782894 A CN101782894 A CN 101782894A
- Authority
- CN
- China
- Prior art keywords
- variable
- expression formula
- expression
- bit width
- binomial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种算术程序转换装置包括:程序存储部分,存储通过包括多个输入和输出变量与运算符的逻辑表达式描述电路的算术程序;中间变量生成部分,如果表达式具有三个或更多输入变量,则中间变量生成部分生成用于将表达式转换为包括输入和输出变量的多个二项式的中间变量;表达式转换部分,如果生成了中间变量,则表达式转换部分将逻辑表达式转换为包括用于获得中间变量的二项式以及用于从中间变量获得输出变量的二项式的多个二项式;表达式更新部分,如果生成了多个二项式,则表达式更新部分更新所存储的原始表达式;比特宽度确定部分,确定表达式的输出、输入和中间变量的比特宽度;以及比特宽度存储部分,存储输出、输入和中间变量的比特宽度。
Description
技术领域
本发明涉及一种能够通过转换算术程序(诸如,算法模型(model)程序等)来获得硬件模型程序的算术程序转换装置、算术程序转换方法以及程序。
背景技术
日本未审专利申请公开第2001-43067号已经公开了一种算术装置,其能够将数值从浮点记数法转换为定点记数法,同时保持有效数字的数目的损失最小。
该算术装置包括最大指数部分值(maximum-exponent-part-value)检测部分,其将存储部分中存储的k比特数据译解为具有m比特尾数部分和n比特指数部分的浮点数据,并且检测一块中的数据的指数部分的最大值r。
而且,该算术装置将该块中的每个数据转换为浮点数据,其由指数部分的最大值r和尾数部分这一对值来表示,并且该算术装置通过算术处理部分对转换后数据的尾数部分执行算术处理。
而且,该算术装置在将该块中的数据输出到外部之前,对该数据完成预定算术处理,并且基于该最大值r将每个数据转换成浮点数据。
日本未审专利申请公开第2002-149397号已经公开了一种生成定点数据的方法,其允许提高比特解码速率,同时减小电路的尺寸。
在该方法中,在浮点数据之中检测最大的浮点数据,并且获得浮点数据的指数部分值和最大浮点数据的指数部分值之间的差量。
接下来,在该方法中,将该浮点数据的尾数部分移位该差量,并且提取移位后的尾数部分的预定数目的比特作为定点数据。
以此方式,在硬件电路系统中,将要被算术处理的各种变量作为定点变量(具有固定的比特宽度的变量)而受到算术处理,即使所述变量采用浮点记数法也是如此。
发明内容
附带地,在设计硬件电路时使用各种EDA(电子设计自动化)工具。
在使用EDA工具的电路设计中,电路设计者将要设计的电路的硬件模型输入到EDA工具中。这样的硬件模型包括例如RTL(寄存器传送语言)模型。
当输入硬件模型时,EDA工具从该硬件模型生成网表数据等。
而且,例如可以自动地从网表数据生成集成电路中的布线图案数据(wiring pattern data)。此外,可以形成曝光掩模(exposure mask),其用于形成布线图案数据。通过使用曝光掩模制造电路可以获得电路设计者已经设计的电路系统。
然而,在硬件模型(诸如RTL模型)中,需要设计者使用寄存器和晶体管来描述要设计的电路。替代地,需要设计者使用具有两个输入和一个输出的二项式表达式来描述电路,所述二项式表达式容易被转换为晶体管。
在这点上,例如,可以使用用于GUI(图形用户界面)的、具有两个输入和一个输出的电路元件模块来描述二项式表达式。
相应地,当将硬件模型输入到EDA工具中时,需要电路设计者具体描述寄存器的比特(bit)数目等。
结果,在将硬件模型输入到EDA工具中之前,需要电路设计者确定在寄存器中存储的每个变量的比特数目(number ofbits)(比特宽度(bit width))。
而且,变量的比特宽度的确定意味着固定变量的比特精度(bit precision),并且确定该变量采用定点记数法。
而且,电路设计者基于过去经验等在实际制造场所来手动地确定变量的比特精度。
相应地,不必为要设计的每个电路优化变量的比特精度。认为:有经验的电路设计者可以优化变量的比特精度。然而,例如,对于没有经验的电路设计者而言,优化电路的比特精度是困难的。
结果,如果变量的比特精度比必要精度高,则实现支持(hand)具有该过度比特精度的变量的二项式表达式的电路的尺寸变大。
而且,实现该二项式表达式的后级中的二项式表达式的电路接收具有该过度比特精度的输入变量,因此要设计的电路的尺寸与被优化为必要精度的电路的情况相比变得相当大。
而且,如果变量的比特精度比必要精度低,则在支持具有不足比特精度的变量的二项式表达式中出现舍入误差(rounding error)。
而且,实现该二项式表达式的后级中的二项式表达式的电路接收具有舍入误差的输入变量,因此即使后级中的电路本身被优化,该误差也变大。结果,在输出变量中出现比可容许误差大的误差。
以此方式,如果在每个二项式表达式中都没有优化变量的比特精度,会出现各种问题。
另外,在已经在EDA工具中输入的硬件模型中,按照由电路设计者确定并输入的顺序布置多个二项式表达式。
而且,如果电路设计者没有充分研究二项式表达式的运算的顺序,即使优化了每个二项式表达式中的变量的比特精度,一部分二项式表达式有时也会以过度比特精度运算。
以此方式,即使在对输出变量的可容许误差没有影响的情况下,也存在部分地以过度比特精度运算的二项式表达式。由此,要设计的电路的尺寸变得比优化运算顺序的情况下的电路尺寸大。
考虑到这些情况,本发明人已经迫不及待地独立开展了研究。
结果,本发明人已经领会到:电路设计者使用通过进一步抽象硬件模型程序产生的高级(upper)算术程序来执行电路的逻辑验证。
以此方式,作为在设计硬件模型程序之前创建的高级算术程序,例如,存在包括要设计的电路的输入和输出关系的描述的算法模型程序。
而且,本发明人已经发现:通过转换算术程序(诸如算法模型程序),可以获得包括具有两个输入和一个输出的二项式表达式且能够被用作硬件模型的算术程序。
而且,本发明人已经发现:通过算术处理,可以获得适合于要设计的电路的比特精度,作为包括在包括二项式表达式的算术程序中的变量(输入变量和输出变量)的比特精度。
期望提供一种能够从算术程序(诸如算法模型程序等)获得硬件模型程序的算术程序转换装置、算术程序转换方法以及程序。
根据本发明实施例,提供一种算术程序转换装置,其包括:程序存储部分,存储通过包括多个输入变量、运算符和输出变量的逻辑表达式来描述要设计的电路的算术程序;中间变量生成部分,如果在该程序存储部分中存储了具有三个输入变量或更多输入变量的逻辑表达式,则该中间变量生成部分生成要用于将该逻辑表达式转换为包括两个输入变量和一个输出变量的多个二项式表达式的中间变量;表达式转换部分,如果通过中间变量生成部分生成了中间变量,则该表达式转换部分将该逻辑表达式转换为多个二项式表达式,所述多个二项式表达式包括用于获得中间变量的二项式表达式以及用于从中间变量获得输出变量的二项式表达式;表达式更新部分,如果通过表达式转换部分的转换处理生成了多个二项式表达式,则该表达式更新部分用所述多个二项式表达式更新在程序存储部分中存储的原始逻辑表达式;比特宽度确定部分,确定在程序存储部分中存储的逻辑表达式的输出变量、输入变量以及中间变量的比特宽度;以及比特宽度存储部分,存储输出变量的比特宽度、输入变量的比特宽度以及中间变量的比特宽度。
根据本发明另一实施例,提供一种转换算术程序的方法,该方法包括以下步骤:生成要用于将构成在程序存储部分中存储的算术程序并且包括三个输入变量或更多输入变量、运算符以及输出变量的逻辑表达式转换为包括两个输入变量和一个输出变量的多个二项式表达式的中间变量;将该逻辑表达式转换为多个二项式表达式,所述多个二项式表达式包括用于获得中间变量的二项式表达式以及用于从中间变量获得输出变量的二项式表达式;用所述多个转换后的二项式表达式更新在程序存储部分中存储的原始逻辑表达式;确定在程序存储部分中存储的逻辑表达式中包括的输出变量、输入变量以及中间变量的比特宽度;以及将输出变量的比特宽度、输入变量的比特宽度以及中间变量的比特宽度存储在比特宽度存储部分中。
根据本发明另一实施例,提供一种用于使得计算机实现包括以下内容的处理的程序:程序存储部分,存储通过包括多个输入变量、运算符和输出变量的逻辑表达式来描述要设计的电路的算术程序;中间变量生成部分,如果在该程序存储部分中存储了具有三个输入变量或更多输入变量的逻辑表达式,则该中间变量生成部分生成要用于将该逻辑表达式转换为包括两个输入变量和一个输出变量的多个二项式表达式的中间变量;表达式转换部分,如果通过中间变量生成部分生成了中间变量,则该表达式转换部分将该逻辑表达式转换为多个二项式表达式,所述多个二项式表达式包括用于获得中间变量的二项式表达式以及用于从中间变量获得输出变量的二项式表达式;表达式更新部分,如果通过表达式转换部分的转换处理生成了多个二项式表达式,则该表达式更新部分用所述多个二项式表达式更新在程序存储部分中存储的原始逻辑表达式;比特宽度确定部分,确定在程序存储部分中存储的逻辑表达式的输出变量、输入变量以及中间变量的比特宽度;以及比特宽度存储部分,存储输出变量的比特宽度、输入变量的比特宽度以及中间变量的比特宽度。
通过上述实施例,算术程序(诸如算法模型程序)的多个逻辑表达式被转换为二项式表达式,并且被存储在程序存储部分中作为二项式算术程序。
而且,二项式算术程序的输出变量的比特宽度、输入变量的比特宽度以及中间变量的比特宽度由比特宽度确定部分确定,并且被存储在比特宽度存储部分中。
相应地,在程序存储部分中存储的二项式算术程序包括这样的变量,所述变量的比特宽度全部都已经被固定,因此该二项式算术程序可以被用作硬件模型程序。
通过本发明,可以从算术程序(诸如算法模型程序等)获得可以被用作硬件模型程序的二项式算术程序。
附图说明
图1是应用根据本发明实施例的算术程序转换装置的硬件模型生成装置的配置图;
图2是在图1中的比特精度列表存储部分中存储的比特精度列表的示例;
图3是要被用来实现图1中的硬件模型生成装置的计算机装置的配置的示例;
图4是图示图1中的硬件模型生成装置中的硬件模型二项式模型生成处理的流程的流程图;
图5是图示图1中的硬件模型生成装置中的变量的固定(fix)处理的流程图;
图6是要在图1中的程序存储部分中存储的算术模型程序的示例;
图7是在转换处理中要在图1的程序存储部分中存储的中间模型程序的示例(在固定乘法和除法输出变量的状态下);
图8是在转换处理中要在图1的程序存储部分中存储的中间模型程序的示例(在固定乘法和除法输入变量的状态下);
图9是在转换处理中要在图1的程序存储部分中存储的中间模型程序的示例(在二项式化乘法和除法运算的状态下);
图10是在转换处理中要在图1的程序存储部分中存储的中间模型程序的示例(在用于乘法和除法的固定的中间变量的状态下);
图11是在转换处理中要在图1的程序存储部分中存储的中间模型程序的示例(在二项式化加法和减法运算的状态下);
图12是要在图1的程序存储部分中存储的二项式模型程序(硬件模型程序)的示例。
具体实施方式
下面,将参考附图给出本发明实施例的描述。在这点上,将按照以下顺序给出描述。
1.应用算术程序转换装置的硬件模型生成装置的配置
2.从算法模型程序生成通过二项式表达式描述的硬件模型程序的生成操作
1.硬件模型生成装置的配置
图1是图示应用根据本发明实施例的算术程序转换装置的硬件模型生成装置的配置图。
硬件模型生成装置1从算法模型程序生成通过多个二项式表达式描述并且可以被用作硬件模型程序的二项式模型程序,在所述算法模型程序中,要设计的电路的输入和输出关系通过输入和输出描述表达式来描述。
而且,硬件模型生成装置1生成在二项式模型程序的二项式表达式中包括的多个变量的比特精度的信息。
以此方式,硬件模型生成装置1将电路模型程序中的逻辑表达式二项式化,并且将二项式表达式的变量固定。
而且,变得可以以与RTL模型程序相同的方式使用二项式模型程序作为用于生成网表等的硬件模型。
下面,将算术模型程序简称为算术模型,将二项式表达式模型程序简称为二项式表达式模型,并且将电路模型程序简称为电路模型。
在稍后描述的图6中图示了算术模型的示例。
图6中的算术模型具有三个输入和输出描述表达式。
输入和输出描述表达式是要设计的电路的逻辑表达式,对于每个输出数据或输出信号,所述逻辑表达式是独立的。
而且,在输入和输出描述表达式中,作为变量来描述要用于获得输出数据或输出信号的输入数据或输入信号。
输入和输出描述表达式包括一个输出变量、多个输入变量以及多个运算符。
输出变量对应于输出数据或输出信号。
输入变量对应于用于获得输出数据或输出信号的输入数据或输入信号。
运算符是诸如加法、减法、乘法和除法等的运算的符号,并且表示多个输入数据或多个输入信号的算术处理。
而且,在输入和输出描述表达式的左侧描述输出变量。在输入和输出描述表达式的右侧描述输入变量以及运算符。在一个输入和输出描述表达式中,可以描述三个输入变量或更多的输入变量。
在这点上,在硬件模型生成装置1中,将输入和输出描述表达式的变量作为浮点变量对待。
图12(稍后描述)图示了二项式表达式模型的示例。
图12中的二项式表达式模型具有9个二项式表达式。
二项式表达式包括输入变量、运算符以及输出变量。
当将二项式表达式看作具有两个输入和一个输出的函数模块时,输入变量对应于该函数模块的输入数据或输入信号,输出变量对应于该函数模块的输出数据或输出信号,并且运算符表示在该函数模块中对两个输入变量彼此的算术处理。
在二项式表达式的左侧描述输出变量。在二项式表达式的右侧描述输入变量以及运算符。一个二项式表达式可以包括对两个输入变量的描述。
在这点上,在硬件模型生成装置1中,二项式表达式模型的变量最终变为定点变量。
在这点上,例如,二项式表达式模型应该是与RTL模型具有相同描述级别的模型。也就是说,二项式表达式模型应该是通过多个二项式表达式描述并且具有二项式输入变量、运算符以及输出变量的固定的比特宽度的模型。
而且,要用于获得二项式表达式模型的算法模型可以是除了上述的输入和输出模型之外的模型,在上述的输入和输出模型中,对于每个输出通过逻辑表达式描述电路的输入和输出。
例如,如果算法模型已经获得了每个逻辑表达式的输出变量的可容许误差以及输入变量的最大输入值和最小输入值,则该模型可以被用作算法模型。
图1中的硬件模型生成装置1具有输入部分11、程序存储部分12、比特精度列表存储部分13、表达式选择部分14、变量固定部分15、中间变量生成部分16、运算顺序确定部分17、二项式表达式生成部分18以及表达式更新部分19。
输入部分11具有例如键盘或指示设备。输入部分11生成与键盘或指示设备的操作相对应的输入数据。用户使用输入部分11将算法模型等输入到硬件模型生成装置1中。
在这点上,输入部分11可以具有用于读取可移动记录介质(诸如CD-ROM(紧致盘只读存储器)等)的设备,并且可以读取预先记录在记录介质上的算法模型等。
程序存储部分12存储通过模型描述表达式描述的电路模型。
程序存储部分12最初存储如图6中所例示的算法模型。
而且,通过二项式表达式模型生成处理,程序存储部分12最终存储图12中所例示的二项式表达式模型。
而且,程序存储部分12存储从算法模型到二项式表达式模型的转换处理中的中间模型。该中间模型在图7到图11中例示。
而且,如果存储了算法模型,程序存储部分12存储该算法模型的多个输入和输出描述表达式(逻辑表达式)作为模型描述表达式。
如果存储了二项式表达式模型,程序存储部分12存储该二项式表达式模型的多个二项式表达式作为模型描述表达式。
比特精度列表存储部分13存储比特精度列表21。
图2图示了在比特精度列表存储部分中存储的比特精度列表21的列表结构的示例。
图2中的比特精度列表21包括在程序存储部分12中存储的每个变量(模型描述表达式的输入变量、输出变量以及稍后描述的中间变量)的多项记录。
而且,比特精度列表存储部分13例如最初存储在图6中包括的所有变量,并且最终存储在图12中包括的所有变量。
比特精度列表21的每项记录(图2中的每行)存储变量名称、变量值的范围、变量的可容许误差、变量的整数部分的比特数目以及变量的小数部分的比特数目。
在这点上,变量值的范围和变量的可容许误差可以从例如输入部分11输入。
而且,整数部分的比特数目与小数部分的比特数目之和成为变量的比特宽度(比特精度)。
在这点上,如果比特精度列表21存储了整数部分的比特数目和小数部分的比特数目,则该变量是定点变量。
相反,如果比特精度列表21没有存储整数部分的比特数目和小数部分的比特数目中的至少一个,则该变量是浮点变量。
而且,在执行二项式表达式模型生成处理之前,比特精度列表21存储图6中的所有变量。在执行了二项式表达式模型生成处理之后,比特精度列表21存储图12中的所有变量。
表达式选择部分14确定二项式化模型描述表达式的顺序、以及将变量改变为定点记数法的顺序。表达式选择部分14最终基于四个基本算术运算的类型和每个变量的比特精度(比特宽度)作出确定,使得舍入误差的影响变小。
在这点上,例如,当执行乘法或除法运算时,或者当利用输入变量的减少的比特数目执行运算时,舍入误差很有可能出现。
这是因为在作为硬件实现时电路的封装面积有限,因此,总是在信号质量(诸如图像质量等)和封装面积之间出现折衷。
而且,这是因为对算术处理进行了大幅(significant)比特减少,通过这样做,在运算之后比特宽度变大,使得可以有效地限制所述算术处理和随后的算术处理所需的封装面积。
而且,通过这样的比特宽度减少处理出现了舍入误差。
表达式选择部分14使用该特点把注意力集中在与乘法和除法有关的变量或者具有大比特宽度的变量,并且从所述变量确定二项式化和向定点记数法的改变。表达式选择部分14具体执行稍后描述的图4中的流程图的处理。
在下面,通过表达式选择部分14获得的模型描述表达式被称为所获得的模型描述表达式(所获得的逻辑表达式)。
在图4的流程图中,表达式选择部分14从在程序存储部分12中存储的电路模型的开头起依序获得每一行的所获得的模型描述表达式。
接下来,每当表达式选择部分14获得模型描述表达式时,表达式选择部分14便基于在程序存储部分12中存储的电路模型和在比特精度列表存储部分13中存储的比特精度的信息确定感兴趣的二项式运算(二项式运算符)以及感兴趣的变量。
接下来,表达式选择部分14执行感兴趣的二项式运算的二项式化以及感兴趣的变量向定点的改变(确定其比特宽度),并且将结果存储到程序存储部分12和比特精度列表存储部分13中。
而且,表达式选择部分14重复该处理,直到在程序存储部分12中存储的电路模型的所有模型描述表达式被二项式化并且所有变量被改变为定点记数法为止。
由此,表达式选择部分14概略地依序执行以下处理。
1.将注意力集中在执行乘法和除法的逻辑表达式的输出变量组,并且对其进行固定。
2.将注意力集中在要进行乘法和除法的输入变量组,并且对其进行固定。
3.将注意力集中在执行乘法和除法的逻辑表达式的输入变量组,并且确定运算顺序。
4.将注意力集中在为存储通过乘法和除法产生的值而生成的中间变量组,并且对其进行固定。
5.将注意力集中在执行加法和减法的逻辑表达式的输入变量组,并且确定运算顺序。
6.将注意力集中在为存储通过加法和减法产生的值而生成的中间变量组,并且对其进行固定。
变量固定部分15确定所获得的模型描述表达式的感兴趣的变量的比特宽度。具体地,变量固定部分15重复执行图5中的处理。
在图5的处理中,变量固定部分15首先在可容许误差的范围内减少变量组的比特宽度。如果超出了可容许误差,则识别在最后级产生最大输出误差的变量,并且依据该变量来固定比特宽度。除了可容许误差的指定之外,所有这些都是自动处理的。
以此方式,通过产生最大输出误差的变量来确定比特宽度,从而变量固定部分15可以将变量固定为最小所需比特宽度,同时保持舍入误差的影响最小。
而且,识别前级处的感兴趣的变量,并且仅将该变量转换为定点变量,从而变量固定部分15可以确定线性处理量(a linear amount of processing),而不受其它运算的影响。
而且通过重复处理图5中的处理,变量固定部分15最终确定所获得的模型描述表达式的输出变量的比特宽度、输入变量的比特宽度,并且还确定中间变量的比特宽度。
在下面,通过变量固定部分15处理的变量被称为固定变量。
中间变量生成部分16从在所获得的模型描述表达式中包括的运算生成要用于将感兴趣的二项式运算转换为二项式表达式的中间变量。
例如,如果所获得的模型描述表达式仅包括感兴趣的二项式运算(二项式运算符),则要生成的中间变量的数目应该是从感兴趣的二项式运算符的数目减1。
而且,例如,如果所获得的模型描述表达式包括除了感兴趣的二项式运算(二项式运算符)外的运算符,则要生成的中间变量的数目应该是与感兴趣的二项式运算符的数目相同的数目。
在这点上,通过中间变量生成部分16生成的中间变量具有不固定的比特宽度,并且因而是浮点变量。
运算顺序确定部分17确定在将所获得的模型描述表达式转换为多个逻辑表达式(诸如二项式表达式等)的情况下的运算的顺序。运算顺序确定部分17基于固定变量(变量组)的比特宽度和所获得的模型描述表达式确定运算的顺序,使得舍入误差变小。
在这点上,舍入误差包括在乘法和除法中去除有效数字(significant digit)的数目时出现的舍入误差、以及在加法和减法中去除要运算的比特(bit)时出现的舍入误差等。
例如,如果所获得的模型描述表达式包括多个固定变量,则运算顺序确定部分17确定运算顺序,使得首先运算具有较少的比特宽度数目的变量,然后运算具有较大的比特宽度数目的变量。
另外,例如,如果所获得的模型描述表达式包括已经被固定的定点变量,则运算顺序确定部分17确定运算顺序,以便首先运算尚未被固定的浮点变量,然后运算固定变量。
这是因为,在该实施例中稍后描述的处理中,一个所获得的模型描述表达式可能混合地包括定点变量和浮点变量。在此情况下,浮点变量是尚未经过乘法和除法的变量,并且因此仅稍微受到舍入误差的影响。
而且,这是因为预先执行具有舍入误差的少许影响的运算,使得减少具有舍入误差的运算的数目,因此,限制了舍入误差的增加。
而且,运算顺序确定部分17基于这些确定结果确定在所获得的模型描述表达式中包括的多个输入变量向多个二项式表达式(对所获得的模型描述表达式的输出变量进行运算的表达式以及对中间变量进行运算的二项式表达式)的分配。
例如,如果所获得的模型描述表达式包括三个输入变量,则运算顺序确定部分17将被确定为在运算顺序中预先运算的输入变量的两个输入变量分配给中间变量的运算,并且将被确定为稍后运算的输入变量的剩下的变量和中间变量分配给输出变量的运算。
二项式表达式生成部分18基于通过运算顺序确定部分17进行的多个变量的分配,从所获得的模型描述表达式生成包括至少一个二项式表达式的多个逻辑表达式。
具体地,二项式表达式生成部分18二项式化感兴趣的二项式运算,并且获得逻辑表达式,其中通过其它运算从该逻辑表达式获得所获得的模型描述表达式的输出变量。
在这点上,从其获得输出变量的逻辑表达式有时变为二项式表达式。
例如,在所获得的模型描述表达式具有三个输入变量的情况下,生成第一二项式表达式以及第二二项式表达式,通过所述第一二项式表达式,从所获得的模型描述表达式的两个输入变量获得中间变量,通过第二二项式表达式,从所获得的模型描述表达式的剩下的输出变量以及中间变量获得输出变量。
而且,中间变量变为第一二项式表达式中的输出变量,并且变为第二二项式表达式中的输入变量。
表达式更新部分19利用由二项式表达式生成部分18生成的多个二项式表达式来更新在程序存储部分12中存储的所获得的模型描述表达式。
而且,依序利用多个二项式表达式来更新在程序存储部分12中存储的所获得的模型描述表达式,从而将在程序存储部分12中存储的算法模型转换为通过多个二项式表达式来描述的二项式表达式模型。
在这点上,可以利用例如图3中的计算机装置31来实现图1中的硬件模型生成装置1。计算机装置31具有输入部分11、显示部分33、存储部分34、CPU(中央处理单元)35以及连接它们的系统总线36。
存储部分34存储用于在计算机装置31中实现硬件模型生成装置1的程序。
而且,CPU 35执行程序37,从而在计算机装置31中实现硬件模型生成装置1。而且,存储部分34充当程序存储部分12和比特精度列表存储部分13。
而且,图3中的程序37可以是计算机可读程序。例如,程序37可以是在例如记录介质(诸如CD-ROM等)中记录的程序,并且可以是通过传输介质(诸如因特网等)从服务器下载的程序。
2.硬件模型生成装置的操作
接下来,将给出图1中硬件模型生成装置1的操作的描述。
图4图示了用于从可以被用作硬件模型的算法模型获得二项式表达式模型的总处理流程。图4中的流程图主要由表达式选择部分14执行。
而且,图5图示了输入变量的固定处理的流程。图5中的流程图由变量固定部分15执行。
而且,图6-图12图示了由图1中硬件模型生成装置1转换的电路模型的示例。
图6是算法模型,图12是可以被用作硬件模型的二项式表达式模型。而且,图7-图11是中间模型。
在下面的描述中,将参考图6-图12中的示例来给出图4和图5中的处理的描述。
在这点上,在图6-图12中,以大写字母描述已固定的定点变量,并且以小写字母描述未固定的浮点变量。
如图4中所示,用户操作硬件模型生成装置1的输入部分11,以输入算法模型的多个输入和输出描述表达式、以及在输入和输出描述表达式中包括的输入变量和输出变量的输入/输出条件(步骤ST1)。由此,输入部分11生成输入数据。
而且,程序存储部分12存储例如图6中的算法模型。在图6中的算法模型中存储了三个输入和输出描述表达式(模型描述表达式)。
而且,图2中的比特精度列表21存储在比特精度列表存储部分13中。
比特精度列表21存储图6中的15个变量的输入/输出条件。
而且,比特精度列表存储部分13存储例如输入变量的输入值的范围以及输出变量的可容许误差作为输入/输出条件。
当程序存储部分12存储了算法模型并且比特精度列表存储部分13存储了比特精度列表21时,硬件模型生成装置1开始从算法模型生成具有该变量比特精度的二项式表达式模型的生成处理。
在二项式表达式模型生成处理中,如图4中所示执行循环(loop)处理四次。
而且,在第一循环处理中,执行以下操作:将包括乘法和除法的模型描述表达式的输出变量固定,将与乘法和除法有关的输入变量固定,并且二项式化乘法和除法。
相应地,表达式选择部分14首先获得在程序存储部分12中存储的模型描述表达式(步骤ST11)。表达式选择部分14获得在算法模型的开头描述的模型描述表达式。
在图6的示例中,表达式选择部分14首先获得“x=a*b*c”。符号“*”是乘法运算符。
在获得了模型描述表达式之后,表达式选择部分14确定该模型描述表达式是否包含感兴趣的预定变量、以及感兴趣的预定运算符。
在第一循环处理中,表达式选择部分14假设乘法运算符(*)和除法运算符(“÷”或“/”)是感兴趣的运算符,并且确定所获得的模型描述表达式是否包含感兴趣的运算符(步骤ST12)。表达式“x=a*b*c”包括乘法运算符。
而且,如果该模型描述表达式不包括感兴趣的运算符,则表达式选择部分14执行稍后描述的步骤ST16。
而且,如果该模型描述表达式包括感兴趣的运算符,则表达式选择部分14提取在所获得的模型描述表达式的左侧的输出变量作为感兴趣的变量,并且指示变量固定部分15对感兴趣的变量执行固定处理(步骤ST13)。
在“x=a*b*c”情况下,提取输出变量“x”作为感兴趣的变量。
变量固定部分15从所获得的模型描述表达式、感兴趣的运算符以及感兴趣的变量,确定感兴趣的变量(这里,包括乘法和除法的模型描述表达式的输出变量)的比特宽度。变量固定部分15确定感兴趣的变量的比特宽度。
当固定模型描述表达式的输出变量时,变量固定部分15首先执行所获得的模型描述表达式的仿真(simulation),并且获得输出变量的最大值(绝对值)。因此,确定所获得的模型描述表达式的输出变量的整数部分。
比特精度列表存储部分13存储整数部分的比特数目。
接下来,变量固定部分15确定输出变量的小数部分的比特数目,使得输出变量值在比输出变量的可容许误差小的范围内改变。
比特精度列表存储部分13存储小数部分的比特数目。
通过上述处理,变量固定部分15确定感兴趣的变量的比特宽度。
而且,比特精度列表存储部分13存储所生成的感兴趣的变量(输出变量)的比特宽度。
因此,确定所获得的模型描述表达式的输出变量的比特精度。
如图7中所示,浮点输出变量“x”被转换为定点输出变量“X”。
在指示了感兴趣的变量(输出变量)的固定处理之后,如图4中所示,表达式选择部分14还提取要进行乘法和除法的输入变量作为感兴趣的变量,并且指示变量固定部分15执行感兴趣的变量的固定处理(步骤ST14)。
在“x=a*b*c”情况下,提取输入变量“a”、“b”和“c”作为感兴趣的变量。
变量固定部分15执行图5中的处理,使得对感兴趣的变量(输入变量)进行固定。
具体地,变量固定部分15首先执行所获得的模型描述表达式的仿真(步骤ST51),并且获得每个输入变量的最大值(绝对值)(步骤ST52)。
因此,确定在所获得的模型描述表达式中包括的所有输入变量的整数部分。
比特精度列表存储部分13存储整数部分的比特数目。
在这点上,在该阶段,这些输入变量作为浮点变量来运算。
接下来,为了获得感兴趣的变量(输入变量)的小数部分的比特数目,变量固定部分15首先将具有不生成舍入误差的足够的比特数目的小数部分添加到在所获得的模型描述表达式中包括的所有感兴趣的变量(步骤ST53)。
此后,变量固定部分15减少与感兴趣的变量(输入变量)的小数部分的比特数目相同数目的比特(例如,1比特)(步骤ST54),并且执行仿真(步骤ST55)。此时,将除了感兴趣的变量之外的未定点的变量作为浮点变量来运算。
而且,变量固定部分15确定输出变量的误差是否大于可容许误差(步骤ST56)。
而且,如果输出变量的误差不大于可容许误差,则变量固定部分15重复比特数目减少处理(步骤ST54)和仿真(步骤ST55),直到该误差超出可容许误差为止。
而且,当输出变量的误差大于可容许误差时,变量固定部分15向一个感兴趣的变量添加一比特(步骤ST57),并且执行仿真(步骤ST58)。此时,将除了感兴趣的变量之外的未固定的变量作为浮点变量来运算。
变量固定部分15对每个感兴趣的变量执行相同的仿真(步骤ST59)。
变量固定部分15从多个感兴趣的输入变量的、具有增加的比特数目的这些仿真结果中识别使得输出变量的误差变为最大的输入变量(步骤ST60)。
而且,变量固定部分15固定使得该误差变为最大的输入变量的小数部分的比特数目作为该时间点处的比特数目(步骤ST61)。
而且,变量固定部分15重复步骤ST57到ST61,直到不存在要处理的感兴趣的变量为止(步骤ST62)。
在这点上,当固定在所获得的模型描述表达式中包括的第二和之后的输入变量时,预先将固定的比特宽度用于固定的输入变量。
变量固定部分15从所获得的模型描述表达式、感兴趣的运算符、感兴趣的变量以及已经运算的输出变量的比特宽度来确定感兴趣的变量(这里,要进行乘法和除法的输入变量)的比特宽度。
而且,比特精度列表存储部分13存储所生成的感兴趣的变量的比特宽度。
因此,确定所获得的模型描述表达式中要进行乘法和除法的输入变量的比特精度。
如图8中所示,浮点输入变量“a”、“b”和“c”被转换为定点输入变量“A”、“B”和“C”。
在指示了对输出变量和要进行乘法和除法的输入变量的固定处理之后,表达式选择部分14指示中间变量生成部分16、运算顺序确定部分17、以及二项式表达式生成部分18执行对感兴趣的运算符的算术处理的二项式化处理(步骤ST15)。
在“x=a*b*c”情况下,“x=a*b*c”全部都要进行二项式表达式处理。
在这点上,例如,如果感兴趣的输入变量的数目为三个或更多,或者如果所获得的模型描述表达式包括感兴趣的输入变量,并且感兴趣的输入变量的总数目为三个或更多,则表达式选择部分14应该指示二项式表达式处理。
中间变量生成部分16生成与所获得的模型描述表达式中的运算符的数目相对应的数目的中间变量。
在图9中的二项式化“X=A*B*C”情况下,生成一个中间变量“tmpx1”。
比特精度列表存储部分13存储由中间变量生成部分16生成的中间变量。
运算顺序确定部分17确定减少舍入误差的运算的顺序,并且确定在所获得的模型描述表达式中包括的多个变量的分配。
例如,如果固定输入变量“A”、“B”和“C”的比特宽度为“B>A>C”,则运算顺序确定部分17将输入变量A和C分配给中间变量tmpx1的逻辑表达式,并且将输入变量B和中间变量tmpx1分配给输出变量X的逻辑表达式。
二项式表达式生成部分18基于由运算顺序确定部分17确定的多个变量的分配,从所获得的模型描述表达式生成包括至少一个二项式表达式的多个逻辑表达式。
例如,二项式表达式生成部分18生成“tmpx1=A*C”作为中间变量tmpx1的逻辑表达式,并且生成“X=B*tmpx1”作为输出变量X的逻辑表达式。
而且,表达式更新部分19利用由二项式表达式生成部分18生成的多个逻辑表达式来更新在程序存储部分12中存储的所获得的模型描述表达式。
因此,如图9中所示,在程序存储部分12中存储二项式表达式“tmpx1=A*C”和“X=B*tmpx1”替代“x=a*b*c”。
在指示对所获得的模型描述表达式的二项式表达式处理之后,表达式选择部分14确定当前获得的模型描述表达式是否是在程序存储部分12中存储的最后获得的模型描述表达式(步骤ST16)。
由于“x=a*b*c”是电路模型的第一个模型描述表达式,在此情况下,确定该表达式不是最后获得的模型描述表达式。
而且,如果当前获得的模型描述表达式不是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14获得程序存储部分12中的下一模型描述表达式,并且对该新获得的模型描述表达式执行上述第一循环处理。
因此,如图9中所示,将图6中的包括乘法运算符“*”的第一模型描述表达式转换为两个逻辑表达式。
而且,如图9中所示,将图6中的第三模型描述表达式“z=g*h+i*j+k+l”转换为三个逻辑表达式“tmpz1=G*H”、“tmpz2=I*J”以及“Z=tmpz1+tmpz2+k+l”。
而且,将三个中间变量“tmpx1”、“tmpz1”和“tmpz2”添加到比特精度列表21。
而且,如果当前获得的模型描述表达式是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14完成第一循环处理,并且然后开始第二循环处理。
在第二循环处理中,执行通过第一循环处理生成的中间变量(用于二项式化乘法和除法的中间变量)的固定处理。
在图9中,生成三个中间变量“tmpx1”、“tmpz1”和“tmpz2”。
相应地,通过第一循环处理和第二循环处理,将乘法和除法二项式化,并且固定在乘法和除法的二项式表达式中包括的输入变量和输出变量(包括中间变量)。
为此目的,表达式选择部分14首先获得在程序存储部分12开头存储的模型描述表达式(步骤ST21)。
在获得了模型描述表达式之后,表达式选择部分14确定该模型描述表达式是否包括感兴趣的预定运算符。
在第二循环处理中,表达式选择部分14假设乘法运算符和除法运算符是感兴趣的运算符,并且确定所获得的模型描述表达式是否包括感兴趣的运算符(步骤ST22)。
在图9的情况下,当表达式选择部分14获得例如第二逻辑表达式或第六逻辑表达式(它们是包括作为输入变量的感兴趣的运算符(未固定的中间变量)的描述的逻辑表达式)时,表达式选择部分14确定所获得的模型描述表达式具有感兴趣的运算符。
而且,表达式选择部分14确定其它的逻辑表达式不包括感兴趣的运算符。
而且,如果所获得的模型描述表达式不包括感兴趣的运算符,则表达式选择部分14执行稍后描述的步骤ST24。
而且,如果所获得的模型描述表达式包括感兴趣的运算符,则表达式选择部分14提取所获得的模型描述表达式的右侧上的未固定的输入变量作为感兴趣的变量,并且指示变量固定部分15对感兴趣的变量执行固定处理(步骤ST23)。
在图9的情况下,变量固定部分15从例如所获得的模型描述表达式、感兴趣的运算符以及感兴趣的变量确定感兴趣的变量(这里,输入变量)的比特宽度。
而且,比特精度列表存储部分13存储所生成的感兴趣的变量(输入变量)的比特宽度。
由此,确定所获得的模型描述表达式的输入变量的比特精度。
在指示了感兴趣的变量(输出变量)的固定处理之后,表达式选择部分14确定当前获得的模型描述表达式是否是在程序存储部分12中存储的最后获得的模型描述表达式(步骤ST24)。
而且,如果当前获得的模型描述表达式不是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14获得程序存储部分12中的下一个模型描述表达式,并且对该新获得的模型描述表达式执行上述第二循环处理。
通过第二循环处理,如图10所示,由第一循环处理生成的三个中间变量“tmpx1”、“tmpz1”和“tmpz2”被固定,并且被改变为“TMPX1”、“TMPZ1”和“TMPZ2”。
而且,如果当前获得的模型描述表达式是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14完成第二循环处理,并且然后开始第三循环处理。
在第三循环处理中,执行二项式化加法和减法。
为此目的,表达式选择部分14首先获得在程序存储部分12中存储的模型描述表达式(步骤ST31)。
表达式选择部分14获得在算法模型的开头描述的模型描述表达式。
在获得了模型描述表达式之后,表达式选择部分14确定该模型描述表达式是否包括感兴趣的预定变量以及感兴趣的预定运算符。
在第三循环处理中,表达式选择部分14假设加法运算符和减法运算符是感兴趣的运算符,并且确定所获得的模型描述表达式是否包括感兴趣的运算符(步骤ST32)。
而且,如果所获得的模型描述表达式不包括感兴趣的运算符,则表达式选择部分14执行稍后描述的步骤ST34。
如果所获得的模型描述表达式包括感兴趣的运算符,则表达式选择部分14指示中间变量生成部分16、运算顺序确定部分17和二项式表达式生成部分18执行对感兴趣的运算符的算术处理的二项式化处理(步骤ST33)。
中间变量生成部分16生成与从在所获得的模型描述表达式中包括的感兴趣的运算符的数目减去1一样多数目的中间变量。
将通过中间变量生成部分16生成的中间变量添加到比特精度列表存储部分13。
运算顺序确定部分17确定运算的顺序以便减少舍入误差,并且确定在所获得的模型描述表达式中包括的多个变量的分配。
例如,如果存在已固定的输入变量和未固定的输入变量,则分配变量使得已固定的输入变量晚于未固定的输入变量被运算。
另外,例如,如果存在多个已固定的输入变量,则分配变量使得具有较大比特宽度的输入变量晚于具有较小比特宽度的输入变量被运算。
通过该处理,可以降低由乘法和除法引起的舍入误差被多个运算传播和增大的可能性。
二项式表达式生成部分18基于由运算顺序确定部分17确定的多个变量的分配,从所获得的模型描述表达式生成包括至少一个二项式表达式的多个逻辑表达式。
而且,表达式更新部分19利用由二项式表达式生成部分18生成的多个逻辑表达式来更新在程序存储部分12中存储的所获得的模型描述表达式。
在指示了对所获得的模型描述表达式的二项式表达式处理之后,表达式选择部分14确定当前获得的模型描述表达式是否是在程序存储部分12中存储的最后获得的模型描述表达式(步骤ST34)。
而且,如果当前获得的模型描述表达式不是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14获得程序存储部分12中的下一个模型描述表达式,并且对该新获得的模型描述表达式执行上述第三循环处理。
由此,如图11所示,二项式化包括加法和减法的模型描述表达式,同时保持要进行加法和减法的输入变量和输出变量未被固定。
在这点上,图11图示了以下示例,其中“TMPZ2”的比特宽度大于“TMPZ1”的比特宽度。因此,“TMPZ2”被包括于在包括“TMPZ1”作为输入变量的二项式表达式之后放置的二项式表达式中。
而且,如果当前获得的模型描述表达式是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14完成第三循环处理,并且然后开始第四循环处理。
在第四循环处理中,表达式选择部分14执行所有未固定的变量的固定处理。
在该时间点,未固定的变量包括要进行加法和减法的输入变量、仅包括加法和减法的模型描述表达式的输出变量、以及在二项式化包括加法和减法的模型描述表达式时生成的中间变量。
相应地,通过第三循环处理和第四循环处理,二项式化加法和减法,并且固定在加法和减法的二项式表达式中包括的输入变量和输出变量(包括中间变量)。
为此目的,表达式选择部分14首先获得在程序存储部分12的开头存储的模型描述表达式(步骤ST41)。
在获得了模型描述表达式之后,表达式选择部分14确定该模型描述表达式是否包括感兴趣的预定运算符。
在第四循环处理中,表达式选择部分14确定该模型描述表达式是否包括未固定的输入变量和输出变量(步骤ST42)。
而且,如果所获得的模型描述表达式不包括感兴趣的运算符,则表达式选择部分14执行稍后描述的步骤ST44。
而且,如果所获得的模型描述表达式包括感兴趣的运算符,则表达式选择部分14指示变量固定部分15对感兴趣的变量执行固定处理(步骤ST43)。
变量固定部分15确定感兴趣的变量的比特宽度。例如,变量固定部分15首先确定输出变量的比特宽度。
在该点上,二项式表达式的输出变量的整数部分变得具有这样的比特宽度,该比特宽度是向所述两个输入变量的整数部分的比特宽度中较大的比特宽度加一比特的比特宽度。
此后,变量固定部分15考虑输出变量的可容许误差来确定输入变量的比特宽度。
而且,比特精度列表存储部分13存储所生成的感兴趣的变量的比特宽度。
由此,确定所获得的模型描述表达式的输出变量的比特精度。
在指示了感兴趣的变量的固定处理之后,表达式选择部分14确定当前获得的模型描述表达式是否是在程序存储部分12中存储的最后获得的模型描述表达式(步骤ST44)。
而且,如果当前获得的模型描述表达式不是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14获得程序存储部分12中的下一个模型描述表达式,并且对该新获得的模型描述表达式执行上述第四循环处理。
而且,如果当前获得的模型描述表达式是程序存储部分12中的最后获得的模型描述表达式,则表达式选择部分14完成第四循环处理,并且然后完成二项式表达式模型的生成处理。
由此,如图12所示,固定在加法和减法的二项式表达式中包括的所有输入变量和输出变量。
而且,图12中的多个二项式表达式已经优化了各个二项式表达式中的比特宽度。
而且,程序存储部分12存储图12中的二项式表达式模型。
而且,比特精度列表存储部分13存储在图12的二项式表达式模型中包括的所有变量的比特宽度。
如上所述,在根据本实施例的硬件模型生成装置1中,从算法模型程序生成二项式模型程序。此外,生成关于在二项式模型程序的二项式表达式中包括的多个变量的比特精度的信息。
以此方式,将算法模型程序中的逻辑表达式二项式化,并且固定二项式表达式的变量,使得二项式模型程序变得可以使用网表等作为硬件模型程序。
而且,在该实施例中,如图4所示,预先二项式化算法模型程序中的乘法和除法运算,并且然后二项式化加法和减法运算。
此外,在该实施例中,如果二项式化加法和减法运算,则执行二项式化,使得预先固定的并且与乘法和除法运算相关的输入变量和输出变量(在乘法和除法运算的二项式化时生成的中间变量)在与加法和减法运算相关的输入变量之后进行加法和减法。
相应地,在该实施例中,最小化具有舍入误差的乘法和除法运算的运算数目,并且因此抑制舍入误差的增大。
而且,在该实施例中,可以确定乘法和除法运算的输入变量的比特宽度,使得乘法和除法的舍入误差保持在输出变量的可容许误差之内。
而且,在该实施例中,执行二项式化,使得具有较大比特宽度的输入变量(中间变量)晚于具有较小比特宽度的输入变量(中间变量)被运算。
相应地,可以最小化比特宽度的舍入误差。
此外,在该实施例中,如图5所示,通过重复仿真并且同时相等地减少所获得的逻辑表达式的输入变量的比特宽度,来获得第一次不允许获得可容许误差的输入变量的比特数目(在下文中,称为具有不容许误差的比特数目)。
此后,在该实施例中,对于每个感兴趣的变量,通过向具有不容许误差的一个感兴趣的输入变量的比特数目加一比特,来重复执行仿真。
而且,在该实施例中,确定产生输出变量的最大误差的感兴趣的变量的比特宽度作为仿真的比特宽度,也就是说,向具有不容许误差的比特数目加一比特。
相应地,在该实施例中,每个二项式表达式中的输入变量的比特宽度变为允许获得可容许误差的最小比特宽度。
由此,可以获得以下优点作为本实施例的优点。
第一,在该实施例中,可以自动地将使用浮点变量描述的算法模型程序转换为使用定点变量描述的硬件模型程序(二项式表达式模型程序)。
此外,在该实施例中,即使算法模型程序的逻辑表达式是具有带有三项或更多的输入变量的多项式逻辑表达式,也可以自动地将该逻辑表达式转换为硬件模型程序。
第二,在该实施例中,可以自动地确定硬件模型程序中多个二项式表达式的顺序,从而按照考虑舍入误差的运算顺序执行运算。
第三,在该实施例中,对在多项式逻辑表达式中包括的输入变量之中增加输出误差的输入变量进行自动识别,并且依据该输入变量固定比特宽度。
由此,可以保持由输入变量误差引起的输出变量误差不超出可容许误差。
第四,在该实施例中,通过给增加输出误差的、与乘法和除法运算相关的输入变量赋予优先级来执行比特宽度的分配,从而可以限制由不必要的比特宽度引起的电路的封装面积的增加,并且保持输出变量误差在可容许误差之内。
相应地,在该实施例中,例如,通过设置大的可容许误差,可以减小电路的封装面积。
而且,相反,在该实施例中,通过设置小的可容许误差,可以确保高比特精度。
也就是说,在该实施例中,可以根据要设计的电路而优化多个二项式表达式的顺序以及变量的比特宽度。
第五,在该实施例中,可以通过如图4所示的某循环处理来执行自动处理。
相应地,在该实施例中,可以通过对于变量数目的线性处理量来确定比特精度。
而且,在该实施例中,如果要处理的变量总数增加,则处理量不会指数增加,并且因此可以在处理量线性增加的情况下确定比特精度。
上述实施例是本发明的优选实施例的示例。然而,本发明并不局限于此,并且各种变形和修改是可能的,而不偏离本发明的精神和范围。
变形
例如,在图4所示的流程图的第三和第四循环处理中,表达式选择部分14可以执行与第一和第二循环处理相同的处理。
也就是说,在第三循环处理中,表达式选择部分14可以执行:将包括加法和减法的模型描述表达式的输出变量固定、将与加法和减法相关的输入变量固定、并且二项式化加法和减法。
而且,在第四循环处理中,表达式选择部分14可以执行由第三循环处理生成的中间变量(用于二项式化加法和减法的中间变量)的固定处理。
以此方式,即使改变了第三和第四循环处理,也可以从算法模型程序生成二项式模型程序(硬件模型程序),并且进一步确定根据电路的二项式表达式的变量的合适的比特精度。
本申请包含与在2009年1月20日向日本专利局提交的日本优先权专利申请JP 2009-010015中公开的主题相关的主题,通过引用将其全部内容合并于此。
本领域技术人员应该理解,根据设计需要和其它因素,可以出现各种修改、组合、子组合以及变化,只要它们在所附权利要求或其等效物的范围内即可。
Claims (12)
1.一种算术程序转换装置,包括:
程序存储部分,存储通过包括多个输入变量、运算符和输出变量的逻辑表达式描述要设计的电路的算术程序;
中间变量生成部分,如果在该程序存储部分中存储了具有三个输入变量或更多输入变量的逻辑表达式,则该中间变量生成部分生成要用于将该逻辑表达式转换为包括两个输入变量和一个输出变量的多个二项式表达式的中间变量;
表达式转换部分,如果通过中间变量生成部分生成了中间变量,则该表达式转换部分将该逻辑表达式转换为多个二项式表达式,所述多个二项式表达式包括用于获得中间变量的二项式表达式以及用于从中间变量获得输出变量的二项式表达式;
表达式更新部分,如果通过表达式转换部分的转换处理生成了多个二项式表达式,则该表达式更新部分用所述多个二项式表达式更新在程序存储部分中存储的原始逻辑表达式;
比特宽度确定部分,确定在程序存储部分中存储的逻辑表达式的输出变量、输入变量以及中间变量的比特宽度;以及
比特宽度存储部分,存储输出变量的比特宽度、输入变量的比特宽度以及中间变量的比特宽度。
2.如权利要求1所述的算术程序转换装置,其中,中间变量生成部分和表达式转换部分将具有三个输入变量或更多输入变量并且被存储在程序存储部分中的逻辑表达式转换为多个逻辑表达式,从而通过二项式表达式表示在逻辑表达式中包括的乘法和除法运算,以及
中间变量生成部分和表达式转换部分二项式化在程序存储部分中存储的逻辑表达式的加法和减法运算,从而为二项式化乘法和除法运算而生成的中间变量在与在具有三个输入变量或更多输入变量的逻辑表达式中包括的加法和减法运算相关的输入变量之后被用于加法和减法,由此将逻辑表达式转换为多个二项式表达式。
3.如权利要求1或2所述的算术程序转换装置,还包括获取部分,其将依序从程序存储部分获得在程序存储部分中存储的逻辑表达式的处理重复多次,
其中,为了二项式化在逻辑表达式中包括的乘法和除法运算,
在逻辑表达式的第一顺序获取处理中,
该获取部分使得比特宽度确定部分确定所获得的逻辑表达式的输出变量的比特宽度以及与乘法和除法运算相关的输入变量的比特宽度,
该获取部分使得中间变量生成部分和表达式转换部分生成中间变量并且二项式化乘法和除法运算,并且
该获取部分使得表达式更新部分更新在程序存储部分中存储的逻辑表达式;以及
在逻辑表达式的第二顺序获取处理中,
该获取部分使得比特宽度确定部分确定在乘法和除法运算的二项式表达式中包括的中间变量的比特宽度。
4.如权利要求3所述的算术程序转换装置,
其中,为了二项式化在逻辑表达式中包括的加法和减法运算,
在第三逻辑表达式顺序获取处理中,
该获取部分使得中间变量生成部分和表达式转换部分生成中间变量并且二项式化加法和减法运算,并且
该获取部分使得表达式更新部分更新在程序存储部分中存储的逻辑表达式;以及
在第四逻辑表达式顺序获取处理中,
该获取部分使得比特宽度确定部分确定尚未确定其比特宽度的变量的比特宽度。
5.如权利要求3所述的算术程序转换装置,
其中,如果获取部分获得的逻辑表达式仅仅包括乘法和除法运算符,则中间变量生成部分生成与从乘法和除法运算符的数目减1一样多的中间变量,以及
如果获取部分获得的逻辑表达式包括乘法和除法运算符以及加法和减法运算符,则中间变量生成部分生成与乘法和除法运算符的数目一样多的中间变量。
6.如权利要求1所述的算术程序转换装置,
其中,比特宽度确定部分基于逻辑表达式的输出变量的可容许误差,确定输出变量、输入变量以及中间变量的比特宽度。
7.如权利要求1所述的算术程序转换装置,
其中,在将在程序存储部分中存储的逻辑表达式更新为多个逻辑表达式之前,比特宽度确定部分使用在程序存储部分中存储的逻辑表达式,确定输出变量的比特宽度以及与乘法和除法运算相关的输入变量的比特宽度,
比特宽度存储部分存储通过比特宽度确定部分确定的比特宽度,以及
当表达式转换部分二项式化加法和减法运算时,则表达式转换部分将其比特宽度没有存储在比特宽度存储部分中的输出变量识别为中间变量。
8.如权利要求1所述的算术程序转换装置,
其中,关于在所获得的逻辑表达式中包括的多个输入变量,转换部分将多个输入变量分配到多个二项式表达式,使得与具有较小比特宽度的输入变量相比,具有较大比特宽度的输入变量在后面的二项式表达式中被运算。
9.如权利要求1所述的算术程序转换装置,
其中,在比特宽度确定部分通过重复仿真且同时相等地减少所获得的逻辑表达式的输入变量的比特宽度,而首次获得具有不容许误差的输入变量的比特数目之后,
对于每个输入变量,比特宽度确定部分每次在向具有不容许误差的一个输入变量的比特数目加一比特的情况下重复执行仿真,并且将产生输出变量的最大误差的输入变量的比特宽度确定为该仿真的比特宽度。
10.如权利要求9所述的算术程序转换装置,
其中,比特宽度确定部分使用除了已经确定了其比特宽度的输入变量以及感兴趣的输入变量之外的输入变量作为浮点变量来执行仿真。
11.一种转换算术程序的方法,该方法包括以下步骤:
生成要用于将构成在程序存储部分中存储的算术程序并且包括三个输入变量或更多输入变量、运算符以及输出变量的逻辑表达式转换为包括两个输入变量和一个输出变量的多个二项式表达式的中间变量;
将该逻辑表达式转换为多个二项式表达式,所述多个二项式表达式包括用于获得中间变量的二项式表达式以及用于从中间变量获得输出变量的二项式表达式;
用所述多个转换后的二项式表达式更新在程序存储部分中存储的原始逻辑表达式;
确定在程序存储部分中存储的逻辑表达式中包括的输出变量、输入变量以及中间变量的比特宽度;以及
将输出变量的比特宽度、输入变量的比特宽度以及中间变量的比特宽度存储在比特宽度存储部分中。
12.一种用于使得计算机实现包括以下内容的处理的程序:
程序存储部分,存储通过包括多个输入变量、运算符和输出变量的逻辑表达式来描述要设计的电路的算术程序;
中间变量生成部分,如果在该程序存储部分中存储了具有三个输入变量或更多输入变量的逻辑表达式,则该中间变量生成部分生成要用于将该逻辑表达式转换为包括两个输入变量和一个输出变量的多个二项式表达式的中间变量;
表达式转换部分,如果通过中间变量生成部分生成了中间变量,则该表达式转换部分将该逻辑表达式转换为多个二项式表达式,所述多个二项式表达式包括用于获得中间变量的二项式表达式以及用于从中间变量获得输出变量的二项式表达式;
表达式更新部分,如果通过表达式转换部分的转换处理生成了多个二项式表达式,则该表达式更新部分用所述多个二项式表达式更新在程序存储部分中存储的原始逻辑表达式;
比特宽度确定部分,确定在程序存储部分中存储的逻辑表达式的输出变量、输入变量以及中间变量的比特宽度;以及
比特宽度存储部分,存储输出变量的比特宽度、输入变量的比特宽度以及中间变量的比特宽度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009010015A JP2010170196A (ja) | 2009-01-20 | 2009-01-20 | 演算プログラム変換装置、演算プログラム変換方法およびプログラム |
JP010015/09 | 2009-01-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101782894A true CN101782894A (zh) | 2010-07-21 |
CN101782894B CN101782894B (zh) | 2012-12-05 |
Family
ID=42337873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010100046859A Expired - Fee Related CN101782894B (zh) | 2009-01-20 | 2010-01-20 | 算术程序转换装置、算术程序转换方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8434036B2 (zh) |
JP (1) | JP2010170196A (zh) |
CN (1) | CN101782894B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103314379A (zh) * | 2010-10-18 | 2013-09-18 | 艾尔葛托奇普股份有限公司 | 定制集成电路所用的架构引导式最佳系统精度定义算法 |
CN105320597A (zh) * | 2014-06-26 | 2016-02-10 | 帝斯贝思数字信号处理和控制工程有限公司 | 用于中断电子控制器的总程序的执行的方法 |
CN105404497A (zh) * | 2015-10-26 | 2016-03-16 | 北京锐安科技有限公司 | 一种逻辑表达式的解析方法及装置 |
CN106020818A (zh) * | 2016-05-16 | 2016-10-12 | 珠海格力电器股份有限公司 | 计算逻辑生成方法和装置 |
US10165686B2 (en) | 2014-07-29 | 2018-12-25 | Tdk-Micronas Gmbh | Electrical component package with surface leads |
CN110914840A (zh) * | 2017-07-19 | 2020-03-24 | 国立大学法人横浜国立大学 | 解探索设备及程序 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6492739B2 (ja) * | 2015-02-20 | 2019-04-03 | セイコーエプソン株式会社 | 回路装置、物理量検出装置、電子機器及び移動体 |
JP6586735B2 (ja) | 2015-02-20 | 2019-10-09 | セイコーエプソン株式会社 | 回路装置、物理量検出装置、電子機器及び移動体 |
CN107967246A (zh) * | 2016-10-19 | 2018-04-27 | 航天信息股份有限公司 | 报表计算方法以及装置 |
KR102348795B1 (ko) * | 2020-11-02 | 2022-01-07 | 주식회사 바움 | 부동 소수점 방식에서 고정 소수점 방식으로의 변환 수행시 비트 폭 최적화 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4389706A (en) * | 1972-05-03 | 1983-06-21 | Westinghouse Electric Corp. | Digital computer monitored and/or operated system or process which is structured for operation with an improved automatic programming process and system |
US4227245A (en) * | 1972-06-01 | 1980-10-07 | Westinghouse Electric Corp. | Digital computer monitored system or process which is configured with the aid of an improved automatic programming system |
US4215406A (en) * | 1972-08-22 | 1980-07-29 | Westinghouse Electric Corp. | Digital computer monitored and/or operated system or process which is structured for operation with an improved automatic programming process and system |
JP2509279B2 (ja) | 1988-02-16 | 1996-06-19 | 富士通株式会社 | 浮動小数点数一固定小数点数変換装置 |
JP2001043067A (ja) | 1999-07-30 | 2001-02-16 | Hitachi Ltd | 演算装置 |
US6745160B1 (en) * | 1999-10-08 | 2004-06-01 | Nec Corporation | Verification of scheduling in the presence of loops using uninterpreted symbolic simulation |
JP4086459B2 (ja) | 2000-11-13 | 2008-05-14 | Necエレクトロニクス株式会社 | 固定小数点データ生成方法及び固定小数点データ生成回路 |
US7457838B2 (en) * | 2003-12-03 | 2008-11-25 | Marvell World Trade Ltd. | Methods and apparatus for performing calculations using reduced-width data |
JP4861087B2 (ja) | 2006-07-31 | 2012-01-25 | 富士通株式会社 | 演算プログラム変換装置、演算プログラム変換プログラム、演算プログラム変換方法 |
-
2009
- 2009-01-20 JP JP2009010015A patent/JP2010170196A/ja active Pending
-
2010
- 2010-01-19 US US12/689,579 patent/US8434036B2/en not_active Expired - Fee Related
- 2010-01-20 CN CN2010100046859A patent/CN101782894B/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103314379A (zh) * | 2010-10-18 | 2013-09-18 | 艾尔葛托奇普股份有限公司 | 定制集成电路所用的架构引导式最佳系统精度定义算法 |
CN105320597A (zh) * | 2014-06-26 | 2016-02-10 | 帝斯贝思数字信号处理和控制工程有限公司 | 用于中断电子控制器的总程序的执行的方法 |
CN105320597B (zh) * | 2014-06-26 | 2018-02-16 | 帝斯贝思数字信号处理和控制工程有限公司 | 用于中断电子控制器的总程序的执行的方法 |
US10165686B2 (en) | 2014-07-29 | 2018-12-25 | Tdk-Micronas Gmbh | Electrical component package with surface leads |
CN105404497A (zh) * | 2015-10-26 | 2016-03-16 | 北京锐安科技有限公司 | 一种逻辑表达式的解析方法及装置 |
CN105404497B (zh) * | 2015-10-26 | 2018-05-25 | 北京锐安科技有限公司 | 一种逻辑表达式的解析方法及装置 |
CN106020818A (zh) * | 2016-05-16 | 2016-10-12 | 珠海格力电器股份有限公司 | 计算逻辑生成方法和装置 |
CN110914840A (zh) * | 2017-07-19 | 2020-03-24 | 国立大学法人横浜国立大学 | 解探索设备及程序 |
CN110914840B (zh) * | 2017-07-19 | 2023-06-16 | 国立大学法人横浜国立大学 | 解探索设备及程序 |
Also Published As
Publication number | Publication date |
---|---|
CN101782894B (zh) | 2012-12-05 |
US8434036B2 (en) | 2013-04-30 |
JP2010170196A (ja) | 2010-08-05 |
US20100185836A1 (en) | 2010-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101782894B (zh) | 算术程序转换装置、算术程序转换方法 | |
US5751592A (en) | Apparatus and method of supporting functional design of logic circuit and apparatus and method of verifying functional design of logic circuit | |
US4899273A (en) | Circuit simulation method with clock event suppression for debugging LSI circuits | |
US5790760A (en) | Program generating apparatus and method thereof | |
US5369607A (en) | Floating-point and fixed-point addition-subtraction assembly | |
JP4759392B2 (ja) | 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法 | |
WO2006043345A1 (ja) | プロセッサ | |
CN111077768B (zh) | 优化装置及优化装置的控制方法 | |
US7478363B2 (en) | Method for translating a given source program into an object program containing computing expressions | |
US20020010692A1 (en) | Layout method arranging nodes corresponding to lsi elements having a connecting relationship | |
JP6528884B1 (ja) | 学習プログラム、学習方法、及び情報処理装置 | |
US8504347B2 (en) | Simulation apparatus, simulation method, and program to perform simulation on design data of a target circuit | |
JP2020187453A (ja) | 最適化装置および最適化装置の制御方法 | |
US5530664A (en) | Method and apparatus for automatically designing logic circuit, and multiplier | |
CN117313593A (zh) | 一种组合逻辑电路的寄存器传输级代码生成方法及系统 | |
Benini et al. | Telescopic units: Increasing the average throughput of pipelined designs by adaptive latency control | |
Doi et al. | Minimization of fractional wordlength on fixed-point conversion for high-level synthesis | |
JP3134132B2 (ja) | 論理回路自動生成装置 | |
Luk | A declarative approach to incremental custom computing | |
Zelmat et al. | Multi-objective approach for IIR filter design and bit-width optimization | |
JP5935563B2 (ja) | 設計支援装置、設計支援方法及びプログラム | |
JP6398729B2 (ja) | 設計支援装置、および設計支援方法 | |
WO2011007640A1 (ja) | 動作合成装置、動作合成方法、ならびに、記録媒体 | |
Pahner et al. | Optimizing ferromagnetic characteristics to reduce Newton iterations | |
JP3187506B2 (ja) | 論理回路設計支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121205 Termination date: 20140120 |