(57)【要約】      （修正有）【課題】設計時において回路の簡単化を許可しながら、フォーマル検証ツールによる論理等価性検証が容易である複合演算回路を提供する。【解決手段】複合演算回路は、非同期演算回路である乗算器７、９、加算器８、１０、組み合わせ回路１１〜１５等を備える。乗算器７、９の出力を、複合演算回路が形成されたベアチップが搭載されたＢＧＡパッケージのピンに接続されていないパッドに対し、直接接続または論理回路（レジスタ、セレクタ、ラッチ回路等）を介して接続する。または、乗算器７、９の出力を、ベアチップのパッドを介してＢＧＡパッケージのピンへの接続があり且つ該ピンからプリント基板への電気的接続線のないピンに相当する半田ボールに対し、直接接続または論理回路を介して接続する。【選択図】図１
2015041263.tif 000002
【特許請求の範囲】
【請求項１】
内部にデータラッチ用のフリップフロップを具備しない複数の非同期演算回路と組み合わせ回路を有する複合演算回路であって、
前記複数の非同期演算回路のうち少なくとも１つは乗算器として構成され、
前記乗算器の出力は、前記複合演算回路が形成されたベアチップが搭載されたパッケージのピンに接続されていないパッドに対して、または、前記ベアチップのパッドを介して前記パッケージのピンへの接続があり且つ該ピンから前記パッケージが実装されたプリント基板への電気的接続線のないピンに対して、直接接続または論理回路を介して接続されていることを特徴とする複合演算回路。
【請求項２】
内部にデータラッチ用のフリップフロップを具備しない複数の非同期演算回路と組み合わせ回路を有する複合演算回路であって、
前記複数の非同期演算回路のうち少なくとも１つは乗算器として構成され、
前記複合演算回路は、ハードウエア記述言語を合成して生成され、
前記ハードウエア記述言語は、前記乗算器が推定される記述の出力端に更に他の演算回路または論理回路が付加される記述を有し、前記ハードウエア記述言語において前記乗算器の出力端から信号線を引き出し、前記信号線の出力側は直接または論理回路を介して前記複合演算回路が形成されたベアチップの入出力パッドに接続されていることを特徴とする複合演算回路。
【請求項３】
前記ベアチップの入出力パッドを、前記ベアチップが搭載されたパッケージのピンに接続されていないパッド、または、前記パッケージのピンへの接続があり且つ該ピンから前記パッケージが実装されたプリント基板に搭載されている他のコンポーネントへの接続配線のない実用に供しないピンに接続したことを特徴とする請求項２記載の複合演算回路。
【請求項４】
内部にデータラッチ用のフリップフロップを具備しない複数の非同期演算回路と組み合わせ回路を有する複合演算回路であって、
前記複数の非同期演算回路のうち少なくとも１つは乗算器として構成され、
前記複合演算回路は、ハードウエア記述言語を合成して生成され、
前記ハードウエア記述言語は、前記乗算器が推定される記述の出力端に更に他の演算回路または論理回路が付加される記述を有し、前記ハードウエア記述言語において前記乗算器の出力端から信号線を引き出し、前記信号線の出力側を直接または論理回路を介してＣＰＵにより読み出し可能に構成したことを特徴とする複合演算回路。
【請求項５】
前記乗算器の出力情報を読み出すためのアドレスは、前記ＣＰＵによる読み出し不能な領域のアドレスの範囲に割り当てられていることを特徴とする請求項４記載の複合演算回路。
【請求項６】
内部にデータラッチ用のフリップフロップを具備しない複数の非同期演算回路と組み合わせ回路を有する複合演算回路であって、
前記複数の非同期演算回路のうち少なくとも１つは乗算器として構成され、
前記複合演算回路は、ハードウエア記述言語を合成して生成され、
前記ハードウエア記述言語は、前記乗算器が推定される記述の出力端に更に他の演算回路または論理回路が付加される記述を有し、前記ハードウエア記述言語において前記乗算器の出力端から信号線を引き出し、前記信号線を論理回路のデータ入力端子に接続し且つ前記論理回路の出力はオープンにし、論理合成時に前記論理回路および前記論理回路への接続線を削除できないオプションを加えて合成し生成することを特徴とする複合演算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非同期演算回路である乗算器を含む複合演算回路に関する。
【背景技術】
【０００２】
従来、ＡＳＩＣ（特定用途向けＩＣ）設計やＦＰＧＡ（プログラム可能ゲートアレイ）設計では、論理等価性検証のために全ての故障検出率を検証可能なテストパターンを作成するために、可能な限りの論理シミュレーションを実施していた。しかし、可能な限りの論理シミュレーションを実施する方法では、回路規模が２０万ゲート回路を超えると、故障検出率を９０％にするにも非常に時間がかかると共にテストパターンを作成する工数が膨大となり、実質的に実施が不可能となってきた。
【０００３】
これに対し、現在ではＳＣＡＮという手法で回路テストを実施することで回路の検証を行っている。また、ＲＴＬ（レジスタ転送レベル）記述と論理合成（ＲＴＬ記述からＡＳＩＣまたはＦＰＧＡの実装設計を行う工程）された回路の一致を比較できるフォーマル検証手段で論理比較を行い、一致の有無の検証を実施する。これにより、９９％の故障検出率を実現し、且つゲート回路の論理を保証することが可能となっている。
【０００４】
上記技術分野に関しては各種の技術が提案されている（例えば、特許文献１、特許文献２参照）。特許文献１には、半導体集積回路の論理等価性検証を行うシステムとして、論理等価性検証部、ＲＴＬ／ゲートレベル回路記述、ライブラリを有する論理等価性検証システムが記載されている。また、特許文献２には、デジタルデータ処理装置の自動合成の際に行われる大規模論理の簡単化に関する方法が記載されている。また、上記技術分野に関する文献も出版されている（例えば、非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１４０８７７号公報
【特許文献２】特開平６−６８１９６号公報
【非特許文献】
【０００６】
【非特許文献１】Ｄｅｓｉｇｎ  ｗａｖｅ  ｍａｇａｚｉｎｅ  ２００１  ａｐｒｉｌ  Ｐ１３２
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１に記載されているフォーマル検証の場合、ＲＴＬ記述と論理合成された回路とにおいて簡単に論理が一致できない場合が知られている。特に昨今問題になっているのが乗算器のフォーマル検証である。一般に乗算器のフォーマル検証は、推定可能なものに関しては検証できるようになってきているが、それ以外のものは依然として困難ということが知られている（上記非特許文献１）。
【０００８】
特に乗算器のビット幅ｎが増えるに伴って乗算の組み合わせ状態が２のｎ乗個に増える。そのため、フリップフロップ（ＦＦ）とフリップフロップの間の回路部分の非同期ゲート回路で積と和の複合演算が複雑な構成で存在すると、その論理の簡単化により、乗算器のフォーマル検証は困難であるという問題がある。複数の乗算器や加算器等から構成される複合演算回路は、例えば複写機等に搭載される画像処理回路では特に誤差拡散法やＤＳＰ（Digital Signal Processor）演算で多用されている。そのため、上記の問題を簡単に解決することが要望されている。
【０００９】
また、一般にＡＳＩＣやＦＰＧＡの場合、各回路を簡単化できないモジュールまたはハードマクロ（ハードウエアとして組み込まれている回路ブロック）に置き換えるか、論理合成時に回路の最適化を禁止する手段を用いれば、フォーマル検証を簡単に実現できる。しかし、その分、回路規模が大きくなるという問題がある。また、ＦＰＧＡの場合、論理合成ツールには回路の簡単化を禁止する手段がサポートされておらず、前記の回路簡単化を禁止する手段に関する扱いも非常に困難である。
【００１０】
本発明は、設計時において回路の簡単化を許可しながら、フォーマル検証ツールによる論理等価性検証が容易である複合演算回路を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明は、内部にデータラッチ用のフリップフロップを具備しない複数の非同期演算回路と組み合わせ回路を有する複合演算回路であって、前記複数の非同期演算回路のうち少なくとも１つは乗算器として構成され、前記乗算器の出力は、前記複合演算回路が形成されたベアチップが搭載されたパッケージのピンに接続されていないパッドに対して、または、前記ベアチップのパッドを介して前記パッケージのピンへの接続があり且つ該ピンから前記パッケージが実装されたプリント基板への電気的接続線のないピンに対して、直接接続または論理回路を介して接続されていることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、設計時において回路の簡単化を許可しながら、フォーマル検証ツールを用いて容易に論理等価性検証することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態に係る複合演算回路の構成を示す回路図である。
【図２】論理を簡単化した複合演算回路の構成を示す回路図である。
【図３】ＢＧＡパッケージおよびプリント基板の構成を示す一部断面図である。
【図４】第２の実施形態に係る複合演算回路の構成を示す回路図である。
【図５】第３の実施形態に係る複合演算回路の構成を示す回路図である。
【図６】図５の複合演算回路の動作を説明するためのタイムチャートである。
【図７】第４の実施形態に係る複合演算回路の構成を示す回路図である。
【発明を実施するための形態】
【００１４】
以下、実施形態を図面を参照しながら詳細に説明する。
【００１５】
〔第１の実施形態〕
図１は、第１の実施形態に係る複合演算回路（積和演算回路）の構成を示す回路図である。図１において、複合演算回路は、ハードウエア記述言語を合成して生成され、レジスタ１、レジスタ２、レジスタ３、レジスタ４、レジスタ５、セレクタ６、乗算器７、加算器８、乗算器９、加算器１０を備えている。更に、複合演算回路は、組み合わせ回路１１（Ｂ）、組み合わせ回路１２（Ａ）、組み合わせ回路１３（Ｃ）、組み合わせ回路１４（Ｄ）、組み合わせ回路１５（Ｅ）を備えている。
【００１６】
レジスタ１、２、３、４、５は、クロック入力端子１７から入力されるクロック信号（ＣＬＫ）のタイミングで、それぞれ、ｄａｔａ１、ｄａｔａ２、ｄａｔａ３、ｄａｔａ４、加算器１０の出力信号をラッチする。レジスタ１の出力端子は、組み合わせ回路１１（Ｂ）を介して乗算器７の一方の入力端子群に入力されている。レジスタ２の出力端子は、組み合わせ回路１２（Ａ）を介して乗算器７の他方の入力端子群に入力されている。
【００１７】
レジスタ３の出力端子は、組み合わせ回路１３（Ｃ）を介して加算器８の一方の入力端子群に入力されると共に、組み合わせ回路１５（Ｅ）を介して加算器１０の一方の入力端子群に入力されている。レジスタ４の出力端子は、組み合わせ回路１４（Ｄ）を介して乗算器９の一方の入力端子群に入力されている。
【００１８】
乗算器７の出力端子は、加算器８の他方の入力端子群に接続されている。また、乗算器７の出力端子は、セレクタ６の一方の入力端子群に接続されている。加算器８の出力端子は、乗算器９の他方の入力端子群に接続されている。乗算器９の出力端子は、加算器１０の他方の入力端子群に接続されている。また、乗算器９の出力端子は、セレクタ６の他方の入力端子群に接続されている。加算器１０の出力端子は、レジスタ５の入力端子に接続されている。尚、乗算器７、加算器８、乗算器９、加算器１０は、内部にデータラッチ用のフリップフロップ（ＦＦ）を具備しない非同期演算回路である。
【００１９】
レジスタ１〜５のクロック入力端子は、クロック入力端子１７に接続されている。セレクタ６の出力端子は、ＰＩＮ＿ＯＵＴ端子１８に接続されている。また、セレクタ６のセレクト端子は、セレクト（ＳＥＬ）信号線１６に接続され、更にセレクト信号線１６を介して外部レジスタ（不図示）の出力端子に接続されている。
【００２０】
次に、上記構成を有する複合演算回路の動作について説明する。組み合わせ回路１１（Ｂ）は、レジスタ１にクロック（ＣＬＫ）同期でラッチされたｄａｔａ１のラッチデータｒｅｇｄａｔａ１に論理演算Ｂを施す一種の演算子（論理回路）であり、Ｂ（ｒｅｇｄａｔａ１）の値を出力する。組み合わせ回路１２（Ａ）は、レジスタ２にラッチされたｄａｔａ２のラッチデータｒｅｇｄａｔａ２に論理演算Ａを施す演算子（論理回路）であり、Ａ（ｒｅｇｄａｔａ２）の値を出力する。
【００２１】
組み合わせ回路１３（Ｃ）は、レジスタ３にラッチされたｄａｔａ３のラッチデータｒｅｇｄａｔａ３に論理演算Ｃを施す演算子（論理回路）であり、Ｃ（ｒｅｇｄａｔａ３）の値を出力する。組み合わせ回路１４（Ｄ）は、レジスタ４にラッチされたｄａｔａ４のラッチデータｒｅｇｄａｔａ４に論理演算Ｄを施す演算子（論理回路）であり、Ｄ（ｒｅｇｄａｔａ４）の値を出力する。組み合わせ回路１５（Ｅ）は、レジスタ３にラッチされたｄａｔａ３のラッチデータｒｅｇｄａｔａ３に論理演算Ｅを施す演算子（論理回路）であり、Ｅ（ｒｅｇｄａｔａ３）の値を出力する。
【００２２】
組み合わせ回路１１（Ｂ）、組み合わせ回路１２（Ａ）、組み合わせ回路１３（Ｃ）、組み合わせ回路１４（Ｄ）、組み合わせ回路１５（Ｅ）からそれぞれ出力される上記値は、乗算器７、加算器８、乗算器９、加算器１０において非同期で演算される。加算器１０は、下記の式１に示すように非同期の演算結果を出力する。
［数１］
Ｄｓｐ＿ｏｕｔ  ＜＝（Ｂ（ｒｅｇｄａｔａ１）＊Ａ（ｒｅｇｄａｔａ２）＋
Ｃ（ｒｅｇｄａｔａ３））＊Ｄ（ｒｅｇｄａｔａ４）＋Ｅ(ｒｅｇｄａｔａ３）；
（式１）
【００２３】
レジスタ５は、加算器１０から出力される非同期の演算結果をＣＬＫ同期でラッチして出力するように動作する。
【００２４】
今、図１の複合演算回路においてセレクタ６を設けない場合を考える（後述の図２）。設計者が最初から論理が簡単になるということを把握して論理記述をすれば、大幅な論理の簡単化は通常起こりにくい。しかし、論理合成ツール（ゲートレベルの論理設計を自動的に行うツール）は、簡単には認識できない共通論理を回路の解析を行うことで把握し、ゲート回路を最小にするように回路構造を変えてまで回路を簡単化する。そのための論理の簡単化を行う手法としては様々な手法が提案されている。
【００２５】
例えば下記の文献には準最適解を求める発見的手法が記載されている。“ＥＳＰＲＥＳＳＯ−II：Ａ  ｎｅｗ  ｌｏｇｉｃ  ｍｉｎｉｍｉｚｅｒ  ｆｏｒ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ａｒｒａｙｓ”  （１９８４  Ｃｕｓｔｏｍ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  Ｃｏｎｆｅｒｅｎｃｅ）
このような論理記述（ＲＴＬ記述）は、論理合成されると回路全体で最適化され、どこが乗算器か加算器か見分けられなくなる場合も多い。論理合成ツールが論理を簡単化する場合、まずその共通論理を探し省略可能かどうかを検討する。例えば、仮に、Ｅ（ｒｅｇｄａｔａ３）＝Ｄ（ｒｅｇｄａｔａ４）＋３の論理的な関係があるとすると、論理合成ツールはその中の共通論理を探す。この式を上記式１の右辺のＥ（ｒｅｇｄａｔａ３）に代入すると下式のようになる。
［数２］
Ｄｓｐ＿ｏｕｔ  ＜＝（Ｂ（ｒｅｇｄａｔａ１）＊Ａ（ｒｅｇｄａｔａ２）
＊Ｄ（ｒｅｇｄａｔａ４）＋Ｃ（ｒｅｇｄａｔａ３）＊Ｄ（ｒｅｇｄａｔａ４））
＋（Ｄ（ｒｅｇｄａｔａ４）＋３）；
次に、Ｄ（ｒｅｇｄａｔａ４）で新たに共通項をくくると下式のように変形される。
［数３］
Ｄｓｐ＿ｏｕｔ  ＜＝（Ｂ（ｒｅｇｄａｔａ１）＊Ａ（ｒｅｇｄａｔａ２）
＋（Ｃ（ｒｅｇｄａｔａ３）＋１））＊Ｄ（ｒｅｇｄａｔａ４）＋３；
即ち、本来、乗算器の後に演算される記述にあった部分が乗算器の前に出て、回路が簡単化されると共に回路の構造が変わってしまうことが分かる。これを図２に示す。図２は、論理を簡単化した複合演算回路の構成を示す回路図である。図２において、図１の組み合わせ回路１３（Ｃ）が（Ｃ＋１）に変わり、組み合わせ回路１５（Ｅ）が固定値３に置き換わっている。また、上述したようにセレクタ６を設けていない。
【００２６】
このように論理の簡単化をすると、本来、乗算器の出力側にある演算を行う回路が乗算器の入力側に移動したりしてしまう。特に、乗算器を構成する回路との簡単化、例えば特定のビットが用いられないための回路の簡単化等を含めた簡単化が行われると、次のような問題が発生する。即ち、非同期回路のどこが乗算器部分でどこが加算器部分であるのか、容易に推論し分離して検証することができなくなってしまう。
【００２７】
本来、フォーマル検証ツールは、ＲＴＬ記述を論理合成ツールとは別個に合成し、論理合成ツールが合成した回路と回路を比較するように動作する。ただし、論理の簡単化には数多くの手法があり、論理合成ツールが簡単化した回路を正確に把握し、同じ回路をフォーマル検証ツールが生成するのは非常に困難である。特に、乗算器の場合、ｎビットの乗算器には２のｎ乗の異なった論理条件ができるため、ｎが大きくなるに伴って乗算器を含むモジュールとモジュールの間の論理比較で２つの回路の一致を確認するのは非常に難しくなってくる。
【００２８】
更に、論理合成ツールは、回路の動作速度や合成される面積に応じて複数の乗算器が用いられる。回路が大きく簡単化されゲート回路に展開されてしまっていると、どこが乗算器部分かどこがその他のロジック部分かを把握することも困難となる。このように、もともと論理比較が困難な乗算器を含むモジュールの場合、フォーマル検証ツールは予め論理合成ツールが使用している乗算器を正しく推論することで、初めて短時間で論理の一致比較を実現することが可能となっている。
【００２９】
上記のように論理の簡単化が乗算器を含む回路部分で行われると、フォーマル検証ツールは、どこが乗算器部分なのか使われている乗算器の種類が同じなのかを把握することが困難となる。特に、記述上、乗算器の出力側にあったロジック部分が入力側に入って、且つ複雑な簡単化が実施されると、一層その乗算器の把握が難しくなる。これを避けるため、本実施形態では図１に示したように複合演算回路にセレクタ６を付加している。
【００３０】
重要なことは、論理合成時、組み合わせ回路１５（Ｅ）の部分と加算器１０および乗算器９が簡単化処理で大きく変形されないことである。そのための有効な方法として、本実施形態では複合演算回路のセレクタ６の出力端子を当該複合演算回路を実装しているＦＰＧＡまたはＡＳＩＣの出力端子に出力されるように当該複合演算回路を構成する。これにより、複合演算回路は省略されにくくなる。
【００３１】
ただし、実際には、図１の複合演算回路をＦＰＧＡまたはＡＳＩＣの外部から観測する必要はない。そのため、タイミンング制約を付加することなく、ＦＰＧＡまたはＡＳＩＣのパッケージの外部ピン（ＰＩＮ）からプリント基板上に配線が接続されていない空きピンにセレクタ６の出力端子を接続する。これにより、タイミングの厳しい部分における余計な配線の増加による配線リソースの減少に伴う実害を最小限にすることができる。
【００３２】
このように、複合演算回路にセレクタ６を付加することで、論理合成時、乗算器７と乗算器９の出力位置を固定させることができ、乗算器を含むモジュールの把握が容易となる。その結果、フォーマル検証でＲＴＬ記述と論理合成ツールが論理合成した回路とが一致するかどうかの比較が容易となる効果が生じる。また、論理の簡単化に結果として制限をかけることができ、乗算器の出力側の論理がその入力側に簡単化されて繰り入れられることを制限することができる効果も生じる。それも、フォーマル検証でＲＴＬ記述と論理合成ツールが論理合成した回路との一致比較がより容易となる効果である。
【００３３】
図３は、ＢＧＡパッケージおよびプリント基板の構成を示す一部断面図である。図３において、説明の便宜上、ＡＳＩＣまたはＦＰＧＡの半導体チップ（ベアチップ）が搭載されたＢＧＡ（Ball Grid Array）パッケージの外側部分を斜視図で表し、ＢＧＡパッケージの外側以外の部分とプリント基板を断面図で表している。
【００３４】
ベアチップ３−１は、ＡＳＩＣまたはＦＰＧＡの論理回路（本実施形態では図１の複合演算回路を含む論理回路）が構成されており、インタポーザ３−３の表面に固定されることで実装されている。ベアチップ３−１上に設けられた信号出力用の入出力パッド（ＩＯパッド：電極）は、ボンデイングワイヤ３−２を介してインナーリード３−１１、３−１２に接続されている。ＢＧＡパッケージ３−４の裏面には、出力端子に相当する半田ボール３−６と未配線の半田ボール３−９が設けられている。インナーリード３−１１、３−１２は、半田ボール３−６、３−９に接続されている。
【００３５】
尚、３−１４はＢＧＡパッケージ３−４のピンに接続されていない入出力パッド（ＩＯパッド）である。入出力パッド３−１４は、ＢＧＡパッケージ３−４のピンに接続されていないパッド、または、ＢＧＡパッケージ３−４のピンへの接続があり且つ該ピンからプリント基板３−５上の他のコンポーネントへの接続配線のない実用に供しないピンに接続される。
【００３６】
プリント基板３−５には、プリント基板上にＢＧＡパッケージ３−４を実装するため、信号を引き出すためのスルーホール３−８および他の実装部品への接続線３−７、接続線３−１０が、半田ボール３−６、３−９のサイズに合わせて予め形成されている。ＢＧＡパッケージ３−４は、半田付け（リフロー等）によりプリント基板上に実装される。また、プリント基板３−５には、通常、半田付けのためのランド３−１３が印刷されている。他の実装部品に接続する必要のあるピン（ＰＩＮ）だけが、他の実装部品への接続線３−７、接続線３−１０、スルーホール３−８等を介してＢＧＡパッケージ３−４の外部に信号線として引き出される。
【００３７】
これに対し、未配線の半田ボール３−９は、上述したようにＢＧＡパッケージ３−４の裏面に設けられており、引き出しが困難なピン或いは本来はプリント基板上の実装回路に対して実装する必要のない余ったピン（ＰＩＮ）に相当する。また、未配線の半田ボール３−９は、外部引き出し線を付加せず単に半田付けのために用意されているプリント基板上のランド３−１３に実装しただけで放置するピン（ＰＩＮ）に相当する。
【００３８】
通常、ＦＰＧＡのパッケージは、汎用の多ピンのパッケージを用いるため上記のような冗長ピンが数多く存在し、上記のような処理に付されることが多い。本実施形態では、乗算器の出力端子を、上述した余ったピンや放置するピンに相当する未配線の半田ボール３−９に直接接続またはセレクタ等を介して接続することで、実際信号としては使う必要のないこの配線を有効にする。これにより、乗算器を含む回路の論理簡単化が制約されるようにすることが可能となる。また、実際の回路に対する余計な制約による負荷も減らす効果も生じる。
【００３９】
ＡＳＩＣのパッケージの場合は、上述したＦＰＧＡのパッケージのような多ピンと異なりピンが少ないことも多い。乗算器の出力端子を、ＡＳＩＣまたはＦＰＧＡの論理回路が形成されたベアチップ３−１上に配置されパッケージの出力ピンには接続されない入出力パッド（ＩＯＰＡＤ）に接続してもよい。この場合も上記（論理簡単化の制約、余計な制約による負荷の減少）と同等の効果を生じることができる。
【００４０】
上述したように本実施形態によれば以下の作用および効果を奏する。複合演算回路の非同期演算回路である乗算器の出力を、複合演算回路が形成されたベアチップ３−１が搭載されたＢＧＡパッケージ３−４のピンに接続されていないパッドに対し、直接接続または論理回路（レジスタ、セレクタ、ラッチ回路等）を介して接続する。または、乗算器の出力を、ベアチップ３−１のパッドを介してＢＧＡパッケージ３−４のピンへの接続があり且つ該ピンからプリント基板３−５への電気的接続線のないピンに相当する半田ボール３−９に対し、直接接続または論理回路を介して接続する。
【００４１】
前記構成により、乗算器の出力端子を明示でき、小さなロジックコーン（フォーマル検証の単位）を明示的に構成することができる。その結果、乗算器の回路把握が容易になり、且つ乗算器の出力側に接続されている回路が乗算器の入力側に接続されている回路と簡単化されることを防止することができる。これにより、回路の簡単化を許可しながら、フォーマル検証ツールによる論理等価性検証を容易にすることができる。換言すれば、フォーマル検証ツールによる回路構成の把握を困難にすることを回避することができる。
【００４２】
〔第２の実施形態〕
図４は、第２の実施形態に係る複合演算回路の構成を示す回路図である。図４において、複合演算回路は、ハードウエア記述言語を合成して生成され、レジスタ１、２、３、４、５、乗算器７、加算器８、乗算器９、加算器１０を備えている。更に、複合演算回路は、組み合わせ回路１１（Ｂ）、組み合わせ回路１２（Ａ）、組み合わせ回路１３（Ｃ）、組み合わせ回路１４（Ｄ）、組み合わせ回路１５（Ｅ）を備えている。更に、複合演算回路は、レジスタ４１、４２を備えている。
【００４３】
図４が上記第１の実施形態の図１と相違する点は、セレクタ６を削除すると共に代わりにレジスタ４１、４２を設けた点である。具体的には、乗算器７の出力端子はレジスタ４１の入力端子に接続され、乗算器９の出力端子はレジスタ４２の入力端子に接続されている。また、レジスタ４１の出力端子はｄａｔａ６＿ｏｕｔ端子に接続され、レジスタ４１の出力端子はｄａｔａ７＿ｏｕｔ端子に接続されている。これら以外は図１と同一であるため同一箇所の説明は省略する。
【００４４】
次に、上記構成を有する複合演算回路の動作について説明する。今、レジスタ２のラッチデータｒｅｇｄａｔａ２に演算子である組み合わせ回路１２（Ａ）が作用すると、ｒｅｇｄａｔａ２＆’０’と、ｒｅｇｄａｔａ２の内容を１ビット左にシフトする。また、レジスタ１のラッチデータｒｅｇｄａｔａ１に演算子である組み合わせ回路１１（Ｂ）が作用すると、ｒｅｇｄａｔａ１＆’００’と、ｒｅｇｄａｔａ１の内容を２ビット左にシフトする。また、レジスタ３のラッチデータｒｅｇｄａｔａ３に演算子である組み合わせ回路１３（Ｃ）が作用すると、ｒｅｇｄａｔａ３＆’０’−１と、ｒｅｇｄａｔａ３のデータを１ビット左にシフトしそこから１減算する。
【００４５】
また、レジスタ３のラッチデータｒｅｇｄａｔａ３に演算子である組み合わせ回路１５（Ｅ）が作用すると、ｒｅｇｄａｔａ３＆’０’＋１と、ｒｅｇｄａｔａ３の値を１ビット左にシフトしそこに更に１加算する。また、レジスタ４のラッチデータｒｅｇｄａｔａ４に演算子である組み合わせ回路１４（Ｄ）が作用すると、ｒｅｇｄａｔａ４を右に１ビットシフトしそれに１を加算する。
【００４６】
以上をＡＳＩＣやＦＰＧＡなどの論理回路設計用ハードウエア記述言語（設計言語）であるＶＨＤＬ記述を用いてまとめて記述すると、演算の記述は以下のようになる。
［数４］
（（ｒｅｇｄａｔａ２＆  ’０’）＊（  ｒｅｇｄａｔａ１＆  ’００’）
＋（ｒｅｇｄａｔａ３＆’０’−１））
＊（（ｒｅｇｄａｔａ４（ｍｓｂ  ｄｏｗｎｔｏ  １）＋１）
＋（ｒｅｇｄａｔａ３＆’０’＋１）
これに、乗算器のビット幅等の情報やインタフェースのレジスタの情報を加えてそのまま合成でき、図４の複合演算回路になるようなＶＨＤＬの記述を下記に示す。
ｌｉｂｒａｒｙ  ＩＥＥＥ；  ｕｓｅ  ＩＥＥＥ．ｓｔｄ＿ｌｏｇｉｃ＿１１６４．ａｌｌ；  ｕｓｅ  ＩＥＥＥ．ｓｔｄ＿ｌｏｇｉｃ＿ｕｎｓｉｇｎｅｄ．ａｌｌ；
Ｅｎｔｉｔｙ  ＤＳＰ  ｉｓ
ｐｏｒｔ  （  ＣＬＫ  ：  ｉｎ  ｓｔｄ＿ｌｏｇｉｃ；
ｄａｔａ１  ：  ｉｎ    ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；  ｄａｔａ２  ：  ｉｎ  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；
ｄａｔａ３  ：  ｉｎ    ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；  ｄａｔａ４  ：  ｉｎ  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；
ｄａｔａ５＿ｏｕｔ  ：  ｏｕｔ  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（９８  ｄｏｗｎｔｏ  ０）；  ｄａｔａ６＿ｏｕｔ  ：  ｏｕｔ  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（６６  ｄｏｗｎｔｏ  ０）；
ｄａｔａ７＿ｏｕｔ  ：  ｏｕｔ  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（９８  ｄｏｗｎｔｏ  ０）
）；          
ｅｎｄ  ＤＳＰ；
ａｒｃｈｉｔｅｃｔｕｒｅ  ｌａｎ  ｏｆ  ＤＳＰ  ｉｓ
ｓｉｇｎａｌ    ｒｅｇｄａｔａ５  ：    ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（９８  ｄｏｗｎｔｏ  ０）；ｓｉｇｎａｌ    ｒｅｇｄａｔａ１  ：  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；
ｓｉｇｎａｌ    ｒｅｇｄａｔａ２  ：  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；ｓｉｇｎａｌ    ｒｅｇｄａｔａ３  ：  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；
ｓｉｇｎａｌ    ｒｅｇｄａｔａ４  ：  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（３１  ｄｏｗｎｔｏ  ０）；
ｂｅｇｉｎ
ｐｒｏｃｅｓｓ（ＣＬＫ）
ｖａｒｉａｂｌｅ  ｖａｒｉ１  ：  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（６６  ｄｏｗｎｔｏ  ０）；
ｖａｒｉａｂｌｅ  ｖａｒｉ２  ：  ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ（９８  ｄｏｗｎｔｏ  ０）；
ｂｅｇｉｎ
ｉｆ  （ｃｌｋ’ｅｖｅｎｔ  ａｎｄ  ｃｌｋ  ＝  ’１’）  ｔｈｅｎ
ｒｅｇｄａｔａ１    ＜＝  ｄａｔａ１；  ｒｅｇｄａｔａ２    ＜＝  ｄａｔａ２；  ｒｅｇｄａｔａ３    ＜＝  ｄａｔａ３；  ｒｅｇｄａｔａ４    ＜＝  ｄａｔａ４；
ｖａｒｉ１：＝  （ｒｅｇｄａｔａ２  ＆    ’０’）  ＊  （  ｒｅｇｄａｔａ１  ＆  ”００”）；  ｖａｒｉ２：＝  （ｖａｒｉ１＋（（ｒｅｇｄａｔａ３  ＆  ’０’）−ｘ”１”））  ＊  （’０’  ＆  ｒｅｇｄａｔａ４（３１  ｄｏｗｎｔｏ  １）＋ｘ”１”）；
ｒｅｇｄａｔａ５  ＜＝  ｖａｒｉ２  ＋  （ｒｅｇｄａｔａ３  ＆  ’０’＋ｘ”１”）；
ｅｎｄ  ｉｆ；
ｄａｔａ６＿ｏｕｔ  ＜＝  ｖａｒｉ１；  ｄａｔａ７＿ｏｕｔ  ＜＝  ｖａｒｉ２；
ｅｎｄ  ｐｒｏｃｅｓｓ；
ｄａｔａ５＿ｏｕｔ  ＜＝  ｒｅｇｄａｔａ５；
ｅｎｄ  ｌａｎ；
上記で説明した通り、図４の複合演算回路が図１の複合演算回路と相違する点は、セレクタ６を削除しそれに代わってレジスタ４１、レジスタ４２を追加した点である。レジスタ４１、レジスタ４２は、それぞれ、乗算器７の出力端子、乗算器９の出力端子に接続されている。また、レジスタ４１、レジスタ４２は、それぞれ、ｄａｔａ６＿ｏｕｔ端子、ｄａｔａ７＿ｏｕｔ端子に接続されている。即ち、レジスタ４１、レジスタ４２は、ＦＰＧＡまたはＡＳＩＣが実装されているプリント基板上におけるリード線が付加されていない空きピンに接続されるＩＯパッドに接続されている。
【００４７】
このように、乗算器７、乗算器９の出力端子の信号をそれぞれレジスタ４１、レジスタ４２を介して実用に供さない出力ピンに接続する。これにより、乗算器７、乗算器９の出力端子を固定すると共に、回路の解析を困難とする回路の簡単化を阻止することが可能となる。
【００４８】
本実施形態では、複数の乗算器７、乗算器９の出力信号を全て独立にレジスタ４１、レジスタ４２でラッチし、それを出力ポートに出力するように構成した。実際には、乗算器７、乗算器９の出力信号をセレクトして出力を切り替えるようにすることで、配線を減らすことも可能である。または、乗算器７、乗算器９のうちビット幅の少ない乗算器については出力せず、ビット幅が１０ビット以上の乗算器単独でその出力信号を外部端子に出力することも可能である。
【００４９】
尚、更に乗算器のビット幅が大きくなると、回路の簡単化が乗算器に関わる回路まで含めると、更に論理等価性検証は困難になる。その場合には、乗算器の入力端子を出力端子に出力させることで乗算器を明示的に固定することが可能となり、論理等価性検証が容易となる。
【００５０】
尚、本実施形態では、図４の複合演算回路においてレジスタ４１、４２を設ける構成を例に挙げたが、これに限定されるものではない。レジスタ４１、４２を設ける代わりにフリップフリップ回路（ＦＦ）を設ける構成でもラッチ回路を設ける構成でも構わない。更に、乗算器のビット幅が大きい場合はピンが足りなくなるため、１ピンの出力端子に各ビットを選択して出力できるようにしてもよい。
【００５１】
〔第３の実施形態〕
図５は、第３の実施形態に係る複合演算回路の構成を示す回路図である。図５において、複合演算回路は、ハードウエア記述言語を合成して生成され、レジスタ１、２、３、４、５、乗算器７、加算器８、乗算器９、加算器１０を備えている。更に、複合演算回路は、組み合わせ回路１１（Ｂ）、組み合わせ回路１２（Ａ）、組み合わせ回路１３（Ｃ）、組み合わせ回路１４（Ｄ）、組み合わせ回路１５（Ｅ）を備えている。更に、複合演算回路は、レジスタ４１、４２、ＣＰＵ５１、読み出しアドレス制御回路５２、デコーダ回路５３、セレクタ５４、レジスタ５５を備えている。
【００５２】
図５が上記第２の実施形態の図４と相違する点は、レジスタ４１、４２の出力を出力端子に直接接続する代わりに、レジスタ４１、４２の出力信号をＣＰＵが読み出せるように構成した点である。図４の構成にＣＰＵ５１、読み出しアドレス制御回路５２、デコーダ回路５３、セレクタ５４、レジスタ５５を追加している。即ち、乗算器７、９の出力端から信号線が引き出され、信号線の出力側が論理回路（レジスタ４１、４２、セレクタ５４）を介して（または直接）ＣＰＵ５１により読み出し可能に構成されている。
【００５３】
具体的には、レジスタ４１の出力端子はセレクタ５４の一方の入力端子群に入力され、レジスタ４２の出力端子はセレクタ５４の他方の入力端子群に入力されている。セレクタ５４の出力端子はレジスタ５５の入力端子に接続され、レジスタ５５の出力端子はＣＰＵ５１のデータバスに接続されている。セレクタ５４のセレクト制御入力端子はデコーダ回路５３の出力端子に接続されている。デコーダ回路５３は読み出しアドレス制御回路５２により駆動され、読み出しアドレス制御回路５２はＣＰＵ５１により制御される。また、クロック入力端子からのクロック信号がＣＰＵ５１およびレジスタ５５にも入力されている。これら以外は図４と同一であるため同一箇所の説明は省略する。
【００５４】
次に、上記構成を有する複合演算回路の動作について説明する。図６は、図５の複合演算回路の動作を説明するためのタイムチャートである。図６において、クロック（ＣＬＫ）信号を除く信号がＣＰＵ５１から読み出しアドレス制御回路５２に送出される。レジスタ４１、４２の内容を読み出す必要のあるタイミングで（ＣＳＸ信号、ＡＳＸ信号、ＲＤＸ信号が“Ｌ”のとき）デコーダ回路５３に読み出すべきアドレス信号が、読み出しアドレス制御回路５２からデコーダ回路５３へ送出される。尚、ＡＳＸ信号はアドレストローブ信号、ＣＳＸ信号はチップセレクト信号、ＲＤＸ信号は読み出し信号を示す。
【００５５】
上記アドレス信号が示すアドレスに相当するレジスタ４１またはレジスタ４２の出力信号がセレクタ５４で選択され、レジスタ５５にラッチされる。ＣＰＵ５１はレジスタ５５の出力信号をデータバスで読み出し、ＲＤＸ信号の立ち上がりでＣＰＵ内部に取り込むことが可能となっている。
【００５６】
この場合、ＣＰＵ５１がオンチップで設計されている場合、少なくともＣＰＵ５１でレジスタ４１、４２のデータが読み出されるように構成されていないと、レジスタ４１、４２が論理合成時に削除されてしまう。そのため、ＣＰＵ５１によりテスト端子（不図示）の信号を常に監視し、その信号が“Ｈ”のときのみレジスタ４１、４２の出力信号を読み出せるようにすることで、実際の動作に影響を及ぼさないようにすることが可能である。
【００５７】
また、ＣＰＵ５１がＦＰＧＡまたはＡＳＩＣに対して外付けＣＰＵである場合には、ＣＰＵ５１が読み出し可能なアドレス以外に、レジスタ４１、４２の選択アドレスを割り付ける。これにより、レジスタ４１、４２の出力信号の読み出しを実際には不可能にするモードで、実際の動作においてＣＰＵ５１に余計な負荷を掛けないようにすることができる。
【００５８】
〔第４の実施形態〕
図７は、第４の実施形態に係る複合演算回路の構成を示す回路図である。図７において、複合演算回路は、ハードウエア記述言語を合成して生成され、レジスタ１、２、３、４、５、乗算器７、加算器８、乗算器９、加算器１０を備えている。更に、複合演算回路は、組み合わせ回路１１（Ｂ）、組み合わせ回路１２（Ａ）、組み合わせ回路１３（Ｃ）、組み合わせ回路１４（Ｄ）、組み合わせ回路１５（Ｅ）を備えている。更に、複合演算回路は、レジスタ４１、４２を備えている。
【００５９】
図７が上記第３の実施形態の図５と相違する点は、図５の構成からＣＰＵ５１、読み出しアドレス制御回路５２、デコーダ回路５３、セレクタ５４、レジスタ５５を削除し、レジスタ４１、４２の出力を次のように構成した点である。即ち、レジスタ４１、４２の出力をＦＰＧＡまたはＡＳＩＣのパッケージの出力端子（またはＡＳＩＣのベアチップ上のＩＯパッド）に出力する代わりに、レジスタ４１、４２の出力をオープンにしたままの回路とした点である。これら以外は図５と同一であるため同一箇所の説明は省略する。
【００６０】
通常、ＦＰＧＡの場合、このような回路だと現状の論理合成ツールはレジスタ４１、４２を削除してしまう。これに対し、ＡＳＩＣの論理合成ツールの場合、レジスタ４１、４２、および乗算器７、９から、そのＤ入力端子に接続されている配線を削除しないようにする命令がある。本実施形態では、そのような命令をレジスタ４１、４２およびレジスタ４１、４２のＤ入力端子に接続されている配線に対し設定して合成する。これにより、レジスタ４１、４２およびレジスタ４１、４２に対する乗算器出力からの配線が保持され、このような場合でもフォーマル検証を容易にする条件は確保されるという効果がある。
【００６１】
以上詳細に説明してきた本発明の特徴は以下の通りである。
【００６２】
複合演算回路の非同期演算回路である乗算器７、９の出力を、複合演算回路が形成されたベアチップ３−１が搭載されたＢＧＡパッケージ３−４のピンに接続されていないパッドに、直接接続または論理回路（レジスタ、セレクタ、ラッチ回路等）を介して接続する。または、乗算器７、９の出力を、ベアチップ３−１のパッドを介してＢＧＡパッケージ３−４のピンへの接続があり且つ該ピンからプリント基板３−５への電気的接続線のないピンに相当する半田ボール３−９に、直接接続または論理回路を介して接続する。
【００６３】
また、複合演算回路は、ハードウエア記述言語を合成して生成される。ハードウエア記述言語は、乗算器７、９が推定される記述の出力端に更に他の演算回路または論理回路が付加される記述（ＶＨＤＬ）を有する。
【００６４】
また、ハードウエア記述言語において乗算器７、９の出力端から信号線を引き出し、信号線の出力側を直接または論理回路（レジスタ、セレクタ、ラッチ回路等）を介して複合演算回路が形成されたベアチップ３−１の入出力パッド３−１４に接続する。
【００６５】
また、ベアチップ３−１の入出力パッド３−１４を、ＢＧＡパッケージ３−４のピンに接続されていないパッドに接続する。または、入出力パッド３−１４を、ＢＧＡパッケージ３−４のピンへの接続があり且つ該ピンからプリント基板３−５に搭載されている他のコンポーネントへの接続配線のない実用に供しないピン（余ったピンや放置するピン）に接続する。
【００６６】
また、ハードウエア記述言語において乗算器７、９の出力端から信号線を引き出し、信号線の出力側を直接または論理回路（レジスタ、セレクタ、ラッチ回路等）を介してＣＰＵ５１により読み出し可能に構成する。
【００６７】
また、乗算器７、９の出力情報を読み出すためのアドレスは、ＣＰＵ５１による読み出し不能な領域のアドレスの範囲に割り当てられている。
【００６８】
また、ハードウエア記述言語において乗算器７、９の出力端から信号線を引き出し、信号線を論理回路（レジスタ４１、４２）のデータ入力端子に接続し且つ論理回路の出力はオープンにする。更に、論理合成時に論理回路および論理回路への接続線を削除できないオプションを加えて合成し生成する。
【符号の説明】
【００６９】
３−１  ベアチップ
３−４  ＢＧＡパッケージ
３−５  プリント基板
３−９  半田ボール
３−１４  入出力パッド
７、９  乗算器
８、１０  加算器
１１〜１５  組み合わせ回路
５１  ＣＰＵ
【図１】
2015041263.tif 000003
【図２】
2015041263.tif 000004
【図３】
2015041263.tif 000005
【図４】
2015041263.tif 000006
【図５】
2015041263.tif 000007
【図６】
2015041263.tif 000008
【図７】
2015041263.tif 000009