JP2010176208A - 冗長論理素子削除方法、その装置、及びプログラム - Google Patents

冗長論理素子削除方法、その装置、及びプログラム Download PDF

Info

Publication number
JP2010176208A
JP2010176208A JP2009015756A JP2009015756A JP2010176208A JP 2010176208 A JP2010176208 A JP 2010176208A JP 2009015756 A JP2009015756 A JP 2009015756A JP 2009015756 A JP2009015756 A JP 2009015756A JP 2010176208 A JP2010176208 A JP 2010176208A
Authority
JP
Japan
Prior art keywords
redundant
pin information
logic element
input
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009015756A
Other languages
English (en)
Inventor
Koichi Shirakawa
康一 白川
Noritoshi Yamakawa
徳敏 山川
Koichi Tanda
浩一 反田
Haruhiko Horizoe
春彦 堀添
Masanori Egashira
正紀 江頭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009015756A priority Critical patent/JP2010176208A/ja
Publication of JP2010176208A publication Critical patent/JP2010176208A/ja
Withdrawn legal-status Critical Current

Links

Abstract

【課題】機能ブロックごとに生成されたネットリストから機能ブロック間の冗長論理素子を検索して最小の論理素子に置き換える冗長論理素子削除方法等を提供する。
【解決手段】機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける各論理素子の入力ピン、及び出力ピンの接続状態を示すピン情報を生成し、当該生成されたピン情報に基づいて、前記機能ブロック間の論理素子における冗長論理素子を検索し、当該検索された前記冗長論理素子におけるピン情報を、等価な最小の論理素子のピン情報に更新し、当該更新されたピン情報に基づいて、前記ネットリストを生成する。
【選択図】図2

Description

本発明は、ネットリストから冗長な論理素子を削除する冗長論理素子削除方法に関し、特に複数の機能ブロックに分割されたネットリストにおける冗長論理素子を削除する冗長論理素子削除方法等に関する。
製品の高機能化に伴い、集積回路が大規模化し、開発期間が増大している。この対策として、複数の機能ブロックに分割し、機能ブロック毎に複数人で同時設計する方法、過去の設計資産の流用、他社が開発したIPマクロを購入する方法等の施策が行われている。また、これらの機能ブロックを繋ぎ合わせて、1つの集積回路の設計を行う手法が一般的となっている。
しかしながら、第1の課題として、ある機能ブロックを集積回路内で異なる用途に複数回使用する場合、一方では機能ブロック内のある回路が必要だが、他方ではその回路が不要と言う場合がある。その場合、同じ機能ブロックを使用しているが故に、不要な回路を削除する事は出来ず、冗長な回路が存在してしまう。
第2の課題として、過去の設計資産を流用する場合、品質確保や開発スピードを重視するために不要な回路がある事が分かっていても、そのまま流用する事が多い。これは、再設計による設計ミスの見逃しや、設計資産自体の仕様を理解する迄の時間、設計自体に費やす時間及び論理検証に費やす時間を考慮すると1つの有効な設計手段と言えるが、やはり不要な回路が残ってしまう。また、不要な回路がある事自体が分からない場合もある。
第3の課題として、他社が開発したIPマクロを購入して使用する場合、他社製IPマクロゆえにコピーライトがかかって、RTL上では編集出来ない。編集出来たとしても保証が無くなるために、不要な回路がある事が分かっていても、そのまま使用する事が多いため、不要な回路が残ってしまう。
この様に不要な回路が残ったまま、機能ブロック(流用設計部、IPマクロ部含む)同士を繋ぎ合わせてCHIPを組み上げる場合、入力信号に0又は1を接続するか、適当な信号(例えば他方と同一な信号)と接続させるなどの処理を行い、出力信号の場合は、出力open(未接続)にする事が多い。
ここで、ブロック間の境界に存在する冗長な論理素子の例を図22に示す。図22(A)は、出力open論理素子(出力先が未接続の論理素子)である。図22(B)は、反転論理素子(以下、インバータとする)のペア(複数のインバータが直接に接続した回路)である。図22(C)は、固定値インバータ(入力値として固定値が入力されたインバータ)である。図22(D)は、等価な信号が入力された論理素子である。図22(E)は、正転反転の関係にある信号が入力された論理素子である。図22(F)は、固定値が入力された論理素子である。これらの回路や論理素子は、より少ない入力ピンの回路や論理素子に置換、又は削除可能であり、すなわち冗長な論理素子といえる。
また、冗長な回路や論理素子の削除に関する技術として特許文献1ないし4に示す技術が開示されている。
特開2006−4244号公報 特開2006−24008号公報 特開平7−225782号公報 特開平7−192029号公報
市販の論理合成ツールを大規模な集積回路全体で一度に処理するには、メモリや処理速度による能力の限界があり、機能ブロック毎に処理を行わなければならない。つまり、論理合成ツールを集積回路全体で使用することができないため、機能ブロック間の冗長論理素子部が残ったままとなってしまう。これらの冗長論理素子部は、集積回路の大規模化に伴い、機能ブロックが増える事で増加傾向にある。
上記特許文献1ないし4の技術においても、大規模な集積回路全体で一度に処理するには、メモリや処理速度による能力の限界があり、機能ブロック毎に処理を行わなければならない可能性がある。また、図22に例示した全ての冗長論理素子の検索、削除、置き換え等を行うことができないため、回路の小規模化をする技術としては不十分であるという課題を有する。
そこで、本発明は上記課題を解決するためになされたものであり、機能ブロックごとに生成されたネットリストから機能ブロック間の冗長論理素子を検索して最小の論理素子に置き換える冗長論理素子削除方法等を提供することを目的とする。
本願に開示する冗長論理素子削除方法は、機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成ステップを含む。また、当該ピン情報生成ステップが生成したピン情報に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索ステップを含む。さらに、当該冗長検索ステップが検索した前記冗長な論理素子における前記ピン情報を、等価な最小の論理素子のピン情報に更新するピン情報更新ステップを含む。さらにまた、当該ピン情報更新ステップが更新したピン情報に基づいて、前記ネットリストを生成するネットリスト生成ステップを含む。
このように、本願に開示する冗長論理素子削除方法は、機能ブロックごとに生成された複数のネットリストを結合し、ピン情報を生成し、機能ブロック間の論理素子における冗長な論理素子を検索する。そして、等価な最小の論理素子のピン情報に更新し、当該更新したピン情報に基づいて、ネットリストを生成する。そのため、機能ブロック間の冗長な論理素子が最小の論理素子に置き換えられることで回路規模を縮小させることができるという効果を奏する。
また、冗長な論理素子を削除して回路規模を縮小させることで、開発期間の長期化、データサイズの巨大化、消費電力の増大、冗長な検証作業、冗長回路による故障未検出の発生、同時入力によるセル誤動作の発生の可能性等の問題を防止することができる。
さらに、機能ブロック間に存在する図22のような冗長な論理素子を全て検索して、最小の論理素子に置き換えることができるという効果を奏する。
さらにまた、機能ブロックに分割された大規模な集積回路であっても回路全体に対して一括して処理を行うことができるため、作業効率を格段に向上させることができるという効果を奏する。
なお、冗長な論理素子に代わって置き換えられる最小な論理素子には、固定値も含むものとする。また、回路を論理素子で置き換えてもよいし、回路を回路で置き換えてもよい。さらに、論理素子を回路で置き換えてもよい。さらにまた、置き換える回路には、固定値も含むようにしてもよい。
これまで、本発明を方法として示したが、所謂当業者であれば明らかであるように本発明を装置、及び、プログラムとして捉えることもできる。これら前記の発明の概要は、本発明に必須となる特徴を列挙したものではなく、これら複数の特徴のサブコンビネーションも発明となり得る。
すなわち、本願に開示する冗長論理素子削除方法の構成要素または構成要素の任意の組合せを、方法、装置、回路、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
従来、及び本願における集積回路の実装処理の全体フローを示す図である。 第1の実施形態に係る冗長論理素子削除方法を行う場合の原理構成図である。 第1の実施形態に係る冗長論理素子削除方法を実行するコンピュータのハードウェア構成図である。 第1の実施形態に係る冗長論理素子削除装置の機能ブロック図である。 第1の実施形態に係る冗長論理素子削除方法の全体処理を示すフローチャートである。 第1の実施形態に係る冗長論理素子削除方法においてPin情報テーブルを生成する処理を示すフローチャートである。 第1の実施形態に係る冗長論理素子削除方法においてPin情報テーブルを生成する対象となる回路図の一例を示す図である。 第1の実施形態に係る冗長論理素子削除方法における連続する複数のインバータの検索、及び更新を行う処理を示すフローチャートである。 第1の実施形態に係る冗長論理素子削除方法におけるInverter Pairの検索、及び更新処理の対象となる回路図の一例を示す図である。 第1の実施形態に係る冗長論理素子削除方法における固定値インバータの検索、及び更新を行う処理を示すフローチャートである。 第1の実施形態に係る冗長論理素子削除方法における固定値インバータの検索、及び更新処理の対象となる回路図の一例を示す図である。 第1の実施形態に係る冗長論理素子削除方法における等価入力、反転入力、及び固定値入力論理素子の検索、及び更新を行う処理を示すフローチャートである。 第1の実施形態に係る冗長論理素子削除方法における等価入力、反転入力、及び固定値入力論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。 第1の実施形態に係る冗長論理素子削除方法における出力open論理素子の検索、及び更新を行う処理を示すフローチャートである。 第1の実施形態に係る冗長論理素子削除方法における出力open論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。 第1の実施形態に係る冗長論理素子削除方法におけるネットリスト生成を行う処理を示すフローチャートである。 第1の実施形態に係る冗長論理素子削除方法におけるPin情報テーブルの1行目の情報を反映させた回路図の一例を示す図である。 実施例において冗長論理素子削除方法を実行する対象となる回路図を示す図である。 その他の実施形態に係る冗長論理素子削除方法の全体処理を示すフローチャートである。 その他の実施形態に係る冗長論理素子削除方法においてPin情報テーブルを生成する処理を示すフローチャートである。 その他の実施形態に係る冗長論理素子削除方法におけるネットリスト生成を行う処理を示すフローチャートである。 ブロック間の境界に存在する冗長論理素子の例を示す図である。
以下、本発明の実施の形態を説明する。本発明は多くの異なる形態で実施可能である。従って、本実施形態の記載内容のみで本発明を解釈すべきではない。また、本実施形態の全体を通して同じ要素には同じ符号を付けている。
さらに、所謂当業者であれば明らかな通り、本発明は装置、方法、及び、コンピュータを動作させるためのプログラムとして実施できる。また、本発明はハードウェア、ソフトウェア、または、ハードウェア及びソフトウェアの実施形態で実施可能である。プログラムは、ハードディスク、CD−ROM、DVD−ROM、光記憶装置、または、磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。さらに、プログラムはネットワークを介した他のコンピュータに記録することができる。
(本発明の第1の実施形態)
本実施形態に係る冗長論理素子削除方法について図1ないし図18を用いて説明する。
(1.処理概要)
図1は、従来、及び本願における集積回路の実装処理の全体フローを示す図である。従来は、まず「合成」のステップで、テキストレベルの記述をセルに落とし込む。「レイアウト」のステップで、論理合成されたものをデバイスに合うようマッピングをする。「シミュレーション」のステップでシミュレーションを行うことで実装処理を完了する。本実施形態においては、合成ステップとレイアウトステップとの間に冗長論理素子削除ステップが含まれており、合成ステップで得られたネットリスト(論理素子の接続状態を示すデータ)から所定の機能を実現するのに不要となる冗長論理素子を削除してネットリストを新規に生成する処理を行う。
図2は、本実施形態に係る冗長論理素子削除方法を行う場合の原理構成図である。入力されたネットリストから、テーブル作成プログラムにより各論理素子の入力ピン、出力ピンの接続状態を示すPin情報テーブルが生成される。生成されたPin情報テーブルから冗長論理素子検索プログラムにより冗長論理素子が検索され、テーブル更新プログラムによりPin情報テーブルが更新される。更新されたPin情報テーブルから論理素子更新プログラムにより冗長論理素子が削除されたネットリストが更新され、生成される。
(2.装置構成)
図3は、本実施形態に係る冗長論理素子削除方法を実行するコンピュータのハードウェア構成図の一例である。コンピュータ30は、CPU(Central Processing Unit)301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、フラッシュメモリ(Flash Memory)304、外部記憶装置であるHD(Hard Disk)305を備える。また、LAN(Local Area Network)カード306、マウス307、キーボード308を備える。さらに、ビデオカード309、このビデオカード309と電気的に接続する表示装置であるディスプレイ309a、サウンドカード310、このサウンドカード310と電気的に接続する音出力装置であるスピーカ310aを備える。さらにまた、フレキシブルディスク、CD−ROM、DVD−ROM等の記憶媒体を読み書きするドライブ311を備える。
なお、上記ハードウェア構成はあくまで一例を示したものであり、構成要素の変更をすることができるのは当然である。
図4は、本実施形態に係る冗長論理素子削除装置の機能ブロック図である。冗長論理素子削除装置400は、Pin情報生成部410と冗長論理素子検索部420とPin情報更新部430とネットリスト生成部440とPin情報記憶部450とファンクション情報記憶部460とを備える。
Pin情報生成部410は、ネットリスト401に基づいてPin情報テーブルを生成し、Pin情報記憶部450に記憶する処理を行う。Pin情報テーブルは、入力ピン、及び出力ピンの接続状態を示すテーブルであり、対象となる対象ピンの対象インスタンス、対象セル、対象ピン、当該対象ピンを駆動する駆動インスタンス、対象ピンを駆動する駆動ピン、及び対象ピンと駆動ピンの間に存在するインバータの数が格納される。
冗長論理素子検索部420は、Pin情報記憶部450に記憶されたPin情報テーブルに基づいて、複数のインバータが直列に接続されたInverter Pairの有無、固定値が入力されるインバータ(固定値インバータ)の有無、出力先が未接続である出力open論理素子の有無、及び等価な値、反転する値、又は固定値が入力される論理素子の有無を特定し機能ブロック間の冗長論理素子を検索する処理を行う。
Pin情報更新部430は、冗長論理素子検索部420がInverter Pairを検索した場合は、インバータの数に応じてPin情報テーブル内のインバータ数を0か1に更新する。また、冗長論理素子検索部420が固定値インバータを検索した場合は、インバータの数と入力する固定値に応じて、Pin情報テーブル内の入力値を「0」か「1」に更新すると共にインバータ数を0に更新する。さらに、冗長論理素子検索部420が出力open論理素子を検索した場合は、Pin情報テーブル内の出力情報を持たない論理素子を示す行を削除する。さらにまた、冗長論理素子検索部420が等価入力、反転入力、及び固定値入力論理素子を検索した場合は、利用者により予め登録された入力のパターンに応じた最小単位の論理素子の出力パターンを示すテーブル(ファンクションテーブル)に基づき、Pin情報テーブル内の当該ファンクションテーブルに登録された入力パターンに合致する論理素子の行を削除し、当該削除した論理素子と等価な論理素子を示す行を追加する。(各処理の詳細については後述する。)
ネットリスト生成部440は、Pin情報更新部430が更新したPin情報テーブルに基づいてネットリストを生成して新ネットリスト402を出力する処理を行う。
Pin情報記憶部450は、Pin情報生成部410が生成したPin情報テーブル等を記憶する記憶部である。
ファンクション情報記憶部460は、利用者により作成されたファンクションテーブルを記憶する記憶部である。
(3.動作)
図5は、本実施形態に係る冗長回路削除方法の全体処理を示すフローチャートである。まず、図1の「合成」ステップで合成されたネットリストを読み込む(ステップS501)。読み込んだネットリストに基づいてPin情報テーブルを生成する(ステップS502)。
ここで、Pin情報テーブルの生成処理について説明する。図6は、本実施形態に係る冗長論理素子削除方法においてPin情報テーブルを生成する処理を示すフローチャート、図7は、Pin情報テーブルを生成する対象となる回路図の一例を示す図である。図6のフローチャートにおいて、出力portから再帰的に入力portに向かって検査を行う。そのため、出力openの論理素子は抽出されない。つまり、初期状態における出力open論理素子は、Pin情報テーブルを作成する時点で削除することができる。
表1は、Pin情報テーブル、及びPin情報テーブルを作成するための一時テーブル(処理対象リスト)である。
まず、上記表1に示すようにリストAに、図7に示す回路図における全出力port(OUT1、OUT2、及びOUT3)を書き込み、リストBに全入力port(IN1、及びIN2)を書き込む(ステップS601)。リストAは検査対象となる端子のリストであり、リストBは検査済みの端子のリストである。この検査対象リストと検査済みリストを用いることで、検査処理の重複を防止することができる。
リストAが空(検査対象となる端子がない)かどうかを判定し(ステップS602)、空でなければ、リストAの一の要素(インスタンス)に着目し(ステップS603)、駆動端子のセルを調査する(ステップS604)。インバータであるかどうかを判定し(ステップS605)、インバータであれば、インバータ数を計上し(ステップS606)、ステップS604に戻って、次の駆動端子のセルを調査する。インバータでなければ、着目した一の要素、駆動端子、及びインバータ数をPin情報テーブルに記載する(ステップS607)。駆動先のインスタンスがリストBに存在するかどうかを判定し(ステップS608)、なければ駆動先のセルの出力ピンをリストAに追加する(ステップS609)。着目したインスタンスをリストAからリストBに移動して(ステップS610)、ステップS602の判定処理に戻る。
ここで、ステップS602からステップS610の処理について、具体例を示して説明する。出力portから再帰的に入力portに向かって検査を行うため、まずリストAのOUT1に着目する。図7を参照して、OUT1の駆動インスタンスがインバータであるため、この数をカウントし、さらにその駆動先を検査する。検査した駆動先がインバータでは無く、block1におけるAND1ゲート(セル:SCANDX1)のY端子(以降、ブロック名/ゲート名/端子名と記述する:この場合block1/AND1/Yとなる)であるため、OUT1、当該OUT1の駆動先であるblock1/AND1のY端子、及びそれらの接続間のインバータ数をPin情報テーブルに記載する。駆動先のblock1/AND1はリストBに存在しないため、block1/AND1の入力Pin情報であるblock1/AND1/A、及びblock1/AND1/BをリストAに追加し、リストBにblock1/AND1を追加する。OUT1は検査済みであるため、リストAからリストBに移動する。表2は、この処理が完了した場合のPin情報テーブル、リストA、及びリストBである。
図6に戻って、ステップS602でリストAが空かどうかが判定され、空でなければ再びステップS603からステップS610の処理を、リストAが空になるまで繰り返して行う。表2、及び図7の回路図に基づいて、リストAが空になるまで上記処理を繰り返した結果を表3に示す。
ステップS602でリストAが空であるため、後段の処理を行うためにテーブルをソートして(ステップS611)、処理を終了する。ここでは、TargetInst、TargetPin、DriveInst、DrivePinの順でソートする。ソートした結果が、本ステップの出力であるPin情報テーブルとなる。本ステップにおける最終のPin情報テーブルを表4に示す。
図5に戻って、ステップS502でPin情報テーブルが生成されたら、FLAGに0をセットする(ステップS503)。全ての冗長論理素子についてチェックが完了したかどうかを判定し(ステップS504)、全ての冗長論理素子についてチェックが完了していなければ、冗長論理素子のタイプを変更(又は設定)する(ステップS505)。
ここで、冗長論理素子のタイプとは、冗長論理素子検索部420が検索する冗長論理素子の種別である。上述したように、Inverter Pair、固定値インバータ、出力open論理素子、並びに等価入力、反転入力、及び固定値入力論理素子のいずれかのタイプが設定される。本実施形態においては、処理効率を高めるために
(1)Inverter Pair
(2)固定値インバータ
(3)等価入力、反転入力、及び固定値入力論理素子
(4)出力open論理素子
の順番で処理が行われる。
冗長論理素子のタイプが設定されると、冗長論理素子の検索が行われる(ステップS506)。冗長論理素子があるかどうかが判定され(ステップS507)、冗長論理素子がなければ、ステップS504の判定処理に戻る。冗長論理素子があれば、FLAGに1をセットしてPin情報テーブルを更新する(ステップS508)。
ここで、上記冗長論理素子のタイプごとに冗長論理素子の検索処理、及びPin情報テーブルの更新処理について説明する。まず、(1)Inverter Pairの検索について説明する。インバータは、極性を反転させるものであり、2個連続で接続されている場合は、極性が正転となり無駄な論理素子となってしまう。つまり偶数個のインバータの直列接続は意味が無く(不要である)、奇数個の直列接続は1個のインバータと論理的に等価である。ここでは、回路内のインバータ接続をリセットする処理が行われる。図8は、本実施形態に係る冗長論理素子削除方法における連続する複数のインバータの検索、及び更新を行う処理を示すフローチャートである。
まず、Pin情報テーブルの任意の一行に着目し(ステップS801)、インバータの数をInv-Cntから抽出する(ステップS802)。抽出したインバータの数を2で割った余りで上書きする(ステップS803)。全ての行について処理が完了したかどうかを判定し(ステップS804)、全ての行について処理が完了していなければ、次の行について処理を行う。全ての行について処理が完了してれば(1)Inverter Pairの検索、及び更新処理を終了する。
ここで、図8の処理について、具体例を示して説明する。図9は、Inverter Pairの検索、及び更新処理の対象となる回路図の一例を示す図である。図9(a)が処理前の回路図であり、図9(b)が処理後の回路図である。図9(a)の回路図について、Pin情報テーブルを生成すると表5が生成される。
図8のフローにしたがってInv-Cntの数を2で割って、その余りの数で上書きする。表5に示す太枠の部分(4行目から7行目)が更新される。更新されたテーブルが下記の表6となる。
表6の更新されたPin情報テーブルを回路図に変換したものが図9(b)に示す回路図である。つまり、図9(a)の回路と図9(b)の回路は等価になっており、図9(b)のほうが図9(a)に比べて冗長な論理素子が削除されてスマートになっていることがわかる。
次に、(2)固定値インバータの検索について説明する。固定値をインバータで反転させて使用する信号は、固定値の逆の極性の信号をそのまま使用場合と等価であり、インバータは必要ない。本処理ではそのような回路を修正する。図10は、本実施形態に係る冗長論理素子削除方法における固定値インバータの検索、及び更新を行う処理を示すフローチャートである。
まず、Pin情報テーブルの1行に着目し(ステップS1001)、着目した行のDrivePin列の値を抽出する(ステップS1002)。DrivePin列の値が固定値(0又は1)であるかどうかを判定し(ステップS1003)、固定値でなければステップS1007に進む。DrivePin列の値が固定値であれば、着目した行のInv-Cnt列の値を抽出し(ステップS1004)、Inv-Cnt列の値が1かどうかを判定する(ステップS1005)。このとき、(1)Inverter Pairの検索、及び更新処理済みであるため、Inv-Cntには、「1」又は「0」のいずれかの値になっている。Inv-Cnt列の値が1でなければステップS1007に進む。Inv-Cnt列の値が1であれば、Inv-Cnt列の値を0に上書きし、DrivePin列の値を「0」→「1」、又は「1」→「0」に置換する(ステップS1006)。全ての行について検査したかどうかを判定し(ステップS1007)、全ての行について検査していなければ、次の行について処理を行う。全ての行について処理が完了してれば(2)固定値インバータの検索、及び更新処理を終了する。
ここで、図10の処理について、具体例を示して説明する。図11は、固定値インバータの検索、及び更新処理の対象となる回路図の一例を示す図である。図11(a)が処理前の回路図であり、図11(b)が処理後の回路図である。図11(a)の回路図について、Pin情報テーブルを生成すると表7が生成される。
図10のフローにしたがって、DrivePinが0又は1の固定値である3行目でInv-Cntが1となり、固定値インバータとなる。この部分のInv-Cntを0に上書きし、DrivePinを1'b1(「1」)に上書きし、Pin情報テーブルを更新する。更新されたテーブルが下記の表8となる。
表8の更新されたPin情報テーブルを回路図に変換したものが図11(b)に示す回路図である。つまり、図11(a)の回路と図11(b)の回路は等価になっており、図11(b)のほうが図11(a)に比べて冗長な論理素子が削除されてスマートになっていることがわかる。
次に、(3)等価入力、反転入力、及び固定値入力論理素子の検索について説明する。等価入力、反転入力、及び固定値入力のセルは、等価の小さなセルに置換、又は削除して冗長論理素子を削除することができる。図12は、本実施形態に係る冗長論理素子削除方法における等価入力、反転入力、及び固定値入力論理素子の検索、及び更新を行う処理を示すフローチャートである。
まず、Pin情報テーブルの1行目に着目し(ステップS1201)、TargetInst列が同じである最後の行まで進み、入力側(駆動先)の接続情報を得る(ステップS1202)。駆動先(DrivePin列)に重複、又は固定値入力があるかどうかを判定し(ステップS1203)、重複、又は固定値入力がなければステップS1206に進む。重複、又は固定値入力があれば着目したインスタンスの全行をファンクションテーブルに従って変更する(ステップS1204)。着目したインスタンスの出力側の行全てをファンクションテーブルに従って修正する(ステップS1205)。テーブルの末行かどうかを判定し(ステップS1206)、テーブルの末行でなければ、次の行に着目して(ステップS1207)、ステップS1202の処理に戻る。テーブルの末行であれば、(3)等価入力、反転入力、及び固定値入力論理素子の検索、及び更新処理を終了する。
ここで、図12の処理について、具体例を示して説明する。本処理ではPin情報テーブルの更新時にファンクションテーブルを参照する。これは、冗長な入力(等価、反転、固定値)の論理素子と等価な出力を入力パターンごとに表したものである。ファンクションテーブルの一例を表9、及び表10に示す。
ファンクションテーブルの内容について補足する。例えば、表9のSCNANDX1の行No.2において、SCNANDX1は入力A、Bを持ち、入力Aと入力Bが反転している場合、出力Yが1'b1(「1」)に固定される事を表している。また、例えば、表9のSCANDX1の行No.4において、SCANDX1は入力A、Bを持ち、入力Bが1(=1'b1)である場合、出力Yは入力Aと等価である事を表している。
さらに、例えば、表10のSCADDERX1の行No.5において、SCADDERX1は入力A、B、Ciを持つ。入力Bが1(=1'b1)である場合、SCADDERX1の出力YはSCADDERX1の入力CiとAに入る信号を、SCEXORX1の入力A、Bにそれぞれ入力した場合のSCEXORX1の出力Yを反転させたものと等価である。出力CoはSCADDERX1の入力CiとAに入る信号をSCORX1の入力A、Bにそれぞれ入力した場合のSCORX1の出力Yと等価である事を示している。
図13は、等価入力、反転入力、及び固定値入力論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。図13(a)が処理前の回路図であり、図13(b)が処理後の回路図である。図13(a)の回路図について、Pin情報テーブルを生成すると表11が生成される。
図12のフローチャートに従って1行目に着目する。この行と同じTragetInstの値を持つ行のデータを取り込んでいく。2行目までが同じ値が入っているので、ここまで(1行目、及び2行目)が着目するインスタンスとなる。着目インスタンスの入力側の接続を確認する。冗長論理素子は等価入力、反転入力、又は固定値入力であるので、DriveInst、及びDrivePinの列に、重複、又は固定値があれば冗長となる。AND3(1行目、及び2行目)には、この状態が存在しないため、冗長論理素子ではないと判断する。この時点でテーブルの末行ではないので、次の行に着目する。
同様に次の行から、同じインスタンスの行を取り込む。ここでは、block1/ADD1(SCADDERX1)(表11の3行目〜5行目)のインスタンスが取り込まれる。block1/ADD1に着目し、DrivePinの列に固定値(1'b1=「1」)が含まれるため、冗長論理素子と判断する。ここで、表10のファンクションテーブルから、着目したインスタンスのセルタイプを検索し、さらに該当する入力状態を検索し、表10の行No.5が該当する事が分かる。表10の行No.5から、冗長論理素子の出力Yは、Y:SCEXORX1(.A(Ci),.B(A))+inv(SCADDERX1の入力CiとAに入る信号を、SCEXORX1の入力A、Bにそれぞれ入力した場合のSCEXORX1の出力Yを反転させたもの)、出力Coは、Y:SCORX1(.A(Ci),.B(A))(SCADDERX1の入力CiとAに入る信号をSCORX1の入力A、Bにそれぞれ入力した場合のSCORX1の出力Y)とあるので、block1/ADD1(表11の3行目〜5行目)を、この2つのセルで構成された等価な論理素子に置き換える。
先ずはblock1/ADD1を2つのセルに置き換える。つまり、着目行を削除し、この2つのセルをPin情報テーブルに追加する必要がある。SCEXORX1の入力Aにblock1/ADD1のCi入力の信号を、SCEXORX1の入力Bにblock1/ADD1のA入力の信号が接続された行を追加する。SCORX1の入力Aにblock1/ADD1のCi入力の信号を、SCORX1の入力Bにblock1/ADD1のA入力の信号が接続された行を追加する。そして、着目行を削除する。この状態を表12に示す。黒い網掛けのセルは削除された事を示している。また、追加したセルにはNEW#ADD1#1とNEW#ADD1#2というインスタンス名をつけたとする。
次にblock1/ADD1の出力Y、Coを置き換える。block1/ADD1の出力Yはファンクションテーブルによると、SCEXORX1の出力Y+invとなっているため、これをPin情報テーブルの10行目に反映させる。Block1/ADD1のY端子の情報を、NEW#ADD1#1のY端子の情報に書き換え、「+inv」(インバータ)を反映させるために、Inv-Cntの値に1を加算する。同様に、block1/ADD1の出力Coは、NEW#ADD1#2のY端子の情報に書き換える。その結果、下記の表13の様なテーブルとなり、冗長論理素子block/ADD1の削除が完了する。太枠がこの処理で変更をかけた部分となる。
この時点でテーブルの末行ではないので、次の行に着目する。そして、末行まで上記処理を繰り返して行った結果を表14に示す。
上記処理において、冗長論理素子を削除した過程で新たな冗長が発生するが、冗長論理素子がなくなるまで本処理が繰り返して行われるため、再処理のときに削除することができる。表14の更新されたPin情報テーブルを回路図に変換したものが図13(b)に示す回路図である。つまり、図13(a)の回路と図13(b)の回路は等価になっており、図13(b)のほうが図13(a)に比べて等価な最小の論理素子に置き換えられているため、冗長な論理素子が削除されてスマートになっていることがわかる。
次に、(4)出力open論理素子の検索について説明する。ここでは出力側の接続が無いために、出力へ影響のない論理素子を削除する。出力openに該当する論理素子は出力情報をもたないため、Pin情報テーブルのDriveInstに存在しない。よって、TragetInstに存在し、DrivePinに存在しない特徴がある。この特徴を利用して、出力open論理素子の検索、及び更新を行う。なお、Pin情報テーブル作成時には、Pin情報テーブル内に出力open論理素子が含まれることはないが、他の冗長論理素子削除の過程で新たに出力open論理素子が発生する場合があるため、これを削除するために本処理((4)出力open論理素子の検索処理)を行う。
図14は、本実施形態に係る冗長論理素子削除方法における出力Open論理素子の検索、及び更新を行う処理を示すフローチャートである。まず、Pin情報テーブルのDriveInst列の情報をリスト化する(ステップS1401)。ここで作成されるリストをリストCとする。Pin情報テーブルの1行目に着目し(ステップS1402)、着目した行のTargetInst列の値を抽出する(ステップS1403)。抽出したTargetInstがリストCに存在するかどうかを判定し(ステップS1404)、抽出したTargetInstがリストCに存在しない場合は、着目している行の以下の行で、TargetInstが同値である行を削除する(ステップS1405)。リストCを更新し(ステップS1406)、再度ステップS1402に戻って、同様の処理を繰り返して行う。
ステップS1404で、抽出したTargetInstがリストCに存在する場合は、全ての行を検査したかどうかを判定する(ステップS1407)。全ての行を検索していない場合は、Pin情報テーブル内の次の行に着目し(ステップS1408)、ステップS1403の処理に戻る。全ての行を検査した場合は、(4)出力open論理素子の検索、及び更新処理を終了する。
ここで、図14の処理について、具体例を示して説明する。図15は、出力open論理素子の検索、及び更新処理の対象となる回路図の一例を示す図である。図15(a)が処理前の回路図であり、図15(b)が処理後の回路図である。図15(a)の回路図について、Pin情報テーブルを生成すると表15が生成される。
図14のフローにしたがって、まず、DriveInstの値をリストCに格納する。初期状態でのリストCを表16に示す。
Pin情報テーブルの1行目から、TragetInstの値がリストCに含まれるかどうかを調査していく。含まれる場合は次の行を検査する。表15の11行目のblock2/AND6がリストCに含まれてないので、この行を削除する。TargetInstがblock2/AND6で同値の12行目も削除対象となり、出力open論理素子であるblock2/AND6が削除される。全ての行に出力open論理素子が存在しなくなるまで同様の処理を繰り返して行う。その結果を表17に示す。
表17の更新されたPin情報テーブルを回路図に変換したものが図15(b)に示す回路図である。つまり、図15(a)の回路と図15(b)の回路は等価になっており、図15(b)のほうが図15(a)に比べて冗長な回路が削除されてスマートになっていることがわかる。
以上が、冗長論理素子のタイプごとの冗長論理素子の検索処理、及びPin情報テーブルの更新処理についての説明である。
図5に戻って、ステップS504で全冗長論理素子がチェックされたかどうかが再度判定され、チェックされていない場合は、再度冗長論理素子の検索処理、及びPin情報テーブルの更新処理が行われる。全冗長論理素子がチェックされた場合は、FLAGが0かどうかが判定される(ステップS509)。FLAGが0ではない場合は、ステップS503に戻って、FLAGが0にクリアされて、再度同様の処理が行われる。FLAGが0の場合は、更新されたPin情報テーブルに基づいてネットリストの生成を行う(ステップS510)。
なお、FLAGの判定は、4つの種別の冗長論理素子を一度も検索しなかった場合にFLAG=0をもって、Pin情報テーブル内の冗長論理素子の検索処理、及びPin情報テーブルの更新処理を終了する。つまり、任意の冗長論理素子を削除した後に、別のカテゴリーの冗長論理素子が発生する可能性があるため、全ての冗長論理素子を一度も検索しない事が、冗長論理素子削除の終了の必須条件とするためである。
ここで、ネットリストの生成について説明する。上記処理によりPin情報テーブルで冗長論理素子が削除されると、その更新されたPin情報テーブルに基づいてネットリストを生成する。図16は、本実施形態に係る冗長論理素子削除方法におけるネットリスト生成を行う処理を示すフローチャートである。まず、Pin情報テーブルの1行目に着目し(ステップS1601)、TargetInstが回路内にあるかどうかを判定する(ステップS1602)。TargetInstが回路内にない場合は、TargetInstを生成しTargetCellでセルを決定する(ステップS1603)。TargetPinを生成し(ステップS1604)、DriveInstが回路内にあるかどうかを判定する(ステップS1605)。DriveInstが回路内にない場合は、DriveInstを生成する(ステップS1606)。DrivePinが回路内にあるかどうかを判定し(ステップS1607)、DrivePinが回路内にない場合は、DrivePinを生成する(ステップS1608)。TargetPinとDrivePinとを接続する(ステップS1609)。Inv-Cntが1かどうかを判定し(ステップS1610)、1である場合には、接続上にインバータを生成する(ステップS1611)。末行かどうかを判定し(ステップS1612)、末行でなければ次の行に着目し(ステップS1613)、再度ステップS1602から処理を繰り返して行う。末行であれば処理を終了する。
ここで、図16の処理について、具体例を示して説明する。下記の表18に示すPin情報テーブルに基づいて、ネットリストを生成する。
図16のフローチャートに従って、1行目のAND5に着目する。表18の1行目の情報を反映させた回路図を図17(a)に示す。TragetInst(AND5)が回路中に存在しない(初期状態であるためネットリストは空白になっている)ため、AND5を生成する。セルタイプはTargetCell(SCANDX1)となる。TargetPin(A)を生成する。次に、DriveInst(block2/AND2)が回路中に存在しないため、DriveInst(block2/AND2)を生成し、DrivePin(Y)も存在しないため併せて生成する。その後AND5/Aとblock2/AND2/Yを接続する。Inv-Cntは0であるため、インバータは挿入しない。
末行ではないため、次の2行目に着目する。移行すべての行について処理を行った結果の回路図を図17(b)に示す。表18のPin情報テーブルから図17(b)の回路図が生成される。
図5に戻って、ステップS510でネットリストが生成されると、新たなネットリストが出力され(ステップS511)、処理を終了する。
このように、本実施形態に係る冗長論理素子削除方法は、機能ブロックごとに生成された複数のネットリストを結合し、ピン情報を生成し、機能ブロック間の論理素子における冗長論理素子を検索する。そして、等価な最小の論理素子のピン情報に更新し、当該更新したピン情報に基づいて、ネットリストを生成する。そのため、機能ブロック間の冗長論理素子を削除して最小論理素子に置き換えることで回路規模を縮小させることができるという効果を奏する。
また、冗長論理素子を削除して回路規模を縮小させることで、開発期間の長期化、データサイズの巨大化、消費電力の増大、冗長な検証作業、冗長回路による故障未検出の発生、同時入力によるセル誤動作の発生の可能性等の問題を防止することができる。
さらに、機能ブロック間に存在する冗長論理素子を検索して、最小論理素子に置き換えることができるという効果を奏する。
さらにまた、機能ブロックに分割された大規模な集積回路であっても回路全体に対して一括して処理を行うことができるため、作業効率を格段に向上させることができるという効果を奏する。
さらにまた、反転論理素子の数に基づいて冗長なインバータを容易に削除することができるという効果を奏する。
さらにまた、入力値、及び反転論理素子の数に基づいて、冗長な固定値のインバータを容易に削除することができるという効果を奏する。
さらにまた、入力端子のインスタンス、及び出力端子のインスタンスに基づいて、冗長な出力open論理素子(出力が未接続な論理素子)を容易に削除することができるという効果を奏する。
さらにまた、入力値、及び予め登録された出力パターンに基づいて、入力値が等価な論理素子、入力値に固定値を含む論理素子、及び入力値に反転する値を含む冗長な論理素子を容易に削除することができるという効果を奏する。
さらにまた、(1)Inverter Pair(2)固定値インバータ(3)等価入力、反転入力、及び固定値入力論理素子(4)出力open論理素子の順に冗長論理素子を検索することで無駄な処理を省略して処理効率を最大限に高めることができるという効果を奏する。
本実施形態に係る冗長論理素子削除方法を実行する流れを説明する。図18は、実施例において冗長論理素子削除方法を実行する対象となる回路図を示す図である。図18(a)に示す回路図について、Pin情報テーブルの生成、冗長論理素子の検索、Pin情報テーブルの更新、ネットリストの生成を行う。
まず、図5のステップS502を実行する。ステップS502を実行した結果、下記の表19に示すPin情報テーブルが生成される。
ステップS502を行う。冗長削除(テーブル更新済みの判断用の)FLAGを0にセットしておく。まず1周目の冗長検索、テーブル更新プログラムが開始される。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、Inverter Pair、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長論理素子のチェックが未実施であるためステップS505に進む。
ステップS505を行う。検査する冗長のタイプをInverter Pairにする。ステップS506〜ステップS508を行う。Inverter Pairの冗長検索、テーブル更新を行う。表19のPin情報テーブル内に冗長論理素子が存在するため、Pin情報テーブルが下記の表20に更新される。
冗長論理素子が存在したので、FLAGに1がセットされる。ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを固定値インバータにする。ステップS506〜ステップS508を行う。固定値インバータの冗長検索、テーブル更新を行う。表20のPin情報テーブル内に冗長論理素子が存在するため、Pin情報テーブルが下記の表21に更新される。
冗長論理素子が存在したので、FLAGに1がセットされる。ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを(等価、反転、固定値入力論理素子)にする。ステップS506〜ステップS508を行う。(等価、反転、固定値入力論理素子)の冗長検索、テーブル更新を行う。表21のPin情報テーブル内に冗長論理素子が存在するため、Pin情報テーブルが下記の表22に更新される。
冗長論理素子が存在したので、FLAGに1がセットされる。ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを出力Open論理素子にする。ステップS506〜ステップS508を行う。出力Open論理素子の冗長検索、テーブル更新を行う。表22のPin情報テーブル内に冗長論理素子が存在するため、Pin情報テーブルが下記の表23に更新される。
冗長論理素子が存在したので、FLAGに1がセットされる。ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、全ての冗長に対してチェックしたのでステップS509に進む。
ステップS509を行う。FLAG=0を満たさないためステップS503に進む。ステップS503を行う。冗長削除(テーブル更新済みの判断用の)FLAGを0にセットしておく。2周目の冗長検索、テーブル更新プログラムが開始される。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、Inverter Pair、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長論理素子のチェックが未実施であるためステップS505に進む。
ステップS505を行う。検査する冗長のタイプをInverter Pairにする。ステップS506〜ステップS508を行う。Inverter Pairの冗長検索、テーブル更新を行う。表23のPin情報テーブル内に冗長論理素子が存在するため、Pin情報テーブルが下記の表20に更新される。
冗長論理素子が存在したので、FLAGに1がセットされる。ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを固定値インバータにする。ステップS506〜ステップS508を行う。固定値インバータの冗長検索、テーブル更新を行う。表24のPin情報テーブル内に冗長論理素子が存在しないため、Pin情報テーブルは更新されない。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを(等価、反転、固定値入力論理素子)にする。ステップS506〜ステップS508を行う。(等価、反転、固定値入力論理素子)の冗長検索、テーブル更新を行う。表24のPin情報テーブル内に冗長論理素子が存在しないため、Pin情報テーブルは更新されない。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを出力Open論理素子にする。ステップS506〜ステップS508を行う。出力Open論理素子の冗長検索、テーブル更新を行う。表24のPin情報テーブル内に冗長論理素子が存在しないため、Pin情報テーブルは更新されない。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、全ての冗長に対してチェックしたのでステップS509に進む。
ステップS509を行う。FLAG=0を満たさないためステップS503に進む。ステップS503を行う。冗長削除(テーブル更新済みの判断用の)FLAGを0にセットしておく。3周目の冗長検索、テーブル更新プログラムが開始される。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、Inverter Pair、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長論理素子のチェックが未実施であるためステップS505に進む。
ステップS505を行う。検査する冗長のタイプをInverter Pairにする。ステップS506〜ステップS508を行う。Inverter Pairの冗長検索、テーブル更新を行う。表24のPin情報テーブル内に冗長論理素子が存在しないため、Pin情報テーブルは更新されない。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、固定値インバータ、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを固定値インバータにする。ステップS506〜ステップS508を行う。固定値インバータの冗長検索、テーブル更新を行う。表24のPin情報テーブル内に冗長論理素子が存在しないため、Pin情報テーブルは更新されない。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、(等価、反転、固定値入力論理素子)、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを(等価、反転、固定値入力論理素子)にする。ステップS506〜ステップS508を行う。(等価、反転、固定値入力論理素子)の冗長検索、テーブル更新を行う。表24のPin情報テーブル内に冗長論理素子が存在しないため、Pin情報テーブルは更新されない。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、出力Open論理素子の冗長のチェックが未実施であるためにステップS505に進む。
ステップS505を行う。検査する冗長のタイプを出力Open論理素子にする。ステップS506〜ステップS508を行う。出力Open論理素子の冗長検索、テーブル更新を行う。表24のPin情報テーブル内に冗長論理素子が存在しないため、Pin情報テーブルは更新されない。
ステップS503を行う。全ての冗長をチェックしたかどうかの分岐で、全ての冗長に対してチェックしたのでステップS509に進む。
ステップS509を行う。FLAG=0を満たすためPin情報テーブル内には冗長論理素子が存在しない状態になったと判断できる。つまり、2周目の処理で全ての冗長論理素子が削除され、3周目の処理で冗長論理素子が存在しないことが確認できたことになる。
ステップS510を行う。表24に示すPin情報テーブルからネットリストを生成する。生成されたネットリストは、図18(b)になり、冗長論理素子が削除され回路規模が縮小していることがわかる。
(その他の実施形態)
本実施形態に係る冗長論理素子削除方法は、前記第1の実施形態に係る冗長論理素子削除方法を拡張させたものであり、入力ネットリストを冗長論理素子削除後のPin情報テーブルに従って加工し、処理前後のネットリストで相関が取れるようにしたものである。また、処理前後のネットリストで差異があまりない場合には、新たにネットリストを生成せずに、入力ネットリストを加工して処理効率を高める。本実施形態に係る冗長論理素子削除方法について、図19ないし図21を用いて説明する。
図19は、本実施形態に係る冗長論理素子削除方法の全体処理を示すフローチャートである。第1の実施形態と異なるのは、ステップS510でネットリストを生成する際に、ステップS501で入力されたネットリストを参照する点である。
図20は、本実施形態に係る冗長論理素子削除方法においてPin情報テーブルを生成する処理を示すフローチャートである。まず、回路内の入力ピン、又は出力ポートに着目し(ステップS2001)、Pin情報テーブルに記載する(ステップS2002)。駆動先のセルを調査し(ステップS2003)、インバータであるかどうかを判定する(ステップS2004)。インバータである場合は、インバータ数を計上する(ステップS2005)。駆動ピン、インバータ数をPin情報テーブルに記載する(ステップS2006)。全てのピン、及びポートをテーブル化したかどうかを判定し(ステップS2007)、全てのピン、及びポートをテーブル化していなければ、ステップS2001に戻って再度処理を繰り返す。全てのピン、及びポートをテーブル化したら処理を終了する。
図20の処理においては、回路内のすべての接続情報をテーブルに書き出すことになる。前記第1の実施形態における図5の処理の場合は、出力に影響のない論理素子を削除した状態のテーブルが作成される。例えば、図7におけるAND4(SCANDX1)については、表3に作成されていない。これらの論理素子について、本実施形態においては、入力ネットリストから該当セル、及び接続を削除しないようにする。また、Pin情報テーブルを以下のように拡張する。
(1)Delete列を追加する。1が記入された場合、削除された事と同じ意味とする。
(2)Insert列を追加する。1が挿入された場合、冗長論理素子の置き換えで新規に生成された事と同じ意味とする。
(3)Modify列を追加する。1が記入された場合、入力ネットリストと不一致である事と同じ意味とする。
冗長論理素子を削除する過程で削除対象となる行は、実際に消去せずにDelete列に1を入れ、冗長論理素子を削除する過程で修正した行は、Modify列に1を入れ、新規に発生した行のInsert列に1を入れる。
ネットリストを生成する処理は、入力ネットリストと上記の規則に従って生成されたPin情報テーブルとに基づいて、図21のフローチャートに従って行われる。
図21において、入力ネットリスト、及びPin情報テーブルを入力し、入力された入力ネットリスト、及びPin情報テーブルに基づいてDelete列が1の行のTargetInstのインスタンスを削除する(ステップS2101)。Insert列が1の行のTargetInstのインスタンスを生成する(ステップS2102)。Insert列が1の行の接続を構築する(ステップS2103)。Modify列が1の行の接続を構築する(ステップS2104)。新ネットリストを出力する(ステップS2105)。
以上の処理を行う事で、一部の変更で冗長論理素子を削除した回路を得る事ができ、処理を効率化することができると共に、入力ネットリストの階層情報を残してデバッグ作業や論理SIMにおいて支障が出ないようにすることができる。
なお、図19において、ステップS510の前に、入力ネットリストのPin情報テーブルと更新後のPin情報テーブルとを比較して、更新がある箇所のみに基づいてネットリストを生成するようにしてもよい。そうすることで、処理を効率化することができる。
また、図19において、ステップS510の後に、入力ネットリストのPin情報テーブルと更新後のPin情報テーブルとを比較する。そして、更新箇所数が所定の閾値以下であれば、入力ネットリストに基づいて更新箇所のみを変更して新ネットリストを生成する。更新箇所数が所定の閾値以上あれば、入力ネットリストを参照せず、第1の実施形態の場合のように新規に新ネットリストを生成するようにしてもよい。つまり、大量の情報に対して一部のみが更新されている場合には、新規にネットリストを作成するよりも入力ネットリストを流用したほうが処理効率を高めることができる。一方、多くの情報が更新されている場合には、入力ネットリストを流用するよりも新規にネットリストを作成するほうが処理効率を高めることができる。
以上の前記各実施形態により本発明を説明したが、本発明の技術的範囲は実施形態に記載の範囲には限定されず、これら各実施形態に多様な変更又は改良を加えることが可能である。そして、かような変更又は改良を加えた実施の形態も本発明の技術的範囲に含まれる。このことは、特許請求の範囲及び課題を解決する手段からも明らかなことである。
前記各実施形態に関して次の付記を示す。
(付記1)機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成ステップと、当該ピン情報生成ステップが生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索ステップと、当該冗長検索ステップが検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新ステップと、当該ピン情報更新ステップが更新したピン情報に基づいて、当該ピン情報を回路情報に変換して冗長な論理素子を削除したネットリストを生成するネットリスト生成ステップとを含む冗長論理素子削除方法。
(付記2)付記1に記載の冗長論理素子削除方法において、前記ピン情報が、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数情報を有し、前記ピン情報更新ステップが、前記特定された論理素子における前記反転論理素子の個数が偶数の場合に前記反転論理素子の個数情報を0に更新し、前記反転論理素子の個数が奇数の場合に前記反転論理素子の個数情報を1に更新する冗長論理素子削除方法。
(付記3)付記1又は2に記載の冗長論理素子削除方法において、任意の一のピン情報について入力される値が固定値であり、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数が奇数である場合に、前記冗長検索ステップが冗長な論理素子として検索し、前記ピン情報更新ステップが、前記任意の一のピン情報について前記入力される固定値の極性を反転し、前記反転論理素子の個数情報を0に更新する冗長論理素子削除方法。
(付記4)付記1ないし3のいずれかに記載の冗長論理素子削除方法において、前記ピン情報における全ての入力端子のインスタンスと全ての出力端子のインスタンスとを比較し、入力端子のインスタンスにのみ存在するインスタンスが抽出された場合に、前記冗長検索ステップが冗長な論理素子として検索し、前記ピン情報更新ステップが、前記抽出されたインスタンスのピン情報を削除する冗長論理素子削除方法。
(付記5)付記1ないし4のいずれかに記載の冗長論理素子削除方法において前記ピン情報に基づいて、入力値に等価な値を含む論理素子、入力値に固定値を含む論理素子、又は入力値に反転する値を含む論理素子が存在する場合に、前記冗長検索ステップが冗長な論理素子として検索し、前記ピン情報更新ステップが、予め登録された前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す置換情報に基づいて、当該冗長な論理素子のピン情報を等価な最小の論理素子のピン情報に置き換えて更新する冗長論理素子削除方法。
(付記6)付記1ないし5のいずれかに記載の冗長論理素子削除方法において、前記ピン情報生成ステップで生成されるピン情報が、全入力端子におけるインスタンス、セルタイプ及びピンの情報、並びに当該入力端子を駆動する出力端子におけるインスタンス、及びピンの情報を含む冗長論理素子削除方法。
(付記7)付記1ないし6のいずれかに記載の冗長論理素子削除方法において、前記冗長検索ステップ、及びピン情報更新ステップの処理が再帰的に実行され、前記冗長検索ステップで前記冗長論理素子を検索ができなくなった場合に、前記再帰的な処理を終了し、ネットリスト生成ステップを実行する冗長論理素子削除方法。
(付記8)付記1ないし7のいずれかに記載の冗長論理素子削除方法において、前記ピン情報生成ステップが、出力ポートから入力ポート側にトレースしてピン情報を生成する冗長論理素子削除方法。
(付記9)付記1ないし8のいずれかに記載の冗長論理素子削除方法において、前記ピン情報生成ステップが、トレースの対象となる端子に関する情報が記載されたトレース対象リスト、及び既にトレース処理がされた端子に関する情報が記載されたトレース済みリストに基づいてピン情報を生成する冗長論理素子削除方法。
(付記10)付記1ないし9のいずれかに記載の冗長論理素子削除方法において、前記予め登録された置換情報に、冗長入力のパターン、及び当該冗長入力パターンに対応する非冗長論理素子の出力パターンが含まれる冗長論理素子削除方法。
(付記11)付記1ないし10のいずれかに記載の冗長論理素子削除方法において、前記ネットリスト生成ステップが、前記結合された当初のネットリスト、及び前記ピン情報更新ステップにて更新されたピン情報に基づいて、前記当初のネットリストの変更箇所のみを更新する冗長論理素子削除方法。
(付記12)付記11に記載の冗長論理素子削除方法において、前記ピン情報更新ステップが、前記ピン情報の行の追加を行った場合に、当該行が追加された行であることを示す情報を含み、前記ピン情報の行の修正を行った場合に、当該行が修正された行であることを示す情報を含み、前記ピン情報の行の削除を行った場合に、当該行を残し、当該行が削除された行であることを示す情報を含むように、前記ピン情報を更新する冗長論理素子削除方法。
(付記13)機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段と、当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段と、当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段と、当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段とを備える冗長論理素子削除装置。
(付記14)機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段、当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段、当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段、当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段としてコンピュータを機能させるための冗長論理素子削除プログラム。
30 コンピュータ
301 CPU
302 RAM
303 ROM
304 フラッシュメモリ
305 HD
306 LANカード
307 マウス
308 キーボード
309 ビデオカード
309a ディスプレイ
310 サウンドカード
310a スピーカ
311 ドライブ
400 冗長論理素子削除装置
401 ネットリスト
402 新ネットリスト
410 Pin情報生成部
420 冗長論理素子検索部
430 Pin情報更新部
440 ネットリスト更新部
450 Pin情報記憶部
460 ファンクション情報記憶部

Claims (7)

  1. 機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成ステップと、
    当該ピン情報生成ステップが生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索ステップと、
    当該冗長検索ステップが検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新ステップと、
    当該ピン情報更新ステップが更新したピン情報に基づいて、当該ピン情報を回路情報に変換して冗長な論理素子を削除したネットリストを生成するネットリスト生成ステップとを含む冗長論理素子削除方法。
  2. 請求項1に記載の冗長論理素子削除方法において、
    前記ピン情報が、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数情報を有し、
    前記ピン情報更新ステップが、前記特定された論理素子における前記反転論理素子の個数が偶数の場合に前記反転論理素子の個数情報を0に更新し、前記反転論理素子の個数が奇数の場合に前記反転論理素子の個数情報を1に更新する冗長論理素子削除方法。
  3. 請求項1又は2に記載の冗長論理素子削除方法において、
    任意の一のピン情報について入力される値が固定値であり、前記出力ポートから入力ポートに至る前記入力ピン、及び出力ピンで特定される論理素子における反転論理素子の個数が奇数である場合に、前記冗長検索ステップが冗長な論理素子として検索し、
    前記ピン情報更新ステップが、前記任意の一のピン情報について前記入力される固定値の極性を反転し、前記反転論理素子の個数情報を0に更新する冗長論理素子削除方法。
  4. 請求項1ないし3のいずれかに記載の冗長論理素子削除方法において、
    前記ピン情報における全ての入力端子のインスタンスと全ての出力端子のインスタンスとを比較し、入力端子のインスタンスにのみ存在するインスタンスが抽出された場合に、前記冗長検索ステップが冗長な論理素子として検索し、
    前記ピン情報更新ステップが、前記抽出されたインスタンスのピン情報を削除する冗長論理素子削除方法。
  5. 請求項1ないし4のいずれかに記載の冗長論理素子削除方法において
    前記ピン情報に基づいて、入力値に等価な値を含む論理素子、入力値に固定値を含む論理素子、又は入力値に反転する値を含む論理素子が存在する場合に、前記冗長検索ステップが冗長な論理素子として検索し、
    前記ピン情報更新ステップが、予め登録された前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す置換情報に基づいて、当該冗長な論理素子のピン情報を等価な最小の論理素子のピン情報に置き換えて更新する冗長論理素子削除方法。
  6. 機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段と、
    当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段と、
    当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段と、
    当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段とを備える冗長論理素子削除装置。
  7. 機能ブロックごとに生成され論理素子の接続情報を示す複数のネットリストを結合し、当該結合したネットリストにおける論理素子が外部と入力ポート、及び出力ポートで接続され、当該入力ポート、及び出力ポート間での前記ネットリスト内の各論理素子における入力ピン、及び出力ピンの接続状態を示すピン情報を生成するピン情報生成手段、
    当該ピン情報生成手段が生成したピン情報について、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、前記機能ブロック間の論理素子における冗長な論理素子を検索する冗長検索手段、
    当該冗長検索手段が検索した前記冗長な論理素子における前記ピン情報を、前記冗長な論理素子における冗長入力パターンごとの出力パターンを示す予め登録された置換情報、反転論理素子の個数、前記論理素子の入力値、及び/又は前記論理素子の入出力関係に基づいて、等価な最小の論理素子のピン情報に更新するピン情報更新手段、
    当該ピン情報更新手段が更新したピン情報に基づいて、当該ピン情報を回路情報に変換して前記ネットリストを生成するネットリスト生成手段としてコンピュータを機能させるための冗長論理素子削除プログラム。
JP2009015756A 2009-01-27 2009-01-27 冗長論理素子削除方法、その装置、及びプログラム Withdrawn JP2010176208A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009015756A JP2010176208A (ja) 2009-01-27 2009-01-27 冗長論理素子削除方法、その装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009015756A JP2010176208A (ja) 2009-01-27 2009-01-27 冗長論理素子削除方法、その装置、及びプログラム

Publications (1)

Publication Number Publication Date
JP2010176208A true JP2010176208A (ja) 2010-08-12

Family

ID=42707160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009015756A Withdrawn JP2010176208A (ja) 2009-01-27 2009-01-27 冗長論理素子削除方法、その装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP2010176208A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113420516A (zh) * 2021-07-15 2021-09-21 北京华大九天科技股份有限公司 一种优化加载电路网表的方法
CN117454817A (zh) * 2023-12-25 2024-01-26 芯能量集成电路(上海)有限公司 一种基于fpga的工程处理方法、装置、电子设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113420516A (zh) * 2021-07-15 2021-09-21 北京华大九天科技股份有限公司 一种优化加载电路网表的方法
CN113420516B (zh) * 2021-07-15 2022-02-22 北京华大九天科技股份有限公司 一种优化加载电路网表的方法
CN117454817A (zh) * 2023-12-25 2024-01-26 芯能量集成电路(上海)有限公司 一种基于fpga的工程处理方法、装置、电子设备及存储介质
CN117454817B (zh) * 2023-12-25 2024-04-12 芯能量集成电路(上海)有限公司 一种基于fpga的工程处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US7356451B2 (en) Assertion handling for timing model extraction
Jyu et al. Statistical timing analysis of combinational logic circuits
JP5056376B2 (ja) 回路設計支援装置、回路設計支援方法および回路設計支援プログラム
US6598211B2 (en) Scaleable approach to extracting bridges from a hierarchically described VLSI layout
JP5040617B2 (ja) 回路設計支援装置、回路設計支援方法、回路設計支援プログラムおよびプリント基板の製造方法
CN101196947B (zh) 电路设计支持装置和方法
CN101720465A (zh) 通过时钟采样进行相位关系计算
CN101720464A (zh) 从仿真器状态至hdl模拟器的转换
CN101720466A (zh) 使用复制存储元件记录仿真器状态
CN110457302A (zh) 一种结构化数据智能清洗方法
CN101720467A (zh) 电路仿真的输入和延迟输入的复用
US8522182B2 (en) Generation of an end point report for a timing simulation of an integrated circuit
JP2008165751A (ja) 協調設計支援装置、協調設計支援方法、協調設計支援プログラムおよびプリント基板の製造方法
US20150234978A1 (en) Cell Internal Defect Diagnosis
JP2010176208A (ja) 冗長論理素子削除方法、その装置、及びプログラム
JP2008197920A (ja) クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法
JP3980590B2 (ja) 土地データ管理システムおよびネットワークデータ照査システム
JP2008268062A (ja) テストパターン作成及び故障検出率算出装置並びにテストパターン作成及び故障検出率算出方法
US10234502B1 (en) Circuit defect diagnosis based on sink cell fault models
CN110008252A (zh) 数据核对方法及装置
Wang et al. Dutrust: A sentiment analysis dataset for trustworthiness evaluation
JP3159165B2 (ja) 故障診断における推定論理状態管理方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体
US20230419011A1 (en) Standard Cell Differentiation using Topology and Transistor Attributes
CN115293078B (zh) 集成电路的节点改写方法、装置、电子设备及介质
US20160154056A1 (en) Circuit division method for test pattern generation and circuit division device for test pattern generation

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120403