(57)【要約】【課題】機能ブロックごとに生成されたネットリストから機能ブロック間の冗長論理素子を検索して最小の論理素子に置き換える冗長論理素子削除方法等を提供する。【解決手段】機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける各論理素子の入力ピン、及び出力ピンの接続状態を示すピン情報を生成し、当該生成されたピン情報に基づいて、前記機能ブロック間の論理素子における冗長論理素子を検索し、当該検索された前記冗長論理素子におけるピン情報を、等価な最小の論理素子のピン情報に更新し、当該更新されたピン情報に基づいて、前記ネットリストを生成する。【選択図】図２
2010176208.tif 000002
【特許請求の範囲】
【請求項１】
機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成ステップと、
当該ピン情報生成ステップが生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索ステップと、
当該冗長検索ステップが検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新ステップと、
当該ピン情報更新ステップが更新したピン情報に基づいて、当該ピン情報を回路情報に変換して冗長な論理素子を削除したネットリストを生成するネットリスト生成ステップとを含む冗長論理素子削除方法。
【請求項２】
請求項１に記載の冗長論理素子削除方法において、
前記ピン情報が、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数情報を有し、
前記ピン情報更新ステップが、前記特定された論理素子における前記反転論理素子の個数が偶数の場合に前記反転論理素子の個数情報を０に更新し、前記反転論理素子の個数が奇数の場合に前記反転論理素子の個数情報を１に更新する冗長論理素子削除方法。
【請求項３】
請求項１又は２に記載の冗長論理素子削除方法において、
任意の一のピン情報について入力される値が固定値であり、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数が奇数である場合に、前記冗長検索ステップが冗長な論理素子として検索し、
前記ピン情報更新ステップが、前記任意の一のピン情報について前記入力される固定値の極性を反転し、前記反転論理素子の個数情報を０に更新する冗長論理素子削除方法。
【請求項４】
請求項１ないし３のいずれかに記載の冗長論理素子削除方法において、
前記ピン情報における全ての入力端子のインスタンスと全ての出力端子のインスタンスとを比較し、入力端子のインスタンスにのみ存在するインスタンスが抽出された場合に、前記冗長検索ステップが冗長な論理素子として検索し、
前記ピン情報更新ステップが、前記抽出されたインスタンスのピン情報を削除する冗長論理素子削除方法。
【請求項５】
請求項１ないし４のいずれかに記載の冗長論理素子削除方法において
前記ピン情報に基づいて、入力値に等価な値を含む論理素子、入力値に固定値を含む論理素子、又は入力値に反転する値を含む論理素子が存在する場合に、前記冗長検索ステップが冗長な論理素子として検索し、
前記ピン情報更新ステップが、予め登録された前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す置換情報に基づいて、当該冗長な論理素子のピン情報を等価な最小の論理素子のピン情報に置き換えて更新する冗長論理素子削除方法。
【請求項６】
機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段と、
当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段と、
当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段と、
当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段とを備える冗長論理素子削除装置。
【請求項７】
機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段、
当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段、
当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段、
当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段としてコンピュータを機能させるための冗長論理素子削除プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットリストから冗長な論理素子を削除する冗長論理素子削除方法に関し、特に複数の機能ブロックに分割されたネットリストにおける冗長論理素子を削除する冗長論理素子削除方法等に関する。
【背景技術】
【０００２】
製品の高機能化に伴い、集積回路が大規模化し、開発期間が増大している。この対策として、複数の機能ブロックに分割し、機能ブロック毎に複数人で同時設計する方法、過去の設計資産の流用、他社が開発したＩＰマクロを購入する方法等の施策が行われている。また、これらの機能ブロックを繋ぎ合わせて、１つの集積回路の設計を行う手法が一般的となっている。
【０００３】
しかしながら、第１の課題として、ある機能ブロックを集積回路内で異なる用途に複数回使用する場合、一方では機能ブロック内のある回路が必要だが、他方ではその回路が不要と言う場合がある。その場合、同じ機能ブロックを使用しているが故に、不要な回路を削除する事は出来ず、冗長な回路が存在してしまう。
【０００４】
第２の課題として、過去の設計資産を流用する場合、品質確保や開発スピードを重視するために不要な回路がある事が分かっていても、そのまま流用する事が多い。これは、再設計による設計ミスの見逃しや、設計資産自体の仕様を理解する迄の時間、設計自体に費やす時間及び論理検証に費やす時間を考慮すると１つの有効な設計手段と言えるが、やはり不要な回路が残ってしまう。また、不要な回路がある事自体が分からない場合もある。
【０００５】
第３の課題として、他社が開発したＩＰマクロを購入して使用する場合、他社製ＩＰマクロゆえにコピーライトがかかって、ＲＴＬ上では編集出来ない。編集出来たとしても保証が無くなるために、不要な回路がある事が分かっていても、そのまま使用する事が多いため、不要な回路が残ってしまう。
【０００６】
この様に不要な回路が残ったまま、機能ブロック（流用設計部、ＩＰマクロ部含む）同士を繋ぎ合わせてＣＨＩＰを組み上げる場合、入力信号に０又は１を接続するか、適当な信号（例えば他方と同一な信号）と接続させるなどの処理を行い、出力信号の場合は、出力ｏｐｅｎ（未接続）にする事が多い。
【０００７】
ここで、ブロック間の境界に存在する冗長な論理素子の例を図２２に示す。図２２（Ａ）は、出力ｏｐｅｎ論理素子（出力先が未接続の論理素子）である。図２２（Ｂ）は、反転論理素子（以下、インバータとする）のペア（複数のインバータが直接に接続した回路）である。図２２（Ｃ）は、固定値インバータ（入力値として固定値が入力されたインバータ）である。図２２（Ｄ）は、等価な信号が入力された論理素子である。図２２（Ｅ）は、正転反転の関係にある信号が入力された論理素子である。図２２（Ｆ）は、固定値が入力された論理素子である。これらの回路や論理素子は、より少ない入力ピンの回路や論理素子に置換、又は削除可能であり、すなわち冗長な論理素子といえる。
また、冗長な回路や論理素子の削除に関する技術として特許文献１ないし４に示す技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−４２４４号公報
【特許文献２】特開２００６−２４００８号公報
【特許文献３】特開平７−２２５７８２号公報
【特許文献４】特開平７−１９２０２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
市販の論理合成ツールを大規模な集積回路全体で一度に処理するには、メモリや処理速度による能力の限界があり、機能ブロック毎に処理を行わなければならない。つまり、論理合成ツールを集積回路全体で使用することができないため、機能ブロック間の冗長論理素子部が残ったままとなってしまう。これらの冗長論理素子部は、集積回路の大規模化に伴い、機能ブロックが増える事で増加傾向にある。
【００１０】
上記特許文献１ないし４の技術においても、大規模な集積回路全体で一度に処理するには、メモリや処理速度による能力の限界があり、機能ブロック毎に処理を行わなければならない可能性がある。また、図２２に例示した全ての冗長論理素子の検索、削除、置き換え等を行うことができないため、回路の小規模化をする技術としては不十分であるという課題を有する。
【００１１】
そこで、本発明は上記課題を解決するためになされたものであり、機能ブロックごとに生成されたネットリストから機能ブロック間の冗長論理素子を検索して最小の論理素子に置き換える冗長論理素子削除方法等を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願に開示する冗長論理素子削除方法は、機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成ステップを含む。また、当該ピン情報生成ステップが生成したピン情報に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索ステップを含む。さらに、当該冗長検索ステップが検索した前記冗長な論理素子における前記ピン情報を、等価な最小の論理素子のピン情報に更新するピン情報更新ステップを含む。さらにまた、当該ピン情報更新ステップが更新したピン情報に基づいて、前記ネットリストを生成するネットリスト生成ステップを含む。
【００１３】
このように、本願に開示する冗長論理素子削除方法は、機能ブロックごとに生成された複数のネットリストを結合し、ピン情報を生成し、機能ブロック間の論理素子における冗長な論理素子を検索する。そして、等価な最小の論理素子のピン情報に更新し、当該更新したピン情報に基づいて、ネットリストを生成する。そのため、機能ブロック間の冗長な論理素子が最小の論理素子に置き換えられることで回路規模を縮小させることができるという効果を奏する。
【００１４】
また、冗長な論理素子を削除して回路規模を縮小させることで、開発期間の長期化、データサイズの巨大化、消費電力の増大、冗長な検証作業、冗長回路による故障未検出の発生、同時入力によるセル誤動作の発生の可能性等の問題を防止することができる。
【００１５】
さらに、機能ブロック間に存在する図２２のような冗長な論理素子を全て検索して、最小の論理素子に置き換えることができるという効果を奏する。
さらにまた、機能ブロックに分割された大規模な集積回路であっても回路全体に対して一括して処理を行うことができるため、作業効率を格段に向上させることができるという効果を奏する。
【００１６】
なお、冗長な論理素子に代わって置き換えられる最小な論理素子には、固定値も含むものとする。また、回路を論理素子で置き換えてもよいし、回路を回路で置き換えてもよい。さらに、論理素子を回路で置き換えてもよい。さらにまた、置き換える回路には、固定値も含むようにしてもよい。
【００１７】
これまで、本発明を方法として示したが、所謂当業者であれば明らかであるように本発明を装置、及び、プログラムとして捉えることもできる。これら前記の発明の概要は、本発明に必須となる特徴を列挙したものではなく、これら複数の特徴のサブコンビネーションも発明となり得る。
【００１８】
すなわち、本願に開示する冗長論理素子削除方法の構成要素または構成要素の任意の組合せを、方法、装置、回路、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
【図面の簡単な説明】
【００１９】
【図１】従来、及び本願における集積回路の実装処理の全体フローを示す図である。
【図２】第１の実施形態に係る冗長論理素子削除方法を行う場合の原理構成図である。
【図３】第１の実施形態に係る冗長論理素子削除方法を実行するコンピュータのハードウェア構成図である。
【図４】第１の実施形態に係る冗長論理素子削除装置の機能ブロック図である。
【図５】第１の実施形態に係る冗長論理素子削除方法の全体処理を示すフローチャートである。
【図６】第１の実施形態に係る冗長論理素子削除方法においてＰｉｎ情報テーブルを生成する処理を示すフローチャートである。
【図７】第１の実施形態に係る冗長論理素子削除方法においてＰｉｎ情報テーブルを生成する対象となる回路図の一例を示す図である。
【図８】第１の実施形態に係る冗長論理素子削除方法における連続する複数のインバータの検索、及び更新を行う処理を示すフローチャートである。
【図９】第１の実施形態に係る冗長論理素子削除方法におけるInverter  Pairの検索、及び更新処理の対象となる回路図の一例を示す図である。
【図１０】第１の実施形態に係る冗長論理素子削除方法における固定値インバータの検索、及び更新を行う処理を示すフローチャートである。
【図１１】第１の実施形態に係る冗長論理素子削除方法における固定値インバータの検索、及び更新処理の対象となる回路図の一例を示す図である。
【図１２】第１の実施形態に係る冗長論理素子削除方法における等価入力、反転入力、及び固定値入力論理素子の検索、及び更新を行う処理を示すフローチャートである。
【図１３】第１の実施形態に係る冗長論理素子削除方法における等価入力、反転入力、及び固定値入力論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。
【図１４】第１の実施形態に係る冗長論理素子削除方法における出力open論理素子の検索、及び更新を行う処理を示すフローチャートである。
【図１５】第１の実施形態に係る冗長論理素子削除方法における出力open論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。
【図１６】第１の実施形態に係る冗長論理素子削除方法におけるネットリスト生成を行う処理を示すフローチャートである。
【図１７】第１の実施形態に係る冗長論理素子削除方法におけるＰｉｎ情報テーブルの１行目の情報を反映させた回路図の一例を示す図である。
【図１８】実施例において冗長論理素子削除方法を実行する対象となる回路図を示す図である。
【図１９】その他の実施形態に係る冗長論理素子削除方法の全体処理を示すフローチャートである。
【図２０】その他の実施形態に係る冗長論理素子削除方法においてＰｉｎ情報テーブルを生成する処理を示すフローチャートである。
【図２１】その他の実施形態に係る冗長論理素子削除方法におけるネットリスト生成を行う処理を示すフローチャートである。
【図２２】ブロック間の境界に存在する冗長論理素子の例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態を説明する。本発明は多くの異なる形態で実施可能である。従って、本実施形態の記載内容のみで本発明を解釈すべきではない。また、本実施形態の全体を通して同じ要素には同じ符号を付けている。
【００２１】
さらに、所謂当業者であれば明らかな通り、本発明は装置、方法、及び、コンピュータを動作させるためのプログラムとして実施できる。また、本発明はハードウェア、ソフトウェア、または、ハードウェア及びソフトウェアの実施形態で実施可能である。プログラムは、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光記憶装置、または、磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。さらに、プログラムはネットワークを介した他のコンピュータに記録することができる。
【００２２】
（本発明の第１の実施形態）
本実施形態に係る冗長論理素子削除方法について図１ないし図１８を用いて説明する。
（１．処理概要）
図１は、従来、及び本願における集積回路の実装処理の全体フローを示す図である。従来は、まず「合成」のステップで、テキストレベルの記述をセルに落とし込む。「レイアウト」のステップで、論理合成されたものをデバイスに合うようマッピングをする。「シミュレーション」のステップでシミュレーションを行うことで実装処理を完了する。本実施形態においては、合成ステップとレイアウトステップとの間に冗長論理素子削除ステップが含まれており、合成ステップで得られたネットリスト（論理素子の接続状態を示すデータ）から所定の機能を実現するのに不要となる冗長論理素子を削除してネットリストを新規に生成する処理を行う。
【００２３】
図２は、本実施形態に係る冗長論理素子削除方法を行う場合の原理構成図である。入力されたネットリストから、テーブル作成プログラムにより各論理素子の入力ピン、出力ピンの接続状態を示すＰｉｎ情報テーブルが生成される。生成されたＰｉｎ情報テーブルから冗長論理素子検索プログラムにより冗長論理素子が検索され、テーブル更新プログラムによりＰｉｎ情報テーブルが更新される。更新されたＰｉｎ情報テーブルから論理素子更新プログラムにより冗長論理素子が削除されたネットリストが更新され、生成される。
【００２４】
（２．装置構成）
図３は、本実施形態に係る冗長論理素子削除方法を実行するコンピュータのハードウェア構成図の一例である。コンピュータ３０は、ＣＰＵ（Central  Processing  Unit）３０１、ＲＡＭ（Random  Access  Memory）３０２、ＲＯＭ（Read  Only  Memory）３０３、フラッシュメモリ（Flash  Memory）３０４、外部記憶装置であるＨＤ（Hard  Disk）３０５を備える。また、ＬＡＮ（Local  Area  Network）カード３０６、マウス３０７、キーボード３０８を備える。さらに、ビデオカード３０９、このビデオカード３０９と電気的に接続する表示装置であるディスプレイ３０９ａ、サウンドカード３１０、このサウンドカード３１０と電気的に接続する音出力装置であるスピーカ３１０ａを備える。さらにまた、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記憶媒体を読み書きするドライブ３１１を備える。
なお、上記ハードウェア構成はあくまで一例を示したものであり、構成要素の変更をすることができるのは当然である。
【００２５】
図４は、本実施形態に係る冗長論理素子削除装置の機能ブロック図である。冗長論理素子削除装置４００は、Ｐｉｎ情報生成部４１０と冗長論理素子検索部４２０とＰｉｎ情報更新部４３０とネットリスト生成部４４０とＰｉｎ情報記憶部４５０とファンクション情報記憶部４６０とを備える。
【００２６】
Ｐｉｎ情報生成部４１０は、ネットリスト４０１に基づいてＰｉｎ情報テーブルを生成し、Ｐｉｎ情報記憶部４５０に記憶する処理を行う。Ｐｉｎ情報テーブルは、入力ピン、及び出力ピンの接続状態を示すテーブルであり、対象となる対象ピンの対象インスタンス、対象セル、対象ピン、当該対象ピンを駆動する駆動インスタンス、対象ピンを駆動する駆動ピン、及び対象ピンと駆動ピンの間に存在するインバータの数が格納される。
【００２７】
冗長論理素子検索部４２０は、Ｐｉｎ情報記憶部４５０に記憶されたＰｉｎ情報テーブルに基づいて、複数のインバータが直列に接続されたＩｎｖｅｒｔｅｒ  Ｐａｉｒの有無、固定値が入力されるインバータ（固定値インバータ）の有無、出力先が未接続である出力ｏｐｅｎ論理素子の有無、及び等価な値、反転する値、又は固定値が入力される論理素子の有無を特定し機能ブロック間の冗長論理素子を検索する処理を行う。
【００２８】
Ｐｉｎ情報更新部４３０は、冗長論理素子検索部４２０がＩｎｖｅｒｔｅｒ  Ｐａｉｒを検索した場合は、インバータの数に応じてＰｉｎ情報テーブル内のインバータ数を０か１に更新する。また、冗長論理素子検索部４２０が固定値インバータを検索した場合は、インバータの数と入力する固定値に応じて、Ｐｉｎ情報テーブル内の入力値を「０」か「１」に更新すると共にインバータ数を０に更新する。さらに、冗長論理素子検索部４２０が出力ｏｐｅｎ論理素子を検索した場合は、Ｐｉｎ情報テーブル内の出力情報を持たない論理素子を示す行を削除する。さらにまた、冗長論理素子検索部４２０が等価入力、反転入力、及び固定値入力論理素子を検索した場合は、利用者により予め登録された入力のパターンに応じた最小単位の論理素子の出力パターンを示すテーブル（ファンクションテーブル）に基づき、Ｐｉｎ情報テーブル内の当該ファンクションテーブルに登録された入力パターンに合致する論理素子の行を削除し、当該削除した論理素子と等価な論理素子を示す行を追加する。（各処理の詳細については後述する。）
ネットリスト生成部４４０は、Ｐｉｎ情報更新部４３０が更新したＰｉｎ情報テーブルに基づいてネットリストを生成して新ネットリスト４０２を出力する処理を行う。
Ｐｉｎ情報記憶部４５０は、Ｐｉｎ情報生成部４１０が生成したＰｉｎ情報テーブル等を記憶する記憶部である。
ファンクション情報記憶部４６０は、利用者により作成されたファンクションテーブルを記憶する記憶部である。
【００２９】
（３．動作）
図５は、本実施形態に係る冗長回路削除方法の全体処理を示すフローチャートである。まず、図１の「合成」ステップで合成されたネットリストを読み込む（ステップＳ５０１）。読み込んだネットリストに基づいてＰｉｎ情報テーブルを生成する（ステップＳ５０２）。
【００３０】
ここで、Ｐｉｎ情報テーブルの生成処理について説明する。図６は、本実施形態に係る冗長論理素子削除方法においてＰｉｎ情報テーブルを生成する処理を示すフローチャート、図７は、Ｐｉｎ情報テーブルを生成する対象となる回路図の一例を示す図である。図６のフローチャートにおいて、出力ｐｏｒｔから再帰的に入力ｐｏｒｔに向かって検査を行う。そのため、出力ｏｐｅｎの論理素子は抽出されない。つまり、初期状態における出力ｏｐｅｎ論理素子は、Ｐｉｎ情報テーブルを作成する時点で削除することができる。
表１は、Ｐｉｎ情報テーブル、及びＰｉｎ情報テーブルを作成するための一時テーブル（処理対象リスト）である。
【００３１】
【表１】
2010176208.tif 000003
【００３２】
まず、上記表１に示すようにリストＡに、図７に示す回路図における全出力ｐｏｒｔ（ＯＵＴ１、ＯＵＴ２、及びＯＵＴ３）を書き込み、リストＢに全入力ｐｏｒｔ（ＩＮ１、及びＩＮ２）を書き込む（ステップＳ６０１）。リストＡは検査対象となる端子のリストであり、リストＢは検査済みの端子のリストである。この検査対象リストと検査済みリストを用いることで、検査処理の重複を防止することができる。
【００３３】
リストＡが空（検査対象となる端子がない）かどうかを判定し（ステップＳ６０２）、空でなければ、リストＡの一の要素（インスタンス）に着目し（ステップＳ６０３）、駆動端子のセルを調査する（ステップＳ６０４）。インバータであるかどうかを判定し（ステップＳ６０５）、インバータであれば、インバータ数を計上し（ステップＳ６０６）、ステップＳ６０４に戻って、次の駆動端子のセルを調査する。インバータでなければ、着目した一の要素、駆動端子、及びインバータ数をＰｉｎ情報テーブルに記載する（ステップＳ６０７）。駆動先のインスタンスがリストＢに存在するかどうかを判定し（ステップＳ６０８）、なければ駆動先のセルの出力ピンをリストＡに追加する（ステップＳ６０９）。着目したインスタンスをリストＡからリストＢに移動して（ステップＳ６１０）、ステップＳ６０２の判定処理に戻る。
【００３４】
ここで、ステップＳ６０２からステップＳ６１０の処理について、具体例を示して説明する。出力ｐｏｒｔから再帰的に入力ｐｏｒｔに向かって検査を行うため、まずリストＡのＯＵＴ１に着目する。図７を参照して、ＯＵＴ１の駆動インスタンスがインバータであるため、この数をカウントし、さらにその駆動先を検査する。検査した駆動先がインバータでは無く、block1におけるAND1ゲート(セル：SCANDX1)のＹ端子（以降、ブロック名／ゲート名／端子名と記述する：この場合block1/AND1/Yとなる）であるため、ＯＵＴ１、当該ＯＵＴ１の駆動先であるblock1/AND1のＹ端子、及びそれらの接続間のインバータ数をＰｉｎ情報テーブルに記載する。駆動先のblock1/AND1はリストＢに存在しないため、block1/AND1の入力Ｐｉｎ情報であるblock1/AND1/A、及びblock1/AND1/BをリストＡに追加し、リストＢにblock1/AND1を追加する。ＯＵＴ１は検査済みであるため、リストＡからリストＢに移動する。表２は、この処理が完了した場合のＰｉｎ情報テーブル、リストＡ、及びリストＢである。
【００３５】
【表２】
2010176208.tif 000004
【００３６】
図６に戻って、ステップＳ６０２でリストＡが空かどうかが判定され、空でなければ再びステップＳ６０３からステップＳ６１０の処理を、リストＡが空になるまで繰り返して行う。表２、及び図７の回路図に基づいて、リストＡが空になるまで上記処理を繰り返した結果を表３に示す。
【００３７】
【表３】
2010176208.tif 000005
【００３８】
ステップＳ６０２でリストＡが空であるため、後段の処理を行うためにテーブルをソートして（ステップＳ６１１）、処理を終了する。ここでは、TargetInst、TargetPin、DriveInst、DrivePinの順でソートする。ソートした結果が、本ステップの出力であるＰｉｎ情報テーブルとなる。本ステップにおける最終のＰｉｎ情報テーブルを表４に示す。
【００３９】
【表４】
2010176208.tif 000006
【００４０】
図５に戻って、ステップＳ５０２でＰｉｎ情報テーブルが生成されたら、ＦＬＡＧに０をセットする（ステップＳ５０３）。全ての冗長論理素子についてチェックが完了したかどうかを判定し（ステップＳ５０４）、全ての冗長論理素子についてチェックが完了していなければ、冗長論理素子のタイプを変更（又は設定）する（ステップＳ５０５）。
【００４１】
ここで、冗長論理素子のタイプとは、冗長論理素子検索部４２０が検索する冗長論理素子の種別である。上述したように、Ｉｎｖｅｒｔｅｒ  Ｐａｉｒ、固定値インバータ、出力ｏｐｅｎ論理素子、並びに等価入力、反転入力、及び固定値入力論理素子のいずれかのタイプが設定される。本実施形態においては、処理効率を高めるために
（１）Ｉｎｖｅｒｔｅｒ  Ｐａｉｒ
（２）固定値インバータ
（３）等価入力、反転入力、及び固定値入力論理素子
（４）出力ｏｐｅｎ論理素子
の順番で処理が行われる。
【００４２】
冗長論理素子のタイプが設定されると、冗長論理素子の検索が行われる（ステップＳ５０６）。冗長論理素子があるかどうかが判定され（ステップＳ５０７）、冗長論理素子がなければ、ステップＳ５０４の判定処理に戻る。冗長論理素子があれば、ＦＬＡＧに１をセットしてＰｉｎ情報テーブルを更新する（ステップＳ５０８）。
【００４３】
ここで、上記冗長論理素子のタイプごとに冗長論理素子の検索処理、及びＰｉｎ情報テーブルの更新処理について説明する。まず、（１）Ｉｎｖｅｒｔｅｒ  Ｐａｉｒの検索について説明する。インバータは、極性を反転させるものであり、２個連続で接続されている場合は、極性が正転となり無駄な論理素子となってしまう。つまり偶数個のインバータの直列接続は意味が無く（不要である）、奇数個の直列接続は１個のインバータと論理的に等価である。ここでは、回路内のインバータ接続をリセットする処理が行われる。図８は、本実施形態に係る冗長論理素子削除方法における連続する複数のインバータの検索、及び更新を行う処理を示すフローチャートである。
【００４４】
まず、Ｐｉｎ情報テーブルの任意の一行に着目し（ステップＳ８０１）、インバータの数をInv-Cntから抽出する（ステップＳ８０２）。抽出したインバータの数を２で割った余りで上書きする（ステップＳ８０３）。全ての行について処理が完了したかどうかを判定し（ステップＳ８０４）、全ての行について処理が完了していなければ、次の行について処理を行う。全ての行について処理が完了してれば（１）Ｉｎｖｅｒｔｅｒ  Ｐａｉｒの検索、及び更新処理を終了する。
【００４５】
ここで、図８の処理について、具体例を示して説明する。図９は、Ｉｎｖｅｒｔｅｒ  Ｐａｉｒの検索、及び更新処理の対象となる回路図の一例を示す図である。図９（ａ）が処理前の回路図であり、図９（ｂ）が処理後の回路図である。図９（ａ）の回路図について、Ｐｉｎ情報テーブルを生成すると表５が生成される。
【００４６】
【表５】
2010176208.tif 000007
【００４７】
図８のフローにしたがってInv-Cntの数を２で割って、その余りの数で上書きする。表５に示す太枠の部分（４行目から７行目）が更新される。更新されたテーブルが下記の表６となる。
【００４８】
【表６】
2010176208.tif 000008
【００４９】
表６の更新されたＰｉｎ情報テーブルを回路図に変換したものが図９（ｂ）に示す回路図である。つまり、図９（ａ）の回路と図９（ｂ）の回路は等価になっており、図９（ｂ）のほうが図９（ａ）に比べて冗長な論理素子が削除されてスマートになっていることがわかる。
【００５０】
次に、（２）固定値インバータの検索について説明する。固定値をインバータで反転させて使用する信号は、固定値の逆の極性の信号をそのまま使用場合と等価であり、インバータは必要ない。本処理ではそのような回路を修正する。図１０は、本実施形態に係る冗長論理素子削除方法における固定値インバータの検索、及び更新を行う処理を示すフローチャートである。
【００５１】
まず、Ｐｉｎ情報テーブルの１行に着目し（ステップＳ１００１）、着目した行のDrivePin列の値を抽出する（ステップＳ１００２）。DrivePin列の値が固定値（０又は１）であるかどうかを判定し（ステップＳ１００３）、固定値でなければステップＳ１００７に進む。DrivePin列の値が固定値であれば、着目した行のInv-Cnt列の値を抽出し（ステップＳ１００４）、Inv-Cnt列の値が１かどうかを判定する（ステップＳ１００５）。このとき、（１）Ｉｎｖｅｒｔｅｒ  Ｐａｉｒの検索、及び更新処理済みであるため、Inv-Cntには、「１」又は「０」のいずれかの値になっている。Inv-Cnt列の値が１でなければステップＳ１００７に進む。Inv-Cnt列の値が１であれば、Inv-Cnt列の値を０に上書きし、DrivePin列の値を「０」→「１」、又は「１」→「０」に置換する（ステップＳ１００６）。全ての行について検査したかどうかを判定し（ステップＳ１００７）、全ての行について検査していなければ、次の行について処理を行う。全ての行について処理が完了してれば（２）固定値インバータの検索、及び更新処理を終了する。
【００５２】
ここで、図１０の処理について、具体例を示して説明する。図１１は、固定値インバータの検索、及び更新処理の対象となる回路図の一例を示す図である。図１１（ａ）が処理前の回路図であり、図１１（ｂ）が処理後の回路図である。図１１（ａ）の回路図について、Ｐｉｎ情報テーブルを生成すると表７が生成される。
【００５３】
【表７】
2010176208.tif 000009
【００５４】
図１０のフローにしたがって、DrivePinが０又は１の固定値である３行目でInv-Cntが１となり、固定値インバータとなる。この部分のInv-Cntを０に上書きし、DrivePinを1'b1（「１」）に上書きし、Ｐｉｎ情報テーブルを更新する。更新されたテーブルが下記の表８となる。
【００５５】
【表８】
2010176208.tif 000010
【００５６】
表８の更新されたＰｉｎ情報テーブルを回路図に変換したものが図１１（ｂ）に示す回路図である。つまり、図１１（ａ）の回路と図１１（ｂ）の回路は等価になっており、図１１（ｂ）のほうが図１１（ａ）に比べて冗長な論理素子が削除されてスマートになっていることがわかる。
【００５７】
次に、（３）等価入力、反転入力、及び固定値入力論理素子の検索について説明する。等価入力、反転入力、及び固定値入力のセルは、等価の小さなセルに置換、又は削除して冗長論理素子を削除することができる。図１２は、本実施形態に係る冗長論理素子削除方法における等価入力、反転入力、及び固定値入力論理素子の検索、及び更新を行う処理を示すフローチャートである。
【００５８】
まず、Ｐｉｎ情報テーブルの１行目に着目し（ステップＳ１２０１）、TargetInst列が同じである最後の行まで進み、入力側（駆動先）の接続情報を得る（ステップＳ１２０２）。駆動先（DrivePin列）に重複、又は固定値入力があるかどうかを判定し（ステップＳ１２０３）、重複、又は固定値入力がなければステップＳ１２０６に進む。重複、又は固定値入力があれば着目したインスタンスの全行をファンクションテーブルに従って変更する（ステップＳ１２０４）。着目したインスタンスの出力側の行全てをファンクションテーブルに従って修正する（ステップＳ１２０５）。テーブルの末行かどうかを判定し（ステップＳ１２０６）、テーブルの末行でなければ、次の行に着目して（ステップＳ１２０７）、ステップＳ１２０２の処理に戻る。テーブルの末行であれば、（３）等価入力、反転入力、及び固定値入力論理素子の検索、及び更新処理を終了する。
【００５９】
ここで、図１２の処理について、具体例を示して説明する。本処理ではＰｉｎ情報テーブルの更新時にファンクションテーブルを参照する。これは、冗長な入力（等価、反転、固定値）の論理素子と等価な出力を入力パターンごとに表したものである。ファンクションテーブルの一例を表９、及び表１０に示す。
【００６０】
【表９】
2010176208.tif 000011
【００６１】
【表１０】
2010176208.tif 000012
【００６２】
ファンクションテーブルの内容について補足する。例えば、表９のSCNANDX1の行No.2において、SCNANDX1は入力Ａ、Ｂを持ち、入力Ａと入力Ｂが反転している場合、出力Ｙが1'b1（「１」）に固定される事を表している。また、例えば、表９のSCANDX1の行No.4において、SCANDX1は入力Ａ、Ｂを持ち、入力Ｂが１（=1'b1）である場合、出力Ｙは入力Ａと等価である事を表している。
【００６３】
さらに、例えば、表１０のSCADDERX1の行No.5において、SCADDERX1は入力Ａ、Ｂ、Ｃｉを持つ。入力Ｂが１（=1'b1）である場合、SCADDERX1の出力ＹはSCADDERX1の入力ＣｉとＡに入る信号を、SCEXORX1の入力Ａ、Ｂにそれぞれ入力した場合のSCEXORX1の出力Ｙを反転させたものと等価である。出力ＣｏはSCADDERX1の入力ＣｉとＡに入る信号をSCORX1の入力Ａ、Ｂにそれぞれ入力した場合のSCORX1の出力Ｙと等価である事を示している。
【００６４】
図１３は、等価入力、反転入力、及び固定値入力論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。図１３（ａ）が処理前の回路図であり、図１３（ｂ）が処理後の回路図である。図１３（ａ）の回路図について、Ｐｉｎ情報テーブルを生成すると表１１が生成される。
【００６５】
【表１１】
2010176208.tif 000013
【００６６】
図１２のフローチャートに従って１行目に着目する。この行と同じTragetInstの値を持つ行のデータを取り込んでいく。２行目までが同じ値が入っているので、ここまで（１行目、及び２行目）が着目するインスタンスとなる。着目インスタンスの入力側の接続を確認する。冗長論理素子は等価入力、反転入力、又は固定値入力であるので、DriveInst、及びDrivePinの列に、重複、又は固定値があれば冗長となる。AND3（１行目、及び２行目）には、この状態が存在しないため、冗長論理素子ではないと判断する。この時点でテーブルの末行ではないので、次の行に着目する。
【００６７】
同様に次の行から、同じインスタンスの行を取り込む。ここでは、block1/ADD1（SCADDERX1）（表１１の３行目〜５行目）のインスタンスが取り込まれる。block1/ADD1に着目し、DrivePinの列に固定値(1'b1=「１」)が含まれるため、冗長論理素子と判断する。ここで、表１０のファンクションテーブルから、着目したインスタンスのセルタイプを検索し、さらに該当する入力状態を検索し、表１０の行No.5が該当する事が分かる。表１０の行No.5から、冗長論理素子の出力Ｙは、Y:SCEXORX1(.A(Ci),.B(A))+inv（SCADDERX1の入力ＣｉとＡに入る信号を、SCEXORX1の入力Ａ、Ｂにそれぞれ入力した場合のSCEXORX1の出力Ｙを反転させたもの）、出力Ｃｏは、Y:SCORX1(.A(Ci),.B(A))（SCADDERX1の入力ＣｉとＡに入る信号をSCORX1の入力Ａ、Ｂにそれぞれ入力した場合のSCORX1の出力Ｙ）とあるので、block1/ADD1（表１１の３行目〜５行目）を、この２つのセルで構成された等価な論理素子に置き換える。
【００６８】
先ずはblock1/ADD1を２つのセルに置き換える。つまり、着目行を削除し、この２つのセルをＰｉｎ情報テーブルに追加する必要がある。SCEXORX1の入力Ａにblock1/ADD1のＣｉ入力の信号を、SCEXORX1の入力Ｂにblock1/ADD1のＡ入力の信号が接続された行を追加する。SCORX1の入力Ａにblock1/ADD1のＣｉ入力の信号を、SCORX1の入力Ｂにblock1/ADD1のＡ入力の信号が接続された行を追加する。そして、着目行を削除する。この状態を表１２に示す。黒い網掛けのセルは削除された事を示している。また、追加したセルにはNEW#ADD1#1とNEW#ADD1#2というインスタンス名をつけたとする。
【００６９】
【表１２】
2010176208.tif 000014
【００７０】
次にblock1/ADD1の出力Ｙ、Ｃｏを置き換える。block1/ADD1の出力Ｙはファンクションテーブルによると、SCEXORX1の出力Y+invとなっているため、これをＰｉｎ情報テーブルの１０行目に反映させる。Block1/ADD1のＹ端子の情報を、NEW#ADD1#1のＹ端子の情報に書き換え、「+inv」（インバータ）を反映させるために、Inv-Cntの値に1を加算する。同様に、block1/ADD1の出力Ｃｏは、NEW#ADD1#2のＹ端子の情報に書き換える。その結果、下記の表１３の様なテーブルとなり、冗長論理素子block/ADD1の削除が完了する。太枠がこの処理で変更をかけた部分となる。
【００７１】
【表１３】
2010176208.tif 000015
この時点でテーブルの末行ではないので、次の行に着目する。そして、末行まで上記処理を繰り返して行った結果を表１４に示す。
【００７２】
【表１４】
2010176208.tif 000016
【００７３】
上記処理において、冗長論理素子を削除した過程で新たな冗長が発生するが、冗長論理素子がなくなるまで本処理が繰り返して行われるため、再処理のときに削除することができる。表１４の更新されたＰｉｎ情報テーブルを回路図に変換したものが図１３（ｂ）に示す回路図である。つまり、図１３（ａ）の回路と図１３（ｂ）の回路は等価になっており、図１３（ｂ）のほうが図１３（ａ）に比べて等価な最小の論理素子に置き換えられているため、冗長な論理素子が削除されてスマートになっていることがわかる。
【００７４】
次に、（４）出力ｏｐｅｎ論理素子の検索について説明する。ここでは出力側の接続が無いために、出力へ影響のない論理素子を削除する。出力ｏｐｅｎに該当する論理素子は出力情報をもたないため、Ｐｉｎ情報テーブルのDriveInstに存在しない。よって、TragetInstに存在し、DrivePinに存在しない特徴がある。この特徴を利用して、出力ｏｐｅｎ論理素子の検索、及び更新を行う。なお、Ｐｉｎ情報テーブル作成時には、Ｐｉｎ情報テーブル内に出力ｏｐｅｎ論理素子が含まれることはないが、他の冗長論理素子削除の過程で新たに出力ｏｐｅｎ論理素子が発生する場合があるため、これを削除するために本処理（（４）出力ｏｐｅｎ論理素子の検索処理）を行う。
【００７５】
図１４は、本実施形態に係る冗長論理素子削除方法における出力Ｏｐｅｎ論理素子の検索、及び更新を行う処理を示すフローチャートである。まず、Ｐｉｎ情報テーブルのDriveInst列の情報をリスト化する（ステップＳ１４０１）。ここで作成されるリストをリストＣとする。Ｐｉｎ情報テーブルの１行目に着目し（ステップＳ１４０２）、着目した行のTargetInst列の値を抽出する（ステップＳ１４０３）。抽出したTargetInstがリストＣに存在するかどうかを判定し（ステップＳ１４０４）、抽出したTargetInstがリストＣに存在しない場合は、着目している行の以下の行で、TargetInstが同値である行を削除する（ステップＳ１４０５）。リストＣを更新し（ステップＳ１４０６）、再度ステップＳ１４０２に戻って、同様の処理を繰り返して行う。
【００７６】
ステップＳ１４０４で、抽出したTargetInstがリストＣに存在する場合は、全ての行を検査したかどうかを判定する（ステップＳ１４０７）。全ての行を検索していない場合は、Ｐｉｎ情報テーブル内の次の行に着目し（ステップＳ１４０８）、ステップＳ１４０３の処理に戻る。全ての行を検査した場合は、（４）出力ｏｐｅｎ論理素子の検索、及び更新処理を終了する。
【００７７】
ここで、図１４の処理について、具体例を示して説明する。図１５は、出力ｏｐｅｎ論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。図１５（ａ）が処理前の回路図であり、図１５（ｂ）が処理後の回路図である。図１５（ａ）の回路図について、Ｐｉｎ情報テーブルを生成すると表１５が生成される。
【００７８】
【表１５】
2010176208.tif 000017
図１４のフローにしたがって、まず、DriveInstの値をリストＣに格納する。初期状態でのリストＣを表１６に示す。
【００７９】
【表１６】
2010176208.tif 000018
【００８０】
Ｐｉｎ情報テーブルの１行目から、TragetInstの値がリストＣに含まれるかどうかを調査していく。含まれる場合は次の行を検査する。表１５の１１行目のblock2/AND6がリストＣに含まれてないので、この行を削除する。TargetInstがblock2/AND6で同値の１２行目も削除対象となり、出力ｏｐｅｎ論理素子であるblock2/AND6が削除される。全ての行に出力ｏｐｅｎ論理素子が存在しなくなるまで同様の処理を繰り返して行う。その結果を表１７に示す。
【００８１】
【表１７】
2010176208.tif 000019
【００８２】
表１７の更新されたＰｉｎ情報テーブルを回路図に変換したものが図１５（ｂ）に示す回路図である。つまり、図１５（ａ）の回路と図１５（ｂ）の回路は等価になっており、図１５（ｂ）のほうが図１５（ａ）に比べて冗長な回路が削除されてスマートになっていることがわかる。
以上が、冗長論理素子のタイプごとの冗長論理素子の検索処理、及びＰｉｎ情報テーブルの更新処理についての説明である。
【００８３】
図５に戻って、ステップＳ５０４で全冗長論理素子がチェックされたかどうかが再度判定され、チェックされていない場合は、再度冗長論理素子の検索処理、及びＰｉｎ情報テーブルの更新処理が行われる。全冗長論理素子がチェックされた場合は、ＦＬＡＧが０かどうかが判定される（ステップＳ５０９）。ＦＬＡＧが０ではない場合は、ステップＳ５０３に戻って、ＦＬＡＧが０にクリアされて、再度同様の処理が行われる。ＦＬＡＧが０の場合は、更新されたＰｉｎ情報テーブルに基づいてネットリストの生成を行う（ステップＳ５１０）。
【００８４】
なお、ＦＬＡＧの判定は、４つの種別の冗長論理素子を一度も検索しなかった場合にＦＬＡＧ＝０をもって、Ｐｉｎ情報テーブル内の冗長論理素子の検索処理、及びＰｉｎ情報テーブルの更新処理を終了する。つまり、任意の冗長論理素子を削除した後に、別のカテゴリーの冗長論理素子が発生する可能性があるため、全ての冗長論理素子を一度も検索しない事が、冗長論理素子削除の終了の必須条件とするためである。
【００８５】
ここで、ネットリストの生成について説明する。上記処理によりＰｉｎ情報テーブルで冗長論理素子が削除されると、その更新されたＰｉｎ情報テーブルに基づいてネットリストを生成する。図１６は、本実施形態に係る冗長論理素子削除方法におけるネットリスト生成を行う処理を示すフローチャートである。まず、Ｐｉｎ情報テーブルの１行目に着目し（ステップＳ１６０１）、TargetInstが回路内にあるかどうかを判定する（ステップＳ１６０２）。TargetInstが回路内にない場合は、TargetInstを生成しTargetCellでセルを決定する（ステップＳ１６０３）。TargetPinを生成し（ステップＳ１６０４）、DriveInstが回路内にあるかどうかを判定する（ステップＳ１６０５）。DriveInstが回路内にない場合は、DriveInstを生成する（ステップＳ１６０６）。DrivePinが回路内にあるかどうかを判定し（ステップＳ１６０７）、DrivePinが回路内にない場合は、DrivePinを生成する（ステップＳ１６０８）。TargetPinとDrivePinとを接続する（ステップＳ１６０９）。Inv-Cntが１かどうかを判定し（ステップＳ１６１０）、１である場合には、接続上にインバータを生成する（ステップＳ１６１１）。末行かどうかを判定し（ステップＳ１６１２）、末行でなければ次の行に着目し（ステップＳ１６１３）、再度ステップＳ１６０２から処理を繰り返して行う。末行であれば処理を終了する。
ここで、図１６の処理について、具体例を示して説明する。下記の表１８に示すＰｉｎ情報テーブルに基づいて、ネットリストを生成する。
【００８６】
【表１８】
2010176208.tif 000020
【００８７】
図１６のフローチャートに従って、１行目のAND5に着目する。表１８の１行目の情報を反映させた回路図を図１７（ａ）に示す。TragetInst(AND5)が回路中に存在しない（初期状態であるためネットリストは空白になっている）ため、AND5を生成する。セルタイプはTargetCell(SCANDX1)となる。TargetPin(A)を生成する。次に、DriveInst(block2/AND2)が回路中に存在しないため、DriveInst(block2/AND2)を生成し、DrivePin(Y)も存在しないため併せて生成する。その後AND5/Aとblock2/AND2/Yを接続する。Inv-Cntは0であるため、インバータは挿入しない。
【００８８】
末行ではないため、次の２行目に着目する。移行すべての行について処理を行った結果の回路図を図１７（ｂ）に示す。表１８のＰｉｎ情報テーブルから図１７（ｂ）の回路図が生成される。
図５に戻って、ステップＳ５１０でネットリストが生成されると、新たなネットリストが出力され（ステップＳ５１１）、処理を終了する。
【００８９】
このように、本実施形態に係る冗長論理素子削除方法は、機能ブロックごとに生成された複数のネットリストを結合し、ピン情報を生成し、機能ブロック間の論理素子における冗長論理素子を検索する。そして、等価な最小の論理素子のピン情報に更新し、当該更新したピン情報に基づいて、ネットリストを生成する。そのため、機能ブロック間の冗長論理素子を削除して最小論理素子に置き換えることで回路規模を縮小させることができるという効果を奏する。
【００９０】
また、冗長論理素子を削除して回路規模を縮小させることで、開発期間の長期化、データサイズの巨大化、消費電力の増大、冗長な検証作業、冗長回路による故障未検出の発生、同時入力によるセル誤動作の発生の可能性等の問題を防止することができる。
さらに、機能ブロック間に存在する冗長論理素子を検索して、最小論理素子に置き換えることができるという効果を奏する。
【００９１】
さらにまた、機能ブロックに分割された大規模な集積回路であっても回路全体に対して一括して処理を行うことができるため、作業効率を格段に向上させることができるという効果を奏する。
【００９２】
さらにまた、反転論理素子の数に基づいて冗長なインバータを容易に削除することができるという効果を奏する。
さらにまた、入力値、及び反転論理素子の数に基づいて、冗長な固定値のインバータを容易に削除することができるという効果を奏する。
【００９３】
さらにまた、入力端子のインスタンス、及び出力端子のインスタンスに基づいて、冗長な出力ｏｐｅｎ論理素子（出力が未接続な論理素子）を容易に削除することができるという効果を奏する。
【００９４】
さらにまた、入力値、及び予め登録された出力パターンに基づいて、入力値が等価な論理素子、入力値に固定値を含む論理素子、及び入力値に反転する値を含む冗長な論理素子を容易に削除することができるという効果を奏する。
【００９５】
さらにまた、（１）Ｉｎｖｅｒｔｅｒ  Ｐａｉｒ（２）固定値インバータ（３）等価入力、反転入力、及び固定値入力論理素子（４）出力ｏｐｅｎ論理素子の順に冗長論理素子を検索することで無駄な処理を省略して処理効率を最大限に高めることができるという効果を奏する。
【実施例】
【００９６】
本実施形態に係る冗長論理素子削除方法を実行する流れを説明する。図１８は、実施例において冗長論理素子削除方法を実行する対象となる回路図を示す図である。図１８（ａ）に示す回路図について、Ｐｉｎ情報テーブルの生成、冗長論理素子の検索、Ｐｉｎ情報テーブルの更新、ネットリストの生成を行う。
まず、図５のステップＳ５０２を実行する。ステップＳ５０２を実行した結果、下記の表１９に示すＰｉｎ情報テーブルが生成される。
【００９７】
【表１９】
2010176208.tif 000021
【００９８】
ステップＳ５０２を行う。冗長削除(テーブル更新済みの判断用の)ＦＬＡＧを０にセットしておく。まず１周目の冗長検索、テーブル更新プログラムが開始される。
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、Inverter  Pair、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長論理素子のチェックが未実施であるためステップＳ５０５に進む。
【００９９】
ステップＳ５０５を行う。検査する冗長のタイプをInverter  Pairにする。ステップＳ５０６〜ステップＳ５０８を行う。Inverter  Pairの冗長検索、テーブル更新を行う。表１９のＰｉｎ情報テーブル内に冗長論理素子が存在するため、Ｐｉｎ情報テーブルが下記の表２０に更新される。
【０１００】
【表２０】
2010176208.tif 000022
【０１０１】
冗長論理素子が存在したので、ＦＬＡＧに１がセットされる。ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
【０１０２】
ステップＳ５０５を行う。検査する冗長のタイプを固定値インバータにする。ステップＳ５０６〜ステップＳ５０８を行う。固定値インバータの冗長検索、テーブル更新を行う。表２０のＰｉｎ情報テーブル内に冗長論理素子が存在するため、Ｐｉｎ情報テーブルが下記の表２１に更新される。
【０１０３】
【表２１】
2010176208.tif 000023
【０１０４】
冗長論理素子が存在したので、ＦＬＡＧに１がセットされる。ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
【０１０５】
ステップＳ５０５を行う。検査する冗長のタイプを(等価、反転、固定値入力論理素子)にする。ステップＳ５０６〜ステップＳ５０８を行う。(等価、反転、固定値入力論理素子)の冗長検索、テーブル更新を行う。表２１のＰｉｎ情報テーブル内に冗長論理素子が存在するため、Ｐｉｎ情報テーブルが下記の表２２に更新される。
【０１０６】
【表２２】
2010176208.tif 000024
【０１０７】
冗長論理素子が存在したので、ＦＬＡＧに１がセットされる。ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
【０１０８】
ステップＳ５０５を行う。検査する冗長のタイプを出力Open論理素子にする。ステップＳ５０６〜ステップＳ５０８を行う。出力Open論理素子の冗長検索、テーブル更新を行う。表２２のＰｉｎ情報テーブル内に冗長論理素子が存在するため、Ｐｉｎ情報テーブルが下記の表２３に更新される。
【０１０９】
【表２３】
2010176208.tif 000025
【０１１０】
冗長論理素子が存在したので、ＦＬＡＧに１がセットされる。ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、全ての冗長に対してチェックしたのでステップＳ５０９に進む。
【０１１１】
ステップＳ５０９を行う。ＦＬＡＧ＝０を満たさないためステップＳ５０３に進む。ステップＳ５０３を行う。冗長削除(テーブル更新済みの判断用の)ＦＬＡＧを０にセットしておく。２周目の冗長検索、テーブル更新プログラムが開始される。
【０１１２】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、Inverter  Pair、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長論理素子のチェックが未実施であるためステップＳ５０５に進む。
【０１１３】
ステップＳ５０５を行う。検査する冗長のタイプをInverter  Pairにする。ステップＳ５０６〜ステップＳ５０８を行う。Inverter  Pairの冗長検索、テーブル更新を行う。表２３のＰｉｎ情報テーブル内に冗長論理素子が存在するため、Ｐｉｎ情報テーブルが下記の表２０に更新される。
【０１１４】
【表２４】
2010176208.tif 000026
【０１１５】
冗長論理素子が存在したので、ＦＬＡＧに１がセットされる。ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
【０１１６】
ステップＳ５０５を行う。検査する冗長のタイプを固定値インバータにする。ステップＳ５０６〜ステップＳ５０８を行う。固定値インバータの冗長検索、テーブル更新を行う。表２４のＰｉｎ情報テーブル内に冗長論理素子が存在しないため、Ｐｉｎ情報テーブルは更新されない。
【０１１７】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
【０１１８】
ステップＳ５０５を行う。検査する冗長のタイプを(等価、反転、固定値入力論理素子)にする。ステップＳ５０６〜ステップＳ５０８を行う。(等価、反転、固定値入力論理素子)の冗長検索、テーブル更新を行う。表２４のＰｉｎ情報テーブル内に冗長論理素子が存在しないため、Ｐｉｎ情報テーブルは更新されない。
【０１１９】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
ステップＳ５０５を行う。検査する冗長のタイプを出力Open論理素子にする。ステップＳ５０６〜ステップＳ５０８を行う。出力Open論理素子の冗長検索、テーブル更新を行う。表２４のＰｉｎ情報テーブル内に冗長論理素子が存在しないため、Ｐｉｎ情報テーブルは更新されない。
【０１２０】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、全ての冗長に対してチェックしたのでステップＳ５０９に進む。
ステップＳ５０９を行う。ＦＬＡＧ＝０を満たさないためステップＳ５０３に進む。ステップＳ５０３を行う。冗長削除(テーブル更新済みの判断用の)ＦＬＡＧを０にセットしておく。３周目の冗長検索、テーブル更新プログラムが開始される。
【０１２１】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、Inverter  Pair、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長論理素子のチェックが未実施であるためステップＳ５０５に進む。
【０１２２】
ステップＳ５０５を行う。検査する冗長のタイプをInverter  Pairにする。ステップＳ５０６〜ステップＳ５０８を行う。Inverter  Pairの冗長検索、テーブル更新を行う。表２４のＰｉｎ情報テーブル内に冗長論理素子が存在しないため、Ｐｉｎ情報テーブルは更新されない。
【０１２３】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
【０１２４】
ステップＳ５０５を行う。検査する冗長のタイプを固定値インバータにする。ステップＳ５０６〜ステップＳ５０８を行う。固定値インバータの冗長検索、テーブル更新を行う。表２４のＰｉｎ情報テーブル内に冗長論理素子が存在しないため、Ｐｉｎ情報テーブルは更新されない。
【０１２５】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
【０１２６】
ステップＳ５０５を行う。検査する冗長のタイプを(等価、反転、固定値入力論理素子)にする。ステップＳ５０６〜ステップＳ５０８を行う。(等価、反転、固定値入力論理素子)の冗長検索、テーブル更新を行う。表２４のＰｉｎ情報テーブル内に冗長論理素子が存在しないため、Ｐｉｎ情報テーブルは更新されない。
【０１２７】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、出力Open論理素子の冗長のチェックが未実施であるためにステップＳ５０５に進む。
ステップＳ５０５を行う。検査する冗長のタイプを出力Open論理素子にする。ステップＳ５０６〜ステップＳ５０８を行う。出力Open論理素子の冗長検索、テーブル更新を行う。表２４のＰｉｎ情報テーブル内に冗長論理素子が存在しないため、Ｐｉｎ情報テーブルは更新されない。
【０１２８】
ステップＳ５０３を行う。全ての冗長をチェックしたかどうかの分岐で、全ての冗長に対してチェックしたのでステップＳ５０９に進む。
ステップＳ５０９を行う。ＦＬＡＧ＝０を満たすためＰｉｎ情報テーブル内には冗長論理素子が存在しない状態になったと判断できる。つまり、２周目の処理で全ての冗長論理素子が削除され、３周目の処理で冗長論理素子が存在しないことが確認できたことになる。
【０１２９】
ステップＳ５１０を行う。表２４に示すＰｉｎ情報テーブルからネットリストを生成する。生成されたネットリストは、図１８（ｂ）になり、冗長論理素子が削除され回路規模が縮小していることがわかる。
【０１３０】
（その他の実施形態）
本実施形態に係る冗長論理素子削除方法は、前記第１の実施形態に係る冗長論理素子削除方法を拡張させたものであり、入力ネットリストを冗長論理素子削除後のＰｉｎ情報テーブルに従って加工し、処理前後のネットリストで相関が取れるようにしたものである。また、処理前後のネットリストで差異があまりない場合には、新たにネットリストを生成せずに、入力ネットリストを加工して処理効率を高める。本実施形態に係る冗長論理素子削除方法について、図１９ないし図２１を用いて説明する。
【０１３１】
図１９は、本実施形態に係る冗長論理素子削除方法の全体処理を示すフローチャートである。第１の実施形態と異なるのは、ステップＳ５１０でネットリストを生成する際に、ステップＳ５０１で入力されたネットリストを参照する点である。
【０１３２】
図２０は、本実施形態に係る冗長論理素子削除方法においてＰｉｎ情報テーブルを生成する処理を示すフローチャートである。まず、回路内の入力ピン、又は出力ポートに着目し（ステップＳ２００１）、Ｐｉｎ情報テーブルに記載する（ステップＳ２００２）。駆動先のセルを調査し（ステップＳ２００３）、インバータであるかどうかを判定する（ステップＳ２００４）。インバータである場合は、インバータ数を計上する（ステップＳ２００５）。駆動ピン、インバータ数をＰｉｎ情報テーブルに記載する（ステップＳ２００６）。全てのピン、及びポートをテーブル化したかどうかを判定し（ステップＳ２００７）、全てのピン、及びポートをテーブル化していなければ、ステップＳ２００１に戻って再度処理を繰り返す。全てのピン、及びポートをテーブル化したら処理を終了する。
【０１３３】
図２０の処理においては、回路内のすべての接続情報をテーブルに書き出すことになる。前記第１の実施形態における図５の処理の場合は、出力に影響のない論理素子を削除した状態のテーブルが作成される。例えば、図７におけるAND4(SCANDX1)については、表３に作成されていない。これらの論理素子について、本実施形態においては、入力ネットリストから該当セル、及び接続を削除しないようにする。また、Ｐｉｎ情報テーブルを以下のように拡張する。
（１）Delete列を追加する。１が記入された場合、削除された事と同じ意味とする。
（２）Insert列を追加する。１が挿入された場合、冗長論理素子の置き換えで新規に生成された事と同じ意味とする。
（３）Modify列を追加する。１が記入された場合、入力ネットリストと不一致である事と同じ意味とする。
【０１３４】
冗長論理素子を削除する過程で削除対象となる行は、実際に消去せずにDelete列に１を入れ、冗長論理素子を削除する過程で修正した行は、Modify列に１を入れ、新規に発生した行のInsert列に１を入れる。
ネットリストを生成する処理は、入力ネットリストと上記の規則に従って生成されたＰｉｎ情報テーブルとに基づいて、図２１のフローチャートに従って行われる。
【０１３５】
図２１において、入力ネットリスト、及びＰｉｎ情報テーブルを入力し、入力された入力ネットリスト、及びＰｉｎ情報テーブルに基づいてDelete列が１の行のTargetInstのインスタンスを削除する（ステップＳ２１０１）。Insert列が１の行のTargetInstのインスタンスを生成する（ステップＳ２１０２）。Insert列が１の行の接続を構築する（ステップＳ２１０３）。Modify列が１の行の接続を構築する（ステップＳ２１０４）。新ネットリストを出力する（ステップＳ２１０５）。
【０１３６】
以上の処理を行う事で、一部の変更で冗長論理素子を削除した回路を得る事ができ、処理を効率化することができると共に、入力ネットリストの階層情報を残してデバッグ作業や論理ＳＩＭにおいて支障が出ないようにすることができる。
【０１３７】
なお、図１９において、ステップＳ５１０の前に、入力ネットリストのＰｉｎ情報テーブルと更新後のＰｉｎ情報テーブルとを比較して、更新がある箇所のみに基づいてネットリストを生成するようにしてもよい。そうすることで、処理を効率化することができる。
【０１３８】
また、図１９において、ステップＳ５１０の後に、入力ネットリストのＰｉｎ情報テーブルと更新後のＰｉｎ情報テーブルとを比較する。そして、更新箇所数が所定の閾値以下であれば、入力ネットリストに基づいて更新箇所のみを変更して新ネットリストを生成する。更新箇所数が所定の閾値以上あれば、入力ネットリストを参照せず、第１の実施形態の場合のように新規に新ネットリストを生成するようにしてもよい。つまり、大量の情報に対して一部のみが更新されている場合には、新規にネットリストを作成するよりも入力ネットリストを流用したほうが処理効率を高めることができる。一方、多くの情報が更新されている場合には、入力ネットリストを流用するよりも新規にネットリストを作成するほうが処理効率を高めることができる。
【０１３９】
以上の前記各実施形態により本発明を説明したが、本発明の技術的範囲は実施形態に記載の範囲には限定されず、これら各実施形態に多様な変更又は改良を加えることが可能である。そして、かような変更又は改良を加えた実施の形態も本発明の技術的範囲に含まれる。このことは、特許請求の範囲及び課題を解決する手段からも明らかなことである。
【０１４０】
前記各実施形態に関して次の付記を示す。
（付記１）機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成ステップと、当該ピン情報生成ステップが生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索ステップと、当該冗長検索ステップが検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新ステップと、当該ピン情報更新ステップが更新したピン情報に基づいて、当該ピン情報を回路情報に変換して冗長な論理素子を削除したネットリストを生成するネットリスト生成ステップとを含む冗長論理素子削除方法。
【０１４１】
（付記２）付記１に記載の冗長論理素子削除方法において、前記ピン情報が、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数情報を有し、前記ピン情報更新ステップが、前記特定された論理素子における前記反転論理素子の個数が偶数の場合に前記反転論理素子の個数情報を０に更新し、前記反転論理素子の個数が奇数の場合に前記反転論理素子の個数情報を１に更新する冗長論理素子削除方法。
【０１４２】
（付記３）付記１又は２に記載の冗長論理素子削除方法において、任意の一のピン情報について入力される値が固定値であり、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数が奇数である場合に、前記冗長検索ステップが冗長な論理素子として検索し、前記ピン情報更新ステップが、前記任意の一のピン情報について前記入力される固定値の極性を反転し、前記反転論理素子の個数情報を０に更新する冗長論理素子削除方法。
【０１４３】
（付記４）付記１ないし３のいずれかに記載の冗長論理素子削除方法において、前記ピン情報における全ての入力端子のインスタンスと全ての出力端子のインスタンスとを比較し、入力端子のインスタンスにのみ存在するインスタンスが抽出された場合に、前記冗長検索ステップが冗長な論理素子として検索し、前記ピン情報更新ステップが、前記抽出されたインスタンスのピン情報を削除する冗長論理素子削除方法。
【０１４４】
（付記５）付記１ないし４のいずれかに記載の冗長論理素子削除方法において前記ピン情報に基づいて、入力値に等価な値を含む論理素子、入力値に固定値を含む論理素子、又は入力値に反転する値を含む論理素子が存在する場合に、前記冗長検索ステップが冗長な論理素子として検索し、前記ピン情報更新ステップが、予め登録された前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す置換情報に基づいて、当該冗長な論理素子のピン情報を等価な最小の論理素子のピン情報に置き換えて更新する冗長論理素子削除方法。
【０１４５】
（付記６）付記１ないし５のいずれかに記載の冗長論理素子削除方法において、前記ピン情報生成ステップで生成されるピン情報が、全入力端子におけるインスタンス、セルタイプ及びピンの情報、並びに当該入力端子を駆動する出力端子におけるインスタンス、及びピンの情報を含む冗長論理素子削除方法。
【０１４６】
（付記７）付記１ないし６のいずれかに記載の冗長論理素子削除方法において、前記冗長検索ステップ、及びピン情報更新ステップの処理が再帰的に実行され、前記冗長検索ステップで前記冗長論理素子を検索ができなくなった場合に、前記再帰的な処理を終了し、ネットリスト生成ステップを実行する冗長論理素子削除方法。
【０１４７】
（付記８）付記１ないし７のいずれかに記載の冗長論理素子削除方法において、前記ピン情報生成ステップが、出力ポートから入力ポート側にトレースしてピン情報を生成する冗長論理素子削除方法。
【０１４８】
（付記９）付記１ないし８のいずれかに記載の冗長論理素子削除方法において、前記ピン情報生成ステップが、トレースの対象となる端子に関する情報が記載されたトレース対象リスト、及び既にトレース処理がされた端子に関する情報が記載されたトレース済みリストに基づいてピン情報を生成する冗長論理素子削除方法。
【０１４９】
（付記１０）付記１ないし９のいずれかに記載の冗長論理素子削除方法において、前記予め登録された置換情報に、冗長入力のパターン、及び当該冗長入力パターンに対応する非冗長論理素子の出力パターンが含まれる冗長論理素子削除方法。
【０１５０】
（付記１１）付記１ないし１０のいずれかに記載の冗長論理素子削除方法において、前記ネットリスト生成ステップが、前記結合された当初のネットリスト、及び前記ピン情報更新ステップにて更新されたピン情報に基づいて、前記当初のネットリストの変更箇所のみを更新する冗長論理素子削除方法。
【０１５１】
（付記１２）付記１１に記載の冗長論理素子削除方法において、前記ピン情報更新ステップが、前記ピン情報の行の追加を行った場合に、当該行が追加された行であることを示す情報を含み、前記ピン情報の行の修正を行った場合に、当該行が修正された行であることを示す情報を含み、前記ピン情報の行の削除を行った場合に、当該行を残し、当該行が削除された行であることを示す情報を含むように、前記ピン情報を更新する冗長論理素子削除方法。
【０１５２】
（付記１３）機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段と、当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段と、当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段と、当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段とを備える冗長論理素子削除装置。
【０１５３】
（付記１４）機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段、当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段、当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び／又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段、当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段としてコンピュータを機能させるための冗長論理素子削除プログラム。
【符号の説明】
【０１５４】
３０  コンピュータ
３０１  ＣＰＵ
３０２  ＲＡＭ
３０３  ＲＯＭ
３０４  フラッシュメモリ
３０５  ＨＤ
３０６  ＬＡＮカード
３０７  マウス
３０８  キーボード
３０９  ビデオカード
３０９ａ  ディスプレイ
３１０  サウンドカード
３１０ａ  スピーカ
３１１  ドライブ
４００  冗長論理素子削除装置
４０１  ネットリスト
４０２  新ネットリスト
４１０  Ｐｉｎ情報生成部
４２０  冗長論理素子検索部
４３０  Ｐｉｎ情報更新部
４４０  ネットリスト更新部
４５０  Ｐｉｎ情報記憶部
４６０  ファンクション情報記憶部
【図１】
2010176208.tif 000027
【図３】
2010176208.tif 000028
【図４】
2010176208.tif 000029
【図５】
2010176208.tif 000030
【図６】
2010176208.tif 000031
【図７】
2010176208.tif 000032
【図８】
2010176208.tif 000033
【図９】
2010176208.tif 000034
【図１０】
2010176208.tif 000035
【図１１】
2010176208.tif 000036
【図１２】
2010176208.tif 000037
【図１３】
2010176208.tif 000038
【図１４】
2010176208.tif 000039
【図１５】
2010176208.tif 000040
【図１６】
2010176208.tif 000041
【図１７】
2010176208.tif 000042
【図１８】
2010176208.tif 000043
【図１９】
2010176208.tif 000044
【図２０】
2010176208.tif 000045
【図２１】
2010176208.tif 000046
【図２２】
2010176208.tif 000047
【図２】
2010176208.tif 000048