説明

半導体集積回路の生成方法、および記録媒体

【課題】半導体集積回路の設計作業の効率化を図ること。
【解決手段】本生成手法では、対象回路のレイアウト領域上に、モニタパス内の複数のFFを所定の配置間隔で配置する。そして、対象回路のレイアウト領域上に、対象回路内の回路素子群を配置するとともに、モニタパス内の回路素子群のFFを除く残余の回路素子を配置する。このあと、レイアウト上に配置されている回路素子間を配線して、ユーザ回路およびモニタパスを生成する。つぎに、ユーザ回路のSTAを実行し、さらに、モニタパスのSTAを実行する。そして、ユーザ回路のタイミング解析結果R1とモニタパスのタイミング解析結果R2とを比較分析して、対象回路内で発生しているタイミングエラーの原因を特定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路の生成方法、および記録媒体に関する。
【背景技術】
【0002】
一般に、LSIの開発工程では、対象回路のRTL(Register Transfer Level)記述を論理合成して、ゲート・レベルのネットリストを作成する。このあと、対象回路のネットリストを用いて、フロアプラン、配置配線、クロックツリー合成などの工程を経て、対象回路のタイミング解析を実行する。
【0003】
そして、タイミング違反が検出された場合、バッファリング(バッファ挿入)やサイジング(ゲート・リサイズ)などの最適化を行なう。また、最適化によってタイミング違反が解消しない場合は、上流工程まで遡って、RTL記述を変更するなどの対策を行なう必要がある。
【0004】
従来において、LSIのレイアウト設計の効率化を図るための技術が開示されている(たとえば、下記特許文献1参照。)。具体的には、たとえば、予めマクロの遅延モデルを作成し、この遅延モデルを用いてトップレベルの遅延計算を行なうことで、設計対象とする機能ブロック内のクロック供給対象のマクロの各々間のクロックスキューを削減する技術がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−110797号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した従来技術では、タイミング違反が検出された場合に、バッファリングやサイジングなどにより解消できる問題なのか、あるいは、RTL記述の変更が必要な問題なのかを判断することが難しい。そのため、従来技術では、配置や最適化の手法の組み合わせを変えて複数通りのレイアウトを試行し、各レイアウトでのタイミング解析結果や配線性を確認して問題のないものを選択する必要がある。その結果、タイミング最適化にかかる作業負担および作業時間が増大し、ひいては設計期間の長期化を招くという問題があった。
【0007】
本発明は、上述した従来技術による問題点を解消するため、半導体集積回路の設計作業の効率化を図ることができる半導体集積回路の生成方法、および記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するため、開示技術は、半導体集積回路情報のタイミングを解析することで半導体集積回路を生成する方法において、前記半導体回路情報とモニタパス回路情報とに基づいてフロアプランを行って第1データを生成し、モニタパス位置情報に基づいて第1データ内にモニタパス用FFとモニタパス用回路要素とを配置して第2データを生成し、前記第2データに基づいて配置または配線を行って第3データを生成し、前記第3データの前記半導体回路情報に対応するデータに対してタイミング解析を行って第1タイミング解析結果を生成し、前記第3データのモニタパス回路情報に対応するデータに対してタイミング解析を行って第2タイミング解析結果を生成し、前記第1タイミング解析結果と前記第2タイミング解析結果とを比較することで前記半導体回路情報を修正して前記半導体集積回路を生成することを要件とする。
【発明の効果】
【0009】
開示の半導体集積回路の生成方法、および記録媒体によれば、半導体集積回路の設計作業の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【0010】
【図1】本生成手法の一実施例の概要を示す説明図である。
【図2】モニタパスの回路構成を一部抜粋して示す説明図である。
【図3】実施の形態にかかる設計支援装置のハードウェア構成を示すブロック図である。
【図4】設計支援装置の機能的構成を示すブロック図である。
【図5】クロック周期情報の具体例を示す説明図である。
【図6】作成部の機能的構成の一例を示すブロック図である。
【図7−1】モニタパスの作成手順の一例を示す説明図(その1)である。
【図7−2】モニタパスの作成手順の一例を示す説明図(その2)である。
【図8】測定結果テーブルの記憶内容の一例を示す説明図である。
【図9】FF配置位置情報の具体例を示す説明図(その1)である。
【図10】FF配置位置情報の具体例を示す説明図(その2)である。
【図11】モニタパスの一例を示す説明図(その1)である。
【図12】モニタパスの一例を示す説明図(その2)である。
【図13】ユーザ回路のタイミング解析結果の具体例を示す説明図である。
【図14】モニタパスのタイミング解析結果の具体例を示す説明図である。
【図15】関連付け結果テーブルの具体例を示す説明図である。
【図16】タイミング解析結果の比較分析手法の一例を示す説明図である。
【図17】混雑領域リストの記憶内容の一例を示す説明図である。
【図18】変更対象リストの記憶内容の一例を示す説明図である。
【図19】設計支援装置の設計支援処理手順の一例を示すフローチャートである。
【図20】モニタパス作成処理の具体的処理手順の一例を示すフローチャートである。
【図21】配置配線処理の具体的処理手順の一例を示すフローチャートである。
【図22】関連付け処理の具体的処理手順の一例を示すフローチャートである。
【図23】決定処理の具体的処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下に添付図面を参照して、この発明にかかる半導体集積回路の生成方法、および記録媒体の好適な実施の形態を詳細に説明する。
【0012】
(本生成手法の一実施例)
まず、本生成手法の一実施例について説明する。図1は、本生成手法の一実施例の概要を示す説明図である。本生成手法では、タイミングエラーの原因を特定するために、対象回路のレイアウト領域上に、元の論理回路とともに検査用のモニタパスを配置配線する。そして、本生成手法では、元の論理回路とモニタパスの各々についてタイミング解析を実行し、それら解析結果を比較分析することで、タイミングエラーの原因を特定してタイミング最適化の効率化を図る。以下、本生成手法の一実施例にかかる一連の手順(1)〜(6)を説明する。
【0013】
(1)本生成手法では、対象回路のレイアウト領域上に、モニタパスに含まれる複数のフリップフロップ(以下、「FF」という)を所定の配置間隔で配置する。ここで配置されたFFには、以降の配置配線処理において、配置位置が変更されないように変更不能の属性が設定される。なお、所定の配置間隔についての詳細な説明は後述する。
【0014】
(2)本生成手法では、対象回路のレイアウト領域上に、対象回路に含まれる回路素子群を配置するとともに、モニタパスに含まれる回路素子群のうち配置済みのFFを除く残余の回路素子を配置する。ここで、回路素子とは、たとえば、FF、インバータ、バッファ、ANDゲート、ORゲートなどのセルである。
【0015】
(3)本生成手法では、各回路素子間の接続関係に従って、レイアウト上に配置されている回路素子間を配線して、対象回路内の元の論理回路(以下、「ユーザ回路」という)およびモニタパスを生成する。
【0016】
(4)本生成手法では、対象回路のレイアウト領域上に生成されたユーザ回路のタイミング解析(たとえば、STA:静的遅延解析)を実行する。この結果、ユーザ回路のタイミング解析結果R1が出力される。なお、ユーザ回路のタイミング解析結果R1の具体例は図13を用いて後述する。
【0017】
(5)本生成手法では、対象回路のレイアウト領域上に生成されたモニタパスのタイミング解析を実行する。この結果、モニタパスのタイミング解析結果R2が出力される。なお、モニタパスのタイミング解析結果R2の具体例は図14を用いて後述する。
【0018】
(6)本生成手法では、ユーザ回路のタイミング解析結果R1とモニタパスのタイミング解析結果R2とを比較分析して、対象回路内で発生しているタイミングエラーの原因を特定する。なお、タイミング解析結果R1,R2の比較分析手法についての詳細な説明は図16を用いて後述する。
【0019】
以上説明したように、本生成手法では、タイミング解析結果R1,R2を比較分析することで、対象回路内で発生しているタイミングエラーの原因を特定し、配線性やタイミング最適化の困難性を判断する。これにより、対象回路に対して、バッファリングやサイジングによる最適化を行なうのか、あるいは、RTL記述の変更などの対策が必要なのかを的確に判断できる。
【0020】
(モニタパスの特性)
つぎに、対象回路に挿入される検査用のモニタパスの特性について説明する。図2は、モニタパスの回路構成を一部抜粋して示す説明図である。図2において、モニタパス200は、FF201,202と、インバータ203〜205を含む構成である。なお、図2に示すモニタパス200は、本実施の形態にかかるモニタパスの一例である。
【0021】
モニタパス200内のFF201,202は、配置位置が変更されないように変更不能の属性が設定されて対象回路のレイアウト領域上に配置される(図1中(1))。このため、FF201,202の配置位置は、対象回路の配置配線処理(図1中(2)、(3))において変更されない。
【0022】
一方、モニタパス200内のインバータ203〜205は、対象回路の配置配線処理において、ユーザ回路内の回路素子群とともに配置配線される。したがって、モニタパス200は、論理的には図2中(a)のような回路構成となるが、配置密度や配線密度が高い領域では図2中(b)のように配線が迂回したり、バッファ挿入が行なわれる。ここでは、モニタパス200内に2個のインバータと1個のバッファが挿入されている。
【0023】
ここで、モニタパス200内のFF201,202間の配置間隔は、図2中(b)のように配線の迂回やバッファ挿入が行なわれると、後段のFF202でタイミングエラーが発生するように設定される。換言すれば、配線の迂回やバッファ挿入が行なわれない場合は、FF201,202間で確実に信号が伝搬される。
【0024】
本生成手法では、このようなモニタパス200の特性を利用することで、レイアウト領域上の配線性やタイミング最適化の困難性を判断する。具体的には、たとえば、モニタパス200内のFF202でタイミングエラーが発生すると、FF202近傍の配置密度や配線密度に問題があると判断する。一方、FF202でタイミングエラーが発生していない場合は、FF202近傍の配置密度や配線密度に問題がないと判断する。
【0025】
なお、FF201,202間の配置間隔は、ある程度の配線の迂回やバッファ挿入が行なわれてもタイミングエラーが発生しないように多少のマージン(余裕)を設定可能である。マージンの大きさは、FF201,202間の配置間隔を調節することで任意に設定可能である。
【0026】
(設計支援装置のハードウェア構成)
つぎに、本実施の形態にかかる設計支援装置のハードウェア構成について説明する。図3は、実施の形態にかかる設計支援装置のハードウェア構成を示すブロック図である。図3において、設計支援装置300は、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、ディスプレイ308と、I/F(Interface)309と、キーボード310と、マウス311と、スキャナ312と、プリンタ313と、を備えている。また、各構成部はバス320によってそれぞれ接続されている。
【0027】
ここで、CPU301は、設計支援装置300の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
【0028】
光ディスクドライブ306は、CPU301の制御にしたがって光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。
【0029】
ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ308は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【0030】
インターフェース(以下、「I/F」と略する。)309は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク314に接続され、このネットワーク314を介して他の装置に接続される。そして、I/F309は、ネットワーク314と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、たとえばモデムやLANアダプタなどを採用することができる。
【0031】
キーボード310は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【0032】
スキャナ312は、画像を光学的に読み取り、設計支援装置300内に画像データを取り込む。なお、スキャナ312は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ313は、画像データや文書データを印刷する。プリンタ313には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【0033】
(設計支援装置の機能的構成)
つぎに、設計支援装置300の機能的構成について説明する。図4は、設計支援装置の機能的構成を示すブロック図である。図4において、設計支援装置300は、入力部401と、作成部402と、配置部403と、生成部404と、取得部405と、検出部406と、関連付け部407と、決定部408と、出力部409と、を含む構成である。この制御部となる機能(入力部401〜出力部409)は、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F309により、その機能を実現する。
【0034】
入力部401は、対象回路に関する回路情報の入力を受け付ける機能を有する。ここで、回路情報は、たとえば、対象回路に関するネットリストNL1と図5に示すクロック周期情報500を含む情報である。ネットリストNL1は、対象回路に含まれる回路素子間(セル間)の接続関係を表わす情報である。クロック周期情報500は、対象回路内のFFを駆動するクロックの周期を表わす情報である。
【0035】
具体的には、たとえば、入力部401が、図3に示したキーボード310やマウス311を用いたユーザの操作入力により、対象回路に関する回路情報を受け付けてもよく、また、データベースやライブラリからの抽出により取得してもよい。なお、入力された回路情報は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0036】
図5は、クロック周期情報の具体例を示す説明図である。図5において、クロック周期情報500は、クロックドメイン名、クロック名、クロック周期およびFF数のフィールド項目を有している。各フィールド項目に情報を設定することで、クロック周期情報500−1〜500−3がレコードとして記憶されている。
【0037】
ここで、クロックドメイン名とは、対象回路内のクロックドメインを識別する名称である。なお、クロックドメインとは、対象回路のうち同一のクロックで動作する同期箇所である。クロック名とは、クロックを識別する名称である。クロック周期とは、各クロックの周期である。FF数とは、各クロックが駆動しているFFの総数である。
【0038】
クロック周期情報500−1を例に挙げると、クロックドメインCD1でのクロックck1のクロック周期はT1であり、クロックck1が駆動しているFF数はk1である。ここで、各クロックck1〜ck3が駆動しているFF数の大小関係を「k1>k2>k3」とすると、対象回路内のクロックck1〜ck3のうち、最も多くのFFを駆動しているクロックck1がメインクロックとなる。
【0039】
作成部402は、対象回路に関する回路情報に基づいて、対象回路内のタイミングエラーの原因を特定するために対象回路に挿入される検査用のモニタパスを作成する機能を有する。具体的には、たとえば、作成部402が、入力された回路情報に基づいて、FF配置位置情報(図9,図10参照)とモニタパスに関するネットリストNL2を作成する。
【0040】
ここで、FF配置位置情報は、対象回路のレイアウト領域上でのモニタパスに含まれるFFの配置位置を表わす情報である。ネットリストNL2は、モニタパスに含まれる回路素子間の接続関係を表わす情報である。なお、作成された作成結果は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。また、作成部402の具体的な処理内容については図6、図7−1および図7−2を用いて後述する。
【0041】
また、作成部402は、半導体回路情報とモニタパス回路情報とに基づいてフロアプランを行って第1データを生成する機能を有する。ここで、半導体回路情報とは、たとえば、対象回路に関するネットリストNL1とクロック周期情報500を含む情報である。また、モニタパス回路情報とは、モニタパスに関するネットリストNL2とFF配置位置情報(図9,図10参照)である。
【0042】
配置部403は、モニタパス位置情報に基づいて第1データ内にモニタパス用FFとモニタパス用回路要素とを配置して第2データを生成する機能を有する。ここで、モニタパス位置情報とは、たとえば、FF配置位置情報(図9,図10参照)である。具体的には、配置部403は、対象回路のレイアウト領域上に、作成されたモニタパスに含まれる複数のFF(モニタパス用FF)を所定の配置間隔で配置する。より具体的には、たとえば、配置部403が、作成されたFF配置位置情報に従って、フロアプランおよび電源配線が終了したレイアウト領域上に、モニタパスに含まれる複数のFFを配置する。
【0043】
レイアウト領域上に配置されたモニタパス内のFFには、これ以降の配置配線処理において、配置位置が変更されないように変更不能の属性が設定される。なお、フロアプランとは、I/Oセルやメモリなどのマクロセルをレイアウト領域上に配置する処理である。配置された配置結果は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0044】
また、配置部403は、モニタパスに含まれる回路素子群のうち、配置済みのFFを除く残余の回路素子(モニタパス用回路要素)を対象回路のレイアウト領域上に配置する。具体的には、たとえば、配置部403が、モニタパスに関するネットリストNL2およびFFの配置結果(フロアプラン情報を含む)に基づいて、モニタパスに含まれる残余の回路素子群をレイアウト領域上に配置する。なお、モニタパス内のFFを除く残余の回路素子の配置処理は、たとえば、既存の配置配線ツールを利用して実行される。
【0045】
より具体的には、配置部403は、半導体集積回路情報に基づいて指定される回路要素配置可能領域を所定の矩形で区画し、矩形の交点にモニタパス用FFを配置し、配置されたモニタパス用FF間にモニタパス用回路要素を配置することにしてもよい。なお、半導体集積回路情報とは、たとえば、フロアプランおよび電源配線が終了したレイアウト領域に関する情報である。
【0046】
また、配置部403は、対象回路に含まれる回路素子群をレイアウト領域上に配置する。具体的には、たとえば、配置部403が、対象回路に関するネットリストNL1およびフロアプラン情報に基づいて、対象回路に含まれる回路素子群をレイアウト領域上に配置する。なお、対象回路内の回路素子群の配置処理は、たとえば、既存の配置配線ツールを利用して実行される。対象回路内の回路素子群を配置する配置処理と、モニタパス内の回路素子群を配置する配置処理の実行順序は、順不同である。
【0047】
生成部404は、第2データに基づいて第3データを生成する機能を有する。具体的には、生成部404は、配置された配置結果に基づいて、レイアウト領域上に配置された回路素子間を配線して、対象回路内の元の論理回路(以下、「ユーザ回路」という)およびモニタパスを生成する。この結果、モニタパスが挿入された挿入後の対象回路に関するレイアウトデータLDが生成される。なお、レイアウト領域上の回路素子間の配線処理は、たとえば、既存の配置配線ツールを利用して実行される。また、生成された生成結果は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0048】
取得部405は、第3データの半導体回路情報に対応するデータに対してタイミング解析を行って第1タイミング解析結果を生成する機能を有する。具体的には、取得部405は、生成された生成結果に基づいて、ユーザ回路のタイミング解析を実行して、ユーザ回路のタイミング解析結果R1を取得する機能を有する。具体的には、たとえば、取得部405が、レイアウトデータLDに基づいて、対象回路内のユーザ回路のSTA(静的遅延解析)を実行して、ユーザ回路のタイミング解析結果R1(たとえば、図13参照)を取得する。
【0049】
また、取得部405は、第3データのモニタパス回路情報に対応するデータに対してタイミング解析を行って第2タイミング解析結果を生成する機能を有する。具体的には、取得部405は、生成された生成結果に基づいて、モニタパスのタイミング解析を実行して、モニタパスのタイミング解析結果R2を取得する機能を有する。具体的には、たとえば、取得部405が、レイアウトデータLDに基づいて、対象回路内のモニタパスのSTAを実行して、モニタパスのタイミング解析結果R2(たとえば、図14参照)を取得する。
【0050】
なお、ユーザ回路およびモニタパスのタイミング解析は、設計支援装置300が実行してもよく、また、ネットワーク314を介して通信可能な外部のシミュレータを利用して実行することにしてもよい。また、取得された取得結果は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0051】
検出部406は、ユーザ回路内の一のFFを検出する機能を有する。具体的には、たとえば、検出部406が、レイアウトデータLDを参照して、インスタンス名を手掛かりに、ユーザ回路内の回路素子群の中から一のFFの配置位置情報を検出する。なお、インスタンス名とは、対象回路内の回路素子を識別する名称である。検出された検出結果は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0052】
また、検出部406は、ユーザ回路内のタイミングエラーが発生している一のFFを検出することにしてもよい。具体的には、たとえば、検出部406が、ユーザ回路のタイミング解析結果R1を参照して、タイミングエラーが発生している一のFFを検出する。このあと、検出部406が、レイアウトデータLDを参照して、一のFFの配置位置情報を検出する。
【0053】
さらに、検出部406は、検出された一のFFの近傍に位置するモニタパス内の他のFFを検出する機能を有する。具体的には、たとえば、検出部406が、レイアウトデータLDを参照して、フリップフロップIDを手掛かりに、一のFFの近傍に位置するモニタパス内の他のFFの配置位置情報を検出する。なお、フリップフロップIDとは、モニタパス内のFFを識別する名称である。また、検出部406の具体的な処理内容については図13および図14を用いて後述する。
【0054】
関連付け部407は、ユーザ回路内の一のFFのタイミング解析結果と、該一のFFの近傍に位置するモニタパス内の他のFFのタイミング解析結果とを関連付ける機能を有する。具体的には、たとえば、関連付け部407が、検出された検出結果に基づいて、タイミング解析結果R1,R2の中から、ユーザ回路内の一のFFのタイミング解析結果とモニタパス内の他のFFのタイミング解析結果とを特定して関連付ける。なお、関連付けられた関連付け結果は、たとえば、図15に示す関連付け結果テーブル1500に記憶される。また、関連付け部407の具体的な処理内容については図13および図14を用いて後述する。
【0055】
出力部409は、関連付けられた関連付け結果を出力する機能を有する。具体的には、たとえば、出力部409が、図15に示す関連付け結果テーブル1500を出力してもよい。出力形式としては、たとえば、ディスプレイ308への表示、プリンタ313への印刷出力、I/F309による外部装置への送信がある。また、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶することにしてもよい。
【0056】
決定部408は、関連付けられた関連付け結果が、一のFFおよび他のFFのタイミングエラーを示す場合、一のFFの配置位置を混雑領域に決定する機能を有する。ここで、混雑領域とは、対象回路のレイアウト領域上の配置密度や配線密度が高い領域である。
【0057】
なお、混雑領域に決定された一のFFの配置位置(配置位置情報)は、たとえば、図17に示す混雑領域リスト1700に記憶される。また、混雑領域を指定する配置位置として、一のFFの近傍に位置する回路素子、たとえば、一のFFの前段または/および後段の回路素子の配置位置を含むことにしてもよい。
【0058】
また、出力部409は、混雑領域に決定された一のFFの配置位置を出力する機能を有する。具体的には、たとえば、出力部409が、図17に示す混雑領域リスト1700を出力することにしてもよい。
【0059】
また、配置部403は、決定された決定結果に基づいて、ユーザ回路内の回路素子群をレイアウト領域上に配置する機能を有する。具体的には、たとえば、配置部403が、既存の配置配線ツールを利用して、一のFF周辺の配置密度や配線密度が改善されるようにユーザ回路内の回路素子群をレイアウト領域上に再配置する。
【0060】
また、生成部404は、レイアウト領域上に配置されたモニタパス内の回路素子群を配線してモニタパスを生成するとともに、レイアウト領域上に再配置された回路素子群を配線して新たな論理回路を生成する。この結果、対象回路内の一のFF周辺の配置配線密度が改善された改善後のレイアウトデータLDが生成される。すなわち、配置部403、生成部404により、上記第1データまたは第2データを修正する。
【0061】
また、出力部409は、生成された生成結果を出力することにしてもよい。具体的には、たとえば、出力部409が、対象回路内の一のFF周辺の配置配線密度が改善された改善後のレイアウトデータLDを出力する。
【0062】
また、決定部408は、関連付け結果が一のFFのタイミングエラーのみを示す場合、ユーザ回路内のパス群のうち一のFFを含むパスを回路構成の変更対象に決定する。なお、一のFFを含むパスは、たとえば、一のFFから前段の回路素子を辿って別のFFに辿り着くまでの経路を探索することにより特定される。また、決定された回路構成の変更対象となるパスは、たとえば、図18に示す変更対象リスト1800に記憶される。
【0063】
また、出力部409は、決定された回路構成の変更対象となるパスを出力する機能を有する。具体的には、たとえば、出力部409が、図18に示す変更対象リスト1800を出力することにしてもよい。
【0064】
(作成部の具体的な処理内容)
つぎに、上記作成部402の具体的な処理内容の一例について説明する。図6は、作成部402の機能的構成の一例を示すブロック図である。図7−1および図7−2は、モニタパスの作成手順の一例を示す説明図である。図6において、作成部402は、容量決定部601と、段数決定部602と、算出部603と、を含む構成である。以下、図7−1および図7−2を参照しながら作成部402の各機能部601〜603を説明する。
【0065】
ここでは、作成部402は、所定容量を含むモニタパス用回路要素がN個(Nは2以上の整数)縦続して接続されるモニタパス単位を含むモニタパス回路情報(FF配置位置情報)を作成する。ここで、モニタパス用FFは、モニタパス単位間に配置される。また、モニタパス用回路要素として、所定のスルーを有する信号が出力される回路素子が選択される。さらに、モニタパス用回路要素を奇数個含むリングオシレータが発振するときの奇数個を上記N個とする。以下、作成部402の処理内容を具体的に説明する。
【0066】
(i)負荷容量Cを決定
図6において、容量決定部601は、所定の回路素子と該回路素子が駆動可能な最大長の配線に相当する負荷容量Cを決定する機能を有する。ここで、駆動とは、配線に対して、論理ゲートなどの出力が論理値を保持するために電流を供給し、常に電圧(論理値)を固定させている状態を表わす。
【0067】
また、負荷容量とは、たとえば、論理ゲートの出力ピン容量、接続先の論理ゲートの入力ピン容量および論理ゲート同士を接続する配線による容量の総和である。ここでは、モニタパス用回路要素は、インバータと該インバータに接続される所定容量を含む配線とを含むことにする。すなわち、容量決定部601が、たとえば、駆動能力が標準のインバータ711に対して標準スルーを入力し、標準スルーを出力可能なキャパシタ712の最大容量を上記負荷容量Cに決定する。
【0068】
なお、スルーとは、ターゲット電圧V(信号の最大振幅)に対して、回路素子にかかる電圧がa%(たとえば、10%)からb%(たとえば、90%)となるまでの遷移時間である。ここでは、ターゲット電圧Vを1.2[V]とし、スルーを0.2[V]から1.0[V]となるまでの遷移時間とし、標準スルーを1.2[ns]とする。
【0069】
すなわち、容量決定部601が、1.2[ns]の標準スルーの立ち上がり波形をインバータ711に入力し、出力されるスルーを測定する。なお、測定された測定結果は、たとえば、図8に示す測定結果テーブル800に記憶される。
【0070】
より具体的には、たとえば、容量決定部601が、下記式(1)に含まれるパラメータsを1,2,…と変化させながら、出力されるスルーを複数回測定する。ただし、Cはキャパシタ712の負荷容量[pf]、αは負荷容量[pf]を示す任意の定数、sはパラメータである。
【0071】
C=α×s ・・・(1)
【0072】
図8は、測定結果テーブルの記憶内容の一例を示す説明図である。図8において、測定結果テーブル800は、入力スルー、パラメータs、負荷容量および出力スルーのフィールド項目を有する。各フィールド項目に情報を設定することで、測定結果がレコードとして記憶されている。ただし、上記式(1)の定数αの値を10[pf]とする。
【0073】
この場合、容量決定部601が、測定結果テーブル800を参照して、出力スルーが1.2[ns]以下でパラメータsが最大の負荷容量(40[pf])を負荷容量Cに決定する。この負荷容量Cは、インバータ711が駆動する最大の配線容量に相当する。なお、決定された負荷容量Cは、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0074】
(ii)段数Nを決定
図6において、段数決定部602は、ペア710を複数段縦続して接続されるリングオシレータ720が発信可能なペア710の最大段数Nを決定する機能を有する。ただし、キャパシタ712の容量は、容量決定部601によって決定された負荷容量Cである。具体的には、たとえば、まず、段数決定部602が、ペア710をN段接続してリングオシレータ720を構成する。ただし、Nは奇数(N=2n+1、n=0,1,2,…)である。
【0075】
このあと、段数決定部602が、リングオシレータ720の段数Nを1,3,…と増加させながら、対象回路のクロック周期Tでリングオシレータ720が発振可能な最大の段数を段数Nに決定する。なお、クロック周期Tは、図5に示したクロック周期情報500から任意に選択可能である。具体的には、たとえば、クロック周期Tは、クロック周期情報500から選ばれたメインクロック、すなわち、クロックck1のクロック周期T1である。
【0076】
また、リングオシレータ720の発信の可否は、たとえば、トランジスタレベルのシミュレーションを実行することで確認できる。ただし、上記シミュレーションは、外部のシミュレータを利用して実行することにしてもよい。決定された段数Nは、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0077】
(iii)負荷容量Cに相当する配線長lを算出
図6において、算出部603は、負荷容量Cに相当する配線長lを算出する機能を有する。具体的には、たとえば、算出部603が、下記式(2)を用いて、負荷容量Cに相当する配線長lを算出することができる。ただし、Cwireは予め設定された配線層(たとえば、3,4層)の配線の単位長さ当たりの容量[pf]である。
【0078】
l=C/Cwire ・・・(2)
【0079】
(iv)FF間の配置間隔Lを算出
また、算出部603は、クロック周期Tの時間内にFF間で信号を伝達可能な配置間隔Lを算出する機能を有する。具体的には、たとえば、算出部603が、下記式(3)を用いて、FF間の配置間隔Lを算出することができる。この配置間隔Lは、クロック周期Tの時間内にFF間で信号を伝達可能な最大距離に相当する。ただし、LはFF間の配置間隔、lは負荷容量Cに相当する配線長、Nはリングオシレータ720が発振可能なペア710の最大段数である。
【0080】
L=l×N ・・・(3)
【0081】
(v)FF配置位置情報を作成
作成部402は、FF間の配置間隔Lに基づいて、モニタパスに含まれるFFの配置位置情報を作成する。具体的には、たとえば、作成部402が、配置間隔Lを格子幅として対象回路のレイアウト領域(たとえば、コアエリア)を格子状に区切る。そして、作成部402が、格子状に区切られた各領域の境界線の交点をFFの配置位置として配置位置情報(図9、図10参照)を作成する。
【0082】
ただし、対象回路のレイアウト領域上に配置禁止領域が設定されている場合、その配置禁止領域と重なる境界線の交点はFFの配置位置対象から除外する。なお、コアエリアとは、レイアウト領域上のI/O領域を除く、スタンダードセルを配置可能な領域である。
【0083】
また、算出部603は、区切られた各領域の境界線の交点数Xを算出する。ただし、レイアウト領域上の配置禁止領域と重なる交点は算出対象から除外する。図7−2に示す例では、(A)配置禁止領域がない場合、各領域の交点数Xは49[個]となる。一方(B)配置禁止領域がある場合、各領域の交点数Xは43[個]となる。算出された交点数Xは、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0084】
なお、上述した例では、インバータ711とキャパシタ712のペア710をN段縦続して接続されるリングオシレータ720を構成することにしたが、これに限らない。たとえば、バッファとキャパシタのペアを(N−1)段、インバータ711とキャパシタ712のペア710を1段縦続して接続されるリングオシレータを構成してもよい。この場合、バッファと組み合わせるキャパシタの容量は、バッファが駆動可能な最大長の配線に相当する負荷容量となる。すなわち、リングオシレータは、全体として入力の論理否定となるように複数の回路要素をリング状に結合した構成となればよい。
【0085】
(vi)モニタパスを作成
作成部402は、算出された交点数XのFFを含み、各FF間にN段のインバータ711を含むモニタパスに関するネットリストNL2を作成する。なお、作成されたネットリストNL2は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
【0086】
(FF配置位置情報の具体例)
つぎに、モニタパスに含まれるFFのレイアウト領域上での配置位置を表わすFF配置位置情報について説明する。まず、対象回路のレイアウト領域上に配線禁止領域が設定されていない場合のFF配置位置情報について説明する。図9は、FF配置位置情報の具体例を示す説明図(その1)である。
【0087】
図9において、FF配置位置情報900は、フリップフロップIDおよび交点IDのフィールド項目を有する。各フィールド項目に情報を設定することで、モニタパスに含まれるFFごとの配置位置がレコードとして記憶されている。フリップフロップIDとは、モニタパスに含まれるFFを識別する識別子である。
【0088】
交点IDとは、対象回路のレイアウト領域上で区切られた各領域の境界線の交点を識別する識別子である。ここでは、レイアウト領域上の各交点に、右回りの渦巻き状に交点IDが昇順に付与されている。なお、各交点IDには、対象回路のレイアウト領域上での位置を特定するための位置情報が関連付けられている。
【0089】
つぎに、対象回路のレイアウト領域上に配線禁止領域が設定されている場合のFF配置位置情報について説明する。図10は、FF配置位置情報の具体例を示す説明図(その2)である。FF配置位置情報1000では、対象回路のレイアウト領域上の交点K1〜K49のうち、配置禁止領域1010と重なる交点K27〜K30,K42,K43がFFの配置位置対象から除外されている。
【0090】
(モニタパスの一例)
ここで、モニタパスの一例を説明する。まず、図9に示したFF配置位置情報900に従って、対象回路のレイアウト領域上にFF1〜FF49が配置された場合のモニタパスについて説明する。図11は、モニタパスの一例を示す説明図(その1)である。図11において、始点となるFF1から終点となるFF49に辿り着くまでのモニタパスMP1が表示されている。
【0091】
つぎに、図10に示したFF配置位置情報1000に従って、対象回路のレイアウト領域上にFF1〜FF43が配置された場合のモニタパスについて説明する。図12は、モニタパスの一例を示す説明図(その2)である。図12において、始点となるFF1から終点となるFF40に辿り着くまでのモニタパスMP2と、始点となるFF41から終点となるFF43に辿り着くまでのモニタパスMP3が表示されている。
【0092】
なお、モニタパスの生成手法は、任意であり、たとえば、既存の探索アルゴリズムを利用して、FF配置位置情報に示す全交点を通過する経路を探索することでモニタパスを生成する。また、1本のモニタパスで全交点を通過できない場合は、図12に示すように複数のモニタパスを生成することにしてもよい。
【0093】
ここで、モニタパス内のFFは、対象回路内で発生するタイミングエラーの検査ポイントとなる。また、モニタパス内のFF間の配置間隔を変更することで、検証ポイントの数を調節することができる。具体的には、たとえば、図7−1に示した(i)において負荷容量Cを決定する際に、駆動能力が標準より高いインバータ711を用いる場合、上述した例に比べて検証ポイントは少なくなる。一方、駆動能力が標準より低いインバータ711を用いる場合、上述した例に比べて検証ポイントは多くなる。
【0094】
(ユーザ回路のタイミング解析結果)
つぎに、ユーザ回路のタイミング解析結果R1について説明する。図13は、ユーザ回路のタイミング解析結果の具体例を示す説明図である。図13において、タイミング解析結果R1は、インスタンス名、配置位置、セットアップスラックおよび異常フラグのフィールド項目を有する。各フィールド項目に情報を設定することで、ユーザ回路内のFFごとのタイミング解析結果1300−1〜1300−mがレコードとして記憶されている。
【0095】
インスタンス名とは、対象回路内のFFを識別する名称である。配置位置は、対象回路のレイアウト上でのFFの配置位置を特定する配置位置情報である。ここでは、交点K1〜K49を中心とする正方形(図13中、点線)の領域(以下、「正方領域」という)により配置位置を特定する。具体的には、図13に示すX軸およびY軸に沿って羅列された数字の組み合わせにより、正方形の各領域の配置位置を特定する。なお、正方形の1辺の長さはFF間の配置間隔Lである。
【0096】
セットアップスラックとは、FFでのクロック・エッジの前にデータが変化しなければならない時間(あるいは、変化してはいけない時間)と、実際にデータが変化した時間との時間間隔である。この時間間隔(絶対値)が所定のしきい値以上となると、FFでタイミングエラーが発生する。なお、所定のしきい値はFFごとに予め定義されている。ここでは、所定のしきい値は80[ps]とする。
【0097】
異常フラグは、タイミングエラーの発生の有無を示すフラグである。ここでは、FFでタイミングエラーが発生していない場合は「met」が設定され、FFでタイミングエラーが発生している場合は「vio」が設定される。ここで、インスタンス名が『ff5』のFFを例に挙げると、配置位置は(5,4)である。また、セットアップスラックは『−113[ps]』であり、所定のしきい値以上となるため、異常フラグに『vio』が設定されている。
【0098】
(モニタパスのタイミング解析結果)
つぎに、モニタパスのタイミング解析結果R2の具体例について説明する。ここでは、図11に示したモニタパスMP1を例に挙げて、タイミング解析結果R2の具体例について説明する。
【0099】
図14は、モニタパスのタイミング解析結果の具体例を示す説明図である。図14において、タイミング解析結果R2は、フリップフロップID、配置位置、セットアップスラックおよび異常フラグのフィールド項目を有する。各フィールド項目に情報を設定することで、モニタパス内のFFごとのタイミング解析結果1400−1〜1400−49がレコードとして記憶されている。
【0100】
ここで、フリップフロップIDが『FF27』のFFを例に挙げると、配置位置は(5,3)である。また、セットアップスラックは『−325[ps]』であり、所定のしきい値以上となるため、異常フラグに『vio』が設定されている。
【0101】
(検出部、関連付け部の具体的な処理内容)
つぎに、上記検出部406、関連付け部407の具体的な処理内容の一例について説明する。ここでは、ユーザ回路内のタイミングエラーが発生している一のFFの解析結果と、該一のFFの近傍に位置するモニタパス内の他のFFの解析結果とを関連付ける場合を例に挙げて説明する。
【0102】
まず、検出部406が、ユーザ回路のタイミング解析結果R1を参照して、タイミングエラーが発生している一のFFを検出する。具体的には、たとえば、検出部406が、異常フラグが『vio』のff4を検出する。このあと、検出部406が、ff4の最近傍に位置するモニタパスMP1内の他のFFを検出する。具体的には、たとえば、検出部406が、ff4の配置位置(5,3)を参照して、ff4と同一の正方領域に位置するモニタパスMP1内のFF27を検出する。なお、正方領域とは、回路要素配置可能領域を所定の矩形で区画した各矩形範囲である。
【0103】
関連付け部407が、タイミング解析結果R1,R2を参照して、ユーザ回路内のff4のタイミング解析結果とモニタパスMP1内のFF27のタイミング解析結果とを関連付ける。関連付けられた関連付け結果は、たとえば、図15に示す関連付け結果テーブル1500に記憶される。
【0104】
(関連付け結果テーブルの具体例)
ここで、関連付け結果テーブル1500について説明する。図15は、関連付け結果テーブルの具体例を示す説明図である。図15において、関連付け結果テーブル1500は、インスタンス名、フリップフロップID、配置位置、セットアップスラックおよび異常フラグのフィールド項目を有する。
【0105】
また、「異常フラグ」項目は、ユーザ回路およびモニタパスのサブフィールド項目を有する。各フィールド項目に情報を設定することで、関連付け結果1500−1〜1500−3がレコードとして記憶されている。
【0106】
インスタンス名は、ユーザ回路内の一のFFを識別する名称である。フリップフロップIDは、一のFFの近傍に位置するモニタパスMP1内の他のFFを識別する識別子である。配置位置は、一のFFの対象回路のレイアウト領域上での配置位置である。セットアップスラックは、一のFFのセットアップスラックである。
【0107】
(比較分析手法)
つぎに、ユーザ回路のタイミング解析結果R1とモニタパスのタイミング解析結果R2との比較分析手法について説明する。図16は、タイミング解析結果の比較分析手法の一例を示す説明図である。この比較分析は、第1タイミング解析結果と第2タイミング解析結果とを比較することで半導体回路情報を修正して半導体集積回路を生成するために行なわれる。なお、ここでの半導体集積回路とは、たとえば、混雑度が改善された改善後のレイアウトデータLDや、RTL記述が修正された修正後のレイアウトデータLDである。
【0108】
図16において、比較分析表1600には、ユーザ回路内の一のFFのタイミング解析結果(vio)と、モニタパス内の他のFFのタイミング解析結果(vioまたはmet)の組み合わせごとに、タイミングエラーが発生した場合の対処方法が示されている。なお、モニタパス内の他のFFは、ユーザ回路内の一のFFの近傍に位置するFFである。
【0109】
具体的には、ユーザ回路内の一のFFでタイミングエラーが発生し、モニタパス内の他のFFでタイミングエラーが発生していない場合は(vio/met)、一のFF周辺の配置密度や配線密度に問題がなく、ユーザ回路の回路構成に問題があるとする。そのため、タイミングエラーが発生している一のFFを含むパスをRTL記述の修正対象とする。
【0110】
一方、ユーザ回路内の一のFFでタイミングエラーが発生するとともに、モニタパス内の他のFFでタイミングエラーが発生している場合は(vio/vio)、一のFF周辺の配置密度や配線密度が高いためにタイミングエラーが発生しているとする。
【0111】
すなわち、設計者は、たとえば、関連付け結果1500−1によれば、ユーザ回路内のff4でタイミングエラーが発生し、かつ、モニタパスMP1内のFF27でタイミングエラーが発生しているため、ff4周辺の配置密度や配線密度が高いと判断できる。
【0112】
また、設計者は、たとえば、関連付け結果1500−2によれば、ユーザ回路内のff5でのみタイミングエラーが発生しているため、ff5周辺の配置密度や配線密度に問題がなく、ユーザ回路の回路構成に問題があると判断できる。
【0113】
また、設計者は、たとえば、関連付け結果1500−3によれば、ユーザ回路内のff6でタイミングエラーが発生し、かつ、モニタパスMP1内のFF29でタイミングエラーが発生しているため、ff6周辺の配置密度や配線密度が高いと判断できる。
【0114】
ここで、比較分析表1600に基づく決定部408の具体的な処理内容について説明する。決定部408は、たとえば、関連付け結果テーブル1500を参照して、関連付け結果が一のFFおよび他のFFのタイミングエラーを示す場合、一のFFの配置位置を混雑領域に決定する。ここで、決定結果を記憶する混雑領域リスト1700について説明する。
【0115】
図17は、混雑領域リストの記憶内容の一例を示す説明図である。図17において、混雑領域リスト1700は、インスタンス名、配置位置およびセットアップスラックのフィールド項目を有する。各フィールド項目に情報を設定することで、混雑領域に関する情報がレコードとして記憶されている。
【0116】
インスタンス名は、タイミングエラーが発生している一のFFを識別するための名称である。配置位置は、一のFFの対象回路のレイアウト領域上での配置位置である。セットアップスラックは、一のFFのセットアップスラックである。混雑領域リスト1700によれば、設計者は、対象回路のレイアウト領域上の配置配線密度が高い混雑領域を特定することができる。この場合、設計者は、たとえば、配置配線密度が高い混雑領域を配置配線ツール(上記配置部403、生成部404に相当)に指定して、対象回路内の一のFF周辺の配置配線密度が改善された改善後のレイアウトデータLDを生成することになる。
【0117】
決定部408は、関連付け結果テーブル1500を参照して、関連付け結果が一のFFのタイミングエラーのみを示す場合、一のFFを含むパスを回路構成の変更対象に決定する。ここで、決定結果を記憶する変更対象リスト1800について説明する。
【0118】
図18は、変更対象リストの記憶内容の一例を示す説明図である。図18において、変更対象リスト1800は、パス名、インスタンス名、配置位置およびセットアップスラックのフィールド項目を有する。各フィールド項目に情報を設定することで、回路構成の変更対象に関する情報がレコードとして記憶されている。
【0119】
パス名は、タイミングエラーが発生している一のFFを含むパスの名称である。インスタンス名は、一のFFを識別するための名称である。配置位置は、一のFFの対象回路のレイアウト領域上での配置位置である。セットアップスラックは、一のFFのセットアップスラックである。変更対象リスト1800によれば、設計者は、対象回路内のパス群のうち回路構成の変更対象となるパスを特定することができる。この場合、設計者は、変更対象リスト1800から特定される回路構成の変更対象となるパスに関するRTL記述を修正することになる。
【0120】
(設計支援装置の設計支援処理手順)
つぎに、本実施の形態にかかる設計支援装置300の設計支援処理手順について説明する。図19は、設計支援装置の設計支援処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、入力部401により、対象回路に関する回路情報の入力を受け付けたか否かを判断する(ステップS1901)。
【0121】
ここで、回路情報の入力を待って(ステップS1901:No)、入力を受け付けた場合(ステップS1901:Yes)、作成部402により、入力された回路情報に基づいて、モニタパスを作成するモニタパス作成処理を実行する(ステップS1902)。そして、対象回路のレイアウト領域上にユーザ回路およびモニタパスを生成する配置配線処理を実行する(ステップS1903)。
【0122】
このあと、取得部405により、生成されたレイアウトデータLDに基づいて、対象回路内のユーザ回路のタイミング解析を実行して(ステップS1904)、ユーザ回路のタイミング解析結果R1を取得する(ステップS1905)。また、取得部405により、生成されたレイアウトデータLDに基づいて、対象回路内のモニタパスのタイミング解析を実行して(ステップS1906)、モニタパスのタイミング解析結果R2を取得する(ステップS1907)。
【0123】
なお、ユーザ回路およびモニタパスのタイミング解析では、ネットリストNL1,NL2およびレイアウトデータLDを用いて、RC抽出、遅延時間算出が行なわれ、ユーザ回路およびモニタパスのタイミング検証が行なわれる。
【0124】
このあと、関連付け部407により、ユーザ回路内の一のFFのタイミング解析結果と、モニタパス内の他のFFのタイミング解析結果とを関連付ける関連付け処理を実行する(ステップS1908)。そして、出力部409により、関連付け結果テーブル1500を出力して(ステップS1909)、本フローチャートによる一連の処理を終了する。
【0125】
これにより、対象回路のレイアウト領域上に配置配線されるユーザ回路およびモニタパスの各々についてタイミング解析を実行し、それらタイミング解析結果をユーザ回路内のFF単位で関連付けて出力することができる。
【0126】
<モニタパス作成処理手順>
つぎに、図19に示したステップS1902のモニタパス作成処理の具体的処理手順について説明する。図20は、モニタパス作成処理の具体的処理手順の一例を示すフローチャートである。
【0127】
図20のフローチャートにおいて、まず、容量決定部601により、駆動能力が標準のインバータ711が駆動可能な最大長の配線に相当する負荷容量Cを決定する(ステップS2001)。そして、段数決定部602により、クロック周期情報500の中からメインクロックのクロック周期Tを選択する(ステップS2002)。
【0128】
このあと、段数決定部602により、インバータ711と負荷容量Cのキャパシタ712のペア710を複数段縦続して接続されるリングオシレータが発信可能なペア710の最大段数Nを決定する(ステップS2003)。つぎに、算出部603により、負荷容量Cに相当する配線長lを算出する(ステップS2004)。
【0129】
そして、算出部603により、クロック周期Tの時間内にFF間で信号を伝達可能な配置間隔Lを算出する(ステップS2005)。このあと、作成部402により、配置間隔Lを格子幅として対象回路のレイアウト領域を格子状に区切って(ステップS2006)、区切られた各領域の境界線の交点をFFの配置位置として配置位置情報を作成する(ステップS2007)。
【0130】
また、算出部603により、区切られた各領域の境界線の交点数Xを算出する(ステップS2008)。そして、作成部402により、算出された交点数XのFFを含み、各FF間にN段のインバータ711を含むモニタパスに関するネットリストNL2を作成して(ステップS2009)、図19に示したステップS1903に移行する。
【0131】
これにより、配置配線密度が高くなるとタイミングエラーが発生するようなぎりぎりの配置間隔でFFを配置するモニタパスを構成できる。また、レイアウト領域から分割された各領域の境界線の交点にFFを配置することで、モニタパス内のFFをレイアウト領域上に効率的かつ網羅的に配置することができる。
【0132】
<配置配線処理手順>
つぎに、図19に示したステップS1903の配置配線処理の具体的処理手順について説明する。図21は、配置配線処理の具体的処理手順の一例を示すフローチャートである。図21のフローチャートにおいて、まず、配置部403により、ネットリストNL1,NL2に基づいて、対象回路のフロアプランを実行して(ステップS2101)、電源配線処理を実行する(ステップS2102)。
【0133】
このあと、配置部403により、ステップS2007において作成されたFF配置位置情報に従って、対象回路のレイアウト領域上に、モニタパス内のFFを配置間隔Lで配置する(ステップS2103)。つぎに、配置部403により、対象回路のレイアウト領域上に、モニタパス内の回路素子群のうち配置済みのFFを除く残余の回路素子を配置する(ステップS2104)。
【0134】
さらに、配置部403により、対象回路のレイアウト領域上に、対象回路に含まれる回路素子群を配置する(ステップS2105)。なお、全回路素子群の配置が完了すると、たとえば、回路素子の配置位置調整、バッファ挿入、ゲートサイズ調整などのタイミング最適化が行なわれる。
【0135】
このあと、生成部404により、対象回路のレイアウトデータLDに基づいて、クロックツリー合成を実行する(ステップS2106)。なお、クロックツリー合成が完了すると、たとえば、回路素子のゲートサイズ調整などのタイミング最適化が行なわれる。
【0136】
そして、生成部404により、配置された配置結果に基づいて、レイアウト領域上に配置された回路素子間を配線して、ユーザ回路およびモニタパスを生成して(ステップS2107)、図19に示したステップS1904に移行する。なお、回路素子間の配線が完了すると、たとえば、回路素子のゲートサイズ調整などのタイミング最適化が行なわれる。
【0137】
これにより、対象回路のレイアウト領域上に元の論理回路(ユーザ回路)とともに、モニタパスを生成することができる。
【0138】
<関連付け処理手順>
つぎに、図19に示したステップS1908の関連付け処理の具体的処理手順について説明する。図22は、関連付け処理の具体的処理手順の一例を示すフローチャートである。図22のフローチャートにおいて、まず、検出部406により、タイミング解析結果R1およびレイアウトデータLDを参照して、ユーザ回路内のタイミングエラーが発生している一のFFを検出する(ステップS2201)。
【0139】
このあと、検出部406により、レイアウトデータLDを参照して、検出された一のFFの近傍に位置するモニタパス内の他のFFを検出する(ステップS2202)。つぎに、関連付け部407により、タイミング解析結果R1を参照して、一のFFのタイミング解析結果を特定する(ステップS2203)。
【0140】
さらに、関連付け部407により、タイミング解析結果R2を参照して、他のFFのタイミング解析結果を特定する(ステップS2204)。そして、関連付け部407により、一のFFのタイミング解析結果と他のFFのタイミング解析結果とを関連付けて(ステップS2205)、関連付け結果を関連付け結果テーブル1500に記憶する(ステップS2206)。
【0141】
つぎに、検出部406により、ユーザ回路内のタイミングエラーが発生しているFFのうち、検出されていない未検出のFFがあるか否かを判断する(ステップS2207)。ここで、未検出のFFがある場合(ステップS2207:Yes)、ステップS2201に戻る。一方、未検出のFFがない場合(ステップS2207:No)、図19に示したステップS1909に移行する。
【0142】
これにより、ユーザ回路内でタイミングエラーが発生している一のFFと、一のFFの近傍に位置するモニタパス内の他のFFとのタイミング解析結果を関連付けることができる。
【0143】
(決定処理手順)
つぎに、配置配線密度の改善対象となる回路素子および回路構成の変更対象となるパスを決定する決定処理の具体的処理手順について説明する。図23は、決定処理の具体的処理手順の一例を示すフローチャートである。
【0144】
図23のフローチャートにおいて、まず、決定部408により、関連付け結果テーブル1500の中から任意の関連付け結果を選択する(ステップS2301)。このあと、決定部408により、選択された関連付け結果が、ユーザ回路およびモニタパスがともにタイミングエラーを示すか否かを判断する(ステップS2302)。
【0145】
ここで、モニタパスがともにタイミングエラーを示す場合(ステップS2302:Yes)、決定部408により、一のFFの配置位置を混雑領域リスト1700に記憶する(ステップS2303)。そして、決定部408により、関連付け結果テーブル1500の中から選択されていない未選択の関連付け結果があるか否かを判断する(ステップS2304)。
【0146】
ここで、未選択の関連付け結果がある場合(ステップS2304:Yes)、ステップS2301に戻る。また、ステップS2302において、タイミングエラーを示さない場合(ステップS2302:No)、決定部408により、関連付け結果が、ユーザ回路のみタイミングエラーを示すか否かを判断する(ステップS2305)。
【0147】
ここで、ユーザ回路のみタイミングエラーを示す場合(ステップS2305:Yes)、決定部408により、ユーザ回路内の一のFFを含むパスを探索して(ステップS2306)、探索されたパスを変更対象リスト1800に記憶して(ステップS2307)、ステップS2304に移行する。
【0148】
一方、タイミングエラーを示さない場合(ステップS2305:No)、ステップS2304に移行する。そして、ステップS2304において、未選択の関連付け結果がない場合(ステップS2304:No)、出力部409により、混雑領域リスト1700および変更対象リスト1800を出力して(ステップS2308)、本フローチャートによる一連の処理を終了する。
【0149】
これにより、対象回路のレイアウト領域上の配置配線密度の改善対象となる領域を特定することができる。また、対象回路内のパス群のうちRTL記述の変更対象となるパスを特定することができる。
【0150】
なお、図20に示したステップS2002において、クロック周期情報500の中からメインクロックのクロック周期Tを選択することにしたが、これに限らない。具体的には、たとえば、クロック周期情報500内の全クロックのクロック周期が選択されるまで、図19に示した設計支援処理を繰り返し実行することにしてもよい。この場合、たとえば、対象回路内のクロックck1〜ck3ごとの関連付け結果が出力されることになる。
【0151】
以上説明したように、本実施の形態によれば、対象回路のレイアウト領域上に配置配線されるユーザ回路、モニタパスの各々についてタイミング解析を実行し、それらタイミング解析結果を比較分析することで、配線性やタイミング最適化の困難性を判断できる。
【0152】
また、本実施の形態によれば、ユーザ回路内でタイミングエラーが発生している一のFFと、一のFFの近傍に位置するモニタパス内の他のFFとのタイミング解析結果を関連付けることで、FF単位で配線性やタイミング最適化の困難性を判断できる。
【0153】
また、本実施の形態によれば、対象回路のクロック周期の時間内に信号を伝搬可能な配置間隔でモニタパス内のFFを配置することで、配置密度や配線密度に問題がなければタイミングエラーが発生しないモニタパスを生成することができる。
【0154】
また、本実施の形態によれば、回路素子とキャパシタのペアを複数段縦続して接続されるリングオシレータが発信可能なペアの最大段数からFF間の配置間隔を求めることで、クロック周期中に信号を伝搬可能なぎりぎりの間隔でFFを配置することができる。
【0155】
また、本実施の形態によれば、キャパシタの負荷容量を、回路素子から出力される信号のスルーが回路素子に入力された信号のスルー以下となる最大の負荷容量とすることで、回路素子が駆動可能な最大長の配線に相当する負荷容量とすることができる。
【0156】
また、本実施の形態によれば、FF間の配置間隔を格子幅としてレイアウト領域を格子状に区切って分割された各領域(矩形範囲)の境界線の交点にFFを配置することで、モニタパス内のFFをレイアウト領域上に効率的かつ網羅的に配置することができる。
【0157】
また、本実施の形態によれば、ユーザ回路内の一のFFの解析結果と、一のFFと同一の領域内に位置するモニタパス内の他のFFの解析結果とを関連付けることで、一のFFの比較対象となる他のFFを適切に特定できる。
【0158】
また、本実施の形態によれば、関連付け結果が一のFFおよび他のFFのタイミングエラーを示す場合、一のFFの配置位置を混雑領域に決定することにより、配置配線密度の改善対象となる領域を特定することができる。
【0159】
また、本実施の形態によれば、混雑領域に決定された一のFFの配置位置に基づいて、論理回路内の回路素子群をレイアウト領域上に再配置することで、配置配線密度を適切に緩和することができる。
【0160】
また、本実施の形態によれば、関連付け結果が一のFFのタイミングエラーのみを示す場合、一のFFを含むパスを回路構成の変更対象となるパスに決定することで、RTL記述の変更対象となるパスを特定することができる。
【0161】
これらのことから、本設計支援方法、および設計支援プログラムによれば、タイミングエラーが発生した場合に、バッファリングやサイジングにより解消できる問題なのか、あるいは、RTL記述の変更が必要な問題なのかを適切に判断できる。そのため、配置や最適化の手法の組み合わせを変えて複数通りのレイアウトを試行し、各レイアウトでのタイミング解析結果や配線性を確認する必要がない。これにより、半導体集積回路の設計作業の効率化を図り、設計期間の短縮化を実現することができる。
【0162】
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【0163】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0164】
(付記1)半導体集積回路情報のタイミングを解析することで半導体集積回路を生成する方法において、
前記半導体回路情報とモニタパス回路情報とに基づいてフロアプランを行って第1データを生成し、
モニタパス位置情報に基づいて第1データ内にモニタパス用FFとモニタパス用回路要素とを配置して第2データを生成し、
前記第2データに基づいて配置または配線を行って第3データを生成し、
前記第3データの前記半導体回路情報に対応するデータに対してタイミング解析を行って第1タイミング解析結果を生成し、
前記第3データのモニタパス回路情報に対応するデータに対してタイミング解析を行って第2タイミング解析結果を生成し、
前記第1タイミング解析結果と前記第2タイミング解析結果とを比較することで前記半導体回路情報を修正して前記半導体集積回路を生成すること
を特徴とする半導体集積回路の生成方法。
【0165】
(付記2)前記モニタパス回路情報は、所定容量を含む前記モニタパス用回路要素がN個(Nは2以上の整数)縦続して接続されるモニタパス単位を含むこと
を特徴とする付記1に記載の半導体集積回路の生成方法。
【0166】
(付記3)所定のスルーを有する信号が出力されるように前記モニタパス用回路要素が選択され、
前記モニタパス用回路要素を奇数個含むリングオシレータが発振するときの奇数個が前記N個とされること
を特徴とする付記2に記載の半導体集積回路の生成方法。
【0167】
(付記4)前記モニタパス単位間に前記モニタパス用FFが配置されること
を特徴とする付記2に記載の半導体集積回路の生成方法。
【0168】
(付記5)前記半導体集積回路情報に基づいて指定される回路要素配置可能領域を所定の矩形で区画し、
前記矩形の交点に前記モニタパス用FFが配置され、
前記配置されたモニタパス用FF間に前記モニタパス用回路要素が配置されること
を特徴とする付記1乃至付記4の何れか一に記載の半導体集積回路の生成方法。
【0169】
(付記6)前記モニタパス用回路要素は、インバータと前記インバータに接続される所定容量を含む配線とを含むこと
を特徴とする付記1乃至付記5の何れか一に記載の半導体集積回路の生成方法。
【0170】
(付記7)前記半導体集積回路情報に含まれる第1のFFの前記第1タイミング解析結果と、前記第1のFFの近傍に配置される前記モニタパス用FFの前記第2のタイミング解析結果とが比較されること
を特徴とする付記1乃至付記6の何れか一に記載の半導体集積回路の生成方法。
【0171】
(付記8)前記半導体集積回路情報に含まれる第1のFFが、前記配置されたモニタパス用FFを中心とした前記所定の矩形範囲内に含まれる場合に、前記第1のFFの第1タイミング解析結果と前記配置されたモニタパス用FFの第2タイミング解析結果とが比較されること
を特徴とする付記5に記載の半導体集積回路の生成方法。
【0172】
(付記9)前記第1タイミング解析結果がタイミングエラーを示し、前記第2タイミング解析結果がタイミングエラーを示していない場合には、前記半導体集積回路情報を修正すること
を特徴とする付記8に記載の半導体集積回路の生成方法。
【0173】
(付記10)前記第1タイミング解析結果がタイミングエラーを示し、前記第2タイミング解析結果がタイミングエラーを示しているときは、前記第1データまたは前記第2データを修正すること
を特徴とする付記8に記載の半導体集積回路の生成方法。
【0174】
(付記11)半導体集積回路情報のタイミングを解析することで半導体集積回路を生成するプログラムが格納される記録媒体において、
前記プログラムは、
前記半導体回路情報とモニタパス回路情報とに基づいてフロアプランを行って第1データを生成し、
モニタパス位置情報に基づいて第1データ内にモニタパス用FFとモニタパス用回路要素とを配置して第2データを生成し、
前記第2データに基づいて配置または配線を行って第3データを生成し、
前記第3データの前記半導体回路情報に対応するデータに対してタイミング解析を行って第1タイミング解析結果を生成し、
前記第3データのモニタパス回路情報に対応するデータに対してタイミング解析を行って第2タイミング解析結果を生成し、
前記第1タイミング解析結果と前記第2タイミング解析結果とを比較することで前記半導体回路情報を修正して前記半導体集積回路を生成すること
を特徴とする記録媒体。
【0175】
(付記12)前記モニタパス回路情報は、所定容量を含む前記モニタパス用回路要素がN個(Nは2以上の整数)縦続して接続されるモニタパス単位を含むこと
を特徴とする付記11に記載の記録媒体。
【0176】
(付記13)所定のスルーを有する信号が出力されるように前記モニタパス用回路要素が選択され、
前記モニタパス用回路要素を奇数個含むリングオシレータが発振するときの奇数個が前記N個とされること
を特徴とする付記12に記載の記録媒体。
【0177】
(付記14)前記モニタパス単位間に前記モニタパス用FFが配置されること
を特徴とする付記12に記載の記録媒体。
【0178】
(付記15)前記半導体集積回路情報に基づいて指定される回路要素配置可能領域を所定の矩形で区画し、
前記矩形の交点に前記モニタパス用FFが配置され、
前記配置されたモニタパス用FF間に前記モニタパス用回路要素が配置されること
を特徴とする付記11乃至付記14の何れか一に記載の記録媒体。
【0179】
(付記16)前記モニタパス用回路要素は、インバータと前記インバータに接続される所定容量を含む配線とを含むこと
を特徴とする付記11乃至付記15の何れか一に記載の記録媒体。
【0180】
(付記17)前記半導体集積回路情報に含まれる第1のFFの前記第1タイミング解析結果と、前記第1のFFの近傍に配置される前記モニタパス用FFの前記第2のタイミング解析結果とが比較されること
を特徴とする付記11乃至付記16の何れか一に記載の記録媒体。
【0181】
(付記18)前記半導体集積回路情報に含まれる第1のFFが、前記配置されたモニタパス用FFを中心とした前記所定の矩形範囲内に含まれる場合に、前記第1のFFの第1タイミング解析結果と前記配置されたモニタパス用FFの第2タイミング解析結果とが比較されること
を特徴とする付記15に記載の記録媒体。
【符号の説明】
【0182】
300 設計支援装置
401 入力部
402 作成部
403 配置部
404 生成部
405 取得部
406 検出部
407 関連付け部
408 決定部
409 出力部
500 クロック周期情報
601 容量決定部
602 段数決定部
603 算出部
NL1,NL2 ネットリスト
R1,R2 タイミング解析結果

【特許請求の範囲】
【請求項1】
半導体集積回路情報のタイミングを解析することで半導体集積回路を生成する方法において、
前記半導体回路情報とモニタパス回路情報とに基づいてフロアプランを行って第1データを生成し、
モニタパス位置情報に基づいて第1データ内にモニタパス用FFとモニタパス用回路要素とを配置して第2データを生成し、
前記第2データに基づいて配置または配線を行って第3データを生成し、
前記第3データの前記半導体回路情報に対応するデータに対してタイミング解析を行って第1タイミング解析結果を生成し、
前記第3データのモニタパス回路情報に対応するデータに対してタイミング解析を行って第2タイミング解析結果を生成し、
前記第1タイミング解析結果と前記第2タイミング解析結果とを比較することで前記半導体回路情報を修正して前記半導体集積回路を生成すること
を特徴とする半導体集積回路の生成方法。
【請求項2】
前記モニタパス回路情報は、所定容量を含む前記モニタパス用回路要素がN個(Nは2以上の整数)縦続して接続されるモニタパス単位を含むこと
を特徴とする請求項1に記載の半導体集積回路の生成方法。
【請求項3】
所定のスルーを有する信号が出力されるように前記モニタパス用回路要素が選択され、
前記モニタパス用回路要素を奇数個含むリングオシレータが発振するときの奇数個が前記N個とされること
を特徴とする請求項2に記載の半導体集積回路の生成方法。
【請求項4】
前記モニタパス単位間に前記モニタパス用FFが配置されること
を特徴とする請求項2に記載の半導体集積回路の生成方法。
【請求項5】
前記半導体集積回路情報に基づいて指定される回路要素配置可能領域を所定の矩形で区画し、
前記矩形の交点に前記モニタパス用FFが配置され、
前記配置されたモニタパス用FF間に前記モニタパス用回路要素が配置されること
を特徴とする請求項1乃至請求項4の何れか一に記載の半導体集積回路の生成方法。
【請求項6】
前記モニタパス用回路要素は、インバータと前記インバータに接続される所定容量を含む配線とを含むこと
を特徴とする請求項1乃至請求項5の何れか一に記載の半導体集積回路の生成方法。
【請求項7】
前記半導体集積回路情報に含まれる第1のFFの前記第1タイミング解析結果と、前記第1のFFの近傍に配置される前記モニタパス用FFの前記第2のタイミング解析結果とが比較されること
を特徴とする請求項1乃至請求項6の何れか一に記載の半導体集積回路の生成方法。
【請求項8】
前記半導体集積回路情報に含まれる第1のFFが、前記配置されたモニタパス用FFを中心とした前記所定の矩形範囲内に含まれる場合に、前記第1のFFの第1タイミング解析結果と前記配置されたモニタパス用FFの第2タイミング解析結果とが比較されること
を特徴とする請求項5に記載の半導体集積回路の生成方法。
【請求項9】
前記第1タイミング解析結果がタイミングエラーを示し、前記第2タイミング解析結果がタイミングエラーを示していない場合には、前記半導体集積回路情報を修正すること
を特徴とする請求項8に記載の半導体集積回路の生成方法。
【請求項10】
前記第1タイミング解析結果がタイミングエラーを示し、前記第2タイミング解析結果がタイミングエラーを示しているときは、前記第1データまたは前記第2データを修正すること
を特徴とする請求項8に記載の半導体集積回路の生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7−1】
image rotate

【図7−2】
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


【公開番号】特開2011−34243(P2011−34243A)
【公開日】平成23年2月17日(2011.2.17)
【国際特許分類】
【出願番号】特願2009−178409(P2009−178409)
【出願日】平成21年7月30日(2009.7.30)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】