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

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

Info

Publication number
JP6407181B2
JP6407181B2 JP2016042514A JP2016042514A JP6407181B2 JP 6407181 B2 JP6407181 B2 JP 6407181B2 JP 2016042514 A JP2016042514 A JP 2016042514A JP 2016042514 A JP2016042514 A JP 2016042514A JP 6407181 B2 JP6407181 B2 JP 6407181B2
Authority
JP
Japan
Prior art keywords
arithmetic expression
latency
design support
analysis unit
support apparatus
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
Application number
JP2016042514A
Other languages
English (en)
Other versions
JP2017157154A (ja
Inventor
文利 輕部
文利 輕部
山本 亮
亮 山本
吉大 小川
吉大 小川
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2016042514A priority Critical patent/JP6407181B2/ja
Priority to US15/237,292 priority patent/US20170255733A1/en
Publication of JP2017157154A publication Critical patent/JP2017157154A/ja
Application granted granted Critical
Publication of JP6407181B2 publication Critical patent/JP6407181B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

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)
  • Stored Programmes (AREA)

Description

本発明は、回路の設計を支援する設計支援装置、設計支援方法及び設計支援プログラムに関する。
従来の半導体集積回路の設計では、RTL(Register Transfer Level)といったハードウェア記述言語を用いて、レジスタ(フリップフロップ)間の組み合わせ回路の動作を記述していた。近年では、集積回路の回路規模が増大しており、ハードウェア記述言語を用いた設計では多大な設計時間を要する。そこで、ハードウェア記述言語よりも抽象度が高いC言語、C++言語、SystemC言語といった高位言語を用いて設計を行い、RTLを自動的に生成する技術が提唱されている。そして、これを実現するツールが高位合成ツールとして市販されている。
しかし、高位言語の記述は正確な時間概念がないため、演算処理のレイテンシはRTLを生成した後でないと分からない。そして、演算処理のレイテンシが所望のレイテンシを満たしていない場合は、演算処理のうちのどの処理のレイテンシが問題となっているかを解析する必要がある。
特許文献1には、シミュレーション時間を短縮することを目的として、演算子の演算結果をテーブル化することが記載されている。
特開平07−200665号公報
上述したように、特許文献1ではシミュレーション時間を短縮することが目的であり、レイテンシを効率的に小さくすることはできないという課題がある。
本発明は、高位言語で記述されたソースコードを解析し、テーブル化することにより効率的にレイテンシを小さくできる演算式を抽出することが可能な設計支援装置を提供することを目的とする。
本発明に係る設計支援装置は、
ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力する解析部と、
前記解析部から出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保管するレイテンシ保管部と、
前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式を判定結果として出力する判定部とを備えた。
本発明に係る設計支援装置では、解析部が、ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力し、レイテンシ保管部が、抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを演算式レイテンシとして記憶部に保管し、判定部が、演算式レイテンシがレイテンシ閾値以上の場合に抽出演算式を判定結果として出力する。よって、テーブル化に適しており、かつ、レイテンシが大きい演算式を的確に抽出することができるという効果を奏する。
実施の形態1に係る設計支援装置100の構成図。 実施の形態1に係る設計支援装置100の設計支援方法510及び設計支援プログラム520による設計支援処理S100のフロー図。 実施の形態1に係る解析処理S120のフロー図。 実施の形態1に係るレイテンシ保管処理S130のフロー図。 実施の形態1に係る判定処理S140のフロー図。 実施の形態1に係る設計支援装置100の処理対象であるソースコード180の例。 実施の形態1に係る設計支援装置100の処理対象であるソースコード180の別例。 実施の形態1に係るテーブル化演算式185をテーブル化した図。 実施の形態1に係るテーブル化演算式185をテーブル化する際のプラグマ記述例。 実施の形態1の変形例に係る設計支援装置100xの構成図。
実施の形態1.
***構成の説明***
図1を用いて、本実施の形態に係る設計支援装置100の構成について説明する。
本実施の形態において、設計支援装置100は、コンピュータである。設計支援装置100は、プロセッサ910、記憶装置920、入力装置930、出力装置940といったハードウェアを備える。記憶装置920は、補助記憶装置921とメモリ922とを有する。
設計支援装置100は、機能構成として、ソースコード取得部110と、解析部120と、抽出結果保持部130と、高位合成部140と、判定部150と、記憶部170とを備える。解析部120は、演算式解析部121と、ループ解析部122と、変数解析部123と、特定演算解析部124と、演算子解析部125とを備える。
以下の説明では、設計支援装置100におけるソースコード取得部110と、解析部120と、抽出結果保持部130と、高位合成部140と、判定部150の機能を、設計支援装置100の「部」の機能という。解析部120の機能とは、演算式解析部121と、ループ解析部122と、変数解析部123と、特定演算解析部124と、演算子解析部125の機能である。
設計支援装置100の「部」の機能は、ソフトウェアで実現される。
また、記憶部170は、記憶装置920で実現される。記憶部170には、予め入力装置930を介して入力された回数閾値172、変数閾値173、特定の演算174、演算子閾値175、レイテンシ閾値176が記憶されている。また、記憶部170には、ソースコード180、抽出演算式181、演算式レイテンシ183、テーブル化演算式185が記憶される。演算式レイテンシ183は、レイテンシ保管部182により記憶部170に記憶される。記憶部170には、上記の他、RTL等が記憶される。
プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ910は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ910は、具体的には、CPU(Central Processing Unit)である。
記憶装置920は、補助記憶装置921及びメモリ922を含む。補助記憶装置921は、具体的には、ROM(Read Only Memory)、フラッシュメモリ、又は、HDD(Hard Disk Drive)である。メモリ922は、具体的には、RAM(Random Access Memory)である。本実施の形態では、記憶部170は、補助記憶装置921により実現される。なお、記憶部170は、メモリ922により実現されてもよいし、補助記憶装置921とメモリ922とにより実現されていてもよい。記憶部170の実現方法は任意である。
入力装置930は、マウス、キーボード、タッチパネルといった入力機器である。なお、設計支援装置100は、マウス、キーボード、タッチパネルといった入力機器と接続されるポートである入力インタフェースを備えていてもよい。入力インタフェースは、具体的には、USB(Universal Serial Bus)端子である。なお、入力インタフェースは、LAN(Local Area Network)と接続されるポートであってもよい。
出力装置940は、ディスプレイといった表示機器やプリンタといった出力機器である。出力装置940は、高位言語記述や高位合成後のRTLを表示、出力する。なお、設計支援装置100は、ディスプレイといった表示機器のケーブルが接続されるポートである出力インタフェースを備えていてもよい。出力インタフェースは、具体的には、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。
補助記憶装置921には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ922にロードされ、プロセッサ910に読み込まれ、プロセッサ910によって実行される。補助記憶装置921には、OS(Operating System)も記憶されている。OSの少なくとも一部がメモリ922にロードされ、プロセッサ910はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
設計支援装置100は、1つのプロセッサ910のみを備えていてもよいし、複数のプロセッサ910を備えていてもよい。複数のプロセッサ910が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置921、メモリ922、又は、プロセッサ910内のレジスタ又はキャッシュメモリに記憶される。なお、図1において、各部と記憶部170とを結ぶ矢印は、各部が処理の結果を記憶部170に記憶すること、あるいは、各部が記憶部170から情報を読み出すことを表している。また、各部を結ぶ矢印は、制御の流れを表している。
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disc)といった可搬記録媒体に記憶されてもよい。
なお、「部」の機能を実現するプログラムを設計支援プログラムともいう。設計支援プログラムは、「部」として説明している機能を実現するプログラムである。また、設計支援プログラムプロダクトと称されるものは、設計支援プログラムが記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
***動作の説明***
本実施の形態に係る設計支援装置100の動作について説明する。
図2を用いて、本実施の形態に係る設計支援装置100の設計支援方法510及び設計支援プログラム520による設計支援処理S100の概要について説明する。
設計支援処理S100は、ソースコード取得処理S110と、解析処理S120と、レイテンシ保管処理S130と、判定処理S140とを備える。
ソースコード取得処理S110において、ソースコード取得部110は、記憶部170に記憶されているソースコード180を取り込む。ソースコード180は、具体的には、C言語、C++言語、SystemC言語といった高位言語を用いて回路の動作を記述したソースコードである。ソースコード180は、入力装置930を介して、ユーザにより入力され記憶部170に記憶される。
解析処理S120において、解析部120は、ループ回数が回数閾値172以下にある演算式をソースコード180から抽出する。解析部120は、抽出した演算式を抽出演算式181として出力する。解析処理S110については後で詳しく説明する。
レイテンシ保管処理S130において、高位合成部140は、解析処理S120により出力された抽出演算式181をハードウェア記述言語に変換演算式として変換し、変換演算式におけるレイテンシを演算式レイテンシ183として出力する。レイテンシ保管部182は、抽出演算式181がハードウェア記述言語に変換された変換演算式における演算式レイテンシ183を、記憶部170に記憶する。レイテンシ保管処理S130については後で詳しく説明する。
判定処理S140において、判定部150は、演算式レイテンシ183がレイテンシ閾値176以上の場合に、抽出演算式181をテーブル化演算式185として出力する。判定処理S140については後で詳しく説明する。
なお、解析処理S120、レイテンシ保管処理S130、判定処理S140は、ソースコード取得処理S110において取り込まれたソースコード180の各文について実行される。
<解析処理S120について>
図3を用いて、本実施の形態に係る解析処理S120について説明する。
ステップS121において、解析部120の演算式解析部121は、ソースコード180の文を解析し、等式(=)を含む演算式があるか否かを判定する。演算式解析部121は、文に等式を含む演算式がある場合、ステップS122に進む。演算式解析部121は、文に等式を含む演算式がない場合、処理を終了する。
次に、ステップS122において、解析部120のループ解析部122は、演算式解析部121により等式を含む演算式であると判定された演算式のループ回数を解析する。ループ解析部122は、forループ解析部ともいう。具体的には、ループ解析部122は、演算式のループ回数と、記憶部170に記憶されている回数閾値172とを比較し、ループ回数が回数閾値172以下であるか否かを判定する。ループ解析部122は、ループ回数が回数閾値172以下の場合、ステップS123に進む。ループ解析部122は、ループ回数が回数閾値172以下でない場合、処理を終了する。
すなわち、ステップS121及びステップS123において、解析部120は、ループ回数が回数閾値以下である演算式をソースコード180から抽出する。
なお、ループ解析部122は、演算式のループ回数を解析することにより、演算式をテーブル化した場合のテーブルサイズを判断してもよい。この場合、記憶部170にテーブルのライン数を記憶しておき、演算式のテーブルサイズ(ループ回数)がライン数以下であれば、ステップS123に進む。
また、記憶部170は、入力装置930を介して、ユーザから入力された回数閾値172を予め記憶する。回数閾値172は、ユーザにより指定可能なパラメータである。
次に、ステップS123において、解析部120の変数解析部123は、演算式の変数の数を解析する。具体的には、変数解析部123は、演算式の変数の数と、記憶部170に記憶されている変数閾値173とを比較し、演算式の変数の数が変数閾値173以下であるか否かを判定する。変数解析部123は、演算式の変数の数が変数閾値173以下の場合、ステップS124に進む。変数解析部123は、演算式の変数の数が変数閾値173以下でない場合、処理を終了する。具体例として変数閾値173が1の場合、変数解析部123は、ループ解析部122で抽出された演算式に対して、変数の数が1の演算式を抽出する。ただし、変数閾値173は1に限らない。
記憶部170は、入力装置930を介して、ユーザから入力された変数閾値173を予め記憶する。変数閾値173は、ユーザにより指定可能なパラメータである。
次に、ステップS124において、解析部120の特定演算解析部124は、演算式に含まれる演算の種類を解析する。具体的には、特定演算解析部124は、演算式に含まれる演算と、記憶部170に記憶されている特定の演算174とを比較する。特定の演算174としては、例えば、平方根、指数関数といった演算の種類が設定されている。特定演算解析部124は、演算式が特定の演算174を含むか否かを判定する。特定演算解析部124は、演算式が特定の演算174を含む場合、ステップS125に進む。特定演算解析部124は、演算式が特定の演算174を含まない場合、処理を終了する。具体的には、特定演算解析部124は、変数解析部123で変数が1つであると判定された演算式について、特定の演算174を含むか否か判定する。
記憶部170は、入力装置930を介して、ユーザから入力された特定の演算174を予め記憶する。特定の演算174は、ユーザにより指定可能なパラメータである。
次に、ステップS125において、解析部120の演算子解析部125は、演算式に含まれる演算子の数を解析する。具体的には、演算子解析部125は、演算式に含まれる演算子の数と、記憶部170に記憶されている演算子閾値175とを比較する。演算子解析部125は、演算式に含まれる演算子の数が演算子閾値175以上であるか否かを判定する。演算子解析部125は、演算式に含まれる演算子の数が演算子閾値175以上である場合、ステップS126に進む。演算子解析部125は、演算式に含まれる演算子の数が演算子閾値175以上でない場合、処理を終了する。具体例として演算子閾値175が5の場合、演算子解析部125は、特定演算解析部124で特定の演算174を含むと判定された演算式について、演算子の数が5つ以上か否かを判定する。ただし、演算子閾値175は5に限らない。
記憶部170は、入力装置930を介して、ユーザから入力された演算子閾値175を予め記憶する。演算子閾値175は、ユーザにより指定可能なパラメータである。
ステップS126において、解析部120の演算子解析部125は、演算子の数が演算子閾値175以上と判定した演算式を抽出演算式181として出力する。すなわち、解析部120は、等式を含み、かつ、ループ回数が回数閾値172以下であり、かつ、変数の数が変数閾値173以下であり、かつ、特定の演算174を含み、かつ、演算子の数が演算子閾値175以上である演算式を抽出し、抽出演算式181として出力する。また、抽出結果保持部130は、解析部120から出力された抽出演算式181を記憶部170に記憶する。
以上で、解析処理S120についての説明を終わる。解析処理S120により、テーブル化に適している演算式の候補が抽出演算式181として抽出される。
<レイテンシ保管処理S130について>
図4を用いて、本実施の形態に係るレイテンシ保管処理S130について説明する。
ステップS131において、高位合成部140は、解析処理S120により記憶部170に記憶された抽出演算式181を読み出す。高位合成部140は、高位言語で記述されている抽出演算式181を、ハードウェア記述言語に変換する。具体的には、高位合成部140は、抽出演算式181を高位合成ツールに入力することにより、抽出演算式181をハードウェア記述言語に変換する。
ステップS132において、高位合成部140は、ハードウェア記述言語で記載された変換演算式810におけるレイテンシを演算式レイテンシ183として出力する。高位合成部140は、変換演算式810と演算式レイテンシ183とをレイテンシ情報として出力する。具体的には、高位合成部140は、抽出演算式181を高位合成ツールに入力し、抽出演算式181がハードウェア記述言語で記載された変換演算式810と、変換演算式810におけるレイテンシである演算式レイテンシ183とを出力する。
ステップS133において、レイテンシ保管部182は、抽出演算式181がハードウェア記述言語に変換された変換演算式810における演算式レイテンシ183を、記憶部170に記憶する。
以上で、レイテンシ保管処理S130についての説明を終わる。レイテンシ保管処理S130により、テーブル化に適している候補の演算式である抽出演算式181のレイテンシが演算式レイテンシ183として出力される。
<判定処理S140について>
図5を用いて、本実施の形態に係る判定処理S140について説明する。
ステップS141において、判定部150は、記憶部170に記憶されている演算式レイテンシ183とレイテンシ閾値176とを読み出し、演算式レイテンシ183とレイテンシ閾値176とを比較する。
演算式レイテンシ183がレイテンシ閾値176以上の場合、処理はステップS142に進む。
ステップS142において、判定部150は、抽出演算式181をテーブル化演算式185として出力する。すなわち、判定部150は、抽出演算式181をテーブル化演算式185として記憶部170に記憶する。
演算式レイテンシ183がレイテンシ閾値176より小さい場合、処理を終了する。
記憶部170は、入力装置930を介して、ユーザから入力されたレイテンシ閾値176を予め記憶する。レイテンシ閾値176は、ユーザにより指定可能なパラメータである。
以上で、判定処理S140についての説明を終わる。
以上のように、設計支援処理S100によれば、テーブル化に適している抽出演算式181から、演算式レイテンシ183がレイテンシ閾値176以上の演算子がテーブル化演算式185として抽出される。テーブル化演算式185は、判定部150の判定処理S140による判定結果184である。
次に、図6及び図7を用いて、本実施の形態に係る設計支援装置100の設計支援処理S100を具体例により説明する。
図6及び図7は、ソースコード180の具体例を示している。また、回数閾値172=30、変数閾値173=1、演算子閾値175=5であるものとする。
まず、図6のソースコードの例を用いて、図3の解析処理S120について説明する。
ステップS121において、演算式解析部121は、図6のソースコードから、演算式b[i]=7*sqrt(5*(i+1)−3)+10;を、等式を含む演算式として抽出する。処理はステップS122に進む。
ステップS122において、ループ解析部122は、演算式のループ回数を解析し、ループ回数(すなわち、テーブルサイズ)は10であると判定する。ループ解析部122は、演算式のループ回数は10であり、回数閾値172は30であるため、ループ回数≦回数閾値172を満たすと判定する。処理はステップS123に進む。
ステップS123において、変数解析部123は、演算式の変数の数を解析し、変数(演算式中のiが該当)の数は1個であると判定する。変数解析部123は、演算式の変数の数は1であり、変数閾値173は1であるため、変数の数≦変数閾値173を満たすと判定する。処理はステップS124に進む。
ステップS124において、特定演算解析部124は、演算式に含まれる演算の種類を解析し、演算式に特定の演算174(ここではsqrtが該当)が含まれると判定する。特定演算解析部124は、演算式に特定の演算sqrtが含まれると判定したので、処理はステップS125に進む。
ステップS125において、演算子解析部125は、演算式の演算子を解析し、演算子の数は5個(乗算2個、減算1個、加算1個、平方根1個)と判定する。演算子解析部125は、演算子の数は5であり、演算子閾値175は5であるため、演算子の数≧演算子閾値175を満たすと判定する。演算子解析部125は、この演算式b[i]=7*sqrt(5*(i+1)−3)+10;を、抽出演算式181として出力する。
次に、図4のレイテンシ保管処理S130による、抽出演算式181(b[i]=7*sqrt(5*(i+1)−3)+10;)に対する高位合成の結果、演算式レイテンシ183は10であるとする。
次に、図5の判定処理S140により抽出演算式181をテーブル化する対象のテーブル化演算式185とするか否かを判定する。ここで、レイテンシ閾値176は、5であるものとする。
ステップS141において、判定部150は、演算式レイテンシ183が10であり、レイテンシ閾値176が5であるため、演算式レイテンシ183≧レイテンシ閾値176を満たすと判定する。処理はステップS142に進む。
ステップS142において、判定部150は、抽出演算式181(b[i]=7*sqrt(5*(i+1)−3)+10;)がテーブル化する演算式であると判定し、抽出演算式181をテーブル化演算式185として記憶部170に記憶する。
次に、図7のソースコードの例を用いて、図3の解析処理S120について説明する。
ステップS121において、演算式解析部121は、図7のソースコードから、演算式z[x][y]=8*y+x;を、等式を含む演算式として抽出する。処理はステップS122に進む。
ステップS122において、ループ解析部122は、演算式のループ回数を解析し、ループ回数(すなわち、テーブルサイズ)は200であると判定する。ループ解析部122は、演算式のループ回数は200であり、回数閾値172は30であるため、ループ回数≦回数閾値172を満たさないと判定し、処理を終了する。
このように、ループ回数が多すぎる演算式については、テーブル化によるレイテンシの削減が見込めないため、テーブル化する演算子の候補から外している。
図8は、本実施の形態に係るテーブル化演算式185をテーブル化した図である。
図8では、図6のソースコードに含まれるテーブル化演算式185(b[i]=7*sqrt(5*(i+1)−3)+10;)をテーブル化したものである。テーブル化演算式185(b[i]=7*sqrt(5*(i+1)−3)+10;)において、変数iの取り得る値(0から9までの整数)の出力値b[i]を算出することにより、図8に示すテーブルが得られる。
設計支援装置100によりテーブル化演算式185が抽出された場合、高位言語の記述において、テーブル化演算式185に対してプラグマまたはアトリビュートを付加することにより、高位合成後のRTLがテーブル化される。
図9は、本実施の形態に係るテーブル化演算式185をテーブル化する際のプラグマ記述例を示す図である。図9では「#pragma b=table」をプラグマとしている。
以上で、回路設計において、テーブル化することにより効率的にレイテンシを小さくできるテーブル化演算式185を抽出し、抽出したテーブル化演算式185をテーブル化する処理についての説明を終わる。
***他の構成***
本実施の形態では、演算式解析部121の処理、ループ解析部122の処理、変数解析部123の処理、特定演算解析部124の処理、演算子解析部125の処理の順に処理を行ったが、処理の順番は上記の順番に限らない。
また、本実施の形態では、解析処理S120において、演算式解析部121の処理、ループ解析部122の処理、変数解析部123の処理、特定演算解析部124の処理、演算子解析部125の処理の全てを実行したが、少なくとも演算式解析部121の処理とループ解析部122の処理を実行すればよい。
以下に、解析部120による解析処理S120のバリエーションについて説明する。
解析部120は、ループ回数が回数閾値172以下である演算式を抽出演算式181として出力する。すなわち、解析部120は、解析処理S120において、演算式解析部121の処理とループ解析部122の処理とを実行する。
また、解析部120は、ループ回数が回数閾値172以下である演算式を抽出し、この演算式に含まれる変数の数が変数閾値173以下である場合に、この演算式を抽出演算式181として出力する。すなわち、解析部120は、解析処理S120において、演算式解析部121の処理とループ解析部122の処理と変数解析部123の処理とを実行する。
また、解析部120は、ループ回数が回数閾値172以下である演算式を抽出し、この演算式に含まれる変数の数が変数閾値173以下であり、かつ、この演算式が特定の演算を含む場合に、この演算式を抽出演算式181として出力する。すなわち、解析部120は、解析処理S120において、演算式解析部121の処理とループ解析部122の処理と変数解析部123の処理と特定演算解析部124の処理とを実行する。
また、解析部120は、ループ回数が回数閾値172以下である演算式を抽出し、この演算式に含まれる変数の数が変数閾値173以下であり、かつ、この演算式に含まれる演算子の数が演算子閾値175以上である場合に、この演算式を抽出演算式181として出力する。すなわち、解析部120は、解析処理S120において、演算式解析部121の処理とループ解析部122の処理と演算子解析部125の処理とを実行する。
あるいは、解析部120は、解析処理S120において、演算式解析部121の処理とループ解析部122の処理とに加え、変数解析部123の処理と特定演算解析部124の処理と演算子解析部125の処理とをどのように組み合わせて実行しても構わない。
また、設計支援装置100は、通信装置を備え、通信装置を介して、ユーザから回数閾値172、変数閾値173、特定の演算174、演算子閾値175、レイテンシ閾値176を受信してもよい。また、設計支援装置100は、通信装置を介して判定結果184を送信してもよい。この場合、通信装置はレシーバとトランスミッタとを備える。具体的には、通信装置は通信チップまたはNIC(Network Interface Card)である。通信装置はデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
また、本実施の形態では、設計支援装置100の「部」の機能がソフトウェアで実現されるが、変形例として、設計支援装置100の「部」の機能がハードウェアで実現されてもよい。
図10を用いて、本実施の形態の変形例に係る設計支援装置100xの構成について説明する。
図10に示すように、設計支援装置100xは、処理回路909、入力装置930、出力装置940といったハードウェアを備える。
処理回路909は、前述した「部」の機能及び記憶部170を実現する専用の電子回路である。処理回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、又は、FPGA(Field−Programmable Gate Array)である。
「部」の機能は、1つの処理回路909で実現されてもよいし、複数の処理回路909に分散して実現されてもよい。
別の変形例として、設計支援装置100の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、設計支援装置100の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
プロセッサ910、記憶装置920、及び、処理回路909を、総称して「プロセッシングサーキットリ」という。つまり、設計支援装置100の構成が図1及び図10のいずれに示した構成であっても、「部」の機能及び記憶部170は、プロセッシングサーキットリにより実現される。
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
***本実施の形態の効果の説明***
以上のように、本実施の形態に係る設計支援装置100によれば、演算式のループ回数を解析すると共にレイテンシの大きい演算式を抽出するため、テーブル化をすれば効率的にレイテンシを小さくすることができるテーブル化演算式を的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置100によれば、ループ回数が多過ぎてテーブル化に適さない演算式はテーブル化演算式185から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
本実施の形態に係る設計支援装置100によれば、さらに、演算式の変数の数を考慮しているため、テーブル化演算式をより的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置100によれば、変数の数が多過ぎてテーブル化に適さない演算式はテーブル化演算式185から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
本実施の形態に係る設計支援装置100によれば、さらに、演算式に含まれる演算の種類を考慮しているため、テーブル化演算式をより的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置100によれば、特定の演算を含まずテーブル化によるレイテンシの削減が見込めない演算式はテーブル化演算式185から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
本実施の形態に係る設計支援装置100によれば、さらに、演算式に含まれる演算子の数を考慮しているため、テーブル化演算式をより的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置100によれば、演算子の数が少なくテーブル化によるレイテンシの削減が見込めない演算式はテーブル化演算式185から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
また、本実施の形態に係る設計支援装置100によれば、回数閾値172、変数閾値173、特定の演算174、演算子閾値175、レイテンシ閾値176をユーザにより指定可能なパラメータとしているため、設計対象の回路規模に応じて柔軟に構成を変更することができる。
以上、本発明の実施の形態について説明したが、この実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、設計支援装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せ、あるいは任意のブロック構成で設計支援装置を構成しても構わない。また、設計支援装置は、1つの装置でなく、複数の装置から構成された設計支援システムでもよい。
また、この実施の形態のうち、複数の部分を組合せて実施しても構わない。あるいは、この実施の形態のうち、部分的に実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
100,100x 設計支援装置、110 ソースコード取得部、120 解析部、130 抽出結果保持部、140 高位合成部、150 判定部、170 記憶部、121 演算式解析部、122 ループ解析部、123 変数解析部、124 特定演算解析部、125 演算子解析部、172 回数閾値、173 変数閾値、174 特定の演算、175 演算子閾値、176 レイテンシ閾値、180 ソースコード、181 抽出演算式、182 レイテンシ保管部、183 演算式レイテンシ、184 判定結果、185 テーブル化演算式、510 設計支援方法、520 設計支援プログラム、909 処理回路、910 プロセッサ、920 記憶装置、921 補助記憶装置、922 メモリ、930 入力装置、940 出力装置、S100 設計支援処理、S110 ソースコード取得処理、S120 解析処理、S130 レイテンシ保管処理、S140 判定処理。

Claims (10)

  1. ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力する解析部と、
    前記解析部から出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保管するレイテンシ保管部と、
    前記演算式レイテンシとレイテンシ閾値とを比較し、前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式をテーブル化の対象であるテーブル化演算式と判定し、前記抽出演算式を判定結果として出力する判定部と
    を備えた設計支援装置。
  2. 前記解析部は、
    前記演算式に含まれる変数の数が変数閾値以下である場合に、前記演算式を前記抽出演算式として出力する請求項1に記載の設計支援装置。
  3. 前記解析部は、
    前記演算式が特定の演算を含む場合に、前記演算式を前記抽出演算式として出力する請求項1又は2に記載の設計支援装置。
  4. 前記解析部は、
    前記演算式に含まれる演算子の数が演算子閾値以上である場合に、前記演算式を前記抽出演算式として出力する請求項1から3のいずれか1項に記載の設計支援装置。
  5. 前記設計支援装置は、入力装置を備え、
    前記記憶部は、
    前記入力装置を介して入力された前記回数閾値を記憶すると共に、前記入力装置を介して入力された前記レイテンシ閾値を記憶する請求項1から4のいずれか1項に記載の設計支援装置。
  6. 前記設計支援装置は、入力装置を備え、
    前記記憶部は、
    前記入力装置を介して入力された前記変数閾値を記憶する請求項2に記載の設計支援装置。
  7. 前記設計支援装置は、入力装置を備え、
    前記記憶部は、
    前記入力装置を介して入力された前記特定の演算を記憶する請求項3に記載の設計支援装置。
  8. 前記設計支援装置は、入力装置を備え、
    前記記憶部は、
    前記入力装置を介して入力された前記演算子閾値を記憶する請求項4に記載の設計支援装置。
  9. 解析部が、ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力し、
    レイテンシ保管部が、前記解析部から出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保持し、
    判定部が、前記演算式レイテンシとレイテンシ閾値とを比較し、前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式をテーブル化の対象であるテーブル化演算式と判定し、前記抽出演算式を判定結果として出力する設計支援方法。
  10. ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力する解析処理と、
    前記解析処理により出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保管するレイテンシ保管処理と、
    前記演算式レイテンシとレイテンシ閾値とを比較し、前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式をテーブル化の対象であるテーブル化演算式と判定し、前記抽出演算式を判定結果として出力する判定処理と
    をコンピュータに実行させる設計支援プログラム。
JP2016042514A 2016-03-04 2016-03-04 設計支援装置、設計支援方法及び設計支援プログラム Expired - Fee Related JP6407181B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016042514A JP6407181B2 (ja) 2016-03-04 2016-03-04 設計支援装置、設計支援方法及び設計支援プログラム
US15/237,292 US20170255733A1 (en) 2016-03-04 2016-08-15 Design support device, design support method, and non-transitory computer readable recording medium recorded with design support program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016042514A JP6407181B2 (ja) 2016-03-04 2016-03-04 設計支援装置、設計支援方法及び設計支援プログラム

Publications (2)

Publication Number Publication Date
JP2017157154A JP2017157154A (ja) 2017-09-07
JP6407181B2 true JP6407181B2 (ja) 2018-10-17

Family

ID=59723912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016042514A Expired - Fee Related JP6407181B2 (ja) 2016-03-04 2016-03-04 設計支援装置、設計支援方法及び設計支援プログラム

Country Status (2)

Country Link
US (1) US20170255733A1 (ja)
JP (1) JP6407181B2 (ja)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2317245A (en) * 1996-09-12 1998-03-18 Sharp Kk Re-timing compiler integrated circuit design
US6745160B1 (en) * 1999-10-08 2004-06-01 Nec Corporation Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
US7086047B1 (en) * 2002-12-04 2006-08-01 Xilinx, Inc. Determining hardware generated by high level language compilation through loop optimizations
JP2007272797A (ja) * 2006-03-31 2007-10-18 Toshiba Corp パイプライン高位合成システム及び方法
JP2007287044A (ja) * 2006-04-19 2007-11-01 Toshiba Corp 設計支援装置
JP5622257B2 (ja) * 2009-11-20 2014-11-12 日本電気株式会社 動作合成システム及び動作合成プログラム
JP5644344B2 (ja) * 2010-10-05 2014-12-24 富士通セミコンダクター株式会社 設計データ生成装置、設計データ生成方法及びプログラム
JP5910108B2 (ja) * 2012-01-25 2016-04-27 株式会社ソシオネクスト 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法
JP5979966B2 (ja) * 2012-05-10 2016-08-31 三菱電機株式会社 回路設計支援装置及び回路設計支援方法及びプログラム
US9514259B2 (en) * 2012-11-20 2016-12-06 Taiyo Yuden Co., Ltd. Logic configuration method for reconfigurable semiconductor device
US9547738B1 (en) * 2014-05-08 2017-01-17 Altera Corporation Invariant code optimization in high-level FPGA synthesis

Also Published As

Publication number Publication date
US20170255733A1 (en) 2017-09-07
JP2017157154A (ja) 2017-09-07

Similar Documents

Publication Publication Date Title
Soh et al. An fpga-based unscented kalman filter for system-on-chip applications
US9235672B2 (en) High-level synthesis data generation apparatus, high-level synthesis apparatus, and high-level synthesis data generation method
JP6345346B2 (ja) 分析装置及び分析方法及び分析プログラム
JP2009205509A (ja) リーク電流解析プログラム、該プログラムを記録した記録媒体、リーク電流解析装置、およびリーク電流解析方法
JP6407181B2 (ja) 設計支援装置、設計支援方法及び設計支援プログラム
JP6246445B1 (ja) 高位合成装置、高位合成方法及び高位合成プログラム
JPWO2008081544A1 (ja) シミュレーションシステム、シミュレーションプログラムおよび該プログラムを記録した記録媒体
US10963613B1 (en) Partial reconfiguration of integrated circuits using shell representation of platform design with extended routing region
KR102228995B1 (ko) 여러 가지 수치 포맷의 데이터를 갖는, 데이터 베이스화된 함수 모델의 연산을 위한 모델 연산 유닛 및 제어 장치
JP6567215B2 (ja) アーキテクチャ選定装置、アーキテクチャ選定方法およびアーキテクチャ選定プログラム
US20130185686A1 (en) Semiconductor circuit design supporting apparatus and method, and non-transitory computer-readable medium
US8443314B1 (en) Abstraction level-preserving conversion of flip-flop-inferred hardware description language (HDL) to instantiated HDL
JP6611963B2 (ja) プログラム解析装置、プログラム解析システム、プログラム解析方法および解析プログラム
JP7038577B2 (ja) プログラム分析装置及びプログラム分析方法
WO2017154183A1 (ja) 高位合成装置、高位合成方法及び高位合成プログラム
JP6242170B2 (ja) 回路設計支援装置及びプログラム
US10289786B1 (en) Circuit design transformation for automatic latency reduction
GB2573417A (en) Scale calculation device and scale calculation program
US20170220585A1 (en) Sentence set extraction system, method, and program
WO2016189721A1 (ja) ソースコード評価装置及びソースコード評価方法及びソースコード評価プログラム
US10303832B2 (en) Architecture generating device
JP6630840B2 (ja) ログ分析のためのランドマークデリミタを推定するシステムおよび方法
JP6342065B2 (ja) 回路設計支援装置及び回路設計支援方法及び回路設計支援プログラム
US20230004645A1 (en) Labeling device and labeling program
JP4217204B2 (ja) タイミング例外パス検出装置、タイミング例外パス検出方法およびタイミング例外パス検出プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180803

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: 20180821

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180918

R150 Certificate of patent or registration of utility model

Ref document number: 6407181

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees