LSI設計方法,設計プログラムおよび設計装置
【課題】従来のLSI設計フローではクロックの遅延やスキューが無いことを前提とするため,クリティカルパスにてタイミングが仕様を満たさないことがSTA後に判明する。
【解決手段】ハードウェア記述ファイルと制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,第1のクロックと第2のクロックの想定遅延値をもとにしてクリティカルパスをデータベースへ登録するデータベース構築工程と,ハードウェア記述ファイルと制約条件ファイルについて論理合成を行うとともに,クリティカルパスをそれ以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【解決手段】ハードウェア記述ファイルと制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,第1のクロックと第2のクロックの想定遅延値をもとにしてクリティカルパスをデータベースへ登録するデータベース構築工程と,ハードウェア記述ファイルと制約条件ファイルについて論理合成を行うとともに,クリティカルパスをそれ以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は,LSI設計方法,設計プログラムおよび設計装置に関する。
【背景技術】
【0002】
半導体集積回路設計では,半導体集積回路が所望のクロック周波数で正常に動作できるようにするため,タイミング制約を満たして設計や最適化を行う必要があり,これまで特許文献1〜3などの設計方法が提案されてきた。
【0003】
一般的なLSIの設計フローでは,設計者は,まず設計仕様に基づきLSIをRegister Transfer Level(以下,RTLと呼ぶ。)で記述し,RTL形式ファイルと,Synopsys Design Constraint(以下,SDCと呼ぶ。)フォーマットにより記述された制約条件とをもとにして論理合成を行い,ゲートレベルの論理回路データであるネットリストを生成する。次に,ネットリストをもとにしてフロアプランニングを行った後,クロック信号の配線をツリー状に配置したクロックツリーを生成する。そして,各セル間を接続する多層配線パターンを形成する。最後に,Static Timing Analysis(以下,STAと呼ぶ。)を行い,配線の長さや幅,厚さなどに基づき配線パターンの抵抗や容量を抽出して配線遅延を取得し,データ配線遅延,クロック遅延やクロックスキューに基づき,設計回路がセットアップタイムやホールドタイムなどのタイミング制約を満たしている事を確認する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−99491号公報
【特許文献2】特開2007−72995号公報
【特許文献3】特開2006−268165号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし,STAの結果,クロックタイミングがセットアップタイムやホールドタイムの仕様を満たさないことが判明することがある。特に,クロックゲーティング回路とそれを制御するフリップフロップ回路間や,フリップフロップ回路とそれを制御するフリップフロップ回路間でのクロックタイミングが仕様を満たさないことが多い。その場合,設計者はRTL形式ファイルの再生成や仕様変更等の対応を行っており,作業手戻りが発生している。
【0006】
従来の設計フローでは,セル間の配線をレイアウトするまでは配線パターンによる遅延を考慮せず,クロック遅延やクロックスキューが発生しないことを前提に設計を行っているため,設計者が上記2種類の回路間のクロックタイミングを修正する必要があることをSTA前に気付くことは難しい。
【0007】
そこで,本発明の目的は,上記課題を解決するためのLSIの設計方法を提供することとする。
【課題を解決するための手段】
【0008】
LSIの設計方法の第1の側面によれば,
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックが供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルについて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有する。
【0009】
LSIの設計方法の第2の側面によれば,
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給されるクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルについて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有する。
【発明の効果】
【0010】
LSIの設計方法の第1,第2の側面によれば,クロックゲーティング回路とそれを制御するフリップフロップ回路間や,フリップフロップ回路とそれを制御するフリップフロップ回路間のクリティカルパスでのクロックタイミングを改善したLSI設計を行うことができる。
【図面の簡単な説明】
【0011】
【図1】本実施の形態におけるLSI設計フローの概略を示す図である。
【図2】本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路とクロック波形とを示す図である。
【図3】本実施の形態におけるフリップフロップ回路とそのフリップフロップ回路の出力が供給されクロックが異なるフリップフロップ回路とクロック波形とを示す図である。
【図4】本実施の形態におけるLSI設計装置の構成を示すブロック図である。
【図5】本実施の形態におけるLSI設計装置の処理手順を示すフローチャート図である。
【図6】本実施の形態におけるデータベース構築工程の詳細フローを示す図である。
【図7】本実施の形態におけるインスタンスリストとクロックリストを示す図である。
【図8】仮配置したクロックに同期して動作するセルを示す図である。
【図9】本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。
【図10】本実施の形態におけるフリップフロップ回路とクロックゲーティング回路を接続するパスに優先度フラグを設定したデータベースを示す図である。
【図11】本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。
【図12】本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とはクロックが異なるフリップフロップ回路とを接続するパスに優先度フラグを設定したデータベースを示す図である。
【図13】本実施の形態における論理合成工程の詳細フローを示す図である。
【図14】本実施の形態における,論理合成後のクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。
【図15】本実施の形態における,論理合成後のフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。
【図16】クリティカルパスの前段と後段のインスタンスのスラック値を登録したデータベースを示す図である。
【図17】本実施の形態におけるセル配置工程の詳細フローを示す図である。
【図18】本実施の形態におけるクロックツリー生成工程の詳細フローを示す図である。
【発明を実施するための形態】
【0012】
以下,図面を用いて本発明の実施の形態について説明する。
【0013】
(本実施の形態におけるLSI設計フロー概略)
図1は,本実施の形態におけるLSI設計フローの概略を示す図である。
【0014】
まず,RTL設計工程(S11)では,設計仕様に基づきLSIをRTLで記述したRTL形式ファイルと,SDCフォーマットにより記述された制約条件ファイルを作成する。次のデータベース(DB)構築工程(S12)にて,RTL形式ファイルと制約条件ファイルをもとにして,クロックを供給されるフリップフロップ回路やクロックゲーティング回路などのセルと,クロック毎の想定遅延値と,クロックに対して入力データのタイミング余裕が少ないと想定されタイミング制約を配慮すべきパス(以下,クリティカルパスと呼ぶ。)などとを抽出または算出してデータベースへ格納し,論理合成工程(S13)でこのデータベースとRTL形式ファイルと制約条件とを用いて論理合成し,クリティカルパスについてクリティカルパス以外のパスよりも優先して最適化を行いネットリストを生成する。そして,セル配置工程(S14)で,生成したネットリストをもとにして,クリティカルパスの始点および終点のフリップフロップ回路やクロックゲーティング回路を,始点の前段または終点の後段のフリップフロップ回路のうちタイミング余裕が少ないフリップフロップ回路とモジュール群を形成して,そのモジュール群内のセルをモジュール群外のセルよりも優先的に仮想チップ上に配置する。配置後,クロックツリー生成工程(S15)で,同じクロックを供給されるセル間のクロックのスキューが最小になるようにクロックツリーを仮想チップ上に生成し,さらにクリティカルパス始点と終点後段のフリップフロップ回路のうち,タイミング余裕が大きいフリップフロップ回路に接続する始点または終点のフリップフロップ回路もしくはクロックゲーティング回路のクロックツリーを変更してクロックのスキューを大きくする。その後,配線工程(S16)で各セル間を接続する多層配線パターンを形成し,STA工程(S17)で,スタティック・タイミング解析を行い,設計回路がセットアップタイムやホールドタイムなどのタイミング制約を満たしている事を確認する。
【0015】
本実施の形態のLSI設計方法は,従来のLSI設計方法と比較した場合,データベース構築工程(S12)が追加され,論理合成工程(S13)とセル配置工程(S14)とクロックツリー生成工程(S15)において改良が加えられている。その具体的な内容については,次に説明する。
【0016】
従来のLSI設計方法では,セル間の配線をレイアウトするまでは配線パターンによる遅延を考慮せず,クロック遅延やクロックスキューが発生しないことを前提に設計を行っている。そのため,STAの結果,主にクロックゲーティング回路とそれを制御するフリップフロップ回路間や,フリップフロップ回路とそれを制御するフリップフロップ回路間でのクロックタイミングが,セットアップタイムやホールドタイムの仕様を満たさないことが多く,その場合,設計者はRTL形式ファイルの再生成や仕様変更等の対応を行い,作業手戻りが発生していた。
【0017】
図2は,本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路とクロック波形とを示す図である。図2に示す回路は,クロック発生源201,クロック線の分岐点215,クロックバッファ202,バッファをピラミッド状に配置したクロックツリー203,209,クロックライン204,クロックツリー203からクロックを供給されるクロックゲーティング回路205,クロックゲーティング回路205の出力線206,分周器208,クロックツリー209からクロックライン210を介して分周されたクロックを供給されるフリップフロップ回路211,フリップフロップ回路211の入力データ信号線212,フリップフロップ回路の出力データ信号線213,組合せ回路214,クロックゲーティング回路のイネーブル信号線207,を有する。クロックツリーのサイズはクロックを供給されるセルの数と位置に応じて決まり,図2ではクロックツリー209の方が203よりもツリーサイズが大きいとする。
【0018】
クロック発生源201から高周波クロックCLK1が出力されており,高周波クロックCLK1はクロックツリー203,クロックライン204を介してクロックゲーティング回路205に供給されている。また,分岐点215で分かれた高周波クロックCLK1は分周器208により低周波クロックCLK2に分周され,低周波クロックCLK2はクロックツリー209,クロックライン210を介してフリップフロップ回路211に供給されている。さらにフリップフロップ回路211の出力信号は,出力データ信号線213,組合せ回路214,イネーブル信号線207を介してクロックゲーティング回路205のイネーブル端子ENに供給されている。つまり,クロックゲーティング回路205は低周波クロックCLK2のタイミングで生成されるイネーブル信号EN1により高周波クロックCLK1の通過・非通過を制御する。
【0019】
ここで例として,クロックツリー203内のピラミッド頂点における高周波クロックCLK1の波形をCLK1(0),クロックゲーティング回路205のクロック端子に供給される高周波クロックCLK1の波形をCLK1(1),クロックツリー209内のピラミッド頂点における低周波クロックCLK2の波形をCLK2(0),フリップフロップ回路211のクロック端子に供給される低周波クロックCLK2の波形をCLK2(1),データ入力端子D_INに供給されるデータ信号をD_IN2,出力端子D_OUTから出力されるD_OUT2,クロックゲーティング回路205のイネーブル端子ENに供給されるイネーブル信号をEN1とすると,それぞれの波形は図2の下段に示すようになる。
【0020】
クロックツリー203,209ではツリーのサイズに応じてクロック遅延が生じるため,CLK1(0)とCLK1(1)ではクロック遅延D1が発生しており,CLK2(0)とCLK2(1)ではクロック遅延D2が発生している。また,クロックツリー209の方が203よりもサイズが大きいため,D2>D1となり,その差であるクロックのスキューD3が生じている。さらに,フリップフロップ回路211の出力信号D_IN2と,クロックゲーティング回路205のイネーブル信号EN1との間には,パス遅延D4が生じている。クロックゲーティング回路205がイネーブル信号EN1によりクロックCLK(1)を精度良くオン・オフするためには,CLK1(1)の立ち上がりタイミングとEN1の立ち上がりタイミングの差であるD5が,クロックゲーティング回路205のセットアップタイム条件を満たす必要がある。つまり,設計を行う際には,クロックゲーティング回路205とフリップフロップ回路11とのクロックのスキューD3と,出力データ信号線213,組合せ回路214,イネーブル信号線207におけるパス遅延D4を考慮する必要がある。
【0021】
図3は,本実施の形態におけるフリップフロップ回路とそのフリップフロップ回路の出力が供給されクロックが異なるフリップフロップ回路とクロック波形とを示す図である。図3に示す回路は,クロック発生源301,クロック線の分岐点315,クロックバッファ302,バッファをピラミッド状に配置したクロックツリー303,309,クロックライン304,クロックツリー303からクロックを供給されるフリップフロップ回路305,クロックゲーティング回路305の入力データ信号線306,フリップフロップ回路305の出力データ信号線307,組合せ回路314,フリップフロップ回路311の入力データ信号線312,分周器308,クロックツリー309から分周されたクロックライン310を介してクロックを供給されるフリップフロップ回路311,フリップフロップ回路311の出力データ信号線313,を有する。図3ではクロックツリー309の方が303よりもツリーサイズが大きいとする。
【0022】
クロック発生源301から高周波クロックCLK1が出力されており,高周波クロックCLK1はクロックツリー303,クロックライン304を介してフリップフロップ回路305に供給されている。また,分岐点315で分かれた高周波クロックCLK1は分周器308により低周波クロックCLK2に分周され,低周波クロックCLK2はクロックツリー309,クロックライン310を介してフリップフロップ回路311に供給されている。さらにフリップフロップ回路305の出力は,出力データ信号線307,組合せ回路314,入力データ信号線312を介してフリップフロップ回路311に供給されている。つまり,フリップフロップ回路311は,高周波クロックCLK1で処理されたフリップフロップ回路305の処理結果を,低周波クロックCLK2のタイミングで取り込んでいる。
【0023】
ここで例として,クロックツリー303内のピラミッド頂点における高周波クロックCLK1の波形をCLK1(0),フリップフロップ回路305のクロック端子に供給される高周波クロックCLK1の波形をCLK1(1),データ入力端子D_INに供給されるデータ信号をD_IN1,出力端子D_OUTから出力されるデータ信号をD_OUT1,クロックツリー309内のピラミッド頂点における低周波クロックCLK2の波形をCLK2(0),フリップフロップ回路311のクロック端子に供給されるクロックをCLK2(1),データ入力端子D_INのデータ信号をD_IN2,出力端子D_OUTから出力されるデータ信号をD_OUT2とすると,それぞれの波形は図3の下段に示すようになる。
【0024】
図3下段に示すように,CLK1(0)とCLK1(1)の間にはクロックツリー303によるクロック遅延D1が生じており,CLK2(0)とCLK2(1)の間にもクロックツリー311によるクロック遅延D2が生じている。また,クロックツリー309の方が303よりもツリーサイズが大きいため,D2>D1となり,その差であるクロックのスキューD3が生じている。さらに,データ信号D_IN2はD_OUT1が出力データ信号線307,組合せ回路314,入力データ信号線312を介して伝送してきた信号であるため,パス遅延D4が生じている。フリップフロップ回路311から所望の出力を得るためには,CLK2(1)の立ち上がりタイミングとデータ信号D_IN2の立ち上がりタイミングの差であるD5が,フリップフロップ回路311のセットアップタイム条件を満たす必要がある。つまり,設計を行う際には,フリップフロップ回路305と311とのクロックのスキューD3と,出力データ信号線307,組合せ回路314,入力データ信号線312におけるパス遅延D4を考慮する必要がある。
【0025】
(LSI設計装置および処理手順)
次に,図2,図3に示したクロックのスキューとパス遅延を考慮して設計を図1の設計フローのとおりに行うためのLSI設計装置について説明する。図4は,本実施の形態におけるLSI設計装置の構成を示すブロック図である。
【0026】
図4において,LSI設計装置は,LSI設計装置全体の制御を行うCPU401と,CPU401の処理時にメモリとして使用されるRAM402と,プログラム群としてデータベース構築ツール403と,論理合成ツール404と,配置ツール405と,クロックツリー生成ツール406と,配線ツール407と,STAツール408と,LSIをRTLで記述されたRTL形式ファイルであるRTLデータ409とを有し,さらに,SDCフォーマットにより記述された制約条件ファイルであるSDCデータ410と,RTLデータ409とSDCデータ410にもとにしてクロックを供給されるセルやクロックごとの想定遅延値,クリティカルパスなどを格納するデータベース411と,論理合成工程で生成されるネットリストを格納するネットリスト412と,セル配置工程やクロックツリー生成工程,配線工程で生成されたデータを格納する配置データ413と,スタティック・タイミング解析結果を格納するSTAデータ414と,バス415とを有する。各構成部はバス415によってそれぞれ接続されていて,各プログラムはCPU401により実行される。
【0027】
図5は,本実施の形態におけるLSI設計装置の処理手順を示すフローチャート図である。図4とあわせて各手順について以下説明する。
【0028】
データベース構築ツール403は,RTL設計手順(S21)で生成されたRTLデータ409とSDCデータ410を読み出し,クロックを供給されるセルやクロック周波数を抽出し,同一周波数のクロック毎のクロックツリーでの想定遅延値を算出しクリティカルパスを求めて,データベース411へ抽出データ,想定遅延値,クリティカルパスのデータを出力する(S22)。
【0029】
次に,論理合成ツール404は,RTLデータ409,SDCデータ410,データベース411を読み出して,ゲートレベルの論理回路データであるネットリストを生成し,さらにクリティカルパス以外のパスよりもクリティカルパスを優先してそのネットリストの最適化を行いネットリスト412へ出力する(S23)。
【0030】
そして,配置ツール405は,データベース411からクリティカルパスを,ネットリスト412からネットリストをそれぞれ読み出す。さらに,配置ツール405は,クリティカルパスの始点および終点のフリップフロップ回路やクロックゲーティング回路を,始点の前段または終点の後段のフリップフロップ回路のうちタイミング余裕が少ない方のフリップフロップ回路と共にモジュール群を形成する。配置ツール405は,それにより,そのモジュール群内のセルを,モジュール群外のセルよりも優先して近接するように仮想チップ上に配置してセル配置データを生成する(S24)。
【0031】
次に,クロックツリー生成ツール406は,データベース411からクリティカルパスを,配置データ413からセル配置データをそれぞれ読み出し,同じクロックを供給されるセル間のクロックのスキューが最小になるようにクロックツリーをセル配置データの仮想チップ上に配置してクロックツリーデータを生成する。さらに,クリティカルパスの始点と終点後段のフリップフロップ回路のうち,タイミング余裕が大きい方のフリップフロップ回路に接続する始点または終点のフリップフロップ回路もしくはクロックゲーティング回路のクロックのクロックツリーを変更して,そのクロックのスキューを他のクロックより大きくし,変更したクロックツリーデータを配置データ413へ出力する(S25)。
【0032】
配線ツール407は,配置データ413からセル配置データとクロックツリーデータとを読み出し,セル間に多層配線パターンを形成し,配置データ413へ出力する(S26)。
【0033】
最後にSTAツール408は配置データ413から配線データ(セル配置データ,クロックツリーデータ,多層配線パターン)を読み出して,タイミング解析処理を行い,解析結果をSTAデータ414へ出力する(S27)。
【0034】
(LSI設計方法)
[データベース構築工程]
次に,図1に示したLSI設計処理の各工程について具体例を挙げて詳細に説明する。図6は,本実施の形態におけるデータベース構築工程の詳細フローを示す図である。図7は,本実施の形態におけるインスタンスリストとクロックリストを示す図である。
【0035】
初めに,RTL形式ファイルとクロックの周波数などを規定する制約条件を記載したSDCファイルとをもとに,フリップフロップ回路やクロックゲーティング回路,RAM等のクロックに同期して動作するインスタンス(セル,RTLで定義されるレジスタ)を抽出し(S1202),抽出したセルとクロックの一覧を図7の上段に示すようなインスタンスリストとしてデータベースへ登録する(S1203)。図7のインスタンスリストには,クロックPLL_CLKを供給されるフリップフロップ回路AA/FFと,クロックCLK1を供給されるクロックゲーティング回路BB/GCBと,クロックCLK2を供給されるフリップフロップ回路CCC/FF1が登録されている。
【0036】
次に,工程S1202で抽出したセルを,例えば,図8のように仮配置する(S1204)。図8は,仮配置したクロックに同期して動作するセルを示す図である。図8では,クロックツリーのバッファ801,フリップフロップ回路802,805〜807,809,810とクロックゲーティング回路804,分周器808,RAM811とをクロックごとに仮配置している。クロック発生源801から各セルのクロック端子をクロックラインで接続している。フリップフロップ回路802はクロック発生源801から直接クロックPLL_CLKを供給されている。また,フリップフロップ回路805〜807とクロックゲーティング回路804はクロックCLK1が供給されている。フリップフロップ回路809,810とRAM811は,分周器808を介してクロックCLK2が供給されている。
【0037】
図6にもどり,工程S1204の後,S1204でセルの仮配置をもとにして,クロック毎にクロックラインの総配線長を求め,その総配線長より想定遅延値を見積もり,図7の下段に示すようにクロック毎(PLL_CLK,CLK1,CLK2)のクロック周期と総配線長と想定遅延値とをまとめたクロックリストをデータベースに登録する(S1205)。
【0038】
この想定遅延値は,総配線長をもとにクロックツリーのサイズを想定し,そのクロックツリーのサイズから見積もったクロック遅延値のことであり,総配線長に比例する。クロックツリーで生成されるクロックは,クロックツリーのサイズに応じて,クロック源のクロックに対しある遅延を有する。図2,3でのクロックCLK1(1)がクロックCLK1(0)に対して遅延D1を有することと同じである。本来,クロックツリーのサイズは,クロックが供給されるセルの数とその位置及びクロック配線に応じて決まるので,クロックの遅延量D1は,全てレイアウトされなければ判明しない。しかし,本実施の形態ではRTLファイルとSDCファイルの情報から最も蓋然性の高い遅延量として仮配置したセルへのクロックラインの総配線長に基づく見積値を使用する。この想定遅延値を用いることでタイミングエラーが生じる可能性の高いクリティカルパスを後述するように見出し,論理合成等の処理に改良を加えることが出来る。
【0039】
次に,RTL形式ファイルとSDCファイルをもとにして,図9に示すようなクロックゲーティング回路903と,そのクロックゲーティング回路903にイネーブル信号EN1を出力するフリップフロップ回路901とを把握し(S1206),S1206で把握したクロックゲーティング回路903とフリップフロップ回路901のクロック周波数CLK1,CLK2とCLK1,CLK2の想定遅延値とをデータベースより抽出する(S1207)。
【0040】
図9は,本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。図9には,低周波クロックCLK2を供給されているフリップフロップ回路901と,フリップフロップ回路901の出力信号D_OUT2を供給される組合せ回路902と,組合せ回路902の出力信号をイネーブル信号EN1とし高周波クロックCLK1を供給されるクロックゲーティング回路903と,クロックゲーティング回路903がイネーブル信号EN1でゲーティングしたクロックCLK1が供給されるフリップフロップ回路904が示されている。
【0041】
工程S1207の次に,工程S1207で抽出したクロックゲーティング回路903に入力するクロックCLK1の想定遅延値とフリップフロップ回路901に入力するクロックCLK2の想定遅延値の差をもとめ,クロックゲーティング回路903のクロックCLK1の周期と比較を行う(S1208)。想定遅延値差がクロックCLK1の周期を基準として比較的大きい場合は,フリップフロップ回路901とクロックゲーティング回路903を接続するパスCP905に,クリティカルパスとして優先度フラグ「高」を設定し,データベースに保存する(S1210)。また,反対に想定遅延値差がクロックCLK1の周期を基準として比較的小さい場合は,フリップフロップ回路901とクロックゲーティング回路903を接続するパスCP905に,優先度フラグ「低」を設定し,データベースに保存する(S1211)。
【0042】
図10は,本実施の形態におけるフリップフロップ回路とクロックゲーティング回路を接続するパスに優先度フラグを設定したデータベースを示す図である。図10最下段の「ゲーティングセル」欄に,フリップフロップ回路901とクロックゲーティング回路903を接続するパスCP905に優先度「高」を設定している。なお,図10には図7でデータベースに登録したインスタンスリストとクロックリストも併せて記載している。
【0043】
なお,工程S1208〜S1211は,工程S1206で抽出した全てのクロックゲーティング回路とフリップフロップ回路の組合せに対して行う。
【0044】
次に,RTL形式ファイルとSDCファイルをもとにして,図11に示すようなフリップフロップ回路1101と,そのフリップフロップ回路1101とデータパスで接続されクロックが異なるフリップフロップ回路1103とを把握し(S1212),工程S1212で把握した2つのフリップフロップ回路1101,1103のクロック周波数CLK3,CLK4とCLK3,CLK4の想定遅延値とをデータベースより抽出する(S1213)。
【0045】
図11は,本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。図11には,高周波クロックCLK3を供給されるフリップフロップ回路1101と,フリップフロップ回路1101の出力D_OUT3を供給される組合せ回路1102と,組合せ回路1102が出力したデータ入力信号D_IN4と低周波クロックCLK4とが供給されるフリップフロップ回路1103が示されている。
【0046】
工程S1213の次に,工程S1213で抽出したフリップフロップ回路1101に入力するクロックCLK3の想定遅延値とフリップフロップ回路1103に入力するクロックCLK4の想定遅延値の差をもとめ,フリップフロップ回路1103のクロックCLK4の周期と比較を行う(S1214)。想定遅延値差がクロックCLK4の周期を基準として比較的大きい場合は,フリップフロップ回路1101とフリップフロップ回路903を接続するパスCP1105に,クリティカルパスとして優先度フラグ「高」を設定し,データベースに保存する(S1215)。また,反対に想定遅延値差がクロックCLK4の周期を基準として比較的小さい場合は,フリップフロップ回路1101とフリップフロップ回路1103を接続するパスCP1105に,優先度フラグ「低」を設定し,データベースに保存する(S1216)。
【0047】
図12は,本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とはクロックが異なるフリップフロップ回路とを接続するパスに優先度フラグを設定したデータベースを示す図である。図12最下段の「異クロック間」欄に,フリップフロップ回路1101とフリップフロップ回路1103を接続するパスCP1105に優先度「高」を設定している。なお,図12には図7,10でデータベースに登録したインスタンスリスト,クロックリスト,ゲーティングセルも併せて記載している。
【0048】
なお,工程S1214〜S1217は,工程S1212で抽出した全てのフリップフロップ回路の組合せに対して行う。
【0049】
このように工程S1208〜S1211,S1214〜S1217で,想定遅延値差を基準値と比較して,クロックの入力に対してする入力データのタイミング余裕が少ないと想定されるパスに,クリティカルパスとして優先度フラグ「高」を設定したのは,論理合成工程(S13)やクロックツリー生成工程(S14)において,優先度フラグ「高」のパスをそれ以外のパスよりも優先してクロック遅延やクロックのスキューを考慮して最適化を行うためである。詳細内容については,論理合成工程(S13)とセル配置工程(S14),クロックツリー生成工程(S15)の説明にてそれぞれ記載する。
【0050】
以上より,工程S1201〜S1217の終了をもって,データベース構築工程が完了する(S1218)。
【0051】
[論理合成工程]
続いて,論理合成工程S13について詳細説明をする。図13は,本実施の形態における論理合成工程の詳細フローを示す図である。
【0052】
まず,RTL形式ファイルをもとにRTLレベルで記述された機能記述を論理合成によりゲートレベルに変換し,テクノロジマッピングにより指定したテクノロジ(製造工場のテクノロジ)に基づいたネットリストに変換する(S1302)。そして,各クロックツリーにおいてクロック遅延が発生していない,つまりクロック遅延値=0という条件のもと,クロック毎にデータパスのタイミング解析を行い,その解析結果に基づいて,データパス上の組合せ回路に対して論理段数を変更してファンアウト数を削減したり,インバータの段数を減らすなどの論理変換を行う。さらに,後続工程になるほど回路エリアの縮小が難しくなるため,面積の小さいセルを選択してゲートサイズの縮小を行う(S1303)。論理合成工程では,ネットリストから例えば各セルのファンアウト数が判明するので,少なくともそれに基づいて出力の負荷を見積もることで,データの一定の遅延時間を知ることができる。この遅延時間にしたがって上記のタイミング解析が行われる。
【0053】
ここで,図14は,本実施の形態における,論理合成後のクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。図14の上段には,フリップフロップ回路1401と,フリップフロップ回路1401の出力信号を供給される組合せ回路1402と,組合せ回路1402の出力信号を入力端子に供給されるフリップフロップ回路1403と,パスCP1408と,フリップフロップ回路1403の出力信号を供給される組合せ回路1404と,組合せ回路1404の出力信号をイネーブル信号として供給されるクロックゲーティング回路1405と,クロックゲーティング回路がゲーティングしたクロックCLK1が供給されるフリップフロップ回路1407,1410とが示されている。フリップフロップ回路1403は低周波クロックCLK2を,クロックゲーティング回路1405は,高周波クロックCLK1を供給されており,この2つの回路は組合せ回路1404を含むパスCP1408を介して接続されている。このパスCP1408は,データベース構築工程(S12)の工程S1210にてクリティカルパスとして優先度フラグ「高」を設定されている。
【0054】
工程S1303後,データベースより,クリティカルパスCP1408の始点のフリップフロップ回路1403と終点のクロックゲーティング回路1405を把握し,それぞれのクロックCLK2,CLK1の想定遅延値を抽出する(S1304)。
【0055】
そして,工程S1304で抽出したクロックCLK1,CLK2の想定遅延値の差を算出し,論理合成ツールを使用して,その求めた想定遅延値差を不確かさ(uncertainty)として,クロックゲーティング回路1405のクロック入力端子に設定する(S1305)。
【0056】
なお,工程S1304〜S1305は,フリップフロップ回路1403,クロックゲーティング回路1405に該当する全てのクロックゲーティング回路とフリップフロップ回路の組合せに対して行う。
【0057】
図15は,本実施の形態における,論理合成後のフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。図15の上段には,フリップフロップ回路1501と,フリップフロップ回路1501の出力信号を供給される組合せ回路1502と,組合せ回路1502の出力信号を入力端子に供給されるフリップフロップ回路1503と,フリップフロップ回路1503の出力信号を供給される組合せ回路1504を含むパスCP1508と,組合せ回路1504の出力信号を入力端子に供給されるフリップフロップ回路1505と,フリップフロップ回路1505の出力信号を供給される組合せ回路1506と,組合せ回路1506の出力信号を入力端子に供給されるフリップフロップ回路1507と,フリップフロップ回路1507の出力信号を供給される組合せ回路1511と,組合せ回路1511の出力信号を入力端子に供給されるフリップフロップ回路1510とが示されている。フリップフロップ回路1501,1503は高周波クロックCLK3を,フリップフロップ回路1505,1507,1510は低周波クロックCLK4を供給されている。また,パスCP1508は,データベース構築工程(S12)の工程S1210にてクリティカルパスとして優先度フラグ「高」を設定されている。
【0058】
工程S1305後,データベースより,クリティカルパス1508の始点のフリップフロップ回路1503と終点のフリップフロップ回路1505とを把握し,それぞれのクロックCLK3,CLK4の想定遅延値を抽出する(S1306)。
【0059】
工程S1306で抽出したクロックCLK3,CLK4の想定遅延値の差を算出し,論理合成ツールを使用して,その求めた想定遅延値差を不確かさとして,フリップフロップ回路1505のクロック端子に設定する(S1307)。
【0060】
なお,工程S1306〜S1307は,フリップフロップ回路1503,フリップフロップ回路1505に該当する全てのフリップフロップ回路の組合せに対して行う。
【0061】
このように工程S1304〜S1307において,クリティカルパスにより接続された2つの回路(フリップフロップ回路1403とクロックゲーティング回路1405,フリップフロップ回路1503とフリップフロップ回路1505)の2つのクロックCLK3,CLK4のスキューの規模を,クリティカルパスの終点の回路(クロックゲーティング回路1405,フリップフロップ回路1505)のクロック入力端子に設定した後,論理合成ツールを使用してクリティカルパスの論理最適化処理を行う(S1308)。すなわち,クロックのスキューを考慮した論理合成工程内の最適化処理を行う。この最適化処理では,クリティカルパスの遅延を減らすために例えば,多段論理において段数を変更してファンアウト数を減らしたり,3段のインバータで構成されている構造を1段のインバータに簡単化したり,冗長論理を削除するなどの処理を行う。また,すべてのフリップフロップ回路およびクロックゲーティング回路のクロック入力端子に不確かさを設定してクリティカルパスの論理最適化処理を論理合成ツールで行うと,処理が複雑になり破綻してしまい,最適化されたネットリストを出力できないことがある。そこで,本実施の形態では,クリティカルパスの終点の回路のクロック入力端子にのみ不確かさを設定する。このように,最適化すべきクリティカルパスに限って,不確かさというより厳しい条件を課して最適化処理を行うことで,論理合成ツールが,他のパスを犠牲にしてもその条件を満たすようにクリティカルパスを最適化することができる。
【0062】
次に,論理最適化処理結果をもとにして,図14のクリティカルパスCP1408の前段のフリップフロップ回路のスラック値,すなわち始点のフリップフロップ回路1403のスラック値と,後段のフリップフロップ回路のスラック値,すなわち終点のクロックゲーティング回路1405でゲーティングされたクロックCLK1を供給されるフリップフロップ回路1407のスラック値とをそれぞれ確認する。また,同様に,図15のクリティカルパスCP1508の前段のフリップフロップ回路のスラック値,すなわち始点のフリップフロップ回路1503のスラック値と,後段のフリップフロップ回路のスラック値,すなわち終点のフリップフロップ回路1505の出力を入力データ信号として供給されるフリップフロップ回路1507のスラック値とをそれぞれ確認する(S1309)。ここでのスラック値の確認は,工程S1303で説明したのと同様である。
【0063】
ここで,本実施の形態におけるスラック値とは,図14,15の下段に示すようにクロックのセットアップタイムに対する入力信号の立ち上がりタイミングの余裕時間D31,D34,D41,D44を表す。
【0064】
図14の下段には,フリップフロップ回路1403,1407の入力波形が示されている。フリップフロップ回路1403には入力信号D_IN2とクロックCLK2が,フリップフロップ回路1407には入力信号D_IN1とクロックCLK1が,図14の波形で入力されているものとする。また,クロックCLK1,CLK2の立ち上がり前のD32,D35の時間をセットアップタイム,立ち上がり後のD33,D36の時間をホールドタイムとする。このとき,入力信号D_IN2,D_IN1は,セットアップタイムよりも早いタイミングで立ち上がる必要があるが,入力信号D_IN2,D_IN1の立ち上がりタイミングのセットアップタイムまでの余裕値D31,D34をスラック値としている。
【0065】
図15においても図14と同様である。図15の下段には,フリップフロップ回路1503,1507の入力波形が示されている。フリップフロップ回路1503には入力信号D_IN3とクロックCLK3が,フリップフロップ回路1507には入力信号D_IN4とクロックCLK4が,図15の波形で入力されているものとする。また,クロックCLK3,CLK4の立ち上がり前のD42,D45の時間をセットアップタイム,立ち上がり後のD43,D46の時間をはホールドタイムとする。このとき,入力信号D_IN3の立ち上がりタイミングのセットアップタイムまでの余裕値D41と,入力信号D_IN4の立ち上がりタイミングのセットアップタイムまでの余裕値D44をスラック値としている。
【0066】
図13にもどり,工程S1309でスラック値D31,D34,D41,D44を確認し,工程S1308の最適化処理実施前よりもスラック値が改善されていない場合は,該当のクリティカルパスの終点のクロックゲーティング回路,またはフリップフロップ回路の不確かさの値を大きくし(S1310),再度,工程S1308の論理最適化を実施する。このように,スラック値が改善されていないクリティカルパスの終点の不確かさを大きくすることにより,前回よりも当該クリティカルパスの最適化の優先度をあげ,論理合成ツールによって他のパスを犠牲にしてでも優先的に最適化処理が行われ,スラック値がより改善される。スラック値が改善されている場合は,図16に示すように,クリティカルパスの前段と後段のインスタンス名称とスラック値をデータベースに保存する(S1311)。
【0067】
図16は,クリティカルパスの前段と後段のインスタンスのスラック値を登録したデータベースを示す図である。図16上段には,図12に示したインスタンスリスト,クロックリスト,「ゲーティングセル」欄1601,「異クロック間」欄1602を記載している。図16の下段の「前段のスラック情報」欄1603に,クリティカルパスの始点のインスタンスと同じクロックを供給され,その始点のインスタンスとパスを介して接続するインスタンス名称と,クロック名称と,スラック値と,クリティカルパスの始点の名称と,クリティカルパスの始点終点の組合せ分類(始点終点ともにフリップフロップ回路であれば「異クロック」,始点がフリップフロップ回路で終点がクロックゲーティング回路であれば「ゲーティング」とする。)とが記載されている。また,「後段のスラック情報」欄1604には,クリティカルパスの終点のインスタンスと同じクロックを供給され,その終点のインスタンスとパスを介して接続するインスタンス名称と,クロック名称と,スラック値と,クリティカルパスの終点のインスタンス名称と,クリティカルパスの始点終点の組合せ分類とが記載されている。
【0068】
工程S1311終了後,工程S1308で論理最適化されたネットリストを出力(S1312)し,論理合成工程は終了する(S1313)。
【0069】
このように工程S1304〜S1308でクロックのスキューを設定して最適化処理を行うことで,従来の論理合成よりもクリティカルパスのタイミングを改善したネットリストを生成することができる。また,工程S1311でデータベースに保存したクリティカルパスの前段のスラック値と後段のスラック値は,後述するセル配置工程(S14)やクロックツリー生成工程(S15)にてクリティカルパスのタイミング改善に活用することができる。
【0070】
[セル配置工程]
次にセル配置工程S14について詳細説明をする。図17は,本実施の形態におけるセル配置工程の詳細フローを示す図である。従来のセル配置工程では,セルなどのインスタンスを機能毎にグルーピングした複数のモジュール毎に近接してインスタンスを仮想チップ上に配置していた。しかし,本実施の形態におけるセル配置工程では,インスタンスを機能毎にグルーピングして仮想チップ上に配置するだけでなく,さらにクリティカルパスの前段と後段のスラック値を考慮して従来と異なる新たなモジュールを設定し,そのモジュール毎に近接してインスタンスを配置する。
【0071】
まず,論理合成工程(S13)で生成したネットリストから,セルなどのインスタンスを機能毎にグルーピングしたモジュールとそのモジュールに含まれるインスタンスの情報を抽出し(S1402),データベースからクリティカルパスで接続されたフリップフロップ回路とクロックゲーティング回路の情報を抽出する(S1403)。そして,工程S1402で抽出したモジュールとインスタンスの情報をもとにして,クリティカルパスの始点のフリップフロップ回路と,終点のクロックゲーティング回路とが,同じモジュール内に含まれているか判断する(S1404)。
【0072】
工程S1404の結果,クリティカルパスの始点のフリップフロップ回路と,終点のクロックゲーティング回路とが同じモジュールには含まれていない場合は,クリティカルパスの前段と後段のフリップフロップ回路のスラック値をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する。つまり,図14では,論理合成工程(S13)で生成したフリップフロップ回路1403,1407のスラック値D31,D34をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する。(S1405)。
【0073】
そして,いずれかのスラック値のみが余裕がある場合は,余裕が無いスラック値のフリップフロップ回路が属するモジュールに,フリップフロップ回路1403とクロックゲーティング回路1405とを加えた新モジュールを設定する。そして,この新モジュール内のセルを新モジュール外のセルより優先して,仮想チップ上にセル間を近づけて配置する(S1406)。例えば,図14において,フリップフロップ回路1403のスラック値D31に余裕があるが,フリップフロップ回路1407のスラック値D34には余裕が無い場合,フリップフロップ回路1403と組合せ回路1404を,クロックゲーティング回路1405とフリップフロップ回路1407,1410を含む,クロックCLK1で制御されるセル群に加えて,新モジュール1409を設定する。そして,その新モジュール1409外のセル(この場合フリップフロップ回路1401と組合せ回路1402)よりも新モジュール1409内のセルを優先して,相互に近づけて密集させて配置することで,セル配置工程でクリティカルパスCP1408のパス遅延が拡大しないようにする。一方,フリップフロップ回路1403のスラック値D31は余裕があるため,フリップフロップ回路1401と組合せ回路1402は,フリップフロップ回路1403のセットアップタイムに対する余裕の範囲内で,新モジュール1409とは離して仮想チップ上に配置しても構わない。
【0074】
なお,工程S1404〜S1406は,工程S1403で把握したクロックゲーティング回路とフリップフロップ回路の全ての組合せに対して行う。
【0075】
次に,データベースからクリティカルパスで接続された始点のフリップフロップ回路と終点のフリップフロップ回路の情報を抽出し(S1407),工程S1402で抽出したモジュールとインスタンスの情報をもとにして,クリティカルパスの始点と終点のフリップフロップ回路が同じモジュールに含まれているか判断する(S1408)。
【0076】
工程S1408の結果,クリティカルパスの始点と終点のフリップフロップ回路が同じモジュールには含まれていない場合は,クリティカルパスの前段と後段のフリップフロップ回路のスラック値をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する。つまり,図15では,論理合成工程(S13)で生成したフリップフロップ回路1503,1507のスラック値D41,D44をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する(S1409)。
【0077】
いずれかのスラック値のみが余裕がある場合は,余裕が無いスラック値のフリップフロップ回路が属するモジュールに,フリップフロップ回路1503,1505を加えた新モジュールを設定する。そして,この新モジュール内のセルを新モジュール外のセルより優先して,仮想チップ上にセル間を近づけて配置する(S1410)。例えば,図15において,フリップフロップ回路1507のスラック値D44は余裕があるが,フリップフロップ回路1503のスラック値D41には余裕が無い場合,フリップフロップ回路1505と組合せ回路1504を,フリップフロップ回路1501,1503を含む,クロックCLK3で制御されるセル群に加えて,新モジュール1509を設定する。そして,その新モジュール1509外のセル(この場合組合せ回路1506とフリップフロップ回路1507)よりも新モジュール1509内のセルを優先して,相互に近づけて密集させて配置することで,セル配置工程でクリティカルパスCP1508のパス遅延を拡大しないようにする。一方,フリップフロップ回路1507のスラック値は余裕があるため,組合せ回路1506とフリップフロップ回路1507は,フリップフロップ回路1507のセットアップタイムに対する余裕の範囲内で,モジュール1509とは離して仮想チップ上に配置しても構わない。
【0078】
工程S1408〜S1410は,工程S1407で把握した2つのフリップフロップ回路の全ての組合せに対して行う。
【0079】
工程S1406,1410を終了したら,すべての総配線長が短くなるように残りのセルを仮想チップ上に配置し(S1411),さらに配線混雑度が低減できるように仮想チップ上に配置する(S1412)。
【0080】
そして,仮想チップに配置したセルの配置データを生成した時に配置ツールから出力されるクロック毎にクロックラインの総配線長,クリティカルパスの前段と後段のフリップフロップ回路のスラック値,さらにその総配線長より見積もった想定遅延値をデータベースへ登録する(S1413)。
【0081】
最後に生成した配置データを出力(S1414)し,セル配置工程(S14)を終了する(S1415)。
【0082】
このようにセル配置工程S14では,論理合成工程S13で算出したクリティカルパスの前段と後段のフリップフロップ回路のスラック値をもとに,スラック値が余裕が無い側のフリップフロップ回路群とクリティカルパスの始点終点の回路とでモジュールを形成し,このモジュール内のセルを優先的に近づけて仮想チップ上に配置することで,クリティカルパス上のバッファを減らし遅延が拡大しないようタイミング改善を行うことができる。
【0083】
[クロックツリー生成工程]
クロックツリー生成工程S15について詳細説明をする。図18は,本実施の形態におけるクロックツリー生成工程の詳細フローを示す図である。本実施の形態における論理合成工程(S13),セル配置工程(S14)では,クリティカルパスの終点のクロックゲーティング回路に供給されるイネーブル信号,もしくは終点のフリップフロップ回路に供給されるデータ信号のタイミングを早めることで,クリティカルパスのタイミングを改善した。一方,以下に説明するクロックツリー生成工程(S15)では,クリティカルパスの始点のフリップフロップ回路のクロックのタイミングを早くする,または終点のクロックゲーティング回路もしくはフリップフロップ回路のクロックのタイミングを遅くすることにより,クリティカルパスのタイミングを改善する。
【0084】
セル配置工程(S14)で生成した配置データをもとにして,クロック発生源から各ゲートにクロックを供給するクロックツリーを生成する(S1502)。通常,クロックツリーが出力する複数のクロックのスキューができるだけ小さくなるように,クロックツリーが生成される。そして,クロックツリー生成時にクロックツリー生成ツールから出力されるクロック毎にクロックラインの総配線長,クリティカルパスの前段と後段のフリップフロップ回路のスラック値,さらにその総配線長より見積もった想定遅延値をデータベースへ登録する(S1503)。そしてセル配置工程(S14)で生成した配置データから,図14,15のクリティカルパスCP1408,1508の始点のフリップフロップ回路1403,1503と終点のクロックゲーティング回路1405,フリップフロップ回路1505の位置情報を抽出する(S1504)。
【0085】
工程S1502のクロックツリー生成時にクロックツリー生成ツールから出力されるクリティカルパスCP1408の終点のクロックゲーティング回路1405のスラック値に余裕があるか判断する(S1505)。そして,クロックゲーティング回路1405のスラック値に余裕がある場合,クロックツリーの変更は行わない(S1509)。
【0086】
反対に,クロックゲーティング回路1405のスラック値に余裕が無い場合,クリティカルパスの前段と後段のフリップフロップ回路1403,1407のいずれかのスラック値に余裕があるか判断する(S1506)。フリップフロップ回路1403,1407のいずれかのスラック値D31,D34に余裕がある場合,余裕がある側のクロックのスキューを大きくする(S1507)。
【0087】
例えば,図14において,フリップフロップ回路1407のスラック値D34に余裕が無く,フリップフロップ回路1403のスラック値D31に余裕がある場合,フリップフロップ回路1403にクロックCLK2を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1403からクロックゲーティング回路1405にイネーブル信号が供給されるタイミングを早める。このことは,フリップフロップ回路1403に供給されるクロックCLK2のタイミングを,同じクロックツリーで生成される他のクロックCLK2よりも早めて,そのスキューを大きくすることを意味する。これにより,クロックゲーティング回路1405のスラック値の余裕が増す。反対に,フリップフロップ回路1403のスラック値D31に余裕がなく,フリップフロップ回路1407のスラック値D34に余裕がある場合,クロックゲーティング回路1405にクロックCLK1を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを早めて,クロックゲーティング回路1405のクロックCLK1の立ち上がりタイミングを遅くする。このことは,クロックゲーティング回路1405に供給されるクロックCLK1のタイミングを,同じクロックツリーで生成される他のクロックCLK1よりも遅くし,そのスキューを大きくすることを意味する。これにより,クロックゲーティング回路1405のスラック値の余裕が増す。
【0088】
工程S1506において,フリップフロップ回路1403,1407のスラック値D31,D34に共に余裕が無い場合は,フリップフロップ回路1403のさらに前段のフリップフロップ回路1401のスラック値と,フリップフロップ回路1407のさらに後段のフリップフロップ回路1410のスラック値のいずれかに余裕があるか判断する(S1508)。いずれかに余裕がある場合は,工程1507と同様に,余裕がある側のクロックツリーを変更してクロックスキューを大きし,そこの余裕をクリティカルパスに分配する。
【0089】
例えば,フリップフロップ回路1410のスラック値に余裕が無く,フリップフロップ回路1401のスラック値に余裕がある場合,フリップフロップ回路1401のクロックCLK2を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1403からフリップフロップ回路1403にデータ信号が供給されるタイミングを早める。これにより,フリップフロップ回路1403のスラック値に余裕ができる。そして今度は,フリップフロップ回路1403のクロックCLK2を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1403からクロックゲーティング回路1405にイネーブル信号が供給されるタイミングを早める。その結果,クロックゲーティング回路1405のスラック値の余裕が増す。反対に,フリップフロップ回路1401のスラック値に余裕が無く,フリップフロップ回路1410のスラック値に余裕がある場合,フリップフロップ回路1407のクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを遅くし,クロックゲーティング回路1407のクロックCLK1の立ち上がりタイミングを遅くする。これにより,フリップフロップ回路1407のスラック値に余裕ができる。そして今度はクロックゲーティング回路1405にクロックCLK1を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを遅らせ,クロックゲーティング回路1405のクロックCLK1の立ち上がりタイミングを遅くする。その結果,クロックゲーティング回路1405のスラック値の余裕が増す。
【0090】
工程S1508において,フリップフロップ回路1403の前段のフリップフロップ回路1401のスラック値と,フリップフロップ回路1407の後段のフリップフロップ回路1410のスラック値共に余裕が無い場合は,さらに前段,後段のフリップフロップ回路のスラック値を判断し,いずれかに余裕があるフリップフロップ回路の組合せが現れるまで工程S1508を繰り返す。
【0091】
工程S1505〜S1509については,工程S1504で把握したクロックゲーティング回路とフリップフロップ回路の全ての組合せに対して行う。
【0092】
次に,工程S1504で位置情報を抽出したクリティカルパスCP1508の始点のフリップフロップ回路1503と終点のフリップフロップ回路1505に対して,工程S1505と同様に確認を行う。つまり,工程S1502のクロックツリー生成時にクロックツリー生成ツールから出力されるクリティカルパスCP1508の終点のフリップフロップ回路1505のスラック値に余裕があるか判断する(S1510)。そして,終点のフリップフロップ回路1505のスラック値に余裕がある場合,クロックツリーの変更は行わない(S1514)。
【0093】
反対に,フリップフロップ回路1505のスラック値に余裕が無い場合,クリティカルパスの前段と後段のフリップフロップ回路1503,1507のいずれかのスラック値D41,D44に余裕があるか判断する(S1511)。フリップフロップ回路1503,1507のいずれかのスラック値D41,D44に余裕がある場合,余裕がある側のクロックのスキューを大きくする(S1512)。
【0094】
例えば,図15において,フリップフロップ回路1507のスラック値D44に余裕が無く,フリップフロップ回路1503のスラック値D41に余裕がある場合,フリップフロップ回路1503にクロックCLK3を供給するクロックラインのクロックゲートを減らしたりクロックラインを短くしたりしてクロックのタイミングを早め,フリップフロップ回路1503からフリップフロップ回路1505にデータ信号が供給されるタイミングを早める。このことは,フリップフロップ回路1503のクロックCLK3のタイミングを,同じクロックツリーで生成される他のクロックCLK3より早めて,そのスキューを大きくすることを意味する。これにより,フリップフロップ回路1505のスラック値の余裕が増す。反対に,フリップフロップ回路1503のスラック値D41に余裕が無く,フリップフロップ回路1507のスラック値D44に余裕がある場合,フリップフロップ回路1505にクロックCLK4を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりして,フリップフロップ回路1505のクロックCLK4の立ち上がりタイミングを遅くする。このことは,フリップフロップ回路1505のクロックCLK4のタイミングを,同じクロックツリーで生成される他のクロックCLK4より遅くし,そのスキューを大きくすることを意味する。これにより,フリップフロップ回路1505のスラック値の余裕が増す。
【0095】
工程1511において,フリップフロップ回路1503,1507のスラック値D41,D44に共に余裕が無い場合は,フリップフロップ回路1503のさらに前段のフリップフロップ回路1501と,フリップフロップ回路1507のさらに後段のフリップフロップ回路1510のスラック値のいずれかのみ余裕があるか判断する(S1513)。いずれかに余裕がある場合,工程1512と同様に,余裕がある側のクロックツリーを変更してクロックスキューを大きくし,そこの余裕をクリティカルパスに分配する。
【0096】
例えば,フリップフロップ回路1510のスラック値に余裕が無く,フリップフロップ回路1501のスラック値に余裕がある場合,フリップフロップ回路1501のクロックCLK3を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1501からフリップフロップ回路1503にデータ信号が供給されるタイミングを早める。これにより,フリップフロップ回路1503のスラック値に余裕ができる。そして今度は,フリップフロップ回路1503のクロックCLK4を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1503からフリップフロップ回路1505にデータ信号が供給されるタイミングを早める。その結果,クロックゲーティング回路1505のスラック値の余裕が増す。反対に,フリップフロップ回路1501のスラック値に余裕が無く,フリップフロップ回路1510のスラック値に余裕がある場合,フリップフロップ回路1507のクロックCLK4を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを遅くして,クロックゲーティング回路1507のクロックCLK4の立ち上がりタイミングを遅くする。これにより,フリップフロップ回路1507のスラック値に余裕ができる。そして今度は,フリップフロップ回路1505のクロックCLK4を供給するクロックラインのクロックゲートを増やし,フリップフロップ回路1505のクロックCLK4の立ち上がりタイミングを遅くしたりクロックラインを長くしたりしてクロックのタイミングを遅くする。これにより,フリップフロップ回路1505のスラック値の余裕が増す。
【0097】
工程S1513において,フリップフロップ回路1503の前段のフリップフロップ回路1501のスラック値と,フリップフロップ回路1507の後段のフリップフロップ回路1510のスラック値に共に余裕があるもしくは無い場合は,さらに前段,後段のフリップフロップ回路のスラック値を判断し,いずれかにのみ余裕があるフリップフロップ回路の組合せが現れるまで工程S1513を繰り返す。
【0098】
工程S1510〜S1514については,工程S1503で把握した2つのフリップフロップ回路の全ての組合せについて行う。
【0099】
最後に,生成したクロックツリーの情報を含んだ配置データを出力し(S1515),クロックツリー生成工程を終了する(S1516)。
【0100】
このようにクロックツリー生成工程(S15)では,クロックツリー生成後のクリティカルパスの前段と後段のフリップフロップ回路のスラック値をもとにクロックラインのクロックゲート数やクロックラインの長さを変更してスラック値の余裕を増し,クリティカルパスのタイミング改善を行うことができる。
【0101】
以上のとおり,本実施の形態のLSI設計方法によると,論理合成工程(S13)では,クロックのスキューを考慮してネットリストの論理最適化を行い,セル配置工程(S14)では,クリティカルパスの前段と後段の回路のスラック値をもとにクリティカルパス上のバッファを減らしてタイミング改善を行い,クロックツリー生成工程(S15)では,クリティカルパスの前段と後段の回路のスラック値をもとにクロックツリーを変更してクリティカルパスのタイミング改善を行うことができる。
【0102】
つまり,従来のLSI設計方法では配線工程(S16)後に値が確定しSTA工程(S17)で設計に取り入れていたクロックのスキューやスラック値を,本実施の形態のLSI設計方法により論理合成工程(S13),セル配置工程(S14),クロックツリー生成工程(S15)に取り入れることで,クリティカルパスのタイミングを改善した精度の高い配置データを生成することができる。また,STA工程(S17)で初めてクリティカルパスのクロックタイミングを修正することが無くなり,設計者は手戻りすること無く円滑に設計作業を進めることができる。
【0103】
以上の実施の形態をまとめると,次の付記のとおりである。
【0104】
(付記1)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【0105】
(付記2)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【0106】
(付記3)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【0107】
(付記4)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【0108】
(付記5)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【0109】
(付記6)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【0110】
(付記7)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給されるクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【0111】
(付記8)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【0112】
(付記9)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【0113】
(付記10)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【0114】
(付記11)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール群外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【0115】
(付記12)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【0116】
(付記13)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【0117】
(付記14)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【0118】
(付記15)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手段と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手段と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手段とを有し,
前記クロックツリー生成手段は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手段を有するLSI設計装置。
【0119】
(付記16)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手段と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手段と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手段とを有し,
前記クロックツリー生成手段は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手段を有するLSI設計装置。
【0120】
(付記17)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手順と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手順と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手順とを有し,
前記クロックツリー生成手順は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手順をコンピュータに実行させるLSI設計プログラム。
【0121】
(付記18)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手順と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手順と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手順とを有し,
前記クロックツリー生成手順は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手順をコンピュータに実行させるLSI設計プログラム。
【0122】
(付記19)
付記1,2,7,8,13または14において,
前記データベース構築工程は,
RTL形式で記述された回路設計データとタイミング制約とをもとにクロック同期対象のインスタンスを配置した仮配置データを生成する仮配置工程と,
前記仮配置データをもとにクロックツリー毎にクロック想定遅延値の算出処理を行うクロック遅延値算出工程と,
前記仮配置データと前記クロック想定遅延値をもとに,前記第1のフリップフロップ回路と,前記第1のクロックゲーティング回路との想定遅延値差を算出し,前記想定遅延値差と前記第1のクロックゲーティング回路のクロック周期とを比較して,前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスに対して優先度フラグを設定する優先度設定工程とを有するLSI設計方法。
【符号の説明】
【0123】
RTL : Register Transfer Level
STA : Static Timing Analysis
PLL : 位相ロックループ(Phase Locked Loop)
SDC : Synopsys Design Constraint
FF : フリップフロップ回路
GCB : クロックゲーティング回路(ゲーテッドクロックバッファ)
【技術分野】
【0001】
本発明は,LSI設計方法,設計プログラムおよび設計装置に関する。
【背景技術】
【0002】
半導体集積回路設計では,半導体集積回路が所望のクロック周波数で正常に動作できるようにするため,タイミング制約を満たして設計や最適化を行う必要があり,これまで特許文献1〜3などの設計方法が提案されてきた。
【0003】
一般的なLSIの設計フローでは,設計者は,まず設計仕様に基づきLSIをRegister Transfer Level(以下,RTLと呼ぶ。)で記述し,RTL形式ファイルと,Synopsys Design Constraint(以下,SDCと呼ぶ。)フォーマットにより記述された制約条件とをもとにして論理合成を行い,ゲートレベルの論理回路データであるネットリストを生成する。次に,ネットリストをもとにしてフロアプランニングを行った後,クロック信号の配線をツリー状に配置したクロックツリーを生成する。そして,各セル間を接続する多層配線パターンを形成する。最後に,Static Timing Analysis(以下,STAと呼ぶ。)を行い,配線の長さや幅,厚さなどに基づき配線パターンの抵抗や容量を抽出して配線遅延を取得し,データ配線遅延,クロック遅延やクロックスキューに基づき,設計回路がセットアップタイムやホールドタイムなどのタイミング制約を満たしている事を確認する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−99491号公報
【特許文献2】特開2007−72995号公報
【特許文献3】特開2006−268165号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし,STAの結果,クロックタイミングがセットアップタイムやホールドタイムの仕様を満たさないことが判明することがある。特に,クロックゲーティング回路とそれを制御するフリップフロップ回路間や,フリップフロップ回路とそれを制御するフリップフロップ回路間でのクロックタイミングが仕様を満たさないことが多い。その場合,設計者はRTL形式ファイルの再生成や仕様変更等の対応を行っており,作業手戻りが発生している。
【0006】
従来の設計フローでは,セル間の配線をレイアウトするまでは配線パターンによる遅延を考慮せず,クロック遅延やクロックスキューが発生しないことを前提に設計を行っているため,設計者が上記2種類の回路間のクロックタイミングを修正する必要があることをSTA前に気付くことは難しい。
【0007】
そこで,本発明の目的は,上記課題を解決するためのLSIの設計方法を提供することとする。
【課題を解決するための手段】
【0008】
LSIの設計方法の第1の側面によれば,
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックが供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルについて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有する。
【0009】
LSIの設計方法の第2の側面によれば,
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給されるクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルについて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有する。
【発明の効果】
【0010】
LSIの設計方法の第1,第2の側面によれば,クロックゲーティング回路とそれを制御するフリップフロップ回路間や,フリップフロップ回路とそれを制御するフリップフロップ回路間のクリティカルパスでのクロックタイミングを改善したLSI設計を行うことができる。
【図面の簡単な説明】
【0011】
【図1】本実施の形態におけるLSI設計フローの概略を示す図である。
【図2】本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路とクロック波形とを示す図である。
【図3】本実施の形態におけるフリップフロップ回路とそのフリップフロップ回路の出力が供給されクロックが異なるフリップフロップ回路とクロック波形とを示す図である。
【図4】本実施の形態におけるLSI設計装置の構成を示すブロック図である。
【図5】本実施の形態におけるLSI設計装置の処理手順を示すフローチャート図である。
【図6】本実施の形態におけるデータベース構築工程の詳細フローを示す図である。
【図7】本実施の形態におけるインスタンスリストとクロックリストを示す図である。
【図8】仮配置したクロックに同期して動作するセルを示す図である。
【図9】本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。
【図10】本実施の形態におけるフリップフロップ回路とクロックゲーティング回路を接続するパスに優先度フラグを設定したデータベースを示す図である。
【図11】本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。
【図12】本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とはクロックが異なるフリップフロップ回路とを接続するパスに優先度フラグを設定したデータベースを示す図である。
【図13】本実施の形態における論理合成工程の詳細フローを示す図である。
【図14】本実施の形態における,論理合成後のクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。
【図15】本実施の形態における,論理合成後のフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。
【図16】クリティカルパスの前段と後段のインスタンスのスラック値を登録したデータベースを示す図である。
【図17】本実施の形態におけるセル配置工程の詳細フローを示す図である。
【図18】本実施の形態におけるクロックツリー生成工程の詳細フローを示す図である。
【発明を実施するための形態】
【0012】
以下,図面を用いて本発明の実施の形態について説明する。
【0013】
(本実施の形態におけるLSI設計フロー概略)
図1は,本実施の形態におけるLSI設計フローの概略を示す図である。
【0014】
まず,RTL設計工程(S11)では,設計仕様に基づきLSIをRTLで記述したRTL形式ファイルと,SDCフォーマットにより記述された制約条件ファイルを作成する。次のデータベース(DB)構築工程(S12)にて,RTL形式ファイルと制約条件ファイルをもとにして,クロックを供給されるフリップフロップ回路やクロックゲーティング回路などのセルと,クロック毎の想定遅延値と,クロックに対して入力データのタイミング余裕が少ないと想定されタイミング制約を配慮すべきパス(以下,クリティカルパスと呼ぶ。)などとを抽出または算出してデータベースへ格納し,論理合成工程(S13)でこのデータベースとRTL形式ファイルと制約条件とを用いて論理合成し,クリティカルパスについてクリティカルパス以外のパスよりも優先して最適化を行いネットリストを生成する。そして,セル配置工程(S14)で,生成したネットリストをもとにして,クリティカルパスの始点および終点のフリップフロップ回路やクロックゲーティング回路を,始点の前段または終点の後段のフリップフロップ回路のうちタイミング余裕が少ないフリップフロップ回路とモジュール群を形成して,そのモジュール群内のセルをモジュール群外のセルよりも優先的に仮想チップ上に配置する。配置後,クロックツリー生成工程(S15)で,同じクロックを供給されるセル間のクロックのスキューが最小になるようにクロックツリーを仮想チップ上に生成し,さらにクリティカルパス始点と終点後段のフリップフロップ回路のうち,タイミング余裕が大きいフリップフロップ回路に接続する始点または終点のフリップフロップ回路もしくはクロックゲーティング回路のクロックツリーを変更してクロックのスキューを大きくする。その後,配線工程(S16)で各セル間を接続する多層配線パターンを形成し,STA工程(S17)で,スタティック・タイミング解析を行い,設計回路がセットアップタイムやホールドタイムなどのタイミング制約を満たしている事を確認する。
【0015】
本実施の形態のLSI設計方法は,従来のLSI設計方法と比較した場合,データベース構築工程(S12)が追加され,論理合成工程(S13)とセル配置工程(S14)とクロックツリー生成工程(S15)において改良が加えられている。その具体的な内容については,次に説明する。
【0016】
従来のLSI設計方法では,セル間の配線をレイアウトするまでは配線パターンによる遅延を考慮せず,クロック遅延やクロックスキューが発生しないことを前提に設計を行っている。そのため,STAの結果,主にクロックゲーティング回路とそれを制御するフリップフロップ回路間や,フリップフロップ回路とそれを制御するフリップフロップ回路間でのクロックタイミングが,セットアップタイムやホールドタイムの仕様を満たさないことが多く,その場合,設計者はRTL形式ファイルの再生成や仕様変更等の対応を行い,作業手戻りが発生していた。
【0017】
図2は,本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路とクロック波形とを示す図である。図2に示す回路は,クロック発生源201,クロック線の分岐点215,クロックバッファ202,バッファをピラミッド状に配置したクロックツリー203,209,クロックライン204,クロックツリー203からクロックを供給されるクロックゲーティング回路205,クロックゲーティング回路205の出力線206,分周器208,クロックツリー209からクロックライン210を介して分周されたクロックを供給されるフリップフロップ回路211,フリップフロップ回路211の入力データ信号線212,フリップフロップ回路の出力データ信号線213,組合せ回路214,クロックゲーティング回路のイネーブル信号線207,を有する。クロックツリーのサイズはクロックを供給されるセルの数と位置に応じて決まり,図2ではクロックツリー209の方が203よりもツリーサイズが大きいとする。
【0018】
クロック発生源201から高周波クロックCLK1が出力されており,高周波クロックCLK1はクロックツリー203,クロックライン204を介してクロックゲーティング回路205に供給されている。また,分岐点215で分かれた高周波クロックCLK1は分周器208により低周波クロックCLK2に分周され,低周波クロックCLK2はクロックツリー209,クロックライン210を介してフリップフロップ回路211に供給されている。さらにフリップフロップ回路211の出力信号は,出力データ信号線213,組合せ回路214,イネーブル信号線207を介してクロックゲーティング回路205のイネーブル端子ENに供給されている。つまり,クロックゲーティング回路205は低周波クロックCLK2のタイミングで生成されるイネーブル信号EN1により高周波クロックCLK1の通過・非通過を制御する。
【0019】
ここで例として,クロックツリー203内のピラミッド頂点における高周波クロックCLK1の波形をCLK1(0),クロックゲーティング回路205のクロック端子に供給される高周波クロックCLK1の波形をCLK1(1),クロックツリー209内のピラミッド頂点における低周波クロックCLK2の波形をCLK2(0),フリップフロップ回路211のクロック端子に供給される低周波クロックCLK2の波形をCLK2(1),データ入力端子D_INに供給されるデータ信号をD_IN2,出力端子D_OUTから出力されるD_OUT2,クロックゲーティング回路205のイネーブル端子ENに供給されるイネーブル信号をEN1とすると,それぞれの波形は図2の下段に示すようになる。
【0020】
クロックツリー203,209ではツリーのサイズに応じてクロック遅延が生じるため,CLK1(0)とCLK1(1)ではクロック遅延D1が発生しており,CLK2(0)とCLK2(1)ではクロック遅延D2が発生している。また,クロックツリー209の方が203よりもサイズが大きいため,D2>D1となり,その差であるクロックのスキューD3が生じている。さらに,フリップフロップ回路211の出力信号D_IN2と,クロックゲーティング回路205のイネーブル信号EN1との間には,パス遅延D4が生じている。クロックゲーティング回路205がイネーブル信号EN1によりクロックCLK(1)を精度良くオン・オフするためには,CLK1(1)の立ち上がりタイミングとEN1の立ち上がりタイミングの差であるD5が,クロックゲーティング回路205のセットアップタイム条件を満たす必要がある。つまり,設計を行う際には,クロックゲーティング回路205とフリップフロップ回路11とのクロックのスキューD3と,出力データ信号線213,組合せ回路214,イネーブル信号線207におけるパス遅延D4を考慮する必要がある。
【0021】
図3は,本実施の形態におけるフリップフロップ回路とそのフリップフロップ回路の出力が供給されクロックが異なるフリップフロップ回路とクロック波形とを示す図である。図3に示す回路は,クロック発生源301,クロック線の分岐点315,クロックバッファ302,バッファをピラミッド状に配置したクロックツリー303,309,クロックライン304,クロックツリー303からクロックを供給されるフリップフロップ回路305,クロックゲーティング回路305の入力データ信号線306,フリップフロップ回路305の出力データ信号線307,組合せ回路314,フリップフロップ回路311の入力データ信号線312,分周器308,クロックツリー309から分周されたクロックライン310を介してクロックを供給されるフリップフロップ回路311,フリップフロップ回路311の出力データ信号線313,を有する。図3ではクロックツリー309の方が303よりもツリーサイズが大きいとする。
【0022】
クロック発生源301から高周波クロックCLK1が出力されており,高周波クロックCLK1はクロックツリー303,クロックライン304を介してフリップフロップ回路305に供給されている。また,分岐点315で分かれた高周波クロックCLK1は分周器308により低周波クロックCLK2に分周され,低周波クロックCLK2はクロックツリー309,クロックライン310を介してフリップフロップ回路311に供給されている。さらにフリップフロップ回路305の出力は,出力データ信号線307,組合せ回路314,入力データ信号線312を介してフリップフロップ回路311に供給されている。つまり,フリップフロップ回路311は,高周波クロックCLK1で処理されたフリップフロップ回路305の処理結果を,低周波クロックCLK2のタイミングで取り込んでいる。
【0023】
ここで例として,クロックツリー303内のピラミッド頂点における高周波クロックCLK1の波形をCLK1(0),フリップフロップ回路305のクロック端子に供給される高周波クロックCLK1の波形をCLK1(1),データ入力端子D_INに供給されるデータ信号をD_IN1,出力端子D_OUTから出力されるデータ信号をD_OUT1,クロックツリー309内のピラミッド頂点における低周波クロックCLK2の波形をCLK2(0),フリップフロップ回路311のクロック端子に供給されるクロックをCLK2(1),データ入力端子D_INのデータ信号をD_IN2,出力端子D_OUTから出力されるデータ信号をD_OUT2とすると,それぞれの波形は図3の下段に示すようになる。
【0024】
図3下段に示すように,CLK1(0)とCLK1(1)の間にはクロックツリー303によるクロック遅延D1が生じており,CLK2(0)とCLK2(1)の間にもクロックツリー311によるクロック遅延D2が生じている。また,クロックツリー309の方が303よりもツリーサイズが大きいため,D2>D1となり,その差であるクロックのスキューD3が生じている。さらに,データ信号D_IN2はD_OUT1が出力データ信号線307,組合せ回路314,入力データ信号線312を介して伝送してきた信号であるため,パス遅延D4が生じている。フリップフロップ回路311から所望の出力を得るためには,CLK2(1)の立ち上がりタイミングとデータ信号D_IN2の立ち上がりタイミングの差であるD5が,フリップフロップ回路311のセットアップタイム条件を満たす必要がある。つまり,設計を行う際には,フリップフロップ回路305と311とのクロックのスキューD3と,出力データ信号線307,組合せ回路314,入力データ信号線312におけるパス遅延D4を考慮する必要がある。
【0025】
(LSI設計装置および処理手順)
次に,図2,図3に示したクロックのスキューとパス遅延を考慮して設計を図1の設計フローのとおりに行うためのLSI設計装置について説明する。図4は,本実施の形態におけるLSI設計装置の構成を示すブロック図である。
【0026】
図4において,LSI設計装置は,LSI設計装置全体の制御を行うCPU401と,CPU401の処理時にメモリとして使用されるRAM402と,プログラム群としてデータベース構築ツール403と,論理合成ツール404と,配置ツール405と,クロックツリー生成ツール406と,配線ツール407と,STAツール408と,LSIをRTLで記述されたRTL形式ファイルであるRTLデータ409とを有し,さらに,SDCフォーマットにより記述された制約条件ファイルであるSDCデータ410と,RTLデータ409とSDCデータ410にもとにしてクロックを供給されるセルやクロックごとの想定遅延値,クリティカルパスなどを格納するデータベース411と,論理合成工程で生成されるネットリストを格納するネットリスト412と,セル配置工程やクロックツリー生成工程,配線工程で生成されたデータを格納する配置データ413と,スタティック・タイミング解析結果を格納するSTAデータ414と,バス415とを有する。各構成部はバス415によってそれぞれ接続されていて,各プログラムはCPU401により実行される。
【0027】
図5は,本実施の形態におけるLSI設計装置の処理手順を示すフローチャート図である。図4とあわせて各手順について以下説明する。
【0028】
データベース構築ツール403は,RTL設計手順(S21)で生成されたRTLデータ409とSDCデータ410を読み出し,クロックを供給されるセルやクロック周波数を抽出し,同一周波数のクロック毎のクロックツリーでの想定遅延値を算出しクリティカルパスを求めて,データベース411へ抽出データ,想定遅延値,クリティカルパスのデータを出力する(S22)。
【0029】
次に,論理合成ツール404は,RTLデータ409,SDCデータ410,データベース411を読み出して,ゲートレベルの論理回路データであるネットリストを生成し,さらにクリティカルパス以外のパスよりもクリティカルパスを優先してそのネットリストの最適化を行いネットリスト412へ出力する(S23)。
【0030】
そして,配置ツール405は,データベース411からクリティカルパスを,ネットリスト412からネットリストをそれぞれ読み出す。さらに,配置ツール405は,クリティカルパスの始点および終点のフリップフロップ回路やクロックゲーティング回路を,始点の前段または終点の後段のフリップフロップ回路のうちタイミング余裕が少ない方のフリップフロップ回路と共にモジュール群を形成する。配置ツール405は,それにより,そのモジュール群内のセルを,モジュール群外のセルよりも優先して近接するように仮想チップ上に配置してセル配置データを生成する(S24)。
【0031】
次に,クロックツリー生成ツール406は,データベース411からクリティカルパスを,配置データ413からセル配置データをそれぞれ読み出し,同じクロックを供給されるセル間のクロックのスキューが最小になるようにクロックツリーをセル配置データの仮想チップ上に配置してクロックツリーデータを生成する。さらに,クリティカルパスの始点と終点後段のフリップフロップ回路のうち,タイミング余裕が大きい方のフリップフロップ回路に接続する始点または終点のフリップフロップ回路もしくはクロックゲーティング回路のクロックのクロックツリーを変更して,そのクロックのスキューを他のクロックより大きくし,変更したクロックツリーデータを配置データ413へ出力する(S25)。
【0032】
配線ツール407は,配置データ413からセル配置データとクロックツリーデータとを読み出し,セル間に多層配線パターンを形成し,配置データ413へ出力する(S26)。
【0033】
最後にSTAツール408は配置データ413から配線データ(セル配置データ,クロックツリーデータ,多層配線パターン)を読み出して,タイミング解析処理を行い,解析結果をSTAデータ414へ出力する(S27)。
【0034】
(LSI設計方法)
[データベース構築工程]
次に,図1に示したLSI設計処理の各工程について具体例を挙げて詳細に説明する。図6は,本実施の形態におけるデータベース構築工程の詳細フローを示す図である。図7は,本実施の形態におけるインスタンスリストとクロックリストを示す図である。
【0035】
初めに,RTL形式ファイルとクロックの周波数などを規定する制約条件を記載したSDCファイルとをもとに,フリップフロップ回路やクロックゲーティング回路,RAM等のクロックに同期して動作するインスタンス(セル,RTLで定義されるレジスタ)を抽出し(S1202),抽出したセルとクロックの一覧を図7の上段に示すようなインスタンスリストとしてデータベースへ登録する(S1203)。図7のインスタンスリストには,クロックPLL_CLKを供給されるフリップフロップ回路AA/FFと,クロックCLK1を供給されるクロックゲーティング回路BB/GCBと,クロックCLK2を供給されるフリップフロップ回路CCC/FF1が登録されている。
【0036】
次に,工程S1202で抽出したセルを,例えば,図8のように仮配置する(S1204)。図8は,仮配置したクロックに同期して動作するセルを示す図である。図8では,クロックツリーのバッファ801,フリップフロップ回路802,805〜807,809,810とクロックゲーティング回路804,分周器808,RAM811とをクロックごとに仮配置している。クロック発生源801から各セルのクロック端子をクロックラインで接続している。フリップフロップ回路802はクロック発生源801から直接クロックPLL_CLKを供給されている。また,フリップフロップ回路805〜807とクロックゲーティング回路804はクロックCLK1が供給されている。フリップフロップ回路809,810とRAM811は,分周器808を介してクロックCLK2が供給されている。
【0037】
図6にもどり,工程S1204の後,S1204でセルの仮配置をもとにして,クロック毎にクロックラインの総配線長を求め,その総配線長より想定遅延値を見積もり,図7の下段に示すようにクロック毎(PLL_CLK,CLK1,CLK2)のクロック周期と総配線長と想定遅延値とをまとめたクロックリストをデータベースに登録する(S1205)。
【0038】
この想定遅延値は,総配線長をもとにクロックツリーのサイズを想定し,そのクロックツリーのサイズから見積もったクロック遅延値のことであり,総配線長に比例する。クロックツリーで生成されるクロックは,クロックツリーのサイズに応じて,クロック源のクロックに対しある遅延を有する。図2,3でのクロックCLK1(1)がクロックCLK1(0)に対して遅延D1を有することと同じである。本来,クロックツリーのサイズは,クロックが供給されるセルの数とその位置及びクロック配線に応じて決まるので,クロックの遅延量D1は,全てレイアウトされなければ判明しない。しかし,本実施の形態ではRTLファイルとSDCファイルの情報から最も蓋然性の高い遅延量として仮配置したセルへのクロックラインの総配線長に基づく見積値を使用する。この想定遅延値を用いることでタイミングエラーが生じる可能性の高いクリティカルパスを後述するように見出し,論理合成等の処理に改良を加えることが出来る。
【0039】
次に,RTL形式ファイルとSDCファイルをもとにして,図9に示すようなクロックゲーティング回路903と,そのクロックゲーティング回路903にイネーブル信号EN1を出力するフリップフロップ回路901とを把握し(S1206),S1206で把握したクロックゲーティング回路903とフリップフロップ回路901のクロック周波数CLK1,CLK2とCLK1,CLK2の想定遅延値とをデータベースより抽出する(S1207)。
【0040】
図9は,本実施の形態におけるクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。図9には,低周波クロックCLK2を供給されているフリップフロップ回路901と,フリップフロップ回路901の出力信号D_OUT2を供給される組合せ回路902と,組合せ回路902の出力信号をイネーブル信号EN1とし高周波クロックCLK1を供給されるクロックゲーティング回路903と,クロックゲーティング回路903がイネーブル信号EN1でゲーティングしたクロックCLK1が供給されるフリップフロップ回路904が示されている。
【0041】
工程S1207の次に,工程S1207で抽出したクロックゲーティング回路903に入力するクロックCLK1の想定遅延値とフリップフロップ回路901に入力するクロックCLK2の想定遅延値の差をもとめ,クロックゲーティング回路903のクロックCLK1の周期と比較を行う(S1208)。想定遅延値差がクロックCLK1の周期を基準として比較的大きい場合は,フリップフロップ回路901とクロックゲーティング回路903を接続するパスCP905に,クリティカルパスとして優先度フラグ「高」を設定し,データベースに保存する(S1210)。また,反対に想定遅延値差がクロックCLK1の周期を基準として比較的小さい場合は,フリップフロップ回路901とクロックゲーティング回路903を接続するパスCP905に,優先度フラグ「低」を設定し,データベースに保存する(S1211)。
【0042】
図10は,本実施の形態におけるフリップフロップ回路とクロックゲーティング回路を接続するパスに優先度フラグを設定したデータベースを示す図である。図10最下段の「ゲーティングセル」欄に,フリップフロップ回路901とクロックゲーティング回路903を接続するパスCP905に優先度「高」を設定している。なお,図10には図7でデータベースに登録したインスタンスリストとクロックリストも併せて記載している。
【0043】
なお,工程S1208〜S1211は,工程S1206で抽出した全てのクロックゲーティング回路とフリップフロップ回路の組合せに対して行う。
【0044】
次に,RTL形式ファイルとSDCファイルをもとにして,図11に示すようなフリップフロップ回路1101と,そのフリップフロップ回路1101とデータパスで接続されクロックが異なるフリップフロップ回路1103とを把握し(S1212),工程S1212で把握した2つのフリップフロップ回路1101,1103のクロック周波数CLK3,CLK4とCLK3,CLK4の想定遅延値とをデータベースより抽出する(S1213)。
【0045】
図11は,本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。図11には,高周波クロックCLK3を供給されるフリップフロップ回路1101と,フリップフロップ回路1101の出力D_OUT3を供給される組合せ回路1102と,組合せ回路1102が出力したデータ入力信号D_IN4と低周波クロックCLK4とが供給されるフリップフロップ回路1103が示されている。
【0046】
工程S1213の次に,工程S1213で抽出したフリップフロップ回路1101に入力するクロックCLK3の想定遅延値とフリップフロップ回路1103に入力するクロックCLK4の想定遅延値の差をもとめ,フリップフロップ回路1103のクロックCLK4の周期と比較を行う(S1214)。想定遅延値差がクロックCLK4の周期を基準として比較的大きい場合は,フリップフロップ回路1101とフリップフロップ回路903を接続するパスCP1105に,クリティカルパスとして優先度フラグ「高」を設定し,データベースに保存する(S1215)。また,反対に想定遅延値差がクロックCLK4の周期を基準として比較的小さい場合は,フリップフロップ回路1101とフリップフロップ回路1103を接続するパスCP1105に,優先度フラグ「低」を設定し,データベースに保存する(S1216)。
【0047】
図12は,本実施の形態におけるフリップフロップ回路と,そのフリップフロップ回路とはクロックが異なるフリップフロップ回路とを接続するパスに優先度フラグを設定したデータベースを示す図である。図12最下段の「異クロック間」欄に,フリップフロップ回路1101とフリップフロップ回路1103を接続するパスCP1105に優先度「高」を設定している。なお,図12には図7,10でデータベースに登録したインスタンスリスト,クロックリスト,ゲーティングセルも併せて記載している。
【0048】
なお,工程S1214〜S1217は,工程S1212で抽出した全てのフリップフロップ回路の組合せに対して行う。
【0049】
このように工程S1208〜S1211,S1214〜S1217で,想定遅延値差を基準値と比較して,クロックの入力に対してする入力データのタイミング余裕が少ないと想定されるパスに,クリティカルパスとして優先度フラグ「高」を設定したのは,論理合成工程(S13)やクロックツリー生成工程(S14)において,優先度フラグ「高」のパスをそれ以外のパスよりも優先してクロック遅延やクロックのスキューを考慮して最適化を行うためである。詳細内容については,論理合成工程(S13)とセル配置工程(S14),クロックツリー生成工程(S15)の説明にてそれぞれ記載する。
【0050】
以上より,工程S1201〜S1217の終了をもって,データベース構築工程が完了する(S1218)。
【0051】
[論理合成工程]
続いて,論理合成工程S13について詳細説明をする。図13は,本実施の形態における論理合成工程の詳細フローを示す図である。
【0052】
まず,RTL形式ファイルをもとにRTLレベルで記述された機能記述を論理合成によりゲートレベルに変換し,テクノロジマッピングにより指定したテクノロジ(製造工場のテクノロジ)に基づいたネットリストに変換する(S1302)。そして,各クロックツリーにおいてクロック遅延が発生していない,つまりクロック遅延値=0という条件のもと,クロック毎にデータパスのタイミング解析を行い,その解析結果に基づいて,データパス上の組合せ回路に対して論理段数を変更してファンアウト数を削減したり,インバータの段数を減らすなどの論理変換を行う。さらに,後続工程になるほど回路エリアの縮小が難しくなるため,面積の小さいセルを選択してゲートサイズの縮小を行う(S1303)。論理合成工程では,ネットリストから例えば各セルのファンアウト数が判明するので,少なくともそれに基づいて出力の負荷を見積もることで,データの一定の遅延時間を知ることができる。この遅延時間にしたがって上記のタイミング解析が行われる。
【0053】
ここで,図14は,本実施の形態における,論理合成後のクロックゲーティング回路とそのクロックゲーティング回路にイネーブル信号を供給するフリップフロップ回路を示す図である。図14の上段には,フリップフロップ回路1401と,フリップフロップ回路1401の出力信号を供給される組合せ回路1402と,組合せ回路1402の出力信号を入力端子に供給されるフリップフロップ回路1403と,パスCP1408と,フリップフロップ回路1403の出力信号を供給される組合せ回路1404と,組合せ回路1404の出力信号をイネーブル信号として供給されるクロックゲーティング回路1405と,クロックゲーティング回路がゲーティングしたクロックCLK1が供給されるフリップフロップ回路1407,1410とが示されている。フリップフロップ回路1403は低周波クロックCLK2を,クロックゲーティング回路1405は,高周波クロックCLK1を供給されており,この2つの回路は組合せ回路1404を含むパスCP1408を介して接続されている。このパスCP1408は,データベース構築工程(S12)の工程S1210にてクリティカルパスとして優先度フラグ「高」を設定されている。
【0054】
工程S1303後,データベースより,クリティカルパスCP1408の始点のフリップフロップ回路1403と終点のクロックゲーティング回路1405を把握し,それぞれのクロックCLK2,CLK1の想定遅延値を抽出する(S1304)。
【0055】
そして,工程S1304で抽出したクロックCLK1,CLK2の想定遅延値の差を算出し,論理合成ツールを使用して,その求めた想定遅延値差を不確かさ(uncertainty)として,クロックゲーティング回路1405のクロック入力端子に設定する(S1305)。
【0056】
なお,工程S1304〜S1305は,フリップフロップ回路1403,クロックゲーティング回路1405に該当する全てのクロックゲーティング回路とフリップフロップ回路の組合せに対して行う。
【0057】
図15は,本実施の形態における,論理合成後のフリップフロップ回路と,そのフリップフロップ回路とデータパスで接続されクロックが異なるフリップフロップ回路を示す図である。図15の上段には,フリップフロップ回路1501と,フリップフロップ回路1501の出力信号を供給される組合せ回路1502と,組合せ回路1502の出力信号を入力端子に供給されるフリップフロップ回路1503と,フリップフロップ回路1503の出力信号を供給される組合せ回路1504を含むパスCP1508と,組合せ回路1504の出力信号を入力端子に供給されるフリップフロップ回路1505と,フリップフロップ回路1505の出力信号を供給される組合せ回路1506と,組合せ回路1506の出力信号を入力端子に供給されるフリップフロップ回路1507と,フリップフロップ回路1507の出力信号を供給される組合せ回路1511と,組合せ回路1511の出力信号を入力端子に供給されるフリップフロップ回路1510とが示されている。フリップフロップ回路1501,1503は高周波クロックCLK3を,フリップフロップ回路1505,1507,1510は低周波クロックCLK4を供給されている。また,パスCP1508は,データベース構築工程(S12)の工程S1210にてクリティカルパスとして優先度フラグ「高」を設定されている。
【0058】
工程S1305後,データベースより,クリティカルパス1508の始点のフリップフロップ回路1503と終点のフリップフロップ回路1505とを把握し,それぞれのクロックCLK3,CLK4の想定遅延値を抽出する(S1306)。
【0059】
工程S1306で抽出したクロックCLK3,CLK4の想定遅延値の差を算出し,論理合成ツールを使用して,その求めた想定遅延値差を不確かさとして,フリップフロップ回路1505のクロック端子に設定する(S1307)。
【0060】
なお,工程S1306〜S1307は,フリップフロップ回路1503,フリップフロップ回路1505に該当する全てのフリップフロップ回路の組合せに対して行う。
【0061】
このように工程S1304〜S1307において,クリティカルパスにより接続された2つの回路(フリップフロップ回路1403とクロックゲーティング回路1405,フリップフロップ回路1503とフリップフロップ回路1505)の2つのクロックCLK3,CLK4のスキューの規模を,クリティカルパスの終点の回路(クロックゲーティング回路1405,フリップフロップ回路1505)のクロック入力端子に設定した後,論理合成ツールを使用してクリティカルパスの論理最適化処理を行う(S1308)。すなわち,クロックのスキューを考慮した論理合成工程内の最適化処理を行う。この最適化処理では,クリティカルパスの遅延を減らすために例えば,多段論理において段数を変更してファンアウト数を減らしたり,3段のインバータで構成されている構造を1段のインバータに簡単化したり,冗長論理を削除するなどの処理を行う。また,すべてのフリップフロップ回路およびクロックゲーティング回路のクロック入力端子に不確かさを設定してクリティカルパスの論理最適化処理を論理合成ツールで行うと,処理が複雑になり破綻してしまい,最適化されたネットリストを出力できないことがある。そこで,本実施の形態では,クリティカルパスの終点の回路のクロック入力端子にのみ不確かさを設定する。このように,最適化すべきクリティカルパスに限って,不確かさというより厳しい条件を課して最適化処理を行うことで,論理合成ツールが,他のパスを犠牲にしてもその条件を満たすようにクリティカルパスを最適化することができる。
【0062】
次に,論理最適化処理結果をもとにして,図14のクリティカルパスCP1408の前段のフリップフロップ回路のスラック値,すなわち始点のフリップフロップ回路1403のスラック値と,後段のフリップフロップ回路のスラック値,すなわち終点のクロックゲーティング回路1405でゲーティングされたクロックCLK1を供給されるフリップフロップ回路1407のスラック値とをそれぞれ確認する。また,同様に,図15のクリティカルパスCP1508の前段のフリップフロップ回路のスラック値,すなわち始点のフリップフロップ回路1503のスラック値と,後段のフリップフロップ回路のスラック値,すなわち終点のフリップフロップ回路1505の出力を入力データ信号として供給されるフリップフロップ回路1507のスラック値とをそれぞれ確認する(S1309)。ここでのスラック値の確認は,工程S1303で説明したのと同様である。
【0063】
ここで,本実施の形態におけるスラック値とは,図14,15の下段に示すようにクロックのセットアップタイムに対する入力信号の立ち上がりタイミングの余裕時間D31,D34,D41,D44を表す。
【0064】
図14の下段には,フリップフロップ回路1403,1407の入力波形が示されている。フリップフロップ回路1403には入力信号D_IN2とクロックCLK2が,フリップフロップ回路1407には入力信号D_IN1とクロックCLK1が,図14の波形で入力されているものとする。また,クロックCLK1,CLK2の立ち上がり前のD32,D35の時間をセットアップタイム,立ち上がり後のD33,D36の時間をホールドタイムとする。このとき,入力信号D_IN2,D_IN1は,セットアップタイムよりも早いタイミングで立ち上がる必要があるが,入力信号D_IN2,D_IN1の立ち上がりタイミングのセットアップタイムまでの余裕値D31,D34をスラック値としている。
【0065】
図15においても図14と同様である。図15の下段には,フリップフロップ回路1503,1507の入力波形が示されている。フリップフロップ回路1503には入力信号D_IN3とクロックCLK3が,フリップフロップ回路1507には入力信号D_IN4とクロックCLK4が,図15の波形で入力されているものとする。また,クロックCLK3,CLK4の立ち上がり前のD42,D45の時間をセットアップタイム,立ち上がり後のD43,D46の時間をはホールドタイムとする。このとき,入力信号D_IN3の立ち上がりタイミングのセットアップタイムまでの余裕値D41と,入力信号D_IN4の立ち上がりタイミングのセットアップタイムまでの余裕値D44をスラック値としている。
【0066】
図13にもどり,工程S1309でスラック値D31,D34,D41,D44を確認し,工程S1308の最適化処理実施前よりもスラック値が改善されていない場合は,該当のクリティカルパスの終点のクロックゲーティング回路,またはフリップフロップ回路の不確かさの値を大きくし(S1310),再度,工程S1308の論理最適化を実施する。このように,スラック値が改善されていないクリティカルパスの終点の不確かさを大きくすることにより,前回よりも当該クリティカルパスの最適化の優先度をあげ,論理合成ツールによって他のパスを犠牲にしてでも優先的に最適化処理が行われ,スラック値がより改善される。スラック値が改善されている場合は,図16に示すように,クリティカルパスの前段と後段のインスタンス名称とスラック値をデータベースに保存する(S1311)。
【0067】
図16は,クリティカルパスの前段と後段のインスタンスのスラック値を登録したデータベースを示す図である。図16上段には,図12に示したインスタンスリスト,クロックリスト,「ゲーティングセル」欄1601,「異クロック間」欄1602を記載している。図16の下段の「前段のスラック情報」欄1603に,クリティカルパスの始点のインスタンスと同じクロックを供給され,その始点のインスタンスとパスを介して接続するインスタンス名称と,クロック名称と,スラック値と,クリティカルパスの始点の名称と,クリティカルパスの始点終点の組合せ分類(始点終点ともにフリップフロップ回路であれば「異クロック」,始点がフリップフロップ回路で終点がクロックゲーティング回路であれば「ゲーティング」とする。)とが記載されている。また,「後段のスラック情報」欄1604には,クリティカルパスの終点のインスタンスと同じクロックを供給され,その終点のインスタンスとパスを介して接続するインスタンス名称と,クロック名称と,スラック値と,クリティカルパスの終点のインスタンス名称と,クリティカルパスの始点終点の組合せ分類とが記載されている。
【0068】
工程S1311終了後,工程S1308で論理最適化されたネットリストを出力(S1312)し,論理合成工程は終了する(S1313)。
【0069】
このように工程S1304〜S1308でクロックのスキューを設定して最適化処理を行うことで,従来の論理合成よりもクリティカルパスのタイミングを改善したネットリストを生成することができる。また,工程S1311でデータベースに保存したクリティカルパスの前段のスラック値と後段のスラック値は,後述するセル配置工程(S14)やクロックツリー生成工程(S15)にてクリティカルパスのタイミング改善に活用することができる。
【0070】
[セル配置工程]
次にセル配置工程S14について詳細説明をする。図17は,本実施の形態におけるセル配置工程の詳細フローを示す図である。従来のセル配置工程では,セルなどのインスタンスを機能毎にグルーピングした複数のモジュール毎に近接してインスタンスを仮想チップ上に配置していた。しかし,本実施の形態におけるセル配置工程では,インスタンスを機能毎にグルーピングして仮想チップ上に配置するだけでなく,さらにクリティカルパスの前段と後段のスラック値を考慮して従来と異なる新たなモジュールを設定し,そのモジュール毎に近接してインスタンスを配置する。
【0071】
まず,論理合成工程(S13)で生成したネットリストから,セルなどのインスタンスを機能毎にグルーピングしたモジュールとそのモジュールに含まれるインスタンスの情報を抽出し(S1402),データベースからクリティカルパスで接続されたフリップフロップ回路とクロックゲーティング回路の情報を抽出する(S1403)。そして,工程S1402で抽出したモジュールとインスタンスの情報をもとにして,クリティカルパスの始点のフリップフロップ回路と,終点のクロックゲーティング回路とが,同じモジュール内に含まれているか判断する(S1404)。
【0072】
工程S1404の結果,クリティカルパスの始点のフリップフロップ回路と,終点のクロックゲーティング回路とが同じモジュールには含まれていない場合は,クリティカルパスの前段と後段のフリップフロップ回路のスラック値をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する。つまり,図14では,論理合成工程(S13)で生成したフリップフロップ回路1403,1407のスラック値D31,D34をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する。(S1405)。
【0073】
そして,いずれかのスラック値のみが余裕がある場合は,余裕が無いスラック値のフリップフロップ回路が属するモジュールに,フリップフロップ回路1403とクロックゲーティング回路1405とを加えた新モジュールを設定する。そして,この新モジュール内のセルを新モジュール外のセルより優先して,仮想チップ上にセル間を近づけて配置する(S1406)。例えば,図14において,フリップフロップ回路1403のスラック値D31に余裕があるが,フリップフロップ回路1407のスラック値D34には余裕が無い場合,フリップフロップ回路1403と組合せ回路1404を,クロックゲーティング回路1405とフリップフロップ回路1407,1410を含む,クロックCLK1で制御されるセル群に加えて,新モジュール1409を設定する。そして,その新モジュール1409外のセル(この場合フリップフロップ回路1401と組合せ回路1402)よりも新モジュール1409内のセルを優先して,相互に近づけて密集させて配置することで,セル配置工程でクリティカルパスCP1408のパス遅延が拡大しないようにする。一方,フリップフロップ回路1403のスラック値D31は余裕があるため,フリップフロップ回路1401と組合せ回路1402は,フリップフロップ回路1403のセットアップタイムに対する余裕の範囲内で,新モジュール1409とは離して仮想チップ上に配置しても構わない。
【0074】
なお,工程S1404〜S1406は,工程S1403で把握したクロックゲーティング回路とフリップフロップ回路の全ての組合せに対して行う。
【0075】
次に,データベースからクリティカルパスで接続された始点のフリップフロップ回路と終点のフリップフロップ回路の情報を抽出し(S1407),工程S1402で抽出したモジュールとインスタンスの情報をもとにして,クリティカルパスの始点と終点のフリップフロップ回路が同じモジュールに含まれているか判断する(S1408)。
【0076】
工程S1408の結果,クリティカルパスの始点と終点のフリップフロップ回路が同じモジュールには含まれていない場合は,クリティカルパスの前段と後段のフリップフロップ回路のスラック値をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する。つまり,図15では,論理合成工程(S13)で生成したフリップフロップ回路1503,1507のスラック値D41,D44をデータベースより抽出し,いずれかのスラック値のみが余裕があるか判断する(S1409)。
【0077】
いずれかのスラック値のみが余裕がある場合は,余裕が無いスラック値のフリップフロップ回路が属するモジュールに,フリップフロップ回路1503,1505を加えた新モジュールを設定する。そして,この新モジュール内のセルを新モジュール外のセルより優先して,仮想チップ上にセル間を近づけて配置する(S1410)。例えば,図15において,フリップフロップ回路1507のスラック値D44は余裕があるが,フリップフロップ回路1503のスラック値D41には余裕が無い場合,フリップフロップ回路1505と組合せ回路1504を,フリップフロップ回路1501,1503を含む,クロックCLK3で制御されるセル群に加えて,新モジュール1509を設定する。そして,その新モジュール1509外のセル(この場合組合せ回路1506とフリップフロップ回路1507)よりも新モジュール1509内のセルを優先して,相互に近づけて密集させて配置することで,セル配置工程でクリティカルパスCP1508のパス遅延を拡大しないようにする。一方,フリップフロップ回路1507のスラック値は余裕があるため,組合せ回路1506とフリップフロップ回路1507は,フリップフロップ回路1507のセットアップタイムに対する余裕の範囲内で,モジュール1509とは離して仮想チップ上に配置しても構わない。
【0078】
工程S1408〜S1410は,工程S1407で把握した2つのフリップフロップ回路の全ての組合せに対して行う。
【0079】
工程S1406,1410を終了したら,すべての総配線長が短くなるように残りのセルを仮想チップ上に配置し(S1411),さらに配線混雑度が低減できるように仮想チップ上に配置する(S1412)。
【0080】
そして,仮想チップに配置したセルの配置データを生成した時に配置ツールから出力されるクロック毎にクロックラインの総配線長,クリティカルパスの前段と後段のフリップフロップ回路のスラック値,さらにその総配線長より見積もった想定遅延値をデータベースへ登録する(S1413)。
【0081】
最後に生成した配置データを出力(S1414)し,セル配置工程(S14)を終了する(S1415)。
【0082】
このようにセル配置工程S14では,論理合成工程S13で算出したクリティカルパスの前段と後段のフリップフロップ回路のスラック値をもとに,スラック値が余裕が無い側のフリップフロップ回路群とクリティカルパスの始点終点の回路とでモジュールを形成し,このモジュール内のセルを優先的に近づけて仮想チップ上に配置することで,クリティカルパス上のバッファを減らし遅延が拡大しないようタイミング改善を行うことができる。
【0083】
[クロックツリー生成工程]
クロックツリー生成工程S15について詳細説明をする。図18は,本実施の形態におけるクロックツリー生成工程の詳細フローを示す図である。本実施の形態における論理合成工程(S13),セル配置工程(S14)では,クリティカルパスの終点のクロックゲーティング回路に供給されるイネーブル信号,もしくは終点のフリップフロップ回路に供給されるデータ信号のタイミングを早めることで,クリティカルパスのタイミングを改善した。一方,以下に説明するクロックツリー生成工程(S15)では,クリティカルパスの始点のフリップフロップ回路のクロックのタイミングを早くする,または終点のクロックゲーティング回路もしくはフリップフロップ回路のクロックのタイミングを遅くすることにより,クリティカルパスのタイミングを改善する。
【0084】
セル配置工程(S14)で生成した配置データをもとにして,クロック発生源から各ゲートにクロックを供給するクロックツリーを生成する(S1502)。通常,クロックツリーが出力する複数のクロックのスキューができるだけ小さくなるように,クロックツリーが生成される。そして,クロックツリー生成時にクロックツリー生成ツールから出力されるクロック毎にクロックラインの総配線長,クリティカルパスの前段と後段のフリップフロップ回路のスラック値,さらにその総配線長より見積もった想定遅延値をデータベースへ登録する(S1503)。そしてセル配置工程(S14)で生成した配置データから,図14,15のクリティカルパスCP1408,1508の始点のフリップフロップ回路1403,1503と終点のクロックゲーティング回路1405,フリップフロップ回路1505の位置情報を抽出する(S1504)。
【0085】
工程S1502のクロックツリー生成時にクロックツリー生成ツールから出力されるクリティカルパスCP1408の終点のクロックゲーティング回路1405のスラック値に余裕があるか判断する(S1505)。そして,クロックゲーティング回路1405のスラック値に余裕がある場合,クロックツリーの変更は行わない(S1509)。
【0086】
反対に,クロックゲーティング回路1405のスラック値に余裕が無い場合,クリティカルパスの前段と後段のフリップフロップ回路1403,1407のいずれかのスラック値に余裕があるか判断する(S1506)。フリップフロップ回路1403,1407のいずれかのスラック値D31,D34に余裕がある場合,余裕がある側のクロックのスキューを大きくする(S1507)。
【0087】
例えば,図14において,フリップフロップ回路1407のスラック値D34に余裕が無く,フリップフロップ回路1403のスラック値D31に余裕がある場合,フリップフロップ回路1403にクロックCLK2を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1403からクロックゲーティング回路1405にイネーブル信号が供給されるタイミングを早める。このことは,フリップフロップ回路1403に供給されるクロックCLK2のタイミングを,同じクロックツリーで生成される他のクロックCLK2よりも早めて,そのスキューを大きくすることを意味する。これにより,クロックゲーティング回路1405のスラック値の余裕が増す。反対に,フリップフロップ回路1403のスラック値D31に余裕がなく,フリップフロップ回路1407のスラック値D34に余裕がある場合,クロックゲーティング回路1405にクロックCLK1を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを早めて,クロックゲーティング回路1405のクロックCLK1の立ち上がりタイミングを遅くする。このことは,クロックゲーティング回路1405に供給されるクロックCLK1のタイミングを,同じクロックツリーで生成される他のクロックCLK1よりも遅くし,そのスキューを大きくすることを意味する。これにより,クロックゲーティング回路1405のスラック値の余裕が増す。
【0088】
工程S1506において,フリップフロップ回路1403,1407のスラック値D31,D34に共に余裕が無い場合は,フリップフロップ回路1403のさらに前段のフリップフロップ回路1401のスラック値と,フリップフロップ回路1407のさらに後段のフリップフロップ回路1410のスラック値のいずれかに余裕があるか判断する(S1508)。いずれかに余裕がある場合は,工程1507と同様に,余裕がある側のクロックツリーを変更してクロックスキューを大きし,そこの余裕をクリティカルパスに分配する。
【0089】
例えば,フリップフロップ回路1410のスラック値に余裕が無く,フリップフロップ回路1401のスラック値に余裕がある場合,フリップフロップ回路1401のクロックCLK2を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1403からフリップフロップ回路1403にデータ信号が供給されるタイミングを早める。これにより,フリップフロップ回路1403のスラック値に余裕ができる。そして今度は,フリップフロップ回路1403のクロックCLK2を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1403からクロックゲーティング回路1405にイネーブル信号が供給されるタイミングを早める。その結果,クロックゲーティング回路1405のスラック値の余裕が増す。反対に,フリップフロップ回路1401のスラック値に余裕が無く,フリップフロップ回路1410のスラック値に余裕がある場合,フリップフロップ回路1407のクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを遅くし,クロックゲーティング回路1407のクロックCLK1の立ち上がりタイミングを遅くする。これにより,フリップフロップ回路1407のスラック値に余裕ができる。そして今度はクロックゲーティング回路1405にクロックCLK1を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを遅らせ,クロックゲーティング回路1405のクロックCLK1の立ち上がりタイミングを遅くする。その結果,クロックゲーティング回路1405のスラック値の余裕が増す。
【0090】
工程S1508において,フリップフロップ回路1403の前段のフリップフロップ回路1401のスラック値と,フリップフロップ回路1407の後段のフリップフロップ回路1410のスラック値共に余裕が無い場合は,さらに前段,後段のフリップフロップ回路のスラック値を判断し,いずれかに余裕があるフリップフロップ回路の組合せが現れるまで工程S1508を繰り返す。
【0091】
工程S1505〜S1509については,工程S1504で把握したクロックゲーティング回路とフリップフロップ回路の全ての組合せに対して行う。
【0092】
次に,工程S1504で位置情報を抽出したクリティカルパスCP1508の始点のフリップフロップ回路1503と終点のフリップフロップ回路1505に対して,工程S1505と同様に確認を行う。つまり,工程S1502のクロックツリー生成時にクロックツリー生成ツールから出力されるクリティカルパスCP1508の終点のフリップフロップ回路1505のスラック値に余裕があるか判断する(S1510)。そして,終点のフリップフロップ回路1505のスラック値に余裕がある場合,クロックツリーの変更は行わない(S1514)。
【0093】
反対に,フリップフロップ回路1505のスラック値に余裕が無い場合,クリティカルパスの前段と後段のフリップフロップ回路1503,1507のいずれかのスラック値D41,D44に余裕があるか判断する(S1511)。フリップフロップ回路1503,1507のいずれかのスラック値D41,D44に余裕がある場合,余裕がある側のクロックのスキューを大きくする(S1512)。
【0094】
例えば,図15において,フリップフロップ回路1507のスラック値D44に余裕が無く,フリップフロップ回路1503のスラック値D41に余裕がある場合,フリップフロップ回路1503にクロックCLK3を供給するクロックラインのクロックゲートを減らしたりクロックラインを短くしたりしてクロックのタイミングを早め,フリップフロップ回路1503からフリップフロップ回路1505にデータ信号が供給されるタイミングを早める。このことは,フリップフロップ回路1503のクロックCLK3のタイミングを,同じクロックツリーで生成される他のクロックCLK3より早めて,そのスキューを大きくすることを意味する。これにより,フリップフロップ回路1505のスラック値の余裕が増す。反対に,フリップフロップ回路1503のスラック値D41に余裕が無く,フリップフロップ回路1507のスラック値D44に余裕がある場合,フリップフロップ回路1505にクロックCLK4を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりして,フリップフロップ回路1505のクロックCLK4の立ち上がりタイミングを遅くする。このことは,フリップフロップ回路1505のクロックCLK4のタイミングを,同じクロックツリーで生成される他のクロックCLK4より遅くし,そのスキューを大きくすることを意味する。これにより,フリップフロップ回路1505のスラック値の余裕が増す。
【0095】
工程1511において,フリップフロップ回路1503,1507のスラック値D41,D44に共に余裕が無い場合は,フリップフロップ回路1503のさらに前段のフリップフロップ回路1501と,フリップフロップ回路1507のさらに後段のフリップフロップ回路1510のスラック値のいずれかのみ余裕があるか判断する(S1513)。いずれかに余裕がある場合,工程1512と同様に,余裕がある側のクロックツリーを変更してクロックスキューを大きくし,そこの余裕をクリティカルパスに分配する。
【0096】
例えば,フリップフロップ回路1510のスラック値に余裕が無く,フリップフロップ回路1501のスラック値に余裕がある場合,フリップフロップ回路1501のクロックCLK3を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1501からフリップフロップ回路1503にデータ信号が供給されるタイミングを早める。これにより,フリップフロップ回路1503のスラック値に余裕ができる。そして今度は,フリップフロップ回路1503のクロックCLK4を供給するクロックラインのクロックゲートを減少したりクロックラインを短くしたりしてクロックのタイミングを早めて,フリップフロップ回路1503からフリップフロップ回路1505にデータ信号が供給されるタイミングを早める。その結果,クロックゲーティング回路1505のスラック値の余裕が増す。反対に,フリップフロップ回路1501のスラック値に余裕が無く,フリップフロップ回路1510のスラック値に余裕がある場合,フリップフロップ回路1507のクロックCLK4を供給するクロックラインのクロックゲートを増やしたりクロックラインを長くしたりしてクロックのタイミングを遅くして,クロックゲーティング回路1507のクロックCLK4の立ち上がりタイミングを遅くする。これにより,フリップフロップ回路1507のスラック値に余裕ができる。そして今度は,フリップフロップ回路1505のクロックCLK4を供給するクロックラインのクロックゲートを増やし,フリップフロップ回路1505のクロックCLK4の立ち上がりタイミングを遅くしたりクロックラインを長くしたりしてクロックのタイミングを遅くする。これにより,フリップフロップ回路1505のスラック値の余裕が増す。
【0097】
工程S1513において,フリップフロップ回路1503の前段のフリップフロップ回路1501のスラック値と,フリップフロップ回路1507の後段のフリップフロップ回路1510のスラック値に共に余裕があるもしくは無い場合は,さらに前段,後段のフリップフロップ回路のスラック値を判断し,いずれかにのみ余裕があるフリップフロップ回路の組合せが現れるまで工程S1513を繰り返す。
【0098】
工程S1510〜S1514については,工程S1503で把握した2つのフリップフロップ回路の全ての組合せについて行う。
【0099】
最後に,生成したクロックツリーの情報を含んだ配置データを出力し(S1515),クロックツリー生成工程を終了する(S1516)。
【0100】
このようにクロックツリー生成工程(S15)では,クロックツリー生成後のクリティカルパスの前段と後段のフリップフロップ回路のスラック値をもとにクロックラインのクロックゲート数やクロックラインの長さを変更してスラック値の余裕を増し,クリティカルパスのタイミング改善を行うことができる。
【0101】
以上のとおり,本実施の形態のLSI設計方法によると,論理合成工程(S13)では,クロックのスキューを考慮してネットリストの論理最適化を行い,セル配置工程(S14)では,クリティカルパスの前段と後段の回路のスラック値をもとにクリティカルパス上のバッファを減らしてタイミング改善を行い,クロックツリー生成工程(S15)では,クリティカルパスの前段と後段の回路のスラック値をもとにクロックツリーを変更してクリティカルパスのタイミング改善を行うことができる。
【0102】
つまり,従来のLSI設計方法では配線工程(S16)後に値が確定しSTA工程(S17)で設計に取り入れていたクロックのスキューやスラック値を,本実施の形態のLSI設計方法により論理合成工程(S13),セル配置工程(S14),クロックツリー生成工程(S15)に取り入れることで,クリティカルパスのタイミングを改善した精度の高い配置データを生成することができる。また,STA工程(S17)で初めてクリティカルパスのクロックタイミングを修正することが無くなり,設計者は手戻りすること無く円滑に設計作業を進めることができる。
【0103】
以上の実施の形態をまとめると,次の付記のとおりである。
【0104】
(付記1)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【0105】
(付記2)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【0106】
(付記3)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【0107】
(付記4)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【0108】
(付記5)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【0109】
(付記6)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【0110】
(付記7)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給されるクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【0111】
(付記8)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【0112】
(付記9)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【0113】
(付記10)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【0114】
(付記11)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール群外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【0115】
(付記12)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【0116】
(付記13)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【0117】
(付記14)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【0118】
(付記15)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手段と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手段と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手段とを有し,
前記クロックツリー生成手段は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手段を有するLSI設計装置。
【0119】
(付記16)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手段と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手段と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手段とを有し,
前記クロックツリー生成手段は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手段を有するLSI設計装置。
【0120】
(付記17)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手順と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手順と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手順とを有し,
前記クロックツリー生成手順は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手順をコンピュータに実行させるLSI設計プログラム。
【0121】
(付記18)
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成手順と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置手順と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成手順とを有し,
前記クロックツリー生成手順は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする手順をコンピュータに実行させるLSI設計プログラム。
【0122】
(付記19)
付記1,2,7,8,13または14において,
前記データベース構築工程は,
RTL形式で記述された回路設計データとタイミング制約とをもとにクロック同期対象のインスタンスを配置した仮配置データを生成する仮配置工程と,
前記仮配置データをもとにクロックツリー毎にクロック想定遅延値の算出処理を行うクロック遅延値算出工程と,
前記仮配置データと前記クロック想定遅延値をもとに,前記第1のフリップフロップ回路と,前記第1のクロックゲーティング回路との想定遅延値差を算出し,前記想定遅延値差と前記第1のクロックゲーティング回路のクロック周期とを比較して,前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスに対して優先度フラグを設定する優先度設定工程とを有するLSI設計方法。
【符号の説明】
【0123】
RTL : Register Transfer Level
STA : Static Timing Analysis
PLL : 位相ロックループ(Phase Locked Loop)
SDC : Synopsys Design Constraint
FF : フリップフロップ回路
GCB : クロックゲーティング回路(ゲーテッドクロックバッファ)
【特許請求の範囲】
【請求項1】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【請求項2】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【請求項3】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【請求項4】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【請求項5】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【請求項6】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【請求項7】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【請求項8】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【請求項9】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【請求項10】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【請求項11】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール群外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【請求項12】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【請求項13】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【請求項14】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【請求項1】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【請求項2】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成工程とを有するLSI設計方法。
【請求項3】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【請求項4】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手段とを有するLSI設計装置。
【請求項5】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【請求項6】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行うとともに,前記クリティカルパスを前記クリティカルパス以外のパスよりも優先して最適化し,ネットリストを生成する論理合成手順とをコンピュータに実行させるLSI設計プログラム。
【請求項7】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【請求項8】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成工程と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置工程とを有するLSI設計方法。
【請求項9】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【請求項10】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手段と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手段と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手段とを有するLSI設計装置。
【請求項11】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティング回路から出力される第2のクロックを供給される第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第2のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路とを加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール群外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【請求項12】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築手順と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成し,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出する論理合成手順と,
セルを機能別にグルーピングした複数のモジュールのうち,前記第1,第2の余裕度のうち余裕度が小さい第1または第3のフリップフロップ回路が属するモジュールに,前記クリティカルパスの両端の前記第1と第2のフリップフロップ回路を加えた新モジュールを設定し,前記ネットリスト内の複数のセルのうち当該新モジュール内のセルを,当該新モジュール外のセルより優先して仮想チップ上に配置するセル配置手順とをコンピュータに実行させるLSI設計プログラム。
【請求項13】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力をイネーブル信号として供給され前記第2のクロックを供給される第1のクロックゲーティング回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1のフリップフロップ回路と前記第1のクロックゲーティング回路との間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第1のクロックゲーティングの出力をクロックとする第2のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【請求項14】
LSIの仕様を記述したハードウェア記述ファイルと,クロック情報を有する制約条件ファイルとから第1のクロックと第2のクロックのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し,前記第1のクロックを供給される第1のフリップフロップ回路と前記第1のフリップフロップ回路の出力を入力データ信号として供給され前記第2のクロックを供給される第2のフリップフロップ回路とにおいて,前記第1のクロックと前記第2のクロックの想定遅延値の差が基準値より大きい場合に前記第1,第2のフリップフロップ回路の間のパスをクリティカルパスとしてデータベースへ登録するデータベース構築工程と,
前記ハードウェア記述ファイルと前記制約条件ファイルに基づいて論理合成を行いネットリストを生成する論理合成工程と,
前記ネットリストに基づいて,仮想チップ上に前記ネットリスト内の複数のセルを配置した配置データを生成するセル配置工程と,
前記仮想チップ上にクロック源から複数の供給クロックを生成するクロックツリーを配置したクロックツリーデータを生成するクロックツリー生成工程とを有し,
前記クロックツリー生成工程は,前記クロックツリーデータをもとにして,前記第1のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第1の余裕度と,前記第2のクロックを供給され前記第2のフリップフロップ回路の出力を入力データ信号とする第3のフリップフロップ回路におけるデータ入力タイミングに対するクロックタイミングの第2の余裕度とを算出し,前記クロックツリーが生成する複数の供給クロックのうち,前記第1,第2の余裕度のうち余裕度が大きい側の第1または第2のフリップフロップ回路のクロックのスキューを他のクロックよりも大きくする工程を有するLSI設計方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2013−33360(P2013−33360A)
【公開日】平成25年2月14日(2013.2.14)
【国際特許分類】
【出願番号】特願2011−168662(P2011−168662)
【出願日】平成23年8月1日(2011.8.1)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成25年2月14日(2013.2.14)
【国際特許分類】
【出願日】平成23年8月1日(2011.8.1)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]