JP6255880B2 - 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム - Google Patents
高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム Download PDFInfo
- Publication number
- JP6255880B2 JP6255880B2 JP2013213145A JP2013213145A JP6255880B2 JP 6255880 B2 JP6255880 B2 JP 6255880B2 JP 2013213145 A JP2013213145 A JP 2013213145A JP 2013213145 A JP2013213145 A JP 2013213145A JP 6255880 B2 JP6255880 B2 JP 6255880B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- level synthesis
- data
- design
- unit
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
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)
Description
図1は、本実施の形態の高位合成用データ生成装置及び高位合成装置の一例を示す図である。
解析部2は、半導体装置(以下、半導体回路も含むものとする)の設計データであるソースコードD1を解析し、設計対象である半導体装置のデータ及び制御の流れを示す情報D2(以下CDFG(Control Data Flow Graph)情報と呼ぶ)を生成する。ソースコードD1は、C/C++言語、SystemC、JavaBASIC、アセンブリ言語などの高位言語で記述されている。CDFGは、ソースコードD1の動作(ビヘイビア)記述から作成されるデータの流れを示すDFG(Date Flow Graph)と、制御の流れを示すCFG(Control Flow Graph)を合わせたものである。CDFG情報D2の例については後述する(図12参照)。
高位合成用データ生成部4は、ソースコードD1をコンパイルすることで得られる中間データを取得して、CDFG情報D2と制約設定対応情報D6を、その中間データに組み込んだ中間データを生成し、高位合成用データとして出力する。
以下、ユーザ側装置の一例を説明する。
図1のように、シミュレーション装置8は、高位合成用データであるオブジェクトファイルD9を取得して実行形式ファイルD10を生成するリンク部9を有する。シミュレーション実行部10は、実行形式ファイルD10を実行することで、シミュレーションを実行し、ユーザが意図する動作を行うか確認する。後述するように、オブジェクトファイルD9に組み込まれるCDFG情報D2と制約設定対応情報D6は、リンク部9での処理には影響を与えない。
図2は、高位合成装置の一例を示す図である。
高位合成装置11は、抽出部20、高位合成部21、記憶部22を有する。
アロケーション部21dは、足し算や掛け算などの演算の情報をマッピングする。
バインディング部21fは、演算子や変数、配列を演算器や、レジスタ、メモリに割り付ける。
HDL生成部21hは、合成された回路のアーキテクチャをRTLレベルのHDLデータD13に変換して、記憶部22に記憶する。
(ハードウェア例)
図3は、高位合成用データ生成装置または高位合成装置のハードウェア例を示す図である。
(高位合成用データ生成装置の処理例)
図4は、高位合成用データ生成装置の処理の流れを示すフローチャートである。
解析処理では、まずコード解析部2aによるコード解析処理(ステップS1a)が行われ、次にCDFG解析部2bによるCDFG解析処理(ステップS1b)が行われる。
コード解析処理では、先ず、ソースコードD1の読み込みが行われ(ステップS10)、その後、コード解析が行われる(ステップS11)。
図6に示されているソースコードD1の例では、シフトレジスタと積和演算器を有する半導体装置が記述されている。8〜15行目にシフトレジスタが記述されており、17〜22行目に積和演算器が記述されている。
その後、抽出した情報が制約設定可能情報(設計情報)D3として、たとえば、図3に示したモニタ34aに表示される(ステップS12)。
図7には、CDFG情報D2の要素のID(IDentification)(後述する)、ソースコードD1の行番号、ラベル名、関数名、提供者が定義する名前、制限情報(設計条件情報:設定項目、デフォルト値、制限値)が示されている。制約設定可能情報(設計情報)D3としては、図6に示したソースコードD1において、2行目の関数名“sample”の情報、9行目の、ラベル名“shift”の情報、18行目の、ラベル名“mac”の情報があることが示されている。
図8の制限情報(設計条件情報)D4の例では、ソースコードD1の9行目のラベル“shift”のループ文に対して並列化の設定値を4〜8とすることが示されている。また、ソースコードD1の18行目のラベル“mac”のループ文に対して、パイプラインの設定値を1〜4とすることが示されている。
図9では、“shift”や“mac”のようなラベル名ではなく、ソースコードD1において設定する行の行番号が指定されている。図9中の“L9”や“L18”が、9行目、18行目を示している。設定する内容は、図8に示した内容と同じである。
なお、ユーザは、たとえば、モニタ34a上に表示される図7に示したようなテーブルに、設定項目、デフォルト値、制限値などを入力することで、コード解析部2aが、それらの情報を制限情報(設計条件情報)D4として取得するようにしてもよい。また、このときユーザは、各設定項目に対し、後述の図10に示すような「提供者が定義する名前」を書き入れるようにしてもよい。
図10は、制約設定情報の一例を示す図である。
図11は、CDFG解析処理の一例の流れを示すフローチャートである。
CDFG解析部2bは、コード解析部2aでのコード解析結果を読み込み(ステップS20)、ループ解析(ステップS21)や、条件分岐解析(ステップS22)を行い、CDFG情報D2を生成する(ステップS23)。なお、ステップS21,S22の順序は入れ替えてもよい。
図6に示したソースコードD1の“sample”という関数がCDFGで示されている。
CDFG解析部2bは、CDFG情報D2と制限情報(設計条件情報)D4との対応付けの結果に基づき、制約設定対応情報D6を生成する(ステップS26)。
図13に示されている制約設定対応情報D6は、図10に示した制約設定情報D5が、ステップS25の処理に基づき更新された形で示されている。図10に示されている制約設定情報D5に対し、図12に示したCDFGのパーツのIDが割り付けられている。
図14は、高位合成用データ生成処理の一例の流れを示すフローチャートである。
図15は、中間データ生成装置に入力されるソースコードの例を示す。
ELFには、ELFヘッダ、プログラムヘッダテーブル、セクションヘッダテーブルが含まれる。また、ELFでは、基本的にセクション単位でデータが扱われる。代表的なセクションとしては、プログラムが配置される“.text”セグメントや、データが配置される“.data”セグメント、リードオンリーの定数を格納する“.rodata”セグメントなどがある。さらに、ELFでは、ユーザが追加で補足できる情報が配置される“.note”セクションがある。
図17では、図15に示したソースコードのコンパイルによって得られたアセンブリコードの例が示されている。
なお、図18では、分かりやすいように図17に示したようなアセンブリコードに高位合成用セクション情報を追加した例を示しているが、実際にはオブジェクトファイルD8の“.note”セクションに追加される。
(高位合成装置11の処理例)
図19は、高位合成装置の抽出部での抽出処理の一例を示すフローチャートである。
図20は、高位合成装置の制約検証部での制約検証処理の一例を示すフローチャートである。
また、オブジェクトファイルD9の高位合成用セクションに含まれる制約設定対応情報D6が出力されユーザに提示されるので、ユーザは、CDFG情報D2の要素に対してどのような高位合成制約が設定できるのか、容易に把握できる。
また、上記ではアセンブリコードやオブジェクトファイルのファイルフォーマットを、ELFであるものとして説明したがELFに限定されるものではない。ユーザが追加で情報を補足できる領域を含むファイルフォーマットを適用できる。
以上説明した複数の実施の形態に関し、さらに以下の付記を開示する。
前記ソースコードをコンパイルすることで得られる第1の中間データを取得して、前記解析部が生成した前記情報を、前記第1の中間データに組み込んだ第2の中間データを生成し、高位合成用データとして出力する高位合成用データ生成部と、
を有することを特徴とする高位合成用データ生成装置。
前記高位合成用データ生成部は、前記情報と前記対応情報を前記第1の中間データに組み込んだ前記第2の中間データを生成すること、
を特徴とする付記1に記載の高位合成用データ生成装置。
(付記4)前記設計条件情報は、前記半導体装置の動作周波数の条件値を含むこと、を特徴とする付記2または3に記載の高位合成用データ生成装置。
(付記7)半導体装置の設計データであるソースコードをコンパイルすることで得られる第1の中間データに、前記半導体装置のデータ及び制御の流れを示す情報が組み込まれた第2の中間データを取得して、前記第2の中間データから前記情報を抽出する抽出部と、
前記抽出部で抽出された前記情報に基づき高位合成を行う高位合成部と、
を有することを特徴とする高位合成装置。
前記抽出部は、前記対応情報を抽出して、前記対応情報を出力し、
前記高位合成部は、高位合成設計情報を外部から取得して、前記高位合成設計情報が前記設計条件情報に規定されている条件を満たしているか否かを検証する設計検証部を有し、
前記設計検証部は、前記高位合成設計情報が、前記条件を満たしていないときには警告を発し、前記高位合成の実行を制限することを特徴とする付記7に記載の高位合成装置。
前記ソースコードをコンパイルすることで得られる第1の中間データを取得して、前記情報を前記第1の中間データに組み込んだ第2の中間データを生成し、高位合成用データとして出力する、
ことを特徴とする高位合成用データ生成方法。
前記ソースコードをコンパイルすることで得られる第1の中間データを取得して、前記情報を前記第1の中間データに組み込んだ第2の中間データを生成し、高位合成用データとして出力する、
処理をコンピュータに実行させるプログラム。
抽出した前記情報に基づき高位合成を行う、
ことを特徴とする高位合成方法。
抽出した前記情報に基づき高位合成を行う、
処理をコンピュータに実行させるプログラム。
2 解析部
2a コード解析部
2b CDFG解析部
3 記憶部
4 高位合成用データ生成部
5 中間データ生成装置
6 コンパイル部
7 アセンブル部
8 シミュレーション装置
9 リンク部
10 シミュレーション実行部
11 高位合成装置
D1 ソースコード
D2 CDFG情報
D3 制約設定可能情報
D4 制限情報
D5 制約設定情報
D6 制約設定対応情報
D7 アセンブリコード
D8,D9 オブジェクトファイル
D10 実行形式ファイル
Claims (8)
- 半導体装置の設計データであるソースコードを解析し、前記半導体装置のデータ及び制御の流れを示す情報を生成する解析部と、
前記ソースコードをコンパイルすることで得られる第1の中間データを取得して、前記解析部が生成した前記情報を、前記第1の中間データに組み込んだ第2の中間データを生成し、高位合成用データとして出力する高位合成用データ生成部と、
を有することを特徴とする高位合成用データ生成装置。 - 前記解析部は、前記ソースコードを解析して、設定可能な高位合成情報である設計情報を出力し、前記設計情報の設定条件を示す設計条件情報を外部から取得し、前記設計条件情報と前記情報とを対応付けた対応情報を生成し、
前記高位合成用データ生成部は、前記情報と前記対応情報を前記第1の中間データに組み込んだ前記第2の中間データを生成すること、
を特徴とする請求項1に記載の高位合成用データ生成装置。 - 前記設計条件情報は、高位合成で使用するライブラリ情報を含むこと、を特徴とする請求項2に記載の高位合成用データ生成装置。
- 前記設計条件情報は、前記半導体装置の動作周波数の条件値を含むこと、を特徴とする請求項2または3に記載の高位合成用データ生成装置。
- 半導体装置の設計データであるソースコードをコンパイルすることで得られる第1の中間データに、前記半導体装置のデータ及び制御の流れを示す情報が組み込まれた第2の中間データを取得して、前記第2の中間データから前記情報を抽出する抽出部と、
前記抽出部で抽出された前記情報に基づき高位合成を行う高位合成部と、
を有することを特徴とする高位合成装置。 - 前記第2の中間データは、設定可能な高位合成情報である設計情報の設定条件を示す設計条件情報と、前記情報とが対応付けられた対応情報を含み、
前記抽出部は、前記対応情報を抽出して、前記対応情報を出力し、
前記高位合成部は、高位合成設計情報を外部から取得して、前記高位合成設計情報が前記設計条件情報に規定されている条件を満たしているか否かを検証する設計検証部を有し、
前記設計検証部は、前記高位合成設計情報が、前記条件を満たしていないときには警告を発し、前記高位合成の実行を制限することを特徴とする請求項5に記載の高位合成装置。 - コンピュータが、半導体装置の設計データであるソースコードを解析して前記半導体装置内でのデータ及び制御の流れを示す情報を生成し、
前記コンピュータが、前記ソースコードをコンパイルすることで得られる第1の中間データを取得して、前記情報を前記第1の中間データに組み込んだ第2の中間データを生成し、高位合成用データとして出力する、
ことを特徴とする高位合成用データ生成方法。
- 半導体装置の設計データであるソースコードを解析して前記半導体装置内でのデータ及び制御の流れを示す情報を生成し、
前記ソースコードをコンパイルすることで得られる第1の中間データを取得して、前記情報を前記第1の中間データに組み込んだ第2の中間データを生成し、高位合成用データとして出力する、
処理をコンピュータに実行させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013213145A JP6255880B2 (ja) | 2013-10-10 | 2013-10-10 | 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム |
US14/466,766 US9235672B2 (en) | 2013-10-10 | 2014-08-22 | High-level synthesis data generation apparatus, high-level synthesis apparatus, and high-level synthesis data generation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013213145A JP6255880B2 (ja) | 2013-10-10 | 2013-10-10 | 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015076013A JP2015076013A (ja) | 2015-04-20 |
JP6255880B2 true JP6255880B2 (ja) | 2018-01-10 |
Family
ID=52810759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013213145A Expired - Fee Related JP6255880B2 (ja) | 2013-10-10 | 2013-10-10 | 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US9235672B2 (ja) |
JP (1) | JP6255880B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6266183B2 (ja) * | 2015-08-27 | 2018-01-24 | 三菱電機株式会社 | 回路設計支援装置および回路設計支援プログラム |
JP2017111591A (ja) * | 2015-12-16 | 2017-06-22 | 株式会社ソシオネクスト | 設計方法、設計プログラム及び設計装置 |
US10013517B1 (en) * | 2016-01-06 | 2018-07-03 | Xilinx, Inc. | High level programming language core protection for high level synthesis |
JP2017156937A (ja) * | 2016-03-01 | 2017-09-07 | ヤンマー株式会社 | 端末装置およびソフトウェア書き換えプログラム |
WO2018146727A1 (ja) * | 2017-02-07 | 2018-08-16 | 三菱電機株式会社 | 高位合成装置、高位合成方法および高位合成プログラム |
US11361133B2 (en) * | 2017-09-26 | 2022-06-14 | Intel Corporation | Method of reporting circuit performance for high-level synthesis |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08101861A (ja) * | 1994-09-30 | 1996-04-16 | Toshiba Corp | 論理回路合成装置 |
JP3921367B2 (ja) | 2001-09-26 | 2007-05-30 | 日本電気株式会社 | データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム |
US6983456B2 (en) | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
JP4397744B2 (ja) * | 2004-06-25 | 2010-01-13 | パナソニック株式会社 | 半導体集積回路の高位合成方法 |
US7565631B1 (en) * | 2004-07-02 | 2009-07-21 | Northwestern University | Method and system for translating software binaries and assembly code onto hardware |
JP4165712B2 (ja) * | 2004-11-10 | 2008-10-15 | シャープ株式会社 | データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体 |
JP2007193529A (ja) * | 2006-01-18 | 2007-08-02 | Matsushita Electric Ind Co Ltd | 半導体集積回路の高位合成方法 |
JP2011022690A (ja) * | 2009-07-14 | 2011-02-03 | Renesas Electronics Corp | シミュレーションモデル生成装置 |
JP2011059895A (ja) * | 2009-09-08 | 2011-03-24 | Toshiba Corp | 高位合成装置 |
JP5471413B2 (ja) * | 2009-12-21 | 2014-04-16 | 日本電気株式会社 | 動作合成装置及び方法 |
JP5467512B2 (ja) | 2010-02-18 | 2014-04-09 | 日本電気株式会社 | 動作合成装置、動作合成方法、及び、動作合成プログラム |
JP2011192001A (ja) * | 2010-03-15 | 2011-09-29 | Toshiba Corp | 高位合成装置及び高位合成方法 |
JP2011237989A (ja) * | 2010-05-10 | 2011-11-24 | Toshiba Corp | 半導体集積回路の設計装置、その設計方法、及びその設計プログラム |
US8458630B1 (en) * | 2010-06-26 | 2013-06-04 | Cadence Design Systems, Inc. | Supporting dynamic aspects of polymorphism in high-level synthesis of integrated circuit designs |
JP5910108B2 (ja) * | 2012-01-25 | 2016-04-27 | 株式会社ソシオネクスト | 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法 |
JP5910230B2 (ja) * | 2012-03-26 | 2016-04-27 | 富士通株式会社 | 設計支援プログラム、設計支援方法、および設計支援装置 |
-
2013
- 2013-10-10 JP JP2013213145A patent/JP6255880B2/ja not_active Expired - Fee Related
-
2014
- 2014-08-22 US US14/466,766 patent/US9235672B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20150106774A1 (en) | 2015-04-16 |
JP2015076013A (ja) | 2015-04-20 |
US9235672B2 (en) | 2016-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6255880B2 (ja) | 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム | |
JP5910108B2 (ja) | 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法 | |
US9501269B2 (en) | Automatic source code generation for accelerated function calls | |
JP4492803B2 (ja) | 動作合成装置及びプログラム | |
US20160321218A1 (en) | System and method for transforming image information for a target system interface | |
JP2007034584A (ja) | 高位合成装置、自動高位合成方法、高位合成プログラム及びゲートネットリスト自動検証方法 | |
Devarajegowda et al. | Meta-model based automation of properties for pre-silicon verification | |
Vanderperren et al. | Extending UML for electronic systems design: A code generation perspective | |
KR102530599B1 (ko) | 반도체 설계 공정 비용 감소를 위한 hdevs 기반 rtl 설계 도구 및 복합 시뮬레이터 | |
Ravi et al. | Open source HLS tools: A stepping stone for modern electronic CAD | |
JP4586864B2 (ja) | プロパティ自動生成装置 | |
US7171632B2 (en) | Apparatus, method and program for designing semiconductor integrated circuit | |
US10740210B1 (en) | Kernel tracing for a heterogeneous computing platform and data mining | |
US8650517B1 (en) | Automatically documenting circuit designs | |
JP2008276735A (ja) | プログラムコード変換装置及びプログラムコード変換方法 | |
US20100088656A1 (en) | Property checking system, property checking method, and computer-readable storage medium | |
JP4881769B2 (ja) | 半導体集積回路設計支援装置、半導体集積回路設計支援方法、半導体集積回路設計支援プログラム | |
Yu et al. | CHA: Supporting SVA-like assertions in formal verification of Chisel programs (tool paper) | |
US10936776B1 (en) | Analyzing waveform data generated for simulated circuit design | |
JP2019139675A (ja) | ソースコード最適化装置、プログラムおよび方法 | |
JP5233354B2 (ja) | プロパティ検証システム、プロパティ検証方法、及びプログラム | |
JP5034867B2 (ja) | ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法 | |
JP5110206B2 (ja) | 動作合成装置、動作合成方法、ならびに、プログラム | |
de Medeiros et al. | Designing embedded systems with MARTE: A PIM to PSM converter | |
JP2009140028A (ja) | ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20150611 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160427 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170502 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170629 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20171107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171120 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6255880 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |