説明

集積回路設計装置

【課題】集積回路を設計するための集積回路設計装置に関し、
【解決手段】本発明は、入力手段により設計者から複数の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、前記複数階層毎に設定されたブロックを所定階層に配置するブロック配置処理部と、前記所定階層とは異なる階層のブロックを前記所定階層上に設定されるブロックに仮想配置する領域割付処理部と、前記所定階層及び前記所定階層に対して下位となり、仮想配置される下位階層のブロックの配置状態を評価するブロック評価処理部とを有し、前記ブロック評価処理部は、前記下位階層のブロックの面積が前記所定階層のブロックの面積に占める割合を算出し、算出された前記下位階層のブロックの面積が前記所定階層に配置されるブロックの面積に占める割合を図形により表示することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は集積回路設計装置に係り、特に、集積回路を設計するための集積回路設計装置に関する。
【背景技術】
【0002】
近年、集積回路には、製品の多様化に伴い、設計時間の短縮が求められている。このため、集積回路の設計時間を短縮化するためには、設計工程を大幅に削減する必要があった。現在、集積回路の設計は集積回路設計装置により行われる。
【0003】
従来の集積回路設計装置は、主にフロアプラン表示機能及びタイミング解析機能を有していた。
【0004】
フロアプラン表示機能は、実装ブロックを処理単位、表示単位として表示する機能である。タイミング解析機能は、実装ブロック間の距離に基づき簡易的にパスディレイの計算を行う機能である。
【0005】
従来の集積回路設計装置では、上記フロアプラン表示機能を用いて実装ブロック単位で設計を行い、配置された実装ブロック間のディレイをタイミング解析機能を用いて解析し、ディレイが所望のディレイとなるように実装ブロック単位での設計が繰り返されていた。
【0006】
また、ハードウェア記述言語による設計では、回路合成時に使用したディレイ情報、例えば、セルの段数とゲートディレイをフロアプランでのタイミング解析に利用している。
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかるに、従来の集積回路の設計は、実装ブロックが処理単位であった。実装ブロックの論理回路の規模は数十万ゲートになる。このため、実装ブロック単位で設計を行うと、タイミング解析機能による解析結果の精度が悪く、実際とタイミング解析結果との誤差が大きいため、目標とする回路速度を実現するために設計の手戻りが頻繁に発生していた。このため、集積回路の設計工数の削減を妨げていた。
【0008】
本発明は、上記の点に鑑みてなされたもので、集積回路の設計を効率よく行える集積回路設計装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明は、入力手段により設計者から複数の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、前記複数階層毎に設定されたブロックを所定階層に配置するブロック配置処理部と、前記所定階層とは異なる階層のブロックを前記所定階層上に設定されるブロックに仮想配置する領域割付処理部と、前記所定階層及び前記所定階層に対して下位となり、仮想配置される下位階層のブロックの配置状態を評価するブロック評価処理部とを有し、前記ブロック評価処理部は、前記下位階層のブロックの面積が前記所定階層のブロックの面積に占める割合を算出し、算出された前記下位階層のブロックの面積が前記所定階層に配置されるブロックの面積に占める割合を図形により表示することを特徴とする。
【0010】
また、本発明は、入力手段により設計者から複数の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、前記複数階層毎に設定されたブロックを所定階層に配置するブロック配置処理部と、前記所定階層とは異なる階層のブロックを前記所定階層上に設定されるブロックに仮想配置する領域割付処理部と、前記所定階層及び前記所定階層に対して下位となり、仮想配置される下位階層のブロックの配置状態を評価するブロック評価処理部とを有し、前記ブロック評価処理部は、前記下位階層のブロックの面積が、前記所定階層に配置されたブロックの面積に占める割合を算出する面積比計算部と、前記算出されたブロックの面積比が基準内であるか否かを判別し、基準内であると判別された場合に仮想配置された下位階層のブロック間の経路のおけるディレイを算出するディレイ計算処理部とを有することを特徴とする。
【0011】
さらに、本発明は、入力手段により設計者から複数の階層に階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、前記集積回路の実装ブロック内に、仮想配置領域を設定するブロック配置処理部と、前記ブロックを、前記仮想配置領域上に仮想配置する領域割付処理部と、前記仮想配置された機能ブロック間の経路におけるディレイを算出するディレイ計算処理部とを有することを特徴とする。
【発明の効果】
【0012】
上述の如く、本発明によれば、下位階層のブロックの面積が所定階層のブロックの面積に占める割合を算出し、算出された下位階層のブロックの面積が所定階層に配置されるブロックの面積に占める割合を図形により表示することにより、算出された下位階層のブロックの面積が所定階層に配置されるブロックの面積に占める割合を直感的に把握でき、異なる階層の設計を効率よく行えるようになる。
【発明を実施するための最良の形態】
【0013】
図1は本発明の一実施例のブロック構成図を示す。
【0014】
本実施例の情報処理装置1は、データ処理装置11、入力装置12、出力装置13を含む構成とされている。データ処理装置11は、コンピュータシステムから構成されている。入力装置12は、キーボード、マウスなどから構成され、データ処理装置11にコマンドやデータの入力を行う。出力装置13は、ディスプレイなどから構成されており、データ処理装置11で処理されたデータ内容を表示する。
【0015】
データ処理装置11は、ハードディスクドライブ21、RAM22、CPU23、可換式記憶装置24、通信装置25を含む構成とされている。
【0016】
ハードディスクドライブ21には、OSや集積回路設計プログラムがインストールされている。ハードディスクドライブ21にインストールされたOS、集積回路設計プログラムは、RAM22に読み出されて、CPU23により実行される。RAM22は、CPU23の作業用記憶領域として用いられる。可換式記憶装置24は、フロッピー(登録商標)ディスクドライブ、CD−ROMドライブ、DVD−ROMドライブ、MOドライブなどである。集積回路設計プログラムを、例えば、フロッピーディスク、CD−ROMディスク、DVD−ROMディスク、MOディスクなどにより提供し、ハードディスクドライブ21にインストールするようにしてもよい。通信装置25は、LAN、電話回線、インターネットを介して通信を行う。集積回路設計プログラムをLAN、電話回線、インターネットを介して提供し、ハードディスクドライブ21にインストールするようにしてもよい。
【0017】
図2は集積回路設計プログラムの機能ブロック図を示す。集積回路設計プログラム31は、主に、フロアプラン作成・表示処理部41、機能ブロック割付処理部42、面積比率計算処理部43、パスディレイ計算処理部44、パスリスト表示処理部45、パス経路表示処理部46から構成される。
【0018】
集積回路設計プログラム31は、上記フロアプラン作成・表示処理部41、機能ブロック割付処理部42、面積比率計算処理部43、パスディレイ計算処理部44、パスリスト表示処理部45、パス経路表示処理部46の機能を用いて、実装ブロック、仮想配置領域(コート)、機能ブロック(セル)、パスの配置、表示、編集のための処理を行なう。
【0019】
ここで、上記機能ブロック、実装ブロック、仮想配置領域、パスについて定義しておく。
【0020】
図3は、機能ブロック(セル)、実装ブロック、仮想配置領域(コート)、パスを説明するための図を示す。図3(A)は機能ブロックを定義するための図、図3(B)は実装ブロックを定義するための図、図3(C)は仮想配置領域を定義するための図、図3(D)はパスを定義するための図を示す。
【0021】
図3(A)に示すようにセルB1、B2は、論理回路セルLをある機能毎にまとめたものと定義する。
【0022】
また、図3(B)に示すように実装ブロックP1〜P4は、実装設計を行う際、LSIチップTを分割した領域と定義する。
【0023】
図3(C)に示すように仮想配置領域(以下、コートと呼ぶ)C1〜C3は、例えば、実装ブロックP2をさらに分割した領域と定義する。
【0024】
図3(D)に示すようにパスM1、M2は、始点セルSSから終点セルSEまでの経路と定義する。図3(D)には、開始セルSS→セルS1→セルS2→セルS3→終了セルSEを通るパスM1、及び、開始セルSS→セルS4→セルS5→セルS3→終了セルSEを通るパスM2が存在する。
【0025】
次に、集積回路設計プログラム31を構成する各機能について説明する。
【0026】
フロアプラン作成・表示処理部41は、実装ブロックP1〜P4を配置するための処理を行うとともに、配置された実装ブロックP1〜P4、コートC1〜C3を出力装置13に表示するための処理を行う機能である。機能ブロック割付処理部22は、フロアプラン作成・表示処理部21で配置された実装ブロックP1〜P2及びコートC1〜C3にセルB1、B2を割り付ける処理を行うとともに、出力装置13に表示する処理を行う機能である。
【0027】
面積率計算処理部23は、面積率を計算する処理を行うとともに、面積率を出力装置13に表示するための処理を行う機能である。面積率は、コートC1〜C3またはセルB1、B2の面積が、そのコートまたは機能ブロックが属する実装ブロックP2の面積に占める割合である。
【0028】
パスディレイ計算処理部24は、機能ブロック間のパスディレイを計算する。パスリスト表示処理部25は、ディレイが基準値以上のパスをリストとして表示する。パス経路表示処理部46は、パスリスト表示処理部25でリストアップされたパスの経路を画面上に表示するための処理を行う機能である。
【0029】
次に、上記集積回路設計プログラム31を用いた設計方法について説明する。
【0030】
図4は、本発明の一実施例の設計方法のフローチャートを示す。
【0031】
まず、ステップS1で集積回路設計プログラム31のフロアプラン作成・表示処理部41の機能を用いてフロアプランデータを作成する。
【0032】
図5は実装ブロック及びコートの作成を説明するための図を示す。図5(A)はLSIチップT内のコートの定義例、図5(B)は実装ブロック内のコートの定義例、図5(C)はコートの作成例を示す。
【0033】
ステップS1のフロアプランの作成では、図5(A)に示すようにLSIチップT内にコートCa、Cb、Cc1〜c3、Cd1、Cd2を設定したり、図5(B)に示すようにLSIチップT内に実装ブロックPa〜Pdを設定し、設定された実装ブロックPa〜Pd内にさらにコートCa、Cb、Cc1〜c3、Cd1、Cd2を設定したりすることにより、フロアプランが作成される。
【0034】
このとき、図5(A)、(B)に示すように等しい大きさのコートCa1〜Ca25を同時に複数個設定したり、コートCc1〜Cc3のように任意の大きさで設定したりできる。また、形状も矩形だけではなく、コートCd1、Cd2のように任意の形状のコートも作成できる。
【0035】
また、コートCc1とコートCc2とのように複数のコートを重ねたり、コートCc1とコートCc3とのようにコートの一部を重ねたりすることも可能である。
【0036】
また、図5(C)に示すように実装ブロックPa〜PdまたはLSIチップTにコートを定義するには、例えば、下記の方法が考えられる。
【0037】
第1のコート作成方法は、LSIチップT、または実装ブロックPを指定した数値で複数のコートに分割する方法である。
【0038】
第1のコート作成方法でコートを作成する場合、設計者は分割しようとする実装ブロックPa又はLSIチップTを選択する。次に、第1のコート作成方法を選択することにより、分割数指定ウィンドウが表示される。例えば、実装ブロックPaが選択された場合、図5(C)に示すように実装ブロックPaの近くに、分割数指定ウィンドウw1が表示される。設計者は、分割数指定ウィンドウw1にx方向とy方向の分割数を指定する。フロアプラン作成・表示処理機能41は、選択されたLSIチップT又は実装ブロックに指定された分割数で均等にコートCa1〜Ca25が設定される。
【0039】
第2の方法は、指定したサイズでLSIチップT又は実装ブロックを分割する方法である。
【0040】
第2の方法でコートを作成する場合、設計者は分割しようとする実装ブロックPa又はLSIチップTを選択する。次に、第2のコート作成方法を選択することにより、分割サイズ指定ウィンドウが表示される。例えば、実装ブロックPbが選択された場合、図5(C)に示すように実装ブロックPbの近くに、分割サイズ指定ウィンドウw2が表示される。設計者は、分割サイズ指定ウィンドウw2に1つのコートのx方向のサイズSxとy方向のサイズSyとを指定する。フロアプラン作成・表示処理機能41は、選択されたサイズ〔(Sx)×(Sy)〕のコートを設定する。このとき、左下端からサイズ〔(Sx)×(Sy)〕コートPb4、Pb5、Pb7、Pb8が配置され、実装ブロックPbの残余の部分にはサイズ〔(Sx)×(Sy)〕より小さいコートPb1〜Pb3、Pb6、Pb9が設定される。
【0041】
第3のコート設定方法は、マウス等の入力手段を用いて任意の矩形状のコートを作成するものである。例えば、図5(C)の実装ブロックPdに示すようにマウスにより点eから点fまでポインタをドラックすることにより、点eと点fが対角点となるようにコートCdが設定される。
【0042】
第4のコート作成方法は、マウス等の入力手段を用いて任意の形状、大きさのコートを作成するものである。例えば、図5(C)の実装ブロックPcに示すようにマウスによりポインタを移動させ、クリックすることにより点g、点h、点i、点j、点k、点lを指定する。指定された点g、h、i、j、k、lを直線で結んだ図形がコートとして設定される。
【0043】
以上のようにして、LSIチップT又は実装ブロックP内にコートCが作成される。
【0044】
図4に戻って説明を続ける。
【0045】
ステップS1で、LSIチップに実装ブロックP及び/又はコートが作成されると、次に、ステップS2で作成された実装ブロックP又はコートCにセルBが割り付けられる。セルBは、例えば、各コートCに機能を設定することにより、設定された機能に応じた機能を実現するための機能ブロックがコートCに自動的に設定される。
【0046】
コートCに機能ブロックあるいはセルが割り付けられると、ステップS3でコートC毎のセル占有率が次の式で計算され、ステップS4でコート毎にそのコート内にグラフ表示される。
【0047】
占有率=(機能ブロックあるいはセルの面積合計/コートの面積)×100(%)図6はコートのセル占有率の表示例を示す。
【0048】
図6で、コートCa、Cb、Ccのセル占有率はコートCa、Cb、Cc毎に円グラフGa、Gb、Gcで表示される。コートCaは、セル占有率が100%以下の場合を示している。コートCaのセル占有率を示す円グラフGaでは、セル占有率分を青色(梨地)で表示し、他の部分を白抜きで表示している。
【0049】
また、コートCbは、セル占有率が100%を超えている場合を示している。コートCbのセル占有率を示す円グラフGbでは、セル占有率が100%を超えた分を、セル占有率分を示す青色とは異なる色、例えば、赤色(格子縞)で表示される。
【0050】
さらに、コートCcは、セル占有率が200%を超えた場合を示している。コートCcのセル占有率を示す円グラフGcはすべて赤色(格子縞)で表示される。なお、200%を超えた場合に、青、赤以外の色で表示するようにしてもよい。
【0051】
上記セル占有率グラフGa、Gb、Gcを参照することにより、各コートCa、Cb、Ccのセル占有率を認識できる。表示されたセル占有率グラフGa、Gb、Gcに基づいてステップS5で設計者により各コードCa、Cb、Ccのセル占有率が基準内か否かがが判断され、セル占有率が基準内になければ、ステップS1又はステップS2に戻って実装ブロックP、コートC、セルBの配置、サイズを基準となるセル占有率となるように調整する。
【0052】
次に、実装ブロックP、コートC、セルBの配置、サイズの調整方法について説明する。
【0053】
まず、調整を正確に行えるようにするため、セルの配置が不可能な領域を反映して計算したセル占有率をコート内にグラフ表示するようにしてもよい。このとき、セルの配置が不可能な領域を示す表示をコートC内に表示したり、非表示にしたりできるようにしてもよい。
【0054】
図7はセルの配置が不可能な領域を反映したグラフ表示を示す図である。
【0055】
図7(A)は、電源配線・配置禁止領域を反映させて計算したセル占有率をグラフ表示したもので、コートCa、Cb、Cc内に帯状に電源配線を示す表示及び配置禁止領域を示す表示が行われる。また、例えば、画面上の切替ボタンをクリックすることにより図7(B)に示すようにコートCa、Cb、Cc内の電源配線・配置禁止領域を示す表示が非表示にされる。
【0056】
なお、コート毎に表示、非表示が切り替わるようにしてもよく、また、表示方法も帯状に限定されるものではない。
【0057】
また、セル占有率グラフを任意の階層ブロック毎に切り替えて表示できるようにしてもよい。
【0058】
図8は階層ブロック毎の切替表示を示す図である。図8(A)は下位の階層のブロックであるコートCa、Cb、Ccのセル占有率を示すグラフGa、Gb、Gc、図8(B)は上位の階層のブロックであるLSIチップT、又は実装ブロックPのセル占有率を示すグラフGT又はGPを含む表示例を示す。
【0059】
階層ブロックの表示切り替えは、画面上に表示された階層切替ボタンなどをクリックすることで行う。例えば、図8(A)に示すようにLSIチップT又は実装ブロックP内にコートCa、Cb、Cc毎にセル占有率グラフGa、Gb、Gcが表示されていたときに、階層切替ボタンがクリックされると、図8(B)に示すようにLSIチップT又は実装ブロックP全体でのセル占有率グラフGT又はGPが表示される。
【0060】
また、複数のコートCをまとめることにより実装ブロックPを作成するような編集も可能である。
【0061】
図9は複数のコートをまとめて実装ブロックPを作成する場合の動作を説明するための図を示す。図9(A)はまとめる前の状態、図9(B)まとめた後の状態を示す。
【0062】
図9(A)に示すようにLSIチップT内にコートCa、Cb、Ccを含む複数のコートを設定する。設計者は、まず、一つの実装ブロックにまとめたいコートCa、Cb、Ccを選択する。まとめたいコートCa、Cb、Ccが選択されると、フロアプラン作成・表示処理部41は、図9(B)に示すようにコートCa、Cb、Ccを一つにまとめた実装コートPを作成する。
【0063】
また、編集作業を容易にするために、各コートに関する情報を表示可能としてもよい。
【0064】
図10はコート情報の画面表示例を示す図である。図10(A)は実装ブロックPとコートCa、Cb、Ccとの表示画面、図10(B)、(C)はコートCaの情報を表示した画面を示す。
【0065】
図10(A)に示す実装ブロックP内に定義された3つのコートCa、Cb、Ccが表示されている画面で、コートCaにポインタを移動すると、図10(B)に示すコートCaに関する情報が表示される。
【0066】
コートCaに関する情報は、上位実装ブロック名情報D1、コートの面積情報D2、セル占有率情報D3、コートに割り付けられている機能ブロックやセル名の情報D4から構成される。この画面を見ることによりコートCaの詳細を知ることができる。
【0067】
なお、上記図10(B)に示す画面は、図10(A)に示す画面でコートCaにポインタを位置させた場合であり、このままでは、ポインタを移動させると、消去されてしまう。コートの各種編集や評価を行なう際に、この情報画面内の情報D1〜D4を使用するとコートの状況を認識できるので、表示を保持した場合がある。このときには、予め登録しておいたキーボード上のキー、例えば“Z”キーを押下することにより、ポインタが移動しても情報画面にコートCaの情報が表示され続ける。このとき、情報画面は、図10(C)に示すような表示となる。図10(C)に示す情報画面にはLOCK表示DSP1が表示される。LOCK表示DSP1により画面上のデータが保持されていることが設計者に通知される。なお、情報画面を消す場合には、予め登録しておいたキーボード上のキー、例えば“ESC”キーを押下する。
【0068】
設計者は、各コートの詳細情報が表示された情報画面を参照して、設計作業を行うことができるため、コートの状態や、周囲の状況などを把握しつつ設計作業を進めることができ、よって、設計作業の効率を向上させることができる。また、他の階層の設計時に不都合が生じることがなくなるため、設計工程の手戻りを解消できる。
【0069】
さらに、設計の作業性を向上させるために、パラメータを設定することにより自動的にコートを生成したり、コートのセル占有率を調整したりできるようにしてもよい。
【0070】
例えば、コートの面積SCを、機能ブロックやセルのゲート面積SLとコート面積に対するセル面積の目標占有率OT、余裕度R等の面積を決定するパラメータを用いて算出する。パラメータは外部から指定する。なお、特に指定の無い場合はデフォルト値を使用する。ただし、パラメータ間には優先度を設けておく。例えば、目標占有率と余裕度が指定された場合、目標占有率を優先する。
【0071】
以下が指定されたパラメータを用いてコート面積を計算する式を示す。
【0072】
目標セル占有率を適用する場合:SC=SL*100/OT 式1 余裕度を適用する場合: SC=SL*R 式2上記式(1)、(2)で算出した面積と指定されたコートの縦横比(特に指定の無い場合は1対1)に基づいて、コートを自動作成する。
【0073】
図11はパラメータ設定によるセル占有率の自動調整について説明するための図を示す。図11(A)は調整前のコートの表示例、図11(B)はパラメータ設定画面例、図11(C)は調整後のコート表示例を示す。
【0074】
図11(A)は、縦横の長さがそれぞれLでセル占有率が50%のコートである。コートに割り付けられている機能ブロックやセルを変更せずに、セル占有率を40%にするには、コートの大きさを変更する必要がある。設計者がセル占有率を選択するためのモードを選択すると、図11(B)に示すようなパラメータ設定画面が表示される。設計者によりパラメータ設定画面の占有率を指定するボックスに「40」が入力されると、上記の式(1)によりコートの面積が計算される。計算されたコートの面積から設定された縦横比に応じた矩形が形成される。ここでは、コートの縦横比が1対1なので、図11(C)に示すように縦横の長さがそれぞれ5/4倍され、セル占有率が40%となるコートに自動変更される。
【0075】
以上のようにセル占有率を所望の値に設定するだけでコートのセル占有率を変更したり、所望のセル占有率のコートを生成したりすることができ、設計を効率よく行える。
【0076】
また、設計作業を効率よく行うためにコート間での論理セルの移動を可能としてもよい。
【0077】
図12は、コート間での論理セルの移動を説明するための図を示す。図12(A)は移動前の実装ブロックの状態、図12(B)はコートCaの論理のすべてをコートCbに移動した場合の実装ブロックの状態、図12(C)はコートCaの論理アサインリスト、図12(D)はコートCaの論理の一部をコートCbに移動した場合の実装ブロックの状態を示す。
【0078】
コートCaには、図12(A)のグラフGaに示すようなセル占有率で機能ブロックとセルが割り付けられている。コートCbには、論理が何も割り付けられていない。なお、コートCbのサイズは、コートCaより大きいサイズに設定されている。
【0079】
コートCaに割り付けられているすべての機能ブロックとセルをコートCbに移動するには、設計者は、まず移動コマンドを選択する。次に、移動元コートCa、移動先コートCbの順で選択する。上記操作によりコートCaのすべての機能ブロックとセルがコートCbに移動する。コートCaのすべての機能ブロックとセルがコートCbに移動することにより、コートCbのサイズはコートCaのサイズより大きいため、機能ブロック及びセルのコートCbでの占有率を低下させることができる。
【0080】
コートCaに割り付けられている一部の機能ブロックやセルをコートCbに移動させる場合には、図12(C)に示す論理アサインリストを使用する。図12(A)に示す状態で、設計者が移動コマンドを選択し、移動元のコートCaを選択すると、図12(C)に示すコートCaに設定された機能ブロック及びセルの論理アサインリストが表示される。
【0081】
設計者は、図12(C)に示す論理アサインリストから移動させたい機能ブロックとセルを選択する。選択された機能ブロック及びセルは、例えば、図12(C)に示すように反転表示される。次に、移動先のコートCbを選択すると、論理アサインリストで指定された機能ブロックとセルがコートCbに移動する。論理アサインリストで指定された機能ブロックとセルがコートCaからコートCbに移動すると、図12(D)に示すようにコートCaのセル占有率が低下し、コートCbのセル占有率が増加する。
【0082】
以上のように必要に応じて論理をコート間でやり取りできるので、セル占有率を容易に調整でき、設計作業の効率を向上させることができる。
【0083】
また、機能ブロックとセルのコートへの割付を解除することもできる。
【0084】
図13は、機能ブロックとセルのコートへの割付を解除する動作を説明するための図を示す。図13(A)は論理解除前の状態、図13(B)はコートCaからすべての論理を解除した後の状態、図13(C)はコートCaの論理アサインリストの表示例、図13(D)はコートCaから論理の一部を解除した後の状態を示す。
【0085】
コートCaに割り付けられたすべての論理を解除するには、設計者は、まず、解除コマンドを選択する。次に、コートCaをダブルクリックすることにより、コートCaのすべての機能ブロックとセルが図13(B)に示すように解除される。
【0086】
また、コートCaに割り付けられている一部の機能ブロックやセルを解除する場合には、論理アサインリストを使用する。図13(A)に示す状態で、解除コマンドを選択し、コートCaを選択すると図13(C)に示すような論理アサインリストが表示される。設計者は、論理アサインリストから解除を行なう機能ブロック及びセルを選択する。選択された機能ブロック及びセルは、図13(C)に示すように反転表示される。次に、コートCaをクリックすると、論理アサインリストで指定した機能ブロック及びセルがコートCaから解除され、図13(D)に示すようにセル占有率が低下して表示される。
【0087】
このように必要に応じてコートCaから機能ブロック及びセルを解除できるので、設計作業を効率よく行える。
【0088】
編集時に必要に応じてコートを結合できるようにしてもよい。
【0089】
図14は複数のコートを結合させる動作を説明するための図を示す。図14(A)は結合前の実装ブロックPの状態、図14(B)は結合後の実装ブロックPの状態を示す。
【0090】
実装ブロックPに機能ブロックとセルが割り付けられているコートCa、Cb、Ccを含む複数のコートを有する。
【0091】
実装ブロックP内の3つのコートCa、Cb、Ccを結合し、1つのコートにする場合は、まず、結合コマンドを選択し、次に結合しようとするコートCa、Cb、Ccを選択する。この時、選択された各コートの頂点座標のうち最大座標(x1、y1)と最小座標(x2、y2)を求め、これら2点を頂点とした矩形領域を結合後の新しいコートCdとする。なお、結合前に3つのコートCa、Cb、Ccに割り付けられている機能ブロックやセルは、新たなコートCdに割り付けられる。
【0092】
また、単一のコートを複数のコートに細分化する編集も可能とされている。
【0093】
図15は単一のコートを複数のコートに分割編集する動作を説明するための図を示す。図15(A)は論理がアサインされたコートの分割前の状態、図15(B)はコートを3×3に分割したときのコートイメージ、図15(C)は単一のコートを3×3に分割した後の状態を示す。
【0094】
図15(A)に示される単一のコートCaを複数のコートCa1〜Ca9に細分割する場合は、設計者は、まず、分割コマンドを選択する。次に、縦横の分割数、または、コートの縦横の長さを指定する。
【0095】
コートの縦方向の分割数と横方向の分割数が指定されると、図15(B)に示すようにコートCaが9個のコートCa1〜Ca9に細分割される。このとき、分割元のコートに機能ブロックが割り付けられている場合には、分割前コート内でパスのレベルソート等のアルゴリズムを用いることにより、図15(B)に示すようにコートCa内に配置されたセルB1〜B9の仮想配置位置を求め、仮想配置位置に最も近い分割後のコートにセルB1〜B9の割り付けを行なう。これにより、各分割コートCa1〜Ca9にセルB1〜B9が割り振られる。割り振られた機能ブロックにより各分割コートCa1〜Ca9のセル占有率が算出され、図15(C)に示すようにセル占有率を示すグラフGa2、Ga3、Ga5、Ga7が表示される。
【0096】
また、本実施例では、コート間の重なり、実装ブロックからのはみ出しを容易に補正できる構成とされている。
【0097】
図16はコートの重なり及び実装ブロックからのはみ出しを補正する動作を説明するための図を示す。図16(A)はコートCa、Cbが重なった状態、図16(B)はコートCa、Cbが実装ブロックPからはみ出した状態、図16(C)はコートCa、Cbの重なり及び実装ブロックPからのはみ出しが補正された状態を示す。
【0098】
図16(A)に示すようにコートCaとCbとは重なっている。コートCaとCbの重なりを解消するために、設計者がマニュアルでコートCa、Cbを移動させることにより、図16(B)に示すようにコートCa、Cbの一部が実装ブロックPに重なっており、物理的な正当性が損なわれたとする。このような場合、設計者がチェックコマンドを選択すると、実装ブロックPとコートCa、Cbとの重なりをチェックし、コートCa、Cbの位置を自動補正し、図16(C)に示すように実装ブロックPとコートCa、Cbとの重なりが解消される。
【0099】
なお、本実施例のフロアプラン作成・表示処理部41では、パス上のセルの配置も容易に行える。
【0100】
図17、図18は、パス上のセルの配置方法を説明するための図を示す。図17(A)はセルBa〜Be間のパス、図17(B)はセルBa〜Beの配置、図18(A)は通過点a、bが選択された状態、図18(B)はセルBb、Bc、Bdの配置方法を説明するための図である。
【0101】
図17(A)に示すようにセルBa〜BeがセルBa→Bb→Bc→Bd→Beの順に接続される。セルBa〜Beは、図17(B)に示すようにセルBaがコートC3に、セルBeがコートC7に、セルBb〜BdがコートC5に割り付けられている。
【0102】
パスの開始の機能ブロックCaが割り付けられているコートC3とパスの終了の機能ブロックCeが割り付けられているコートC7とを結ぶパスが最短になるコートC3との頂点aとコートC7の頂点bが通過座標点として選択される。図18(A)に示すようにパスの始点となるセルBaはコートC3の中央に仮想配置され、パスの終点となるセルBeはコートC7の中央に仮想配置される。
【0103】
また、パスが通過するコートC5に設けられたセルBb、Bc、Bdは、図18(B)に示すように通過点aと通過点bとを結ぶ線分上に始点側から終点側に等間隔に仮想配置される。
【0104】
次に、分岐を有するパスが設定されている場合の機能ブロックの仮想配置方法について説明する。
【0105】
図19〜図21は、分岐するパス上のセルの配置方法を説明するための図である。
【0106】
図19(A)はセルBa〜Bg間のパス、図19(B)はセルBa〜Bgの配置、図20(A)はパスに応じてセルBa〜Beが仮想配置された状態、図20(B)はセルBb〜Bf、Bgを仮想配置する方法を説明するための図、図21はすべてのセルBa〜Bgが仮想配置された状態を示す。
【0107】
図19(A)に示すようにセルBa〜Beは、メインパスによりセルBa→Bb→Bc→Bd→Beの順に接続される。また、図19(A)に示すようにセルBb、Bf、Bgは、分岐されたパスによりセルBb→Bf→Bgの順に接続される。
【0108】
セルBa〜Bgは、図19(B)に示すようにセルBaがコートC3に、セルBeがコートC7に、セルBb〜BdがコートC5に割り付けられ、セルBf、BgがコートC6に割り付けられている。
【0109】
セルBa〜Beは、図17、図18で説明した仮想配置方法により仮想配置される。なお、このとき、仮想配置の優先順位は距離の長いパスが優先される。
【0110】
セルBf、Bgを仮想配置する場合には、まず、セルBf、Bgが割り付けられているコートC6の通過点座標を求める。ここで分岐元セルBbの仮配置位置は既に決定しているため、通過点座標cは、セルBbの仮配置位置と、セルBf、Bgが割り付けられているコートC6との位置関係で決定する通過点座標cは、例えば、セルBbのコートC6に近接した頂点とコートC6の中心位置とを結ぶ線分とコートC6の外周との交点に設定される。次に、セルBf及びセルBgを通過点座標cとコートC6との中心座標とを結ぶ線分上に均等に配置する。以上により、図21に示すようにセルBa〜Bgが仮想配置される。
【0111】
以上のようにして、実装ブロックP、コートC、セルBのサイズや配置が設定される。
【0112】
ここで、再び、図4に戻って説明を続ける。
【0113】
上記のような調整によりステップS5で、セル占有率が基準内になると、ステップS6でディレイの計算が行われる。ステップS6で計算されたディレイに基づいてステップS7でパスディレイリストを出力装置13に表示するとともに、ステップS8でパス経路を出力装置13に表示する。
【0114】
図22にディレイの計算及び表示方法を説明するための図を示す。図22(A)はパス経路を示し、図22(B)はディレイリストを示す。
【0115】
図22では、セルBa〜Beの間のディレイを計算し、表示する例について説明する。
【0116】
セルBaとセルBb、セルBbとセルBc、セルBcとセルBd、セルBdとセルBeの各機能ブロック間のネット線長を接続関係にある機能ブロックの接続関係のあるピン座標を使用することによりマンハッタン長を用いて求める。求められたマンハッタン長によりネットディレイ、ゲートディレイを既存のテクノロジ固有の計算式に当てはめて計算し、例えば、図22(A)に示すようにパスの経路を表示するとともに、図22(B)に示すような詳細ディレイリストを表示する。
【0117】
図22(B)において、Tlineはネットディレイを、Tcellはゲートディレイを、Totalは累積ディレイを表す。
【0118】
図22(B)に示すディレイリストにより設計者は、ステップS9でディレイが基準値を超えたか否かを判断する。ステップS9で基準値を超えてないければ、所望の回路速度が得られるため、処理を終了する。また、ステップS9で基準値を越えれば、ステップS10でセルBa、Bb、Bc、Bd、Beやセルが含まれる機能ブロックを他のコートに移動させることにより、ディレイが基準値を超えないようにする。
【0119】
図23、図24はセルBcの移動を行うための動作説明図を示す。図23(A)は複数パスの接続関係及びパス上のセルBa〜Beの割り付け例である。
【0120】
図23(A)では、セルBa→Bb→Bd→Beが接続されているパスと、セルBa→Bb→Bcが接続されているパスの2パスが存在する。なお、セルBaはコートC9に、セルBbはコートC5に、セルBcはコートC4に、セルBd、BeはコートC3に割り付けられている。
【0121】
セルBcをコートC4からコートC8に移動させ、図17〜図21に示す仮配置方法により再仮配置を行った場合、パスの長さが大きい方が優先して配置されるため、セルBa→Bb→Bd→Beの仮配置が先に行われる。これにより図23(B)に示すようにセルBbがコートC5内で右方向に移動する。これに伴い、セルBa→Bb間、セルBb→Bd間のネット線長が変化する。この結果として、セルBa→Bb→Bd→Beのディレイが変化する。これでは、所望のディレイを得るために機能ブロックを移動させた結果、他のパスのディレイが変化し、所望のディレイが得られなくなる可能性があり、設計が複雑になる。
【0122】
そこで、セルBcが移動しても、セルBa→Bb→Bd→Beのディレイが変化しないようにする必要がある。このためには、セルBcの移動によって、セルBbの移動が起こらないようにする必要がある。
【0123】
セルBcの移動によって、セルBbの移動が起こらないようにするためには、図24に示すようにコートC5内のセルBbが存在する位置にごく狭いコートC10を設定し、コートC10にセルBbを割り付ける。コートC10にセルBbを割り付けることにより、セルBbはごく狭いコートC10内でしか移動できない、すなわち、移動しなくなる。これにより、セルBcの移動によるセルBa→Bb間及びセルBb−Bd間の線長の変化がなくなるため、セルBa→Bb→Bd→Beのディレイは、移動前と変化がなく、セルBc−Bbのディレイだけを調整できるようになる。
【0124】
以上のようにしてセルBcを移動させ、ディレイを基準値を超えないように調整する。
【0125】
調整後、ステップS3に戻ってセル占有率をチェックした後、再びディレイをチェックする。
【0126】
従来は、数十万ゲートの実装ブロックがフロアプランでの処理単位となっていたが、本実施例では回路規模に応じて仮想配置領域、すなわち、コートをLSIチップT内や実装ブロックP内に作成することにより、処理単位が数万ゲート以下となり、フロアプランでのセル占有率及びディレイなどのタイミング解析を高精度に行なうことができる。
【0127】
これにより、設計者が意図したレイアウトイメージをフロアプラン段階で実現することが可能となり、実装設計後に発生するタイミング問題の原因を設計初期段階で究明することが可能となる。よって、設計時の手戻りを最小限に抑制することができる。このため、設計の効率化が図れる。また、ディレイが十分に考慮されるため、LSI回路の品質向上に大きく貢献するものである。
(付記1)
所定の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、前記所定階層のブロック設定し、配置するブロック配置処理部と、前記所定階層とは異なる階層のブロックを前記所定階層上に仮想配置する領域割付処理部と、前記所定階層及び下位階層のブロックの配置状態を評価するブロック評価処理部とを有することを特徴とする集積回路設計装置。
(付記2)
前記ブロック評価処理部は、前記下位階層のブロックの面積がその上位階層のブロックの面積に占める割合を算出する面積比計算部を有することを特徴とする付記1記載の集積回路設計装置。
(付記3)
前記面積比計算部は、少なくとも配線及び配線禁止領域を反映することを特徴とする付記2記載の集積回路設計装置。
(付記4)
前記ブロック評価処理部は、前記面積比計算部で算出された面積比を図形により表示することを特徴とする付記2又は3記載の集積回路設計装置。
(付記5)
前記ブロック評価処理部は、前記ブロック間の経路のディレイを算出するディレイ計算処理部を有することを特徴とする付記1又は2記載の集積回路設計装置。
(付記6)
前記ブロック評価処理部は、前記ディレイ計算処理部で計算されたディレイのうち基準値を超えたパスを表示することを特徴とする付記5記載の集積回路設計装置。
(付記7)
前記ブロック評価処理部は、前記ディレイ計算処理部で計算されたディレイが前記基準値を超えたパスをリスト表示するパスリスト表示処理部を有することを特徴とする付記6記載の集積回路設計装置。
(付記8)
前記ブロック評価処理部は、前記ディレイ計算処理部で計算されたディレイが前記基準値を超えたパスの経路を表示するパス経路表示処理部を有することを特徴とする付記6又は7記載の集積回路設計装置。
(付記9)
前記ブロックを再編集可能としたことを特徴とする付記1乃至8のいずれか一項記載の集積回路設計装置。
(付記10)
前記ブロックの位置の正当性を判断し、前記ブロックが正当な位置となるように前記ブロックの位置を補正する補正部を有することを特徴とする付記1乃至9のいずれか一項記載の集積回路設計装置。
(付記11)
所定の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計方法であって、前記所定の階層のブロックを設定し、配置するブロック配置処理手順と、前記所定階層とは異なる階層のブロックを前記所定階層上に仮想配置するブロック割付処理手順と、前記所定階層及び下位階層のブロックの配置状態を評価するブロック評価処理手順とを有することを特徴とする集積回路設計方法。
(付記12)
前記ブロック評価処理手順は、前記下位の階層のブロックの面積がその上位の階層のブロックの面積に占める割合を算出することを特徴とする付記11記載の集積回路設計方法。
(付記13)
前記面積比の計算は、少なくとも配線及び配線禁止領域を反映することを特徴とする付記12記載の集積回路設計方法。
(付記14)
前記ブロック評価処理手順は、算出された面積比を図形により表示することを特徴とする付記12又は13記載の集積回路設計方法。
(付記15)
前記ブロック評価処理手順は、前記ブロック間の経路のディレイを算出することを特徴とする付記11乃至14のいずれか一項記載の集積回路設計方法。
(付記16)
前記ブロック評価処理手順は、計算されたディレイのうち基準値を超えたパスを表示することを特徴とする付記15記載の集積回路設計方法。
(付記17)
前記ブロック評価処理手順は、計算されたディレイが前記基準値を超えたパスをリスト表示することを特徴とすることを特徴とする付記16記載の集積回路設計方法。
(付記18)
前記ブロック評価処理手順は、計算されたディレイが前記基準値を超えたパスの経路を表示することを特徴とする付記16又は17記載の集積回路設計方法。
(付記19)
前記ブロックを再編集可能としたことを特徴とする付記11乃至18のいずれか一項記載の集積回路設計方法。
(付記20)
前記ブロックの位置の正当性を判断し、前記ブロックが正当な位置となるように前記ブロックの位置を補正することを特徴とする付記11乃至19のいずれか一項記載の集積回路設計方法。
(付記21)
所定の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計プログラムであって、前記所定の階層にブロックを設定し、配置するブロック配置処理手順と、前記所定階層とは異なる階層のブロックを前記所定階層上に仮想配置するブロック割付処理手順と、前記所定階層及び下位階層のブロックの配置状態を評価するブロック評価処理手順とを有することを特徴とするコンピュータで実行可能なプログラム。
(付記22)
前記ブロック評価処理手順は、前記下位の階層のブロックの面積がその上位の階層のブロックの面積に占める割合を算出することを特徴とする付記21記載のプログラム。
(付記23)
前記面積比の計算は、少なくとも配線及び配線禁止領域を反映することを特徴とする付記22記載のプログラム。
(付記24)
前記ブロック評価処理手順は、算出された面積比を図形により表示することを特徴とする付記22又は23記載のプログラム。
(付記25)
前記ブロック評価処理手順は、前記ブロック間の経路のディレイを算出することを特徴とする付記21乃至24のいずれか一項記載のプログラム。
(付記26)
前記ブロック評価処理手順は、計算されたディレイのうち基準値を超えたパスを表示することを特徴とする付記25記載のプログラム。
(付記27)
前記ブロック評価処理手順は、計算されたディレイが前記基準値を超えたパスをリスト表示することを特徴とすることを特徴とする付記26記載のプログラム。
(付記28)
前記ブロック評価処理手順は、計算されたディレイが前記基準値を超えたパスの経路を表示することを特徴とする付記26又は27記載のプログラム。
(付記29)
前記ブロックを編集可能としたことを特徴とする付記21乃至28のいずれか一項記載のプログラム。
(付記30)
前記ブロックの位置の正当性を判断し、前記第1〜第3ブロックが正当な位置となるように前記ブロックの位置を補正することを特徴とする付記21乃至29のいずれか一項記載のプログラム。
【0128】
なお、本発明は上記実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形例が考えられることは言うまでもない。
【図面の簡単な説明】
【0129】
【図1】本発明の一実施例のブロック構成図である。
【図2】集積回路設計プログラムの機能ブロック図である。
【図3】機能ブロック、実装ブロック、仮想配置領域(コート)、パスを説明するための図である。
【図4】本発明の一実施例の設計方法のフローチャートである。
【図5】実装ブロック及びコートの作成を説明するための図である。
【図6】コートのセル占有率の表示例を示す図である。
【図7】セルの配置が不可能な領域を反映したグラフ表示を示す図である。
【図8】階層ブロック毎の切替表示を示す図である。
【図9】複数のコートをまとめる場合の動作を説明するための図である。
【図10】コート情報の画面表示例を示す図である。
【図11】パラメータ設定によるセル占有率の自動調整について説明するための図である。
【図12】コート間での論理セルの移動を説明するための図である。
【図13】機能ブロックとセルのコートへの割付を解除する動作を説明するための図である。
【図14】複数のコートを結合させる動作を説明するための図である。
【図15】単一のコートを複数のコートに分割編集する動作を説明するための図である。
【図16】コートの重なり及び実装ブロックからのはみ出しを補正する動作を説明するための図である。
【図17】パス上のセルの配置方法を説明するための図である。
【図18】パス上のセルの配置方法を説明するための図である。
【図19】分岐するパス上のセルの配置方法を説明するための図である。
【図20】分岐するパス上のセルの配置方法を説明するための図である。
【図21】分岐するパス上のセルの配置方法を説明するための図である。
【図22】ディレイの計算及び表示方法を説明するための図である。
【図23】セルを他のコートに移動するための動作説明図を示す。
【図24】セルを他のコートに移動するための動作説明図を示す。
【符号の説明】
【0130】
1 集積回路設計装置
11 データ処理装置
12 入力装置
13 出力装置
21 ハードディスクドライブ
22 RAM
23 CPU
24 可換式記憶装置
25 通信装置
31 集積回路設計プログラム
41 フロアプラン作成・表示処理部
42 機能ブロック割付処理部
43 面積比率計算処理部
44 パスディレイ計算処理部
45 パスリスト表示処理部
46 パス経路表示処理部

【特許請求の範囲】
【請求項1】
入力手段により設計者から複数の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、
前記複数階層毎に設定されたブロックを所定階層に配置するブロック配置処理部と、
前記所定階層とは異なる階層のブロックを前記所定階層上に設定されるブロックに仮想配置する領域割付処理部と、
前記所定階層及び前記所定階層に対して下位となり、仮想配置される下位階層のブロックの配置状態を評価するブロック評価処理部とを有し、
前記ブロック評価処理部は、前記下位階層のブロックの面積が前記所定階層のブロックの面積に占める割合を算出し、算出された前記下位階層のブロックの面積が前記所定階層に配置されるブロックの面積に占める割合を図形により表示する集積回路設計装置。
【請求項2】
前記ブロック評価処理部は、階層切替の入力に応じて、面積比を表示するブロックの階層を切り替える請求項1記載の集積回路設計装置。
【請求項3】
前記ブロック評価処理部は、算出した前記ブロックの面積比に応じて、前記ブロックの面積比を示す図形を視覚的に区別して表示する請求項1又は2記載の集積回路設計装置。
【請求項4】
入力手段により設計者から複数の階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、
前記複数階層毎に設定されたブロックを所定階層に配置するブロック配置処理部と、
前記所定階層とは異なる階層のブロックを前記所定階層上に設定されるブロックに仮想配置する領域割付処理部と、
前記所定階層及び前記所定階層に対して下位となり、仮想配置される下位階層のブロックの配置状態を評価するブロック評価処理部とを有し、
前記ブロック評価処理部は、前記下位階層のブロックの面積が、前記所定階層に配置されたブロックの面積に占める割合を算出する面積比計算部と、
前記算出されたブロックの面積比が基準内であるか否かを判別し、基準内であると判別された場合に仮想配置された下位階層のブロック間の経路のおけるディレイを算出するディレイ計算処理部とを有する集積回路設計装置。
【請求項5】
前記ブロック評価処理部は、前記ディレイ計算処理部で計算されたディレイが前記基準値を超えたパスを表示する請求項4記載の集積回路設計装置。
【請求項6】
前記ブロック評価処理部は、前記ディレイ計算処理部で計算されたディレイが前記基準値を超えたパスをリスト表示するパスリスト表示処理部を有する請求項5記載の集積回路設計装置。
【請求項7】
前記ブロック評価処理部は、前記ディレイ計算処理部で計算されたディレイが前記基準値を超えたパスの経路を表示するパス経路表示処理部を有する請求項5又は6記載の集積回路設計装置。
【請求項8】
入力手段により設計者から複数の階層に階層毎にブロックを設定し、配置することにより集積回路の設計を行う集積回路設計装置であって、
前記集積回路の実装ブロック内に、仮想配置領域を設定するブロック配置処理部と、
前記ブロックを、前記仮想配置領域上に仮想配置する領域割付処理部と、
前記仮想配置された機能ブロック間の経路におけるディレイを算出するディレイ計算処理部とを有する集積回路設計装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2008−176798(P2008−176798A)
【公開日】平成20年7月31日(2008.7.31)
【国際特許分類】
【出願番号】特願2008−27368(P2008−27368)
【出願日】平成20年2月7日(2008.2.7)
【分割の表示】特願2001−266401(P2001−266401)の分割
【原出願日】平成13年9月3日(2001.9.3)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】