(57)【特許請求の範囲】
【請求項１】
コンピュータのプロセッサにより特定の回路テクノロジに依存しない論理回路を特定のセルライブラリを用いた回路へ自動的に変換するテクノロジマッピング方法であって、
入力及び出力におけるインバータの有無のみが異なるパターンを類似パターンと定義して各類似パターンのグループに対して１つの代表パターンが予め決定されており、
各セルに対するパターン相互の構造の包含関係を示す包含関係テーブルを参照して、該論理回路のマッチング対象となる代表パターンを絞り込む絞り込みステップと、
該絞り込みステップで絞り込まれた代表パターンに対してのみマッチングを行うマッチングステップとを含み、
該マッチングステップは、該絞り込まれた代表パターンに対するマッチをどのように変換すれば該絞り込まれた代表パターンが属するグループ内の類似パターンに対するマッチになるかを示す変換マップを参照して、該絞り込まれた代表パターンが属するグループ内の類似パターンに対するマッチを求める、テクノロジマッピング方法。
【請求項２】
前記絞り込みステップは、マッチの求まらない代表パターンを包含する代表パターンに対するマッチングを省略する、請求項１記載のテクノロジマッピング方法。
【請求項３】
コンピュータのプロセッサに、特定の回路テクノロジに依存しない論理回路を特定のセルライブラリを用いた回路へ自動的に変換するテクノロジマッピング処理を行わせるプログラムを格納したコンピュータ読み取り可能な記憶媒体であって、該プログラムは、
入力及び出力におけるインバータの有無のみが異なるパターンを類似パターンと定義して各類似パターンのグループに対して１つの代表パターンが予め決定されており、
該コンピュータのプロセッサに、各セルに対するパターン相互の構造の包含関係を示す包含関係テーブルを参照させて、該論理回路のマッチング対象となる代表パターンを絞り込ませる絞り込み手順と、
該コンピュータのプロセッサに、該絞り込み手順で絞り込まれた代表パターンに対してのみマッチングを行わせるマッチング手順とを含み、
該マッチング手順は、該コンピュータのプロセッサに、該絞り込まれた代表パターンに対するマッチをどのように変換すれば該絞り込まれた代表パターンが属するグループ内の類似パターンに対するマッチになるかを示す変換マップを参照させて、該絞り込まれた代表パターンが属するグループ内の類似パターンに対するマッチを求めさせる、記憶媒体。
【請求項４】
前記絞り込み手順は、前記コンピュータのプロセッサに、マッチの求まらない代表パターンを包含する代表パターンに対するマッチングを省略させる、請求項３記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はテクノロジマッピング方法及び記憶媒体に係り、特に特定の回路テクノロジに依存しない論値回路を特定のセルライブラリを用いた回路へ自動的に変換するテクノロジマッピング方法及びコンピュータにそのようなテクノロジマッピング方法を用いてテクノロジマッピング処理を行わせるプログラムが格納されたコンピュータ読み取り可能な記憶媒体に関する。
【０００２】
論理回路を設計する際には、その論理的な仕様とは別に、回路面積、遅延時間や消費電力等といった様々な制約条件を考慮する必要がある。このため、論理回路を自動的に設計する論理合成処理を、回路テクノロジに依存しないテクノロジ独立な合成処理と回路テクノロジに依存したテクノロジ依存の合成処理との２つに分けて、夫々の部分目標に従って合成処理を行う方法が広く用いられている。
【０００３】
テクノロジ依存の合成処理は、テクノロジマッピングとも呼ばれ、テクノロジに依存しない論理回路を実際の回路へ変換する処理を行う。現在、セルベース設計手法と呼ばれる手法を用いるテクノロジマッピングが広く用いられている。セルベース設計手法とは、予め用意された論理素子の部品、即ち、セルを組み合わせて論理回路を構成する回路の実現方法である。
【０００４】
【従来の技術】
従来実用化されているテクノロジマッピングの技術は、Ｋｕｒｔ  Ｋｅｕｔｚｅｒ，「ＤＡＧＯＮ：Ｔｅｃｈｎｏｌｏｇｙ  Ｂｉｎｄｉｎｇ  ａｎｄ  Ｌｏｃａｌ  Ｏｐｔｉｍｉｚａｔｉｏｎ」，Ｐｒｏｃ．  ２４ｔｈ  ＡＣＭ／ＩＥＥＥＤｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ，ｐｐ．３４１〜２４７，Ｊｕｎｅ  １９８７で提案されたＤＡＧＯＮと呼ばれるアルゴリズムが基になっている。この提案されたＤＡＧＯＮなるアルゴリズムは、設計対象の回路を一旦２入力ＮＡＮＤゲートとＮＯＴゲートのような基本セルを用いた回路に変換し、ＮＡＮＤゲートとＮＯＴゲートの部分回路に対してより大きなセルを割り当てて行くことで実際の回路を生成する。
【０００５】
このＤＡＧＯＮなるアルゴリズムを用いた設計の一例について説明すると、先ずセルライブラリの各セルに対して、その論理的な機能を表す２入力ＮＡＮＤゲートとＮＯＴゲートからなるパターンを予め用意しておく。ただし、このようなセルの分解は一意に求まるものではなく、幾つかの形の異なる分解パターンが考えられる。このため、各セルの全ての分解パターンを考慮する。
【０００６】
図１及び図２は、夫々セルライブラリのセルとセルの分解パターンの一例を示す図である。図１において、（ａ）はセルＮＯＴ、（ｂ）はセルＮＡＮＤ２、（ｃ）はセルＮＡＮＤ３、（ｄ）はセルＮＡＮＤ４、（ｅ）はセルＮＡＮＤ４、（ｆ）はセルＡＯＩ２１、（ｇ）はセルＡＯＩ２２、（ｈ）はセルＡＮＤ２の分解パターンを夫々示す。又、図２において、（ａ）はセルＮＯＲ２、（ｂ）はセルＮＯＲ３、（ｃ）はセルＮＯＲ４、（ｄ）はセルＮＯＲ４、（ｅ）はセルＯＡＩ２１、（ｆ）はセルＯＡＩ２２、（ｇ）はセルＡＯＲ２の分解パターンを夫々を示す。図１では、セルＮＡＮＤ４が同図（ｄ），（ｅ）に示すように２通りの分解パターンを有する。図２では、セルＮＯＲ４が同図（ｃ），（ｄ）に示すように２通りの分解パターンを有する。
【０００７】
設計対象のテクノロジに独立な論理回路は、仮想的なＡＮＤゲート、ＯＲゲート及びＮＯＴゲートで構成されているものとすると、図３に示すように、ＡＮＤゲートは同図（ａ）に示す如く２入力ＮＡＮＤゲートとＮＯＴゲートを用いて実現できるので、ＯＲゲートも、同図（ｂ）に示す如く２入力ＮＡＮＤゲートとＮＯＴゲートを用いて実現できる。従って、初期回路を２入力ＮＡＮＤゲートとＮＯＴゲートのみからなる回路に変換することは、容易に行える。この場合も、複数の分解パターンが考えられるが、全ての分解パターンを考慮することは困難であるため、通常は１つの分解パターンのみを考える。
【０００８】
図４は、上記の如く分解された初期回路の一例を示す。同図に示す初期回路に対して、図５に示すように部分回路を割り当てることができる。図５では、太い実線で囲まれた部分回路の夫々が、１つのセルに割り当てられる。しかし、このような部分回路のセルに対する割り当ては一意に求まるものではなく、図４に示す初期回路に対しては、例えば図６に示すように部分回路を割り当てることもできる。図６においても、太い実線で囲まれた部分回路の夫々が、１つのセルに割り当てられる。
【０００９】
このように、部分回路のセルに対する割り当てを行う際に、回路面積、遅延時間、消費電力等の目的関数や制約条件を考慮して、最も望ましい割り当てを選択することが、テクノロジマッピング処理である。従って、テクノロジマッピング処理には、マッチング処理と、カバリング処理との２段階の処理が必要となる。マッチング処理では、初期回路の部分回路にマッチするセルを列挙する。又、カバリング処理では、マッチするセルを組み合わせて実際の回路を生成する。ここで、マッチとは、図５及び図６において、太い実線で囲まれた部分回路と、部分回路の横に記載されたセルとの組を指す。マッチング処理では、マッチが結果的に得られるか否かに拘わらず、可能なマッチを全て列挙する。
【００１０】
マッチング処理に関しては、グラフマッチングと呼ばれるアルゴリズムが、Ｒ．Ｌ．Ｒｕｄｅｌｌ，「Ｌｏｇｉｃ  Ｓｙｎｔｈｅｓｉｓ  Ｆｏｒ  ＶＬＳＩ  Ｄｅｓｉｇｎ」，ＰｈＤ  Ｔｈｅｓｉｓ，ＵＣＢ／ＥＲＬ  Ｍ８９／４９，１９８９にて提案されている。
図７は、典型的なマッチング処理を示すフローチャートである。同図中、ステップＳ１は、処理回路上で試していないノードがあるか否かを判定し、判定結果がＮＯであると処理は終了する。他方、ステップＳ１の判定結果がＹＥＳであると、ステップＳ２はノードを１つ取り出してｖとする。ステップＳ３は、試していないパターンがあるか否かを判定し、判定結果がＮＯであると処理はステップＳ１へ戻る。ステップＳ３の判定結果がＹＥＳであると、ステップＳ４は、パターンを１つ取り出してｐとする。ステップＳ５は、ノードｖにおけるパターンｐに対するマッチを求め、処理はステップＳ３へ戻る。上記グラフマッチングは、ステップＳ５の処理で用いられる。
【００１１】
従って、後述する図１７（ａ）に示す初期回路に対して図１及び図２の全てのパターンのマッチングを試す場合、従来のマッチング処理では初期回路の全ての節点１，２，３，．．．に対して全てのパターンに対するマッチングを順次行うする必要がある。
ここで、説明の便宜上、図７のマッチング処理により、図１７（ａ）に示す初期回路に対して１つのパターンのみのマッチングを調べる場合について説明する。この場合、図１７（ａ）に示す初期回路の各節点に対して図１７（ｂ）に示すパターンＯＡＩ２１がマッチするか否かを調べる。尚、図１７（ｂ）中、ａ１〜ｈ１は、節点を示すと共に入出力信号名をも示し、図１及ぶ図２における節点名とは無関係である。
【００１２】
（１）先ず、節点１を根とするマッチが存在するか否かを調べる。この場合、節点１はインバータであるが、節点ａ１は２入力ＮＡＮＤであるので、マッチは存在しない。
（２）次に、節点２を根とするマッチが存在するか否かを調べる。この場合、節点２と節点ａ１を調べると同じ２入力ＮＡＮＤなので、マッチが存在する。
【００１３】
２入力ＮＡＮＤの入力は２つあるので、まず節点３と節点ｂ１がマッチするか否かを調べる。この場合、節点３と節点ｂ１は共にインバータなので、マッチが存在する。
同様にして、節点４と節点ｃ１は共にインバータなので、マッチが存在することがわかり、節点５と節点ｄ１は共にインバータなので、マッチが存在することがわかる。
【００１４】
節点ｄ１の２つの入力ｅ１とｇ１は、夫々節点６及び節点１０とマッチし、これらの入力であるｆ１とｈ１も節点７及び節点１１とマッチする。そして、節点７及び節点１１は終端となる。
節点ａ１の残りの入力の節点ｉ１と節点１４がマッチするか否かを調べると、節点ｉ１は終端なので、無条件でマッチが存在する。
【００１５】
上記の如く、パターンＯＡＩ２１の全ての部分がマッチするので、この場合はパターン全体のマッチングが成功したことになり、終端の対応付けは節点ｆ１と節点７、節点ｈ１と節点１１、節点ｉ１と節点１４となる。
節点ａ１の入力について、節点ｂ１と節点１４という組み合わせを試すと、共にインバータなのでマッチが存在する。
【００１６】
節点ｂ１の入力について、節点ｃ１と節点１５もインバータなので、マッチが存在する。又、同様にして、節点ｄ１と節点１６のマッチも存在する。
節点ｄ１の入力ｅ１とｇ１が節点１７と節点１９とマッチし、これらの入力である節点ｆ１と節点ｈ１も節点１８及び節点２０とマッチする。そして、節点１８及び節点２０は終端となる。
【００１７】
節点ａ１の残りの入力の節点ｉ１と節点３がマッチするので、節点３も終端となる。
このようにして、もう１つのマッチングが求まり、終端の対応付けは節点ｆ１と節点１８、節点ｈ１と節点２０、節点ｉ１と節点３となる。
（３）節点３及び節点４はインバータなので、節点ａ１とはマッチが存在しない。
【００１８】
（４）節点５と節点ａ１のマッチを試すと、この場合、節点５と節点ａ１のマッチは存在する。
節点５の入力と節点ａ１の入力のマッチを調べると、先ず、節点６と節点ｂ１は共にインバータなので、マッチは存在する。
ところが、節点７と節点ｃ１のマッチは存在しないので、結果としては節点６と節点ｂ１のマッチは存在しない。
【００１９】
節点６と節点ｉ１のマッチを調べると、節点６と節点ｉ１のマッチは存在する。
残りの入力の節点１０と節点ｂ１のマッチを調べると、共にインバータなので、マッチは存在する。
ところが、節点１１と節点ｃ１のマッチは存在しないので、結果としては節点１０と節点ｂ１のマッチは存在しない。
【００２０】
節点５の入力のマッチが全て存在しないので、節点５と節点ａ１のマッチも存在しない。
以上のようにして、初期回路の全ての節点に対してパターンマッチングを行う。尚、実際には、初期回路に対して１つのパターンのみのマッチングを調べるのではなく、初期回路に対して複数のパターンのマッチングを調べる。
【００２１】
マッチング処理の次段のカバリング処理では、マッチング処理で得られたマッチを部品として、あたかもタイルを敷き詰めるように回路全体をカバーするマッチの組み合わせを生成する。この際に、回路面積を最小にするカバリングアルゴリズム、遅延時間を最短にするアルゴリズム等は、上記Ｒ．Ｌ．Ｒｕｄｅｌｌ，「Ｌｏｇｉｃ  Ｓｙｎｔｈｅｓｉｓ  Ｆｏｒ  ＶＬＳＩ  Ｄｅｓｉｇｎ」，ＰｈＤ  Ｔｈｅｓｉｓ，ＵＣＢ／ＥＲＬ  Ｍ８９／４９，１９８９にて提案されている。
【００２２】
テクノロジマッピング処理を行う実際のプログラムでは、上記の如きマッチング処理とカバリング処理とは、明確に切り離されているわけではなく、マッチング処理でマッチを求めながらカバリング処理を行うが、ここでは説明の便宜上、マッチング処理に注目しているので、マッチング処理とカバリング処理とを分離して説明する。
【００２３】
他方、インバータチェーンヒューリスティックと呼ばれる技術が提案されている。このインバータチェーンヒューリスティックとは、初期回路に対して、インバータの無い結線に２つのインバータを直列に挿入するもので、図８に示すように、他の技術では得ることのできなかったマッチを見つけることができるので、良い回路を合成できる可能性がある。同図中、太い実線で囲まれていないインバータの組は、最終的な回路からは取り除かれる。
【００２４】
【発明が解決しようとする課題】
上記の如く、１つのセルに対して複数のパターンが必要となる場合が存在し、更に、セルの入力信号数が増加するに従って必要とされるパターン数も増加する傾向がある。最悪の場合では、セルの入力信号数の指数乗に比例した数のパターンが必要となる。このような場合、使用するセルライブラリのセルが複雑、且つ、大規模になってしまい、全てのパターンを列挙して、全てのパターンに対してマッチを検索するには多大な時間が必要となり、実用的ではないという問題があった。
【００２５】
又、最近では、セルライブラリで使用可能なセル数自体も増加する傾向にあり、従来の単純なマッチングアルゴリズムを用いたのでは、必要となるメモリ容量及び計算時間が共に増加してしまい、処理速度の低下を招いたり、或いは、処理が不可能となってしまうという問題もあった。
そこで、本発明は、大規模化及び複雑化する傾向にあるセルライブラリに対して効率良くマッチング処理を行うことのできるテクノロジマッピング方法及び記憶媒体を提供することを目的とする。
【００２６】
【課題を解決するための手段】
上記の課題は、コンピュータを用いて、特定の回路テクノロジに依存しない論理回路を特定のセルライブラリを用いた回路へ自動的に変換するテクノロジマッピング方法であって、各セルに対するパターン相互の構造の包含関係に基づいてマッチング対象を絞り込む絞り込みステップを含むテクノロジマッピング方法によって達成できる。
【００２７】
前記絞り込みステップは、マッチの求まらないパターンを包含するパターンに対するマッチングを省略しても良い。
前記絞り込みステップは、入力及び出力におけるインバータの有無のみが異なるパターンを類似パターンと定義して各類似パターンのグループに対して１つの代表パターンを決定し、テクノロジマッピング方法は、前記代表パターンに対してのみマッチングを行うマッチングステップを更に含んでも良い。
【００２８】
前記マッチングステップは、前記代表パターンに対するマッチをどのように変換すれば該代表パターンが属するグループ内の類似パターンに対するマッチになるかを示す変換マップに基づいて、該グループ内の類似パターンに対するマッチを求めても良い。
上記の課題は、コンピュータに、特定の回路テクノロジに依存しない論理回路を特定のセルライブラリを用いた回路へ自動的に変換するテクノロジマッピング処理を行わせるプログラムを格納したコンピュータ読み取り可能な記憶媒体であって、コンピュータに、各セルに対するパターン相互の構造の包含関係に基づいてマッチング対象を絞り込ませる絞り込み手段を備えた記憶媒体によっても達成できる。
【００２９】
前記絞り込み手段は、前記コンピュータに、マッチの求まらないパターンを包含するパターンに対するマッチングを省略させても良い。
前記絞り込み手段は、前記コンピュータに、入力及び出力におけるインバータの有無のみが異なるパターンを類似パターンと定義して各類似パターンのグループに対して１つの代表パターンを決定させ、記憶媒体は、該コンピュータに、前記代表パターンに対してのみマッチングを行わせるマッチング手段を更に備えても良い。
【００３０】
前記マッチング手段は、前記コンピュータに、前記代表パターンに対するマッチをどのように変換すれば該代表パターンが属するグループ内の類似パターンに対するマッチになるかを示す変換マップに基づいて、該グループ内の類似パターンに対するマッチを求めさせても良い。
本発明によれば、大規模化及び複雑化する傾向にあるセルライブラリに対して効率良くマッチング処理を行うことが可能となる。
【００３１】
【発明の実施の形態】
本発明では、各セルに対するパターン数の増加に対して計算時間が増加しないように、類似パターンに対するマッチングを同時に行う処理と、パターン相互の構造の包含関係を考慮してマッチング対象のパターンを絞り込む処理とを用いて、マッチングの回数自体を減らすようにしている。
【００３２】
先ず、類似パターンの一括マッチングについて説明する。本明細書では、パターンの入力側及び出力側にインバータがあるかないかだけが異なるパターンを、類似パターンと呼ぶ。例えば、図１（ｂ）に示すＮＡＮＤ２と、図１（ｈ）、図２（ａ）及び図２（ｇ）に示すＡＮＤ２、ＮＯＲ２及びＯＲ２が類似パターンとなる。類似パターン同士の違いは、入力側及び出力側のインバータの有無だけであるため、これらの類似パターンのマッチングの結果の違いも同様にして、境界部分のインバータの有無だけとなる。
【００３３】
上記インバータチェーンヒューリスティックを用いた場合、どのような場合であってもマッチの境界部分の前後に必ず１つはインバータが含まれることになる。そこで、類似パターンのうち、１つの類似パターンに対してマッチが求まれば、残りの類似パターンに対しても必ずマッチが求まることになる。
図９は、ＮＡＮＤ２に対するマッチ及びその類似パターンに対するマッチを示す図である。同図（ａ）では、類似パターンはＯＲ２及び出力側の１つのインバータからなる。又、同図（ｂ）では、類似パターンはＮＯＲ２からなるか、或いは、ＡＮＤ２及び入力側の２つのインバータからなる。
【００３４】
このように、類似パターンに対するマッチは、元のパターンに対するマッチの境界部分のインバータを含めたり外したりすることで求めることができるので、全く独立にマッチング処理を行う場合に比べて効率が良い。このような処理を行うために、類似パターンの中の代表パターンを１つ決めて、残りの類似パターンに対しては代表パターンに対する変換マップを用意する。変換マップには、代表パターンに対するマッチをどのように変換すれば自分の類似パターンに対するマッチになるかが記述されている。例えば、ＮＡＮＤ２、ＡＮＤ２、ＮＯＲ２及びＯＲ２なる類似パターンの中のＮＡＮＤ２を代表パターンと定義すると、残りの類似パターンに対する変換マップは、反転（バー）を「＊」で示すと、夫々ＡＮＤ２：｛ａ→ａ，ｂ→ｂ，ｆ→＊ｆ｝、ＮＯＲ２：｛ａ→＊ａ，ｂ→＊ｂ，ｆ→＊ｆ｝、ＯＲ２：｛ａ→＊ａ，ｂ→＊ｂ，ｆ→ｆ｝となる。
【００３５】
図９に示すマッチの場合、ＮＡＮＤ２に対するマッチはａ＝３，ｂ＝４，ｆ＝５であるので、これにＡＮＤ２に対する変換マップ｛ａ→ａ，ｂ→ｂ，ｆ→＊ｆ｝を組み合わせると、ｆに対応する５の部分をその否定である６に変更すればＡＮＤ２に対するマッチのａ＝３，ｂ＝４，ｆ＝６を得ることができる。
次に、パターン相互の包含関係を利用したパターンの絞り込みについて説明する。図１に示すパターンの中で、図１（ｃ）及び図１０（ａ）に示すＮＡＮＤ３のパターンは、図１（ｄ）及び図１０（ｂ）に示すＮＡＮＤ４のパターンの出力部分に現われている。図１０（ｂ）では、ＮＡＮＤ３のパターンが現われているＮＡＮＤ４のパターンの出力部分を太い実線で囲んである。本明細書では、このように他のパターンの出力部分を含んだ部分パターンとなっているパターンを、包含されたパターンと呼ぶ。包含されたパターンに対するマッチが存在しない場合には、包含するパターンに対するマッチも存在しない。
【００３６】
そこで、この関係を利用して、任意のパターンに対するマッチが存在しないと、この任意のパターンを包含するパターンに対するマッチも存在しないことが判るので、この任意のパターンを包含するパターンに対するマッチングは試さないようにすることで、マッチング処理を行う回数を効果的に削減できる。このような処理を行うために、包含関係グラフを作成する。包含関係グラフは、各パターンに対応するノードと、包含関係にあるノード間に包含されているノード向きの枝とを有する。
【００３７】
図１１は、図１及び図２に示すセルの包含関係グラフの一部を示す図である。図１１において、丸印はノードを示し、矢印は枝を示す。マッチングを行う際には、先ずこのような包含関係グラフ上の全てのノードに対してマークを付けておき、マッチが求まるとそのマークを消すという処理を行う。従って、あるノードが指している、即ち、包含している所定のノードにマークが付いたままであると、この所定のノード、即ち、パターンに対してはマッチが存在しなかったか、或いは、未だにマッチングが行われていないことを示す。そこで、マークが付いているノードに対応するパターンに対してはマッチングを行わないという規則を定めておけば、マッチが存在しないパターンを包含するパターンに対するマッチングは行われず、マッチング処理を高速化することができる。
【００３８】
以下、図１２以降と共に、本発明の実施例を説明する。
【００３９】
【実施例】
図１２は、本発明になるテクノロジマッピング方法の一実施例を実現するコンピュータシステムを示す斜視図である。同図に示すコンピュータシステムは、パーソナルコンピュータ等の汎用コンピュータシステムで構成されている。
図１２に示すコンピュータシステム１００は、ＣＰＵやディスクドライブ等を内蔵した本体部１０１、本体部１０１からの指示により表示画面１０２ａ上に画像を表示するディスプレイ１０２、コンピュータシステム１００に種々の情報を入力するためのキーボード１０３、ディスプレイ１０２の表示画面１０２ａ上の任意の位置を指定するマウス１０４、外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードするモデム１０５等を備えている。ディスク１１０等の可搬型記録媒体に格納されるか、モデム１０５等の通信装置を使って他のコンピュータシステムの記録媒体１０６からダウンロードされるプログラムは、コンピュータシステム１００に入力されてコンパイルされる。このプログラムは、コンピュータシステム１００のＣＰＵに本実施例のテクノロジマッピング方法によりデータを処理させるプログラムを含む。
【００４０】
本発明になる記憶媒体の一実施例は、上記プログラムを格納したディスク１１０等のコンピュータ読み取り可能な記録媒体である。尚、記録媒体は、ＩＣカードメモリ、フロッピィディスク、光磁気ディスク、ＣＤ−ＲＯＭ、各種半導体メモリデバイス等の取り外し可能な記録媒体に限定されず、モデムやＬＡＮ等の通信装置や通信手段を介して接続されるコンピュータシステムでアクセス可能な記録媒体を含む。
【００４１】
図１３は、コンピュータシステム１００の本体部１０１内の要部の構成を示すブロック図である。同図中、本体部１０１は、大略バス２００により接続されたＣＰＵ２０１と、ＲＡＭやＲＯＭ等からなるメモリ部２０２と、ディスク１１０用のディスクドライブ２０３と、ハードディスクドライブ２０４とからなる。
尚、コンピュータシステム１００の構成は、図１２及び図１３に示す構成に限定されるものではなく、代わりに各種周知の構成を使用しても良い。
【００４２】
図１４は、テクノロジマッピング方法の一実施例を採用するＣＰＵ２０１のテクノロジマッピング処理を説明するフローチャートである。記憶媒体の一実施例は、ＣＰＵ２０１に図１４に示すテクノロジマッピング処理を行わせるプログラムを格納したディスク１１０等の記録媒体である。
図１４において、ステップＳ１１は、初期回路の包含関係グラフ上で試していないノードがあるか否かを判定し、判定結果がＮＯであると処理は終了する。他方、ステップＳ１１の判定結果がＹＥＳであると、ステップＳ１２は、包含関係グラフからノードを１つ取り出してｖとする。ステップＳ１３は、全ての代表パターンにマークを付ける。ステップＳ１４は、包含関係グラフに枝が有り、且つ、マークの消されたパターンに対する枝のみを有する代表パターンがあるか否かを判定する。ステップＳ１４の判定結果がＮＯであると、処理は上記ステップＳ１１へ戻る。
【００４３】
ステップＳ１４の判定結果がＹＥＳであると、マークの消されたパターンに対する枝のみを有する代表パターンを１つ取り出してｐとする。ステップＳ１６は、ノードｖにおけるパターンｐに対するマッチを求め、ステップＳ１７は、マッチがあったか否かを判定する。ステップＳ１７の判定結果がＮＯであると、処理はステップＳ１４へ戻る。他方、ステップＳ１７の判定結果がＹＥＳであると、ステップＳ１８は、変換マップを用いて類似パターンに対するマッチを求める。ステップＳ１９は、パターンｐのマークを消し、処理はステップＳ１４へ戻る。
【００４４】
次に、図１及び図２に示すセルライブラリのパターンに対して本実施例を適用する場合のデータ構造を説明する。
先ず、各々のパターンは、入力及び出力の反転で一致する類似パターンのグループに分類する。ここでは、各々のパターンを、以下の５グループの類似パターンに分類する。
・｛ＮＡＮＤ２，ＮＯＲ２，ＡＮＤ２，ＯＲ２｝
・｛ＮＡＮＤ３，ＮＯＲ３｝
・｛ＮＡＮＤ４，ＮＯＲ４｝
・｛ＯＡＩ２１，ＡＯＩ２１｝
・｛ＯＡＩ２２，ＡＯＩ２２｝
上記５グループの類似パターン中、各グループの先頭にあるパターンをそのグループの代表パターンとする。例えば、グループ｛ＮＡＮＤ２，ＮＯＲ２，ＡＮＤ２，ＯＲ２｝の場合、先頭のＮＡＮＤ２をこのグループの代表パターンとする。又、各グループにおいて、先頭の代表パターン以外の残りのパターンに対しては、代表パターン名と代表パターンに変換するための手順を記録した類似パターンの変換マップを作成しておく。図１５は、類似パターンの変換マップの一実施例を示す図である。
【００４５】
次に、各代表パターンに対して包含関係を調べて、包含しているパターン及び包含されているパターンを求め、代表パターン間の包含関係を示す包含関係テーブルを作成しておく。図１６は、包含関係テーブルの一実施例を示す図である。図１４に示すテクノロジマッピング処理では、ステップＳ１８においてマッチを求める際に図１５に示す如き類似パターンの変換マップ及び図１６に示す如き包含関係テーブルを用いる。
【００４６】
図１７（ａ）に示す初期回路に対して図１及び図２の全てのパターンのマッチングを試す場合、従来のマッチング処理では初期回路の全ての節点１，２，３，．．．に対して全てのパターンに対するマッチングを順次行う必要があり、図１７（ａ）に示す初期回路では節点数が１２でパターン数が１４であるため、全部で１６８回のパターンマッチングを行う必要がある。これに対し、本実施例では、図１４に示す如きテクノロジマッピング処理を行うため、より少ない回数のパターンマッチングで従来と全く同じマッチング結果を得ることができる。
【００４７】
ここで、説明の便宜上、本実施例において図１４に示すテクノロジマッピング処理により、図１７（ａ）に示す初期回路に対してパターンマッチングを調べる場合について説明する。
先ず、初期回路の節点１に対するマッチングを求める。
代表パターンＮＡＮＤ２，ＮＡＮＤ３，ＮＡＮＤ４，ＯＡＩ２１，ＯＡＩ２２にマークを付ける（ステップＳ１３）。
【００４８】
包含しているパターンがないか、即ち、包含関係グラフに枝が有り、且つ、マークの消されたパターンに対する枝のみを有する代表パターンがあるか否かを判定する（ステップＳ１４）。
この場合、ＮＡＮＤ２が、包含関係グラフに枝が有り、且つ、マークの消されたパターンに対する枝のみを有する代表パターンに該当する（ステップＳ１５）。
【００４９】
節点１に対するＮＡＮＤ２のマッチングを求めるが、マッチは存在しない（ステップＳ１７）。
この場合、該当するパターンはＮＡＮＤ２以外にはないので、節点１に対するマッチングは終了する。
次に、初期回路の節点２に対するマッチングを求める。
【００５０】
代表パターンＮＡＮＤ２，ＮＡＮＤ３，ＮＡＮＤ４，ＡＯＩ２１，ＡＯＩ２２にマークを付ける（ステップＳ１３）。
包含しているパターンがないか、即ち、包含関係グラフに枝が有り、且つ、マークの消されたパターンに対する枝のみを有する代表パターンがあるか否かを判定する（ステップＳ１４）。
【００５１】
この場合、ＮＡＮＤ２が、包含関係グラフに枝が有り、且つ、マークの消されたパターンに対する枝のみを有する代表パターンに該当する（ステップＳ１５）。
節点２に対するＮＡＮＤ２のマッチングを求め、マッチが存在する（ステップＳ１７）。つまり、節点２と節点ｆ１、節点３と節点ａ１、節点１４と節点ｂ１がマッチする。
【００５２】
ＮＡＮＤ２の類似パターンに対するマッチングを変換マップを用いて生成する（ステップＳ１８）。具体的には、ＮＯＲ２のマッチングを求め、節点ａ１，ｂ１，ｆ１がいずれも否定されているので、元のマッチにインバータを含めたものを新たなマッチとし、節点１と節点ｆ１、節点４と節点ａ１、節点１５と節点ｂ１が新たなマッチとなる。同様にして、ＡＮＤ２のマッチングを生成することで、節点１と節点ｆ１、節点３と節点ａ１、節点１４と節点ｂ１が新たなマッチとなる。更に、ＯＲ２のマッチングを生成することで、節点２と節点ｆ１、節点４と節点ａ１、節点１５と節点ｂ１が新たなマッチとなる。
【００５３】
ＮＡＮＤ２のマークを消す（ステップＳ１９）。
ＮＡＮＤ２のマークが消えたので、ＮＡＮＤ２のみを包含しているＮＡＮＤ３及びＯＡＩ２１が処理対象のパターンとなる（ステップＳ１４）。
先ず、ＮＡＮＤ３を取り出して（ステップＳ１５）、節点２に対するＮＡＮＤ３のマッチングを求める（ステップＳ１６）。この場合、節点２に対するＮＡＮＤ３のマッチングは存在しない（ステップＳ１７）。
【００５４】
次に、ＯＡＩ２１を取り出して（ステップＳ１５）、節点２に対するＯＡＩ２１のマッチングを求める（ステップＳ１６）。この場合、節点２に対するＯＡＩ２１のマッチングは存在する。尚、図２（ｅ）に示すパターンＯＡＩ２１では、内部のインバータチェーンを省略しているが、実際には図１７（ｂ）に示すようになっている。図１７（ｂ）中、ａ１〜ｈ１は、節点を示すと共に入出力信号名としても使用するものとする。従って、節点７と節点ａ１、節点１１と節点ｂ１、節点１４と節点ｃ１、節点２と節点ｆ１というマッチングと、節点１８と節点ａ１、節点２０と節点ｂ１、節点３と節点ｃ１、節点２と節点ｆ１というマッチングとが得られる（ステップＳ１７）。
【００５５】
次に、ＯＡＩ２１の類似パターンに対するマッチングを求める（ステップＳ１８）。具体的には、ＡＯＩ２１は全ての極性を判定すれば良いので、節点６と節点ａ１、節点１０と節点ｂ１、節点１４と節点ｃ１、節点１と節点ｆ１というマッチングと、節点１７と節点ａ１、節点１９と節点ｂ１、節点４と節点ｃ１、節点１と節点ｆ１というマッチングとが得られる。
【００５６】
ＯＡＩ２１のマークを消す（ステップＳ１９）。
ＯＡＩ２１のマークが消えると、今度はＯＡＩ２２が処理の対象となる。
節点２に対するＯＡＩ２２のマッチングを求める（ステップＳ１６）。この場合、節点７と節点ａ１、節点１１と節点ｂ１、節点１８と節点ｃ１、節点２０と節点ｄ１、節点２と節点ｆ１というマッチングが得られる。尚、節点１８と節点ａ１、節点２０と節点ｂ１、節点７と節点ｃ１、節点１１と節点ｄ１、節点２と節点ｆ１というマッチングも存在するが、全く同じマッチであるので省略する。
【００５７】
次に、類似パターンに対するマッチングを求める（ステップＳ１８）。具体的には、ＡＯＩ２２は全ての極性を判定すれば良いので、節点６と節点ａ１、節点１０と節点ｂ１、節点１７と節点ｃ１、節点１９と節点ｄ１、節点１と節点ｆ１というマッチングが得られる。
ＯＡＩ２２のマークを消す（ステップＳ１９）。
【００５８】
ＯＡＩ２２のマークが消えると、処理対象のパターンはもう存在しないので、節点２に対するマッチングが終了する。
このようにして、テクノロジマッピング処理が進み、節点２の場合、ＮＡＮＤ３がマッチしないので、ＮＡＮＤ４のマッチングは試されない。同様に、節点５に対するマッチングの場合、ＯＡＩ２１はマッチしないので、ＯＡＩ２２のマッチングは試されない。従って、本実施例では、マッチングを行う以前に、マッチングの求まる可能性のないことを判断し、無駄なマッチングを回避している。
【００５９】
本発明者は、上記実施例及び上記従来例を４種類のセルライブラリに対して用い、２入力ＮＡＮＤノードに分解された状態で１０９９０ゲートの論理回路に対してマッチング処理を実行する実験を行ったところ、図１８に示す結果が得られた。
セルライブラリＡ〜Ｄについてもそうであるように、セルライブラリによってパターン数と代表パターン数の比が異なるものの、本実施例によると、従来例に比べてマッチング処理の処理時間が約数倍から１５倍程度高速化できることが確認された。又、このマッチング処理の高速化の傾向は、セルライブラリのパターン数が増加するに従ってより顕著に現われ、本発明が特に大規模なセルライブラリに対して非常に有効であることも確認できた。
【００６０】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【００６１】
【発明の効果】
本発明によれば、大規模化及び複雑化する傾向にあるセルライブラリに対して効率良くマッチング処理を行うことが可能なテクノロジマッピング方法及び記憶媒体を実現できる。
【図面の簡単な説明】
【図１】セルライブラリのセルとセルの分解パターンの一例を示す図である。
【図２】セルライブラリのセルとセルの分解パターンの一例を示す図である。
【図３】ＡＮＤゲート及びＯＲゲートの分解を説明する図である。
【図４】分解された初期回路の一例を示す図である。
【図５】図４に示す初期回路に対して部分回路を割り当てる一例を説明する図である。
【図６】図４に示す初期回路に対して部分回路を割り当てる一例を説明する図である。
【図７】典型的なマッチング処理を示すフローチャートである。
【図８】インバータチェーンヒューリスティックによりマッチを見つける場合を説明する図である。
【図９】ＮＡＮＤ２に対するマッチ及びその類似パターンに対するマッチを示す図である。
【図１０】パターン相互の包含関係を利用したパターンの絞り込みについて説明する図である。
【図１１】図１及び図２に示すセルの包含関係グラフの一部を示す図である。
【図１２】本発明になるテクノロジマッピング方法の一実施例を実現するコンピュータシステムを示す斜視図である。
【図１３】コンピュータシステムの本体部内の要部の構成を示すブロック図である。
【図１４】テクノロジマッピング方法の一実施例を採用するＣＰＵのテクノロジマッピング処理を説明するフローチャートである。
【図１５】類似パターンの変換マップの一実施例を示す図である。
【図１６】包含関係テーブルの一実施例を示す図である。
【図１７】初期回路に対してパターンマッチングを調べる場合を説明する図である。
【図１８】マッチング処理の実験結果を示す図である。
【符号の説明】
１００      コンピュータシステム
１０１      本体部
１１０      ディスク
２０１      ＣＰＵ
２０２      メモリ部
【図１】
0003949286.tif 000002
【図２】
0003949286.tif 000003
【図３】
0003949286.tif 000004
【図４】
0003949286.tif 000005
【図５】
0003949286.tif 000006
【図６】
0003949286.tif 000007
【図７】
0003949286.tif 000008
【図８】
0003949286.tif 000009
【図９】
0003949286.tif 000010
【図１０】
0003949286.tif 000011
【図１１】
0003949286.tif 000012
【図１２】
0003949286.tif 000013
【図１３】
0003949286.tif 000014
【図１４】
0003949286.tif 000015
【図１５】
0003949286.tif 000016
【図１６】
0003949286.tif 000017
【図１７】
0003949286.tif 000018
【図１８】
0003949286.tif 000019