(57)【要約】【課題】テスト用信号を供給するために信号パスにセレクタを挿入する際に、必要最小限の数のセレクタを挿入することが可能なセレクタ挿入方法を提供する。【解決手段】セレクタ挿入方法は、第１の信号を受け取る第１のフリップフロップを選択し、選択された第１のフリップフロップから後方トレースして第１の信号の供給元である第１の回路要素を特定し、第１の回路要素が第１の信号を出力する出力端子の直後にセレクタを挿入し、セレクタにより第１の信号と第２の信号との何れかを選択可能とし、セレクタの出力端子から前方トレースして第１の信号の供給先である第１のフリップフロップ以外の第２の回路要素を特定し、第２の回路要素が第１の信号を受け取る第２のフリップフロップでない場合には第２の回路要素が第１の信号を受け取る入力端子に繋がる信号経路の接続元をセレクタの出力端子から第１の回路要素の出力端子に繋ぎ替える。【選択図】図３
2010055308.tif 000002
【特許請求の範囲】
【請求項１】
設計対象の回路を表現するデータ上において、第１の信号を第１の入力端子に受け取る第１のフリップフロップを選択し、
前記選択された第１のフリップフロップの前記第１の入力端子から後方トレースすることにより前記第１の信号の供給元である第１の回路要素を特定し、
前記第１の回路要素が前記第１の信号を出力する出力端子の直後にセレクタを挿入し、
前記セレクタにより前記第１の信号と第２の信号との何れかを選択可能とし、
前記セレクタの出力端子から前方トレースすることにより前記第１の信号の供給先である前記第１のフリップフロップ以外の第２の回路要素を特定し、
前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップでない場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子から前記第１の回路要素の出力端子に繋ぎ替える
各段階を計算機により実行することを特徴とする設計データに対するセレクタ挿入方法。
【請求項２】
前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップである場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子のままとすることを特徴とする請求項１記載のセレクタ挿入方法。
【請求項３】
前記第２のフリップフロップをトレース済みとして扱い、前記第２のフリップフロップの前記第１の入力端子に対しては後方トレースを実行しないことを特徴とする請求項２記載のセレクタ挿入方法。
【請求項４】
前記後方トレース及び前記前方トレースにおいては、入力論理値をそのまま出力論理値として出力するバッファを無視して通過することを特徴とする請求項１乃至４のいずれか一項記載のセレクタ挿入方法。
【請求項５】
前記第１の回路要素は論理ゲート、フリップフロップ、及び外部端子の何れかであることを特徴とする請求項１乃至４のいずれか一項記載のセレクタ挿入方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の開示は、一般に計算機利用設計に関し、詳しくはスキャン方式においてテスト用信号を供給するための回路設計に関する。
【背景技術】
【０００２】
半導体集積回路の設計においては、出荷テスト時での故障検出を容易とするために「テスト設計」が行われる。この「テスト設計」はＤＦＴ（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ：テスト容易化設計）とも呼ばれ、半導体集積回路の出荷テストにおいて、製造された半導体集積回路の歩留まりを向上するための設計手法である。
【０００３】
テスト方式の一つであるスキャン方式は、複数のフリップフロップを縦続接続して構成したスキャンパスを用いて、内部回路の試験を行う方式である。このスキャン方式では、半導体集積回路を構成する各フリップフロップに、スキャン入力端子とスキャン出力端子とが設けられている。あるフリップフロップのスキャン出力端子は別のフリップフロップのスキャン入力端子に結合され、複数のフリップフロップのカスケード接続によりフリップフロップのチェーン（スキャンパス）を構成している。テスト動作時には、外部からのスキャン有効を指示する値の印加に応じて、スキャンパスの各スキャンフリップフロップが、クロック信号に同期してスキャン入力端子からの入力データを格納し、スキャン出力端子から格納データを出力するよう動作する。
【０００４】
スキャン方式を適用した半導体集積回路では、通常動作で使用するクロックとは別にテスト用クロックを設け、テスト時にはテスト用クロックにより各フリップフロップを動作させる。即ち、スキャンテスト時には、各フリップフロップに常時クロックが供給される状態とする。これを実現するために、半導体集積回路を設計する際に、通常動作時用の通常クロックとテスト動作時用のテストクロックとを切り換えるセレクタをクロック経路に挿入する。テスト時には、このセレクタでテストクロックを選択することにより、各フリップフロップをテスト用クロックで直接に駆動することができる。
【０００５】
従来のセレクタ挿入方式としては、特許文献１に開示されるものがある。この方式では、クロック端子から入力ゲートを検索するステップと、ゲートの出力側にセレクタを挿入するステップと、ゲートの入力側にダミーゲートを挿入するステップと、ダミーゲートをセレクタに置き換えるステップを用いる。検索されたゲート種類によってセレクタを挿入する処理、又はダミーゲートを挿入する処理、又はダミーゲートをセレクタに置き換える処理の何れかを行うことにより、回路全体にセレクタを挿入する。
【０００６】
上記のセレクタ挿入方式では、セレクタ挿入の際、冗長なセレクタを挿入してしまう場合がある。これについて以下に説明する。
【０００７】
図１は、セレクタ挿入前のクロックパスの構成の一例を示す図である。半導体集積回路は各種論理ゲート及びフリップフロップ等の回路要素で構成されるが、図１のフリップフロップ１０−１乃至１０−８は、半導体集積回路を構成する回路要素中のフリップフロップに相当する。フリップフロップ１０−１乃至１０−８の各クロック入力端には、クロックパスが接続されている。このクロックパスは、システムクロックポート１１に外部から入力されるクロック信号を、各フリップフロップ１０−１乃至１０−８のクロック入力端に供給する。クロックパスの途中には、論理ゲート（この例ではＡＮＤゲート）１２及び１３が挿入されている。これらの論理ゲートは、例えばゲーテッドクロック方式のために用いられる。ゲーテッドクロック方式では、フリップフロップが一時的に状態遷移をしない動作条件の場合には、フリップフロップへのクロック信号入力を停止することにより、フリップフロップのデータ取り込み動作自体を行わないようにする。このようにクロック信号を制御して、クロック信号に同期したデータ取り込み動作を停止させることにより、無駄な電力消費を無くすことができる。
【０００８】
図２は、図１のクロックパスに対して前記のセレクタ挿入方式によりセレクタを挿入した場合のクロックパスの構成を示す図である。セレクタ１４−１乃至１４−６がクロックパスに挿入されている。各セレクタ１４−１乃至１４−６には、システムクロックポート１１からの通常クロック信号と、スキャンクロックポート１５からのテスト用クロック信号（スキャンクロック信号）とが入力される。図示されない制御信号に応じて、各セレクタ１４−１乃至１４−６は、通常動作時には通常クロック信号を選択して出力し、テスト動作時にはテスト用クロック信号を選択して出力する。
【０００９】
図２に示されるクロックパスの構成では、論理ゲート１２の先に複数のフリップフロップ１０−２乃至１０−５が接続されている。この場合、論理ゲート１２の出力端の直後にセレクタを設ければ、セレクタの個数は１つで済む。しかし図２の構成では、複数のフリップフロップ１０−２乃至１０−５に対応して４つのセレクタ１４−２乃至１４−５が挿入されてしまう。即ち、本来１つで済むセレクタが、接続されているフリップフロップの個数分挿入されてしまい、無駄な回路構成となってしまう。接続されているフリップフロップの数が多ければ多いほど無駄な回路の増大につながり、大規模集積回路の集積度を考えた場合に大きな問題となる。
【特許文献１】特開平６−２０８６０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
以上を鑑みると、テスト用信号を供給するために信号パスにセレクタを挿入する際に、無駄なセレクタを挿入せず必要最小限の数のセレクタを挿入することが可能なセレクタ挿入方法が望まれる。
【課題を解決するための手段】
【００１１】
セレクタ挿入方法は、設計対象の回路を表現するデータ上において、第１の信号を第１の入力端子に受け取る第１のフリップフロップを選択し、前記選択された第１のフリップフロップの前記第１の入力端子から後方トレースすることにより前記第１の信号の供給元である第１の回路要素を特定し、前記第１の回路要素が前記第１の信号を出力する出力端子の直後にセレクタを挿入し、前記セレクタにより前記第１の信号と第２の信号との何れかを選択可能とし、前記セレクタの出力端子から前方トレースすることにより前記第１の信号の供給先である前記第１のフリップフロップ以外の第２の回路要素を特定し、前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップでない場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子から前記第１の回路要素の出力端子に繋ぎ替える各段階を計算機により実行することを特徴とする。
【００１２】
セレクタ挿入装置は、設計対象の回路を表現する回路データと、前記回路データ上において前記回路にセレクタを挿入する処理を実行するプログラムとを格納するメモリと、前記メモリに格納された前記プログラムを実行する演算処理ユニットとを含み、前記プログラムを実行することにより該演算処理ユニットは、前記回路データ上において、第１の信号を第１の入力端子に受け取る第１のフリップフロップを選択し、前記選択された第１のフリップフロップの前記第１の入力端子から後方トレースすることにより前記第１の信号の供給元である第１の回路要素を特定し、前記第１の回路要素が前記第１の信号を出力する出力端子の直後にセレクタを挿入し、前記セレクタにより前記第１の信号と第２の信号との何れかを選択可能とし、前記セレクタの出力端子から前方トレースすることにより前記第１の信号の供給先である前記第１のフリップフロップ以外の第２の回路要素を特定し、前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップでない場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子から前記第１の回路要素の出力端子に繋ぎ替える各段階を実行することを特徴とする。
【００１３】
セレクタ挿入プログラムは、設計対象の回路を表現する回路データ上において、第１の信号を第１の入力端子に受け取る第１のフリップフロップを選択し、前記選択された第１のフリップフロップの前記第１の入力端子から後方トレースすることにより前記第１の信号の供給元である第１の回路要素を特定し、前記第１の回路要素が前記第１の信号を出力する出力端子の直後にセレクタを挿入し、前記セレクタにより前記第１の信号と第２の信号との何れかを選択可能とし、前記セレクタの出力端子から前方トレースすることにより前記第１の信号の供給先である前記第１のフリップフロップ以外の第２の回路要素を特定し、前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップでない場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子から前記第１の回路要素の出力端子に繋ぎ替える各段階を計算機に実行させることにより、前記回路データ上の前記回路にセレクタを挿入する。
【発明の効果】
【００１４】
少なくとも１つの実施例によれば、セレクタ挿入の際に冗長なセレクタを挿入せず必要最小限の数のセレクタを挿入することができる。一般的な大規模集積回路において、論理ゲートの先には通常１０個〜１００個程度のフリップフロップが接続されている。従って、挿入されるセレクタの個数を従来の1／１０〜１／１００程度に削減して、その分集積回路の集積度を上げることが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１６】
集積回路の設計においては、一般に、まずＲＴＬ（Register Transfer Level：レジスタ転送レベル）の抽象度でハードウェアを記述する。このレベルでは、レジスタとその間の論理機能及び信号伝達として、所望の論理を表現する。ＲＴＬ記述ができると、論理合成ツールにより、ＲＴＬ記述からゲートレベル記述を生成する。このレベルでは、各種論理ゲートとその間の接続により所望の回路図を表現する。以下に説明するセレクタ挿入方法は、論理合成後であり物理設計（配置・配線によるレイアウト設計）前の段階において、ゲートレベル記述のデータ（ネットリスト記述）に対して実行すればよい。
【００１７】
図３は、セレクタ挿入方法の実施例の一例を示す図である。また図４は、図３のセレクタ挿入方法に従ってセレクタが挿入されるクロックパスの構成の一例を示す図である。フリップフロップ２０−１乃至２０−８は、半導体集積回路を構成する回路要素中のフリップフロップに相当する。図４では図示の便宜上、８つのフリップフロップのみが示されるが、フリップフロップの数は任意であり、実際の半導体集積回路には膨大な数のフリップフロップが含まれる。フリップフロップ２０−１乃至２０−８の各クロック入力端には、クロックパスが接続されている。このクロックパスは、システムクロックポート２１に外部から入力されるクロック信号を、各フリップフロップ２０−１乃至２０−８のクロック入力端に供給する。クロックパスの途中には、論理ゲート（この例ではＡＮＤゲート）２２及び２３が挿入されている。
【００１８】
図３のステップＳ1で、まず設計対象の回路の中から最初にトレース処理を開始するフリップフロップを選択する。ここで選択するフリップフロップは任意である。従って例えば、トレース対象の複数のフリップフロップの中からランダムにフリップフロップを選択してよいし、また或いは所定の順番に従って順次フリップフロップを選択してもよい。図４の例では、フリップフロップ２０−２が選択される。このように、第１の信号（通常のクロック信号）を第１の入力端子（ＣＫ入力端子）に受け取る第１のフリップフロップ（２０−２）を、まずトレース処理の対象として選択する。
【００１９】
ステップＳ２で、ステップＳ１で選択したフリップフロップが既にトレース処理済みか否かを判別する。トレース処理済みの場合は、処理はステップＳ１１に進む。
【００２０】
ステップＳ３で、ステップＳ1で選択したフリップフロップのＣＫ端子から後方トレースを行い接続元の論理回路を検索する。その際、後方トレース処理においてＴｒｕｅタイプのバッファに到達した場合には、検索対象である接続元の論理回路としてはバッファを認識しない。即ち、入力論理値をそのまま出力論理値として出力するバッファについては、後方トレースにおいて無視して通過する。図４の例では、論理ゲート２２が、接続元の論理回路として検出される。なおこの段階では、セレクタ２４−１はまだ挿入されていない。
このようにして、選択された第１のフリップフロップ（２０−２）の第１の入力端子（ＣＫ入力端子）から後方トレースすることにより第１の信号（通常のクロック信号）の供給元である第１の回路要素（論理ゲート２２）を特定する。
【００２１】
ステップＳ４で、後方トレースにより到達した論理回路（ＡＮＤ、ＯＲ、インバータ等の論理ゲート、又はフリップフロップの出力端子、又は外部端子）を「Ｔａｒｇｅｔ  ＣＥＬＬ１」として定義する。具体的には、例えば変数＄ＴＡＲＧＥＴＣＥＬＬ１を用意しておき、検出されたセル名とセル端子名とを変数＄ＴＡＲＧＥＴＣＥＬＬ１に保存すればよい。
【００２２】
ステップＳ５で、「Ｔａｒｇｅ  ＣＥＬＬ１」の出力端子の先にセレクタを挿入する。図４の例では、「Ｔａｒｇｅ  ＣＥＬＬ１」である論理ゲート２２の出力端子の先にセレクタ２４−１を挿入する。具体的には、ＣＡＤツールのセル追加コマンド、ＮＥＴカットコマンド、ＮＥＴ追加コマンド等を用いてセレクタ挿入処理を行なえばよい。このようにして、第１の回路要素（論理ゲート２２）が第１の信号（通常のクロック信号）を出力する出力端子の直後にセレクタ（２４−１）を挿入する。このセレクタ２４−１により、第１の信号（通常のクロック信号）と第２の信号（スキャンクロックポート２５から供給されるテスト用クロック信号）との何れかを選択可能とする。
【００２３】
ステップＳ６で、ステップＳ５で挿入したセレクタの出力端子から前方トレースを行い、接続先を検索する。その際、前方トレース処理においてＴｒｕｅタイプのバッファに到達した場合には、検索対象である接続先としてはバッファを認識しない。即ち、入力論理値をそのまま出力論理値として出力するバッファについては、前方トレースにおいて無視して通過する。図４の例では、フリップフロップ２０−３乃至２０−５及び論理ゲート２３が、接続先として検出される。このようにして、セレクタ（２４−１）の出力端子から前方トレースすることにより第１の信号（通常のクロック信号）の供給先である第１のフリップフロップ（２０−２）以外の第２の回路要素（２０−３、２０−４、２０−５、及び２３）を特定する。
【００２４】
ステップＳ７で、前方トレースで到達した論理回路（ＡＮＤ、ＯＲ、インバータ等の論理ゲート、又はフリップフロップのＣＫ入力端子以外の端子）を「Ｔａｒｇｅｔ  ＣＥＬＬ２」として定義する。具体的には、例えば変数＄ＴＡＲＧＥＴＣＥＬＬ２を用意しておき、検出されたセル名を変数＄ＴＡＲＧＥＴＣＥＬＬ２に保存すればよい。「Ｔａｒｇｅｔ  ＣＥＬＬ２」以外（即ちフリップフロップのＣＫ入力端子）に到達した場合は、処理はステップＳ９に進む。
【００２５】
ステップＳ８で、「Ｔａｒｇｅｔ  ＣＥＬＬ２」の入力端子に接続されているネットを「Ｔａｒｇｅｔ  ＣＥＬＬ１」の出力端子に繋ぎ換える。具体的には、ＣＡＤツールのＮＥＴカットコマンドやＮＥＴ追加コマンドを用いて、ネットの繋ぎ替え処理を実行すればよい。図４の例では、通常のクロック信号が入力される論理ゲート２３の入力端子への信号パスを、セレクタ２４−１の出力端子から、論理ゲート２２の出力端子に繋ぎ替える。即ち、ステップＳ５で挿入したセレクタ２４−１をバイパスする信号パスを設定する。図４においては繋ぎ替え後の信号パス２６が点線で示されている。このようにして、第２の回路要素（論理ゲート２３）が第１の信号（通常のクロック信号）を受け取る入力端子に繋がる信号経路の接続元を、セレクタ（２４−１）の出力端子から第１の回路要素（論理ゲート２２）の出力端子に繋ぎ替える。この繋ぎ替えは、第２の回路要素が、前方トレースした第１の信号（通常のクロック信号）を第１の入力端子（ＣＫ入力端子）に受け取る第２のフリップフロップ（２０−３、２０−４、２０−５）でない場合に実行される。第２の回路要素が、前方トレースした第１の信号（通常のクロック信号）を第１の入力端子（ＣＫ入力端子）に受け取る第２のフリップフロップ（２０−３、２０−４、２０−５）である場合には、繋ぎ替えを行なわない。即ち、第２の回路要素（２０−３、２０−４、２０−５）が第１の信号（通常のクロック信号）を受け取る入力端子に繋がる信号経路の接続元を、セレクタ（２４−１）の出力端子のままとする。
【００２６】
ステップＳ７においてフリップフロップのＣＫ入力端子に到達した場合、ステップＳ９で、到達したフリップフロップをトレース済みフリップフロップとして登録する。具体的には、例えば変数＄ＴＲＡＣＥ＿ＦＦを用意しておき、到達したフリップフロップのセル名を変数＄ＴＲＡＣＥ＿ＦＦに保存すればよい。この変数＄ＴＲＡＣＥ＿ＦＦを参照してステップＳ２の判定を行なうことにより、トレース済みフリップフロップについてはスキップし、後方トレース処理を重複して実行しない。これにより、トレースの処理速度を向上させることができる。なお、ステップＳ１で選択したフリップフロップについても、そのセル名を変数＄ＴＲＡＣＥ＿ＦＦに保存するようにする。
【００２７】
ステップＳ１０で、ステップＳ５で挿入したセレクタに接続されている全ての回路を前方トレースにより検出したか否かを判定する。全ての回路の検出が終了していない場合、処理はステップＳ６に戻り、ステップＳ６乃至Ｓ９の処理を繰り返す。即ちこの繰り返し処理により、図４の例では、フリップフロップ２０−３乃至２０−５及び論理ゲート２３の各々を、接続先として順次検出することができる。
【００２８】
ステップＳ１１で、設計対象の回路内の全てのフリップフロップについて後方トレースが完了したか否かを判定する。全てのフリップフロップの後方トレースが完了していない場合には、処理はステップＳ１に戻り以降の処理を繰り返す。全てのフリップフロップの後方トレースが完了すると、図３のセレクタ挿入方法の処理を終了する。
【００２９】
図５は、図３のセレクタ挿入方法によりセレクタが挿入されたクロックパスの構成を示す図である。図５に示されるように、必要最小限の３つのセレクタ２４−１乃至２４−３が挿入されている。従来技術の方法でセレクタを挿入した図２の場合と異なり、冗長なセレクタは存在しない。システムクロックポート２１と各フリップフロップ２０−１乃至２０−８との間の信号パスと、スキャンクロックポート２５と各フリップフロップ２０−１乃至２０−８との間の信号パスとについて、各信号パス毎に必ず一個のセレクタが設けられている。また同一論理の複数の信号パスが共通のパスセグメントを共有する場合には、その共通のパスセグメントの位置にセレクタが挿入されている。従って、必要最小限の個数のセレクタが設けられていることが分かる。
【００３０】
図６は、ネット繋ぎ替え処理の詳細を説明するための図である。図６の（ａ）には、回路図におけるネットの繋ぎ替えの様子を示してある。セレクタＳＥＬ１の出力端子Ｙから延びるネットＮＥＴ２は、フリップフロップＦＦ１の入力端子ＣＫと、フリップフロップＦＦ２の入力端子ＣＫと、論理ゲートＧＡＴＥ２の入力端子Ａに繋がっている。このネットＮＥＴ２のうち、論理ゲートＧＡＴＥ２の入力端子Ａに繋がる部分を削除する。更に、論理ゲートＧＡＴＥ１の出力端子Ｙから延びるネットＮＥＴ１を、論理ゲートＧＡＴＥ２の入力端子Ａに繋げる。
【００３１】
図６の（ｂ）は、ネット繋ぎ替え処理前のネットリスト記述例を示す図である。この記述例において、例えば「ｗｉｒｅ  ＮＥＴ１」は、ネットＮＥＴ１が配線として設けられていることを示す。また「ＧＡＴＥ１（．Ｙ（ＮＥＴ１））」は、「セル名（端子名（ネット名））」の表記に従うものであり、セル名がＧＡＴＥ１であり、その端子ＹにはネットＮＥＴ１が接続されていることを示す。図６の（ｂ）に示すネットリスト記述例においては、「ＧＡＴＥ２（．Ａ（ＮＥＴ２））」との記述があり、論理ゲートＧＡＴＥ２の入力端子ＡはネットＮＥＴ２に繋がることが示されている。
【００３２】
図６の（ｃ）は、ネット繋ぎ替え処理後のネットリスト記述例を示す図である。図６（ｂ）の記述と図６（ｃ）の記述とでは、図６の（ｂ）の「ＧＡＴＥ２（．Ａ（ＮＥＴ２））」が図６の（ｃ）では「ＧＡＴＥ２（．Ａ（ＮＥＴ１））」となっている点のみが相違する。即ち、繋ぎ替え処理前において論理ゲートＧＡＴＥ２の入力端子ＡがネットＮＥＴ２に繋がっていたのに対して、繋ぎ替え処理後においては論理ゲートＧＡＴＥ２の入力端子ＡがネットＮＥＴ１に繋がっている。このようにネットリスト記述を変更することにより、ネットの繋ぎ替え処理を実行することができる。
【００３３】
上記説明したセレクタ挿入処理は、通常のクロック信号を供給するクロック信号経路において、テスト用のクロック信号を供給するためにセレクタを挿入しているが、本願発明のセレクタ挿入処理は、クロック信号経路でのセレクタ挿入に限定される必要はない。例えば、通常動作用のリセット信号をフリップフロップに供給するリセット信号経路において、テスト用のリセット信号を供給するためにセレクタを挿入する処理に適用することができる。また例えば、通常動作用のイネーブル信号をフリップフロップに供給するイネーブル信号経路において、テスト用のイネーブル信号を供給するためにセレクタを挿入する処理に適用することができる。
【００３４】
図７は、セレクタ挿入前のリセット信号パスの構成の一例を示す図である。フリップフロップ３０−１乃至３０−８の各リセット入力端には、リセット信号パスが接続されている。このリセット信号パスは、システムリセットポート３１に外部から入力されるリセット信号を、各フリップフロップ３０−１乃至３０−８のリセット入力端に供給する。リセット信号パスの途中には、論理ゲート（この例ではＡＮＤゲート）３２及び３３が挿入されている。
【００３５】
図８は、図３のセレクタ挿入方法をクロック信号パスではなく図７のリセット信号パスに適用することによりセレクタを挿入したリセット信号パスの構成を示す図である。図８に示されるように、リセット信号パスに必要最小限の３つのセレクタ３４−１乃至３４−３が挿入されており、冗長なセレクタは存在しない。システムリセットポート３１と各フリップフロップ３０−１乃至３０−８との間の信号パスと、スキャンリセットポート３５と各フリップフロップ３０−１乃至３０−８との間の信号パスとについて、各信号パス毎に必ず一個のセレクタが設けられている。また同一論理の複数の信号パスが共通のパスセグメントを共有する場合には、その共通のパスセグメントの位置にセレクタが挿入されている。従って、必要最小限の個数のセレクタが設けられていることが分かる。
【００３６】
図９は、セレクタ挿入方法を実行する装置の構成を示す図である。
【００３７】
図９に示されるように、セレクタ挿入方法を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図９の装置は、コンピュータ５１０と、コンピュータ５１０に接続されるディスプレイ装置５２０、通信装置５２３、及び入力装置よりなる。入力装置は、例えばキーボード５２１及びマウス５２２を含む。コンピュータ５１０は、ＣＰＵ５１１、ＲＡＭ５１２、ＲＯＭ５１３、ハードディスク等の二次記憶装置５１４、可換媒体記憶装置５１５、及びインターフェース５１６を含む。
【００３８】
キーボード５２１及びマウス５２２は、ユーザとのインターフェースを提供するものであり、コンピュータ５１０を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置５２０は、コンピュータ５１０で処理された結果等を表示すると共に、コンピュータ５１０を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置５２３は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
【００３９】
本発明によるセレクタ挿入方法は、コンピュータ５１０が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置５１５に装着可能な記憶媒体Ｍに記憶されており、記憶媒体Ｍから可換媒体記憶装置５１５を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体（図示せず）に記憶されており、この記憶媒体から通信装置５２３及びインターフェース５１６を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。
【００４０】
キーボード５２１及び／又はマウス５２２を介してユーザからプログラム実行指示があると、ＣＰＵ５１１は、記憶媒体Ｍ、遠隔地記憶媒体、或いは二次記憶装置５１４からプログラムをＲＡＭ５１２にロードする。ＣＰＵ５１１は、ＲＡＭ５１２の空き記憶空間をワークエリアとして使用して、ＲＡＭ５１２にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおＲＯＭ５１３は、コンピュータ５１０の基本動作を制御するための制御プログラムが格納されている。
【００４１】
上記コンピュータプログラムを実行することにより、コンピュータ５１０が、上記実施例で説明されたようにセレクタ挿入方法を実行する。なお設計対象の回路のＲＴＬ記述から、論理合成ツールにより生成するゲートレベル記述は、例えば二次記憶装置５１４やＲＡＭ５１２に格納される。セレクタ挿入方法は、論理合成後であり物理設計（配置・配線によるレイアウト設計）前の段階において、二次記憶装置５１４やＲＡＭ５１２に格納されるゲートレベル記述のデータ（ネットリスト記述）に対して実行される。
【００４２】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００４３】
なお本願の開示は以下の内容を含むものである。
（付記１）
設計対象の回路を表現するデータ上において、第１の信号を第１の入力端子に受け取る第１のフリップフロップを選択し、
前記選択された第１のフリップフロップの前記第１の入力端子から後方トレースすることにより前記第１の信号の供給元である第１の回路要素を特定し、
前記第１の回路要素が前記第１の信号を出力する出力端子の直後にセレクタを挿入し、
前記セレクタにより前記第１の信号と第２の信号との何れかを選択可能とし、
前記セレクタの出力端子から前方トレースすることにより前記第１の信号の供給先である前記第１のフリップフロップ以外の第２の回路要素を特定し、
前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップでない場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子から前記第１の回路要素の出力端子に繋ぎ替える
各段階を計算機により実行することを特徴とする設計データに対するセレクタ挿入方法。
（付記２）
前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップである場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子のままとすることを特徴とする付記１記載のセレクタ挿入方法。
（付記３）
前記第２のフリップフロップをトレース済みとして扱い、前記第２のフリップフロップの前記第１の入力端子に対しては後方トレースを実行しないことを特徴とする付記２記載のセレクタ挿入方法。
（付記４）
前記後方トレース及び前記前方トレースにおいては、入力論理値をそのまま出力論理値として出力するバッファを無視して通過することを特徴とする付記１乃至４のいずれか一項記載のセレクタ挿入方法。
（付記５）
前記第１の回路要素は論理ゲート、フリップフロップ、及び外部端子の何れかであることを特徴とする付記１乃至４のいずれか一項記載のセレクタ挿入方法。
（付記６）
前記第２の回路要素は論理ゲート及びフリップフロップの何れかであることを特徴とする付記１乃至５のいずれか一項記載のセレクタ挿入方法。
（付記７）
設計対象の回路を表現する回路データと、前記回路データ上において前記回路にセレクタを挿入する処理を実行するプログラムとを格納するメモリと、
前記メモリに格納された前記プログラムを実行する演算処理ユニットと
を含み、前記プログラムを実行することにより該演算処理ユニットは、
前記回路データ上において、第１の信号を第１の入力端子に受け取る第１のフリップフロップを選択し、
前記選択された第１のフリップフロップの前記第１の入力端子から後方トレースすることにより前記第１の信号の供給元である第１の回路要素を特定し、
前記第１の回路要素が前記第１の信号を出力する出力端子の直後にセレクタを挿入し、
前記セレクタにより前記第１の信号と第２の信号との何れかを選択可能とし、
前記セレクタの出力端子から前方トレースすることにより前記第１の信号の供給先である前記第１のフリップフロップ以外の第２の回路要素を特定し、
前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップでない場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子から前記第１の回路要素の出力端子に繋ぎ替える
各段階を実行することを特徴とするセレクタ挿入装置。
（付記８）
設計対象の回路を表現する回路データ上において、第１の信号を第１の入力端子に受け取る第１のフリップフロップを選択し、
前記選択された第１のフリップフロップの前記第１の入力端子から後方トレースすることにより前記第１の信号の供給元である第１の回路要素を特定し、
前記第１の回路要素が前記第１の信号を出力する出力端子の直後にセレクタを挿入し、
前記セレクタにより前記第１の信号と第２の信号との何れかを選択可能とし、
前記セレクタの出力端子から前方トレースすることにより前記第１の信号の供給先である前記第１のフリップフロップ以外の第２の回路要素を特定し、
前記第２の回路要素が前記第１の信号を前記第１の入力端子に受け取る第２のフリップフロップでない場合には前記第２の回路要素が前記第１の信号を受け取る入力端子に繋がる信号経路の接続元を前記セレクタの出力端子から前記第１の回路要素の出力端子に繋ぎ替える
各段階を計算機に実行させることにより、前記回路データ上の前記回路にセレクタを挿入するセレクタ挿入プログラム。
【図面の簡単な説明】
【００４４】
【図１】セレクタ挿入前のクロックパスの構成の一例を示す図である。
【図２】図１のクロックパスに対してセレクタを挿入した場合のクロックパスの構成を示す図である。
【図３】セレクタ挿入方法の実施例の一例を示す図である。
【図４】図３のセレクタ挿入方法に従ってセレクタが挿入されるクロックパスの構成の一例を示す図である。
【図５】図３のセレクタ挿入方法によりセレクタが挿入されたクロックパスの構成を示す図である。
【図６】ネット繋ぎ替え処理の詳細を説明するための図である。
【図７】セレクタ挿入前のリセット信号パスの構成の一例を示す図である。
【図８】図３のセレクタ挿入方法をクロック信号パスではなく図７のリセット信号パスに適用することによりセレクタを挿入したリセット信号パスの構成を示す図である。
【図９】セレクタ挿入方法を実行する装置の構成を示す図である。
【符号の説明】
【００４５】
２０−１〜２０−８  フリップフロップ
２１  システムクロックポート
２２，２３  論理ゲート
２４−１，２４−２，２４−３  セレクタ
２５  スキャンクロックポート
５１０  コンピュータ
５１１  ＣＰＵ
５１２  ＲＡＭ
５１３  ＲＯＭ
５１４  二次記憶装置
５１５  可換媒体記憶装置
５１６  インターフェース
５２０  ディスプレイ装置
５２１  キーボード
５２２  マウス
５２３  通信装置
【図１】
2010055308.tif 000003
【図２】
2010055308.tif 000004
【図３】
2010055308.tif 000005
【図４】
2010055308.tif 000006
【図５】
2010055308.tif 000007
【図６】
2010055308.tif 000008
【図７】
2010055308.tif 000009
【図８】
2010055308.tif 000010
【図９】
2010055308.tif 000011