(57)【要約】【課題】スペックの変更が容易な集積回路のハードウエア記述を生成する設計方法、設計プログラム及び設計装置を提供する。【解決手段】ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、所定の高位合成制約に基づいて、ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法。【選択図】図９
2017111591.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法。
【請求項２】
前記ハードウエア記述を生成する工程において、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、請求項１に記載の設計方法。
【請求項３】
前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、請求項２に記載の設計方法。
【請求項４】
前記高位合成レポート情報は、前記複数のステージそれぞれの遅延時間と、各ステージが有するステージ間レジスタの数とを有し、
前記所定の優先条件は、前記複数の組合せのうち各組合せにおける最大ステージ遅延時間が短いことを優先する第１の優先条件と、前記複数の組合せの内各組合せにおけるバイパス設定されるステージ間レジスタの総数が多いことを優先する第２の優先条件のいずれかを有し、
前記バイパスレポート情報は、前記第１の優先条件の場合は前記最大ステージ遅延時間が短いまたは長い順位を有し、前記第２の優先条件の場合は前記バイパス設定されるステージ間レジスタの総数が多いまたは少ない順位を有する、請求項３に記載の設計方法。
【請求項５】
前記バイパス候補のステージ間レジスタは、前記ステージの出力信号を保持するラッチ回路と、前記ラッチ回路をバイパスするバイパス配線と、前記ラッチ回路またはバイパス配線のいずれかをバイパス制御信号に基づいて選択するセレクタと、前記バイパス制御信号に基づいてクロックを通過または非通過するクロックゲートとを有し、
前記バイパス制御信号により前記バイパス候補のステージ間レジスタがバイパス設定される、請求項１に記載の設計方法。
【請求項６】
さらに、前記バイパスステージ選択パターン内の各パターンに対応するモード設定値に対応して、前記各パターン内の前記バイパス設定されるステージ間レジスタのステージの組合せに対応するバイパス設定またはバイパス非設定の前記バイパス制御信号を生成し、前記バイパス制御信号を前記バイパス候補のステージ間レジスタに供給するバイパス設定回路の記述を、前記ハードウエア記述に追加する工程を有する、請求項５に記載の設計方法。
【請求項７】
前記バイパスステージ選択パターンを決定する工程は、
前記ハードウエア記述にしたがう回路に含まれる前記ステージ間レジスタから、前記制約条件で特定された前記バイパスを禁止する特定のステージのステージ間レジスタを除いて、前記バイパス候補のステージ間レジスタを選択する、請求項５に記載の設計方法。
【請求項８】
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理をコンピュータに実行させるコンピュータ読み取り可能な設計プログラムにおいて、前記高位合成処理は、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計プログラム。
【請求項９】
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理部を有する設計装置において、
プロセッサと、
前記プロセッサにより実行される高位合成処理プログラムを記憶する記憶媒体とを有し、
前記高位合成処理プログラムは、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，設計方法、設計プログラム及び設計装置に関する。
【背景技術】
【０００２】
集積回路設計は、ハードウエア記述言語（HD: Hardware Description Language)を用いたRTL(Register Transfer Level)設計が主流である。RTL設計は、ゲートレベル設計に比べて設計抽象度が高いため、開発速度を速めることができる。
【０００３】
一方、RTL設計は、年々増加する集積回路の回路規模に対応できなくなりつつあり、RTL設計よりもさらに抽象度の高い高位設計が利用され始めている。高位設計では、C/C++言語や、ハードウエア記述向けクラスライブラリを実装したSystemCなどにより集積回路の動作記述を生成し、高位合成（High Level Synthesis）（または動作合成（Behavioral Synthesis）、機能合成（Functional Synthesis)とも呼ばれる。）ツールが、C言語等の動作記述をRTL記述である機能記述に変換する。そして、その後はRTL設計と同様に、論理合成ツールが、RTLの機能記述をゲート記述（またはネットリスト）である論理記述に変換し、さらに自動配線ツールがネットリストに基づいてレイアウト設計を行い、SoC（System On Chip）用のマスクデータを生成する。または、FPGA用の論理合成ツールが、RTLの機能記述からFPGA（Field Programmable Gate Array）用のコンフィグレーションデータを生成する。
【０００４】
このように、高位設計では、C言語などによる動作記述をHDLによる機能記述に変換する高位合成ツールが用いられる。この高位合成ツールは、高位合成の制約に基づいて、抽象度の高いソフトウエア言語で記述したソースコードから様々な回路構成を持ったHDLによるハードウエア記述を生成する。高位合成の制約は、例えば、動作速度（クロック周波数）、レイテンシ（入力から出力までのクロック数）、演算回路やメモリの数、回路規模や回路面積などが含まれる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−６６５０号公報
【特許文献２】特開平１０−６３７１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、高位設計では、C言語等による動作記述からHDLによる機能記述に一旦変換した後は、HDLによる機能記述の回路を変更することは容易ではない。一般にHDLは可読性が乏しく人為的に変更することは困難である。そのため、回路構成を変更するためには、再度、高位合成の制約を変更して高位合成を行う必要がある。
【０００７】
また、一旦集積回路を製造し実装した後に、一時的に集積回路の速度（クロック周波数）やレイテンシ（入力してから出力されるまでのクロック数）を落として消費電力を下げたいというシーンや、逆に、速度を高くしてレイテンシを長くしてスループットを向上したいというシーンが存在する。しかし、製造された集積回路の回路構成を変更することは高いコストを要求される。そのため、クロック周波数を高くしてレイテンシを長くするハイスペックの高位合成制約で生成した回路を動作させる場合は、必要以上のスループットで動作し、また余分なエネルギーを消費することになる。逆に、クロック周波数を低くしてレイテンシを短くするロースペックの高位合成制約で生成した回路を動作させる場合は、低消費電力ではあるが、クロック周波数を高くしてレイテンシを短くすることはできない。
【０００８】
そこで，開示の第１の側面の目的は，スペックの変更が容易な集積回路のハードウエア記述を生成する設計方法、設計プログラム及び設計装置を提供することにある。
【課題を解決するための手段】
【０００９】
開示の第１の側面は，ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法である。
【発明の効果】
【００１０】
第１の側面によれば，集積回路のスペックの変更が容易になる。
【図面の簡単な説明】
【００１１】
【図１】高位合成を含む集積回路の設計工程を示すフローチャート図である。
【図２】高位合成工程のフローチャート図である。
【図３】ソースコードを高位合成した場合の回路の元となるデータフローグラフDFGの一例を示す図である。
【図４】ソースコードを高位合成した場合の回路の元となるデータフローグラフDFGの一例を示す図である。
【図５】高位合成制約をクロック周波数200MHzに設定した場合に生成される回路例を示す図である。
【図６】高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。
【図７】高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。
【図８】高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。
【図９】本実施の形態における高位合成プログラムST10のフローチャート図である。
【図１０】ステージ間レジスタとバイパス設定可能なステージ間レジスタの例を示す図である。
【図１１】本実施の形態における高位合成で生成される回路の一例を示す図である。
【図１２】バイパス制約情報の一例を示す図である。
【図１３】バイパスステージ抽出工程の概略を説明する図である。
【図１４】バイパスステージ抽出工程ST21のフローチャート図である。
【図１５】バイパスレポートの詳細版の例を示す図である。
【図１６】要約版バイパスレポートの一例を示す図である。
【図１７】バイパス設定回路生成工程ST22のフローチャート図である。
【図１８】バイパスステージ情報とデコード表とバイパス設定回路の例を示す図である。
【図１９】バイパス設定回路接続工程ST23のフローチャート図である。
【図２０】バイパス設定回路を接続した後の新たな回路を示す図である。
【図２１】第２の実施の形態の概略を説明する図である。
【図２２】第２の実施の形態の概略を説明する図である。
【図２３】第２の実施の形態における高位合成プログラムのフローチャート図である。
【図２４】第２の実施の形態におけるバイパス設定回路接続工程ST23のフローチャート図である。
【図２５】第２の実施の形態における詳細版バイパスレポートの一例を示す図である。
【図２６】バイパスステージ情報とデコード表とバイパス設定回路を示す図である。
【図２７】第２の実施の形態におけるバイパス設定回路の接続工程ST23のフローチャート図である。
【図２８】第２の実施の形態でのバイパス設定回路が接続された新たなHDLによる回路を示す図である。
【図２９】第３の実施の形態におけるHDL記述の集積回路の構成を示す図である。
【発明を実施するための形態】
【００１２】
［用語の定義］
以下は、本明細書で使用する用語の定義集である。
【００１３】
高位合成：High Level Synthesis（HLS）、動作合成または機能合成とも呼ばれる。C言語などで回路の動作を記述したソースコードから、RLTなどのハードウエア記述言語（HDL）で回路の論理を記述したハードウエア記述を生成する処理。高位合成プログラム（または高位合成ツール）により処理される。
【００１４】
高位合成制約：クロック周波数、回路面積、回路規模、消費電力、演算器の数などの回路の制約であり、高位合成において設定される。
【００１５】
高位合成ライブラリ：テクノロジーライブラリとも呼ばれ、回路の製造ラインに対応したパラメータであり、ゲートなどの回路要素の速度、回路要素の消費電力、回路要素の面積、電源電圧などが含まれる。これらのパラメータに基づいて、高位合成ツールは、回路のタイミングや面積、消費電力などを見積る。
【００１６】
高位合成レポート：高位合成ツールが生成するレポートであり、ハードウエア記述の回路における各ステージの遅延時間、各ステージの出力側のステージ間レジスタの数を有する。
【００１７】
バイパス制約：ステージ間レジスタをバイパス設定可能なレジスタ（バイパス候補のステージ間レジスタ）に変換する場合の制約であり、例えば、バイパス設定を許可する（バイパス設定可能な）ステージ間レジスタのステージ数、バイパス設定を許可する特定のステージ間レジスタ、バイパスを禁止する（バイパス設定不可能な）特定のステージ間レジスタ、バイパスを禁止するステージ間レジスタの連続数の最小値などの制約のいずれか、または任意の組合せ。
【００１８】
バイパスレポート：バイパスステージ選択パターンを優先条件に従って順位付けしたレポート。
【００１９】
バイパスステージ：回路のステージの出力側に設けられた全てのステージ間レジスタがバイパスされたステージ。または、ステージの出力側に設けられバイパス設定された全てのステージ間レジスタを総称する場合にも「バイパスステージ」と称される。
【００２０】
回路のステージ：入力側と出力側のステージ間レジスタで挟まれた組み合わせ回路。
【００２１】
ステージ間レジスタ：回路のステージの間に設けられたレジスタ。
【００２２】
バイパス候補のステージ間レジスタ：バイパス設定可能レジスタ。
【００２３】
バイパス設定されるステージ間レジスタ：バイパス設定レジスタ。
【００２４】
バイパスステージ選択パターン：バイパス設定可能レジスタ（バイパス候補レジスタ）のステージのうちバイパス設定レジスタのステージの組合せを有するパターン。
【００２５】
バイパスステージ情報：バイパスステージ選択パターンを全て有する情報。
【００２６】
バイパス設定回路：バイパス設定可能レジスタをバイパス設定する回路であり、バイパス設定されるレジスタの組合せに対応するモード設定値に応じて、バイパス設定とバイパス非設定のバイパス制御信号を生成し、各バイパス設定可能レジスタに出力する回路。
【００２７】
SRC：高級言語で記述されたソースコードであり、C言語、C++言語、SystemC言語など。
【００２８】
FF：フリップフロップであり、ステージ間レジスタのこと。
【００２９】
EDA：Electric Design Automationの略であり、半導体などの設計作業を自動化する手法の総称。
【００３０】
CFG：Control Flow Graphの略であり、回路の制御の流れを表現した図。
【００３１】
DFG：Data Flow Graphの略であり、回路のデータの流れを表現した図。
【００３２】
CDFG：Control Data Flow Graphの略であり、CFGとDFGをあわせた図であり、高位合成時に内部で生成される。
【００３３】
FSM：Finite State Machineの略であり、制御用の有限状態機械。
【００３４】
［高位合成］
まず、高位合成について簡単に説明する。図１は、高位合成を含む集積回路の設計工程を示すフローチャート図である。集積回路の設計工程は、集積回路の仕様に基づいてC言語などで回路動作を記述したソースコード１０から、高位合成制約１２と高位合成ライブラリ１４とに基づいて、HDLで回路の機能を記述したハードウエア記述１６を生成する高位合成工程ST1を有する。高位合成制約１２と高位合成ライブラリ１４については、前述の定義集で説明したとおりである。
【００３５】
さらに、設計工程は、HDLの記述１６をゲートを記述したネットリスト１８に変換する論理合成工程ST2と、ネットリストに基づいて回路要素とそれを接続する配線をレイアウトするレイアウト工程ST3とを有する。レイアウト工程により生成されたレイアウトデータからマスクを生成するマスク生成工程ST4と半導体基板に集積回路を形成する製造工程ST5とにより、システム・オン・チップSoCなどの集積回路が製造される。
【００３６】
また、図示しないが、FPGA用の論理合成ツールが、HDL記述をFPGAのコンフィグレーションデータを生成する。そして、コンフィグレーションデータをFPGAにダウンロードしフィールドプログラマブルゲートアレイFPGAに設定し、HDL記述の機能を有する回路構成を有する集積回路に変換する。
【００３７】
図２は、高位合成工程のフローチャート図である。高位合成工程ST1は、ソースコードを解釈し、演算間のデータ依存関係や制御依存関係を示すコントロール・データ・フロー図CDFGを作成するCDFG作成工程ST11と、その最適化工程ST12と、指定されたテクノロジのライブラリを高位合成ライブラリ１４から抽出するライブラリ処理工程ST13とを有する。
【００３８】
さらに、高位合成工程ST1は、演算器の種類や数などを決定するアロケーション工程ST14と、CDFG内の演算を高位合成制約１２に基づいて並列化し、実行サイクルを決定するスケジューリング工程ST15とを有する。スケジューリングには、演算資源を制約にして回路のレイテンシ（入力から出力までのクロック数）の最小化を目的とする資源制約スケジューリングや、逆にレイテンシを制約にして回路の資源数の最小化を目的とする時間制約スケジューリングなどがある。
【００３９】
また、高位合成工程ST1は、CDFG内の演算子を演算器に、変数や配列をレジスタやメモリにマッピングするバインディング工程ST16を有し、このスケジューリング工程とバインディング工程により各ステージの組み合わせ回路とステージ間レジスタとを有する回路構成が決定される。そして、最後に、ＨＤＬ生成工程ST17が、決定した回路構成を実現する回路ブロックを記述するRTL記述１６を生成する。
【００４０】
RTL記述は、一般に可読性が低く人が修正をすることは困難である。したがって、高位合成されたRTL記述の回路において、クロック周波数や回路構成を変更するためには、高位合成制約を変更して再度高位合成を行い、ソースコードからRTL記述を生成する必要がある。さらに、RTL記述から製造された集積回路であるSoCのクロック周波数や回路構成を変更することは困難であり、高位合成から始まる回路設計工程を再度行うことが必要である。
【００４１】
高位合成は、逐次動作のアルゴリズムを記述したソースコードから、演算器やメモリポート数などの資源制約や、実行サイクル数や各ステージの遅延時間などの時間制約に基づいて、高速だが規模が大きい回路や、低速だが規模が小さく消費電力が少ない回路など様々な回路を合成する。
【００４２】
図３、図４は、ソースコードを高位合成した場合の回路の元となるデータフローグラフDFGの一例を示す図である。図３，図４のソースコード１０は、８個のデータi[0]〜i[7]の累積値sumを算出して出力する動作を記述する。
【００４３】
高位合成ツールは、このようなソースコード１０を高位合成する過程で、図３または図４に示されるデータフローグラフDFGを生成する。図３のデータフローグラフDFGは、ソースコードの加算順と同じように加算演算を逐次実行するのに対して、図４のデータフローグラフDFGは、加算の実行順序を変更し４個の加算器を利用して加算演算を３サイクルで完了する。この場合、図３のデータフローグラフの場合は、１個の加算器を繰り返し動作させる回路構成にすることができ回路規模（回路面積）を小さくすることができるのに対して、図４のデータフローグラフの場合は、４個の加算器を有するので回路規模は大きいが演算サイクル数（レイテンシ）を３に少なくすることができる。このようなデータフローグラフは、最適化工程ST12により生成される。
【００４４】
図３，図４の例で分かるとおり、高位合成ツールにより生成されるHDL記述された回路は、様々な構成を有することが可能である。
【００４５】
図５は、高位合成制約をクロック周波数200MHzに設定した場合に生成される回路例を示す図である。図５の回路の元になるデータフローグラフは、図４のデータフローグラフである。図４のデータフローグラフにスケジューリングとバインディングを行うことで、図５のような各加算演算器の間にステージ間レジスタFFを有する回路を生成する。
【００４６】
図５の回路例は、入力ステージS１と３段の加算ステージS2, S3, S4と出力ステージそれぞれの間にステージ間レジスタであるフリップフロップFFがマッピングされている。そして、３段の加算ステージの遅延時間は５nsと200MHｚのクロックの周期５nsと同じである。そして、入力から出力までのレイテンシは４クロック（サイクル）であり、入力ステージS1と３つの加算ステージS2〜S4それぞれの出力側のステージ間レジスタFFの数は、８個、４個、２個、１個で合計１５個である。
【００４７】
図５の回路は、最大クロック周波数200MHzで動作させることができるとともに、速度を要求しない時はクロック周波数100MHzで動作させることもできる。但し、レジスタであるFFの数は常時７個であり、省電力化は限定的である。
【００４８】
図６，図７は、高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。図６の回路例は、入力ステージS1と初段の加算ステージS2と３段目の加算ステージS4にフリップフロップFFがマッピングされ、２段目の加算ステージにはフリップフロップはマッピングされていない。その結果、加算ステージは２段になっていて、それらの遅延時間は１０nsとクロックの周期と同じである。そして、入力から出力までのレイテンシは３クロックである。また、２段目の２個の加算器の出力側にはフリップフロップが配置されていないので、各ステージのFFの数は、８個、４個、１個で合計１３個である。
【００４９】
一方、図７の回路例は、入力ステージS1と２段目の加算ステージS3と３段目の加算ステージS4にフリップフロップFFがマッピングされ、初段の加算ステージにはフリップフロップはマッピングされていない。その結果、加算ステージは２段になっていて、それらの遅延時間は１０nsとクロックの周期と同じである。そして、入力から出力までのレイテンシは３クロックである。また、初段の４個の加算器の出力側にはフリップフロップが配置されていないので、各ステージのFFの数は、８個、２個、１個で合計１１個である。
【００５０】
図６，７の回路は、最大クロック周波数200MHzで動作させることはできないが、回路規模が小さくなり省電力化することができる。
【００５１】
このように、高位合成では、高位合成制約条件を変更することで、様々な構成の回路の記述を生成することができる。図５の回路は、高速のクロック周波数100MHzで動作させることができ、単位時間当たりのデータ処理量であるパフォーマンスを高くすることができる。一方、図６，７の回路は、高速クロック周波数での動作はできないが、回路規模が小さく、消費電力を低減することができ、さらに、レイテンシのクロック数（クロックサイクル数）を小さくできる。
【００５２】
しかしながら、高位合成によりHDL記述を生成した後では、図５の回路の記述を図６，７の回路の記述に変更すること、またはその逆方向の図６，７の回路の記述から図５の回路の記述に変更することは、前述のとおりHDL記述の可読性の低さなどから困難である。さらに、集積回路を製造した後では、両回路間の変更はほとんど不可能である。
【００５３】
［本実施の形態の高位合成］
図８は、高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。設計装置２０は、コンピュータに高位合成プログラムST1,ST20をインストールした高位合成専用コンピュータである。設計装置２０は、CPUなどのプロセッサ２１と、メモリ２２と、高位合成プログラムST1,ST20と様々なデータを格納するストレージ（図示せず）と、それらを接続するバスBUSを有する。さらに、図示されていないが、ディスプレイやキーボードなどの入出力装置と、ネットワークに接続されるネットワークインターフェースなども有する。
【００５４】
本実施の形態の高位合成プログラムST10は、図２で説明した高位合成プログラムST1と、本実施の形態による新規機能を拡張するためのプログラムST20とを有する。この新規機能拡張プログラムST20は、バイパスステージ抽出モジュールST21と、バイパス設定回路生成モジュールST22と、バイパス設定回路接続モジュールST23とを有する。これらのモジュールの機能については後で詳述する。
【００５５】
データ類は、高位合成プログラムST20が参照する高位合成ライブラリ１４と、高位合成制約１２と、高位合成プログラムST20が入力するC言語などによるビヘイビア（動作）記述１０と、高位合成プログラムST20が出力するHDLによる回路記述１６とを有する。さらに、高位合成プログラムST20が生成する高位合成レポート情報３０を有する。
【００５６】
さらに、データ類は、新規機能拡張プログラムST20が参照するバイパス制約情報３１と、新規機能拡張プログラムST20が生成するバイパスレポート３２と、バイパスステージ情報３３と、バイパス設定回路のHDL記述３４とを有する。また、データ類は、HDLによる回路記述１６にバイパス設定回路のHDL記述３４を合体した新しい回路記述１７を有する。この合体処理は、新規機能拡張プログラムST20のバイパス設定回路接続モジュールST23が、回路記述１６内のバイパス設定可能レジスタにバイパス設定回路のバイパス制御信号を接続した回路記述１７を生成する処理である。
【００５７】
図９は、本実施の形態における高位合成プログラムST10のフローチャート図である。前述のとおり、本実施の形態における高位合成プログラムST10は、一般的な高位合成工程ST1と、本実施の形態で追加される新規機能拡張工程ST20とを有する。
【００５８】
本実施の形態における高位合成の概略は次のとおりである。
【００５９】
まず、高位合成プログラムST10は、高位合成制約を設定してソースコード１０の動作を実現するHDLの回路記述１６を生成する。本実施の形態では、高位合成制約を、想定される集積回路の動作状態のうち最大のクロック周波数に設定して、高位合成を行う。その結果、高位合成プログラムST10は、例えば図５に示したように、最大クロック周波数の周期に対応した間隔でレジスタFFが挿入されたHDLの回路記述１６を生成する。図５の回路例では、入力ステージと３つの加算ステージの４つのステージの間にステージ間レジスタFFが設けられる。
【００６０】
そして、新たに追加した新規機能拡張プログラムST20は、第１に、高位合成レポート情報３０とバイパス制約情報３１とに基づいて、バイパスステージ情報３３とバイパスレポート３２とを生成するバイパスステージ抽出モジュール（または工程）ST21を有する。このバイパスステージ抽出工程ST21では、バイパス制約情報３１のバイパス制約条件に基づいて、HDLの回路記述１６内のステージ間レジスタのどのステージの出力側レジスタFFをバイパス設定可能なレジスタにするかの抽出処理を行う。さらに、抽出したバイパス設定可能なレジスタのうち、バイパス制約条件に基づいて、バイパス設定するレジスタの組合せパターンを好ましくは全て抽出する。この結果、バイパス設定可能なレジスタの複数のステージの中からバイパス設定するレジスタのステージの組合せパターンを、好ましくは、全て有するバイパスステージ情報３３が生成される。
【００６１】
なお、バイパスステージとは、前述の用語の定義で説明したとおり、回路のステージの出力側のステージ間レジスタがバイパスされたステージであり、そのステージの出力側の全てのステージ間レジスタがバイパス設定される。
【００６２】
図１０は、ステージ間レジスタとバイパス設定可能なステージ間レジスタの例を示す図である。ステージ間レジスタFFは、一般的なD型フリップフロップであり、データ入力端子Dに入力される入力をクロックCLKの立ち上がりエッジ（または立ち下がりエッジ）のタイミングでラッチし、出力Qからラッチデータを出力する。また、リセット端子RSTBにLレベルのリセット信号RSTが入力されるとラッチデータは０にリセットされる。
【００６３】
一方、バイパス設定可能なステージ間レジスタFF_bpは、D型フリップフロップFFに、入力端子Dに接続されたバイパスルートBPと、バイパスルートBPまたはフリップフロップFFのいずれかを選択するセレクタSELを有する。そして、バイパス制御信号S#がS#=1であれば、セレクタSELがバイパスルートBPを選択し、S#=0であれば、フリップフロップFFを選択する。これにより、バイパス設定可能なステージ間レジスタFF_bpは、バイパス制御信号S#を「１」に設定することでバイパス設定され、入力INは、クロックCKのタイミングに制約されずバイパスされる。
【００６４】
さらに、バイパス設定可能なステージ間レジスタFF_bpは、クロックCKをバイパス制御信号S#の反転論理に応じてクロック端子CLKに供給するクロックゲートCGを有する。このクロックゲートCGにより、バイパス制御信号S#がS#=1になると、クロックゲートCGはクロック信号CKの通過を禁止してフリップフロップFFのクロックに同期したラッチ動作を停止する。
【００６５】
したがって、ステージ間レジスタが、S#=1によりバイパス設定されると、クロックゲートCGはクロックCKの通過を禁止し、フリップフロップはラッチ動作を停止し、省電力状態になる。逆にS#=0によりバイパス設定が解除されると、クロックゲートはクロックCKの通過を許可し、フリップフロップはラッチ動作を行う。
【００６６】
図１１は、本実施の形態における高位合成で生成される回路の一例を示す図である。図１１の回路は、図５の回路のステージ間レジスタであるフリップフロップFFを、バイパス設定可能なステージ間レジスタFF_bpに置き換えた回路である。そして、バイパス制御信号S1-S4をS1=0, S2=0, S3=1, S4=0に設定することで、４つのステージのステージ間レジスタのうち３段目のステージのステージ間レジスタFF_bpがバイパス設定されている。その結果、３段目のステージ間レジスタFF_bpが削除され、図６の回路と同じになり、入力から出力までは３クロックのレイテンシになる。
【００６７】
しかも、バイパス設定可能なステージ間レジスタFF_bpは、図１０で説明したとおり、バイパス設定されるとクロックゲートCGがクロックCKの通過を禁止してフリップフロップのラッチ動作を停止する。その結果、図１１の回路は、動作クロック周波数を100MHzに低速にするとともに、ステージ間レジスタ２個分の消費電力が削減される。
【００６８】
同様に、図１１において、バイパス制御信号S1-S4をS1=0, S2=1, S3=0, S4=0に設定することで、４つのステージ間レジスタのうち２段目のステージ間レジスタFF_bpがバイパス設定され、さらに４個のステージ間レジスタの消費電力が削減され、実質的に図７の回路と同じになる。
【００６９】
後述するとおり、バイパス設定可能なステージ間レジスタFF_bpをバイパス設定またはバイパス非設定するバイパス制御信号S1-S4を生成するバイパス設定回路を設け、バイパス設定回路が出力するバイパス制御信号の組合せを、外部から設定するモード信号により変更可能にすることで、高位合成された回路の構成を変更することができる。製造済みの集積回路の段階でも同様に、モード信号により回路の構成を変更できる。
【００７０】
図９に戻り、第１に、新規機能拡張プログラムST20は、高位合成レポート情報３０とバイパス制約情報３１とに基づいて、バイパスステージ情報３３とバイパスレポート３２とを生成するバイパスステージ抽出モジュール（または工程）ST21を有する。
【００７１】
高位合成レポート情報３０は、高位合成プログラムST1が高位合成過程で生成する情報であり、各ステージの遅延時間などのタイミング情報、回路規模など回路が形成されるエリアの大きさを有するエリア情報、各ステージのバイパス設定可能レジスタのステージ数の情報などを有する。バイパス制約情報３１は、どのステージのステージ間レジスタをバイパス設定可能レジスタにするか、またどのステージ間レジスタをバイパス設定禁止にするか、などを有する。
【００７２】
したがって、バイパスステージ抽出工程ST21では、高位合成工程ST1により生成された図５のような回路のステージ間レジスタFFについて、バイパス制約情報３１に基づいて、ステージ間レジスタFFのうちバイパス設定可能なステージ間レジスタFF_bpに置換するレジスタを抽出する。さらに、バイパス設定可能なステージ間レジスタFF_bpを持つ複数のステージうち、バイパス設定されるステージ間レジスタのステージの組合せのパターンを全て抽出する。具体例は後述する。
【００７３】
さらに、バイパスステージ抽出工程ST21では、高位合成レポート３０に基づいて、バイパス設定されるステージ間レジスタを有するステージの組合せのパターンそれぞれについて、ステージの遅延時間や削減されるステージ間レジスタの数などを算出し、バイパスレポート３２を生成する。バイパスレポート３２は、クロック周波数（つまりタイミング）を優先した場合にバイパス制御信号S#をどのように設定すべきか、削減されるステージ間レジスタの数（つまり消費電力）を優先した場合にバイパス制御信号S#をどのように設定すべきかなどの情報を有する。
【００７４】
集積回路のユーザは、このバイパスレポートを参照して、バイパス設定可能なステージ間レジスタの状態を設定し、所望の動作の回路に変更可能である。具体例は後述する。
【００７５】
第２に、新規機能拡張プログラムST20は、バイパスステージ情報３３に基づいて、バイパス設定回路の記述３４を生成するバイパス設定回路生成モジュール（または工程）ST22を有する。バイパス設定回路３４は、外部からモード信号を設定することで、設定したモード信号に対応するバイパス設定されるステージ間レジスタのステージの組合せをバイパス設定する。
【００７６】
第３に、新規機能拡張プログラムST20は、新たなHDLによる回路１７を生成するバイパス設定回路接続モジュール（または工程）ST23を有する。バイパス設定回路接続工程ST23では、高位合成プログラムST1が生成したHDLによる回路記述１６の回路内のステージ間レジスタをバイパス設定可能なステージ間レジスタに置換し、そのバイパス設定可能なステージ間レジスタとバイパス設定回路３４とを接続して新たなHDLによる回路記述１７を生成する。具体例は後述する。
【００７７】
以下、新規機能拡張プログラムST20について、具体例を交えて詳細に説明する。
【００７８】
図１２は、バイパス制約情報の一例を示す図である。図１２には、一例として５項目のバイパス制約条件が示されている。項目１は、バイパスステージ数（または数の範囲）である。例えば、バイパスステージ数を１−２と設定すると、同時にバイパス設定されるレジスタのステージ数は、１ステージまたは２ステージに制約される。ここで、バイパスステージとは、図１１の回路における４つのステージ（入力ステージ、３つの加算ステージ）のうち、各ステージの出力側のレジスタがバイパス設定されたステージを意味する。したがって、バイパスステージ数が１−２に設定されると、図１１の４つのステージの出力側のバイパス設定可能レジスタ群のうち、同時に１ステージまたは２ステージがバイパス設定される。設定値は、最小数、最大数、固定数、数の範囲などが可能である。
【００７９】
項目２は、入力の初段ステージのバイパス禁止であり、設定値は真か偽かである。真に設定すると、入力の初段ステージのレジスタはバイパスが禁止され、したがって、図１１の入力の初段ステージS1のレジスタは、バイパス設定可能なレジスタFF_bpに置換されず、通常のレジスタFFのままになる。一般的な回路の場合、入力端子に接続されるレジスタFFのラッチ機能が必須の場合があり、そのような回路の場合は設定値は真にされる。
【００８０】
項目３は、出力の最終ステージのバイパス禁止であり、設定値は真か偽である。真に設定すると、出力の最終ステージのレジスタはバイパスが禁止され、したがって、図１１の集団ステージS4のレジスタは、バイパス設定可能なレジスタFF_bpに置換されず、通常のレジスタFFのままになる。一般的な回路の場合、出力端子に接続されるレジスタFFのラッチ機能が必須の場合があり、そのような回路の場合は設定値は真にされる。
【００８１】
項目４は、バイパスを禁止する特定のステージであり、設定値はステージ番号である。Stage_5N（Nは整数）と設定すると、５の倍数のステージのレジスタは、バイパスを禁止される。したがって、５の倍数のステージのレジスタFFは、バイパス設定可能なレジスタFF_bpに置換されない。
【００８２】
項目５は、バイパスを禁止する連続ステージであり、設定値「０」は偽であり、連続ステージのバイパス設定を禁止しない（いかなる数の連続ステージをバイパスしてよい）ことに設定される。設定値「２」は、バイパスを禁止する連続ステージの最小数が２であることを意味する。そして、２以上の連続ステージ、すなわち全ての連続ステージのバイパス設定は禁止される。設定値「３」は、同様の最小値が３であることを意味し、２つの連続ステージのバイパス設定は許可されるが、３つ以上の連続ステージのバイパス設定は禁止される。
【００８３】
図１２のバイパス制約情報の例では、後述するバイパスステージ抽出工程ST21で、項目２，３，４でバイパス設定が禁止されているステージ以外のステージのレジスタFFが、バイパス設定可能レジスタFF_bpに特定される。そして、項目１，５の制約条件に基づいて、バイパス設定可能レジスタFF_bpをバイパス設定するステージの全組合せパターンが抽出される。
【００８４】
図１３は、バイパスステージ抽出工程の概略を説明する図である。図１３には、図１１と同様の入力端子SIと出力端子SOとの間に４ステージS1-S4のバイパス設定可能なレジスタFF_bpが設けられた回路が示されている。高位合成レポート情報３０は、図示されるとおり、各ステージS1-S4のレジスタFF_bpの数と、レジスタ間の遅延時間（各回路ステージの遅延時間）を有する。数と遅延時間は、図示されるとおりである。
【００８５】
ここで、バイパス制約情報３１が、項目１のバイパスステージ数「１」を有する場合について説明する。ステージS2のバイパス設定可能レジスタFF_bpをバイパス設定してステージS2をバイパスステージにすると、ステージS2の４個のレジスタはバイパスされ、４個のレジスタが削除されその消費電力が削減される。さらに、データパスはS1からS3となり、その遅延時間は2.65ns+2.51ns＝5.16nsとなる。
【００８６】
同様に、ステージS3のバイパス設定可能レジスタFF_bpをバイパス設定してステージS3をバイパスステージにすると、ステージS3の２個のレジスタはバイパスされ、２個のレジスタが削除されその消費電力が削減される。さらに、データパスはS2からS4となり、その遅延時間は2.51ns+2.23ns＝4.74nsとなる。
【００８７】
また、ステージS1またはS4のレジスタをバイパス設定した場合の遅延時間は、図示されるとおりである。
【００８８】
図１３に示すとおり、バイパスステージ抽出工程では、バイパス制約情報に基づいて、バイパス設定されるレジスタのステージ（バイパスステージ）を抽出し、バイパスステージ選択パターン及びバイパスステージ選択パターンを集めたバイパスステージ情報を生成する。さらに、バイパスステージ抽出工程では、バイパスステージ選択パターン毎に、バイパス設定されたことによる遅延時間の変化や削減されるレジスタ数を算出し、バイパスレポートを作成する。
【００８９】
［バイパスステージ抽出工程ST21］
図１４は、バイパスステージ抽出工程ST21のフローチャート図である。また、図１５は、バイパスレポートの詳細版の例を示す図である。バイパスステージ抽出工程について、バイパスレポートの詳細版を参照しながら説明する。なお、バイパスレポート詳細版にはバイパスステージ選択パターンが含まれている。
【００９０】
バイパスステージ抽出工程ST21は、バイパス制約情報を読み込み（ST31）、高位合成レポート情報を読み込み（ST32）、バイパスレポートを作成する（ST33）。そして、バイパスレポート作成工程ST33で生成された結果を集計して、バイパスレポートの詳細版と要約版を生成し（ST34）、さらに、バイパスレポートの作成工程ST33で生成されたバイパスステージ選択パターンを集めてバイパスステージ情報を生成する（S35）。
【００９１】
次に、上記のバイパスレポートの作成工程ST33について説明する。ここで、バイパス制約は、バイパスが禁止されるステージなし（設定値２，３は偽、設定値４はなし）、設定値５のバイパスを禁止する連続ステージの最小値は「３」（連続バイパスステージ数は２まで許可）、設定値１のバイパスステージ数が１−２（１から２）の場合とする。その結果、図１１に示す回路のように、全てのステージS1-S4にバイパス設定可能なステージ間レジスタFF_bpが挿入される。
【００９２】
バイパスレポートの作成工程ST33は、バイパスステージ数毎に繰り返され、全バイパスステージ数を処理すると終了する（ST40）。前述のバイパス制約は、バイパスステージ数が１−２であるので、バイパスステージ数は１と２である。
【００９３】
まず、バイパスレポートの作成工程は、バイパスステージ数を選択する（ST41）。例えば、バイパス制約で設定されたバイパスステージ数１，２のうちバイパスステージ数１を選択する。そして、バイパスレポートの作成工程は、図１１の４つのステージS1-S4をそれぞれバイパス設定する４つのパターンがバイパスステージ選択パターンとして生成される（ST42）。すなわち、図１５の「バイパスステージ数が１個の場合の遅延情報のレポートR1_1」のバイパスステージ選択パターンが生成される。レポートR2_1も同様である。このバイパスステージ選択パターンは、各ステージS1-S4がそれぞれバイパス設定（図中bypass）された４つのパターンを有する。
【００９４】
同様に、バイパスステージ数２を選択した場合は、図１５の「バイパスステージ数が２個の場合の遅延情報のレポートR1_2」のバイパスステージ選択パターンが生成される。レポートR2_2も同様である。つまり、このバイパスステージ選択パターンは、４つのステージS1-S4のうち同時に２つのステージがバイパス設定（図中bypass）された６つのパターンを有する。
【００９５】
上記のとおり、バイパスステージ選択パターンは、バイパス設定可能な複数のステージのうちバイパス設定に選択された（バイパス設定された）ステージの組合せパターンである。
【００９６】
次に、バイパスレポートの作成工程は、生成した複数のバイパスステージ選択パターン毎に工程ST44-ST47を繰り返す（ST43）。まず、バイパスステージ選択パターンを選択する（ST44）。例えば、図１５のレポートR1_1、R2_1の先頭のバイパスステージ選択パターン（モード設定M1S1のパターン）を選択するとする。先頭のバイパスステージ選択パターンは、最初のステージS1の出力側レジスタがバイパス設定され、残りのステージS2,S3,S4はバイパス設定されないパターンである。バイパスレポートの作成工程は、選択したバイパスステージ選択パターンにモード設定の名前（ID）を割り当てる（ST45）。レポートR1_1、R2_1の例では、先頭のパターンのモード設定のIDは、「M1S1」である。
【００９７】
そして、バイパス設定されたステージを考慮して、各パスの遅延時間（各レジスタ間の遅延時間）を算出し、その中から最大パス遅延時間を計算する（ST46）。レポートR1_1の例では、先頭のパターンM1S1はステージS1がバイパス設定されるので、それにより遅延時間が6.65nsと他のパス遅延時間より長くなり、最大パス遅延時間は6.6nsとなる。
【００９８】
さらに、各ステージのレジスタ数を計算する（ST47）。この計算では、各ステージのレジスタFFの数を集計して、レジスタ数の合計とバイパス設定により削減されたレジスタ数を算出する。レポートR2_1の例では、先頭のパターンM1S1はステージS1のレジスタFF数が０になり、レジスタFF数の合計が７，削減されたレジスタFF数が８になる。
【００９９】
レポートR1_1, R2_1の４つのバイパスステージ選択パターン全てについて、上記の工程ST44-ST47が完了すると（ST43のYES）、４つのパターンを最大パス遅延でランク付けし（ST48）、レジスタFF数またはレジスタFFの削減数でランク付けする（ST49）。ランク付けにしたがい、モード設定順位付けをレポートに追加する。その結果、図１５のレポートR1_1, R2_1が生成される。
【０１００】
すなわち、最大遅延時間が短いパターンほどタイミング優先（周波数優先）に基づく順位が上位になる。例えば、レポートR1_1では、モード設定M1S3が順位付けTM1L1と最上位になっている。レポートR1_2では、モード設定M2S24が順位付けTM2L1と最上位である。
【０１０１】
また、削減されるレジスタFF数が多いパターンほど消費電力優先に基づく順位が上位になる。例えば、レポートR2_1では、モード設定M1S1が順位付けPM1L1と最上位になっている。レポートR2_2では、モード設定M2S12が順位付けPM2L1と最上位になっている。
【０１０２】
レポートR1_2,R2_2も同様にしてパス遅延時間の計算（ST46）とレジスタ数とバイパス設定されて削減されたレジスタ数の計算（ST47）とランク付け（ST48,ST49）により、図１５に示されたレポートが作成される。
【０１０３】
バイパスステージ抽出工程ST21では、上記のバイパスレポート作成工程ST33の計算結果に基づいて、詳細版と要約版のバイパスレポートを生成する（ST34）。詳細版のバイパスレポートは、図１５に一例として示したように、例えば、バイパスステージ数別に遅延情報レポートR1_1,R1_2（バイパスステージ数１）と、レジスタFF数情報レポートR2_1,R2_2（バイパスステージ数２）とを有する。遅延情報、レジスタ数情報以外にユーザによる回路の変更の指標になるような別の優先条件がある場合は、その優先条件毎にレポートが生成されることが望ましい。別の優先条件としては、例えば遅延時間の均一性、最大遅延時間と削減レジスタ数のバランス順（両指標の合計評価が高い順など）などが考えられる。
【０１０４】
図１６は、要約版バイパスレポートの一例を示す図である。図１６中、レポートSR1は、バイパスステージ数別に、タイミング優先（遅延時間優先）で最上位の順位付けIDとそのモード設定IDと、消費電力優先（削減FF数優先）で最上位の順位付けIDとそのモード設定IDをまとめたものである。レポートSR1は、入力の初段ステージS1のバイパス禁止が偽（False）の場合であるので、図１５の詳細版バイパスレポートと最上位が同じになっている。
【０１０５】
レポートSR2は、レポートSR1と同様に、バイパスステージ数別に、タイミング優先と消費電力優先それぞれで最上位の順位付けIDとそのモード設定IDを示す。但し、入力の初段ステージS1のバイパス禁止が真（True）の場合であるので、詳細版バイパスレポートから初段ステージS1をバイパスしているバイパスレジスタ選択パターンを除外した場合の最上位が示されている。
【０１０６】
レポートSR3は、レポートSR2においてタイミング優先についてそれぞれの最大遅延時間を追加している。レポートSR4は、レポートSR2において消費電力優先についてそれぞれのレジスタFFの削減数を追加している。
【０１０７】
要約版バイパスレポートは、高位合成の後において、特に製造された後において、ユーザが回路構成を変更するときに参照するレポートであり、そのような目的に応じて詳細版バイパスレポートを編集したレポートであることが好ましい。図１６に示した要約版バイパスレポートは一例であり、上記以外の編集をしたレポートでもよい。たとえば、バイパスステージ数別のタイミング優先の順位でソートしたモード設定IDと最大遅延時間（または周波数）の表や、消費電力優先の順位でソートしたモード設定IDとレジスタFFの削減数の表。または、バイパスステージ数にかかわらず、単純にタイミング優先の順にソートしたモード設定IDと最大遅延時間（または周波数）の表や、消費電力優先の順位でソートしたモード設定IDとレジスタの削減数の表、などである。
【０１０８】
次に、上記のバイパスステージ情報生成工程ST35について説明する。バイパスステージ情報生成工程では、バイパスレポート作成工程ST33で生成したバイパスステージ選択パターンとそれに割り当てたモード設定IDを全て集める。つまり、バイパスステージ情報は、図１５のレポートR1_1,R1_2またはR2_1,R2_2のバイパスステージ選択パターンとモード設定IDの集合である。その結果、図１８に示されるバイパスステージ情報３３が生成される。
【０１０９】
［バイパス設定回路生成工程ST22］
図１７は、バイパス設定回路生成工程ST22のフローチャート図である。図９に示したとおり、バイパス設定回路生成工程は、バイパスステージ抽出工程ST21で生成したバイパスステージ情報３３から、バイパス設定回路の記述を生成する。
【０１１０】
図１８は、バイパスステージ情報とデコード表とバイパス設定回路の例を示す図である。図１８を参照して、図１７のフローチャート図を説明する。図１７に示されるとおり、バイパス設定回路の生成工程は、まずバイパスステージ情報３３を読み込む（ST50）。バイパスステージ情報は、モード設定IDに対応して各ステージのうちどのステージのレジスタ（ステージの出力側のレジスタ）をバイパス設定するかを示す表である。そこで、バイパスステージ選択パターンを２進数と見なして、モード設定IDとモードコードMODEとバイパスステージ選択パターンとの関係を示すデコード表３３Dを生成する（ST51）。最後に、デコード表３３Dに従ってモードコードMODEを設定するとバイパスステージ選択パターンに示されるようなバイパス制御信号S1-S4を生成するバイパス設定回路３４の記述を生成する（ST52）。
【０１１１】
［バイパス設定回路接続工程ST23］
図１９は、バイパス設定回路接続工程ST23のフローチャート図である。図２０は、バイパス設定回路を接続した後の新たな回路を示す図である。
【０１１２】
バイパス設定回路の接続工程では、バイパス設定回路の記述３４とHDLによる回路記述１６をそれぞれ読み込み（ST60,ST61）、HDLの回路記述１６内の各ステージのステージ間レジスタFFのうち、バイパスステージ情報３３内のバイパス設定可能なステージのステージ間レジスタFFを、バイパス設定可能なレジスタFF_bpに置換する（ST62）。
【０１１３】
さらに、接続工程では、バイパス設定回路のバイパス制御信号S1-S4を、各ステージのバイパス設定可能レジスタFF_bpのバイパス設定端子に接続するよう、回路記述を変更する（SST63）。その結果、HDLによる回路記述１６の回路にバイパス設定回路３４を接続した新たなHDLによる回路記述１７が生成される（ST64）。
【０１１４】
なお、図２０に示したバイパス設定回路３４は、図１８のモードレジスタMODE_REGを内蔵する。
【０１１５】
［第２の実施の形態］
第１の実施の形態では、高位合成工程ST1で生成したHDLによる回路内の全てのステージ間レジスタFFをバイパス設定可能レジスタFF_bpに置換した。第２の実施の形態では、バイパス制約情報にバイパスを禁止するステージの制約（項目２，３，４等）が含まれている場合に、バイパス設定が許可されるステージ間レジスタFFだけをバイパス設定可能レジスタFF_bpに置換する。これにより、バイアス設定回路を小さくできる。
【０１１６】
図２１、図２２は、第２の実施の形態の概略を説明する図である。図２１の例は、図１１と同様に、全てのステージ間レジスタがバイパス設定可能レジスタFF_bpに置換された例である。それに対して、図２２は、バイパス制約情報に初段ステージと最終段ステージのレジスタのバイパス設定を禁止する制約が含まれている場合の回路構成を示す。図２２の例では、初段ステージS1に属するレジスタと最終段ステージS4に属するレジスタは、バイパス設定することは禁止されているので、通常のレジスタFFのままである。それ以外のステージS2,S3のレジスタがバイパス設定可能レジスタFF_bpに置換されている。
【０１１７】
図２２の回路の場合、バイパス設定の可能性があるステージS2,S3のみバイパス制御信号を供給すれば良いことになるので、バイパス設定回路の規模と、バイパス制御信号の数を小さくすることができ、回路面積、消費電力を抑制できる。
【０１１８】
図２３は、第２の実施の形態における高位合成プログラムのフローチャート図である。第１の実施の形態の図９と異なる処理は、バイパス設定回路接続工程ST23で、バイパスステージ情報３３を参照して、バイパスステージ情報内のバイパスステージ選択パターンに含まれるバイパス設定可能なステージに対応するレジスタだけを、バイパス設定可能レジスタFF_bpに置換する処理である。それ以外は、図９と同じである。
【０１１９】
図２４は、第２の実施の形態におけるバイパス設定回路接続工程ST23のフローチャート図である。第１の実施の形態の図１４と異なる処理は、バイパス禁止ステージをバイパス選択パターンから削除する処理工程ST42_1であり、それ以外は図１４と同じである。すなわち、工程ST42で生成されたパターンステージ選択パターンは、バイパス制約のバイパス禁止ステージにかかわらず、全てのステージ間レジスタがバイパス候補でありバイパス設定可能レジスタに置換されるものと過程して生成される。しかし、第２の実施の形態では、工程ST42_1で、バイパス制約で規定されているバイパス禁止ステージをバイパス候補から削除し、同様にバイパス禁止ステージをバイパスステージ選択パターンから削除する。例えば、バイパス制約が初段ステージS1と最終段ステージS4とをバイパス禁止ステージに特定しているならば、図１５の詳細版バイパスレポート内のバイパスステージ選択パターンから、ステージS1,S4をバイパス設定しているパターンが削除される。
【０１２０】
図２５は、第２の実施の形態における詳細版バイパスレポートの一例を示す図である。第２の実施の形態では、図１５の詳細版バイパスレポート内のバイパスステージ選択パターンからバイパス禁止ステージを含むパターンを削除する。その結果、図２５のバイパスレポートから、網掛けしたバイパスステージ選択パターンが削除され、パターン数がバイパスステージ数が１個の場合は２つ、２個の場合は１つ、合計３つに削減される。
【０１２１】
図２６は、バイパスステージ情報とデコード表とバイパス設定回路を示す図である。図１８と比較すると、図２６のバイパスステージ情報３３は、バイパスステージ選択パターンのステージ数がS2,S3と２つに減り、モード設定IDが、全レジスタがバイパス設定されない回路モードM0と、３つのモード設定ID、M1S2, M1S3, M2S23に減っている。それに伴いデコード表３３Dも小さくなり、よって、バイパス設定回路３４の入力ビットは２ビットとなり、出力されるバイパス制御信号S2,S3も２本と少なくなり、その結果、バイパス設定回路の規模も小さく省電力化される。
【０１２２】
図２７は、第２の実施の形態におけるバイパス設定回路の接続工程ST23のフローチャート図である。図１９のHDLによる回路記述の回路の各ステージのレジスタをバイパス設定可能なレジスタFF_bpに置換する処理ST62が、図２７では、バイパスステージ情報３３内のバイパスステージ選択パターンに記載されたステージのレジスタFFをバイパス設定可能レジスタFF_bpに置換する処理ST62_1に変更されている。つまり、バイパスステージ情報３３内のバイパスステージ選択パターンは、既にバイパス制約でバイパスを禁止されているステージを含んでいないので、工程ST62_1では、バイパス制約でバイパスを禁止されたステージのレジスタFFはバイパス設定可能レジスタFF_bpに置換されない。
【０１２３】
図２８は、第２の実施の形態でのバイパス設定回路が接続された新たなHDLによる回路を示す図である。前述のとおり、バイパス設定回路３４は、２つのバイパス制御信号S2,S3のみを出力し、２つのバイパス制御信号はHDLによる回路１６内のバイパス設定可能レジスタFF_bpに接続される。
【０１２４】
［第３の実施の形態］
第１、第２の実施の形態では、１つのソースコードSRCから１つのHDLによる回路記述を生成した。それに対して、第３の実施の形態では、複数のソースコードからそれぞれの回路記述を生成し、それらの回路記述の回路を有する集積回路を生成する。
【０１２５】
図２９は、第３の実施の形態におけるHDL記述の集積回路の構成を示す図である。図２９の集積回路LSIは、６個のHDL記述の回路16_1〜16_6それぞれに、HDL記述のバイパス設定回路34_1〜34_6を接続したHDL記述の回路17_1〜17_6を搭載する。そして、モードレジスタMODE_REGの設定値に対応して各バイアス設定回路がバイパス制御信号S#を回路16_1〜16_6に供給して、所定の組合せのステージのレジスタにバイパス設定を行う。
【０１２６】
以上のとおり、本実施の形態における高位合成を含む設計方法によれば、回路のステージ間レジスタをバイパス設定可能なレジスタに置換した回路のHDL記述と、バイパス制約にしたがう複数のバイパスステージ選択パターンからタイミング優先（ステージ内遅延時間優先）や消費電力優先（バイパス設定で削減されるレジスタ数優先）などの優先条件に応じたバイパスステージ選択パターンの順位などを有するバイパスレポート情報を生成する。したがって、ユーザは、HDL記述に基づいて生成した集積回路内の回路を、バイパスレポート情報に基づいて所望の動作モードに容易に変更することができる。
【０１２７】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１２８】
（付記１）
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法。
【０１２９】
（付記２）
前記ハードウエア記述を生成する工程において、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、付記１に記載の設計方法。
【０１３０】
（付記３）
前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、付記２に記載の設計方法。
【０１３１】
（付記４）
前記高位合成レポート情報は、前記複数のステージそれぞれの遅延時間と、各ステージが有するステージ間レジスタの数とを有し、
前記所定の優先条件は、前記複数の組合せのうち各組合せにおける最大ステージ遅延時間が短いことを優先する第１の優先条件と、前記複数の組合せの内各組合せにおけるバイパス設定されるステージ間レジスタの総数が多いことを優先する第２の優先条件のいずれかを有し、
前記バイパスレポート情報は、前記第１の優先条件の場合は前記最大ステージ遅延時間が短いまたは長い順位を有し、前記第２の優先条件の場合は前記バイパス設定されるステージ間レジスタの総数が多いまたは少ない順位を有する、付記３に記載の設計方法。
【０１３２】
（付記５）
前記バイパス候補のステージ間レジスタは、前記ステージの出力信号を保持するラッチ回路と、前記ラッチ回路をバイパスするバイパス配線と、前記ラッチ回路またはバイパス配線のいずれかをバイパス制御信号に基づいて選択するセレクタと、前記バイパス制御信号に基づいてクロックを通過または非通過するクロックゲートとを有し、
前記バイパス制御信号により前記バイパス候補のステージ間レジスタがバイパス設定される、付記１に記載の設計方法。
【０１３３】
（付記６）
さらに、前記バイパスステージ選択パターン内の各パターンに対応するモード設定値に対応して、前記各パターン内の前記バイパス設定されるステージ間レジスタのステージの組合せに対応するバイパス設定またはバイパス非設定の前記バイパス制御信号を生成し、前記バイパス制御信号を前記バイパス候補のステージ間レジスタに供給するバイパス設定回路の記述を、前記ハードウエア記述に追加する工程を有する、付記５に記載の設計方法。
【０１３４】
（付記７）
前記バイパスステージ選択パターンを決定する工程は、
前記ハードウエア記述にしたがう回路に含まれる前記ステージ間レジスタから、前記制約条件で特定された前記バイパスを禁止する特定のステージのステージ間レジスタを除いて、前記バイパス候補のステージ間レジスタを選択する、付記５に記載の設計方法。
【０１３５】
（付記８）
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理をコンピュータに実行させるコンピュータ読み取り可能な設計プログラムにおいて、前記高位合成処理は、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計プログラム。
【０１３６】
（付記９）
前記ハードウエア記述を生成する工程において、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、付記８に記載の設計プログラム。
【０１３７】
（付記１０）
前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、付記９に記載の設計プログラム。
【０１３８】
（付記１１）
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理部を有する設計装置において、
プロセッサと、
前記プロセッサにより実行される高位合成処理プログラムを記憶する記憶媒体とを有し、
前記高位合成処理プログラムは、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計装置。
【０１３９】
（付記１２）
前記ハードウエア記述を生成することにおいて、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、付記１１に記載の設計装置。
【０１４０】
（付記１３）
前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、付記１２に記載の設計装置。
【符号の説明】
【０１４１】
１０：動作記述（C言語等で回路動作（ビヘイビア）を記述した記述）
ST10, ST1, ST20：高位合成プログラム
１２：高位合成制約
１４：高位合成ライブラリ
１６：回路のハードウエア記述（HDLで回路の論理を記述した記述）
２０：設計装置
３１：バイパス制約
３０：高位合成レポート
３２：バイパスレポート
３３：バイパスステージ情報（バイパスステージ選択パターンを全て有する情報）
３４：バイパス設定回路（バイパス設定可能レジスタをバイパス設定する回路）
FF_bp：バイパス候補のステージ間レジスタ（バイパス設定可能レジスタ）
FF_bp：バイパス設定されるステージ間レジスタ（バイパス設定レジスタ）
S1-S4：バイパスステージ（出力側レジスタがバイパスされるステージ）
【図１】
2017111591.tif 000003
【図２】
2017111591.tif 000004
【図３】
2017111591.tif 000005
【図４】
2017111591.tif 000006
【図５】
2017111591.tif 000007
【図６】
2017111591.tif 000008
【図７】
2017111591.tif 000009
【図８】
2017111591.tif 000010
【図９】
2017111591.tif 000011
【図１０】
2017111591.tif 000012
【図１１】
2017111591.tif 000013
【図１２】
2017111591.tif 000014
【図１３】
2017111591.tif 000015
【図１４】
2017111591.tif 000016
【図１５】
2017111591.tif 000017
【図１６】
2017111591.tif 000018
【図１７】
2017111591.tif 000019
【図１８】
2017111591.tif 000020
【図１９】
2017111591.tif 000021
【図２０】
2017111591.tif 000022
【図２１】
2017111591.tif 000023
【図２２】
2017111591.tif 000024
【図２３】
2017111591.tif 000025
【図２４】
2017111591.tif 000026
【図２５】
2017111591.tif 000027
【図２６】
2017111591.tif 000028
【図２７】
2017111591.tif 000029
【図２８】
2017111591.tif 000030
【図２９】
2017111591.tif 000031