(57)【特許請求の範囲】
【請求項１】
レジスタ転送レベルで記載された論理回路を表現する処理対象データファイルから、ゲートレベルのネットリストデータファイルを生成する情報処理装置であって、
前記処理対象データファイルを解析し、フリップフロップにより時間軸のクロックについて、所定のサイクル数隔ててイネーブル状態となる演算器を抽出する抽出手段と、
該抽出手段で抽出した演算器の共有化を行って、Gate Levelのネットリストを表現するネットリストファイルを生成する生成手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記抽出手段は、更に、クロックイネーブルが排他論理になっているフリップフロップの前段に位置する演算器を抽出の対象とすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成手段は、前記抽出手段で抽出した演算器に対して、製造プロセス、素子遅延、配線長や物理的な位置情報を用いて、演算器の共有化してもタイミング収束可能かどうかを判定してGate Levelのネットリストファイルを生成することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
レジスタ転送レベルで記載された論理回路を表現する処理対象データファイルから、ゲートレベルのネットリストデータファイルを生成する情報処理装置であって、
前記処理対象データファイルを解析し、論理構造から同時に動作させる必要がない演算器を抽出する抽出手段と、
該抽出手段で抽出した演算器の共有化を行って、Gate Levelのネットリストを表現するネットリストファイルを生成する生成手段とを有し、
前記生成手段は、前記抽出手段で抽出した演算器に対して、駆動されている電源の管理を表す情報から演算器の共有化の可否を判定してGate Levelのネットリストファイルを生成することを特徴とする情報処理装置。
【請求項５】
コンピュータが読み込み実行することで、前記コンピュータに、請求項１乃至４のいずれか１項に記載の情報処理装置として機能させるためのプログラム。
【請求項６】
請求項５に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【請求項７】
レジスタ転送レベルで記載された論理回路を表現する処理対象データファイルから、ゲートレベルのネットリストデータファイルを生成する情報処理装置の制御方法であって、
抽出手段が、前記処理対象データファイルを解析し、フリップフロップにより時間軸のクロックについて、所定のサイクル数隔ててイネーブル状態となる演算器を抽出する抽出工程と、
生成手段が、前記抽出工程で抽出した演算器の共有化を行って、Gate Levelのネットリストを表現するネットリストファイルを生成する生成工程と
を有することを特徴とする情報処理装置の制御方法。
【請求項８】
レジスタ転送レベルで記載された論理回路を表現する処理対象データファイルから、ゲートレベルのネットリストデータファイルを生成する情報処理装置の制御方法であって、
抽出手段が、前記処理対象データファイルを解析し、論理構造から同時に動作させる必要がない演算器を抽出する抽出工程と、
生成手段が、前記抽出工程で抽出した演算器の共有化を行って、Gate Levelのネットリストを表現するネットリストファイルを生成する生成工程とを有し、
前記生成工程は、前記抽出工程で抽出した演算器に対して、駆動されている電源の管理を表す情報から演算器の共有化の可否を判定してGate Levelのネットリストファイルを生成することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩなどの半導体における回路の生成技術に関するものである。
【背景技術】
【０００２】
従来、Large Scale Integration（以下、LSI）の設計手順として、一般的に、以下のフローが知られている。最初に、要求仕様にあった論理回路をVerilog HDLなどの専用のハードウェア記述言語で記述し、レジスタ転送レベル（Register Transfer Level：以下、RTL）の論理回路を定義するファイルを作成する。RTL論理回路は、フリップフロップ（以下、FF）と呼ばれる記憶素子と記憶素子を持たない組み合わせ回路で構成される。作成したRTL論理回路が要求仕様にあっていることを確認後、そのRTL論理回路をゲートレベル回路に変換する論理合成を行い、ゲートレベル回路を生成する。この際の論理合成には、製造する半導体プロセスを有するベンダーから提供される半導体プロセスの物理特性を反映したセルライブラリ、及び、生成されるゲートレベル回路の動作周波数などを設定したタイミング制約ファイルが使用される。次に、生成されたゲートレベル回路において、回路内の信号が決められた時間内で動作するかを検証するタイミング検証を行う。最後に、ゲートレベル回路の各素子を物理的に配置配線し、配置配線が終了すると製造工程に移行する。
【０００３】
近年の半導体の製造プロセスの微細化に伴い、LSIの回路規模は肥大化し、実装されるFFの数も膨大な数となっている。肥大化する回路規模や、それに伴う配置配線作業の増大に対して、回路規模を削減するために論理合成において、同一階層や同一Verilog HDLファイルに記載されている演算器を論理合成で共有化して回路規模を削減する技術が一般的に知られている。また、特許文献１のように符号付き、符号無しなど異なるタイプの演算器を共有化して回路規模削減を行う技術も知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２１３０２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の論理合成の演算器の共有化は、RTL記述上から同じタイミングで使用しない共有化可能な演算器を探し出さなければならい。論理合成の実行時間や処理能力を考えると、同一階層や同一ファイル内の回路など限られた範囲に対しての演算器の共有化しかできないのが現状である。
【０００６】
本発明は、上記問題点に鑑みなされたものである。そして、本発明は、同一階層や同一ファイル内の回路に限定せず、クロックの論理構造から共有化可能な演算器を抽出し、演算器の共有化して論理合成を行い、回路規模の小さいゲートレベル回路を表すネットリスクデータファイルを生成する技術を提供する。
【課題を解決するための手段】
【０００７】
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
レジスタ転送レベルで記載された論理回路を表現する処理対象データファイルから、ゲートレベルのネットリストデータファイルを生成する情報処理装置であって、
前記処理対象データファイルを解析し、フリップフロップにより時間軸のクロックについて、所定のサイクル数隔ててイネーブル状態となる演算器を抽出する抽出手段と、
該抽出手段で抽出した演算器の共有化を行って、Gate Levelのネットリストを表現するネットリストファイルを生成する生成手段とを有する。
【発明の効果】
【０００８】
本発明によれば、クロックの論理構造から共有化可能な演算器を抽出し、演算器の共有化して論理合成を行うことで回路規模の小さいゲートレベル回路を表すネットリストデータファイルが生成できる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る処理手順を示すフローチャート。
【図２】実施形態に係る回路構成を示すブロック図。
【図３】実施形態に係るクロックを示すタイミングチャート。
【図４】実施形態に係る回路構成を示すブロック図。
【図５】実施形態に係るクロックを示すタイミングチャート。
【図６】実施形態に係る情報処理装置のブロック構成図。
【発明を実施するための形態】
【００１０】
以下、添付図面に従って本発明に係る実施の形態を詳細に説明する。
【００１１】
［第１の実施形態］
図６は、実施形態におけるパーソナルコンピュータに代表される情報処理装置のブロック構成図である。本装置は、装置全体の制御を司るＣＰＵ６０１をはじめ以下の構成を有する。ＲＯＭ６０２はＢＩＯＳやブートプログラムを格納する読出し専用メモリである。ＲＡＭ６０２はＣＰＵ６０１の主記憶装置として機能するランダムアクセスメモリである。このＲＡＭ６０２は、ＣＰＵ６０１が実行するＯＳ（オペレーティングシステム）や各種アプリケーションプログラム（実施形態における論理合成アプリケーションを含む）がロードされ、実行される。また、ＲＡＭ６０２はＣＰＵ６０１の各種ワークエリアとしても使用される。ＨＤＤ６０４は外部記憶装置として機能し、ＯＳや各種アプリケーション、ならびにデータファイル等を記憶保持するものである。ＯＳやアプリケーションは、ＲＡＭ６０３に読出されて、ＣＰＵ６０１により実行されることになる。操作部６０５は、ユーザからの指示入力手段として機能するものであり、キーボード、マウス等のポインティングデバイスで構成される。表示部６０６は、ＯＳや各種アプリケーション実行時のＧＵＩを表示する。ネットワークインターフェース６０７は本装置をネットワークに接続するものである。そして、上記各種構成要素はバス６０８を介してＣＰＵ６０１に接続されることになる。
【００１２】
上記構成において、本装置の電源がＯＮになると、ＣＰＵ６０１はＲＯＭ６０２のブートプログラムを実行して、ＨＤＤ６０４のＯＳ６０４ａをＲＡＭ６０３に読出し、ＯＳを実行し、本装置が情報処理装置として機能する。そして、ＣＰＵ６０１はＨＤＤ６０１内の論理合成に係るアプリケーションプログラム６０４ｂをＲＡＭ６０３にロードし、実行する。この結果、本装置はハードウェア記述言語で記述されたファイルから、ハードウェアのゲートレベルのデータファイルを生成する装置として機能することになる。
【００１３】
以下、本装置のＣＰＵ３０１が論理合成に係るアプリケーションプログラム６０４ａを実行した場合の処理内容を説明する。なお、説明に先立ち、ＨＤＤ６０４には、既に論理回路の動作を表現したレジスタ転送レベルのハードウェア記述ファイル（処理対象データファイル）６０４ｃが格納されているものとする。また、回路のタイミング情報を記述した論理合成制約ファイル６０４ｄ、回路、配線の遅延情報が記述された物理情報ファイル６０４ｅも既に格納されているものとして説明する。ハードウェア記述ファイル６０４ｃは、公知のアプリケーションによって作成されるものとし、その説明は省略する。そして、本実施形態では、ハードウェア記述ファイル６０４ｃ、論理合成制約ファイル６０４ｄ、回路及び物理情報ファイル６０４ｅを参照して、ネットリストデータファイル６０４ｆを生成するものである。以下、アプリケーション６０４ｂを実行した際のＣＰＵ３０１の処理手順を図１のフローチャートに従って説明する。
【００１４】
はじめに、ＣＰＵ６０１は、ステップＳ１００において、論理回路の動作が記述されたハードウェア記述ファイル６０４ｃをＲＡＭ６０３に読み込む（Ｓ１０１）。そして、ＣＰＵ６０１は、読み込んだハードウェア記述ファイル６０４ｃを解析し、回路のタイミング情報を記載した論理合成制約ファイル６０４ｄと、回路、配線の遅延情報が書かれた物理情報ファイル６０４３ｅを用いて論理合成する。そして、ＣＰＵ３０１は、その論理合成により、回路を構成する基本単位であるベーシックセルを使用した回路記述ファイルであるGate LevelのネットリストをＲＡＭ６０３上に生成し、ステップＳ１０２に進む。
【００１５】
ステップＳ１０２では、ＣＰＵ３０１は、共有化可能演算器の抽出処理を行う。この処理では、記憶素子であるフリップフロップ（以下、FF）に入力されるクロックの論理が排他かどうかを検出し、排他であるFFのデータ入力に接続されている演算器から共有可能な演算器を抽出する。そして、ステップＳ１０３にて、ＣＰＵ３０１は、抽出の可否を判定し、抽出できた場合にはＳステップＳ１０４に進み、そうでなければ、ステップＳ１０５に進む。
【００１６】
ステップＳ１０４において、ＣＰＵ３０１は、共有化可能演算器の抽出処理において、回路がどの位置にあるかを示すフロアプラン情報から配線遅延を算出し、演算器を共有化してもタイミング収束可能かどうかを判定する。タイミング収束可能な場合は、ステップＳ１０５へ進み、そうでなければ、ステップＳ１０６に進む。
【００１７】
ステップＳ１０５において、ステップＳ１０１で生成されたGate Levelのネットリストにおいて、ステップＳ１０３で共有化可能とされた演算器のネットリストを、共有させたGate Levelのネットリストに変更し、ステップＳ１０７に進む。
【００１８】
一方、ステップＳ１０６に処理を進めた場合には、ステップＳ１０１で生成されたGate Levelのネットリストに対し、何も変更せずにステップＳ１０７に進む。
【００１９】
そして、ステップＳ１０７にて、ＣＰＵ３０１は、ネットリストを生成し、その電子ファイルをネットリストファイル６０４ｆとしてＨＤＤ６０４に生成し、本処理を終える。
【００２０】
次に、図２、３を用いてステップＳ１０２、ステップＳ１０４で述べた共有化可能演算器の抽出処理の抽出処理を具体的に説明する。
【００２１】
図２は、本実施形態に係る回路構成を示すブロック図であり、同図（ａ）は演算器の共有化前のブロック図、同図（ｂ）は演算器共有化後のブロック図である。また、図３は、本実施形態におけるクロックを示すタイミングチャートである。
【００２２】
図２において、参照符号２０２、２０５、２０７、２１１、２１４、２１６はＦＦ(フリップフロップ）である。参照符号２０１、２０３、２０６、２１２、２１３、２２１は加算器である。参照符号２０４、２１０、２１５、２２４は乗算器である。参照符号２１７はインバータ、参照符号２０８、２１８はクロックゲーティングセル、そして、参照符号２００、２０９は回路の階層を示すブロックである。
【００２３】
図２（ａ）において、ブロック２００には、信号Ａ、信号Ｂ、信号Ｃ、信号Ｄ、信号Ｅとクロックが入力される。信号Ａ、信号Ｂ、信号Ｃ、信号Ｄ、信号Ｅの各信号は、ブロック２００内の回路に従い、加算、乗算を行い出力される。一方、ブロック２０９には、信号Ｆ、信号Ｇ、信号Ｈ、信号Ｉ、信号Ｊと、ブロック２００に入力されたクロックとは排他で動作するクロックが入力される。信号Ｆ、信号Ｇ、信号Ｈ、信号Ｉ、信号Ｊはブロック２０９内の回路に従い、加算、乗算を行い出力される。ここで、ブロック２００とブロック２０９に供給されるクロックは、クロックイネーブルが排他になっているため、図３のタイミングチャートに示すように、排他論理で動作する。
【００２４】
さて、共有化可能演算器の抽出処理では、クロックが排他論理で動作することから、演算器を共有しても回路動作は同じになるので、ブロック２００とブロック２０９内の演算器は共有化可能と判定する。また、この抽出処理では、製造プロセス、回路の位置情報やセル遅延情報を示すフロアプランと呼ばれる物理情報から共有化してもタイミング収束可能かどうかを判定する。この抽出処理では、最終的に共有化可能と判定した加算器２０１と２１２、乗算器２０４と２１５を図２（ｂ）に示すように加算器２２１、乗算器２２２として共有化し、Gate Levelのネットリスに変更する。図２（ｂ）において、参照符号２１７、２１８、２２０、２２１はセレクタで、入力される二つの信号を選択する。選択には、クロックイネーブルを使用する。
【００２５】
以上、説明したように本実施形態によれば、同一階層や同一ファイル内の回路に限定せず、クロックの論理構造から共有化可能な演算器を抽出し、演算器を共有化したGate Levelのネットリストを生成することが可能となる。
【００２６】
なお、本実施形態では、ビット幅に関しては特に記載しなかったが、異なるビット幅を入力とする演算器を共有する場合でも、不足ビットに固定値を入力することで回路規模にメリットがある場合は、固定値を入力して、共有化することも可能である。
【００２７】
なお、本実施形態では、回路の位置情報やセル遅延情報（素子遅延情報）を示すフロアプランと呼ばれる物理情報を用いたが、フロアプランがない場合でも論理段数、仮配線長、セル遅延、計上による物理的な距離情報を用いて行うことも可能である。
【００２８】
［第２の実施形態］
上記第１の実施形態では、クロックが排他で動作する例について説明したが、本第２の実施形態では、クロックに従ってシーケンシャルに動作する（順次イネーブルとなって動作する）場合について説明する。なお、論理合成方法のフローは、第１の実施形態で説明したフローと同じであるため省略する。
【００２９】
図４は、第２の実施形態に係る回路構成を示すブロック図であり、同図（ａ）は演算器の共有化前のブロック図、同図（ｂ）は演算器共有化後のブロック図である。図５は、第２の実施形態に係るクロックを示すタイミングチャートである。
【００３０】
図４において、参照符号４０４、４０９、４１２はＦＦ、参照符号４０２、４０３、４０６、４０８、４１５は加算器である。また、参照符号４０１は乗算器、参照符号４０７は減算器、参照符号４０５、４１１はクロックゲーティングセル、参照符号４００、４１０は回路の階層を示すブロックである。
【００３１】
図４（ａ）において、ブロック４００には、信号Ａ、信号Ｂ、信号Ｃ、信号ＤとクロックＡが入力される。信号Ａ、信号Ｂ、信号Ｃ、信号Ｄの各信号は、ブロック４００内の回路に従い、加算、乗算を行い、その演算結果を後続するブロック４１０に出力する。ブロック４１０は、信号Ｅ、信号Ｆ、信号Ｇとブロック４００からの出力、クロックＢが入力される。信号Ｅ、信号Ｆ、信号Ｇとブロック４００からの出力はブロック４１０内の回路に従い、加算、減算を行い出力される。ここで、ブロック４００とブロック４１０に供給されるクロックは、クロックイネーブルによってシーケンシャルに制御されているため、図５のタイミングチャートに示すように順次出力される。なお、クロックＡを制御するクロックイネーブルは本第２の実施形態では、１サイクルアサートされた後は、必ず、１サイクルネゲートするものとする。
【００３２】
共有化可能演算器の抽出処理では、クロックがシーケンシャルにクロックが出力されること、各々のブロックが２サイクル連続でアサートされないことから、演算器を共有しても回路動作は同じにできる。従って、ブロック４００とブロック４１０内の演算器は共有化可能と判定される。また、この抽出処理では、回路の位置情報やセル遅延情報を示すフロアプランと呼ばれる物理情報から共有化してもタイミング収束可能かどうかを判定する。そして、この抽出処理では、クロックを順次イネーブルにするフリップフロップの前段に位置する演算器を抽出の対象とする。つまり、最終的に共有化可能と判定した加算器４０２と４０８を加算器４１５として共有化し、図４（ｂ）に示すGate Levelのネットリストに変更し、電子データファイルとしてＨＤＤに出力される。図４において、参照符号４１３、４１４はセレクタで、入力される二つの信号を選択する。選択には、クロックイネーブルを使用する。
【００３３】
以上、説明したように、クロックの論理構造から共有化可能な演算器を抽出し、演算器を共有化したGate Levelのネットリストを生成することで回路規模の小さい回路を生成することが可能となる。
【００３４】
また、本第２の実施形態では、ブロック４００とブロック４１０が同じ駆動電源管理下である場合を説明した。しかしながら、ブロック４００とブロック４１０が異なる電圧で制御されている場合や、個別に電源遮断可能な場合は、異なる電源管理下となるので、共有化可能演算器の抽出処理は、共有化ができないと判定する。
【００３５】
また、本第２の実施形態では、クロックイネーブルが２サイクル連続でアサートされない例を説明した。しかし、複数サイクル連続でアサートされた場合でも、ＦＦ４１２が複数サイクル分のFFを有するなど、ブロック４００とブロック４１０が同時に使用されることを必要としていない構成になっていれば、この抽出処理では、共有化可能と判定することができる。
【００３６】
なお、実施形態は、RTLのハードウェア記述ファイルを読み込んでゲートレベル回路を出力する場合の論理合成に関して説明した。しかし、RTLを読み込んでRTLを出力する場合、ゲートレベル回路を読み込んでゲートレベル回路を出力する場合も適応するべきものである。
【００３７】
また、本発明は、本発明の技術思想の範囲内において、上記実施形態に限定されるものではなく、対象となる回路形態により適時変更されて適応するべきものである。
【００３８】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００３９】
２０２、２０５、２０７、２１１、２１４、２１６…フリップフロップ（ＦＦ）、２０１、２０３、２０６、２１２、２１３、２２１…加算器、２０４、２１０、２１５、２２４…乗算器、２１７…インバータ、２０８、２１８…クロックゲーティングセル、２００、２０９…階層ブロック、２１７、２１８、２２０、２２１…セレクタ、６０１…ＣＰＵ、６０２…ＲＯＭ、６０３…ＲＡＭ、６０４…ＨＤＤ、６０５…操作部、６０６…表示部、６０７…ネットワークインターフェース
【図１】
0006468743.tif 000002
【図２】
0006468743.tif 000003
【図３】
0006468743.tif 000004
【図４】
0006468743.tif 000005
【図５】
0006468743.tif 000006
【図６】
0006468743.tif 000007