JP5568566B2 - 高水準言語コードをhdlコードに変換する方法及びシステム - Google Patents
高水準言語コードをhdlコードに変換する方法及びシステム Download PDFInfo
- Publication number
- JP5568566B2 JP5568566B2 JP2011537361A JP2011537361A JP5568566B2 JP 5568566 B2 JP5568566 B2 JP 5568566B2 JP 2011537361 A JP2011537361 A JP 2011537361A JP 2011537361 A JP2011537361 A JP 2011537361A JP 5568566 B2 JP5568566 B2 JP 5568566B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- hdl
- hardware
- main core
- level language
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
Claims (43)
- (1)高水準言語コードの変換対象部分(translation-targeted section)をプログラミングディレクティブ(programming directive)を用いて表示する段階;
(2)前記高水準言語コードを前記変換対象部分をサブルーチンとして含むハードウェア部分コード及び前記高水準言語コードの残り部分と前記変換対象部分が前記サブルーチンを呼び出すためのラッパー(wrapper)に振り替えられた部分を含むソフトウェア部分コードに分割(partition)する段階;
(3)前記ソフトウェア部分コード及びハードウェア部分コードをメインコンパイラによって前記メインコンパイラのターゲットアセンブリコード生成の直前段階の低水準IR(Intermediate Representation)コードにコンパイルし、前記ハードウェア部分コードに対応する前記低水準IRコードをHLL-to-HDL(High-level language code to hardware description language)変換機によってHDLコードに変換し、前記ソフトウェア部分コードに対応する前記低水準IRコードを実行できるコードにコンパイルする段階;及び
(4)前記ソフトウェア部分コードは、メインコアで実行されて、前記HDLコードは、専用ハードウェアで実行される段階とを含む高水準言語コードのHDLコードへの変換方法。 - 前記(2)段階の前記ハードウェア部分コードは、前記高水準言語コードの一つ以上のサブルーチン(subroutine)/関数(function)を含み、前記ソフトウェア部分コードは、前記ハードウェア部分コードへのサブルーチン/関数呼び出し(call)ステートメント(statement)または呼び出し命令を含むことを特徴とする請求項1記載の高水準言語コードのHDLコードへの変換方法。
- 前記(3)段階は:
前記ソフトウェア部分コード及びハードウェア部分コードを前記メインコンパイラによって実行できるコードにコンパイルする段階;
前記メインコンパイラのリンカ(linker)によって一定のデータオフセット(constant data offset)を含むリンキング(linking)ログファイルを生成する段階;
前記メインコンパイラによって実行できるソフトウェアコードの全てのソフトウェア関数及び変数の住所を含むシンボルテーブル(symbol table)を生成する段階;及び
前記HLL-to-HDL変換機によって前記リンキングログファイル及びシンボルテーブルを参照して、前記ハードウェア部分コードのHDLコードを生成する段階を含むことを特徴とする請求項1に記載の高水準言語コードのHDLコードへの変換方法。 - 前記HLL-to-HDL変換機は、前記ソフトウェア部分コードに定義されたソフトウェアの関数及び変数のアドレスレゾリューション(resolution)のために、前記リンキングログファイル及びシンボルテーブルを活用し、前記ハードウェア部分コードのストリングコンスタン(String constant)のアドレスレゾリューション(address resolution)のために、前記リンキングログファイル及びシンボルテーブルを活用することを特徴とする請求項3に記載の高水準言語コードのHDLコードへの変換方法。
- 前記高水準言語コードのサブルーチン(subroutine)/関数(function)から生成された前記HDLコードは:
ターゲットアセンブリコード生成と同一方式で前記低水準IRコードからHDLにマッピング(mapping)して生成されるデータパス(datapath);及び
前記データパスを制御する制御ユニット(control unit)を含み、
前記制御ユニット(control unit)は前記低水準IRコードの複数のベーシックブロック(basic blocks)の間のコントロールフロー情報(control flow information)に基づいて、前記HLL-to-HDL(High-level language code to hardware description language)変換機のHDLコード生成器(HDL code generator)によって生成されることを特徴とする請求項1に記載の高水準言語コードのHDLコードへの変換方法。 - 前記高水準言語コードのサブルーチン/関数のHDLへの変換方法は、
生成された前記HDLコードが一つ以上のブロックモジュールを前記データパスとして含み、トップモジュールを前記制御ユニットとして含むbasic-block-by-basic-block生成方法または、
生成された前記HDLコードが前記データパス及び前記制御ユニットを全て含む一つのモジュールを含むfunction-by-function生成方法の中でいずれか一つであることを特徴とする請求項5に記載の高水準言語コードのHDLコードへの変換方法。 - 前記basic-block-by-basic-block生成方法の前記一つ以上のブロックモジュールは、前記低水準IRコードのベーシックブロック(basic blocks)と同一の機能を遂行し、
前記トップモジュールは、前記一つ以上のブロックモジュールのインスタンス(instances)を生成し、前記一つ以上のブロックモジュールを活性化(enabling)/非活性化(disabling)によって実行順序を定めることを特徴とする請求項6に記載の高水準言語コードのHDLコードへの変換方法。 - 前記basic-block-by-basic-block生成方法の前記ブロックモジュール及び前記トップモジュールは、有限状態機械(Finite State Machine)の形態であって、一つのブロックモジュールは、前記低水準IRコードのベーシックブロック内部の連続的(consecutive)低水準IRインストラクション(instructions)の一つのシーケンスを遂行する有限状態機械のステート(state)セット(set)であって、
有限状態機械のステートは、前記低水準IRインストラクションの遅延推定値(delay estimation)及びdata/control依存性に基づいたことを特徴とする請求項6に記載の高水準言語コードのHDLコードへの変換方法。 - 前記basic-block-by-basic-block生成方法の前記トップモジュールは、前記一つ以上のブロックモジュールの中の一つまたはその以上のブロックモジュールが動作できるようにすることが可能であって、前記ブロックモジュールの中の一つまたはその以上のブロックモジュールに入力を割り当てて作動させた後、作動された前記一つまたはその以上のブロックモジュールの動作が終わるまで待ち、作動された前記一つまたはその以上のブロックモジュールは、割り当てられた入力をもって自分のコードを実行し、自分のレジスタセットまたは他のブロックモジュールと共有するレジスタセットに出力を保存(buffer)した後、前記トップモジュールに制御フロー出力(Control Flow Outcome)と一緒にレジスタセットに保存された前記出力を提供(return)し、前記トップモジュールは、前記制御フロー出力に基づき、前記一つ以上のブロックモジュールの中で次に実行されるブロックモジュールを決定することを特徴とする請求項6に記載の高水準言語コードのHDLコードへの変換方法。
- 前記function-by-function生成方法の前記データパス及びハードウェア関数の制御ユニットは、一つのHDLモジュールに含まれ、一つの有限状態機械から構成(implement)され、
前記データパスは、前記有限状態機械の出力信号(output signals)を生成し、前記制御ユニットは、前記有限状態機械のステート変化(transition)を制御し、
前記データパスは、高水準言語のサブルーチン/関数における全てのベーシックブロックから生成され、前記高水準言語コードのサブルーチン/関数のベーシックブロックの低水準IRインストラクションから生成された有限状態機械の一つのセットであって、
有限状態機械のステートは、前記低水準IRインストラクションの遅延推定値(delay estimation)及びdata/control依存性に基づくことを特徴とする請求項6に記載の高水準言語コードのHDLコードへの変換方法。 - 前記function-by-function生成方法の前記制御ユニットは、高水準言語コードのサブルーチン/関数の制御フロー情報(control flow information)に基づき、前記有限状態機械のステートを変化させることによって、前記データパスを制御することを特徴とする請求項10に記載の高水準言語コードのHDLコードへの変換方法。
- 前記(3)段階の前記高水準言語コードから生成された前記HDLコードは、前記コンパイルされたソフトウェア部分コードとスタック(stack)を含むメモリ領域を共有して前記メインコアのソフトウェアスタックレイアウトに従い、
共有する前記メモリ領域は、スピルドバリュー(spilled value)の保存、レジスタファイル及びリターンアドレスの保存、前記ハードウェア部分コードとコンパイルされた前記ソフトウェア部分コードの間の関数アーギュメント(argument)の伝達に使われることを特徴とする請求項2に記載の高水準言語コードのHDLコードへの変換方法。 - 前記(4)段階の専用ハードウェアは、前記高水準言語コードのサブルーチン/関数から各々生成され:
前記HLL-to-HDL変換機によってHWID(Hardware identification number、ハードウェア識別番号)が付与されたHWIP(Hardware Intellectual Properties)セット;及び
前記HWIPを制御するハードウェアコントローラ(hardware controller)を含み、
前記HWIDは、前記ソフトウェア部分コードと前記ハードウェア部分コードのシンボルテーブルに記述されたターゲットアドレスまたは前記ターゲットアドレスから再計算された固有番号であることを特徴とする請求項1に記載の高水準言語コードのHDLコードへの変換方法。 - 前記ハードウェアコントローラは、前記HWIPと前記メインコアとの間にアーギュメント(arguments)を伝達することによって、前記HWIPを制御し、前記HWIPと前記メインコアとの間の呼び出し制御信号(calling control signals)を通じて前記HWIPとメインコアの実行順序を制御し、
前記ハードウェアコントローラは、前記HWIPと前記メインコアで実行されるソフトウェアとの間の呼び出しシーケンスによって一つ以上のHWIPまたはメインコアを活性化させ、
前記メインコアが前記ハードウェアコントローラとして使えられることを特徴とする請求項13に記載の高水準言語コードのHDLコードへの変換方法。 - 前記(4)段階の前記メインコアと前記専用ハードウェアとの間の通信インターフェースは、
前記メインコアと前記専用ハードウェアが緩く(loosely)連結(coupled)され、前記専用ハードウェアが前記メインコアとインタラプティング(interrupting)によって通信する疎結合(loose coupling)、または、
前記メインコアと前記専用ハードウェアが固く(tightly)連結され、前記専用ハードウェアと前記メインコアが制御信号を互いに直接取り交わすことのできる密結合(tight coupling)であることを特徴とする請求項1に記載の高水準言語コードのHDLコードへの変換方法。 - 前記(4)段階は:
コンパイルされた前記ソフトウェア部分コードを前記メインコアで実行する段階;
コンパイルされた前記ソフトウェア部分コードが実行される間に一つ以上の前記HWIPの実行が必要である場合、前記メインコアによって前記専用ハードウェアの前記ハードウェアコントローラを活性化させ、呼び出しデータを伝送する段階;
前記専用ハードウェアの前記ハードウェアコントローラによって対象となる一つ以上の前記HWIPを活性化させて呼び出しデータを伝送する段階;
活性化された前記HWIPのコードを実行し、実行結果をメモリとシステムレジスタとに保存し、活性化された前記一つ以上のHWIPの実行終了を前記ハードウェアコントローラに通知する段階;
前記ハードウェアコントローラによって活性化された前記一つ以上のHWIPの実行終了を前記メインコアに通知する段階;及び
前記メインコアによって前記メモリとシステムレジスタとに保存された実行結果をもって前記コンパイルされたソフトウェア部分コードを引き続き実行する段階を含むことを特徴とする請求項13に記載の高水準言語コードのHDLコードへの変換方法。 - 前記メインコアから前記専用ハードウェアに伝送される前記呼び出しデータは:
スタックポインタ、リンクレジスタ、アーギュメントレジスタ及び前記メインコアに依存する他のレジスタを含むシステムレジスタ;及び
対象となる一つ以上の前記HWIPのHWID及び活性信号(enable signal)を含む制御信号を含むことを特徴とする請求項16に記載の高水準言語コードのHDLコードへの変換方法。 - 対象となる一つ以上の前記HWIPのアーギュメントは、前記メインコアからシステムレジスタのアーギュメント及び前記HDLコードとコンパイルされた前記ソフトウェア部分コードとの間に共有するスタックスペースを用いて伝送されることを特徴とする請求項16に記載の高水準言語コードのHDLコードへの変換方法。
- 前記(4)段階の前記メインコアは、
前記メインコアと前記専用ハードウェアとが密結合(tight coupling)である場合には、前記メインコアのISA(Instruction Set Architecture)の専用インストラクションを用いて前記専用ハードウェアと通信したり、制御信号を伝送し、
前記メインコアと前記専用ハードウェアとが疎結合(loose coupling)である場合には、通信機能を遂行するAPI関数媒介体を呼び出す(calling)ことによって、前記専用ハードウェアと通信したり、制御信号を伝送することを特徴とする請求項1に記載の高水準言語コードのHDLコードへの変換方法。 - 前記メインコアと前記専用ハードウェアとが疎結合である場合、前記ハードウェアコントローラを活性化する場合、前記メインコアは、自分のレジスタ値でハードウェアのレジスタをアップデートすることを特徴とする請求項16に記載の高水準言語コードのHDLコードへの変換方法。
- 前記ハードウェアコントローラによって前記専用ハードウェアのHWIPセットの中のいずれか一つが活性化される場合、活性化された前記HWIPは、
前記メインコアと前記専用ハードウェアとが密結合である場合には、前記メインコアからデータを直接読み込み、
前記メインコアと前記専用ハードウェアとが疎結合である場合には、前記ハードウェアコントローラのレジスタ値を読み込むことを特徴とする請求項16に記載の高水準言語コードのHDLコードへの変換方法。 - 前記専用ハードウェアの前記ハードウェアコントローラは、活性化された前記HWIPの実行完了において、
前記メインコアと前記専用ハードウェアとが疎結合である場合には、前記メインコアをインタラプティング(interrupting)することによって前記メインコアに通知し、
前記メインコアと前記専用ハードウェアとが密結合である場合には、制御信号を前記メインコアに伝送することによって、前記メインコアに通知することを特徴とする請求項16に記載の高水準言語コードのHDLコードへの変換方法。 - 前記専用ハードウェアの前記HWIPは、前記メインコアで実行中のコンパイルされた前記ソフトウェア部分コードへのクロスコール(cross call)を遂行することが可能であって、
前記クロスコール遂行は:
前記HWIPによって前記ハードウェアコントローラにコンパイルされた前記ソフトウェアを呼び出す(call)必要があることを知らせるための呼び出しデータ(calling data)を準備し、制御信号(control signal)を伝送する段階;
前記ハードウェアコントローラによって前記メインコアに前記クロスコールについて通知する段階;
前記メインコアによって前記呼び出しデータを前記メインコアのレジスタにコピーし、 呼び出された前記コンパイルされたソフトウェア部分コードのコードを実行し、呼び出された前記コンパイルされたソフトウェア部分コードの実行が完了される場合、これを前記ハードウェアコントローラに通知する段階;
前記ハードウェアコントローラによって呼び出された前記コンパイルされたソフトウェア部分コードの実行完了について、呼び出した前記HWIPに通知する段階;及び
前記HWIPによって呼び出された前記コンパイルされたソフトウェア部分コードの実行結果をもって自分のコードを引き続き実行する段階を含むことを特徴とする請求項16に記載の高水準言語コードのHDLコードへの変換方法。 - 前記HWIPから前記制御信号(control signal)を受信する場合、前記ハードウェアコントローラは、
前記メインコアと前記ハードウェアコントローラとが疎結合である場合には、前記メインコアをインタラプティング(interrupting)することによって、前記クロスコールについて前記メインコアに通知し、
前記メインコアと前記ハードウェアコントローラとが密結合の場合には、前記制御信号を前記メインコアに直接伝送することによって、前記クロスコールについて前記メインコアに通知することを特徴とする請求項23に記載の高水準言語コードのHDLコードへの変換方法。 - 呼び出された前記コンパイルされたソフトウェア部分コードの実行が完了されると、
前記メインコアと前記ハードウェアコントローラとが疎結合である場合には、前記メインコアは、前記ハードウェアコントローラのシステムレジスタ値で自分のレジスタをアップデートし、前記ソフトウェア部分コードのリターン値及びリターンアドレスを前記ハードウェアコントローラのレジスタに記入(write)し、
前記メインコアと前記ハードウェアコントローラとが密結合である場合には、前記メインコアは、呼び出す前記HWIPから入力値を直接読み込むことを特徴とする請求項23に記載の高水準言語コードのHDLコードへの変換方法。 - 前記メインコアと前記ハードウェアコントローラとが疎結合である場合には、前記HWIPは、呼び出された前記コンパイルされたソフトウェア部分コードのリターンデータ及びリターンアドレスを前記ハードウェアコントローラのシステムレジスタから読み込み、
前記メインコアと前記ハードウェアコントローラとが密結合である場合には、前記HWIPは、前記コンパイルされたソフトウェア部分コードのリターンデータ及びリターンアドレスを前記メインコアのレジスタ値から直接読み込むことを特徴とする請求項23に記載の高水準言語コードのHDLコードへの変換方法。 - 前記専用ハードウェアのいずれか一つの前記HWIPは、他のHWIPまたは自分自身への呼び出し(call)が遂行可能であって、
前記呼び出しは:
前記いずれか一つのHWIPによって前記ハードウェアコントローラに呼び出す(call)必要があることを知らせるための呼び出しデータ(calling data)を準備し、制御信号(control signal)を伝送する段階;
前記ハードウェアコントローラによって呼び出しアドレスを検査(examining)し、前記他のHWIPまたは前記いずれか一つのHWIPを活性化する段階;
前記他のHWIPまたは前記いずれか一つのHWIPによって自分のレジスタに前記呼び出しデータ(calling data)をコピーし、自分のコードを実行し、実行完了の時、これを前記ハードウェアコントローラに通知する段階;
前記ハードウェアコントローラによって呼び出された前記他のHWIPまたは前記いずれか一つのHWIPの実行完了について前記いずれか一つのHWIPに通知する段階;及び
前記いずれか一つのHWIPによって呼び出された前記他のHWIPまたは前記いずれか一つのHWIPの実行結果をもって自分のコードを引き続き実行する段階を含むことを特徴とする請求項16に記載の高水準言語コードのHDLコードへの変換方法。 - 前記呼び出しデータは:
スタックポインタ、リンクレジスタ、アーギュメントレジスタ、リターンレジスタを含むシステムレジスタ;及び
呼び出しの対象の前記他のHWIPまたは自分自身のアドレス及び活性信号(enable signal)を含む制御信号を含み、
前記メインコアと前記ハードウェアコントローラとが疎結合されていて、全ての前記HWIPが前記ハードウェアコントローラの内部のシステムレジスタセットを共有する場合には、呼び出しの対象の前記他のHWIPまたは前記いずれか一つのHWIPを呼び出す前に、前記いずれか一つのHWIPによって前記呼び出しデータで前記ハードウェアコントローラの内部の共有する前記システムレジスタをアップデートすることを特徴とする請求項27に記載の高水準言語コードのHDLコードへの変換方法。 - 前記他のHWIPのアーギュメントは、アーギュメントレジスタ及び前記複数のHWIPらの間に共有するスタックスペースを通じて前記いずれか一つのレジスタから伝送されることを特徴とする請求項27に記載の高水準言語コードのHDLコードへの変換方法。
- 前記メインコアと前記ハードウェアコントローラとが疎結合である場合には、前記他のHWIPは活性化された場合、前記ハードウェアコントローラの内部のシステムレジスタで自分のレジスタをアップデートし、
前記メインコアと前記ハードウェアコントローラとが密結合である場合には、前記他のHWIPは活性化された場合、前記いずれか一つのHWIPのレジスタ値を直接読み込むことを特徴とする請求項27に記載の高水準言語コードのHDLコードへの変換方法。 - 前記メインコアと前記ハードウェアコントローラとが疎結合されていて、全ての前記HWIPが前記ハードウェアコントローラの内部のシステムレジスタセットを共有する場合には、前記他のHWIPは実行完了の時、自分のリターン値(value)及びリターンアドレスを前記ハードウェアコントローラの内部のレジスタに記入(write)することを特徴とする請求項27に記載の高水準言語コードのHDLコードへの変換方法。
- 前記メインコアと前記ハードウェアコントローラとが疎結合されていて、全ての前記HWIPが前記ハードウェアコントローラの内部のシステムレジスタセットを共有する場合には、前記いずれか一つのHWIPは、前記他のHWIPのリターン値(value)及びリターンアドレスを前記ハードウェアコントローラの内部のレジスタから読み込み、
前記メインコアと前記ハードウェアコントローラとが密結合である場合には、前記いずれか一つのHWIPは、前記他のHWIPのリターン値(value)及びリターンアドレスを前記他のHWIPのレジスタから直接読み込むことを特徴とする請求項27に記載の高水準言語コードのHDLコードへの変換方法。 - プログラミングディレクティブがと表示された(marked with programming directive)変換対象高水準言語コードから前記プログラミングディレクティブを読み込んだ後、前記変換対象高水準言語コードを前記プログラミングディレクティブが表示された部分をサブルーチンとして含むハードウェア部分コードと前記高水準言語コードの前記プログラミングディレクティブが表示された部分を除外した残り部分と前記プログラミングディレクティブが表示された部分が前記サブルーチンを呼び出すためのラッパーに振り替えられた部分を含むソフトウェア部分コードとに分割するHLL-to-HLLソース変換機;
前記ソフトウェア部分コード及びハードウェア部分コードをコンパイルするメインコンパイラ;
前記ハードウェア部分コードをデータパス及びコントロールユニットを含むHDLコードに変換するHLL-to-HDL変換機;
コンパイルされた前記ソフトウェア部分コードを実行するメインコア;及び
前記メインコアと連動して変換された前記HDLコードを実行する専用ハードウェアを含みながら、
前記HLL-to-HDL変換機は、フロントエンド(front end)及びミドルエンド(middle end)とHDLバックエンド(backend)とを含み、
前記HLL-to-HDL変換機のフロントエンド(front end)及びミドルエンド(middle end)は前記メインコンパイラのフロントエンド(front end)及びミドルエンド(middle end)と同一で、前記HLL-to-HDL変換機は自然的に(natuarally)HDLコード生成の過程でコンパイルされた前記ソフトウェア部分コードのリンケージ規約(linkage convention)に従い、
前記HDLバックエンドは:
シンタックス(syntax)がHDLシンタックスとセマンティクス(semantics)に従い、低水準IRコードをHDLにマッピングするマシン記述ファイル(machine description file);及び
HDLコードジェネレーター(generator)を含むことを特徴とする高水準言語コードのHDLコードへの変換システム 。 - 前記HLL-to-HDL変換機の前記フロントエンド及びミドルエンドは、前記ハードウェア部分コードを低水準IRコードに変換し、前記HLL-to-HDL変換機の前記HDLバックエンドは、前記低水準IRコードをHDLコードに変換することを特徴とする請求項33に記載の高水準言語コードのHDLコードへの変換システム 。
- 前記高水準言語コードのサブルーチン/関数に該当する前記HDLコードの生成は、
生成された前記HDLコードが一つ以上のブロックモジュールを前記データパスとして含み、トップモジュールを前記コントロールユニットとして含むbasic-block-by-basic-block生成方法、または
生成された前記HDLコードが前記データパス及び前記コントロールユニットを全て含む一つのモジュールを含むfunction-by-function生成方法の中のいずれか一つであることを特徴とする請求項33に記載の高水準言語コードのHDLコードへの変換システム 。 - 前記HDLコードのハードウェア関数の前記データパスは、前記HDLバックエンドのマシン記述ファイルによって前記低水準IRコードから直接生成され、
前記HDLコードのハードウェア関数のコントロールユニットは、前記HDLコードジェネレーターによって前記低水準IRコードの複数のベーシックブロックらの間のコントロール依存性に基づいて生成され、
前記データパス及び前記コントロールユニットは、有限状態機械(FSM)の形態であることを特徴とする請求項33に記載の高水準言語コードのHDLコードへの変換システム 。 - 前記basic-block-by-basic-block生成方法の場合、
前記ブロックモジュールは、連続的な低水準IRコードインストラクションのシーケンスから生成された有限状態機械のセット(set)であって、
前記有限状態機械のステート(state)分割は、前記低水準IRコードインストラクションの遅延推定値及びデータ/コントロール依存性に基づいてなって、
前記ブロックモジュールは、前記低水準IRコードのベーシックブロックと同一機能を遂行し、
前記トップモジュールは、前記ブロックモジュールを活性化/非活性化さて、前記ブロックモジュールの実行順序を定めることを特徴とする請求項35に記載の高水準言語コードのHDLコードへの変換システム 。 - 前記basic-block-by-basic-block生成方法の場合、
前記トップモジュールが一回に一つまたはその以上のブロックモジュールが動作するように、前記一つ以上のブロックモジュールの中の一つまたはその以上のブロックモジュールに入力を割り当てて活性化させた後、活性化された前記一つまたはその以上のブロックモジュールの実行が終わるまで待ち、
活性化された前記一つまたはその以上のブロックモジュールは、割り当てられた入力をもって自分のコードを実行し、自分のレジスタセットに出力を保存(buffer)した後、前記トップモジュールに制御フロー出力(Control Flow Outcome)と一緒にレジスタセットに保存された前記出力を提供(return)し、
前記トップモジュールは、前記制御フロー出力に基づいて前記一つ以上のブロックモジュールの中で次に実行されたブロックモジュールを決定することを特徴とする請求項35に記載の高水準言語コードのHDLコードへの変換システム。 - 前記function-by-function生成方法の場合、
前記高水準言語コードのサブルーチン/関数に該当する生成された前記HDLコードの前記データパス及び前記コントロールユニットは、一つのモジュールに含まれ、有限状態機械と具現(implement)され、
前記データパスは、前記有限状態機械の出力ロジック(output logic)を生成し、前記コントロールユニットは、前記有限状態機械のステート変移(transition)を制御し、
前記データパスは、前記高水準言語コードのサブルーチン/関数の全てのベーシックブロックの低水準IRコードインストラクションの連続的シーケンスから生成され、
前記有限状態機械のステート(state)分割は、前記低水準IRコードインストラクションの遅延推定値及びデータ/コントロール依存性に基づいてなることを特徴とする請求項35に記載の高水準言語コードのHDLコードへの変換システム 。 - HLL-to-HDL変換機を用いて高水準言語コードをHDLコードに変換するシステムにおいて、
前記HLL-to-HDL変換機はフロントエンド及びミドルエンドとHDLバックエンドとを含み、
前記フロントエンド及びミドルエンドは前記高水準言語コードのコンパイルに活用されるメインコンパイラのフロントエンド及びミドルエンドと同一であり、
前記 HDLバックエンドは:
HDLシンタックスとセマンティクスに従うシンタックスを有し、ターゲットアセンブリコード(target assembly code)生成と同一方式で低水準IRコードをHDLコードにマッピングする変換機;及び
前記メインコンパイラのフロントエンド及びミドルエンドによって前記高水準言語コードから前記ターゲットアセンブリコード生成の直前に変換された低水準IRコードから前記HDLコードを生成するHDLジェネレーター(generator)を含むことを特徴とするHLL-to-HDL変換機を用いて高水準言語コードをHDLコードに変換するシステム。 - 前記HLL-to-HDL変換機によって前記高水準言語コードのサブルーチン/関数から生成された前記HDLコードは、データパス及びコントロールユニットを含み、
前記データパス及び前記コントロールユニットは、有限状態機械の形態で具現されることを特徴とする請求項40に記載のHLL-to-HDL変換機を用いて高水準言語コードをHDLコードに変換するシステム。 - basic-block-by-basic-block生成方法の場合、前記HDLコードは、前記高水準言語コードのサブルーチン/関数から生成された一つまたはその以上のブロックモジュールを前記データパスとして含み、トップモジュールをコントロールユニットとして含み、
function-by-function生成方法の場合、前記HDLコードは、データパス及び前記コントロールユニットの両者を全て含む一つのモジュールを含むことを特徴とする請求項41に記載のHLL-to-HDL変換機を用いて高水準言語コードをHDLコードに変換するシステム。 - 前記basic-block-by-basic-block生成方法の場合、前記データパスは、一つまたはその以上のブロックモジュールを含み、前記ブロックモジュールは、ベーシックブロックの低水準IRコードインストラクションから生成される有限状態機械のセットであって、
前記function-by-function生成方法の場合、前記データパスは、前記高水準言語コードのサブルーチン/関数の全てのベーシックブロックの低水準IRコードインストラクションから生成される有限状態機械のセットであって、
前記二つの方法全てにおいて、前記有限状態機械のステート(state)分割は、前記低水準IRコードインストラクションの遅延推定値及びデータ依存性に基づいてなることを特徴とする請求項42に記載のHLL-to-HDL変換機を用いて高水準言語コードをHDLコードに変換するシステム。
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR10-2008-0116417 | 2008-11-21 | ||
| KR20080116417 | 2008-11-21 | ||
| KR1020090109753A KR101082797B1 (ko) | 2008-11-21 | 2009-11-13 | 고수준 언어 코드를 hdl 코드로 변환하는 방법 및 시스템 |
| KR10-2009-0109753 | 2009-11-13 | ||
| PCT/KR2009/006833 WO2010058981A2 (ko) | 2008-11-21 | 2009-11-19 | 고수준 언어 코드를 hdl 코드로 변환하는 방법 및 시스템 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2012509537A JP2012509537A (ja) | 2012-04-19 |
| JP5568566B2 true JP5568566B2 (ja) | 2014-08-06 |
Family
ID=42197561
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2011537361A Expired - Fee Related JP5568566B2 (ja) | 2008-11-21 | 2009-11-19 | 高水準言語コードをhdlコードに変換する方法及びシステム |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US8336036B2 (ja) |
| EP (1) | EP2369476B1 (ja) |
| JP (1) | JP5568566B2 (ja) |
| KR (2) | KR101082797B1 (ja) |
| WO (1) | WO2010058981A2 (ja) |
Families Citing this family (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5729983B2 (ja) * | 2010-11-25 | 2015-06-03 | キヤノン株式会社 | 情報処理装置、情報処理方法およびプログラム |
| EP2718859A1 (en) * | 2011-06-08 | 2014-04-16 | Hyperion Core, Inc. | Tool-level and hardware-level code optimization and respective hardware modification |
| US9043766B2 (en) * | 2011-12-16 | 2015-05-26 | Facebook, Inc. | Language translation using preprocessor macros |
| US8650525B2 (en) * | 2012-06-22 | 2014-02-11 | Altera Corporation | Integrated circuit compilation |
| CN105518622B (zh) | 2013-09-26 | 2019-08-27 | 英特尔公司 | 验证动态二进制转换器中转换的来宾代码的方法和设备 |
| CN103455362A (zh) * | 2013-09-27 | 2013-12-18 | 西安电子科技大学 | 一种硬件语言自动转换系统 |
| JP6176389B2 (ja) * | 2014-03-19 | 2017-08-09 | 日本電気株式会社 | ソースコード生成装置、ソースコード生成方法、及び、記録媒体 |
| KR101678480B1 (ko) * | 2015-07-08 | 2016-11-22 | 주식회사 유비콤테크놀로지 | R 언어 기반 빅데이터 처리용 fpga 시스템 및 방법 |
| US10180850B1 (en) * | 2015-11-03 | 2019-01-15 | Xilinx, Inc. | Emulating applications that use hardware acceleration |
| US20170168792A1 (en) * | 2015-12-15 | 2017-06-15 | Futurewei Technologies, Inc. | Space and time aware organization and isolation of components in real time systems |
| KR101952328B1 (ko) | 2017-04-14 | 2019-02-26 | 박태영 | 프로그래밍 언어간 변환 방법 |
| US10452452B2 (en) | 2017-04-17 | 2019-10-22 | Wave Computing, Inc. | Reconfigurable processor fabric implementation using satisfiability analysis |
| US11546162B2 (en) | 2017-11-09 | 2023-01-03 | Nchain Licensing Ag | Systems and methods for ensuring correct execution of computer program using a mediator computer system |
| WO2019092543A1 (en) | 2017-11-09 | 2019-05-16 | nChain Holdings Limited | System for securing verification key from alteration and verifying validity of a proof of correctness |
| GB201720946D0 (en) | 2017-12-15 | 2018-01-31 | Nchain Holdings Ltd | Computer-implemented system and method |
| CN111466095B (zh) | 2017-12-13 | 2024-05-14 | 区块链控股有限公司 | 安全共享加密材料的系统和方法 |
| KR101849648B1 (ko) * | 2017-12-27 | 2018-04-17 | 박동우 | 건축 설계 모델 제공 방법 및 시스템 |
| CN112400162B (zh) * | 2018-07-19 | 2024-06-21 | 日立安斯泰莫株式会社 | 模拟装置及其方法、以及ecu装置 |
| KR102263371B1 (ko) | 2018-10-30 | 2021-06-11 | 한국전자통신연구원 | 신경망 모델 변환 방법 및 이를 위한 장치 |
| US11347486B2 (en) | 2020-03-27 | 2022-05-31 | Advanced Micro Devices, Inc. | Compiler-initiated tile replacement to enable hardware acceleration resources |
| US11553618B2 (en) | 2020-08-26 | 2023-01-10 | PassiveLogic, Inc. | Methods and systems of building automation state load and user preference via network systems activity |
| CN114707444B (zh) * | 2022-02-09 | 2023-04-28 | 芯华章科技股份有限公司 | 编译验证系统的方法、电子设备及存储介质 |
| CN117787153B (zh) * | 2023-12-26 | 2025-01-03 | 摩尔线程智能科技(北京)股份有限公司 | 一种硬件设计验证方法、装置和存储介质 |
| CN119883282B (zh) * | 2025-03-24 | 2026-04-07 | 北京开源芯片研究院 | 代码处理方法、装置、设备及可读存储介质 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6316334A (ja) * | 1986-07-08 | 1988-01-23 | Nec Corp | 利用者が任意に定義した機械語のインライン展開方式 |
| US5933642A (en) * | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
| US6751583B1 (en) * | 1999-10-29 | 2004-06-15 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating a target processor using binary translation |
| US6701501B2 (en) * | 2000-10-16 | 2004-03-02 | Simon Joshua Waters | Structured algorithmic programming language approach to system design |
| US20040143813A1 (en) * | 2001-05-30 | 2004-07-22 | Kentaro Hanma | System development supporting apparatus, system development supporting method, and computer-readable recorded medium |
| JP3803561B2 (ja) * | 2001-06-29 | 2006-08-02 | 松下電器産業株式会社 | 論理回路設計方法 |
| JP2003114914A (ja) * | 2001-10-04 | 2003-04-18 | Sharp Corp | ソフトウェア/ハードウェア協調設計方法 |
| KR100488084B1 (ko) * | 2002-12-07 | 2005-05-06 | 한국전자통신연구원 | 마이크로 컨트롤러 소프트 아이피 내장용 롬 소프트아이피의 생성 방법 및 이 방법을 실행시키기 위한프로그램을 기록한 기록매체 |
| US7260798B2 (en) * | 2003-12-29 | 2007-08-21 | Mentor Graphics Corporation | Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform |
| JP2006011840A (ja) * | 2004-06-25 | 2006-01-12 | Mitsubishi Electric Corp | 組み込みシステム |
| JP4473656B2 (ja) * | 2004-06-30 | 2010-06-02 | 株式会社東芝 | 紙葉類取り出し装置 |
-
2009
- 2009-02-25 US US12/392,463 patent/US8336036B2/en active Active
- 2009-11-13 KR KR1020090109753A patent/KR101082797B1/ko not_active Expired - Fee Related
- 2009-11-19 EP EP09827746.0A patent/EP2369476B1/en not_active Not-in-force
- 2009-11-19 JP JP2011537361A patent/JP5568566B2/ja not_active Expired - Fee Related
- 2009-11-19 WO PCT/KR2009/006833 patent/WO2010058981A2/ko not_active Ceased
-
2011
- 2011-07-01 KR KR20110065573A patent/KR101481453B1/ko not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| WO2010058981A2 (ko) | 2010-05-27 |
| JP2012509537A (ja) | 2012-04-19 |
| EP2369476A4 (en) | 2012-08-22 |
| KR101082797B1 (ko) | 2011-11-14 |
| KR20110093965A (ko) | 2011-08-19 |
| US20100131933A1 (en) | 2010-05-27 |
| KR20100057495A (ko) | 2010-05-31 |
| US8336036B2 (en) | 2012-12-18 |
| EP2369476B1 (en) | 2016-01-27 |
| KR101481453B1 (ko) | 2015-01-21 |
| EP2369476A2 (en) | 2011-09-28 |
| WO2010058981A3 (ko) | 2010-09-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101082797B1 (ko) | 고수준 언어 코드를 hdl 코드로 변환하는 방법 및 시스템 | |
| US8448150B2 (en) | System and method for translating high-level programming language code into hardware description language code | |
| US12136000B2 (en) | Programming flow for multi-processor system | |
| US7941791B2 (en) | Programming environment for heterogeneous processor resource integration | |
| JP3835754B2 (ja) | 集積回路の設計方法及びそれによって設計された集積回路 | |
| US9898292B2 (en) | Hardware instruction generation unit for specialized processors | |
| US7926046B2 (en) | Compiler method for extracting and accelerator template program | |
| Owaida et al. | Synthesis of platform architectures from OpenCL programs | |
| US20050193359A1 (en) | Method and apparatus for designing circuits using high-level synthesis | |
| US20190171449A1 (en) | Tool-level and hardware-level code optimization and respective hardware modification | |
| AU2003279772A1 (en) | System and method for conveting control flow graph representations to control dataflow graph representations | |
| Jo et al. | SOFF: An OpenCL high-level synthesis framework for FPGAs | |
| Xu et al. | HECTOR: A multi-level intermediate representation for hardware synthesis methodologies | |
| JP2005508029A (ja) | リコンフィギュアラブルアーキテクチャのためのプログラム変換方法 | |
| Kaouane et al. | SysCellC: Systemc on cell | |
| US20080120497A1 (en) | Automated configuration of a processing system using decoupled memory access and computation | |
| Ruben | LLVM‐based software pipelining for customizable exposed datapath pro‐cessors | |
| Meier et al. | MIPS-to-Verilog, Hardware Compilation for the eMIPS Processor | |
| Koch | Adaptive computing systems and their design tools | |
| Diniz et al. | Code transformations for embedded reconfigurable computing architectures | |
| Döbrich | Performance Improvement of Adaptive Processors | |
| From | White Paper Automated Generation of Hardware Accelerators With Direct Memory Access From ANSI/ISO Standard C Functions |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120723 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131203 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140227 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140430 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140502 |
|
| 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: 20140527 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140623 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5568566 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |