以下、図面を参照して、本発明の第1〜第8の実施形態に係る半導体集積回路の設計データの処理方法を説明する。各実施形態に係る方法は、典型的には、図1に示すEDA(Electronic Design Automation)システムを用いて実行される。図1に示すEDAシステム10は、入力部11、処理部12、データ蓄積部13、および表示部14を備えている。データ蓄積部13には、半導体集積回路の設計データが蓄積される。設計者は、入力部11を用いてコマンドなどを入力する。処理部12は、入力部11から入力されたコマンドに従い、データ蓄積部13に蓄積された設計データに対して各種の処理を行う。表示部14は、処理部12による処理結果として、回路図などを画面に表示する。
(第1の実施形態)
本発明の第1の実施形態では、設計者が論理を把握しやすいように、クロック回路を表示する方法について説明する。図2は、本実施形態に係るクロック回路の表示方法(第1の方法)を示すフローチャートである。図2に示す手順は、クロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。表示対象となるクロック回路を指定するためには、例えば、クロック経路の始点を指定する方法、クロック経路の先頭にある論理素子を指定する方法、クロック経路上に存在する論理素子または配線を指定する方法などが用いられる。
図2に示す手順では、表示対象となるクロック回路から、まず、論理を変更しないバッファのすべてと、クロック経路を配線の分岐点で分割した場合に、各区間のクロック経路上に存在するインバータの組のすべてとを除去する(ステップS101)。次に、ステップS101で求めた回路を画面に表示する(ステップS102)。ステップS102では、バッファおよびインバータを除去した後の回路は、図1に示すEDAシステム10の表示部14に表示される。
図3(a)に示すクロック回路を、図2に示す手順で表示する場合の詳細を説明する。図3(a)に示すクロック回路は、クロック経路上に存在する論理素子および配線によって構成され、クロック信号CKを各フリップフロップまで伝搬させる。このクロック回路に対して図2に示す手順を実行した場合、ステップS101では、論理を変更しないバッファであるバッファB1〜B5はすべて除去され、バッファB1〜B5の入力信号線と出力信号線とはそれぞれ直接接続される。また、このクロック回路に含まれる各クロック経路を配線の分岐点で分割した場合に、配線分岐点P1からフリップフロップF1までのクロック経路上には、3個のインバータA1〜A3が存在している。そこで、このうち任意のインバータの組(例えば、インバータの組{A1、A2})が除去され、除去された各インバータの入力信号線と出力信号線とは直接接続される。これに対して、上記以外のインバータは除去されない。例えば、インバータA4およびA5は、同じクロック経路上に存在しているが、配線分岐点P1から配線分岐点P2までのクロック経路上にも、配線分岐点P2からフリップフロップF2までのクロック経路上にも、インバータは1個ずつしかない。このため、インバータA4およびA5は、いずれも除去されない。
したがって、図3(a)に示すクロック回路に対してステップS101を実行すると、図3(b)に示す回路が得られ、ステップS102ではこの回路が画面に表示される。図3(a)に示す回路と図3(b)に示す回路とを比較すると、後者の回路では、論理を把握するために不要なバッファとインバータとが除去されている。また、後者の回路では、回路の分岐構造は元のまま維持されている。したがって、図3(a)に回路に代えて、図3(b)に示す回路を表示することにより、設計者は論理を容易に把握することができる。
以上に示すように、図2に示すクロック回路の表示方法によれば、分岐構造を維持したまま、論理を把握するために不要なバッファとインバータとを除去した回路が表示されるので、設計者は論理を容易に把握することができる。
図4は、本実施形態に係るクロック回路の表示方法(第2の方法)を示すフローチャートである。図4に示す手順は、図2に示す手順と同様に、クロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。図4に示す手順では、表示対象となるクロック回路に対してステップS121〜S123を実行することにより、表示用回路を求める。
より詳細には、まず、表示対象となるクロック回路について、各クロック経路が互いに独立した経路となるように、複数のクロック経路上に存在する論理素子を複写して追加する(ステップS121)。ステップS121では、最終段の論理素子までが共通するクロック経路については、1本のクロック経路とみなしてもよい。次に、論理素子を追加した後のクロック回路から、論理を変更しないバッファのすべてと、論理を変更しないバッファ以外の論理素子間に存在するインバータの組のすべてとを除去する(ステップS122)。次に、バッファおよびインバータの組を除去した後のクロック回路について、各クロック経路が共通した部分を持つように、複数のクロック経路上に同じ論理を実現する部分回路がある場合に重複した部分回路を除去する(ステップS123)。
次に、ステップS121〜S123で求めた回路を画面に表示する(ステップS124)。この表示用回路は、図1に示すEDAシステム10の表示部14に表示される。
図5(a)に示すクロック回路を、図4に示す手順で表示する場合の詳細を説明する。図5(a)に示すクロック回路は、図3(a)に示すクロック回路と同様、クロック経路上に存在する論理素子および配線によって構成され、クロック信号CKを各フリップフロップまで伝搬させる。この回路に対してステップS121を実行すると、図5(b)に示す回路が得られる。例えば、図5(a)に示す回路では、インバータA8は、フリップフロップF3に至るクロック経路上にも、フリップフロップF4に至るクロック経路上にも存在しており、これら2本のクロック経路は互いに独立ではない。そこで、元の論理を維持しながら、これら2本のクロック経路が互いに独立となるように回路変更を行うために、インバータA8は複写され、インバータA81およびA82となる(図5(b)を参照)。インバータA81およびA82は、それぞれ、フリップフロップF3に至るクロック経路上、およびフリップフロップF4に至るクロック経路上に配置される。
次に、図5(b)に示す回路に対してステップS122を実行すると、図5(c)に示す回路が得られる。例えば、図5(b)に示す回路では、フリップフロップF3に至るクロック経路上には、2個のインバータA81およびA9が存在している。そこで、インバータの組{A81、A9}は除去され、除去された各インバータの入力信号線と出力信号線とは直接接続される。これに対して、フリップフロップF5に至るクロック経路上にも、2個のインバータA10およびA11が存在しているが、バッファB6からANDゲートB7までのクロック経路上にも、ANDゲートB7からフリップフロップF5までのクロック経路上にも、インバータは1個ずつしかない。このため、インバータA10およびA11は、いずれも除去されない。
次に、図5(c)に示す回路に対してステップS123を実行すると、図5(d)に示す回路が得られる。ステップS123では、クロック経路上の論理素子の接続関係を求めた上で、重複した部分回路を除去するために、回路の接続関係を変更すればよい。
図6は、ステップS123の詳細を説明するための図である。ステップS123では、図6(a)に示すように、ステップS122で得られた回路(図5(c))の各クロック経路上に節点N1〜N9を設ける。節点N2より後段側の回路と節点N3より後段側の回路とは同じ構造を有するので、このうち一方の回路は除去され、節点N2とN3とは1つに併合される。また、節点N4、N5およびN8より後段側には回路が存在しないので、これら3つの節点は1つに併合される。また、節点N1より後段側の回路と節点N6より前段側の回路とは同じ構造を有するので、前者の回路は除去され、節点N1とN6とは1つに併合される。さらに、節点N7より前段側の回路と節点N9より後段側の回路とは同じ構造を有するので、後者の回路は除去され、節点N7とN9とは1つに併合される。このように重複した回路を除去することにより、図6(b)に示す回路が得られる。この回路は、図5(d)に示した回路と同じものである。
図5(a)に示す回路と図5(d)に示す回路とを比較すると、後者の回路では、論理を把握するために不要なバッファとインバータが除去されている。また、図5(d)に示す回路では、回路の分岐構造はそのまま維持されている訳ではないが、回路の構造を把握するための情報がある程度残されている。したがって、図5(a)に示す回路に代えて、図5(d)に示す回路を表示することにより、設計者は論理を容易に把握することができる。
以上に示すように、図4に示すクロック回路の表示方法によれば、回路の構造を把握するための情報をある程度残した上で、論理を把握するために不要なバッファとインバータとを除去した回路が表示されるので、設計者は論理を容易に把握することができる。
(第2の実施形態)
本発明の第2の実施形態では、設計者がクロック信号の流れを把握しやすいように、クロック回路を表示する方法について説明する。図7は、本実施形態に係るクロック回路の表示方法を示すフローチャートである。図7に示す手順は、複数のクロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。表示対象となるクロック回路は、例えば、第1の実施形態で述べたような方法で指定される。
図7に示す手順では、まず、各クロック信号が伝搬する配線の表示色と、複数種類のクロック信号が伝搬する配線の表示色とを指定する(ステップS201)。次に、各クロック信号が伝搬する配線と複数種類のクロック信号が伝搬する配線の表示色とを区別して、ステップS201で指定された表示色を用いて各配線を表示しながら、表示対象となるクロック回路を表示する(ステップS202)。
図8(a)に示すクロック回路を、図7に示す手順で表示する場合の詳細を説明する。図8(a)に示す回路では、クロック入力端子CK1から供給されたクロック信号と、クロック入力端子CK2から供給されたクロック信号とが伝搬する。この回路に含まれる配線の表示色を指定する方法には、種々の方法がある。例えば、第1の方法として、図9(a)に示す色指定ファイルを用いて、配線の表示色を指定することができる。図9(a)に示す色指定ファイルには、クロック入力端子CK1から供給されたクロック信号だけが伝搬する配線は赤で、クロック入力端子CK2から供給されたクロック信号だけが伝搬する配線は青で、複数種類のクロック信号が伝搬する配線は緑で表示することが記載されている。
あるいは、第2の方法として、図9(b)に示すように、クロック入力端子を画面上で選択することにより、配線の表示色を指定してもよい。図9(b)には、表示対象となるクロック回路を画面に表示した状態で、クロック入力端子CK1を画面上で選択し、当該端子から供給されたクロック信号だけが伝搬する配線を赤で表示することを指定する様子が示されている。この場合、同様の方法で、クロック入力端子CK2から供給されたクロック信号だけが伝搬する配線の表示色も指定される。複数種類のクロック信号が伝搬する配線の表示色には、各クロック入力端子に対して色を指定するときに使用されなかった色のうちから、任意の色が選択される。
あるいは、第3の方法として、図9(c)に示すように、画面に表示されたメニューを用いて、配線の表示色を指定してもよい。図9(c)には、表示対象となるクロック回路と色指定メニューとを同時に画面に表示した状態で、色指定メニューを用いて配線の表示色を指定する様子が示されている。図9(c)に示す色指定メニューに入力される情報は、図9(a)に示す色指定ファイルに記載される情報と同じである。
上記第1から第3の方法のいずれか、あるいは、他の方法を用いて配線の表示色を指定した上で、図8(a)に示すクロック回路を表示すると、図8(b)に示すようになる。すなわち、クロック入力端子CK1からセレクタC1までの配線には、クロック入力端子CK1から供給されたクロック信号だけが伝搬するので、この部分の配線は画面では赤色で表示される。また、クロック入力端子CK2からセレクタC1までの配線には、クロック入力端子CK2から供給されたクロック信号だけが伝搬するので、この部分の配線は画面では青色で表示される。さらに、セレクタC1からフリップフロップF6〜F8までの配線には、クロック入力端子CK1およびCK2から供給された2種類のクロック信号が伝搬するので、この部分の配線は画面では緑色で表示される。
また、クロック回路を画面に表示するときには、どのクロック入力端子から供給されたクロック信号が各フリップフロップに到達するかを、各フリップフロップの近傍に文字なで表示してもよい。図8(b)に示す画面では、フリップフロップF6〜F8のそれぞれの近傍に「CK1、CK2より到達」と表示されている。
以上に示すように、本実施形態に係るクロック回路の表示方法によれば、設計者がクロック回路を解析して回路の設計制約を設定するときに、クロック信号の流れを容易に把握することができる。
(第3の実施形態)
本発明の第3の実施形態では、設計者が構造を把握をしやすいように、クロック回路を表示する方法について説明する。図10は、本実施形態に係るクロック回路の表示方法を示すフローチャートである。図10に示す手順は、複数のクロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。表示対象となるクロック回路は、例えば、第1の実施形態で述べたような方法で指定される。
図10に示す手順では、まず、表示対象となるクロック回路について、あるクロック経路上に存在する論理素子と、他のクロック経路上に存在する論理素子との対応づけを指定する(ステップS301)。ステップS301では、2本のクロック経路上に存在する論理素子について複数の対応づけを指定してもよく、3本以上のクロック経路上に存在する論理素子について対応づけを指定してもよい。次に、ステップS301で指定された論理素子が画面に対して水平または垂直な1本の直線上に並ぶように、表示対象となるクロック回路を表示する(ステップS302)。指定された論理素子を1本の直線上に並べて表示するためには、指定された論理素子が各クロック経路において何段目に位置するかを求めた上で、その最大値Mを求め、指定されたすべての論理素子を画面ではM段目に表示すればよい。
図11(a)に示すクロック回路を、図10に示す手順で表示する場合の詳細を説明する。図11(a)に示す回路には、クロック入力端子CK3からフリップフロップD4までの第1のクロック経路と、クロック入力端子CK4からフリップフロップD9までの第2のクロック経路とが含まれている。第1のクロック経路上に存在する論理素子と、第2のクロック経路上に存在する論理素子とを対応づけて指定する方法には、種々の方法がある。例えば、第1の方法として、図12(a)に示すインデント指定ファイルを用いて、論理素子の対応づけを指定することができる。図12(a)に示すインデント指定ファイルには、インスタンス名がD3である論理素子とインスタンス名がD6である論理素子とを対応づけること、および、インスタンス名がD4である論理素子とインスタンス名がD9である論理素子とを対応づけることが記載されている。
あるいは、第2の方法として、図12(b)に示すように、クロック経路上に存在する論理素子を画面上で選択することにより、論理素子の対応づけを指定してもよい。図12(b)には、表示対象となるクロック回路を画面に表示した状態で、ANDゲートD3とANDゲートD6とを画面上に表示された1つの枠(破線で示す枠)で囲むことにより、これら2つのANDゲートを対応づけることが指定されている。フリップフロップD4およびD9についても、これと同様である。
あるいは、第3の方法として、図12(c)に示すように、画面に表示されたメニューを用いて、論理素子の対応づけを指定してもよい。図12(c)には、表示対象となるクロック回路とインデント指定メニューとを同時に画面に表示した状態で、インデント指定メニューを用いて論理素子の対応づけを指定する様子が示されている。図12(c)に示すインデント指定メニューに入力される情報は、図12(a)に示すインデント指定ファイルに記載される情報と同じである。
上記第1から第3の方法のいずれか、あるいは、他の方法を用いてインデントを指定した上で、図11(a)に示すクロック回路を表示すると、図11(b)に示すようになる。すなわち、ANDゲートD3およびD6は、図11(b)に示すように、画面に対して垂直な1本の直線上に並べて表示され、フリップフロップD4およびD9も、これと同様に表示される。したがって、図11(a)に示す回路に代えて、図11(b)に示す回路を表示することにより、設計者は回路の構造を容易に把握することができる。
以上に示すように、本実施形態に係るクロック回路の表示方法によれば、設計者がクロック回路を解析して回路の設計制約を設定するときに、クロック回路の構造を容易に把握することができる。
(第4の実施形態)
本発明の第4の実施形態では、設計者が構造を把握しやすいように、回路を表示する方法について説明する。図13は、本実施形態に係る回路の表示方法を示すフローチャートである。図13に示す手順は、表示対象となる回路に対して、特に、クロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。表示対象となるクロック回路を指定するときには、例えば、第1の実施形態で述べたような方法が用いられる。
図13に示す手順では、まず、ブラックボックス化して表示すべき部分回路(以下、ブラックボックス化対象回路という)の構造を指定する(ステップS401)。ここで、ブラックボックス化対象回路は、複数の論理素子と一以上の接続とを含み、一つの要素として表示されるべき部分回路をいう。典型的には、ブラックボックス化対象回路には、論理的な意味を有する部分回路が指定される。例えば、クロック回路には、図14(a)に示す選択回路や、図14(b)に示す遅延回路などが含まれている場合がある。そこで、図13に示す手順でクロック回路を表示するときには、このようにクロック回路にしばしば現れる部分回路が、ブラックボックス化対象回路として指定される。
次に、表示対象となる回路から、ステップS402で指定したブラックボックス化対象回路を探索する(ステップS402)。このため、ステップS402では、表示対象となる回路とブラックボックス化対象回路との間で、回路のマッチングを検出する処理が行われる。次に、ステップS402で探索して得られたブラックボックス化対象回路を、一つの要素としてブラックボックス化して表示しながら、表示対象となる回路を表示する(ステップS403)。これにより、例えば、図14(a)に示す選択回路は図14(c)に示すように、図14(b)に示す遅延回路は図14(d)に示すように、一つの要素としてブラックボックス化して表示される。
図15および図16を参照して、図14(a)および(b)に示す回路を、ブラックボックス化対象回路として指定する方法について説明する。ブラックボックス化対象回路を指定する方法には、例えば、論理素子のインスタンスを用いて指定する方法と、論理素子のタイプを用いて指定する方法とがある。前者の方法では、指定された回路だけがブラックボックス化して表示され、後者の方法では、指定された回路と同じ構造を有するすべての回路がブラックボックス化して表示される。
論理素子のインスタンスを用いる第1の方法として、図15(a)および(b)に示すブラックボックス化指定ファイルを用いて、ブラックボックス化対象回路を指定することができる。図15(a)は、図14(a)に示す回路のブラックボックス化指定ファイルである。このファイルには、ブラックボックス化対象回路の始点および終点が、論理素子のインスタンス名を用いて指定されている。より詳細には、このファイルには、(1)インスタンス名がI1である論理素子のOUT端子とインスタンス名がI2である論理素子のIN端子とを接続すること、(2)インスタンス名がI2である論理素子のOUT端子とインスタンス名がI5である論理素子のA端子とを接続すること、(3)インスタンス名がI3である論理素子のOUT端子とインスタンス名がI4である論理素子のIN端子とを接続すること、および、(4)インスタンス名がI4である論理素子のOUT端子とインスタンス名がI5である論理素子のB端子とを接続することが記載されている。これにより、インスタンス名がI1〜I5である論理素子を上記(1)〜(4)のように接続した回路が、ブラックボックス化対象回路として指定される。
図15(b)は、図14(b)に示す回路のブラックボックス化指定ファイルである。このファイルには、インスタンス名がI6である論理素子と、インスタンス名がI8である論理素子とが記載されている。また、2個の論理素子の間に記載された記号「=>」は、回路中のこれら2個の論理素子の間には任意の論理素子がいくつでも存在してよいことを表す。これにより、インスタンス名がI6である論理素子が初段に、インスタンス名がI8である論理素子が最終段に配置された任意の回路が、ブラックボックス化対象回路として指定される。例えば、図14(b)に示す回路では、インスタンス名がI6である論理素子が初段に、インスタンス名がI8である論理素子が最終段に配置され、これら2個の論理素子の間には、インスタンス名がI7である論理素子が存在している。したがって、この回路は、図15(b)に示すブラックボックス化指定ファイルによって、ブラックボックス化対象回路として指定される。また、図14(b)に示す回路においてバッファI7を2個以上のバッファに置換した回路も、図15(b)に示すブラックボックス化指定ファイルによって、ブラックボックス化対象回路として指定される。
あるいは、論理素子のインスタンスを用いる第2の方法として、図15(c)および(d)に示すように、画面に表示された論理素子を枠で囲んで選択することにより、ブラックボックス化対象回路を指定してもよい。図15(c)には、表示対象となるクロック回路を画面に表示した状態で、バッファI1〜I4およびセレクタI5を画面上に表示された1つの枠(破線で示す枠)で囲む様子が示されている。これにより、これら5個の論理素子およびこれらの論理素子を接続する配線からなる回路が、ブラックボックス化対象回路として指定される。図15(d)には、表示対象となるクロック回路を画面に表示した状態で、バッファI6〜I8を画面上に表示された1つの枠で囲む様子が示されている。これにより、これら3個の論理素子およびこれらの論理素子を接続する配線からなる回路が、ブラックボックス化対象回路として指定される。
あるいは、論理素子のインスタンスを用いる第3の方法として、図15(e)および(f)に示すように、ブラックボックス化対象回路の始点および終点となる論理素子を画面上で選択することにより、ブラックボックス化対象回路を指定してもよい。図15(e)には、表示対象となるクロック回路を画面に表示した状態で、マーク(チェック印)を付することによりバッファI1、I3、およびセレクタI5を選択する様子が示されている。これにより、これら3個の論理素子、これらの論理素子に挟まれた論理素子、および以上の論理素子を接続する配線からなる回路が、ブラックボックス化対象回路として指定される。図15(f)には、表示対象となるクロック回路を画面に表示した状態で、マークを付することによりバッファI6およびI8を選択する様子が示されている。これにより、これら2個の論理素子、これら2個の論理素子に挟まれた論理素子、および以上の論理素子を接続する配線からなる回路が、ブラックボックス化対象回路として指定される。
あるいは、論理素子のインスタンスを用いる第4の方法として、図15(g)に示すように、画面に表示されたメニューを用いて、ブラックボックス化対象回路を指定してもよい。図15(g)には、表示対象となるクロック回路とブラックボックス化指定メニューとを同時に画面に表示した状態で、ブラックボックス化指定メニューを用いてブラックボックス化対象回路を指定する様子が示されている。図15(g)に示すブラックボックス化指定メニューに入力される情報は、図15(a)および(b)に示すブラックボックス化指定ファイルに記載される情報と同じである。
論理素子のタイプを用いる第1の方法として、図16(a)および(b)に示すブラックボックス化指定ファイルを用いて、ブラックボックス化対象回路を指定することができる。図16(a)は、図14(a)に示す回路のブラックボックス化指定ファイルである。このファイルには、ブラックボックス化対象回路の始点および終点が、論理素子のタイプを用いて指定されている。より詳細には、このファイルには、(1)セルタイプがBUF(バッファ)である第1の論理素子のOUT端子とセルタイプがBUFである第2の論理素子のIN端子とを接続すること、(2)セルタイプがBUFである第2の論理素子のOUT端子とセルタイプがSEL(セレクタ)である論理素子のA端子とを接続すること、(3)セルタイプがBUFである第3の論理素子のOUT端子とセルタイプがBUFである第4の論理素子のIN端子とを接続すること、および、(4)セルタイプがBUFである第4の論理素子のOUT端子とセルタイプがSELである論理素子のB端子とを接続することが記載されている。これにより、セルタイプがBUFである第1〜第4の論理素子とセルタイプがSELである論理素子とを上記(1)〜(4)のように接続した回路が、ブラックボックス化対象回路として指定される。
図16(b)は、図14(b)に示す回路のブラックボックス化指定ファイルである。このファイルには、セルタイプがBUFTOP(バッファ)である第1の論理素子と、セルタイプがBUFBOTTOM(バッファ)である第2の論理素子とが記載されている。また、2個の論理素子の間に記載された記号「=>」は、回路中のこれら2個の論理素子の間には任意の論理素子がいくつでも存在してよいことを表す。これにより、セルタイプがBUFTOPである論理素子が初段に、セルタイプがBUFBOTTOMである論理素子が最終段に配置された任意の回路が、ブラックボックス化対象回路として指定される。
あるいは、論理素子のタイプを用いる第2の方法として、図16(c)および(d)に示すように、画面に表示された論理素子を枠で囲んで選択することにより、ブラックボックス化対象回路を指定してもよい。あるいは、論理素子のタイプを用いる第3の方法として、図16(e)および(f)に示すように、ブラックボックス化対象回路の始点および終点となる論理素子を画面上で選択することにより、ブラックボックス化対象回路を指定してもよい。なお、図16(c)〜(f)は、それぞれ、図15(c)〜(f)と同じ図であるが、論理素子のタイプを用いる第2および第3の方法では、ある回路が画面上でブラックボックス化対象回路として指定されると、指定された回路と同じ構造を有するすべての回路が、ブラックボックス化対象回路として指定される。
あるいは、論理素子のタイプを用いる第4の方法として、図16(g)に示すように、画面に表示されたメニューを用いて、ブラックボックス化対象回路を指定してもよい。図16(g)には、表示対象となるクロック回路とブラックボックス化指定メニューとを同時に画面に表示した状態で、ブラックボックス化指定メニューを用いてブラックボックス化対象回路を指定する様子が示されている。図16(g)に示すブラックボックス化指定メニューに入力される情報は、図16(a)および(b)に示すブラックボックス化指定ファイルに記載される情報と同じである。
以上に示すように、本実施形態に係る回路の表示方法によれば、特別な意味を有する部分回路をブラックボックス化対象回路として指定し、ブラックボックス化して表示することにより、設計者が回路を解析して回路の設計制約を設定するときに、回路の構造を容易に把握することができる。
(第5の実施形態)
本発明の第5の実施形態では、設計者が配線の属性を把握しやすいように、回路を表示する方法について説明する。図17は、本実施形態に係る回路の表示方法を示すフローチャートである。図17に示す手順は、表示対象となる回路に対して、特に、クロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。表示対象となるクロック回路を指定するときには、例えば、第1の実施形態で述べたような方法が用いられる。
図17に示す手順では、まず、表示対象となる回路のレイアウト後の設計データから、各配線の属性情報を取得する(ステップS501)。ステップS501で取得される属性情報には、例えば、配線幅、配線ピッチ、階層情報(何層目に配線されているかを示す情報)などが含まれる。次に、ステップS501で取得した属性情報に対応した態様で各配線を表示しながら、表示対象となる回路を表示する(ステップS502)。この際、配線の属性情報を多く画面に表示するとかえって設計者の理解が妨げられるので、配線の属性情報の全部または一部をファイルに出力してもよい。
図18(a)に示すクロック回路を、図17に示す手順で表示する場合の詳細を説明する。図18(a)に示す回路にはバッファE1〜E3が含まれており、この回路については、既に図18(b)に示すレイアウト結果が得られているとする。図18(b)に示すレイアウト結果によれば、バッファE1からバッファE2までの第1の配線は、水平配線WH1と垂直配線WV1とからなり、水平配線WH1は第1配線層にシングルピッチで配線された1倍幅の配線であり、垂直配線WV1は第2配線層にシングルピッチで配線された1倍幅の配線であるとする。また、バッファE2からバッファE3までの第2の配線は、水平配線WH2のみからなり、水平配線WH2は第1配線層にダブルピッチで配線された2倍幅の配線であるとする。
図18(a)に示すクロック回路に対して図17に示す手順を実行すると、ステップS501では、バッファE1からバッファE2までの第1の配線と、バッファE2からバッファE3までの第2の配線について、配線幅、配線ピッチ、階層情報などの属性情報が取得される。ステップS502で回路を表示するときには、配線の属性に応じて、配線の表示態様が定められている。例えば、シングルピッチで配線された1倍幅の配線には青色の細線、ダブルピッチで配線された2倍幅の配線は赤色の太線が割り当てられる。このように配線の属性に応じて配線の表示態様を決定した上で、図18(a)に示す回路を表示すると、図18(c)に示すようになる。すなわち、バッファE1からバッファE2までの第1の配線は画面では青色の細線で表示され、バッファE2からバッファE3までの第2の配線は画面では赤色の太線で表示される。なお、線幅を変更せずに、表示色のみを変更することにより、線幅を表現してもよい。
また、ステップS502では、配線の属性情報がファイルに出力される。これにより、例えば図18(a)に示す回路については、図18(d)に示す出力結果が得られる。図18(d)に示す出力結果には、インスタンス名がE1である論理素子のY端子からインスタンス名がE2である論理素子のA端子までの配線は、第1配線層および第2配線層にシングルピッチで配線された1倍幅の配線であり、インスタンス名がE2である論理素子のY端子からインスタンス名がE3である論理素子のA端子までの配線は、第1配線層にダブルピッチで配線された2倍幅の配線であることが記載されている。
以上に示すように、本実施形態に係る回路の表示方法によれば、各配線の属性情報に対応した態様で各配線を表示することにより、設計者は論理回路と配線情報とを容易に確認することができる。
(第6の実施形態)
本発明の第6の実施形態では、回路の設計データに設計制約を設定する方法、および、回路の設計データに設定された設計制約を検証する方法について説明する。図19は、本実施形態に係る設計制約の設定方法を示すフローチャートである。図19に示す手順は、論理レベルの設計を行った回路に対して実行される。
図19に示す手順では、まず、複数の論理素子と一以上の配線とを含む部分回路の構造と、部分回路に対して設定すべき設計制約とを指定する(ステップS601)。以下、ステップS601で指定された回路を制約設定対象回路と呼ぶ。ステップS601では、複数の制約設定対象回路を指定してもよい。次に、処理対象となる回路から、ステップS601で指定された制約設定対象回路を探索する(ステップS602)。次に、ステップS602で探索して得られた回路に、ステップS601で指定された設計制約を設定する(ステップS603)。
図20(a)に示すクロック回路に、図19に示す手順で設計制約を設定する場合の詳細を説明する。ステップS601では、制約設定対象回路として、図20(b)に示す回路が指定され、この回路に関する設計制約として、出力信号Yに対して「クロック信号の位相を変更する」というが制約が指定されたとする。ステップS602では、図20(a)に示す回路から、図20(b)と同じ構造を有する部分回路が探索される。図20(a)に示す回路では、バッファG1、フリップフロップG2、NORゲートG3およびG4、並びに、これら4個の論理素子を接続する配線によって構成される部分回路が、制約設定対象回路と同じ構造を有している。このため、ステップS603では、NORゲートG4の出力端子に、「クロック信号の位相を変更する」という設計制約が設定される。
ステップS601で複数の制約設定対象回路を指定した場合、ステップS602で1つの処理対象の回路について複数の探索結果が得られる場合がある。例えば、図21(a)および(b)に示す回路を両方とも制約設定対象回路として指定した上で、図20(a)に示すクロック回路について回路探索を行うと、図21(c)に示すように、2とおりの探索結果が得られる。具体的には、フリップフロップG2およびNORゲートG3からなる部分回路H1が図21(a)に示す回路に一致し、NORゲートG3およびG4からなる部分回路H2が図21(b)に示す回路に一致する。
そこで、ステップS601で複数の制約設定対象回路を指定する場合には、ステップS602で回路探索を行うときに、以下のいずれかの手法を用いて制約設定対象回路との対応づけを行えばよい。例えば、回路探索を行ったときに最初に一致した制約設定対象回路に対応づけを行うこととしてもよい。あるいは、回路探索を行ったときに最後に一致した制約設定対象回路に対応づけを行うこととしてもよい。あるいは、回路探索を行ったときに、一致した制約設定対象回路のすべてに対応づけを行うこととしてもよい。あるいは、制約設定対象回路に予め優先順位が設定されており、一致した制約設定対象回路のうちで優先順位が最も高いものに対応づけを行うこととしてもよい。
以上に示すように、図19に示す設計制約の設定方法によれば、設計制約を設定すべき部分回路を自動的に探索し、その箇所に設計制約を設定するので、設計制約を設定するときのミスを削減し、設計制約の設定に要する工数を削減することができる。
次に、図19に示す設計制約の設定方法と同じ特徴を有する、設計制約の検証方法について説明する。図22は、本実施形態に係る設計制約の設定方法を示すフローチャートである。図22に示す手順は、論理レベルの設計を行い、さらに設計制約が設定された回路に対して実行される。
図22に示す手順では、図20に示すステップS601およびS602と同様に、制約設定対象回路の構造と設定すべき設計制約とを指定し(ステップS621)、処理対象となる回路から、指定された制約設定対象回路を探索する(ステップS622)。次に、ステップS622で探索して得られた回路に、ステップS621で指定された設計制約が設定されているか否かを判定する(ステップS623)。次に、ステップS623における判定結果をファイルあるいは画面に出力する(ステップS624)。ステップS624では、典型的には、探索して得られた回路に指定された設計制約が設定されていない場合に、当該回路を特定するために必要な情報(例えば、論理素子のインスタンス名など)が出力される。
以上に示すように、図22に示す設計制約の検証方法によれば、設計制約を設定すべき部分回路を自動的に探索し、その箇所に設計制約が正しく設定されているか否かを判断するので、設計制約を設定するときのミスを削減し、設計制約の設定に要する工数を削減することができる。
(第7の実施形態)
本発明の第7の実施形態では、半導体集積回路の設計データを用いて回路を比較する方法について説明する。図23は、本実施形態に係る回路の比較方法(第1の方法)を示すフローチャートである。図23に示す手順は、ほぼ同じ論理を実現する2つの回路(以下、第1および第2の回路という)に対して実行される。例えば、第1の回路に対してわずかな設計変更を施して得られた回路が、第2の回路となる。
図23に示す手順では、まず、第1および第2の回路から、それぞれ、クロック経路上に存在する論理素子および配線によって構成されるクロック回路を抽出する(ステップS701)。以下、第1および第2の回路から抽出されたクロック回路を、それぞれ、第1および第2のクロック回路という。次に、ステップS701で抽出された各クロック回路を論理圧縮する(ステップS702)。次に、論理圧縮された各クロック回路について、論理的に等価なクロック信号が供給されるフリップフロップのすべてによって構成される群を求める(ステップS703)。言い換えると、第1のクロック回路に含まれるフリップフロップを、論理的に等価なクロック信号が供給されるフリップフロップが同じ群に属するように分類し、第2のクロック回路についても同様の処理を行う。
次に、第1のクロック回路に含まれる群と第2のクロック回路に含まれる群とを、各群に属するフリップフロップの個数に基づき対応づける(ステップS704)。第1のクロック回路に含まれる群と第2のクロック回路に含まれる群とを対応づけるときには、各群に属するフリップフロップの個数が近い群同士を対応づける。
次に、第1のクロック回路に含まれる群に属するフリップフロップと、当該群に対応づけられ第2のクロック回路に含まれる群に属するフリップフロップとを、各フリップフロップのインスタンス名に基づき対応づける(ステップS705)。ステップS705では、第1のクロック回路に含まれる群に属するフリップフロップのインスタンス名と、第2のクロック回路に含まれる群に属するフリップフロップのインスタンス名とが、例えば半数以上一致したときに限り、フリップフロップの対応づけを行うこととしてもよい。
次に、ステップS705で求めたフリップフロップの対応づけを制約条件として、第1の回路と第2の回路とについて論理比較を行う(ステップS706)。ステップS706は、典型的には、論理比較ツールを用いて実行される。
なお、ステップS705でフリップフロップの対応づけを行ったときに十分な対応づけを行えなかった場合(例えば、フリップフロップのインスタンス名が半数未満しか一致しなかった場合)には、ステップS704で再度、群同士の対応づけを行うこととしてもよい。
図24を参照して、図23に示す回路の比較方法の実行例を説明する。ステップS701を実行することにより、第1の回路からは図24(a)に示す第1のクロック回路が抽出され、第2の回路からは図24(b)に示す第2のクロック回路が抽出されたとする。第1のクロック回路と第2のクロック回路とはほぼ同じ構造を有するが、両者の間では一部のフリップフロップのインスタンス名が相違しているとする。例えば、あるフリップフロップ(ハッチングを施したフリップフロップ)が、第1のクロック回路ではFF_CAというインスタンス名を有し、第2のクロック回路ではFFCAというインスタンス名を有するとする。
第1および第2のクロック回路に対してステップS702およびS703を実行すると、それぞれ、図24(c)および(d)に示す結果が得られる。すなわち、論理圧縮後の第1のクロック回路に含まれるフリップフロップを、論理的に等価なクロック信号が供給されるフリップフロップが同じ群に属するように分類すると、100個のフリップフロップを含む群GR−A1と、200個のフリップフロップを含む群GR−A2とが得られ、論理圧縮後の第2のクロック回路について同じ処理を行うと、100個のフリップフロップを含む群GR−B1と、200個のフリップフロップを含む群GR−B2とが得られる。
ステップS704において群同士を対応づけるときには、各群に属するフリップフロップの個数が近い群同士が対応づけられる。図24に示す例では、群GR−A1、GR−A2、GR−B1およびGR−B2に属するフリップフロップの個数は、それぞれ、100個、200個、100個および200個である。このため、群GR−A1と群GR−B1とが対応づけられ、群GR−A2と群GR−B2とが対応づけられる。
次にステップS705では、各フリップフロップのインスタンス名に基づき、群GR−A1に属するフリップフロップと群GR−B1に属するフリップフロップとが対応づけられ、群GR−A2に属するフリップフロップと群GR−B2に属するフリップフロップとが対応づけられる。次にステップS706では、求めたフリップフロップの対応づけを制約条件として、第1の回路と第2の回路とについて論理比較が行われる。
図25は、図24と同様の図面を他の回路について描いたものである。この例では、第1のクロック回路(図25(a))および第2のクロック回路(図25(b))に対してステップS702およびS703を実行すると、それぞれ、図25(c)および(d)に示す結果が得られ、群GR−C1、GR−C2、GR−D1およびGR−D2に属するフリップフロップの個数は、いずれも200個であるとする。この場合、ステップS703で群同士の対応づけを行うときには、「群GR−C1と群GR−D1とを対応づけ、群GR−C2と群GR−D2とを対応づける」こと、および「群GR−C1と群GR−D2とを対応づけ、群GR−C2と群GR−D1とを対応づける」ことが可能である。このように、フリップフロップの個数が同じあるいは近い群が複数個存在するために、ステップS704において複数の対応づけが可能である場合には、各対応づけについてステップS705およびS706を実行した上で、ステップS706における論理比較結果のうちで最も良いものを最終的な回路の比較結果としてもよい。
図26は、本実施形態に係る回路の比較方法(第2の方法)を示すフローチャートである。図26に示す手順は、図23に示す手順と同様に、ほぼ同じ論理を実現する2つの回路に対して実行される。図26に示す手順では、図23に示す手順と同様に、まず、第1および第2の回路から、それぞれ、クロック経路上に存在する論理素子および配線によって構成されるクロック回路を抽出する(ステップS721)。
次に、ステップS721で抽出された各クロック回路から、同じ論理素子から出力されたクロック信号が直接供給されるフリップフロップのすべてによって構成される群を求める(ステップS722)。言い換えると、第1のクロック回路に含まれるフリップフロップを、クロック経路の最終段に存在する論理素子が同じであるフリップフロップが同じ群に属するように分類し、第2のクロック回路についても同様の処理を行う。なお、図26に示す手順では、ステップS722の前に各クロック回路を論理圧縮する処理は行われない。
その後、ステップS722で求めた群を用いて、図23に示すステップS704〜S706と同じ処理を行う。すなわち、第1のクロック回路に含まれる群と第2のクロック回路に含まれる群とを、各群に属するフリップフロップの個数に基づき対応づけを行い(ステップS723)、第1のクロック回路に含まれる群に属するフリップフロップと、当該群に対応づけられ第2のクロック回路に含まれる群に属するフリップフロップとを、各フリップフロップのインスタンス名に基づき対応づけを行い(ステップS724)、求めたフリップフロップの対応づけを制約条件として、第1の回路と第2の回路とについて論理比較を行う(ステップS725)。
図27を参照して、図26に示す回路の比較方法の実行例を説明する。ステップS721で比較対象となる回路からクロック回路を抽出したときに、第1の回路からは図27(a)に示す第1のクロック回路が抽出され、第2の回路からは図27(b)に示す第2のクロック回路が抽出されたとする。第1および第2のクロック回路に対してステップS722を実行すると、図27(c)および(d)に示す結果が得られる。すなわち、論理圧縮を施していない第1のクロック回路に含まれるフリップフロップを、クロック経路の最終段に存在する論理素子が同じであるフリップフロップが同じ群に属するように分類すると、100個のフリップフロップを含む群GR−E1と、200個のフリップフロップを含む群GR−E2と、300個のフリップフロップを含む群GR−E3とが得られ、論理圧縮を施していない第2のクロック回路について同じ処理を行うと、100個のフリップフロップを含む群GR−F1と、200個のフリップフロップを含む群GR−F2と、300個のフリップフロップを含む群GR−F3とが得られたとする。なお、図26に示す手順では、群GR−E2に属するフリップフロップと群GR−E3に属するフリップフロップとでは、最終段に存在する論理素子が異なるので、群GR−E2と群GR−E3とは別の群として扱われる。群GR−F2と群GR−F3についても同様である。
群GR−E1、GR−E2、GR−E3、GR−F1、GR−F2およびGR−F3に属するフリップフロップの個数は、それぞれ、100個、200個、300個、100個、200個および300個である。このため、ステップS723では、群GR−E1と群GR−F1とが対応づけられ、群GR−E2と群GR−F2とが対応づけられ、群GR−E3と群GR−F3とが対応づけられる。次にステップS724では、各フリップフロップのインスタンス名に基づき、群GR−E1に属するフリップフロップと群GR−F1に属するフリップフロップとが対応づけられ、群GR−E2に属するフリップフロップと群GR−F2に属するフリップフロップとが対応づけられ、群GR−E3に属するフリップフロップと群GR−F3に属するフリップフロップとが対応づけられる。次にステップS725では、求めたフリップフロップの対応づけを制約条件として、第1の回路と第2の回路とについて論理比較が行われる。
図28は、図27と同様の図面を他の回路について描いたものである。この例では、第1のクロック回路(図28(a))および第2のクロック回路(図28(b))に対してステップS722を実行すると、それぞれ、図28(c)および(d)に示す結果が得られ、群GR−G1、GR−G2、GR−G3、GR−H1、GR−H2およびGR−H3に属するフリップフロップの個数は、それぞれ100個、100個、300個、100個、100個および300個である。この場合、ステップS723で群同士の対応づけを行うときには、「群GR−G1と群GR−H1とを対応づけ、群GR−G2と群GR−H2とを対応づけ、群GR−G3と群GR−H3とを対応づける」こと、および「群GR−G1と群GR−H2とを対応づけ、群GR−G2と群GR−H1とを対応づけ、群GR−G3と群GR−H3とを対応づける」ことが可能である。このように、フリップフロップの個数が同じあるいは近い群が複数個存在するために、ステップS723において複数の対応づけが可能である場合には、各対応づけについてステップS724およびS725を実行した上で、ステップS725における論理比較結果のうちで最も良いものを最終的な回路の比較結果としてもよい。
以上に示すように、本実施形態に係る回路の比較方法によれば、回路に含まれるフリップフロップの個数が完全に一致しない場合や、回路に含まれる一部のフリップフロップのインスタンス名が異なっている場合でも、効率的に回路を比較することができる。
(第8の実施形態)
本発明の第8の実施形態では、クロック回路の簡略化した設計データを求める方法について説明する。図29は、本実施形態に係るクロック回路の設計データの生成方法(第1の方法)を示すフローチャートである。図29に示す手順は、複数のクロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。処理対象となるクロック回路は、例えば、第1の実施形態で述べたような方法で指定される。
図29に示す手順では、まず、処理対象となるクロック回路を論理圧縮する(ステップS801)。次に、論理圧縮されたクロック回路について、論理的に等価なクロック信号が供給されるフリップフロップのすべてによって構成される群を求める(ステップS802)。ステップS801およびS802は、それぞれ、図23に示すステップS702およびS703と同じ処理である。次に、各群に属するフリップフロップの全体を、各群に属するフリップフロップの個数を含んだインスタンス名を有する1個のフリップフロップに置換する(ステップS803)。これにより、クロック回路の簡略化した設計データが生成される。
図30(a)に示すクロック回路について、図29に示す方法で簡略化した設計データを求める場合の詳細を説明する。図30(a)に示す回路は、図24(a)に示した回路と同じものである。図30(a)に示す回路に対してステップS801およびS802を実行すると、100個のフリップフロップを含む群GR−A1と、200個のフリップフロップを含む群GR−A2とが得られる。次に、ステップS803では、群GR−A1に属するフリップフロップの全体を、群GR−A1に属するフリップフロップの個数(100個)を含んだインスタンス名(ここでは、FF_A100とする)を有する1個のフリップフロップに置換し、群GR−A2に属するフリップフロップの全体を、群GR−A2に属するフリップフロップの個数(200個)を含んだインスタンス名(ここでは、FF_BC200とする)を有する1個のフリップフロップに置換する。これにより、図30(a)に示すクロック回路について簡略化した設計データが生成される(図30(b)を参照)。
図31は、本実施形態に係るクロック回路の設計データの生成方法(第2の方法)を示すフローチャートである。図31に示す手順は、図29に示す手順と同様に、複数のクロック経路上に存在する論理素子および配線によって構成されるクロック回路に対して実行される。
図31に示す手順では、まず、処理対象となるクロック回路から、同じ論理素子から出力されたクロック信号が直接供給されるフリップフロップのすべてによって構成される群を求める(ステップS821)。次に、各群に属するフリップフロップの全体を、各群に属するフリップフロップの個数を含んだインスタンス名を有する1個のフリップフロップに置換する(ステップS822)。これにより、クロック回路の簡略化した設計データが生成される。なお、ステップS821およびS822は、それぞれ、図23に示すステップS703および図29に示すステップS803と同じ処理である。
図32(a)に示すクロック回路について、図31に示す方法で簡略化した設計データを求める場合の詳細を説明する。図32(a)に示す回路は、図27(a)に示した回路と同じものである。図32(a)に示す回路に対してステップS821を実行すると、100個のフリップフロップを含む群GR−E1と、200個のフリップフロップを含む群GR−E2と、300個のフリップフロップを含むGR−E3とが得られる。次に、ステップS822では、群GR−E1に属するフリップフロップの全体を、群GR−E1に属するフリップフロップの個数(100個)を含んだインスタンス名(ここでは、FF_A100とする)を有する1個のフリップフロップに置換し、群GR−E2に属するフリップフロップの全体を、群GR−E2に属するフリップフロップの個数(200個)を含んだインスタンス名(ここでは、FF_B200とする)を有する1個のフリップフロップに置換し、群GR−E3に属するフリップフロップの全体を、群GR−E3に属するフリップフロップの個数(300個)を含んだインスタンス名(ここでは、FF_C300とする)を有する1個のフリップフロップに置換する。これにより、図32(a)に示すクロック回路について簡略化した設計データが生成される(図32(b)を参照)。
以上に示すように、本実施形態に係る設計データの生成方法によれば、フリップフロップの個数を反映した簡略化された設計データを生成することができるので、これを用いて回路の比較などを容易に行うことができる。