JP2017111591A - 設計方法、設計プログラム及び設計装置 - Google Patents

設計方法、設計プログラム及び設計装置 Download PDF

Info

Publication number
JP2017111591A
JP2017111591A JP2015244798A JP2015244798A JP2017111591A JP 2017111591 A JP2017111591 A JP 2017111591A JP 2015244798 A JP2015244798 A JP 2015244798A JP 2015244798 A JP2015244798 A JP 2015244798A JP 2017111591 A JP2017111591 A JP 2017111591A
Authority
JP
Japan
Prior art keywords
bypass
stages
stage
circuit
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015244798A
Other languages
English (en)
Inventor
篤 安中
Atsushi Yasunaka
篤 安中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Socionext Inc
Original Assignee
Socionext Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Socionext Inc filed Critical Socionext Inc
Priority to JP2015244798A priority Critical patent/JP2017111591A/ja
Priority to PCT/JP2016/063340 priority patent/WO2017104149A1/ja
Publication of JP2017111591A publication Critical patent/JP2017111591A/ja
Priority to US15/968,327 priority patent/US10606972B2/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】スペックの変更が容易な集積回路のハードウエア記述を生成する設計方法、設計プログラム及び設計装置を提供する。【解決手段】ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、所定の高位合成制約に基づいて、ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法。【選択図】図9

Description

本発明は,設計方法、設計プログラム及び設計装置に関する。
集積回路設計は、ハードウエア記述言語(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によるハードウエア記述を生成する。高位合成の制約は、例えば、動作速度(クロック周波数)、レイテンシ(入力から出力までのクロック数)、演算回路やメモリの数、回路規模や回路面積などが含まれる。
特開2014−6650号公報 特開平10−63713号公報
しかしながら、高位設計では、C言語等による動作記述からHDLによる機能記述に一旦変換した後は、HDLによる機能記述の回路を変更することは容易ではない。一般にHDLは可読性が乏しく人為的に変更することは困難である。そのため、回路構成を変更するためには、再度、高位合成の制約を変更して高位合成を行う必要がある。
また、一旦集積回路を製造し実装した後に、一時的に集積回路の速度(クロック周波数)やレイテンシ(入力してから出力されるまでのクロック数)を落として消費電力を下げたいというシーンや、逆に、速度を高くしてレイテンシを長くしてスループットを向上したいというシーンが存在する。しかし、製造された集積回路の回路構成を変更することは高いコストを要求される。そのため、クロック周波数を高くしてレイテンシを長くするハイスペックの高位合成制約で生成した回路を動作させる場合は、必要以上のスループットで動作し、また余分なエネルギーを消費することになる。逆に、クロック周波数を低くしてレイテンシを短くするロースペックの高位合成制約で生成した回路を動作させる場合は、低消費電力ではあるが、クロック周波数を高くしてレイテンシを短くすることはできない。
そこで,開示の第1の側面の目的は,スペックの変更が容易な集積回路のハードウエア記述を生成する設計方法、設計プログラム及び設計装置を提供することにある。
開示の第1の側面は,ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法である。
第1の側面によれば,集積回路のスペックの変更が容易になる。
高位合成を含む集積回路の設計工程を示すフローチャート図である。 高位合成工程のフローチャート図である。 ソースコードを高位合成した場合の回路の元となるデータフローグラフDFGの一例を示す図である。 ソースコードを高位合成した場合の回路の元となるデータフローグラフDFGの一例を示す図である。 高位合成制約をクロック周波数200MHzに設定した場合に生成される回路例を示す図である。 高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。 高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。 高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。 本実施の形態における高位合成プログラムST10のフローチャート図である。 ステージ間レジスタとバイパス設定可能なステージ間レジスタの例を示す図である。 本実施の形態における高位合成で生成される回路の一例を示す図である。 バイパス制約情報の一例を示す図である。 バイパスステージ抽出工程の概略を説明する図である。 バイパスステージ抽出工程ST21のフローチャート図である。 バイパスレポートの詳細版の例を示す図である。 要約版バイパスレポートの一例を示す図である。 バイパス設定回路生成工程ST22のフローチャート図である。 バイパスステージ情報とデコード表とバイパス設定回路の例を示す図である。 バイパス設定回路接続工程ST23のフローチャート図である。 バイパス設定回路を接続した後の新たな回路を示す図である。 第2の実施の形態の概略を説明する図である。 第2の実施の形態の概略を説明する図である。 第2の実施の形態における高位合成プログラムのフローチャート図である。 第2の実施の形態におけるバイパス設定回路接続工程ST23のフローチャート図である。 第2の実施の形態における詳細版バイパスレポートの一例を示す図である。 バイパスステージ情報とデコード表とバイパス設定回路を示す図である。 第2の実施の形態におけるバイパス設定回路の接続工程ST23のフローチャート図である。 第2の実施の形態でのバイパス設定回路が接続された新たなHDLによる回路を示す図である。 第3の実施の形態における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の略であり、制御用の有限状態機械。
[高位合成]
まず、高位合成について簡単に説明する。図1は、高位合成を含む集積回路の設計工程を示すフローチャート図である。集積回路の設計工程は、集積回路の仕様に基づいてC言語などで回路動作を記述したソースコード10から、高位合成制約12と高位合成ライブラリ14とに基づいて、HDLで回路の機能を記述したハードウエア記述16を生成する高位合成工程ST1を有する。高位合成制約12と高位合成ライブラリ14については、前述の定義集で説明したとおりである。
さらに、設計工程は、HDLの記述16をゲートを記述したネットリスト18に変換する論理合成工程ST2と、ネットリストに基づいて回路要素とそれを接続する配線をレイアウトするレイアウト工程ST3とを有する。レイアウト工程により生成されたレイアウトデータからマスクを生成するマスク生成工程ST4と半導体基板に集積回路を形成する製造工程ST5とにより、システム・オン・チップSoCなどの集積回路が製造される。
また、図示しないが、FPGA用の論理合成ツールが、HDL記述をFPGAのコンフィグレーションデータを生成する。そして、コンフィグレーションデータをFPGAにダウンロードしフィールドプログラマブルゲートアレイFPGAに設定し、HDL記述の機能を有する回路構成を有する集積回路に変換する。
図2は、高位合成工程のフローチャート図である。高位合成工程ST1は、ソースコードを解釈し、演算間のデータ依存関係や制御依存関係を示すコントロール・データ・フロー図CDFGを作成するCDFG作成工程ST11と、その最適化工程ST12と、指定されたテクノロジのライブラリを高位合成ライブラリ14から抽出するライブラリ処理工程ST13とを有する。
さらに、高位合成工程ST1は、演算器の種類や数などを決定するアロケーション工程ST14と、CDFG内の演算を高位合成制約12に基づいて並列化し、実行サイクルを決定するスケジューリング工程ST15とを有する。スケジューリングには、演算資源を制約にして回路のレイテンシ(入力から出力までのクロック数)の最小化を目的とする資源制約スケジューリングや、逆にレイテンシを制約にして回路の資源数の最小化を目的とする時間制約スケジューリングなどがある。
また、高位合成工程ST1は、CDFG内の演算子を演算器に、変数や配列をレジスタやメモリにマッピングするバインディング工程ST16を有し、このスケジューリング工程とバインディング工程により各ステージの組み合わせ回路とステージ間レジスタとを有する回路構成が決定される。そして、最後に、HDL生成工程ST17が、決定した回路構成を実現する回路ブロックを記述するRTL記述16を生成する。
RTL記述は、一般に可読性が低く人が修正をすることは困難である。したがって、高位合成されたRTL記述の回路において、クロック周波数や回路構成を変更するためには、高位合成制約を変更して再度高位合成を行い、ソースコードからRTL記述を生成する必要がある。さらに、RTL記述から製造された集積回路であるSoCのクロック周波数や回路構成を変更することは困難であり、高位合成から始まる回路設計工程を再度行うことが必要である。
高位合成は、逐次動作のアルゴリズムを記述したソースコードから、演算器やメモリポート数などの資源制約や、実行サイクル数や各ステージの遅延時間などの時間制約に基づいて、高速だが規模が大きい回路や、低速だが規模が小さく消費電力が少ない回路など様々な回路を合成する。
図3、図4は、ソースコードを高位合成した場合の回路の元となるデータフローグラフDFGの一例を示す図である。図3,図4のソースコード10は、8個のデータi[0]〜i[7]の累積値sumを算出して出力する動作を記述する。
高位合成ツールは、このようなソースコード10を高位合成する過程で、図3または図4に示されるデータフローグラフDFGを生成する。図3のデータフローグラフDFGは、ソースコードの加算順と同じように加算演算を逐次実行するのに対して、図4のデータフローグラフDFGは、加算の実行順序を変更し4個の加算器を利用して加算演算を3サイクルで完了する。この場合、図3のデータフローグラフの場合は、1個の加算器を繰り返し動作させる回路構成にすることができ回路規模(回路面積)を小さくすることができるのに対して、図4のデータフローグラフの場合は、4個の加算器を有するので回路規模は大きいが演算サイクル数(レイテンシ)を3に少なくすることができる。このようなデータフローグラフは、最適化工程ST12により生成される。
図3,図4の例で分かるとおり、高位合成ツールにより生成されるHDL記述された回路は、様々な構成を有することが可能である。
図5は、高位合成制約をクロック周波数200MHzに設定した場合に生成される回路例を示す図である。図5の回路の元になるデータフローグラフは、図4のデータフローグラフである。図4のデータフローグラフにスケジューリングとバインディングを行うことで、図5のような各加算演算器の間にステージ間レジスタFFを有する回路を生成する。
図5の回路例は、入力ステージS1と3段の加算ステージS2, S3, S4と出力ステージそれぞれの間にステージ間レジスタであるフリップフロップFFがマッピングされている。そして、3段の加算ステージの遅延時間は5nsと200MHzのクロックの周期5nsと同じである。そして、入力から出力までのレイテンシは4クロック(サイクル)であり、入力ステージS1と3つの加算ステージS2〜S4それぞれの出力側のステージ間レジスタFFの数は、8個、4個、2個、1個で合計15個である。
図5の回路は、最大クロック周波数200MHzで動作させることができるとともに、速度を要求しない時はクロック周波数100MHzで動作させることもできる。但し、レジスタであるFFの数は常時7個であり、省電力化は限定的である。
図6,図7は、高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。図6の回路例は、入力ステージS1と初段の加算ステージS2と3段目の加算ステージS4にフリップフロップFFがマッピングされ、2段目の加算ステージにはフリップフロップはマッピングされていない。その結果、加算ステージは2段になっていて、それらの遅延時間は10nsとクロックの周期と同じである。そして、入力から出力までのレイテンシは3クロックである。また、2段目の2個の加算器の出力側にはフリップフロップが配置されていないので、各ステージのFFの数は、8個、4個、1個で合計13個である。
一方、図7の回路例は、入力ステージS1と2段目の加算ステージS3と3段目の加算ステージS4にフリップフロップFFがマッピングされ、初段の加算ステージにはフリップフロップはマッピングされていない。その結果、加算ステージは2段になっていて、それらの遅延時間は10nsとクロックの周期と同じである。そして、入力から出力までのレイテンシは3クロックである。また、初段の4個の加算器の出力側にはフリップフロップが配置されていないので、各ステージのFFの数は、8個、2個、1個で合計11個である。
図6,7の回路は、最大クロック周波数200MHzで動作させることはできないが、回路規模が小さくなり省電力化することができる。
このように、高位合成では、高位合成制約条件を変更することで、様々な構成の回路の記述を生成することができる。図5の回路は、高速のクロック周波数100MHzで動作させることができ、単位時間当たりのデータ処理量であるパフォーマンスを高くすることができる。一方、図6,7の回路は、高速クロック周波数での動作はできないが、回路規模が小さく、消費電力を低減することができ、さらに、レイテンシのクロック数(クロックサイクル数)を小さくできる。
しかしながら、高位合成によりHDL記述を生成した後では、図5の回路の記述を図6,7の回路の記述に変更すること、またはその逆方向の図6,7の回路の記述から図5の回路の記述に変更することは、前述のとおりHDL記述の可読性の低さなどから困難である。さらに、集積回路を製造した後では、両回路間の変更はほとんど不可能である。
[本実施の形態の高位合成]
図8は、高位合成制約をクロック周波数100MHzに設定した場合に生成される回路例を示す図である。設計装置20は、コンピュータに高位合成プログラムST1,ST20をインストールした高位合成専用コンピュータである。設計装置20は、CPUなどのプロセッサ21と、メモリ22と、高位合成プログラムST1,ST20と様々なデータを格納するストレージ(図示せず)と、それらを接続するバスBUSを有する。さらに、図示されていないが、ディスプレイやキーボードなどの入出力装置と、ネットワークに接続されるネットワークインターフェースなども有する。
本実施の形態の高位合成プログラムST10は、図2で説明した高位合成プログラムST1と、本実施の形態による新規機能を拡張するためのプログラムST20とを有する。この新規機能拡張プログラムST20は、バイパスステージ抽出モジュールST21と、バイパス設定回路生成モジュールST22と、バイパス設定回路接続モジュールST23とを有する。これらのモジュールの機能については後で詳述する。
データ類は、高位合成プログラムST20が参照する高位合成ライブラリ14と、高位合成制約12と、高位合成プログラムST20が入力するC言語などによるビヘイビア(動作)記述10と、高位合成プログラムST20が出力するHDLによる回路記述16とを有する。さらに、高位合成プログラムST20が生成する高位合成レポート情報30を有する。
さらに、データ類は、新規機能拡張プログラムST20が参照するバイパス制約情報31と、新規機能拡張プログラムST20が生成するバイパスレポート32と、バイパスステージ情報33と、バイパス設定回路のHDL記述34とを有する。また、データ類は、HDLによる回路記述16にバイパス設定回路のHDL記述34を合体した新しい回路記述17を有する。この合体処理は、新規機能拡張プログラムST20のバイパス設定回路接続モジュールST23が、回路記述16内のバイパス設定可能レジスタにバイパス設定回路のバイパス制御信号を接続した回路記述17を生成する処理である。
図9は、本実施の形態における高位合成プログラムST10のフローチャート図である。前述のとおり、本実施の形態における高位合成プログラムST10は、一般的な高位合成工程ST1と、本実施の形態で追加される新規機能拡張工程ST20とを有する。
本実施の形態における高位合成の概略は次のとおりである。
まず、高位合成プログラムST10は、高位合成制約を設定してソースコード10の動作を実現するHDLの回路記述16を生成する。本実施の形態では、高位合成制約を、想定される集積回路の動作状態のうち最大のクロック周波数に設定して、高位合成を行う。その結果、高位合成プログラムST10は、例えば図5に示したように、最大クロック周波数の周期に対応した間隔でレジスタFFが挿入されたHDLの回路記述16を生成する。図5の回路例では、入力ステージと3つの加算ステージの4つのステージの間にステージ間レジスタFFが設けられる。
そして、新たに追加した新規機能拡張プログラムST20は、第1に、高位合成レポート情報30とバイパス制約情報31とに基づいて、バイパスステージ情報33とバイパスレポート32とを生成するバイパスステージ抽出モジュール(または工程)ST21を有する。このバイパスステージ抽出工程ST21では、バイパス制約情報31のバイパス制約条件に基づいて、HDLの回路記述16内のステージ間レジスタのどのステージの出力側レジスタFFをバイパス設定可能なレジスタにするかの抽出処理を行う。さらに、抽出したバイパス設定可能なレジスタのうち、バイパス制約条件に基づいて、バイパス設定するレジスタの組合せパターンを好ましくは全て抽出する。この結果、バイパス設定可能なレジスタの複数のステージの中からバイパス設定するレジスタのステージの組合せパターンを、好ましくは、全て有するバイパスステージ情報33が生成される。
なお、バイパスステージとは、前述の用語の定義で説明したとおり、回路のステージの出力側のステージ間レジスタがバイパスされたステージであり、そのステージの出力側の全てのステージ間レジスタがバイパス設定される。
図10は、ステージ間レジスタとバイパス設定可能なステージ間レジスタの例を示す図である。ステージ間レジスタFFは、一般的なD型フリップフロップであり、データ入力端子Dに入力される入力をクロックCLKの立ち上がりエッジ(または立ち下がりエッジ)のタイミングでラッチし、出力Qからラッチデータを出力する。また、リセット端子RSTBにLレベルのリセット信号RSTが入力されるとラッチデータは0にリセットされる。
一方、バイパス設定可能なステージ間レジスタFF_bpは、D型フリップフロップFFに、入力端子Dに接続されたバイパスルートBPと、バイパスルートBPまたはフリップフロップFFのいずれかを選択するセレクタSELを有する。そして、バイパス制御信号S#がS#=1であれば、セレクタSELがバイパスルートBPを選択し、S#=0であれば、フリップフロップFFを選択する。これにより、バイパス設定可能なステージ間レジスタFF_bpは、バイパス制御信号S#を「1」に設定することでバイパス設定され、入力INは、クロックCKのタイミングに制約されずバイパスされる。
さらに、バイパス設定可能なステージ間レジスタFF_bpは、クロックCKをバイパス制御信号S#の反転論理に応じてクロック端子CLKに供給するクロックゲートCGを有する。このクロックゲートCGにより、バイパス制御信号S#がS#=1になると、クロックゲートCGはクロック信号CKの通過を禁止してフリップフロップFFのクロックに同期したラッチ動作を停止する。
したがって、ステージ間レジスタが、S#=1によりバイパス設定されると、クロックゲートCGはクロックCKの通過を禁止し、フリップフロップはラッチ動作を停止し、省電力状態になる。逆にS#=0によりバイパス設定が解除されると、クロックゲートはクロックCKの通過を許可し、フリップフロップはラッチ動作を行う。
図11は、本実施の形態における高位合成で生成される回路の一例を示す図である。図11の回路は、図5の回路のステージ間レジスタであるフリップフロップFFを、バイパス設定可能なステージ間レジスタFF_bpに置き換えた回路である。そして、バイパス制御信号S1-S4をS1=0, S2=0, S3=1, S4=0に設定することで、4つのステージのステージ間レジスタのうち3段目のステージのステージ間レジスタFF_bpがバイパス設定されている。その結果、3段目のステージ間レジスタFF_bpが削除され、図6の回路と同じになり、入力から出力までは3クロックのレイテンシになる。
しかも、バイパス設定可能なステージ間レジスタFF_bpは、図10で説明したとおり、バイパス設定されるとクロックゲートCGがクロックCKの通過を禁止してフリップフロップのラッチ動作を停止する。その結果、図11の回路は、動作クロック周波数を100MHzに低速にするとともに、ステージ間レジスタ2個分の消費電力が削減される。
同様に、図11において、バイパス制御信号S1-S4をS1=0, S2=1, S3=0, S4=0に設定することで、4つのステージ間レジスタのうち2段目のステージ間レジスタFF_bpがバイパス設定され、さらに4個のステージ間レジスタの消費電力が削減され、実質的に図7の回路と同じになる。
後述するとおり、バイパス設定可能なステージ間レジスタFF_bpをバイパス設定またはバイパス非設定するバイパス制御信号S1-S4を生成するバイパス設定回路を設け、バイパス設定回路が出力するバイパス制御信号の組合せを、外部から設定するモード信号により変更可能にすることで、高位合成された回路の構成を変更することができる。製造済みの集積回路の段階でも同様に、モード信号により回路の構成を変更できる。
図9に戻り、第1に、新規機能拡張プログラムST20は、高位合成レポート情報30とバイパス制約情報31とに基づいて、バイパスステージ情報33とバイパスレポート32とを生成するバイパスステージ抽出モジュール(または工程)ST21を有する。
高位合成レポート情報30は、高位合成プログラムST1が高位合成過程で生成する情報であり、各ステージの遅延時間などのタイミング情報、回路規模など回路が形成されるエリアの大きさを有するエリア情報、各ステージのバイパス設定可能レジスタのステージ数の情報などを有する。バイパス制約情報31は、どのステージのステージ間レジスタをバイパス設定可能レジスタにするか、またどのステージ間レジスタをバイパス設定禁止にするか、などを有する。
したがって、バイパスステージ抽出工程ST21では、高位合成工程ST1により生成された図5のような回路のステージ間レジスタFFについて、バイパス制約情報31に基づいて、ステージ間レジスタFFのうちバイパス設定可能なステージ間レジスタFF_bpに置換するレジスタを抽出する。さらに、バイパス設定可能なステージ間レジスタFF_bpを持つ複数のステージうち、バイパス設定されるステージ間レジスタのステージの組合せのパターンを全て抽出する。具体例は後述する。
さらに、バイパスステージ抽出工程ST21では、高位合成レポート30に基づいて、バイパス設定されるステージ間レジスタを有するステージの組合せのパターンそれぞれについて、ステージの遅延時間や削減されるステージ間レジスタの数などを算出し、バイパスレポート32を生成する。バイパスレポート32は、クロック周波数(つまりタイミング)を優先した場合にバイパス制御信号S#をどのように設定すべきか、削減されるステージ間レジスタの数(つまり消費電力)を優先した場合にバイパス制御信号S#をどのように設定すべきかなどの情報を有する。
集積回路のユーザは、このバイパスレポートを参照して、バイパス設定可能なステージ間レジスタの状態を設定し、所望の動作の回路に変更可能である。具体例は後述する。
第2に、新規機能拡張プログラムST20は、バイパスステージ情報33に基づいて、バイパス設定回路の記述34を生成するバイパス設定回路生成モジュール(または工程)ST22を有する。バイパス設定回路34は、外部からモード信号を設定することで、設定したモード信号に対応するバイパス設定されるステージ間レジスタのステージの組合せをバイパス設定する。
第3に、新規機能拡張プログラムST20は、新たなHDLによる回路17を生成するバイパス設定回路接続モジュール(または工程)ST23を有する。バイパス設定回路接続工程ST23では、高位合成プログラムST1が生成したHDLによる回路記述16の回路内のステージ間レジスタをバイパス設定可能なステージ間レジスタに置換し、そのバイパス設定可能なステージ間レジスタとバイパス設定回路34とを接続して新たなHDLによる回路記述17を生成する。具体例は後述する。
以下、新規機能拡張プログラムST20について、具体例を交えて詳細に説明する。
図12は、バイパス制約情報の一例を示す図である。図12には、一例として5項目のバイパス制約条件が示されている。項目1は、バイパスステージ数(または数の範囲)である。例えば、バイパスステージ数を1−2と設定すると、同時にバイパス設定されるレジスタのステージ数は、1ステージまたは2ステージに制約される。ここで、バイパスステージとは、図11の回路における4つのステージ(入力ステージ、3つの加算ステージ)のうち、各ステージの出力側のレジスタがバイパス設定されたステージを意味する。したがって、バイパスステージ数が1−2に設定されると、図11の4つのステージの出力側のバイパス設定可能レジスタ群のうち、同時に1ステージまたは2ステージがバイパス設定される。設定値は、最小数、最大数、固定数、数の範囲などが可能である。
項目2は、入力の初段ステージのバイパス禁止であり、設定値は真か偽かである。真に設定すると、入力の初段ステージのレジスタはバイパスが禁止され、したがって、図11の入力の初段ステージS1のレジスタは、バイパス設定可能なレジスタFF_bpに置換されず、通常のレジスタFFのままになる。一般的な回路の場合、入力端子に接続されるレジスタFFのラッチ機能が必須の場合があり、そのような回路の場合は設定値は真にされる。
項目3は、出力の最終ステージのバイパス禁止であり、設定値は真か偽である。真に設定すると、出力の最終ステージのレジスタはバイパスが禁止され、したがって、図11の集団ステージS4のレジスタは、バイパス設定可能なレジスタFF_bpに置換されず、通常のレジスタFFのままになる。一般的な回路の場合、出力端子に接続されるレジスタFFのラッチ機能が必須の場合があり、そのような回路の場合は設定値は真にされる。
項目4は、バイパスを禁止する特定のステージであり、設定値はステージ番号である。Stage_5N(Nは整数)と設定すると、5の倍数のステージのレジスタは、バイパスを禁止される。したがって、5の倍数のステージのレジスタFFは、バイパス設定可能なレジスタFF_bpに置換されない。
項目5は、バイパスを禁止する連続ステージであり、設定値「0」は偽であり、連続ステージのバイパス設定を禁止しない(いかなる数の連続ステージをバイパスしてよい)ことに設定される。設定値「2」は、バイパスを禁止する連続ステージの最小数が2であることを意味する。そして、2以上の連続ステージ、すなわち全ての連続ステージのバイパス設定は禁止される。設定値「3」は、同様の最小値が3であることを意味し、2つの連続ステージのバイパス設定は許可されるが、3つ以上の連続ステージのバイパス設定は禁止される。
図12のバイパス制約情報の例では、後述するバイパスステージ抽出工程ST21で、項目2,3,4でバイパス設定が禁止されているステージ以外のステージのレジスタFFが、バイパス設定可能レジスタFF_bpに特定される。そして、項目1,5の制約条件に基づいて、バイパス設定可能レジスタFF_bpをバイパス設定するステージの全組合せパターンが抽出される。
図13は、バイパスステージ抽出工程の概略を説明する図である。図13には、図11と同様の入力端子SIと出力端子SOとの間に4ステージS1-S4のバイパス設定可能なレジスタFF_bpが設けられた回路が示されている。高位合成レポート情報30は、図示されるとおり、各ステージS1-S4のレジスタFF_bpの数と、レジスタ間の遅延時間(各回路ステージの遅延時間)を有する。数と遅延時間は、図示されるとおりである。
ここで、バイパス制約情報31が、項目1のバイパスステージ数「1」を有する場合について説明する。ステージS2のバイパス設定可能レジスタFF_bpをバイパス設定してステージS2をバイパスステージにすると、ステージS2の4個のレジスタはバイパスされ、4個のレジスタが削除されその消費電力が削減される。さらに、データパスはS1からS3となり、その遅延時間は2.65ns+2.51ns=5.16nsとなる。
同様に、ステージS3のバイパス設定可能レジスタFF_bpをバイパス設定してステージS3をバイパスステージにすると、ステージS3の2個のレジスタはバイパスされ、2個のレジスタが削除されその消費電力が削減される。さらに、データパスはS2からS4となり、その遅延時間は2.51ns+2.23ns=4.74nsとなる。
また、ステージS1またはS4のレジスタをバイパス設定した場合の遅延時間は、図示されるとおりである。
図13に示すとおり、バイパスステージ抽出工程では、バイパス制約情報に基づいて、バイパス設定されるレジスタのステージ(バイパスステージ)を抽出し、バイパスステージ選択パターン及びバイパスステージ選択パターンを集めたバイパスステージ情報を生成する。さらに、バイパスステージ抽出工程では、バイパスステージ選択パターン毎に、バイパス設定されたことによる遅延時間の変化や削減されるレジスタ数を算出し、バイパスレポートを作成する。
[バイパスステージ抽出工程ST21]
図14は、バイパスステージ抽出工程ST21のフローチャート図である。また、図15は、バイパスレポートの詳細版の例を示す図である。バイパスステージ抽出工程について、バイパスレポートの詳細版を参照しながら説明する。なお、バイパスレポート詳細版にはバイパスステージ選択パターンが含まれている。
バイパスステージ抽出工程ST21は、バイパス制約情報を読み込み(ST31)、高位合成レポート情報を読み込み(ST32)、バイパスレポートを作成する(ST33)。そして、バイパスレポート作成工程ST33で生成された結果を集計して、バイパスレポートの詳細版と要約版を生成し(ST34)、さらに、バイパスレポートの作成工程ST33で生成されたバイパスステージ選択パターンを集めてバイパスステージ情報を生成する(S35)。
次に、上記のバイパスレポートの作成工程ST33について説明する。ここで、バイパス制約は、バイパスが禁止されるステージなし(設定値2,3は偽、設定値4はなし)、設定値5のバイパスを禁止する連続ステージの最小値は「3」(連続バイパスステージ数は2まで許可)、設定値1のバイパスステージ数が1−2(1から2)の場合とする。その結果、図11に示す回路のように、全てのステージS1-S4にバイパス設定可能なステージ間レジスタFF_bpが挿入される。
バイパスレポートの作成工程ST33は、バイパスステージ数毎に繰り返され、全バイパスステージ数を処理すると終了する(ST40)。前述のバイパス制約は、バイパスステージ数が1−2であるので、バイパスステージ数は1と2である。
まず、バイパスレポートの作成工程は、バイパスステージ数を選択する(ST41)。例えば、バイパス制約で設定されたバイパスステージ数1,2のうちバイパスステージ数1を選択する。そして、バイパスレポートの作成工程は、図11の4つのステージS1-S4をそれぞれバイパス設定する4つのパターンがバイパスステージ選択パターンとして生成される(ST42)。すなわち、図15の「バイパスステージ数が1個の場合の遅延情報のレポートR1_1」のバイパスステージ選択パターンが生成される。レポートR2_1も同様である。このバイパスステージ選択パターンは、各ステージS1-S4がそれぞれバイパス設定(図中bypass)された4つのパターンを有する。
同様に、バイパスステージ数2を選択した場合は、図15の「バイパスステージ数が2個の場合の遅延情報のレポートR1_2」のバイパスステージ選択パターンが生成される。レポートR2_2も同様である。つまり、このバイパスステージ選択パターンは、4つのステージS1-S4のうち同時に2つのステージがバイパス設定(図中bypass)された6つのパターンを有する。
上記のとおり、バイパスステージ選択パターンは、バイパス設定可能な複数のステージのうちバイパス設定に選択された(バイパス設定された)ステージの組合せパターンである。
次に、バイパスレポートの作成工程は、生成した複数のバイパスステージ選択パターン毎に工程ST44-ST47を繰り返す(ST43)。まず、バイパスステージ選択パターンを選択する(ST44)。例えば、図15のレポート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数が0になり、レジスタFF数の合計が7,削減されたレジスタFF数が8になる。
レポートR1_1, R2_1の4つのバイパスステージ選択パターン全てについて、上記の工程ST44-ST47が完了すると(ST43のYES)、4つのパターンを最大パス遅延でランク付けし(ST48)、レジスタFF数またはレジスタFFの削減数でランク付けする(ST49)。ランク付けにしたがい、モード設定順位付けをレポートに追加する。その結果、図15のレポート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)により、図15に示されたレポートが作成される。
バイパスステージ抽出工程ST21では、上記のバイパスレポート作成工程ST33の計算結果に基づいて、詳細版と要約版のバイパスレポートを生成する(ST34)。詳細版のバイパスレポートは、図15に一例として示したように、例えば、バイパスステージ数別に遅延情報レポートR1_1,R1_2(バイパスステージ数1)と、レジスタFF数情報レポートR2_1,R2_2(バイパスステージ数2)とを有する。遅延情報、レジスタ数情報以外にユーザによる回路の変更の指標になるような別の優先条件がある場合は、その優先条件毎にレポートが生成されることが望ましい。別の優先条件としては、例えば遅延時間の均一性、最大遅延時間と削減レジスタ数のバランス順(両指標の合計評価が高い順など)などが考えられる。
図16は、要約版バイパスレポートの一例を示す図である。図16中、レポートSR1は、バイパスステージ数別に、タイミング優先(遅延時間優先)で最上位の順位付けIDとそのモード設定IDと、消費電力優先(削減FF数優先)で最上位の順位付けIDとそのモード設定IDをまとめたものである。レポートSR1は、入力の初段ステージS1のバイパス禁止が偽(False)の場合であるので、図15の詳細版バイパスレポートと最上位が同じになっている。
レポートSR2は、レポートSR1と同様に、バイパスステージ数別に、タイミング優先と消費電力優先それぞれで最上位の順位付けIDとそのモード設定IDを示す。但し、入力の初段ステージS1のバイパス禁止が真(True)の場合であるので、詳細版バイパスレポートから初段ステージS1をバイパスしているバイパスレジスタ選択パターンを除外した場合の最上位が示されている。
レポートSR3は、レポートSR2においてタイミング優先についてそれぞれの最大遅延時間を追加している。レポートSR4は、レポートSR2において消費電力優先についてそれぞれのレジスタFFの削減数を追加している。
要約版バイパスレポートは、高位合成の後において、特に製造された後において、ユーザが回路構成を変更するときに参照するレポートであり、そのような目的に応じて詳細版バイパスレポートを編集したレポートであることが好ましい。図16に示した要約版バイパスレポートは一例であり、上記以外の編集をしたレポートでもよい。たとえば、バイパスステージ数別のタイミング優先の順位でソートしたモード設定IDと最大遅延時間(または周波数)の表や、消費電力優先の順位でソートしたモード設定IDとレジスタFFの削減数の表。または、バイパスステージ数にかかわらず、単純にタイミング優先の順にソートしたモード設定IDと最大遅延時間(または周波数)の表や、消費電力優先の順位でソートしたモード設定IDとレジスタの削減数の表、などである。
次に、上記のバイパスステージ情報生成工程ST35について説明する。バイパスステージ情報生成工程では、バイパスレポート作成工程ST33で生成したバイパスステージ選択パターンとそれに割り当てたモード設定IDを全て集める。つまり、バイパスステージ情報は、図15のレポートR1_1,R1_2またはR2_1,R2_2のバイパスステージ選択パターンとモード設定IDの集合である。その結果、図18に示されるバイパスステージ情報33が生成される。
[バイパス設定回路生成工程ST22]
図17は、バイパス設定回路生成工程ST22のフローチャート図である。図9に示したとおり、バイパス設定回路生成工程は、バイパスステージ抽出工程ST21で生成したバイパスステージ情報33から、バイパス設定回路の記述を生成する。
図18は、バイパスステージ情報とデコード表とバイパス設定回路の例を示す図である。図18を参照して、図17のフローチャート図を説明する。図17に示されるとおり、バイパス設定回路の生成工程は、まずバイパスステージ情報33を読み込む(ST50)。バイパスステージ情報は、モード設定IDに対応して各ステージのうちどのステージのレジスタ(ステージの出力側のレジスタ)をバイパス設定するかを示す表である。そこで、バイパスステージ選択パターンを2進数と見なして、モード設定IDとモードコードMODEとバイパスステージ選択パターンとの関係を示すデコード表33Dを生成する(ST51)。最後に、デコード表33Dに従ってモードコードMODEを設定するとバイパスステージ選択パターンに示されるようなバイパス制御信号S1-S4を生成するバイパス設定回路34の記述を生成する(ST52)。
[バイパス設定回路接続工程ST23]
図19は、バイパス設定回路接続工程ST23のフローチャート図である。図20は、バイパス設定回路を接続した後の新たな回路を示す図である。
バイパス設定回路の接続工程では、バイパス設定回路の記述34とHDLによる回路記述16をそれぞれ読み込み(ST60,ST61)、HDLの回路記述16内の各ステージのステージ間レジスタFFのうち、バイパスステージ情報33内のバイパス設定可能なステージのステージ間レジスタFFを、バイパス設定可能なレジスタFF_bpに置換する(ST62)。
さらに、接続工程では、バイパス設定回路のバイパス制御信号S1-S4を、各ステージのバイパス設定可能レジスタFF_bpのバイパス設定端子に接続するよう、回路記述を変更する(SST63)。その結果、HDLによる回路記述16の回路にバイパス設定回路34を接続した新たなHDLによる回路記述17が生成される(ST64)。
なお、図20に示したバイパス設定回路34は、図18のモードレジスタMODE_REGを内蔵する。
[第2の実施の形態]
第1の実施の形態では、高位合成工程ST1で生成したHDLによる回路内の全てのステージ間レジスタFFをバイパス設定可能レジスタFF_bpに置換した。第2の実施の形態では、バイパス制約情報にバイパスを禁止するステージの制約(項目2,3,4等)が含まれている場合に、バイパス設定が許可されるステージ間レジスタFFだけをバイパス設定可能レジスタFF_bpに置換する。これにより、バイアス設定回路を小さくできる。
図21、図22は、第2の実施の形態の概略を説明する図である。図21の例は、図11と同様に、全てのステージ間レジスタがバイパス設定可能レジスタFF_bpに置換された例である。それに対して、図22は、バイパス制約情報に初段ステージと最終段ステージのレジスタのバイパス設定を禁止する制約が含まれている場合の回路構成を示す。図22の例では、初段ステージS1に属するレジスタと最終段ステージS4に属するレジスタは、バイパス設定することは禁止されているので、通常のレジスタFFのままである。それ以外のステージS2,S3のレジスタがバイパス設定可能レジスタFF_bpに置換されている。
図22の回路の場合、バイパス設定の可能性があるステージS2,S3のみバイパス制御信号を供給すれば良いことになるので、バイパス設定回路の規模と、バイパス制御信号の数を小さくすることができ、回路面積、消費電力を抑制できる。
図23は、第2の実施の形態における高位合成プログラムのフローチャート図である。第1の実施の形態の図9と異なる処理は、バイパス設定回路接続工程ST23で、バイパスステージ情報33を参照して、バイパスステージ情報内のバイパスステージ選択パターンに含まれるバイパス設定可能なステージに対応するレジスタだけを、バイパス設定可能レジスタFF_bpに置換する処理である。それ以外は、図9と同じである。
図24は、第2の実施の形態におけるバイパス設定回路接続工程ST23のフローチャート図である。第1の実施の形態の図14と異なる処理は、バイパス禁止ステージをバイパス選択パターンから削除する処理工程ST42_1であり、それ以外は図14と同じである。すなわち、工程ST42で生成されたパターンステージ選択パターンは、バイパス制約のバイパス禁止ステージにかかわらず、全てのステージ間レジスタがバイパス候補でありバイパス設定可能レジスタに置換されるものと過程して生成される。しかし、第2の実施の形態では、工程ST42_1で、バイパス制約で規定されているバイパス禁止ステージをバイパス候補から削除し、同様にバイパス禁止ステージをバイパスステージ選択パターンから削除する。例えば、バイパス制約が初段ステージS1と最終段ステージS4とをバイパス禁止ステージに特定しているならば、図15の詳細版バイパスレポート内のバイパスステージ選択パターンから、ステージS1,S4をバイパス設定しているパターンが削除される。
図25は、第2の実施の形態における詳細版バイパスレポートの一例を示す図である。第2の実施の形態では、図15の詳細版バイパスレポート内のバイパスステージ選択パターンからバイパス禁止ステージを含むパターンを削除する。その結果、図25のバイパスレポートから、網掛けしたバイパスステージ選択パターンが削除され、パターン数がバイパスステージ数が1個の場合は2つ、2個の場合は1つ、合計3つに削減される。
図26は、バイパスステージ情報とデコード表とバイパス設定回路を示す図である。図18と比較すると、図26のバイパスステージ情報33は、バイパスステージ選択パターンのステージ数がS2,S3と2つに減り、モード設定IDが、全レジスタがバイパス設定されない回路モードM0と、3つのモード設定ID、M1S2, M1S3, M2S23に減っている。それに伴いデコード表33Dも小さくなり、よって、バイパス設定回路34の入力ビットは2ビットとなり、出力されるバイパス制御信号S2,S3も2本と少なくなり、その結果、バイパス設定回路の規模も小さく省電力化される。
図27は、第2の実施の形態におけるバイパス設定回路の接続工程ST23のフローチャート図である。図19のHDLによる回路記述の回路の各ステージのレジスタをバイパス設定可能なレジスタFF_bpに置換する処理ST62が、図27では、バイパスステージ情報33内のバイパスステージ選択パターンに記載されたステージのレジスタFFをバイパス設定可能レジスタFF_bpに置換する処理ST62_1に変更されている。つまり、バイパスステージ情報33内のバイパスステージ選択パターンは、既にバイパス制約でバイパスを禁止されているステージを含んでいないので、工程ST62_1では、バイパス制約でバイパスを禁止されたステージのレジスタFFはバイパス設定可能レジスタFF_bpに置換されない。
図28は、第2の実施の形態でのバイパス設定回路が接続された新たなHDLによる回路を示す図である。前述のとおり、バイパス設定回路34は、2つのバイパス制御信号S2,S3のみを出力し、2つのバイパス制御信号はHDLによる回路16内のバイパス設定可能レジスタFF_bpに接続される。
[第3の実施の形態]
第1、第2の実施の形態では、1つのソースコードSRCから1つのHDLによる回路記述を生成した。それに対して、第3の実施の形態では、複数のソースコードからそれぞれの回路記述を生成し、それらの回路記述の回路を有する集積回路を生成する。
図29は、第3の実施の形態におけるHDL記述の集積回路の構成を示す図である。図29の集積回路LSIは、6個のHDL記述の回路16_1〜16_6それぞれに、HDL記述のバイパス設定回路34_1〜34_6を接続したHDL記述の回路17_1〜17_6を搭載する。そして、モードレジスタMODE_REGの設定値に対応して各バイアス設定回路がバイパス制御信号S#を回路16_1〜16_6に供給して、所定の組合せのステージのレジスタにバイパス設定を行う。
以上のとおり、本実施の形態における高位合成を含む設計方法によれば、回路のステージ間レジスタをバイパス設定可能なレジスタに置換した回路のHDL記述と、バイパス制約にしたがう複数のバイパスステージ選択パターンからタイミング優先(ステージ内遅延時間優先)や消費電力優先(バイパス設定で削減されるレジスタ数優先)などの優先条件に応じたバイパスステージ選択パターンの順位などを有するバイパスレポート情報を生成する。したがって、ユーザは、HDL記述に基づいて生成した集積回路内の回路を、バイパスレポート情報に基づいて所望の動作モードに容易に変更することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法。
(付記2)
前記ハードウエア記述を生成する工程において、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、付記1に記載の設計方法。
(付記3)
前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、付記2に記載の設計方法。
(付記4)
前記高位合成レポート情報は、前記複数のステージそれぞれの遅延時間と、各ステージが有するステージ間レジスタの数とを有し、
前記所定の優先条件は、前記複数の組合せのうち各組合せにおける最大ステージ遅延時間が短いことを優先する第1の優先条件と、前記複数の組合せの内各組合せにおけるバイパス設定されるステージ間レジスタの総数が多いことを優先する第2の優先条件のいずれかを有し、
前記バイパスレポート情報は、前記第1の優先条件の場合は前記最大ステージ遅延時間が短いまたは長い順位を有し、前記第2の優先条件の場合は前記バイパス設定されるステージ間レジスタの総数が多いまたは少ない順位を有する、付記3に記載の設計方法。
(付記5)
前記バイパス候補のステージ間レジスタは、前記ステージの出力信号を保持するラッチ回路と、前記ラッチ回路をバイパスするバイパス配線と、前記ラッチ回路またはバイパス配線のいずれかをバイパス制御信号に基づいて選択するセレクタと、前記バイパス制御信号に基づいてクロックを通過または非通過するクロックゲートとを有し、
前記バイパス制御信号により前記バイパス候補のステージ間レジスタがバイパス設定される、付記1に記載の設計方法。
(付記6)
さらに、前記バイパスステージ選択パターン内の各パターンに対応するモード設定値に対応して、前記各パターン内の前記バイパス設定されるステージ間レジスタのステージの組合せに対応するバイパス設定またはバイパス非設定の前記バイパス制御信号を生成し、前記バイパス制御信号を前記バイパス候補のステージ間レジスタに供給するバイパス設定回路の記述を、前記ハードウエア記述に追加する工程を有する、付記5に記載の設計方法。
(付記7)
前記バイパスステージ選択パターンを決定する工程は、
前記ハードウエア記述にしたがう回路に含まれる前記ステージ間レジスタから、前記制約条件で特定された前記バイパスを禁止する特定のステージのステージ間レジスタを除いて、前記バイパス候補のステージ間レジスタを選択する、付記5に記載の設計方法。
(付記8)
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理をコンピュータに実行させるコンピュータ読み取り可能な設計プログラムにおいて、前記高位合成処理は、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計プログラム。
(付記9)
前記ハードウエア記述を生成する工程において、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、付記8に記載の設計プログラム。
(付記10)
前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、付記9に記載の設計プログラム。
(付記11)
ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理部を有する設計装置において、
プロセッサと、
前記プロセッサにより実行される高位合成処理プログラムを記憶する記憶媒体とを有し、
前記高位合成処理プログラムは、
所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計装置。
(付記12)
前記ハードウエア記述を生成することにおいて、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、付記11に記載の設計装置。
(付記13)
前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、付記12に記載の設計装置。
10:動作記述(C言語等で回路動作(ビヘイビア)を記述した記述)
ST10, ST1, ST20:高位合成プログラム
12:高位合成制約
14:高位合成ライブラリ
16:回路のハードウエア記述(HDLで回路の論理を記述した記述)
20:設計装置
31:バイパス制約
30:高位合成レポート
32:バイパスレポート
33:バイパスステージ情報(バイパスステージ選択パターンを全て有する情報)
34:バイパス設定回路(バイパス設定可能レジスタをバイパス設定する回路)
FF_bp:バイパス候補のステージ間レジスタ(バイパス設定可能レジスタ)
FF_bp:バイパス設定されるステージ間レジスタ(バイパス設定レジスタ)
S1-S4:バイパスステージ(出力側レジスタがバイパスされるステージ)

Claims (9)

  1. ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理を有する設計方法において、
    所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成し、
    前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定し、
    前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成する、設計方法。
  2. 前記ハードウエア記述を生成する工程において、前記高位合成制約は要求される最速のクロック周波数で動作可能な制約を有し、前記ハードウエア記述にしたがう回路の前記複数のステージの遅延時間が前記最速のクロック周波数の周期以下である、請求項1に記載の設計方法。
  3. 前記バイパス制約情報は、バイパス設定可能なステージ間レジスタのステージ数、バイパス設定可能な特定のステージ間レジスタのステージ、バイパス設定を禁止する特定のステージ間レジスタのステージ、バイパス設定を禁止するステージ間レジスタのステージの連続数の最小値のうちのいずれか、または任意の組合せを有する制約条件を有し、
    前記バイパスステージ選択パターンは、前記バイパス制約情報に含まれる制約条件を満たすバイパス設定されるステージ間レジスタのステージの複数の組合せを有する、請求項2に記載の設計方法。
  4. 前記高位合成レポート情報は、前記複数のステージそれぞれの遅延時間と、各ステージが有するステージ間レジスタの数とを有し、
    前記所定の優先条件は、前記複数の組合せのうち各組合せにおける最大ステージ遅延時間が短いことを優先する第1の優先条件と、前記複数の組合せの内各組合せにおけるバイパス設定されるステージ間レジスタの総数が多いことを優先する第2の優先条件のいずれかを有し、
    前記バイパスレポート情報は、前記第1の優先条件の場合は前記最大ステージ遅延時間が短いまたは長い順位を有し、前記第2の優先条件の場合は前記バイパス設定されるステージ間レジスタの総数が多いまたは少ない順位を有する、請求項3に記載の設計方法。
  5. 前記バイパス候補のステージ間レジスタは、前記ステージの出力信号を保持するラッチ回路と、前記ラッチ回路をバイパスするバイパス配線と、前記ラッチ回路またはバイパス配線のいずれかをバイパス制御信号に基づいて選択するセレクタと、前記バイパス制御信号に基づいてクロックを通過または非通過するクロックゲートとを有し、
    前記バイパス制御信号により前記バイパス候補のステージ間レジスタがバイパス設定される、請求項1に記載の設計方法。
  6. さらに、前記バイパスステージ選択パターン内の各パターンに対応するモード設定値に対応して、前記各パターン内の前記バイパス設定されるステージ間レジスタのステージの組合せに対応するバイパス設定またはバイパス非設定の前記バイパス制御信号を生成し、前記バイパス制御信号を前記バイパス候補のステージ間レジスタに供給するバイパス設定回路の記述を、前記ハードウエア記述に追加する工程を有する、請求項5に記載の設計方法。
  7. 前記バイパスステージ選択パターンを決定する工程は、
    前記ハードウエア記述にしたがう回路に含まれる前記ステージ間レジスタから、前記制約条件で特定された前記バイパスを禁止する特定のステージのステージ間レジスタを除いて、前記バイパス候補のステージ間レジスタを選択する、請求項5に記載の設計方法。
  8. ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理をコンピュータに実行させるコンピュータ読み取り可能な設計プログラムにおいて、前記高位合成処理は、
    所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
    前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
    前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計プログラム。
  9. ソフトウエア言語で動作が記述されたソースコードから回路のハードウエア記述を生成する高位合成処理部を有する設計装置において、
    プロセッサと、
    前記プロセッサにより実行される高位合成処理プログラムを記憶する記憶媒体とを有し、
    前記高位合成処理プログラムは、
    所定の高位合成制約に基づいて、前記ソースコードから、複数のステージと各ステージ間に設けられるステージ間レジスタとを有する回路を記述するハードウエア記述と高位合成レポート情報を生成することと、
    前記ステージ間レジスタのバイパスに関する制約条件を有するバイパス制約情報と、前記高位合成レポート情報とに基づいて、バイパス候補のステージ間レジスタのステージのうちバイパス設定されるステージ間レジスタのステージの組合せを有するパターンを複数有するバイパスステージ選択パターンを決定することと、
    前記バイパスステージ選択パターンに基づいて、所定の優先条件に応じた前記バイパス設定されるステージ間レジスタの組合せ情報を有するバイパスレポート情報を生成すること、とを有する設計装置。
JP2015244798A 2015-12-16 2015-12-16 設計方法、設計プログラム及び設計装置 Pending JP2017111591A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015244798A JP2017111591A (ja) 2015-12-16 2015-12-16 設計方法、設計プログラム及び設計装置
PCT/JP2016/063340 WO2017104149A1 (ja) 2015-12-16 2016-04-28 設計方法、設計プログラム及び設計装置
US15/968,327 US10606972B2 (en) 2015-12-16 2018-05-01 Method, design program, and design apparatus of a high level synthesis process of a circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015244798A JP2017111591A (ja) 2015-12-16 2015-12-16 設計方法、設計プログラム及び設計装置

Publications (1)

Publication Number Publication Date
JP2017111591A true JP2017111591A (ja) 2017-06-22

Family

ID=59055959

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015244798A Pending JP2017111591A (ja) 2015-12-16 2015-12-16 設計方法、設計プログラム及び設計装置

Country Status (3)

Country Link
US (1) US10606972B2 (ja)
JP (1) JP2017111591A (ja)
WO (1) WO2017104149A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200096248A (ko) 2017-12-13 2020-08-11 엔체인 홀딩스 리미티드 암호 자료를 안전하게 공유하기 위한 시스템 및 방법
KR20200139525A (ko) 2019-06-04 2020-12-14 삼성전자주식회사 Fpga를 포함하는 전자 시스템 및 이의 동작 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2972646B2 (ja) 1996-06-14 1999-11-08 松下電器産業株式会社 機能設計方法、機能設計装置、及び機能設計プログラムが記録されたコンピュータ読み取り可能な記録媒体
JP2000194739A (ja) * 1998-12-28 2000-07-14 Fuji Electric Co Ltd モ―ド切換型論理回路の自動生成装置
JP5985900B2 (ja) * 2012-06-22 2016-09-06 ルネサスエレクトロニクス株式会社 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
JP6255880B2 (ja) * 2013-10-10 2018-01-10 株式会社ソシオネクスト 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム
US9250900B1 (en) * 2014-10-01 2016-02-02 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network

Also Published As

Publication number Publication date
US20180246997A1 (en) 2018-08-30
WO2017104149A1 (ja) 2017-06-22
US10606972B2 (en) 2020-03-31

Similar Documents

Publication Publication Date Title
JP3331968B2 (ja) グリッチ分析と低減に重点をおいたレジスタトランスファレベルの電力消費最適化回路、方法、及び記録媒体
US8875071B2 (en) Deployment of custom shift array macro cells in automated application specific integrated circuit design flow
JP3150122B2 (ja) 低電力vlsiデザインのための制限付きレジスタ共用方法及びそのシステム
US9201996B2 (en) Behavioral synthesis apparatus, behavioral synthesis method, data processing system including behavioral synthesis apparatus, and non-transitory computer readable medium storing behavioral synthesis program
Gaisler A structured VHDL design method
US9727681B2 (en) Generating specific memory models using generic memory models for designing memories in VLSI design
US9842187B1 (en) Representation of complex timing characteristics of startpoint-endpoint pairs in a circuit design
US6845489B1 (en) Database for design of integrated circuit device and method for designing integrated circuit device
WO2017104149A1 (ja) 設計方法、設計プログラム及び設計装置
US7409650B2 (en) Low power consumption designing method of semiconductor integrated circuit
US20050039152A1 (en) Timing path detailer
JP2008299464A (ja) 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置
Chiou et al. Synthesis of application-specific highly efficient multi-mode cores for embedded systems
US20220261523A1 (en) Behavioral-level timing and area optimiation
Lavagno et al. Incremental high-level synthesis
Lin et al. A platform of resynthesizing a clock architecture into power-and-area effective clock trees
Mehta et al. A low-energy reconfigurable fabric for the supercisc architecture
Huang et al. High-level synthesis for minimum-area low-power clock gating
Jozwiak et al. Hardware synthesis for reconfigurable heterogeneous pipelined accelerators
JP2015095130A (ja) 回路設計支援装置及びプログラム
JP2010257003A (ja) 論理等価性検証システム、論理等価性検証方法、半導体集積回路の製造方法、制御プログラムおよび可読記憶媒体
JP2010277436A (ja) メモリ構造決定支援装置、メモリ構造決定プログラム及び記録媒体
Masoumi et al. New tool for converting high-level representations of finite state machines to verilog hdl
JP3004589B2 (ja) パストランジスタ論理設計方法
Chen et al. An Open-Source $4\times 8$ Coarse-Grained Reconfigurable Array Using SkyWater 130 nm Technology and Agile Hardware Design Flow