JP5471413B2 - 動作合成装置及び方法 - Google Patents

動作合成装置及び方法 Download PDF

Info

Publication number
JP5471413B2
JP5471413B2 JP2009288871A JP2009288871A JP5471413B2 JP 5471413 B2 JP5471413 B2 JP 5471413B2 JP 2009288871 A JP2009288871 A JP 2009288871A JP 2009288871 A JP2009288871 A JP 2009288871A JP 5471413 B2 JP5471413 B2 JP 5471413B2
Authority
JP
Japan
Prior art keywords
description
concealment
hardware module
behavioral
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.)
Active
Application number
JP2009288871A
Other languages
English (en)
Other versions
JP2011129020A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2009288871A priority Critical patent/JP5471413B2/ja
Publication of JP2011129020A publication Critical patent/JP2011129020A/ja
Application granted granted Critical
Publication of JP5471413B2 publication Critical patent/JP5471413B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、半導体集積回路の動作を示す動作記述から具体的な機能(回路)を示すRTL(Register Transfer Level)記述を生成する動作合成装置及び方法に関する。
近年、システムLSIの設計には、抽象度の高い動作記述で設計し、動作合成によりRTL回路を生成する設計手法が採用され始めている。この種の設計手法では、まずシステムLSIの所望の動作を実現する動作記述を設計し、動作合成により動作記述をRTL記述に変換する。そして、論理合成によりRTL記述をゲートレベル記述に変換し、最後にゲートレベル記述から回路レイアウトを作成する。このように動作記述に基づいてハードウェアを設計することで、設計情報を抽象化できるために設計効率が向上する。
しかしながら、動作記述で用いるハードウェア記述言語は、一般にソフトウェア記述言語と同程度の抽象度である。そのため、動作記述が第三者に見られると、該第三者によって動作記述内のアルゴリズム等が解読され、該アルゴリズムで示される技術情報が漏洩するおそれがある。特に、動作記述の作成者(以下、動作記述作成者と称す)と動作合成ツールを用いて動作記述から動作合成を行う実行者(以下、動作合成実行者)とが異なる場合、動作記述作成者が作成したアルゴリズムが動作合成実行者によって容易に解読されてしまう。
動作記述を部分的に秘匿する方法としては、例えば、動作記述作成者が、作成した動作記述を秘匿する記述と公開する記述とに分割し、秘匿する記述を関数等に変換する方法が知られている。しかしながら、動作記述の作成段階において、秘匿のために動作記述を分割すると、動作記述の再利用性が低下するため、設計効率が低下する問題がある。また、秘匿のために既に設計済みの動作記述の一部を変更すると、新たなバグが混入するおそれがある。
なお、動作記述を部分的に秘匿する他の方法としては、特許文献1(特開2002―163312号公報)や特許文献2(特開2005―235848号公報)に記載された技術もある。特許文献1(特開2002―163312号公報)や特許文献2(特開2005―235848号公報)には、動作記述中の変数名等の文字列を元の文字列を推定できない他の文字列に変換することで、該動作記述で示された設計情報の解読を困難にする方法が記載されている。
特開2002―163312号公報 特開2005―235848号公報
上述したように、背景技術の動作合成装置では、動作記述作成者が、設計した動作記述を秘匿する記述と公開する記述とに分割し、秘匿する記述を個別に関数等に変換するため、動作記述の再利用性が低下して設計効率が低下する問題がある。また、秘匿のために既に設計済みの動作記述の一部を変更すると、新たなバグが混入するおそれがある。
一方、上述した特許文献1や特許文献2では、動作記述中の変数名等の文字列を変更することで秘匿性を向上させる技術を示しているが、アルゴリズムの記述を変更することについては何も示していないため、アルゴリズムが解読される危険性は依然として存在する。
本発明は上述したような背景技術が有する問題点を解決するためになされたものであり、秘匿する記述を公開することなく、公開された動作記述から動作合成が可能な動作合成装置及び方法を提供することを目的とする。
上記目的を達成するため本発明の動作合成装置は、動作記述を、秘匿化が指定された記述ブロックである秘匿部と前記秘匿部を除く記述である公開部とに分割し、前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換える動作記述分割手段と、
前記関数化された秘匿部に代わって置き換えられた処理に、前記秘匿部に対応するハードウェアモジュールを割り当てる秘匿部考慮スケジューリング/バインディング手段と、
を有し、
前記動作記述分割手段は、
前記動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに前記秘匿部を関数とみなして行うプロシージャー間解析を実行し、前記秘匿部が分割可能と判断した場合に該秘匿部を分割し、
前記秘匿部考慮スケジューリング/バインディング手段は、
予め定義されるインターフェース生成規則と前記秘匿部に対応するハードウェアモジュールから決定されるインターフェースのプロトコルにしたがってスケジューリング行う構成である。
または、動作記述を、秘匿化が指定された記述ブロックである秘匿部と前記秘匿部を除く記述である公開部とに分割し、前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換える動作記述分割手段と、
前記公開部に対応するハードウェアモジュールとのデータの送受信に用いる入出力ポートの定義を含む、前記秘匿部に対応するハードウェアモジュールの動作合成結果であるRTL記述を生成する公開部考慮スケジューリング/バインディング手段と、
を有し、
前記動作記述分割手段は、
前記動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに前記秘匿部を関数とみなして行うプロシージャー間解析を実行し、前記秘匿部が分割可能と判断した場合に該秘匿部を分割し、
前記公開部考慮スケジューリング/バインディング手段は、
前記公開部に対応するハードウェアモジュールを外部モジュールとして取り扱い、前記秘匿部に対応するハードウェアモジュールの情報で示されるインターフェース及び前記秘匿部の動作記述から動作合成時に考慮すべき情報である秘匿部動作合成指示を満たすようにスケジューリング及びバインディングを行う構成である。
一方、本発明の動作合成方法は、コンピュータが、
動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに秘匿化が指定された記述ブロックである秘匿部を関数とみなして行うプロシージャー間解析を実行し、
前記秘匿部が分割可能と判断した場合、前記動作記述を該秘匿部と秘匿部を除く記述である公開部とに分割し、
前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換え、
前記関数化された秘匿部に代わって置き換えられた処理に、前記秘匿部に対応するハードウェアモジュールを割り当て
予め定義されるインターフェース生成規則と前記秘匿部に対応するハードウェアモジュールから決定されるインターフェースのプロトコルにしたがってスケジューリング行う方法である。
または、コンピュータが、
動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに秘匿化が指定された記述ブロックである秘匿部を関数とみなして行うプロシージャー間解析を実行し、
前記秘匿部が分割可能と判断した場合、前記動作記述を該秘匿部と秘匿部を除く記述である公開部とに分割し、
前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換え、
前記公開部に対応するハードウェアモジュールとのデータの送受信に用いる入出力ポートの定義を含む、前記秘匿部に対応するハードウェアモジュールの動作合成結果であるRTL記述を生成し、
前記公開部に対応するハードウェアモジュールを外部モジュールとして取り扱い、前記秘匿部に対応するハードウェアモジュールの情報で示されるインターフェース及び前記秘匿部の動作記述から動作合成時に考慮すべき情報である秘匿部動作合成指示を満たすようにスケジューリング及びバインディングを行う方法である。
本発明によれば、秘匿する記述を公開することなく、公開された動作記述から動作合成が可能になる。
第1の実施の形態の動作合成装置の一構成例を示すブロック図である。 第1の実施の形態の動作合成装置の処理手順の一例を示すフローチャートである。 秘匿化ブロックが分割可能か否かを判定するための処理手順の一例を示すフローチャートである。 第2の実施の形態の動作合成装置の一構成例を示すブロック図である。 第2の実施の形態の動作合成装置の処理手順の一例を示すフローチャートである。 動作記述の一例を示す模式図である。 図6に示した動作記述に対応する、動作記述分割指示の一例を示す模式図である。 図6に示した動作記述及び図7に示した動作記述分割指示から生成される秘匿部動作記述の一例を示す模式図である。 図6に示した動作記述及び図7に示した動作記述分割指示から生成される公開部動作記述の一例を示す模式図である。 図6に示した動作記述及び図7に示した動作記述分割指示から生成される秘匿部ハードウェアモジュール情報の一例を示す模式図である。 図6に示した動作記述及び図7に示した動作記述分割指示から生成されるテンプレートである秘匿部ハードウェアモジュールRTL記述の一例を示す模式図である。 図6に示した動作記述及び図7に示した動作記述分割指示から生成される公開部ハードウェアモジュールRTL記述の一例を示す模式図である。 図6に示した動作記述及び図7に示した動作記述分割指示から生成されるコントロールフローグラフの一例を示す模式図である。 図6に示した動作記述及び図7に示した動作記述分割指示から生成されるコールグラフの一例を示す模式図である。 第2実施例の動作合成装置で生成される、秘匿部ハードウェアモジュールRTL記述の一例を示す模式図である。
次に本発明について図面を用いて説明する。
(第1の実施の形態)
図1は第1の実施の形態の動作合成装置の一構成例を示すブロック図である。
図1に示すように、第1の実施の形態の動作合成装置は、動作記述をRTL記述へ変換する処理装置100と、変換対象となる動作記述、変換後のRTL記述及び動作記述からRTL記述への変換処理で用いる各種のデータが格納される記憶装置110とを有する構成である。図1に示す動作合成装置は、例えばプログラムにしたがって所要の処理を実行するCPU、記憶装置、各種の論理回路等を含むコンピュータで実現できる。
処理装置100は、動作記述分割手段101、テンプレート生成手段102及び秘匿部考慮スケジューリング/バインディング手段103を備えている。
また、記憶装置110は、動作記述記憶部111、動作記述分割指示記憶部112、秘匿部動作記述記憶部113、公開部動作記述記憶部114、秘匿部ハードウェアモジュール情報記憶部115、秘匿部ハードウェアモジュールRTL記述テンプレート記憶部116、公開部動作合成指示記憶部117及び公開部ハードウェアモジュールRTL記述記憶部118を備えている。
RTL記述への変換対象となる動作記述は、予め動作記述記憶部111に格納されている。動作記述は、Verilog−HDL、VHDL、SystemVerilog等のハードウェア記述言語、あるいはC言語、C++言語、C#言語、SystemC、SpecC、Java(登録商標)、Perl、Scheme、Lisp等のプログラミング言語で表される。また、動作記述には、回路設計用にC言語、C++言語、Java(登録商標)から拡張された言語を用いることもある。動作記述は、動作記述作成者によって準備される。
作成した動作記述のうち、秘匿化する記述ブロック(以下、秘匿化ブロックと称す)は、動作記述分割指示で指定される。動作記述分割指示は、秘匿化ブロックの範囲を指定する情報を含み、予め動作記述分割指示記憶部112に格納される。動作記述分割指示は、例えば動作記述作成者によって準備される。
動作記述分割手段101は、動作記述記憶部111から動作記述を読み出し、動作記述分割指示記憶部112から該動作記述に対応する動作記述分割指示を読み出し、動作記述記憶部111から読み出した動作記述のうち、動作記述分割指示で指定された秘匿化ブロックを関数化する。また、秘匿化ブロックの関数化に用いた関数の定義を秘匿部動作記述として秘匿部動作記述記憶部113に格納する。また、動作記述分割手段101は、動作記述記憶部111から読み出した動作記述のうち、関数化された秘匿化ブロックを、該関数を呼び出すための記述に置き換え、該記述を含む動作記述全体を公開部動作記述として公開部動作記述記憶部114に格納する。さらに、動作記述分割手段101は、秘匿化ブロックの関数化時に解析した該秘匿化ブロックの特徴に基づいて、該秘匿化ブロックの関数内でアクセスする、該関数外で定義される変数、配列、関数の情報を動作記述分割指示に追加し、秘匿部ハードウェアモジュール情報として秘匿部ハードウェアモジュール情報記憶部115に格納する。
テンプレート生成手段102は、秘匿部ハードウェアモジュール情報記憶部115から秘匿部ハードウェアモジュール情報を読み出し、該秘匿部ハードウェアモジュール情報で指定されたインターフェース生成規則にしたがって秘匿部ハードウェアモジュールと公開部ハードウェアモジュール間のインターフェースを決定する。また、テンプレート生成手段102は、インターフェースとして用いる入出力ポート等を示す秘匿部ハードウェアモジュールのRTL記述をテンプレートとして生成し、秘匿部ハードウェアモジュールRTL記述テンプレート記憶部116に格納する。
公開部ハードウェアモジュールは、公開部動作記述から動作合成により生成された、RTL記述で示されるハードウェアモジュールを指す。また、秘匿部ハードウェアモジュールは、上記秘匿部ハードウェアモジュール情報から動作合成により生成された、RTL記述で示されるハードウェアモジュールを指す。
インターフェースは、公開部ハードウェアモジュールと秘匿部ハードウェアモジュール間で制御信号やデータ信号を送受信するのに用いる入出力ポート及びプロトコルを指す。インターフェース生成規則は、動作記述分割指示で指定され、動作合成装置の装置構成に応じて定義される。
インターフェース生成規則としては、公開部ハードウェアモジュールから秘匿部ハードウェアモジュールの実行制御を行うためのインターフェース生成規則、秘匿部ハードウェアモジュールから公開部ハードウェアモジュール内に実現された関数の機能を制御するためのインターフェース生成規則、公開部ハードウェアモジュールと秘匿部ハードウェアモジュール間でデータ転送を行うためのインターフェース生成規則等がある。例えば、公開部ハードウェアモジュールから秘匿部ハードウェアモジュールへ実行制御を移す場合、公開部ハードウェアモジュールが開始制御信号(1ビット)の立ち上げることで通知することを示すプロトコルと、該開始制御信号の送受信に用いる入出力ポートとを定義する。
秘匿部考慮スケジューリング/バインディング手段103は、公開部動作記述記憶部114から公開部動作記述を読み出し、秘匿部ハードウェアモジュール情報記憶部115から秘匿部ハードウェアモジュール情報を読み出し、公開部動作合成指示記憶部117から公開部動作合成指示を読み出し、公開部動作記述に含まれる関数を呼び出すための記述に対して、秘匿部ハードウェアモジュールを内部の論理が定義されないブラックボックス化された外部ハードウェアモジュールとして割り当てるよう、スケジューリング及びバインディングする。また、秘匿部考慮スケジューリング/バインディング手段103は、動作合成結果である、秘匿部ハードウェアモジュールRTL記述テンプレートの入出力ポートとの接続情報を備える公開部ハードウェアモジュールRTL記述を生成し、公開部ハードウェアモジュールRTL記述記憶部118に格納する。
公開部動作合成指示は、公開部動作記述からの動作合成時に考慮すべき情報であり、予め公開部動作合成指示記憶部117に格納される。公開部動作合成指示は、例えば動作記述作成者によって準備される。
次に、図1〜図3を用いて第1の実施の形態の動作合成装置の処理について説明する。
まず、処理装置100は、動作記述分割指示手段101により、動作記述記憶部111から変換対象である動作記述を読み出し、動作記述分割指示記憶部112から該動作記述に対応する動作記述分割指示を読み出し、動作記述分割指示で指定された動作記述中の秘匿化ブロックが分割可能か否かを判定する(図2のステップS1)。
図3に示すように、秘匿化ブロックが分割可能か否かは、動作記述分割指示で定義された秘匿化ブロック毎に以下の3段階の解析を行うことで判定する。
第1段階において、動作記述分割指示手段101は、動作記述の制御フロー解析を行い、秘匿化ブロックの開始点から終了点の間に該秘匿化ブロックの外部を通る実行パスが存在するか否かを確認する(図3のステップS11)。秘匿化ブロックの外部を通る実行パスが存在する場合は、指定された秘匿化ブロックを関数で表現できないため、分割不可と判定する。
第2段階において、動作記述分割指示手段101は、動作記述のポインタ解析及びデータフロー解析を行い、秘匿化ブロック内で参照・代入される該秘匿化ブロック外の変数、配列、外部ポート、並びに該秘匿化ブロック内で呼び出される関数を列挙する(図3のステップS12)。指し先を一意に特定できないポインタが秘匿化ブロック内に存在する場合は秘匿化ブロック内外のインターフェースを決定できないため、分割不可と判定する。
第3段階において、動作記述分割指示手段101は、秘匿化ブロックを関数とみなしてプロシージャー間解析を行い、該関数の再帰呼び出しが存在するか否かを確認する(図3のステップS13)。関数の再帰呼び出しが存在する場合はハードウェアモジュールを実現できないため、分割不可と判定する。
以上の3段階の解析結果でいずれも分割不可と判定されない場合、動作記述分割指示手段101は、解析した秘匿化ブロックが分割可能と判定する。なお、上記制御フロー解析、ポインタ解析、データフロー解析、プロシージャー間解析は、一般的なソフトウェアのコンパイラで用いられるアルゴリズムを用いて実行すればよい。
動作記述分割指示手段101は、秘匿化ブロックの分割が可能と判定すると、該秘匿化ブロックに対する各段階の解析結果を用いて秘匿化ブロック内で参照・代入される変数、配列、外部ポート、並びに該秘匿化ブロックで呼び出される関数の情報を、該秘匿化ブロックに対応する動作記述分割指示に追加し、秘匿部ハードウェアモジュール情報として秘匿部ハードウェアモジュール情報記憶部115に格納する(図2のステップS2)。
次に、動作記述分割指示手段101は、秘匿化ブロックの記述を、該秘匿化ブロック内で参照・代入される変数、配列、外部ポートを引数とする関数の定義またはそれらのポインタを引数とする関数の定義に変換し、秘匿部動作記述として秘匿部動作記述記憶部113に格納する。また、元の動作記述内の秘匿化ブロックの記述を、新たに定義された対応する関数を呼び出すための記述に変換し、公開部動作記述として公開部動作記述記憶部114に格納する(図2のステップS3)。
なお、秘匿化ブロック内で呼び出される、該秘匿化ブロック外で定義される関数が存在する場合、秘匿化ブロック内から該秘匿化ブロック外の関数を呼び出す記述とするか、秘匿化ブロック外の関数の定義を複製して該秘匿化ブロックの動作記述に含めるか、どちらの分割方法を採用するかは、動作記述分割指示で指定される。秘匿化ブロック外の関数の定義を複製して秘匿化ブロックの動作記述に含める場合、複製する関数は秘匿部ハードウェアモジュール内で実現可能であるものとする。
次に、処理装置100は、テンプレート生成手段102により、秘匿部ハードウェアモジュール情報記憶部115から秘匿部ハードウェアモジュール情報を読み込み、秘匿化ブロックに対応する秘匿部ハードウェアモジュールと公開部ハードウェアモジュール間のインターフェースを決定する。
また、テンプレート生成手段102は、決定したインターフェースに基づき、秘匿部ハードウェアモジュールの入出力ポートを定義したRTL記述から成る秘匿部ハードウェアモジュールを生成し、該RTL記述をテンプレートとして秘匿部ハードウェアモジュールRTL記述テンプレート記憶部116に格納する(図2のステップS4)。
最後に、処理装置100は、秘匿部考慮スケジューリング/バインディング手段103により、公開部動作記述記憶部114から公開部動作記述を読み出し、秘匿部ハードウェアモジュール情報記憶部115から秘匿部ハードウェアモジュール情報を読み出し、公開部動作合成指示記憶部117から公開部動作合成指示を読み出し、それらの情報を用いてスケジューリング及びバインディングを行う。秘匿部ハードウェアモジュールの性能、面積、消費電力に関する情報は、動作記述分割指示で指定される。スケジューリングは、公開部動作記述に含まれる、秘匿ブロックに対応する関数の呼び出し処理に置き換えた記述に、対応する秘匿部ハードウェアモジュールを割り当てるように実行する。スケジューリング時に考慮すべき秘匿部ハードウェアモジュールの遅延は、公開部動作合成指示で定義された値を用いる。
秘匿部考慮スケジューリング/バインディング手段103は、動作合成装置の装置構成に応じて定義されるインターフェース生成規則と秘匿部ハードウェアモジュール情報から決定されるインターフェースのプロトコルにしたがってスケジューリング行う。例えば、公開部動作合成指示で秘匿部ハードウェアモジュールの実行レイテンシが固定のクロックサイクル数で定義されている場合、固定のクロックサイクル数で動作する演算器と同様と見なしてスケジューリング行う。また、例えば、秘匿部ハードウェアモジュールの実行レイテンシが固定のクロックサイクル数で定義されておらず、不定である場合は、不定のクロックサイクル数で動作する外部ハードウェアモジュールとみなしてスケジューリングを行う。
また、秘匿部考慮スケジューリング/バインディング手段103は、ブラックボックス化された関数を呼び出すための記述に対して、対応する秘匿部ハードウェアモジュールを割り当てるバインディングを行う。
秘匿部考慮スケジューリング/バインディング手段103は、動作合成装置の装置構成に応じて定義されるインターフェース生成規則と秘匿部ハードウェアモジュール情報から決定されるインターフェースとして用いる入出力ポートに基づき、動作合成結果から秘匿部ハードウェアモジュールRTL回路記述テンプレートの入出力ポートと接続可能な構造を持つ公開部ハードウェアモジュールRTL記述を生成し、公開部ハードウェアモジュールRTL記述記憶部118に格納する。
次に、本実施形態の動作合成装置の効果について説明する。
本実施形態の動作合成装置は、動作記述分割指示手段101により秘匿化が指定された動作記述中の処理ブロック(秘匿化ブロック)を秘匿部動作記述とし、該秘匿化ブロックを除く動作記述を公開部動作記述とし、秘匿部動作記述に対応する秘匿部ハードウェアモジュールのインターフェースを示す秘匿部ハードウェアモジュール情報を生成し、テンプレート生成手段102により秘匿部ハードウェアモジュールのRTL記述のテンプレートを生成し、秘匿部考慮スケジューリング/バインディング手段103により秘匿部ハードウェアモジュール情報を用いて秘匿部ハードウェアモジュールを考慮した動作合成を行い、秘匿部ハードウェアモジュールRTL記述テンプレートと接続可能な公開部ハードウェアモジュールRTL記述を生成する。
したがって、動作記述作成者は、動作記述の一部を元の動作記述から分離して秘匿化することが可能であり、動作合成実行者は、秘匿部動作記述を外部ハードウェアモジュールとみなすことで公開部動作記述を動作合成できる。
また、秘匿する記述の範囲を指定するだけで、指定された動作記述中の処理ブロック(秘匿化ブロック)が関数化され、秘匿化ブロックが対応する関数の呼び出し処理に変換されると共に、該呼び出し処理で呼び出される外部ハードウェアモジュール(秘匿部ハードウェアモジュール)が生成されるため、動作記述作成者は、所望する記述を容易に秘匿化することが可能であり、動作記述を手作業で秘匿する記述と公開する記述とに分割し、秘匿のために記述を変更する必要がない。したがって、作成済みの動作記述に新たなバグ等が混入するおそれがない。
(第2の実施の形態)
次に本発明の第2の実施の形態について説明する。
図4は、第2の実施の形態の動作合成装置の一構成例を示すブロック図である。図5は、第2の実施の形態の動作合成装置の処理手順の一例を示すフローチャートである。
第2の実施の形態の動作合成装置では、公開部動作記述から動作合成した公開部ハードウェアモジュールを外部ハードウェアモジュールとみなして秘匿部動作記述を動作合成し、その後、第1の実施の形態と同様に秘匿部動作記述から動作合成した秘匿部ハードウェアモジュールを外部ハードウェアモジュールとみなして公開部動作記述を動作合成する。
図4に示すように、第2の実施の形態の動作合成装置では、処理装置100に、図1に示したテンプレート生成手段102に代わって、公開部考慮スケジューリング/バインディング手段104を備えている。また、記憶装置110に、秘匿部ハードウェアモジュールRTL記述テンプレート記憶部116に代わって、秘匿部動作合成指示記憶部119及び秘匿部ハードウェアモジュールRTL記述記憶部120を備えている。
秘匿部動作合成指示は、秘匿部動作記述からの動作合成時に考慮すべき情報であり、予め秘匿部動作合成指示記憶部117に格納される。秘匿部動作合成指示は、例えば動作記述作成者によって準備される。
さらに、図5に示すように、第2の実施の形態の動作合成装置は、図2に示したステップS4の処理に代わってステップS6の処理を実行する。
すなわち、ステップS6において、公開部考慮スケジューリング/バインディング手段104は、秘匿部動作記述記憶部113から秘匿部動作記述を読み出し、秘匿部ハードウェアモジュール情報記憶部115から秘匿部ハードウェアモジュール情報を読み出し、秘匿部動作合成指示記憶部119から秘匿部動作合成指示を読み出す。また、公開部考慮スケジューリング/バインディング手段104は、公開部ハードウェアモジュールを外部モジュールとして取り扱い、秘匿部ハードウェアモジュール情報で示されるインターフェース及び秘匿部動作合成指示を満たすようにスケジューリング及びバインディングを行う。さらに、公開部考慮スケジューリング/バインディング手段104は、秘匿部動作記述から動作合成した結果である秘匿部ハードウェアモジュールRTL記述を秘匿部ハードウェアモジュールRTL記述記憶部120に格納する。その他の構成及び処理は第1の実施の形態の動作合成装置と同様であるため、その説明は省略する。
第2の実施の形態の動作合成装置では、公開部考慮スケジューリング/バインディング手段104により、第1の実施の形態で示した秘匿部ハードウェアモジュールRTL記述のテンプレートに含まれる入出力ポートの定義と共に、動作合成された秘匿部ハードウェアモジュールのRTL記述も生成される。
また、第1の実施の形態と同様に、秘匿部考慮スケジューリング/バインディング手段103により、秘匿部ハードウェアモジュール情報を用いて秘匿部ハードウェアモジュールを考慮した動作合成を行い、入出力ポートの定義を含む秘匿部ハードウェアモジュールRTL記述と接続可能な公開部ハードウェアモジュールRTL記述を生成する。
したがって、第2の実施の形態の動作合成装置においても、第1の実施の形態の動作合成装置と同様の効果を得ることができる。
以下、本発明の動作合成装置の実施例について図面を用いて説明する。
(第1実施例)
まず、本発明の動作合成装置の第1実施例について図面を用いて説明する。第1実施例は、上述した第1の実施の形態の動作合成装置に対応している。
図6は動作記述の一例を示す模式図である。
図6に示す動作記述は、C言語で表現され、予め記憶装置110の動作記述記憶部111に格納されている。図6に示す関数func()は、設計対象のハードウェアモジュールのトップモジュールに対応し、図6に示すグローバル変数aは外部入力ポートに対応し、図6に示すグローバル変数xは外部出力ポートに対応する。また、図6では、関数func()のローカルスコープで配列r、変数s、tが宣言されている。
また、図6には、動作合成装置の装置構成に応じて定義される外部ポートを用いて、入力関数inputにより外部からデータを入力し、動作記述にしたがってデータ処理を実行し、出力関数outputにより外部へ処理後のデータを出力することが記載されている。
図7は動作記述分割指示の一例を示す模式図である。
図7に示す動作記述分割指示では、図6に示した動作記述のうち、秘匿化する処理ブロックを定義している。具体的には、図7の3行目に、図6に示した動作記述の7行目から13行目までの処理を秘匿化することが記述されている。
また、図7の4行目から10行目の記述は、秘匿化ブロックに対応するハードウェアモジュールの特徴を定義している。具体的には、図7の4行目は対応するハードウェアモジュールが順序回路であることを示し、図7の5行目は対応するハードウェアモジュールが秘匿化ブロックの処理を固定の2クロックサイクルで実行することを示している。
また、図7の6行目は、対応するハードウェアモジュールの入力ポートから出力ポートまでの内部レジスタを経由しないパスが存在せず、遅延時間が定義されないことを示し、図7の7行目は、対応するハードウェアモジュールの入力ポートから内部レジスタまでの最大遅延時間が5nsであることを示している。
また、図7の8行目は、対応するハードウェアモジュールの内部レジスタから出力ポートまでの最大遅延時間が7nsであることを示し、図7の9行目は、対応するハードウェアモジュールの面積が2,000平方マイクロメートルであることを示している。さらに、図7の10行目は、対応するハードウェアモジュールの消費電力が50μWであることを示している。
図7の11行目から22行目は、秘匿化ブロックの内外でデータの送受信が必要となる、変数、配列、外部ポート、関数に対するインターフェース規則を定義している。
図7の11行目から14行目は、外部入力ポート及び変数に対して直接接続することを指定しており、データ転送に要するレイテンシが0クロックサイクルであることを示している。
図7の15行目から18行目は、配列に対しては、読み込みと書き込み兼用のポートを1系統持ち、データ転送に要するレイテンシが0クロックサイクルであることを示している。
図7の19行目から22行目は、公開部ハードウェアモジュールで実現される関数に対して、秘匿部のハードウェアモジュールからは、1ビットの開始要求信号startと1ビットの終了通知信号endで実行制御を行い、関数subの引数及び戻り値に対応するデータ転送は、直接接続によりレイテンシが0クロックサイクルで実行することを示している。
動作記述分割指示手段101は、図6に示した動作合成記述を動作記述記憶部111から読み出し、図7に示した動作合成分割指示を動作記述分割指示記憶部112から読み出し、図8に示す秘匿部動作記述、図9に示す公開部動作記述及び図10に示す秘匿部ハードウェアモジュール情報を作成する。
テンプレート生成手段102は、図11に示す秘匿部ハードウェアモジュールRTL記述のテンプレートを生成して秘匿部ハードウェアモジュールRTL回路記述テンプレート記憶部116に格納する。
秘匿部考慮スケジューリング/バインディング手段103は、図12に示す公開部ハードウェアモジュールRTL記述を生成し、公開部ハードウェアモジュールRTL回路記述記憶部118に格納する。
動作記述分割指示手段101は、動作記述分割指示で秘匿化が指定された秘匿化ブロックが分割可能か否かを判定する(図2のステップS1)。
動作記述分割指示手段101は、第1段階で、図7に示す動作記述から図13に示すコントロールフローグラフを作成して制御フロー解析を行う(図3のステップS11)。図13に示すコントロールフローグラフでは、破線で囲まれた処理が秘匿化ブロックに相当する。図13に示す例では、破線で囲まれた秘匿化ブロック(black box1)内から該秘匿化ブロックの外部を通って該秘匿化ブロック内に至る実行パスが存在しないため、動作記述分割指示手段101は、第1段階では秘匿化ブロックが分割可能と判定する。
動作記述分割指示手段101は、第2段階で、ポインタ解析及びデータフロー解析を行う(図3のステップS12)。図7に示した動作記述ではポインタが存在しないため、動作記述分割指示手段101は、第2段階では秘匿化ブロックが分割可能と判定する。
動作記述分割指示手段101は、第3段階で、図14に示すコールグラフを作成してプロシージャー間解析を行う(図3のステップS13)。秘匿化ブロックは独立した関数とみなせるため、図14に示す例では、関数func1がブロックblack_box1を呼び出すことを示し、関数subがブロックblack_box1から呼び出されることを示している。図14に示すコールグラフでは閉路が存在しないため、動作記述分割指示手段101は、第3段階では秘匿化ブロックが分割可能と判定する。
次に、動作記述分割指示手段101は、上記第1段階〜第3段階の解析結果に基づいて、秘匿化ブロック内で利用され、該秘匿化ブロック外で定義される変数、配列、外部ポート、関数の情報を動作記述分割指示に追加し、秘匿部ハードウェアモジュール情報として秘匿部ハードウェアモジュール情報記憶部115に格納する(図2のステップS2)。
図10は、図7に示した動作記述と図8に示した動作記述分割指示から生成された秘匿部ハードウェアモジュール情報の一例を示している。
図10では、秘匿化ブロック内で読み込まれる対象として外部ポートaが示され、秘匿化ブロックで書き込みが行われる対象として変数tが示され、秘匿化ブロックで読み書きが行われる対象として配列rが示され、秘匿化ブロックで呼び出しが行われる対象として関数subが示されている。変数sは、秘匿化ブロック内で読み書きされる変数であるが、データフロー解析により変数のライフタイムが秘匿化ブロックの範囲に収まることが分かるため、秘匿化ブロック内の変数とみなして列挙されない。
次に、動作記述分割指示手段101は、秘匿化ブロックの記述を、該秘匿化ブロック内で参照・代入される変数、配列、外部ポートを引数とする関数の定義に変換し、秘匿部動作記述として秘匿部動作記述記憶部113に格納する。また、元の動作記述のうち、秘匿化ブロックを新たに定義された対応する関数の呼び出し記述に変換し、公開部動作記述として公開部動作記述記憶部114に格納する(図2のステップS3)。
図8は、秘匿部動作記述の一例を示す模式図である。
動作記述分割指示手段101は、秘匿化ブロックを内部処理とする関数black_box1を定義する記述を生成する。また、秘匿化ブロックで公開部の外部ポートa、配列r、変数tにアクセスするために、対応する関数の引数が定義される。
図9は、公開部動作記述の一例を示す模式図である。
図9に示す公開部動作記述では、元の動作記述のうち、秘匿化ブロックが関数black_box1の呼び出し記述に変換されている。
次に、処理装置100は、テンプレート生成手段102により、秘匿部ハードウェアモジュールで用いる入出力ポートを定義したRTL記述のテンプレートを生成する(図2のステップS5)。
図11は、図10に示す秘匿部ハードウェアモジュール情報から生成されたVerilog−HDLによるRTL記述のテンプレートの一例を示している。
RTL記述のテンプレートでは、動作合成装置の装置構成に依存して定義されるインターフェース生成規則に基づいて、必要な入出力ポートが定義される。
図11に示すclockはクロックを入力するポートに対応し、resetはリセット信号を入力するポートに対応する。また、図11に示すstartは公開部ハードウェアモジュールから秘匿部ハードウェアモジュールに対して実行を要求する制御信号に対応し、readyは秘匿部ハードウェアモジュールが公開部ハードウェアモジュールに対して状態を通知する制御信号に対応する。
また、図11に示すaは、公開部ハードウェアモジュールに接続される外部ポートaのデータ転送に対応し、r_rd及びr_wdは秘匿部ハードウェアモジュール内で保持される配列rに対応するリソースに対して読み込み及び書き込みのデータ転送に対応する。
また、図11に示すr_addrは、配列rに対応するリソースに対してアクセスするインデックスのデータ転送に対応し、r_oe及びr_weは、同様に配列rに対応するリソースに対するアクセスにおいて、読み出し要求及び書き込み要求を通知する制御信号に対応する。
また、図11に示すtは、公開部ハードウェアモジュール内で保持される変数tに対応するデータを出力するデータ転送に対応し、sub_start及びsub_endは、公開部ハードウェアモジュール内で実現される関数subの実行制御信号に対応する。
また、図11に示すsub_n及びsub_regは、関数subの実行時の引数及び戻り値に対応するデータ転送に対応する。
動作記述作成者は、生成したテンプレート及び動作合成装置の装置構成に応じて定義されるプロトコルに合わせて秘匿部ハードウェアモジュールを設計する。
最後に、秘匿部考慮スケジューリング/バインディング手段103は、公開部の動作合成結果をRTL回路記述として生成する(図2のステップS5)。図12は、生成されたVerilog−HDLによる公開部ハードウェアモジュールRTL記述の一部を例示している。公開部ハードウェアモジュールRTL記述は、秘匿部ハードウェアモジュールRTL記述と接続可能な構造を備えており、図12に示す例では、秘匿部ハードウェアモジュールRTL回述が下位階層のサブモジュールとしてインスタンス化されて接続されている。
(第2実施例)
次に第2実施例について図面を用いて説明する。
第2実施例は、第2の実施の形態の動作合成装置に対応する。第2実施例の動作合成装置では、動作記述分割指示手段101は、図6に示した動作合成記述を動作記述記憶部111から読み出し、図7に示した動作記述分割指示を動作記述記憶部112から読み出し、動作記述分割指示に基づいて図8に示した秘匿部動作記述、図9に示した公開部動作記述及び図10に示した秘匿部ハードウェアモジュール情報を作成する。
公開部考慮スケジューリング/バインディング手段104は、秘匿部動作記述、秘匿部ハードウェアモジュール情報及び秘匿部動作合成指示に基づいて、図15に示す秘匿部ハードウェアモジュールRTL記述を生成し、秘匿部ハードウェアモジュールRTL記述記憶部120に格納する(図5のステップS6)。
図15に示すように、公開部考慮スケジューリング/バインディング手段104で生成する秘匿部ハードウェアモジュールRTL記述には、第1実施例で示した秘匿部ハードウェアモジュールRTL記述のテンプレートと同様に入出力ポートの定義(図11参照)が含まれ、さらに動作合成された秘匿部ハードウェアモジュールのRTL記述が含まれる。
100 処理装置
101 動作記述分割手段
102 テンプレート生成手段
103 秘匿部考慮スケジューリング/バインディング手段
104 公開部考慮スケジューリング/バインディング手段
110 記憶装置
111 動作記述記憶部
112 動作記述分割指示記憶部
113 秘匿部動作記述記憶部
114 公開部動作記述記憶部
115 秘匿部ハードウェアモジュール情報記憶部
116 秘匿部ハードウェアモジュールRTL記述テンプレート記憶部
117 公開部動作合成指示記憶部
118 公開部ハードウェアモジュールRTL記述記憶部
119 秘匿部動作合成指示記憶部
120 秘匿部ハードウェアモジュールRTL記述記憶部

Claims (8)

  1. 動作記述を、秘匿化が指定された記述ブロックである秘匿部と前記秘匿部を除く記述である公開部とに分割し、前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換える動作記述分割手段と、
    前記関数化された秘匿部に代わって置き換えられた処理に、前記秘匿部に対応するハードウェアモジュールを割り当てる秘匿部考慮スケジューリング/バインディング手段と、
    を有し、
    前記動作記述分割手段は、
    前記動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに前記秘匿部を関数とみなして行うプロシージャー間解析を実行し、前記秘匿部が分割可能と判断した場合に該秘匿部を分割し、
    前記秘匿部考慮スケジューリング/バインディング手段は、
    予め定義されるインターフェース生成規則と前記秘匿部に対応するハードウェアモジュールから決定されるインターフェースのプロトコルにしたがってスケジューリング行う動作合成装置。
  2. 前記秘匿部に対応するハードウェアモジュールで用いる入出力ポートを定義したRTL記述を、前記秘匿部のテンプレートとして生成するテンプレート生成手段を有する請求項1記載の動作合成装置。
  3. 動作記述を、秘匿化が指定された記述ブロックである秘匿部と前記秘匿部を除く記述である公開部とに分割し、前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換える動作記述分割手段と、
    前記公開部に対応するハードウェアモジュールとのデータの送受信に用いる入出力ポートの定義を含む、前記秘匿部に対応するハードウェアモジュールの動作合成結果であるRTL記述を生成する公開部考慮スケジューリング/バインディング手段と、
    を有し、
    前記動作記述分割手段は、
    前記動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに前記秘匿部を関数とみなして行うプロシージャー間解析を実行し、前記秘匿部が分割可能と判断した場合に該秘匿部を分割し、
    前記公開部考慮スケジューリング/バインディング手段は、
    前記公開部に対応するハードウェアモジュールを外部モジュールとして取り扱い、前記秘匿部に対応するハードウェアモジュールの情報で示されるインターフェース及び前記秘匿部の動作記述から動作合成時に考慮すべき情報である秘匿部動作合成指示を満たすようにスケジューリング及びバインディングを行う動作合成装置。
  4. 前記関数化された秘匿部に代わって置き換えられた処理に、前記秘匿部に対応するハードウェアモジュールを割り当てる秘匿部考慮スケジューリング/バインディング手段を有する請求項3記載の動作合成装置。
  5. コンピュータが、
    動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに秘匿化が指定された記述ブロックである秘匿部を関数とみなして行うプロシージャー間解析を実行し、
    前記秘匿部が分割可能と判断した場合、前記動作記述を該秘匿部と秘匿部を除く記述である公開部とに分割し、
    前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換え、
    前記関数化された秘匿部に代わって置き換えられた処理に、前記秘匿部に対応するハードウェアモジュールを割り当て
    予め定義されるインターフェース生成規則と前記秘匿部に対応するハードウェアモジュールから決定されるインターフェースのプロトコルにしたがってスケジューリング行う動作合成方法。
  6. 前記コンピュータが、
    前記秘匿部に対応するハードウェアモジュールで用いる入出力ポートを定義したRTL記述を、前記秘匿部のテンプレートとして生成する請求項5記載の動作合成方法。
  7. コンピュータが、
    動作記述の制御フロー解析、前記動作記述のポインタ解析及びデータフロー解析、並びに秘匿化が指定された記述ブロックである秘匿部を関数とみなして行うプロシージャー間解析を実行し、
    前記秘匿部が分割可能と判断した場合、前記動作記述を該秘匿部と秘匿部を除く記述である公開部とに分割し、
    前記秘匿部の記述を関数化すると共に該関数を呼び出す処理の記述に置き換え、
    前記公開部に対応するハードウェアモジュールとのデータの送受信に用いる入出力ポートの定義を含む、前記秘匿部に対応するハードウェアモジュールの動作合成結果であるRTL記述を生成し、
    前記公開部に対応するハードウェアモジュールを外部モジュールとして取り扱い、前記秘匿部に対応するハードウェアモジュールの情報で示されるインターフェース及び前記秘匿部の動作記述から動作合成時に考慮すべき情報である秘匿部動作合成指示を満たすようにスケジューリング及びバインディングを行う動作合成方法。
  8. 前記コンピュータが、
    前記関数化された秘匿部に代わって置き換えられた処理に、前記秘匿部に対応するハードウェアモジュールを割り当てる請求項7記載の動作合成方法。
JP2009288871A 2009-12-21 2009-12-21 動作合成装置及び方法 Active JP5471413B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009288871A JP5471413B2 (ja) 2009-12-21 2009-12-21 動作合成装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009288871A JP5471413B2 (ja) 2009-12-21 2009-12-21 動作合成装置及び方法

Publications (2)

Publication Number Publication Date
JP2011129020A JP2011129020A (ja) 2011-06-30
JP5471413B2 true JP5471413B2 (ja) 2014-04-16

Family

ID=44291522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009288871A Active JP5471413B2 (ja) 2009-12-21 2009-12-21 動作合成装置及び方法

Country Status (1)

Country Link
JP (1) JP5471413B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5803537B2 (ja) * 2011-10-06 2015-11-04 大日本印刷株式会社 データ処理システム及び微細構造物製造システム、並びにデータ処理方法及び微細構造物製造方法
JP6255880B2 (ja) * 2013-10-10 2018-01-10 株式会社ソシオネクスト 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム
JP2016177454A (ja) * 2015-03-19 2016-10-06 富士通株式会社 動作合成方法、動作合成プログラムおよび動作合成装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963454A (en) * 1996-09-25 1999-10-05 Vlsi Technology, Inc. Method and apparatus for efficiently implementing complex function blocks in integrated circuit designs
JP2001222567A (ja) * 2000-02-10 2001-08-17 Nec Corp Wwwを用いたipマクロ供給システム及び方法並びに記録媒体
JP2001344298A (ja) * 2000-06-01 2001-12-14 Toshiba Corp システム設計装置、システム設計方法およびシステム設計プログラムを格納したコンピュータ読取り可能な記録媒体
JP2002163312A (ja) * 2000-11-27 2002-06-07 Sony Corp ハードウェア設計情報変換装置及びその変換方法
GB2371640B (en) * 2001-01-26 2004-09-01 Advanced Risc Mach Ltd Validating integrated circuits
JP2005063121A (ja) * 2003-08-11 2005-03-10 Ricoh Co Ltd ソースコード変換装置、及びソースコード変換方法、ソースコード変換プログラム、記憶媒体
JP2005063136A (ja) * 2003-08-12 2005-03-10 Toshiba Corp 半導体集積回路の設計装置、設計方法、及び設計プログラム
JP2006190119A (ja) * 2005-01-07 2006-07-20 Hitachi Industrial Equipment Systems Co Ltd プログラマブルコントローラ
JP2007164596A (ja) * 2005-12-15 2007-06-28 Toshiba Corp 設計システムおよび設計方法

Also Published As

Publication number Publication date
JP2011129020A (ja) 2011-06-30

Similar Documents

Publication Publication Date Title
US20210081258A1 (en) Synthesis Path For Transforming Concurrent Programs Into Hardware Deployable on FPGA-Based Cloud Infrastructures
So et al. A unified hardware/software runtime environment for FPGA-based reconfigurable computers using BORPH
JP2007193529A (ja) 半導体集積回路の高位合成方法
JP5225003B2 (ja) メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体
US7165229B1 (en) Generating optimized and secure IP cores
EP1899877A2 (en) Method for specifying stateful, transaction-oriented systems and apparatus for flexible mapping to structurally configurable in-memory processing semiconductor device
JP4492803B2 (ja) 動作合成装置及びプログラム
KR20100008703A (ko) 메모리 인터페이스를 사용한 SoC 디바이스 검증 모델
JP2006048525A (ja) シミュレーション方法
JP5471413B2 (ja) 動作合成装置及び方法
JP2008186252A (ja) テストベンチ生成機能を有する動作合成装置と方法及びプログラム
US20090249262A1 (en) Behavioral synthesis device, behavioral synthesis method, and computer program product
JP2003196333A (ja) システムlsiの設計方法及びこれを記憶した記録媒体
US7574679B1 (en) Generating cores using secure scripts
JP2007310565A (ja) システムlsi検証装置及びシステムlsi検証プログラム
JP5233355B2 (ja) プロパティ生成システムおよびプロパティ検証システム
Balarin et al. Processes, interfaces and platforms. Embedded software modeling in Metropolis
Bucaioni et al. From low-level programming to full-fledged industrial model-based development: the story of the Rubus Component Model
Schirner et al. System-level development of embedded software
JP2007011957A (ja) 回路設計装置およびプログラム
JP5577619B2 (ja) 論理回路設計装置
JP2012083901A (ja) 構成情報管理装置、その方法及びそのプログラム並びに動作合成装置
JP2006202330A (ja) システムlsiの設計方法及びこれを記憶した記録媒体
JP2008204341A (ja) インタフェース合成装置
JP2007172546A (ja) 動作合成システム、動作合成方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130806

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140120

R150 Certificate of patent or registration of utility model

Ref document number: 5471413

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150