KR970006408B1 - 논리회로의 자동설계방법 및 그 장치와 승산기 - Google Patents

논리회로의 자동설계방법 및 그 장치와 승산기 Download PDF

Info

Publication number
KR970006408B1
KR970006408B1 KR1019930028580A KR930028580A KR970006408B1 KR 970006408 B1 KR970006408 B1 KR 970006408B1 KR 1019930028580 A KR1019930028580 A KR 1019930028580A KR 930028580 A KR930028580 A KR 930028580A KR 970006408 B1 KR970006408 B1 KR 970006408B1
Authority
KR
South Korea
Prior art keywords
signal
multiplier
circuit
bits
value
Prior art date
Application number
KR1019930028580A
Other languages
English (en)
Other versions
KR940015785A (ko
Inventor
신따로 즈바따
다모쯔 니시야마
Original Assignee
마쯔시다 덴기 산교 가부시끼가이샤
모리시다 요이찌
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 마쯔시다 덴기 산교 가부시끼가이샤, 모리시다 요이찌 filed Critical 마쯔시다 덴기 산교 가부시끼가이샤
Publication of KR940015785A publication Critical patent/KR940015785A/ko
Application granted granted Critical
Publication of KR970006408B1 publication Critical patent/KR970006408B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Complex Calculations (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

내용없음.

Description

논리회로의 자동설계방법 및 그 장치와 승산기
제1도는 본 발명의 실시예 1에 있어 논리회로의 자동설계시스템의 하드웨어 구성을 표시하는 불록도.
제2도는 상기 자동설계시스템의 기억장치의 구성을 표시하는 도면.
제3a도∼제3c도는 각각 상기 기억장치의 회로데이터 기억부에 격납되는 회로, 상기 회로를 표시하는 기능기술정보, 상기 회로의 기능회로정보를 표시하는 도면.
제4a도∼제4c도는 각각 기능소자인 승산기를 포함하는 회로, 상기 회로를 표시하는 기능기술정보, 상기 회로의 기능회로정보를 표시하는 도면.
제5도는 상기 자동설계시스템의 설계처리를 표시하는 메인루틴의 프로우챠트.
제6도는 제5도에 있어서 스텝 43의 상세한 처리를 표시하는 프로우챠트.
제7a도∼제7d도는 기능소자인 승산기를 표시하는 도면.
제8도는 제6도에 있어 스텝 85의 상세한 처리를 표시하는 프로우챠트.
제9a도∼제9d도는 각각 제8도에 있어 스텝 1002, 1006, 1008, 1010에서 생성되는 회로를 표시하는 회로도.
제10a도∼제10c도는 변환규칙 1을 표시하는 도면.
제11도는 제8도에 있어 스텝 1012의 상세한 처리를 표시하는 프로우챠트.
제12도는 제8도에 있어 스텝 1013의 상세한 처리를 표시하는 프로우챠트.
제13도는 변환규칙 2를 표시하는 도면.
제14도는 제12도에 있어 스텝 142의 처리를 행하는 구성을 그 기능에 착안하여 표시하는 블록도.
제15도는 제12도에 있어 스텝 144의 상세한 처리를 표시하는 프로우챠트.
제16a도 및 제16b도는 변환규칙 3을 표시하는 도면.
제17도는 변환규칙 3의 내부 표현을 표시하는 설명도.
제18도는 제12도에 있어 스텝 144의 처리를 행하는 구성을 그 기능에 착안하여 표시하는 블록도.
제19도는 변환규칙 4를 표시하는 도면.
제20도는 제12도에 있어 스텝 147의 처리를 행하는 구성을 그 기능에 착안하여 표시하는 블록도.
제21도는 본 발명의 실시예 2에 있어서, 제12도에 표시하는 실시예 1의 스텝 141∼147과 동일한 처리를 행하는 구성의 변형예를 표시하는 블록도.
제22도는 본 발명의 실시예 3에 있어서, 제8도에 표시하는 실시예 1의 스텝 1013에서 행하여지는 처리의 다른 예를 표시하는 프로우챠트.
제23도는 변환규칙 5를 표시하는 도면.
제24도는 본 발명의 실시예에 4에 있어서, 제12도에 표시하는 실시예 1의 스텝 144에서 행하여지는 처리의 다른 예를 표시하는 프로우챠트.
제25a도 및 제25b도는 변환규칙 6을 표시하는 도면.
제26도는 본 발명의 실시예 5에 있어 변환규칙 7을 표시하는 도면.
제27도는 변환규칙 7에 의한 처리를 행하는 구성을 그 기능에 착안하여 표시하는 블록도.
제28a도∼제28c도는 본 발명의 실시예 6에 있어 변환규칙 4의 다른 예를 표시하고, 그들의 변환규칙에 의해 생성되는 승산기를 표시하는 도면.
[발명의 배경]
본 발명은 논리회로, 특히 승산기 또는 승산기를 포함하는 논리회로의 자동설계방법 및 그 장치와 승산기에 관한 것이다.
종래, 디지털데이터를 승산하는 승산기는 단체(單體)의 LSI로서 사용되는 것 외에 DSP(digital signal processor)등의 LSI에의 내장용으로서도 많이 사용되고 있다. 이러한 종류의 승산기는 승산의 비트폭의 증대나 용도의 다양화 등에 수반하여 더욱 고속화나 회로규모, 칩면적의 감소가 요구되어 여러가지 승산방법을 적용한 회로 방식이 제안되고 있다.
예를 들면, 가장 고속인 승산방법의 하나인 2비트 부스의 리코드방식을 사용한 승산방법이 「일경(日經) 일렉트로닉스」(1978년 5월 29일호 76페이지∼89페이지)에 표시되어 있다. 이 승산방법은 다음과 같은 알고리즘에 의해 승산의 고속화 등을 도모하고 있다.
예를 들면, m비트폭의 승수 Y와, n비트폭의 피승수 X를 승산하는 경우, 승수 Y는 2의 보수(補數) 표현으로 다음과 같이 표시된다.
단, ym=ys, q는 m이 우수의 경우 q=m/2, 기수의 경우 q=(m-1)/2, 그리고 y0는 편의상의 값으로, y0=0이다.
그래서, X와 Y의 적(積) P는,
으로 된다.
여기서, y2i, y2i+1, y2i+2는 각각 0 또는 1의 값을 취하므로, (y2i+y2i+1-y2i+2)는 [표 1]에 표시하는 것과 같이, 0±1 또는 ±2로 되어, 각 부분적은 0, ±X 또는 ±2X의 어느 것인가에 22i를 곱한 것이 된다.
그래서, 각 부분적(部分積)을 생성하는 회로는 주로 피승수 ±X를 2배하기 위해 1비트 시프트하는 시프터와, 기수(0, ±X 또는 ±2X)를 2 배(가중값)하기 위해 2비트씩 시프트하는 시프터로서 구성할 수가 있다.
또, 부분적(部分積)의 총계를 구하는 회로의 논리단수는 부분적의 수가 q=m/2개(m이 우수) 또는 q=(m-1)/2개(m이 기수)로 되므로 2입력 가산기를 2진트리 형상으로 접속하는 경우, 대략 logm-1단(m이 우수) 또는 log(m-1)-1 단(m이 기수)이 된다. 또, 2비트 부스의 리코드방식 이외의 고속승산기로서 용장 2진수에 의한 승산기가 일본국 특허공개 평03-017737에 의해 제안되어 있다.
상기와 같은 승산기에서는, 예를 들면 승수가 24비트인 경우, 부분적수가 12개, 논리단수가 4단이 된다.
한편, 승산속도의 고속화나 회로규모의 감소는, 상기와 같은 승산알고리즘의 성능 향상에 의한 것에 한정되지 않고, 논리소자레벨에서의 회로의 최적화 등에 의해서도 도모된다.
즉, 최근에는 승산기나 승산기를 포함하는 논리회로는, 대부분의 경우 자동설계장치를 사용하여 설계된다. 이 종류의 장치에 있어서는, 논리소자레벨의 회로정보를 칩에 실장되는 실장소자레벨의 회로정보에 전개할 때 등에, 회로의 일부를 보다 논리소자나 논리단수가 적은 등가회로로 치환하는 등 하여 용장한 회로 부분의 삭제 등을 행하도록 되어 있다.
이와 같은 자동설계장치는 회로에 요구되는 기능이 하드웨어 기술언어 등에 의해 표시된 기능기술정보가 입력되면, 이것을 주로 기능만이 정의된 가상의 기능소자로 되는 회로를 표시하는 내부 표현형식의 기능회로정보를 변환하고, 더욱 실제로 존재하는 논리소자로 되는 회로를 표시하는 논리회로정보로 변환한 후, 특정의 테크날리지로 실장되는 실장소자가 할당된 회로를 표시하는 실장회호정보를 생성하도록 되어 있다.
그러나, 종래의 자동설계장치에 있어서는, 논리소자레벨에서의 회로의 최적화는 예를 들면 미리 설정된 소정의 패턴에 합치되는 회로부분만이 보다 논리소자나 논리단수가 적은 등가회로로 치환되는 것에 의해 행하여지기 때문에, 승수 또는 피승수가 정수인 경우에 이와 같은 최적화를 행하여도, 반드시 회로 전체의 논리소자수 등이 최소로 되는 것과 같은 회로를 생성할 수는 없다고 하는 문제점이 있었다. 특히, 부분적을 가산하기 위해 2입력가산기를 2진트리형상으로 접속하는 경우, 전 비트의 값이 0이 되는 부분적의 가산회로에 관련하는 부분을 생력하면, 통상 2진트리의 배런스가 무너지므로 부분적인 회로의 치환에 의해 논리 소자수나 논리단수를 최소로 하는 것 등이 곤란한다.
[발명의 개시]
본 발명은 상기의 점에 감안하여, 승수 또는 피승수가 정수인 승산을 행하는 승산기나 승산기를 포함하는 논리회로를 생성하는 경우에, 논리소자수나 논리단수가 적은 회로를 생성할 수 있는 논리회로의 자동설계방법 및 그 장치, 그리고 승수 또는 피승수가 정수인 승산을 행하는 논리소자수나 논리단수가 적어서 LSI화에 적당한 고속승산기의 제공을 목적으로 하고 있다.
상기 목적을 달성하기 위해, 정수인 승수와 피승수와의 적을 구하는 논리회로를 표시하는 정보를 생성하는 논리회로의 자동설계방법은, (a)상기 승수의 값을 입력하는 스텝과, (b)상기 승수에 있어서 값이 1인 비트를 검출하는 스텝과, (c)상기 (b)의 스텝에 있어 검출결과에 따라서, 상기 승수에서의 값이 1인 비트에 관해서만 상기 승수와 피승수의 부분적을 구하는 부분적 연산회로를 표시하는 정보를 생성하는 스텝과, (d)상기 부분적 연산회로에 의해 구해지는 부분적의 부분적 합계(部分積和)를 구하는 부분적 합계 연산회로를 표시하는 정보를 생성하는 스텝을 구비하고 있다.
또, 상기 목적을 달성하기 위해, 정수인 승수와 피승수와의 적을 구하는 논리회로를 표시하는 정보를 생성하는 논리회로의 자동설계장치는, 상기 승수의 값을 입력하는 입력수단과, 상기 승수에 있어서 값이 1인 비트를 검출하는 검출수단과, 상기 검출수단에 있어 검출결과에 따라 상기 승수에서의 값이 1인 비트에 관해서만 상기 승수와 피승수의 부분적을 구하는 부분적 연산회로를 표시하는 정보를 생성하는 제1의 회로정보 생성수단과, 상기 부분적 연산회로에 의해 구해지는 부분적인 부분적 합계를 구하는 부분적 합계 연산회로를 표시하는 정보를 생성하는 제2의 회로정보 생성수단을 구비하고 있다.
상기의 구성에 의해, 승수에서의 값이 1인 비트에 관해서만 피승수와의 부분적을 구하는 부분적 연산회로 및 부분적 합계를 구하는 부분적 합계 연산회로를 표시하는 정보가 생성된다. 이 때문에, 회로규모의 감소나 승산속도의 고속화를 용이하게 도모할 수가 있다.
바람직하게는 상기 논리회로의 자동설계방법은, (e)상기 승수에 있어서, 값이 1인 비트가 4비트 이상 있을 경우에, 값이 1인 비트를 그 개수가 대략 같게 되도록 그룹으로 분할하는 스텝을 더욱 구비하고, 상기 (d)의 스텝에서는 각 그룹에 대응하는 부분적 합계를 가산하는 부분적 합계 연산회로를 표시하는 정보가 생성되는 것으로 한다.
또, 상기 논리회로의 자동설계장치는 상기 승수에 있어서, 값이 1인 비트의 수를 검출하는 비트수 검출수단과, 상기 비트수 검출수단에 의해 검출된 상기 비트의 개수가 4이상인 경우에, 값이 1인 비트를 그 계수가 대략 같게 되도록 그룹으로 분할하는 수단을 더욱 구비하여, 상기 제2의 회로정보 생성수단은 각 그룹에 대응하는 부분적 합계를 가산하는 부분적 합계 연산회로를 표시하는 정보를 생성하는 것으로 한다.
이것에 의해 값이 1인 비트에 편향이 있어도, 그 수가 대략 같게 되도록 그룹으로 분할되어 부분적 합계를 가산하는 부분적 합계 연산회로를 표시하는 정보가 생성된다. 이 때문에, 부분적 합계 연산회로를 2진트리형상으로 배런스 좋게 구성시킬 수가 있어 회로의 논리수단도 적게 억제하여 한층 승산속도를 빠르게 하는 것이 용이하게 된다.
또한, 상기 (e)의 스텝 또는 그룹으로 분할하는 수단에 의해 그룹으로 분할하는 것은 승수에 있어서, 값이 1인 비트의 개수가 2 또는 3비트일 때에서도 행하여지게 하여도 지장은 없다.
바람직하게는 상기 논리회로의 자동설계방법은, (f)상기 승수에 있어서 값이 1인 비트의 개수가 상기 승수의 전 비트수의 약 1/2이상인 경우에, 상기 승수의 논리부정 수를 구하는 논리부정회로를 표시하는 정보를 생성하는 스텝을 더욱 구비하고, 상기 (b)∼(d)의 스텝에서는 상기 논리부정수를 승수로서 처리가 행하여져 상기 논리회로의 자동설계방법은, (g)상기 논리부정수와 상기 피승수의 적에 의거하여, 원래의 승수와 상기 피승수와의 적을 구하는 적보정회로를 표시하는 정보를 생성하는 스텝을 더욱 구비한 것으로 한다.
또, 상기 논리회로의 자동설계장치는 상기 승수에 있어서, 값이 1인 비트의 개수가 상기 승수의 전 비트수가 약 1/2이상인 경우에, 상기 승수의 논리부정수를 구하는 논리부정회로를 표시하는 정보를 생성하는 제3의 회로정보 생성수단을 더욱 구비하여, 상기 검출수단, 제1의 회로정보 생성수단 및 제2의 회로정보 생성수단은 상기 논리부정수를 승수로서 처리를 행하여, 상기 논리회로의 자동설계장치는 상기 논리부정수와 상기 피승수와의 적에 의거하여 원래의 승수와 상기 피승수와의 적을 구하는 적보정회로를 표시하는 정보를 생성하는 제4의 회로정보 생성수단을 더욱 구비하고 있는 것으로 한다.
이것에 의해 승수에 있어서, 값이 1인 비트의 개수가 승수의 전 비트수의 약 1/2이상인 경우에는, 승수의 논리부정수를 구하는 논리부정회로를 표시하는 정보가 생성되어, 논리부정수를 승수로서, 즉 값이 1인 비트가 적은 승수를 대상으로서 승산을 행하는 회로를 표시하는 정보가 생성된다. 이 때문에, 고속인 승산기나 회로규모가 작은 승산기를 구성하는 것이 용이하게 된다는 효과가 있다.
또, 상기의 목적을 달성하기 위해, n비트의 수를 표시하는 신호 X와 m비트의 정수를 표시하는 신호 A를 입력으로서 n+m비트의 적 P를 출력하는 승산기와, 상기 정수 A의 논리부정신호 A0와 상기 신호 X를 입력으로서, 그 적을 표시하는 신호 P0를 출력하는 승산수단과, 상기 신호 X와 신호 P0를 입력으로서, X·(2 -1)-P0를 연산하여 상기 P로서 출력하는 보정수단을 구비하고 있다.
상기 구성에 의해, 승산수단은 승수 A의 전 비트의 논리부정을 취한 값을 승수 A0로서, 이 승수 A0와 피승수 X를 승산하는 것이다. 이 때문에, 승수 A에서의 값이 1인 비트의 개수가 승수 A의 전 비트수의 약 1/2이상인 경우에도, 부분적수를 m/2이하로 할 수가 있다. 따라서, 회로면적의 삭감이나 승산속도의 향상을 도모할 수가 있다.
[실시예]
이하, 본 발명의 실시예를 도면에 의거하여 설명한다.
(실시예 1)
제1도는 논리회로의 자동설계시스템의 하드웨어 구성의 일예를 표시하는 블록도이다.
제1도에 있어서, 입력장치(11)는 자동설계시스템에 설계시키려고 하는 회로에 대한 기능기술정보 등을 입력하는 것이다. 이 입력장치(11)로서는 키보드나 마우스, 라이트펜, 카드리더, 스키메틱 엔트리 시스템 등이 사용된다. 또, 직접 오퍼레이터의 조작에 의해 입력하는 것에 한정되지 않고, 사전에 상기와 같은 장치에 의해 입력된 정보를 파일로서 기억하는 자기디스크장치나 다른 장치에서 보내어지는 정보를 수신하는 네트워크장치 등을 사용할 수도 있다.
중앙처리장치(12)는 후술하는 여러가지의 처리를 실행하는 것에 의해, 논리합성이나 회로 최적화 처리 등의 회로설계처리를 행하는 것이다.
출력장치(13)는 중앙처리장치(12)의 설계처리결과인 회로정보나, 처리에 관한 각종 정보 등을 출력하는 것이다. 이 출력장치(13)로서는 도형표시나 문자표시, 프린터, 프롯터 등이 사용된다. 또, 입력장치(11)와 동일하게 자기디스크장치나 네트워크장치 등을 사용할 수가 있다.
기억장치(14)는 예를 들면 제2도에 표시하는 것과 같이, 설계처리 기억부(21), 소자라이브러리 기억부(22) 및 회로데이터 기억부(23)를 가지고, 입력장치(11)에서 입력된 정보나, 회로설계처리에 관한 프로그램이나 데이터 등을 기억하는 것이다.
더욱 상세하게는, 예를 들면 설계처리 기억부(21)에서는 상기 중앙처리장치(12)가 설계처리를 실행하기 위한 여러가지의 처리프로램이나 그들의 처리에서 적용되는 변환 규칙정보 등이 격납된다.
또, 소자 라이브러리 기억부(22)에는 기능소자, 논리소자 및 실장소자 등의 기능이나 면적, 지연시간, 구동력 등을 표시하는 정보가 소자라이브러리로서 격납된다.
회로데이터 기억부(23)에는 입력장치(11)에서 입력되는 기능기술정보나 회로설계처리에 의해 생성되는 기능회로정보, 논리회로정보 및 실장회로정보 등이 격납된다.
여기서, 상기 기능기술정보는 주로 회로에 요구되는 기능이 하드웨어 기술언어 등에 의해 표시된 정보이다. 또, 기능회로정보는 주로 기능만이 정의된 가상의 기능소자로 되는 회로를 내부 표현형식으로 표시하는 정보이다. 논리회로정보는 제조프로세스나 설계수법 등에 그의 의존하지 않는 논리레벨의, 실제로 존재하는 논리소자로 되는 회로를 표시하는 정보이다. 또, 실장회로정보는 제조프로세스나 설계수법 등에 면밀히 의존하고, 특정의 테크날리지로 실장되는 실장소자(예를 들면, CMOS형 트랜지스터에 의한 스탠더드셀이나 게이트어레이의 라이브러리중의 셀 또는 TTL, ECL등의 제조프로세스에 의존하는 소자)가 할당된 회로를 표시하는 정보이다.
상기 기능소자의 일예를 [표 2]에 의해 표시한다. 예를 들면 복수 비트의 가산기는 복수 비트폭의 2수를 가산하는 기능소자를 표시한다. 비교기는 복수 비트폭의 2수를 비교하는 기능소자를 표시한다. 복수 비트의 and는 복수 비트폭의 2개의 신호의 각 비트 마다의 논리적을 구하는 기능소자를 표시한다. 또, 복수 비트의 inv는 복수 비트폭의 신호의 각 비트 마다의 논리부정을 구하는 기능소자를 표시한다.
또, 릿빠는 변환처리의 과정에 있어서, 복수 비트의 신호를 편의상 분할하는 것을 표시하는 기능소자이고, 한편 믹서는 변환처리의 과정에 있어서, 복수 비트의 신호를 편의상 정리하여 취급하는 것을 표시하는 기능소자이다. 이 릿빠 및 믹서는 최종적으로 실장소자로 되는 회로로 변환되어, 모든 신호가 1비트의 신호마다 취급될 때는 삭제되는 기능소자이다.
일반적으로, 이들의 기능소자에 직접 대응하는 실장소자로 되는 회로는 존재하지 않고, 일단 그들의 기능을 실현하는 논리소자로 되는 회로에 전개된 후에 실장소자로 되는 회로에 치환된다.
또, 논리소자의 일예를 [표 3]에 표시한다. [표3]에서 예를 들면 1비트의 가산기는 비트폭이 1비트인 2개의 신호를 가산하는 소자를 표시한다. 또, 1비트의 and는 비트폭이 1비트인 2개의 신호의 논리적을 구하는 논리소자를 표시한다.
이들의 논리소자에 대응하는 실장소자로 되는 회로는 미리 정하여져 있고, 설계처리의 최종단계에 있어 치환이 행하여진다.
다음은, 회로데이터 기억부(23)에 격납되는 기능기술정보나 기능회로정보의 구체예에 대해 설명한다. 이들의 정보는 예를 들면 텍스트 데이터로서 격납된다.
예를 들면 제3a도에 표시하는 것과 같은 1비트 2입력의 and 게이트와 1비트 3입력의 가산기로 되는 회로는 제3b도에 표시하는 것과 같은 기능기술정보로서 기술된다. 또, 이 기능기술정보는 설계처리에 의해 예를 들면 제3c도에 표시하는 것과 같은 기능회로정보 또는 논리회로정보로 변환된다. 더우기, 이와 같이 기능기술정보가 논리소자로 구성되는 회로에 직접 대응하는 경우에는, 기능회로정보와 논리회로정보와는 특히 구별이 없는 경우이다.
이 예에서는 기능회로정보는 개개의 소자를 식별하기 위한 식별명(31) 및 속성코드(32)와 속성치(33)와의 복수의 쌍을 포함하고 있다. 각 쌍의 속성코드(32)와 속성치(33)는 : : 로서 대응되고 각 쌍은 : 로 구분되며, 식별명(31)은 : : :에 의해 다른 데이터와 구별되고 있다. 속성코드(32)로서는 a_kind_of, input, output 등이 있고, 각각 대응하는 속성치(33)가 소자의 종류, 입력신호, 출력신호에 관한 것이라는 것을 표시하고 있다.
즉, gate01의 소자는 adder(가산기)이고, 그 입력신호는 sig1, sig2, sig3, 출력신호는 sig4, sig5인 한편, gate02 소자는 and이고, 그 입력신호는 sig6, sig7, 출력신호는 sig3인 것이 표시되어 있다. 또, gate01과 gate02는 신호 sig3에 의해 접속되어 있는 것이 표시되어 있다.
또, 동일하게 제4a도에 표시하는 것과 같이 기능소자인 승산기(51)와, 값이 130(16진 표기로 82h)인 8비트폭의 정수의 승수가 입력되는 신호선(52)과 8비트폭의 피승수 a가 입력되는 신호선(53)과, 16비트폭의 승산결과 b가 출력되는 신호선(54)으로 구성되는 회로는 제4b도에 표시하는 것과 같은 기능기술정보로서 기술되어, 제4c도에 표시하는 것과 같은 기능회로정보로 변환된다. 더우기, 여기서 승수, 피승수의 구별은 변환처리에 있어 편의상의 것이다.
제4b도의 기능기술정보에서는 피승수 a는 0비트에서 7비트까지의 8비트폭의 신호이고, 변수 b는 0비트에서 15비트까지의 16비트폭의 신호이고, 이 변수 b의 값은 피승수 a의 값이 130의 8비트폭의 신호로 표시되는 승수(130)와의 적인 것이 표시되고 있다.
또, 제4c도의 기능회로정보에서는 1행째에서 기능소자의 식별명이 gate 1이고, 그 기능소자가 multiplier(승산기)인 것이 표시되고, 2,4행째의 기술에서는 기호 i1로 표시되는 신호는 압력신호 a로 비트폭이 8비트인 것이 표시되며, 3,5행째의 기술에서는 기호 i2로 표시되는 신호는 입력신호로 비트폭이 8비트로 값이 130의 정수인 것이 표시되고 6행째의 기술에서는 기호 o로 표시되는 신호는 출력시는 b로, 비트폭이 16비트인 것이 표시되고 있다.
더우기, 간단히 설명하기 위해 정보의 종류에 있어 기능기술정보, 기능회로정보 또는 논리회로정보의 구별에 관계없이 제3a도나 제4a도와 같은 모식도에 의해 정보의 내용을 표시한다. 또 혼동하지 않는 범위에서 필요에 따라서 승수 또는 피승수 등의 기호는 이들의 값, 혹은 승수 또는 피승수 등을 표시하는 신호를 표시하는 의미로도 사용하며, 회로의 기호는 회로를 표시하는 정보의 의미로서도 사용한다.
또, 이하의 설명에서는 다음과 같은 표기를 사용한다.
수 X의 최하의 비트에서 계산하여 a비트째부터 b비트째(단, ab)까지의 비트수로 되는 (a-b+1)비트폭의 수를 X(a : b)로 표기한다. 또, 수 X의 a비트째의 값을 X(a)로 표시한다.
더우기, 함수를 다음과 같이 정의한다.
k비트폭으로 표현된 신호 Y에 대해, 값이 1인 비트의 수를 posibits(Y), 값이 0인 비트수를 negabits(Y)로 정의한다.
또, 최하위 비트에서 계산하여, 값이 1인 1의 비투사가 P개(단, PK)로 되는 비트까지의 비투수를 effbitwidth(Y, P)라 정의한다. 또, 이들 함수의 값을 구하는 처리는 용이하게 실현될 수 있으므로 상세한 설명은 생략한다.
다음은 자동설계시스템으로 행하여지는 설계처리에 대해 설명한다.
제5도는 설계처리의 메인루틴을 표시하는 프로우챠트이다.
스텝 41은 회로의 기능설계자가 기능사양에 의거하여 작성한 기능기술정보를 입력장치(11)에서 입력하고, 회로데이터 기억부(23)에 격납하는 처리이다. 또한, 기능기술정보에 한정하지 않고, 예를 들면 비교적 간단한 회로 부분에 대한 기능회로정보나 논리회로정보 등의 입력도 받도록 하여도 된다.
스텝 42는 스텝 41에서 입력된 기능기술정보를 해석하고, 기능소자로 구성되어 기능기술정보로 표시된 기능을 가지는 회로를 내부 표현형식으로 표시한 기능회로정보를 생성하여 회로데이터 기억부(23)에 격납하는 처리이다.
스텝 43은 기능회로정보에 포함되는 모든 기능소자를 논리소자로 변환하여 논리회로정보로서 회로데이터 기억부(23)에 격납하는 처리이다. 또, 승산기를 포함하는 회로에 관하여 기능소자레벨에서의 회로의 최적화도 행하여진다. 이 스텝 43의 상세한 처리내용에 대해서는 후술한다.
스텝 44는 논리회로정보에 포함되는 모든 논리소자를 소정의 변환규칙정보에 의거하는 소자변환처리에 의해 실장소자에 할당하여, 실장회로정보로서 회로데이터 기억부(23)에 격납하는 처리이다. 또, 이 스텝 44에서는, 논리소자를 실장소자에 할당하는 과정에서 논리소자레벨의 회로의 최적화도 행하여진다.
스텝 45는 실장회로정보 등에 의거하여 회로도나 네트리스트를 생성하여, 출력장치(13)에 출력하는 처리이다. 여기서, 상기 네트리스트는 예를 들면 실장소자로 구성되는 회로에 있어 실장소자의 접속관계를 표시하는 정보이다.
또한, 상기 스텝 42 및 스텝 44에서 행하여지는 처리에 대해서는 각각 일본국 특허공개 평 3(1991)-15984호 공보 또는 미국 특허 USP 제5,043,914호 공보에 표시되어 있는 것과 동일하므로 상세한 설명은 생략한다.
상기 스텝 43에서는 상세하게는 제6도에 표시한 것과 같은 처리가 행하여진다.
스텝 81에서는 기능회로정보에 포함되는 기능소자를 1개 선택한다.
스텝 82 및 스텝 83에서는 각각 선택된 기능소자가 가산기인가 또는 승산기인가를 판정하고, 가산기이면, 스텝 84, 승산기이면 스텝 85 또는 가산기도 승산기도 아니면 스텝 86으로 이행한다.
각각의 스텝 84∼86에서는 선택된 기능소자를 다른 기능소자 및 논리소자중 적어도 한쪽의 소자로 구성된 동일의 기능을 가지는 회로로 변환하여 그 회로정보를 생성한 후 스텝 87로 이행한다.
스텝 87에서는 회로중에 기능소자가 포함되어 있는가 어떤가를 판정하고, 포함되어 있으면 스텝 81로 돌아가 동일한 처리를 반복하는 한편, 포함되어 있지 않으면 즉 논리소자만으로 구성되는 회로로 변환되어 있으면 메인루틴으로 리턴한다.
여기서, 상기 스텝 84∼86에서는 반드시 1회의 처리로 논리소자만으로 구성되는 회로로 변환되지 않고, 일단 다른 기능소자를 포함하는 회로로 변화되는 일이 있다. 이 경우에는 스텝 87에서 기능소자가 포함되어 있다고 판정되어 같은 변환처리가 재귀적으로 반복하여 행하여지는 것에 의해 최종적으로 논리회로만에 의해 구성된 회로로 변환된다. 구체적으로는, 예를 들면 복수 비트의 가산기는 스텝 84에 의해 보다 비트수가 적은 가산기(기능소자)와, 1비트의 가산기(논리소자)로의 변환이 반복되는 것에 의해, 1비트의 가산기만으로 되는 회로로 변환된다. 또, 감산기나 제산기 등은 스텝 86에서 가산기 등의 기능소자와 논리소자로 구성되는 회로로 변환된 후, 가산기 등이 스텝 84에서 1비트의 가산기 등으로 변환된다. 이와 같이, 재귀적으로 변환처리를 행하는 것에 의해 각 처리의 간소화를 도모하는 것이 용이하게 된다.
상기 스텝 83에서 「YES」라고 판정되어, 스텝 85에서는 변환이 행하여지는 승산기는, 예를 들면 제7a도∼제7d도에 표시하는 것과 같은 기능을 가지는 것이다. 각 승산기는 함께, m비트폭의 신호를 표시된 승수를, n비트폭의 신호로 표시된 피승수에 승산하여, n+m 비트폭의 신호로 표시된 적 P를 출력하는 기능을 가지는 점에서 공통되고, 입력되는 승수 및 피승수가 정수 A, 정수 B, 변수 X 또는 변수 Y의 어느 것인가가 다르게 되어있다. 여기서 간단하게 설명하기 위해 정수(定數) A는 정수(正數)로서 설명한다. 또한, 정수 A가 부수(負數)의 경우, 정수 A를 부호 반전한 A'에 대한 승산회로는 및 그 승산결과를 부호반전하는 회로의 회로정보를 생성하는 것에 의해 용이하게 대응 가능하다. 또, 변수 X는 정부의 값을 가질 수 있는 것으로 설명하나, 정수(正數)에 한하는 경우에는 후술하는 비트폭 맞춤을 위한 부호 확장에 있어서 0확장을 행하도록 하여도 좋다.
이하, 상기 스텝 85에서 행하여지는 변환처리를 제7도에 표시하는 승산기를 예를들어 제8도의 프로우챠트에 의거하여 설명한다. 이 처리는 승산기를 다른 기능소자(승산기, 가산기 등)나, 논리소자로부터 구성되는 회로로 변환하는 처리이다.
스텝 1001에서는 승수 및 피승수가 어느것이나 모두 정수인가 어떤가를 판정하고, 제7도(a)에 표시하는 것과 같이 어느것이나 모두 정수이면 스텝 1002로 이행하여 적을 산출하고, 그 값을 2진수로 표시하는 신호를 발생하는 회로로 변환한다. 구체적으로는 피승수 X=4, 승수 A=5의 경우에는 제9도(a)에 표시하는 것과 같이 값 4×5=20(2진 표현으로 '10100')을 표시하는 신호를 P(4 : 0)로서 출력하고 값 0을 표시하는 신호를 P(n+m-1 : 5)로서 출력하는 회로로 변환한다.
또, 스텝 1001에서 적어도 어느 한 쪽이 변수라고 판정되면, 스텝 1003으로 이행하여 피승수가 정수인가 어떤가를 판정하고, 피승수가 정수이면 스텝 1004에서 승수와 피승수로 교체하여 스텝 1005로 이행하는 한편, 피승수가 아니면, 그대로 스텝 1005로 이행한다. 즉, 제7도(b)에 표시하는 것과 같은 승산기의 경우에는, 제7도(c)에 표시하는 것과 같은 승산기로 변환되어 적어도 피승수는 항상 변수로 되도록 한다.
스텝 1005, 1007, 1009에서는 승수가 특수한 정수, 즉 값이 0, 1 또는 2의 누승(累乘)승수인가 어떤가를 판정하여, 0이면 제9도(b)에 표시하는 것과 같이 전 비트의 값이 0인 것을 표시하는 신호를 출력하는 회로로 변환한다(스텝 1006), 1이면 제9도(c)에 표시하는 것과 같이 피승수의 값을 표시하는 신호를 그대로 P(n-1 : 0)로서 출력하는 동시에 값이 X(n-1)의 신호를 P(n+m-1 : n)로서(부호확장하여) 출력하는 회로로 변환한다(스텝 1008). 또, 2의 누승승수이면, 예를 들면 승수가 8(=2 )인 경우에는 제9d도에 표시하는 것과 같이 피승수의 값을 표시하는 신호를 P(n+2 : 3)로서 출력하는 동시에, 값이 0인 신호를 P(2 : 0)로서, 또 각 비트의 값이 X(n-1)의 신호를 P(n+m-1 : n+3)로서 (부호확장하여)출력하는 회로로 변환한다(스텝 1010). 더우기, 변수 X가 정수에 한정되는 경우에는 상기와 같이 상위비트를 부호확장하지 않고서 0확장하면 된다.
스텝 1011에서는, 승수가 1비트인가 또는 2비트 이상인가 어떤가를 판정하고, 예를 들면 제10a도에 표시하는 것과 같이 1비트이면 스텝 1012로 이행하여 제10도(b)에 표시하는 것과 같은 AND 회로(132…135)로 되는 회로로 변환되는 처리를 행한다. 또한 이 스텝 1011에서 1비트이라고 판정되는 것은 승수가 변수인 경우에 한정된다. 왜냐하면, 1비트의 정수(定數)이면 상기 스텝 1005, 1007에서 「YES」로 판정되기 때문이다. 한편, 2비트 이상이라고 판정되는 것은, 승수가 변수인 경우와 정수인 경우가 포함된다.
여기서, 상기 스텝 1006, 1008, 1010, 1012에서 행하여지는 회로의 변환은, 미리 설계처리 기억부(21)에 기억되어 있는 변환규칙정보에 의거하여 행하여진다. 예를 들면 스텝 1012의 변환에서는, 제10도(c)에 표시하는 변환규칙 1이 사용되어 제11도에 표시하는 것과 같은 처리에 의해 변환이 행하여진다.
우선, 스텝 71에서 변환규칙정보에 있어 「= =」의 앞에 표시되는 조건절과 본래의 회로정보를 비교하여 변환적용조건을 충족하고 있으면, 신호선의 명칭 등의 대응붙임을 행한다.
스텝 72에서는, 본래의 기능소자인 승산기를 표시하는 회로정보를 회로데이터 기억부(23)에서 삭제한다.
스텝 73에서는, 변환규칙정보에 있어 「= =」의 후에 표시되는 결과절중의 기능소자, 또는 논리소자를 표시하는 회로정보와, 상기 대응붙임에 의거하여 변환하는 회로를 표시하는 정보를 생성하고 회로데이터 기억부(23)에 등록한다.
스텝 74에서는 결과절중에 미처리의 기능소자나 논리소자가 잔존하고 있는가 어떤가를 판정하고, 잔존하면 상기 스텝 73으로 돌아가는 한편 잔존하지 않으면 처음의 처리로 리턴한다.
또한, 상기 변환규칙 1에 의해 처음의 승산기와 등가인 회로로 변환될 수 있는 것의 증명에 대해서는 다른 변환규칙에 대한 증명과 함께 다음에 표시한다. 단, 이와 같은 변환규칙정보에 의거하는 구체적인 소자변환처리에 대해서는, 미국 특허 USP 제5,043,914호 공보에 표시되어 있으므로 상세한 설명은 생략한다. 또, 변환규칙정보는 실제로는 제10c도에 표시하는 것과 같은 내부 표현형식으로 표시되어 있으나, 이하의 서명에 있어서는 간단히 하기 위해 원칙으로서 제10a도 및 제10b도에 표시하는 것과 같은 모식도에 의해 설명한다.
상기 스텝 1011에서, 승수가 2비트 이상이라고 판정된 경우에는, 스텝 1013으로 이행하여 다른 기능소자(비트폭이 보다 작은 승산기나 가산기 등) 및 논리소자중 적어도 한 쪽의 소자로 되는 복수 비트폭의 승산기로 변환하는 처리를 행한다.
제12도는 상기 스텝 1013에서 행하여지는 상세한 처리를 표시하는 프로우챠트이다. 이 처리에서는 대략 다음과 같이 하여 부분적수 및 부분적 합계를 구하는 회로의 논리단수를 적게 억제하도록 되어 있다.
즉, 승수가 정수인 경우에는 부분적수를 적게하기 위하여, 승수 또는 승수의 전비트의 논리부정을 취한수에 있어, 값이 1인 비트에 관해서만 부분적을 구하는 회로로 변환한다. 또, 승수가 정수인 경우 및 변수인 경우 함께 부분적 합계를 구하는 회로의 논리단수를 적게하기 위해 가산기가 2진트리형상으로 접속되는 회로로 변환한다.
우선, 스텝 141에서는, 승수가 변수인가 어떤가를 판정하고, 변수이면 변수의 승산이므로 스텝 142로 이행하여 제13도에 표시하는 변환규칙 2를 적용하여 승수의 비트폭이 약 1/2인 2개의 승산기를 포함하는 회로로 변환한다.
상기 변환규칙 2는 비트폭이 m의 승수 Y를, 비트폭이 n의 피승수 X에 승산하여 적 P를 출력하는 승산기(191)를 승수 Y의 하위 K비트 Y1 및 상위 m-K 비트 Y2를 각각 피승수 X에 승산하여 부분적 P1, P2를 구하는 승산기(192, 193)와, 이들의 부분적 P1, P2를 가산하는 회로로부터 구성되는 회로로 변환하는 것를 표시하는 것이다. 단, 상기 가산을 행하는 회로는 부분적 P1, P2의 중복되는 비트 이상의 비트에 대해서만 가산하면 되므로, 부분적 P1의 상위 n비트를 그것보다도 하위의 K비트에서 분할하는 릿빠(194)와, 이것을 부호확장한 신호 R1를 출력하는 믹서(195)와, 이 신호 R1과 부분적 R2를 가산하는 가산기(196)로부터 구성된다.
보다 상세하게는 상기 승산기(192)는 승수 Y의 하위 K비트 Y1=Y(K-1 : 0)를 피승수 X(n-1 : 0)에 승산하고, 부분적으로서 n+K비트폭의 신호 P1(n+k-1 : 0)을 출력하는 회로이다.
또, 승산기(193)는 승수 Y의 상위 m-K 비트 Y2=Y(m-1 : K)를 피승수 X(n-1: 0)로 승산하고 부분적으로 n+m-K비트폭의 신호 P2(n+m-K-1 : 0)를 출력하는 회로이다.
릿빠(194)는 상기 신호 P1(n+k-1 : 0)을 그 상위 n비트의 신호 P1(n+k-1 : K)와 하위 K비트의 신호 P1(K-1 : 0)으로 분할하는 회로이다. 후자의 신호 P1(K-1 : 0)은 적 P의 하위 K비트를 표시하는 신호P(K-1 : 0)로서 출력된다.
믹서(195)는 릿빠(194)에서 출력되는 신호 P1(n+K-1 : K)의 상위에 각 비트의 값이 P1(n+K-1)인 m-K비트폭의 신호를 합성하여(신호 P1을 부호확장하여) n+m-K비트폭의 신호 R1(n+m-K-1 : 0)을 출력하는 회로이다.
가산기(196)는 상기 신호 P2(n+m-K-1 : 0)와 신호 R1(n+m-K-1 : 0)을 가산하고, 그 합계인 n+m-K 비트폭의 신호 R2(n+m-K-1 : 0)를 적 P의 상위 n+m-K비트를 표시하는 신호 P(n+m-1 : K)로서 출력하는 회로이다.
이 변환규칙 2에 의거하여 변환된 회로에 포함되는 승산기(192) 및 승산기(193)에 각각 입력되는 승수의 비트폭 K, m-K가 2이상의 경우(즉, 변환 후의 승산기도 기능소자인 경우)에는 다음의 루프의 처리로 스텝 142가 실행될 때에 더욱 비트폭이 작은 승산기를 포함하는 회로로 변환된다. 또, 승수의 비트폭 K는 m-K가 1이된 경우에는, 상기 스텝 1012(제8도)의 처리로 AND 회로(논리소자)로 되는 회로로 변환된다.
여기서, 상기 K의 값은 m/2이상의 최소의 정수(整數) 또는 m/2이하의 최대의 정수, 즉 K와 m-K와의 차 m-2K의 절대치가 최소로 되는 정수로 설정하든가 또는 K 또는 m-K가 m/2이상의 최소의 2의 누승승수로 되도록 설정하는 것에 의해 가산기를 배런수가 좋은 2진트리형상으로 접속하여 부분적 합계를 구하는 회로를 구성하는 경우의 논리단수를 적게 억제할 수가 있다.
제14도는 상기 스텝 142의 처리를 행하는 구성을 그 기능에 착안하여 표시하는 구성도이다.
입력수단(241)은 처음의 기능소자인 승산기(191)를 표시하는 회로정보를 회로데이터 기억부(23)에서 판독하여 승산기(191)의 입력이 m비트인 승수 Y 및 n비트의 피승수 X인 것을 표시하는 정보를 승수분할수단(242)에 출력한다. 또, 승산기(191)의 출력이 m+n비트의 적 P인 것을 표시하는 정보를 분할연산회로 생성수단(244)에 출력한다.
승수분할수단(242)은 우선 승수 Y를 분할하기 위한 K의 값을 구하여 승수 Y의 하위 K비트의 신호 Y1, 피승수 X 및 부분적 P1을 표시하는 정보와 승수 Y의 상위 m-K비트의 신호 Y2, 피승수 X 및 부분적 P2를 표시하는 정보를 승산모들 생성수단(243)에 출력한다. 또, 부분적 P1, P2를 각각 표시하는 정보를 분할 연산회로 생성수단(244)에 출력한다. 여기서, 상기 부분적의 명칭 P1, P2는 도면에 표시되지 않은 할당수단에 의해 할당된다.
승산모들 생성수단(243)은 신호 Y1을 피승수 X에 승산하여 부분적 P1을 구하는 승산기(192) 및 신호 Y2를 피승수 X에 승산하여 부분적 P2를 구하는 승산기(193)를 표시하는 정보를 생성하여 출력수단(245)에 출력한다.
분할연산회로 생성수단(244)은 부분적 P1, P2를 표시하는 정보와 적 P를 표시하는 정보에 의거하여 부분적 P1의 하위 K비트를 적 P의 하위 K비트로서 출력하는 동시에 부분적 P1의 상위 n-K비트와 부분적 P2의 합계를 적 P의 상위 n+m-K비트로서 출력하는 릿빠(194), 믹서(195) 및 가산기(196)를 표시하는 정보를 출력수단(245)에 출력한다.
출력수단(245)은 승산모들 생성수단(243) 및 분할연산회로 생성수단(244)에서 출력된 변환 후의 회로를 표시하는 회로정보를 회로데이터 기억부(23)에 격납한다.
또, 변수를 승산하는 승산기의 경우에는 상기와 같이 분할에 의한 것에 한정되지 않고, 종래의 자동설계시스템과 동일하게 라이브러리에 등록된 범용적인 승산기를 할당하거나, 2비트 부수의 리코드방식을 적용한 회로로 변환하도록 하여도 된다.
상기 스텝 141에서 승수가 정수의 승수 A이라고 판정된 경우에는 스텝 143으로 이행하여 다음에 승수 A에 있어 값이 1인 비트의 수 posibits(A)가 2이하인가 어떤가를 판정하고, 2이하이면 스텝 144로 이행한다. 여기서, posibits(A)가 1이면, 상기 스텝 1008 또는 1010에서 처리되므로 2이하라고 판정되는 것은 2의 경우 뿐이다. 또, 스텝 143에서는 m의 값을 판정하도록 하여도 좋다. posibits(A)가 2이면 피승수 X를 비트 위치에 따라 시프트한 2개의 값을 가산하는 즉, 값이 1인 비트에 관해서만 부분적을 구하는 회로를 구성할 수가 있다. 그와 같은 회로를 1회의 처리로 생성하도록 하여도 좋으나, 여기서는 재귀적인 처리를 이용하여 개개의 처리를 간단화하기 위해 m-1비트의 승산기를 가지고 승수 A를 최상위와 1비트와 하위 m-1비트로 분할하는 동시에 피승수 X와 승수 A의 하위 m-1비트와의 적과, 피승수 X를 시프트한 값을 가산하는 회로로 변환한다. 단, 승수 A의 최상위비트가 0이면, 적 P의 최상위비트를 0으로 하는 것만으로도 좋으므로 가산 등을 위한 회로는 필요없다.
그래서, 스텝 144에서는 보다 상세하게는 제15도에 표시하는 것과 같이 우선 스텝 161에서 승수 A의 최상위비트의 값이 1인가 어떤가를 판정하여, 1인 경우에는 스텝 162로 이행하여 제16a도에 표시하는 변환규칙 3(a)를 적용하는 한편, 0인 경우에는 스텝 163으로 이행하여 제16b도에 표시하는 변환규칙 3(b)를 적용한다. 또, 변환규칙 3(a)와 변환규칙 3(b)에서 변환규칙 3이 구성된다.
변환규칙 3(a)는 승산기(151)를 승산기(152)와 릿빠(153)와 가산기(154)로 구성되는 회로로 변환하는 것을 표시하는 것이다.
승산기(152)는 승수 A의 하위 m-1비트 A3=A(m-2 : 0)를 피승수 X(n-1 : 0)에 승산하여 n+m-1비트폭의 부분적 P3(n+m-2 : 0)를 구한다.
릿빠(153)는 부분적 P3(n+m-2 : 0)를 상위 n비트 P3(n+m-2 : m-1)와 하위 m-1비트 P3(m-2 : 0)로 분할한다.
가산기(154)는 상기 P3(n+m-2 : m-1)와 피승수 X(n-1 : 0)(논리적으로는 부분적으로서의 승수 A의 최상위비트와 피승수 X(n-1 : 0)와의 적의)를 가산한다.
이 처리가 행하여진 경우에는 상기 승산기(152)에 대한 posibits(A3)의 값은 1이 되므로 다음의 루프의 처리에 있어 상기 스텝 1008, 또는 1010(제8도)의 처리가 행하여진다.
여기서, 상기 변환규칙 3(a)는 예를 들면 제17도에 표시한 것과 같이 내부 표현형식으로 설계처리 기억부(21)에 격납되어 있다. 동 도면에 있어 「= =」의 앞에 표시되는 조건절의 「Gate」는 제16도의 승산기(151)에 대응하고 있다. 또, 「= =」뒤에 표시되는 결과절의 「Gatel」∼「Gate3」는 각각 승산기(152), 릿빠(153) 또는 가산기(154)에 대응하고 있다.
또, 변환규칙 3(b)는 승산기(151)와 승산기(155)를 가지고, 승수 A의 하위 m-1비트 A3=A(m-2 : 0)를 피승수 X(n-1 : 0)에 승산하여 얻어진 n+m-1비트폭의 부분적을 적 P의 하위 n+m-1비트 P(n+m-2 : 0)로서 출력하는 동시에 값 P(n+m-2)를 적 P의 최상위비트 P(n+m-1)로서 출력하는 회로로 변환하는 것을 표시하는 것이다. 즉, 이 경우에는 부분적의 수를 증가시키는 일없이 비트폭이 작은 승산기를 포함하는 회로로 변환할 수가 있다. 이 처리가 행하여진 경우에는 승산기(152)에 대한 posibit(A3)의 값은, 2의 상태로 되므로 다음의 루프의 처리로 재차 스텝 144가 실행되어 스텝 163에서 더욱 비트폭이 작은 승산기를 포함하는 회로로 변환되던가 또는 스텝 162에서 값이 1인 비트가 1개의 승산기를 포함하는 회로로 변환된다.
또한, 상기와 같이 승수 A를 최상위의 1비트와 하위 m-1비트로 분할하는데 대신하여 상위 m-1비트와, 최하위의 비트로 분할하도록 하여도 좋다.
제18도는 상기 스텝 144의 처리를 행하는 구성을 그 기능에 착안하여 표시하는 구성도이다.
입력수단(251)은 처음의 기능소자인 승산기(151)를 표시하는 회로정보를 회로데이터 기억부(23)에서 판독하여 승산기(151)의 입력이 m비트의 승수 A와 n비트의 피승수 X인 것 및 출력이 m+n비트의 적 P인 것을 표시하는 정보를 최상위 비트분리수단(252)에 출력한다.
최상위 비트분리수단(252)은 승수 A를 최상위비트 A(m-1)와 그것보다도 하위의 비트 A(m-2 : 0)로 분리하고, 최상위비트 A(m-1), 피승수 X 및 적 P를 표시하는 정보를 비트치 판정수단(253)에 출력하는 동시에 하위비트 A(m-2 : 0) 및 피승수 X를 표시하는 정보를 승산모들 생성수단(254)에 출력한다.
비트치 판정수단(253)은 최상위 비트 A(m-1)의 값이 1인가, 0인가를 판정하고 판정결과에 따라 하위비트 A(m-2 : 0)와 피승수 X와의 승산결과가 부분적 P3 또는 적 P(n+m-2 : 0)인 것을 표시하는 정보를 승산모들 생성수단(254)에 출력한다. 더우기, 최상위비트 A(m-1)의 값이 1인 경우에는 피승수 X, 적 P, 부분적 P3를 표시하는 정보를 가산시포트 연산회로 생성수단(255)에 출력하는 한편, 0인 경우에는 적 P의 최상위비트 P(n+m-1)를 표시하는 정보와 P(n+m-2 )의 값을 표시하는 정보를 회로생성수단(256)에 출력한다.
승산모들 생성수단(254)은 승수 A의 하위비트 A(m-2 : 0)를 피승수 X에 승산하여 부분적 P3 또는 적 P(n+m-2 : 0)로서 출력하는 승산기(152, 155)를 표시하는 정보를 생성하여 출력수단(257)에 출력한다.
가산시프트 연산회로 생성수단(255)를 송수 A의 최상위비트 A(m-1)의 값이 1인 경우에 부분적 P3를 표시하는 정보, 피승수 X를 표시하는 정보 및 적 P를 표시하는 정보에 의거하여 부분적 P3의 하위 m비트를 적 P의 하위 m-1비트 P(m-2 : 0)로서 출력하는 동시에 부분적 P3의 상위 n비트와 피승수 X와의 합계를 적 P의 상위 n+1비트 P(n+m-1 : m-1)로서 출력하는 릿빠(153) 및 가산기(154)를 표시하는 정보를 생성하여 출력수단(257)에 출력한다.
한편, 회로생성수단(256)은 승수 A의 최상위비트인 값이 0인 경우에 적 P의 최상위비트 P(n+m-1 )로서 값 P(n+m-2 )를 출력하는 회로를 표시하는 정보를 생성하여 출력수단(257)에 출력한다.
출력수단(257)은 각 수단(254∼256)에서 출력된 변환 후의 회로를 표시하는 회로정보를 회로데이터 기억부(23)에 격납한다.
상기 스텝 143에서 정수의 승수 A에 있어서 posibits(A)가 2보다 크다고 판정되는 경우에는 스텝 145로 이행하여 더욱 posibits(A)가 값이 0인 비트의 수 negabits(A)+1보다도 큰가 어떤가를 판정한다.
스텝 145에서 posibits(A)가 negabits(A)+1보다도 크지 않다고 판정된 경우에는 스텝 146으로 이행하여 승수가 변수인 경우의 상기 스텝 142와 동일하게 제13도에 표시하는 변환규칙 2를 적용하여 승수 A를 분할하여 2개의 승산기를 포함하는 회로로 변환한다. 단, 승수가 변수인 경우에 비하여 승수 A를 분할하기 위한 K의 값으로서 승수 A의 비트폭 m의 약 1/2은 아니고, 예를 들면 L을 posibits(A)/2이상의 최소의 정수로 했을 때에 승수 A의 하위비트에서 계산하여 1의 비트의 수가 L개로 되는 값 effbitsidth(A, L)를 사용한다. 또한, 상기 L의 값은 상기 K의 값과 동일하게 posibits(A)/2이하의 최대의 정수나 이것에 가까운 2의 누승승수 등이라도 좋다.
이 스텝 146의 처리가 1회 또는 2회 이상 행하여지는 것에 의해 승수 A가 분할되어 posibits(A)가 2이하로 된 승산기는 상기와 같이 제8도의 스텝 1006 또는 제12도의 스텝 144에 의해 값이 1의 비트만에 대해 부분적을 구하는 회로가 생성되므로, 값이 1인 비트의 수가 대략 같게 되도록 분할하는 것에 의해 가산기를 배런스가 좋은 2진트리형상으로 접속하여 부분적 합계를구하는 회로를 구성하는 경우의 논리단수를 적게 억제할 수가 있다.
또한, posibits(A)가 3의 경우에는 승수 A를 어떻게 분할하여도 논리단수는 2단으로 되므로, 스텝 143에서 posibits(A)가 3이하인가 어떤가를 판정하고, 3의 경우에도 스텝 144에서 승수 A를 최상위의 1비트의 하위 m-1로 분할하도록 하여도 된다.
또, 상기 스텝 146의 처리를 행하는 구성은 승수 A를 분할하기 위한 K의 값을 결정하는 방법이 다른 점을 제외하고, 상기 스텝 142에 대응하는 제14도의 구성과 동일하다.
한편, 스텝 145에서 posibits(A)가 negabits(A)+1보다도 크다고 판정된 경우에는 스텝 147로 이행하여 제19도에 표시하는 변환규칙 4를 적용하여, 승수 A의 전 비트의 논리부정을 취한 값을 승수 A0로서, 이승수 A0와 피승수 X와의 적을 구하는 승산기를 포함하는 회로로 변환한다. 상기 변환 후의 회로에 포함되는 승산기는 논리부정을 취하는 것에 의해 posibits(A)의 값과 negabits(A)의 값이 반전되므로 다음의 루프의 처리로 예를 들면 스텝 145에 있어 「NO」로 판정되어 스텝 146에서 승수 A0를 분할하는 변환이 행하여진다. 따라서, 값이 1인 비트의 수가 처음의 승수 A보다도 적게 되는 동시에, 값이 1의 비트만에 대해 부분적을 구하는 회로가 생성되므로 부분적을 구하는 회로의 수 및 부분적 합계를 구하는 회로의 논리단수가 적게 억제된다.
단, 승수 A와 피승수 X와의 적을 구하기 위해, 승수 A0와 피승수 X의 적을 보정할 필요가 있다. 상기 변환규칙 4는 그 보정을 위한 회로도 포함하는 회로로 변환하는 것을 표시한 것이다.
즉, 제19도에 있어 171은 변환 전의 승산기이다.
승산기(172)는 상기 승수 A0를 피승수 X에 승산하여, n+m비트폭의 적 P0(=X·A0)를 출력한다.
인버터(178)는 적 P0의 전 비트의 논리부정을 취하고, n+m비트폭의 신호를 출력한다.
믹서(173)는 피승수 X를 상위 n비트, 값이 0인 m비트폭의 신호를 하위 m비트로서 합성하여, n+m비트폭의 신호 R2(=X·2 )를 출력한다.
믹서(174)는 각 비트의 값이 피승수 X의 최상위비트의 값 X(n-1)인 m비트폭의 신호를 상위 m비트, 상기 피승수 X의 논리부정수를 하위 n비트로서 합성하여 n+m비트폭의 신호를 출력한다.
인버터(177)는 믹서(174)에서의 출력이 전 비트의 논리부정을 취하여, n+m비트폭의 신호R3(=-X-1)를 출력한다.
가산기(175)는 신호 R2, 신호 R3 및 값이 1의 케리인을 입력으로서 그들의 n+m비트폭의 합계 R4(=X·(2 -1))를 출력한다.
가산기(176)는 적 P0의 논리부정수, 합계 R4 및 값이 1의 케리인을 입력으로서 그들의 n+m비트폭의 합계 R5(=X·(2 -1)-P0)를 적 P로서 출력한다.
또한, 상기 스텝 145의 판정조건으로서 posibits(A)negabits(A)+1에 한정되지 않고, posibits(A)≥m/2등이라도 좋다. 또, 상기 보정을 위한 각 회로의 규모를 고려하여, 더욱 posibits(A)의 값이 클 때에만, 스텝 147로 이행하도록 하여도 좋다.
제120도는 상기 스텝 147의 처리를 행하는 구성을 그 기능에 착안하여 표시하는 구성도이다.
입력수단(231)은 본래의 기능소자인 승산기(171)를 표시하는 회로정보를 회로데이터 기억부(23)에서 판독하고, 승산기(171)의 입력이 m비트의 승수 A와, n비트의 피승수 X인 것을 표시하는 정보를 논리부정수단(232)에 출력한다. 또, 상기 피승수 X를 표시하는 정보 및 승산기(171)의 출력이 n+m비트의 적 P인 것을 표시하는 정보를 논리부정 연산회로 생성수단(234)에 출력한다.
논리부정수단(232)은 승수 A의 전 비트의 논리부정을 취하여 승수 A0를 출력하는 인버터(179)를 표시하는 정보를 출력수단(235)에 출력하는 동시에, 상기 승수 A0를 표시하는 정보, 피승수 X를 표시하는 정보 및 승수 A0와 피승수 X와의 승산결과가 적 P0인 것을 표시하는 정보를 승산모들 생성수단(233)에 출력한다. 또, 상기 적 P0를 표시하는 정보를 논리부정 연산회로 생성수단(234)에도 출력한다.
승산모들 생성수단(233)은 승수 A0의 피승수 X와의 적 P0를 구하는 승산기(172)를 표시하는 정보를 생성하여 출력수단(235)에 출력한다.
논리부정 연산회로 생성수단(234)은 상기 적 P0 및 피승수 X에 의거하여 피승수 X와 2m-1과의 적 R4(=X·(2 -1))에서 적 P0를 감산한 신호 R5(=X·(2 -1)-P0)를 구하는 것에 의해 적 P0를 출력하는 각회로 173∼178을 표시하는 정보를 생성하여 출력수단(235)에 출력한다.
출력수단(235)은 각 수단 232∼234에서 출력된 변환 후의 회로를 표시하는 회로정보를 회로데이터 기억부(23)에 격납한다.
이하, 상기 변환규칙 1∼4에 의해 처음의 승산기와 등가인 회로로 변환될 수 있는 것을 사용하여 증명한다.
변환규칙 1 (제10도(a), 제10도(b) 및 제10도(c) 참조)
제10도(b)에 있어, 132는 1비트폭의 피승수 X(n-1)와 1비트폭의 변수의 승수 Y(0)와의 논리적 P(n-1)를 취하는 AND회로이고, 133은 1비트폭의 피승수 X(n-2)와 1비트폭의 변수의 승수 Y(0)와의 논리적 P(n-2)를 취하는 AND회로이고……, 134는 1비트폭의 피승수 X(1)와 1비트폭의 변수의 승수 Y(0)와의 논리적 P(1)를 취하는 AND회로이고, 135는 1비트폭의 피승수 X(0)와 1비트폭의 변수의 승수 Y(0)와의 논리적 P(0)를 취하는 AND회로이다.
Y(0)=0 또는 1이므로,
여기서, Y(0) 및 P(i)는 공히 1비트이므로, X(i)·Y(0) X(i) and Y(0)이다.
따라서, P(i)=X(i) and Y(0) (0≤i≤n-1) P(n)=0
변환규칙 2 (제13도 참조)
따라서, P(K-1 : 0)=P1(K-1 : 0) P(n+m-1 : K)=R2(n+m-K-1 : 0) 또, 승수가 정수의 승수 A인 경우도 동일하다.
변환규칙 3(a) (제16도(a) 참조)
따라서, P(m-2 : 0)=P3(m-2 : 0) P(n+m-1 : m-1)=R1(n : 0)
변환규칙 3(b) (제16도(b) 참조)
따라서, P(n+m-2 : 0)=P3(n+m-2 : 0) P(n+m-1)=P(n+m-2)
변환규칙 4 (제19도 참조)
이하, 복수비트의 수 Z에 대한 전 비트의 논리부정수를Z로 표시한다. 정수 A에 대해 -A=A+1-2m←→A+1=2m-A가 성립되고, 또, n비트수 X에 관하여, (X의 2의 보수)=X+1=-X이다. 따라서,
앞의 식 제1항 X·2m은 믹서(173)에 의해 R2로서 구해진다.
제2항 X는 믹서(174) 및 인버터(177)에 의해 부호확장되어 논리부정을 취하여 R3로서 구해진다.
제4항 P0는 승산기(172) 및 인버터(178)에 의해 구해진다.
또, 제1항 X·2m과 제2항 X의 제3항 또는 제5항의 1의 가산은 가산기(175)에 의해 R4로서 구해진다. X·A는 n+m비트의 수이므로, 가산 결과의 n+m+1비트째의 자릿수는 고려하지 않아도 된다.
또, 상기 R4의 앞의 식 제4항 P0와 제5항 또는 제3항의 1의 가산은 가산기(176)에 의해 R5로서 구해진다. X·A는 n+m비트의 수이므로, 가산 결과의 n+m+1비트째의 자릿수는 고려하지 않아도 된다.
따라서,
실시예 1의 논리회로의 자동설계시스템에 의하면, 상기와 같이 승산기에 입력되는 승수가 정수인 경우, 승수에 있어 값이 1인 비트의 총개수가 3이상이면, 승수를 값이 1인 비트수가 같게 되도록 분할하는 것에 의해 부분적 합계를 구하는 회로가 배런스가 좋은 2진트리형상으로 구성되어 가산의 논리단수가 적게 억제되는 동시에, 승산속도를 고속으로 하는 것이 가능하게 된다.
또, 값이 1인 비트의 총개수가 2이하이면, 그 값이 1인 비트에 관해서만 부분적을 구하는 회로가 구성되는 것에 의해 부분적 수가 적게 억제되어 회로면적의 삭감이 가능하게 된다.
또, 값이 1인 비트의 총개수가 많으면 승수의 논리부정수와 피승수를 승산하는 승산기와, 그 승산결과를 보정하는 회로가 구성되는 동시에 상기 승산기가 상기와 같이 구성되는 것에 의해 부분적 수나 회로면적의 삭감이 가능하게 된다.
[실시예 2]
상기 실시예 1에 있어 제8도의 스텝 1013, 즉 제12도의 스텝 141∼147과 동일한 처리를 행하는 구성의 변형예를 제21도에 의거하여 설명한다.
제21도에 있어서는, 입력수단(2901)은 처음의 기능소자인 승산기를 표시하는 회로정보를 회로데이터 기억부(23)에서 판독하여 승산기의 입력이 m비트의 승수 A 또는 Y와, n비트의 피승수 X인 것 및 출력이 m+n비트의 적 P인 것을 표시하는 정보를 논리부정 판정수단(2902)에 출력한다.
논리부정 판정수단(2902)은 posibits(A)가 negabits(A)+1보다도 큰가 어떤가를 판정하고, 큰 경우에는 승수 A 또는 Y, 피승수 X 및 적 P를 표시하는 정보를 논리부정수단(2904)에 출력하는 한편, 크지 않을 경우에는 상기 정보를 승수비트폭 판정수단(2903)에 출력한다.
승수비트폭 판정수단(2903)은 승수가 변수이거나 정수이고 또한 posibits(A)가 3이상이거나 또는 정수이고 또한 posibits(A)가 2이하인가를 판정하고 전자의 경우에는 승수 A 또는 Y, 피승수 X 및 적 P를 표시하는 정보를 승수분할수단(2907)에 출력하는 한편, 후자의 경우에는 승수 A, 피승수 X 및 적 P를 표시하는 정보를 승수 최상위 비트분리수단(2909)에 출력한다.
기타의 수단(2904∼2913)은 제14, 18, 20도에 표시하는 각 수단과, 정보의 전달 경로가 다소 다른 점을 제외하고, 동일한 기능을 가지고 있으므로 설명을 생략한다.
[실시예 3]
상기 실시예 1에 있어 제8도의 스텝 1013에서 행하여지는 처리의 다른 예를 제22도에 의거하여 설명한다.
이 실시예에서는 승수의 비트폭이 3이상인 경우에는 승수가 정수인가 변수인가에 관계없이 승수를 약 1/2의 비트폭으로 분할한다. 또, 승수의 비트폭이 2인 경우에는 승수가 정수이면 상기 변환규칙 3(제16도(a) 및 제16도(b) 참조)을 적용하여 값이 1인 비트에 관해서만 부분적을 구하는 회로로 변환하는 한편, 승수가 변수이면 승수가 1비트의 2개의 승산기를 포함하는 회로를 구성한다.
우선, 스텝 211에서는 승수의 비트폭이 3이상인가 어떤가를 판정하여, 3이상이면 스텝 212로 이행하고, 상기 변환규칙 2(제13도 참조)를 적용하여 승수의 비트폭이 약 1/2의 2개의 승산기를 포함하는 회로로 변환한다.
또, 승수의 비트폭이 3이상이아니면 스텝 213으로 이행하여 승수가 정수인가 어떤가를 판정한다. 승수가 정수이면, 스텝 214로 이행하고, 상기 변환규칙 3(제16도(a) 및 제16도(b) 참조)을 적용하여, 승수에 있어 값이 1인 비트에 관해서만 부분적을 구하는 회로로 변환환다.
한편, 승수가 변수이면 스텝 215로 이행하고, 제23도에 표시하는 변환규칙 5를 적용한다.
변환규칙 5는 승산기(221)를 승산기(222)와, 승산기(223)와 릿빠(224)와 믹서(225)와 가산기(226)로 구성되는 회로로 변환하는 것을 표시한다.
상기 승산기(222)는 승수 A(1 : 0)의 하위 1비트 A(0)를 피승수 X(n-1 : 0)에 승산하여 n+1비트폭의 부분적 R1(n : 0)을 구한다.
승산기(223)는 승수 A(1 : 0)의 상위 1비트 A(1)를 피승수 X(n-1 : 0)에 승산하여 n+1비트폭의 부분적 R2(n+1 : 1)를 구한다.
릿빠(224)는 부분적 R1(n : 0)을 상위 n비트 R1(n : 1)과 하위 1비트 R(0)로 분할하여 R(0)을 적 P(0)로서 출력한다.
믹서(225)는 상기 R1(n : 1)을 상위측에 1비트만 부호확장한 신호R3(n+1 : 1)를 출력한다.
가산기(226)는 이 신호R3(n+1 : 1)와 부분적 R2(n+1 : 1)를 가산하여 합계 R4(n+1 : 1)를 적 P(n+1 : 1)로서 출력한다.
상기 변환규칙 5에 의해 처음의 승산기(221)와 등가인 회로로 변환할 수 있다는 것의 증명을 다음에 표시한다.
따라서,
이 처리가 행하여진 경우, 승산기(222, 223)는 승수의 비트폭이 1비트로 되므로 다음의 루프의 처리에서 상기 변환규칙 1(제10도(a), 제10도(b), 제10도(c) 참조)에 의해 AND회로로 구성되는 회로로 변환된다.
본 실시예 3에 의하면, 승산기와 승수의 비트폭이 3이상이면, 승수를 분할하는 것에 의해 부분적 합계를 구하는 회로를 2진트리형상으로 구성하는 것이 가능하게 되고, 승산의 논리단수가 적고 승산속도를 고속으로 하는 것이 가능하게 된다.
또, 승수의 비트폭이 2이하이고, 또한 승수가 정수이면, 승수에서 값이 1인 비트에 관해서만 부분적으로 구하는 회로를 생성하는 것에 의해 부분적 수를 삭감하는 것이 가능하게 되어 회로면적의 삭감이 가능하게 된다.
[실시예 4]
상기 실시예 1에 있어 스텝 144(제12도 참조) 및 실시예 3에 있어 스텝 214(제22도 참조)에 있어서는 승수 A에 있어 posibits(A)=2 또는 비트폭이 2인 승산기에 대해 승수 A의 최상위비트를 분할하는 변환규칙 3을 적용하는 예를 표시했으나, 소정의 K비트째와, 그것보다 상위비트 및 하위비트의 3개로 분할하는 변환규칙 6을 적용하여도 된다. 또, 스텝 146(제12도 참조) 또는 스텝 212(제22도 참조)에 있어 변환규칙 2에도 바꾸어 변환규칙 6을 적용하여도 된다. 이 경우에는 스텝 143 또는 211의 판정을 생략할 수도 있다.
즉, 제24도에 표시하는 것과 같이 우선 스텝 311에서 승수 A의 K비트째 A(K-1)의 값이 1인가 어떤가를 판정하여 1인 경우에는 스텝 312로 이행하고, 제25도(a)에 표시하는 변환규칙 6(a)를 적용하는 한편, 0인 경우에는 스텝 313으로 이행하여 제25도(b)에 표시하는 변환규칙 6(b)을 적용한다. 또한, 변환규칙 6(a)과 변환규칙 6(b)으로서 변환규칙 6이 구성된다. 또, 상기 K의 값은 예를 들면 실시예 1과 동일하게 설정하면 된다.
변환규칙 6(a)은 승산기(281)를 승산기(282, 283)와 믹서(284∼287)와 가산기(288)로 구성되는 회로로 변환하는 것을 표시하는 것이다.
승산기(282)는 승수 A에 있어 하위 K-1 비트 A5(K-2 : 0)=A(K-2 : 0)를 피승수 X(n-1 : 0)에 승산하면 n+K-1비트폭의 부분적 P5(n+K-2 : 0)를 구한다.
승산기(283)는 승수 A에 있어 상위 m-K 비트 A6(m-K-1 : 0)=A(m-1 : 0)를 피승수 X(n-1 : 0)에 승산하여, n+m-K 비트폭의 부분적 P6(n+m-K-1 : 0)를 구한다.
믹서(284)는 부분적 P5(n+K-2 : 0)를 상위측에 m-K+1비트만 부호확장한 신호R1(n+m-1 : 0)을 출력한다.
믹서(285)는 부분적 P6의 하위에 값이 0인 K비트폭의 신호를 합성한 신호R2(n+m-1 : 0)을 출력한다.
믹서(286)는 피승수 X(n-1 : 0)의 하위에 값이 0인 K-1비트폭의 신호를 합성한 신호 R3(n+K-2 : 0)를 출력한다.
믹서(287)는 상기 신호 R3(n+K-2 : 0)를 상위측에 m-K+1비트만 부호확장한 신호R4(n+m-1 : 0)를 출력한다.
가산기(288)는 상기 신호 R1(n+m-1 : 0)과 신호R2(n+m-1 : 0)와 신호R4(n+m-1 : 0)를 가산하여 적 P(n+m-1 : 0)을 출력한다.
또, 변환규칙 6(b)은 승산기(281)를 승산기(282, 283)와 믹서(284, 287)와 가산기(289)로 구성되는 회로로 변환하는 것을 표시하는 것이다.
상기 승산기(282, 283) 및 믹서(284, 287)는 변환규칙 6(a)에서 표시하는 것과 동일한 것이다. 가산기(289)는 신호 R1(n+m-1 : 0)과 신호R2(n+m-1 : 0)를 가산하여 적P(n+m-1 : 0)을 출력한다.
상기 변환규칙 6에 의해 처음의 승산기(281)와 등가인 회로로 변환될 수 있는 것의 증명을 다음에 표시한다.
[실시예 5]
상기 실시예 1에 대한 스텝 144(제12도 참조) 또는 실시예 3에 대한 스텝 214에 있어서는 승수 A에 있어 posibits(A)=2 또는 비트폭이 2인 승산기에 대해 변환규칙 3을 적용하는 예를 표시했으나, 제26도에 표시하는 변환규칙 7을 적용하여도 된다.
변환규칙 7은 승산기(271)를 승산기(272)와 믹서(273, 274)와 가산기(275)로 구성되는 회로로 변환하는 것을 표시하는 것이다.
승산기(272)는 승수 A(m-1 : 0)에 있어 값이 1인 비트의 자릿수 K(0≤K≤m-1)에 대해 승수 A(m-1 : 0)의 K비트째를 0에 설정한 m비트폭의 승수 A7(m-1 : 0)을 피승수 X에 승산하여 적 P7(n+m-1 : 0)을 출력한다.
믹서(273)는 피승수 X를 상위 n비트, 값이 0인 K-1비트폭의 신호를 하위 K-1비트로서 합성하고, n+K-1비트폭의 신호 R1(n+K-2 : 0)을 출력한다.
믹서(274)는 상기 신호 R1(n+K-2 : 0)의 상위에 각 비트의 값이 R1(n+K-2)인 m-K+1비트폭의 신호를 합성하여(신호 R1을 부호확장하여) n+m비트폭의 신호 R2(n+m-1 : 0)을 출력한다.
가산기(275)는 적 P7(n+m-1 : 0)과 신호 R2(n+m-1 : 0)를 가산하여 n+m비트폭의 합계 R3(n+m-1 : 0)를 적 P(n+m-1 : 0)로서 출력한다.
상기 변환규칙 7에 의해 처음의 승산기(271)와 등가인 회로로 변환할 수 있는 것의 증명을 다음에 표시한다.
이 경우, 승산기(272)에 입력되는 승수 A7(m-1 : 0)의 비트폭은 승산기(271)에 입력되는 승수 A(m-1 : 0)의 비트폭과 같으나, 값이 1인 비트의 수는 감소하므로, 이 처리가 반복되는 것에 의해, 곧 상기 스텝 1008 또는 1010(제8도 참조)의 처리가 행하여진다.
제27도는 상기 변환규칙 7에 의한 처리를 행하는 구성을 그 기능에 착안하여 표시하는 구성도이다.
입력수단(261)은 처음의 기능소자인 승산기(271)를 표시하는 회로정보를 회로데이터 기억부(23)에서 판독하여 승산기(271)의 입력이 m비트의 승수 A 및 n비트의 피승수 X인 것을 표시하는 정보를 신호생성수단(262)에 출력한다. 또, 피승수 X를 표시하는 정보 및 승산기(271)의 출력이 m+n비트의 적 P인 것을 표시하는 정보를 연산회로 생성수단(264)에 출력한다.
신호생성수단(262)은 승수 A에 있어 값이 1인 K비트째(0≤K≤m-1)의 값을 0에 설정한 승수 A7을 표시하는 정보와, 피승수 X를 표시하는 정보와, 그 승산결과가 적 P7인 것을 표시하는 정보를 승산모들 생성수단(263)에 출력한다. 또, 상기 K의 값을 표시하는 정보와 적 P7을 표시하는 정보를 연산회로 생성수단(264)에 출력한다.
승산모들 생성수단(263)은 상기 신호 X와 상기 신호 A7과의 적 P7을 구하는 승산기(272)를 표시하는 정보를 생성하여 출력수단(265)에 출력한다.
연산회로 생성수단(264)은 K의 값을 표시하는 정보, 적 P7을 표시하는 정보, 피승수 X를 표시하는 정보 및 적 P를 표시하은 정보에 의거하여 믹서(276, 274)와 가산기(275)를 표시하는 정보를 출력수단(265)에 출력한다.
출력수단(265)은 승산모들 생성수단(263) 및 연산회로 생성수단(264)에서 출력된 변환 후의 회로를 표시하는 회로정보를 회로데이터 기억부(23)에 격납한다.
[실시예 6]
상기 변환규칙 4의 다른 예 및 그들의 변환규칙에 의해 생성되는 승산기의 구성을 설명한다.
여기서, 설명을 간단하게 하기 위해 변수 X가 정수인 경우를 표시하나 정부(正負)의 값을 얻을 수 있는 경우에는 변환규칙 4와 동일하게 부호확장하고나서 논리부정을 취하거나 논리부정을 취하고나서 부호확장 하도록 하면 된다.
제28도(a)∼제28도(c)는 변환규칙의 결과절을 표시하는 동시에 생성되는 승산기의 구성을 표시한다. 또한, 제28도(a)∼제28도(c)에 있어 각 구성요소는 제19도에 표시한 것과 동일하므로 같은 부호를 붙여서 설명을 생략한다.
제28도(a)의 승산기는 가산기(175)의 케리인으로서 값 1의 신호를 입력하는데 대신하여 믹서(173)에 입력되는 m비트의 신호로서 값 1의 신호를 입력하도록 되어 있다.
제28도(b)의 승산기는 가산기(176)의 케리인으로서 값 1의 신호를 입력하는데 대신하여 동일하게 믹서(173)에 입력되는 m비트의 신호로서 값 1의 신호를 입력하도록 되어 있다.
또, 승수의 비트폭 m이 2이상의 경우에도 제28도(c)에 표시하는 것과 같이 가산기(175, 176) 공히 값 1의 신호를 케리인 입력하는데 대신하여 믹서(173)에 입력되는 m비트의 신호로서 값 2의 신호를 입력하도록 하여도 된다.
상기와 같이, 적 P0를 보정하여 적 P를 구하는 연산은 여러 가지의 변형이 가능하다.
상기 어느 승산기에 있어서 그 중에 포함되는 승산기는 승수 A의 전 비트의 논리부정을 취한 값을 승수 A0로서, 이 승수 A0와 피승수 X를 승산하는 것이므로, posibits(A)가 m/2보다도 큰 경우에도 부분적수 m/2이하로 하여, 회로면적의 삭감이나 승산속도의 향상은 도모할 수가 있다.
또한, 상기 각 실시예에 있어서는 회로데이터 기억부(23)에 격납하는 회로정보로서, 기능소자, 논리소자 또는 실장소자 등의 소자를 중심으로 소자간의 입출력관계에 착안하여 회로를 표시하는 데이터 표현의 사용되는 예를 설명하였으나, 이것에 한정되지 않고 소자간의 연결 즉 신호를 중심으로 한 데이터 표현이 사용되는 경우 등에서도 동일한 변환규칙에 의거하는 회로의 변환처리가 가능하다.
또, 변환처리는 상기와 같은 변환규칙에 의거하여 회로의 변환처리에 한정되지 않고 생성 등록하는 회로 데이터의 각 부분을 특정한 순서로 순서적으로 생성하여 등록하는 처리라도 된다.
또, m비트폭의 승수와 n비트폭의 피승수와의 적 P가 n+m비트폭인 경우만을 설명하였으나, 보다 일반적으로 임의의 비트폭의 적을 구하는 것도 용이하다. 예를 들면 적 P의 비트폭 1이 n+m보다 작은 경우에는 승산결과의 하위에서 1비트를 취하면 되고, n+m보다 큰 경우에는 n+m비트의 승산결과를 하위의 비트로 하고, 상위의 비트를 부호확장 또는 0확장하면 된다.

Claims (51)

  1. 정수인 승수와 피승수와의 적을 구하는 논리회로를 표시하는 정보를 생성하는 논리회로의 자동설계방법은, (a)상기 승수의 값을 입력하는 스텝과, (b)상기 승수에 있어 값이 1인 비트를 검출하는 스텝과, (c)상기 (b)의 스텝에 있어 검출결과에 따라, 상기 승수에 있어 값이 1인 비트에 관해서만 상기 승수와 피승수와의 부분적을 구하는 부분적 연산회로를 표시하는 정보를 생성하는 스텝과, (d)상기 부분적 연산회로에 의해 구해지는 부분적끼리의 부분적 합계를 구하는 부분적 합계 연산회로를 표시하는 정보를 생성하는 스텝을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계방법.
  2. 제1항에 있어서, (e)상기 승수에 있어 값이 1인 비트가 4비트로 이상 있는 경우에, 값이 1인 비트를 그 개수가 대략 같게 되도록 그룹으로 분할하는 스텝을 더욱 구비하고, 상기 (d)의 스텝에서는 각 그룹에 대응하는 부분적 합계끼리를 가산하고 부분적 합계 연산회로를 표시하는 정보가 생성되는 것을 특징으로 하는 논리회로의 자동설계방법.
  3. 제2항에 있어서, (e)의 스텝에서 그룹 분할된 각 그룹에 대하여 그 그룹 내에 값이 1인 비트가 4비트 이상 있는 경우에, 상기 (e) 및 (d)의 스텝을 재귀적으로 실행하는 것을 특징으로 하는 논리회로의 자동설계방법.
  4. 제1항에 있어서, (f)상기 승수에 있어 값이 1인 비트의 개수가 상기 승수의 전 비트수의 약 1/2이상인 경우에, 상기 승수의 논리부정수를 구하는 논리부정회로를 표시하는 정보를 생성하는 스텝을 더욱 구비하고, 상기(b)∼(d)의 스텝에서는 상기 논리부정수를 승수로서 처리가 행하여지고, 상기 논리회로의 자동설계 방법은, (g)상기 논리부정수와 상기 피승수와의 적에 의거하여, 처음의 승수와 상기 피승수와의 적을 구하는 적보정회로를 표시하는 정보를 생성하는 스텝을 더욱 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계방법.
  5. 제4항에 있어서, 상기 (g)의 스텝에 있어 상기 적보정회로는 상기 피승수와 2를 상기 처음의 승수의 비트폭과 동일한 개수만 승한 값과의 적에서, 상기 논리부정수와 피승수와의 적과, 상기 피승수를 감산하는 회로인 것을 특징으로 하는 논리회로의 자동설계방법.
  6. 정수의 승수와 피승수와의 적을 구하는 논리회로를 표시하는 정보를 생성하는 논리회로의 자동설계장치는, 상기 승수의 값을 입력하는 입력수단과, 상기 승수에 있어서, 값이 1인 비트를 검출하는 검출수단과, 상기 검출수단에 있어 검출결과에 따라서 상기 승수에서의 값이 1인 비트에 관해서만 상기 승수와 피승수와의 부분적을 구하는 부분적 연산회로를 표시하는 정보를 생성하는 제1의 회로정보 생성수단과, 상기 부분적 연산회로에 의해 구해지는 부분적끼리의 부분적 합계를 구하는 부분적 합계 연산회로를 표시하는 정보를 생성하는 제2의 회로정보 생성수단을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  7. 제6항에 있어서, 상기 승수에서의 값이 1인 비트의 개수를 검출하는 비트수 검출수단과, 상기 비트수 검출수단에 의해 검출된 상기 비트의 개수가 4이상인 경우에, 값이 1인 비트를 그 개수가 대략 같게 되도록 그룹분할하는 그룹분할수단을 더욱 구비하고, 상기 제2의 회로정보 생성수단은 각 그룹에 대응하는 부분적 합계끼리를 가산하는 부분적 합계 연산회로를 표시하는 정보를 생성하는 것을 특징으로 하는 논리회로의 자동설계장치.
  8. 제7항에 있어서, 상기 그룹 분할수단에 의해 그룹 분할된 각 그룹에 대하여 상기 비트수 검출수단, 그룹 분할수단 및 제2의 회로정보 생성수단에 의한 처리가 재귀적으로 실행되도록 제어하는 재귀처리 제어수단을 더욱 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  9. 제6항에 있어서, 상기 승수에 있어 값이 1인 비트의 개수가 상기 승수의 전 비트수의 대략 1/2 이상인 경우에, 상기 승수의 논리부정수를 구하는 논리부정회로를 표시하는 정보를 생성하는 제3의 회로정보 생성수단을 더욱 구비하고, 상기 검출수단 제1의 회로정보 생성수단 및 제2의 회로정보 생성수단은 상기 논리부정수를 승수로서 처리를 행하고, 상기 논리회로의 자동설계장치는, 상기논리부정수와 상기 피승수와의 적에 의거하여, 처음의 승수와 상기 피승수와의 적을 구하는 적보정회로를 표시하는 정보를 생성하는 제4의 회로정보 생성수단을 더욱 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  10. 제9항에 있어서, 상기 제4의 회로정보 생성수단에 있어 상기 적보정화는 상기 피승수와 2를 상기 처음의 승수의 비트폭과 동일의 개수만 승한 값과의 적에서, 상기 논리부정수와 피승수와의 적과, 상기 피승수를 감산하는 회로인 것을 특징으로 하는 논리회로의 자동설계장치.
  11. n비트의 수 X와 m비트의 Y를 입력으로서 그 적 P를 출력하는 승산기 M을 생성하는 논리회로의 자동설계방법은, (a) 0Km인 정수 K에 대해 상기 Y의 하위 K비트로 되는 Y1과 상기 X를 입력으로서 상기 Y1과 X과의 적 P1을 출력하는 승산기 M1을 생성하는 스텝과, (b) 상기 Y의 상위 m-K비트로 되는 Y2와 상기 X를 입력으로서 Y2와 X와의 적 P2를 출력하는 승산기 M2를 생성하는 스텝과, (c) 상기 P1과 P2를 입력으로서 상기 P2와 2K와의 적과, P1과의 합계를 출력하는 회로를 생성하는 스텝을 구비하고, 상기 논리회로의 자동설계방법은 상기 (a)∼(c)의 스텝을 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  12. 제11항에 있어서, 상기 (a) 및 (b)의 스텝에서 생성되는 상기 승산기 M1 및 M2에 대해서, 각각 상기 (a)∼(c)의 스텝을 재귀적으로 반복 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  13. 제11항에 있어서, 상기 정수 K는 K와 m-K와의 차의 절대치가 최소로 되는 정수인 것을 특징으로 하는 논리회로의 자동설계방법.
  14. 제11항에 있어서, 상기 수 Y는 m비트의 정수 A이고, 상기 Y1은 상기 정수 A의 하위 K비트로 되는 정수 A1이고, 상기 Y2는 상기 정수 A의 상위 m-K로 되는 정수 A2인 것을 특징으로 하는 논리회로의 자동설계방법.
  15. 제14항에 있어서, (d) 상기 정수 A1에 있어 값이 1인 비트의 개수 L1과, 상기 정수 A2에 있어 값이 1인 비트의 개수 L2에 의거하여, 상기 정수 K의 값을 결정하는 스텝을 더욱 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계방법.
  16. 제15항에 있어서, 상기 (d)의 스텝에서는 상기 L1과 L2와의 차의 절대치가 최소로 되도록 상기 정수 K의 값이 결정되는 것을 특징으로 하는 논리회로의 자동설계방법.
  17. n비트의 수 X와 m비트의 정수 A를 입력으로서 그 적 P를 출력하는 승산기 M을 생성하는 논리회로의 자동설계방법은, (a) 상기 정수 A에 있어 값이 1인 비트의 자릿수 K(0≤K≤m-1)에 대해 정수 A7을 A7=A-2K로 하여 구하는 스텝과, (b) 상기 A7과 X를 입력으로서 상기 A7과 X의 적 P7을 출력하는 승산기 M7을 생성하는 스텝과, (c) 상기 X와 P7을 입력으로서 상기 X와 2K의 적과, 상기 P7과의 합계를 출력하는 회로를 생성하는 스텝을 구비하고, 상기 논리회로의 자동설계방법은 상기 (a)∼(c)의 스텝을 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  18. 제17항에 있어서, 상기 K는 0 또는 m-1인 것을 특징으로 하는 논리회로의 자동설계방법.
  19. 제17항에 있어서, 상기 (b)의 스텝에서 생성되는 상기 승산기 M7에 대하여 상기 (a)∼(c)의 스텝을 재귀적으로 반복 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  20. n비트의 수 X와 m비트의 정수 A를 입력으로서 그 적 P를 출력하는 승산기 M을 생성하는 논리회로의 자동설계방법은, (a) 0Km-1인 정수 K에 대해 상기 정수 A의 하위 K-1비트로 되는 정수 A5와 상기 X를 입력으로서 그 적 P5를 출력하는 승산기 M5를 생성하는 스텝과, (b) 상기 정수 A의 상위 m-K비트로 되는 정수 A6와 상기 X를 입력으로서 그 적 P6을 출력하는 승산기 M6을 생성하는 스텝과, (c) 상기 정수 A의 최하의 비트에서 계산하여 K비트째의 값이 1이면, 상기 X와 P5와 P6를 입력으로 상기 X와 2K-1과의 적과, 상기 P6와 2K의 적과, 상기 P5와 합계를 출력하는 회로를 생성하는 스텝과, (d) 상기 K비트째 값이 0이면, 상기 P5와 P6를 입력으로서 상기 P6와 2K와의 적과, 상기 P5와 합계를 출력하는 회로를 생성하는 스텝을 구비하고, 상기 논리회로의 자동설계방법은 상기 (a)∼(d)의 스텝을 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  21. 제20항에 있어서, 상기 (a) 및 (b)의 시스텝에 생성되는 상기 승산기 M5 및 M6에 대하여 각각 상기 (a)∼(d)의 스텝을 재귀적으로 반복 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  22. n비트의 수 X와 m비트의 정수 A를 입력으로서 그 적 P를 출력하는 승산기 M을 생성하는 논리회로의 자동설계방법은 (a) 상기 정수 A와 X를 입력으로서 상기 정수 A의 1의 보수 A0와 상기 X와의 적 P0를 출력하는 회로를 생성하는 스텝과, (b) 상기 X를 입력으로서, 상기 X의 2의 보수와, 상기 X와 2m과의 적과의 합계 Q4를 출력하는 회로를 생성하는 스텝과, (c) 상기 P0와 Q4를 입력으로서 상기 P0의 2의 보수 Q0와 상기 Q4와의 합계를 출력하는 회로를 생성하는 스텝을 구비하고, 상기 논리회로의 자동설계방법은 상기 (a)∼(c)의 스텝을 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  23. 제22항에 있어서, 상기 (a)의 스텝은, (a-1) 상기 정수 A에서의 값이 1비트의 개수 L11이 0Km인 소정의 정수 K보다도 어떤가를 판정하는 스텝과, (a-2) 상기 (a-1)의 스텝에서의 판정에 있어서 상기 비트의 개수 L11이 K보다도 크면, 상기 정수 A와 상기 X를 입력으로서 상기 정수 A의 1의 보수 A0와 상기 X와의 적 P0를 출력하는 회로를 생성하는 스텝을 가지고 있는 것을 특징으로 하는 논리회로의 자동설계방법.
  24. n비트의 수 X와 m비트의 정수 A를 입력으로서 그 적 P를 출력하는 승산기 M을 생성하는 논리회로의 자동설계방법은, (d) 제14항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝과, 제17항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝을 상기 정수 A에 따라서 선택적으로 실행하는 스텝을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계방법.
  25. 제24항에 있어서, 상기 (d)의 스텝에서는, 상기 정수 A에 있어 값이 1인 비트의 개수 L11이 3보다도 클 경우에, 제14항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 한편, 상기 L11이 2보다도 작을 경우에, 제17항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 것을 특징으로 하는 논리회로의 자동설계방법.
  26. 제24항에 있어서, 상기 (d)의 스텝에서는, 상기 정수 A의 비트수 m이 3보다도 클 경우에, 제14항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 한편, 상기 m이 2보다도 작을 경우에, 제17항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 것을 특징으로 하는 논리회로의 자동설계방법.
  27. 제24항에 있어서, 상기 논리회로의 자동설계방법에서의 상기 (d)의 스텝에 의해 생성된 상기 승산기 M1, M2 및 M7에 대해 각각 상기 (d)의 스텝을 재귀적으로 반복 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  28. n비트의 수 X와 m비트의 정수 A를 입력으로서 그 적 P을 출력하는 승산기 M을 생성하는 논리회로의 자동설계방법은, (d) 제14항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝과, 제17항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝과, 제22항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝을 상기 정수 A의 값에 따라서 선택적으로 실행하는 스텝을 구비한 것을 특징으로 하는 논리회로의 자동설계방법.
  29. 제28항에 있어서, 상기 (d)의 스텝에서는, 상기 정수 A에 있어 값이 1인 비트의 개수 L11이 3보다도 클 경우에는, 더욱 상기 L11이 상기 정수 A에 있어 값이 0인 비트의 개수 L00보다도 크면, 제22항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되고, 상기 L11이 상기 L00보다도 작으면, 제14항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 한편, 상기 L11이 2보다도 작을 경우에는, 제17항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 것을 특징으로 하는 논리회로의 자동설계방법.
  30. 제28항에 있어서, 상기 (d)의 스텝에서는, 상기 정수 A의 비트수 m이 3보다도 클 경우에는, 더욱 상기 정수 A에 있어 값이 1인 비트의 개수 L11이 상기 정수 A에 있어서 값이 0인 비트의 개수 L00보다도 크면, 제22항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되고, 상기 L11이 상기 L00보다도 작으면, 제14항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 한편, 상기 m이 2보다도 작을 경우에는, 제17항기재의 논리회로의 자동설계방법에서의 (a)∼(c)의 스텝이 선택되는 것을 특징으로 하는 논리회로의 자동설계방법.
  31. 제28항에 있어서, 상기 논리회로의 자동설계방법에 있어 상기 (d)의 스텝에 의해 생성된 상기 승산기 M1, M2 및 M7에 대하여 각각 상기 (d)의 스텝을 재귀적으로 반복 실행하는 것에 의해 상기 승산기 M을 생성하는 것을 특징으로 하는 논리회로의 자동설계방법.
  32. 제24항 내지 31항중 어느 1항에 있어서, 상기 정수 K는 K와 m-K와의 차의 절대치가 최소로 되는 정수인 것을 특징으로 하는 논리회로의 자동설계방법.
  33. 제24항 내지 31항중 어느 1항에 있어서, (e) 상기 정수 A1에 있어 값이 1인 비트의 개수 L11과, 상기 정수 A2에 있어 값이 1인 비트의 개수 L2에 의거하여, 상기 정수 K의 값을 결정하는 스텝을 더욱 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계방법.
  34. 제33항에 있어서, 상기 (e)의 스텝에서는, 상기 정수 A1에서의 값이 1인 비트의 개수 L11과, 상기 정수 A2에서의 값이 1인 비트의 개수 L2와의 차의 절대치가 최소로 되도록 상기 정수 K의 값이 결정되는 것을 특징으로 하는 논리회로의 자동설계방법.
  35. n비트의 수를 표시하는 신호 X와 m비트의 수를 표시하는 신호 Y와의 적을 표시하는 신호 P를 구하는 승산기를 생성하는 논리회로의 자동설계장치는, 상기 신호 X와 신호 Y와 신호 P를 표시하는 정보를 입력하는 입력수단과, 0Km인 정수 K에 대해, 상기 신호 Y의 하위 K비트로 되는 신호 Y1과 상기 신호 X와의 적을 표시하는 신호 P1을 구하는 승산기 M1 및 상기 신호 Y의 상위 m-K비트로 되는 신호 Y2와 상기 신호 X와의 적을 표시하는 신호 P2를 구하는 승산기 M2를 표시하는 정보를 생성하는 승산기 생성수단과, 상기 신호 P1의 상위 n비트로 되는 신호 Q1과 상기 신호 P2를 입력으로서, 합계 Q1+P2를 표시하는 신호를 상기 신호 P의 상위 n+m-K비트로서 출력하고, 상기 신호 P1의 하위 K비트로 되는 신호를 상기 신호 P의 하위 K비트로서 출력하는 연산 회로를 표시하는 정보를 생성하는 연산회로 생성수단과, 상기 승산기 생성수단 및 연산회로 생성수단으로 생성된 상기 승산기 M1 및 M2, 그리고 연산회로를 표시하는 정보를 출력하는 출력수단을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  36. 제35항에 있어서, 상기 정수 K의 값을 m-K의 차의 절대치가 최소로 되도록 결정하는 결정수단을 더욱 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  37. 제35항에 있어서, 상기 신호 Y는 m비트의 정수를 표시하는 신호 A이고, 상기 신호 Y1은 상기 신호 A의 하위 K비트로 되는 신호 A1이고, 상기 신호 Y2는 상기 신호 A의 상위 m-K비트로 되는 신호 A2인 것을 특징으로 하는 논리회로의 자동설계장치.
  38. 제37항에 있어서, 상기 신호 A1에 있어 값이 1인 비트의 개수 L1과, 상기 신호 A2에 있어 값이 1인 비트의 개수 L2에 의거하여 상기 정수 K의 값을 결정하는 결정수단을 더욱 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  39. 제38항에 있어서, 상기 결정수단은 상기 L1과 L2와의 차의 절대치가 최소로 되도록 정수 K의 값을 결정하는 결정하는 것을 특징으로 하는 논리회로의 자동설계장치
  40. n비트의 수를 표시하는 신호 X와 m비트의 정수를 표시하는 신호 A와의 적을 표시하는 신호 P를 구하는 승산기를 생성하는 논리회로의 자동설계장치는 상기 신호 X와 신호 A와 신호 P를 표시하는 정보를 입력하는 수단과, 0Km인 정수 K에 대해, 상기 신호 A의 최하위 비트에서 계산에서 K비트째의 값을 판정하는 판정수단과, 상기 신호 A의 하의 K-1비트로 되는 신호 A5와 상기 신호 X와의 적을 표시하는 신호 P5를 구하는 승산기 M5 및 상기 신호 A의 상위 m-K비트로 되는 신호 A6와 상기 신호 X와의 적을 표시하는 신호 P6을 구하는 승산기 M6을 표시하는 정보를 생성하는 승산기 생성수단과, 상기 판정수단의 판정결과에 있어, 상기 K비트째의 값이 1이면, 상기 신호 X와 신호 P5와 신호 P6를 입력으로서 상기 신호 X와 2K-1와의 적과, 상기 신호 P6와 2K의 적과 상기 신호 P5와의 합계를 상기 신호 P로서 출력하는 제1의 연산회로를 표시하는 정보를 생성하는 제1의 연산회로 생성수단과, 상기 K비트째의 값이 0이면, 상기 신호 P5와 신호 P6를 입력으로서 상기 P6의 신호 2K의 적과, 상기 신호 P5와의 합계를 상기 신호 P로서 출력하는 제2의 연산회로를 표시하는 정보를 생성하는 제2의 연산회로 생성수단과, 상기 승산기 생성수단과 상기 제1 및 제2의 연산회로의 생성수단으로 생성된 상기 승산기 M5와 M6, 그리고 상기 제1 및 제2의 연산회로를 표시하는 정보를 출력하는 출력수단을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  41. n비트의 수를 표시하는 신호 X와 m비트의 정수를 표시하는 신호 A와의 적을 표시하는 신호 P를 구하는 승산기를 생성하는 논리회로의 자동설계장치는, 상기 신호 X와 신호 A와 신호 P를 표시하는 정보를 입력하는 입력수단과, 상기 신호 A에 있어 값이 1인 비트의 자릿수 K(0≤K≤m-1)에 대하여, 상기 신호 A의 최하위 비트에서 계산하여 K비트째의 값을 0에 설정한 신호 A7을 표시하는 정보를 생성하는 신호 생성수단과, 상기 신호 A7과 신호 X와의 적을 표시하는 신호 P7을 구하는 승산기 M7을 표시하는 정보를 생성하는 승산기 생성수단과, 상기 신호 P7과 신호 X를 입력으로 상기 신호 X와 2K의 적과, 상기 신호 P7과의 합계를 표시하는 신호를 P로서 출력하는 연산회로를 표시하는 정보를 생성하는 연산회로 생성수단과, 상기 승산기 생성수단 및 연산회로 생성수단으로 생성된 상기 승산기 M7 및 연산회로를 표시하는 정보를 출력하는 출력수단을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  42. 제41항에 있어서, 상기 K는, 0 또는 m-1인 것을 특징으로 하는 논리회로의 자동설계장치.
  43. n비트의 수를 표시하는 신호 X와 m비트의 정수를 표시하는 신호 A와의 적을 표시하는 신호 P를 구하는 승산기를 생성하는 논리회로의 자동설계장치는 상기 신호 X와 신호 A와 신호 P를 표시하는 정보를 입력하는 입력수단과, 상기 신호 A에 있어 값이 1인 비트의 개수가 0Km인 소정의 정수 K보다도 큰가 어떤가를 판정하는 판정수단과, 상기 판정수단이 판정결과에 따라서 상기 신호 A의 논리부정신호 A0를 구하는 논리부정수단과, 상기 A0와 X를 입력으로서 그 적을 표시하는 신호 P0를 구하는 승산기 M0를 표시하는 정보를 생성하는 승산기 생성수단과, 상기 X와 상기 승산기 M0의 출력신호 P0를 입력으로 상기 X와 2m-1과의 적과, 상기 P0와의 차를 표시하는 신호를 상기 신호 P로서 출력하는 연산회로를 표시하는 정보를 생성하는 연산회로 생성수단과, 상기 승산기 생성수단 및 연산회로 생성수단으로 생성된 상기 승산기 M0 및 연산회로를 표시하는 정보를 출력하는 출력수단을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  44. 제43항에 있어서, 상기 연산회로 생성수단은, 상기 X를 입력으로 상기 X와 2m과의 적과, 상기 X와의 차를 신호 Q4를 출력하는 연산회로를 표시하는 정보를 생성하는 회로 생성수단과, 상기 승산기 M0의 출력신호 P0와 상기 신호 Q4를 입력으로서 상기 Q4와 P0와의 차를 표시하는 신호를 상기 신호 P로서 출력하는 연산회로를 표시하는 정보를 생성하는 감산회로 생성수단을 가지는 것을 특징으로 하는 논리회로의 자동설계장치.
  45. 제43항에 있어서, 상기 연산회로 생성수단은, 상기 승산기 M0의 출력신호 P0를 입력으로서 상기 신호 P0의 논리부정신호 Q0를 출력하는 연산회로를 표시하는 정보를 생성하는 논리부정회로 생성수단과, 상기 X를 입력으로서 상기 X와 2m-1과의 적과, 값 1과의 합계를 표시하는 신호 Q5를 출력하는 연산회로를 표시하는 정보를 생성하는 회로 생성수단과, 상기 신호 Q0와 신호 Q5를 입력으로서 상기 Q0와 Q5와의 합계를 표시하는 신호를 상기 신호 P로서 출력하는 연산회로를 표시하는 정보를 생성하는 가산회로 생성수단을 가지고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  46. 제43항 내지 제45항중의 어느 1항에 있어서, 상기 정수 K의 값을(m+2)/2이상의 최소의 정수로 되도록 결정하는 결정수단을 더욱 구비하고 있는 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  47. n비트의 수를 표시하는 신호 X와 m비트의 정수를 표시하는 신호 A와의 적을 표시하는 신호 P를 구하는 승산기를 생성하는 논리회로의 자동설계장치는, 상기 신호 X와 신호 A와 신호 P를 표시하는 정보를 입력하는 입력수단과, 상기 정수 신호 A에 있어 값이 1인 비트의 개수가 0Km인 소정의 정수 K 보다도 큰가 어떤가를 판정하는 제1의 판정수단과, 상기 신호 A의 최상위 비트의 값이 1인가 어떤가를 판정하는 제2의 판정수단과, 상기 제1의 판정수단의 판정결과에 따라 상기 신호 A의 논리부정신호 A0를 구하는 논리부정수단과, 상기 A0와 X를 입력으로서 그 적을 표시하는 신호 P0를 구하는 승산기 M0를 표시하는 정보를 생성하는 제1의 승산기 생성수단과, 상기 X와 상기 승산기 M0의 출력신호 P0를 입력으로의 상기 X와 2m-1과의 적과, 상기 P0와의 차를 표시하는 신호를 상기 신호 P로서 출력하는 제1의 연산회로를 표시하는 정보를 생성하는 제1의 연산회로 생성수단과, 0Km인 정수 K에 대해 상기 신호 A의 하위 K비트로 되는 신호 A1과 상기 신호 X와의 적을 표시하는 신호 P1을 구하는 승산기 M1 및 상기 신호 A의 상위 m-K비트로 되는 신호 A2와 상기 신호 X와의 적을 표시하는 신호 P2를 구하는 승산기 M2를 표시하는 정보를 생성하는 제2의 승산기 생성수단과, 상기 신호 P1의 상위 n비트로 되는 신호 Q1과 상기 신호 P2를 입력으로서 합계 Q1+P2를 표시하는 신호를 상기 신호 P의 상위 n+m-K비트로서 출력하여, 상기 신호 P1의 하위 K비트로 되는 신호를 상기 신호 P의 하위 K비트로서 출력하는 제2의 연산회로를 표시하는 정보를 생성하는 제2의 연산회로 생성수단과, 상기 신호 A의 하위 m-1비트로 되는 신호 A3와 상기 신호 X와의 적을 표시하는 신호 P3를 구하는 승산기 M3를 표시하는 정보를 생성하는 제3의 승산기 생성수단과, 상기 제2의 판정수단의 판정결과에 있어서, 상기 최상위 비트의 값이 1이면, 상기 신호 P3를 상기 신호 P의 하위 m-1비트로서 출력하는 동시에, 상기 신호 P3의 상위 n비트로 도는 신호 Q1과 상기 신호 X를 입력으로서 상기 신호 Q1과 신호 X와의 합계를 표시하는 신호를 상기 신호 P의 상위 n+1비트로서 출력하는 제3의 연산회로를 표시하는 정보를 생성하는 제3의 연산회로 생성수단과, 상기 제2의 판정수단의 판정 결과에 있어 상기 최상위 비트의 값이 0이면, 상기 신호 P3을 상기신호 P의 하위 n+m-1비트로 하여, 값 0의 신호를 상기 신호 P의 상위 1비트로서 출력하는 제4의 연산회로를 표시하는 정보를 생성하는 제4의 연산회로 생성수단과, 상기 제1, 제2 및 제3의 승산기 생성수단, 그리고 상기 제1, 제2, 제3 및 제4의 연산회로 생성수단으로 생성된 상기 승산기 M0, M1, M2 및 M3, 그리고 상기 제1, 제2, 제3 및 제4의 연산회로를 표시하는 정보를 출력하는 출력수단을 구비하고 있는 것을 특징으로 하는 논리회로의 자동설계장치.
  48. n비트의 수를 표시하는 신호 X와 m비트의 정수를 표시하는 신호 A를 입력으로서 n+m비트의 적 P를 출력하는 승산기는, 상기 정수 A의 논리부정신호 A0와 상기 신호 X를 입력으로서, 그 적을 표시하는 신호 P0를 출력하는 승산수단과, 상기 신호 X와 신호 P0를 입력으로서, X·(2m-1)-P0를 연산하여 상기 P로서 출력하는 보정수단을 구비하고 있는 것을 특징으로 하는 승산기.
  49. 제48항에 있어서, 상기 보정수단은, 상기 신호 X를 입력으로서 X·(2m-1)를 표시하는 신호 P01을 출력하는 연산수단과, 상기 신호 P0와 신호 P01을 입력으로서 P01-P0의 값을 표시하는 신호를 출력하는 검산수단을 가지고 있는 것을 특징으로 하는 승산기.
  50. 제48항에 있어서, 상기 보정수단은, 상기 신호 P0를 입력으로서, 상기 신호 P0의 논리부정신호 Q0를 출력하는 논리부정수단과, 상기 신호 X를 입력으로서, X·(2m-1)+1을 표시하는 신호 Q6를 출력하는 연산수단과, 상기 신호 Q0와 신호 Q6를 입력으로서, 상기 신호 Q0와 신호 Q6와의 합계를 표시하는 신호를 상기 P로서 출력하는 가산수단을 가지고 있는 것을 특징으로 하는 승산기.
  51. 제48항에 있어서, 상기 보정수단은, 상기 신호 X를 입력으로서, 상기 신호 X의 논리부정신호를 출력하는 제1의 논리부정수단과, 상기 신호 P0를 입력으로서, 상기 신호 P0의 논리부정신호를 출력하는 제2의 논리부정수단과, 하위 m비트의 각각에 값 0이 설정되고, 또한 상위 n비트에 상기 신호 X가 설정되어서 n+m비트의 신호와, 하위 n비트에 상기 제1의 논리부정수단의 출력신호가 설정되고, 또한 상위 m비트의 각각에 값 1이 설정되어서 되는 n+m비트의 신호와, 케리인으로서의 값 1을 입력으로 하는 제1의 가산수단과, 상기 제2의 논리부정수단의 출력신호와, 상기 제1의 가산수단의 출력신호와 케리인으로서 값 1을 입력으로 상기 P를 출력하는 제2의 가산수단을 가지고 있는 것을 특징으로 하는 승산기.
KR1019930028580A 1992-12-28 1993-12-20 논리회로의 자동설계방법 및 그 장치와 승산기 KR970006408B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP92-348,269 1992-12-28
JP4348269A JP2840169B2 (ja) 1992-12-28 1992-12-28 論理回路の自動設計方法およびその装置

Publications (2)

Publication Number Publication Date
KR940015785A KR940015785A (ko) 1994-07-21
KR970006408B1 true KR970006408B1 (ko) 1997-04-28

Family

ID=18395900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930028580A KR970006408B1 (ko) 1992-12-28 1993-12-20 논리회로의 자동설계방법 및 그 장치와 승산기

Country Status (5)

Country Link
US (2) US5530664A (ko)
EP (1) EP0605885B1 (ko)
JP (1) JP2840169B2 (ko)
KR (1) KR970006408B1 (ko)
DE (1) DE69332817T2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2972498B2 (ja) * 1993-09-02 1999-11-08 松下電器産業株式会社 論理回路の自動設計方法、そのシステム及びその装置並びに乗算器
JP2972540B2 (ja) * 1994-03-24 1999-11-08 松下電器産業株式会社 Lsi自動設計システム及びlsi自動設計方法
US5815422A (en) * 1997-01-24 1998-09-29 Vlsi Technology, Inc. Computer-implemented multiplication with shifting of pattern-product partials
US6718465B1 (en) * 2000-02-25 2004-04-06 The Research Foundation Of State University Of New York Reconfigurable inner product processor architecture implementing square recursive decomposition of partial product matrices
US6978426B2 (en) * 2002-04-10 2005-12-20 Broadcom Corporation Low-error fixed-width modified booth multiplier
US6971083B1 (en) * 2002-11-13 2005-11-29 Altera Corporation Method for programming programmable logic device with blocks that perform multiplication and other arithmetic functions
US7395300B2 (en) * 2004-01-27 2008-07-01 Broadcom Corporation System, and method for calculating product of constant and mixed number power of two
US7380226B1 (en) * 2004-12-29 2008-05-27 Cadence Design Systems, Inc. Systems, methods, and apparatus to perform logic synthesis preserving high-level specification
US7912891B2 (en) * 2005-12-09 2011-03-22 Electronics And Telecommunications Research Institute High speed low power fixed-point multiplier and method thereof
US10289259B2 (en) 2007-02-13 2019-05-14 Visual Targeting Corporation Method for defining a presentation format targetable to a demographic
GB201111243D0 (en) * 2011-06-30 2011-08-17 Imagination Tech Ltd Method and apparatus for use in the sysnthesis of lossy integer multipliers

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5164844A (ko) * 1974-12-03 1976-06-04 Fujitsu Ltd
US4964056A (en) * 1987-03-25 1990-10-16 Hitachi, Ltd. Automatic design system of logic circuit
JP2877303B2 (ja) * 1987-03-31 1999-03-31 株式会社東芝 集積回路の自動設計装置
JPH0315984A (ja) * 1987-09-25 1991-01-24 Matsushita Electric Ind Co Ltd 機能記述変換方法と論理設計システム
JP2506991B2 (ja) * 1987-09-25 1996-06-12 松下電器産業株式会社 回路変換システムと回路変換方法と反転論理生成方法および論理設計システム
KR920003908B1 (ko) * 1987-11-19 1992-05-18 미쓰비시뎅끼 가부시끼가이샤 승산기(乘算器)
JP2682142B2 (ja) * 1989-06-14 1997-11-26 松下電器産業株式会社 乗算装置
FR2650088A1 (fr) * 1989-07-18 1991-01-25 Thomson Csf Procede pour la generation de schemas logiques de circuits multiplieurs parametrables a decodeur de booth au moyen d'un ordinateur et circuits multiplieurs correspondants
FR2656124A1 (fr) * 1989-12-15 1991-06-21 Philips Laboratoires Electro Multiplieur serie programmable.
JP2563663B2 (ja) * 1990-08-20 1996-12-11 松下電器産業株式会社 論理設計処理装置およびタイミング調整方法
US5345393A (en) * 1990-08-22 1994-09-06 Matsushita Electric Industrial Co., Ltd. Logic circuit generator
US5351206A (en) * 1992-11-12 1994-09-27 Vlsi Technology, Inc. Signed two's complement constant multiplier compiler

Also Published As

Publication number Publication date
US5530664A (en) 1996-06-25
JPH06203098A (ja) 1994-07-22
DE69332817D1 (de) 2003-05-08
KR940015785A (ko) 1994-07-21
EP0605885A2 (en) 1994-07-13
JP2840169B2 (ja) 1998-12-24
DE69332817T2 (de) 2003-11-06
EP0605885A3 (en) 1995-05-10
EP0605885B1 (en) 2003-04-02
US5703802A (en) 1997-12-30

Similar Documents

Publication Publication Date Title
US5222037A (en) Floating-point processor for performing an arithmetic operation on fixed-point part data with high speed rounding of a result
JP2622896B2 (ja) 除算装置
US4893268A (en) Circuit and method for accumulating partial products of a single, double or mixed precision multiplication
US5184318A (en) Rectangular array signed digit multiplier
KR0126626B1 (ko) 논리회로의 자동설계방법, 그 시스템 및 그 장치와 승산기
US7188133B2 (en) Floating point number storage method and floating point arithmetic device
KR970006408B1 (ko) 논리회로의 자동설계방법 및 그 장치와 승산기
EP0487814A2 (en) Overflow determination for three-operand alus in a scalable compound instruction set machine
US5282156A (en) Leading one anticipator and floating point addition/subtraction apparatus employing same
US5144576A (en) Signed digit multiplier
US5903470A (en) Method and apparatus for automatically designing logic circuit, and multiplier
US5574677A (en) Adaptive non-restoring integer divide apparatus with integrated overflow detect
US4118786A (en) Integrated binary-BCD look-ahead adder
US5097434A (en) Hybrid signed-digit/logarithmic number system processor
JP2578482B2 (ja) 浮動小数点演算器
JP3112662B2 (ja) 乗算器
JP4163967B2 (ja) 浮動小数点演算装置
JP2508286B2 (ja) 平方根演算装置
JPH0823814B2 (ja) 多重ディジット10進数を2進数に変換する装置および統一された比復号器
JPH06243194A (ja) 論理回路の自動設計方法およびその装置
JPH113210A (ja) 3入力比較器、並びにこれを用いた飽和演算装置およびその演算方法
JP2000010763A (ja) 除算回路
KR100265358B1 (ko) 고속의쉬프팅장치
JP2870018B2 (ja) 積和演算回路
JPH0583930B2 (ko)

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20080911

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee