JP2013020329A - 言語変換処理方法及び言語変換処理プログラム - Google Patents

言語変換処理方法及び言語変換処理プログラム Download PDF

Info

Publication number
JP2013020329A
JP2013020329A JP2011151529A JP2011151529A JP2013020329A JP 2013020329 A JP2013020329 A JP 2013020329A JP 2011151529 A JP2011151529 A JP 2011151529A JP 2011151529 A JP2011151529 A JP 2011151529A JP 2013020329 A JP2013020329 A JP 2013020329A
Authority
JP
Japan
Prior art keywords
description
data
language
algorithm
parameter
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.)
Granted
Application number
JP2011151529A
Other languages
English (en)
Other versions
JP5751669B2 (ja
Inventor
Yoshiaki Oshima
良紀 大島
Masaaki Tanimoto
匡亮 谷本
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2011151529A priority Critical patent/JP5751669B2/ja
Priority to US13/492,077 priority patent/US8719744B2/en
Publication of JP2013020329A publication Critical patent/JP2013020329A/ja
Application granted granted Critical
Publication of JP5751669B2 publication Critical patent/JP5751669B2/ja
Active 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

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)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】プログラム記述言語によるハードウェアのアルゴリズム記述をベースに高位合成のためのハードウェアモデルの設計工数を短縮する。
【解決手段】並行処理及び時間の概念を持たないプログラム記述言語を用いてハードウェアのアルゴリズムを記述したアルゴリズム記述のデータを並行処理及び時間の概念を持つシステムレベル記述によるハードウェアモデルのデータに変換するとき、アルゴリズム記述に含まれるハードウェア要素としてのパラメータについてのアルゴリズム記述上でのデータの依存関係をシステムレベル記述において維持するデータ依存関係維持記述を生成する。アルゴリズム記述からシステムレベル記述に変換されたハードウェアモデルには、アルゴリズム記述に対して既に評価及び検証された結果が反映されることになり、変換されたハードウェアモデルに対して、使用言語が相違されていても、重ねて評価検証を行うことを要しない。
【選択図】図1

Description

本発明は、C言語などの抽象度の高いプログラム記述言語を用いてハードウェアのアルゴリズムを記述したデータを、時間概念や並行処理などのハードウェア特有の機能を記述できるSystemCなどのシステムレベル記述言語に変換する高位合成への橋渡し技術に関し、例えば高位合成への橋渡しを行うコンパイル方法更にはコンパイラに適用して有効な技術に関する。
システムオンチップの半導体集積回路(単にSoCとも称する)の大規模化及び複雑化に伴い、レジスタトランスファレベル(RTL)による設計の限界が叫ばれている中で、ハードウェア記述言語(HDL)よりも抽象度の高いC言語又はC++言語をベースとして記述したハードウェアモデル(以下単にHWモデルとも称する)を用いて、ハードウェア設計を効率的に実施する手法が普及しつつある。代表技術としては、ハードウェアモデルからRTLを生成する高位合成技術や、仮想プラットフォームを用いたハードウェア・ソフトウェア協調検証技術などがある。
純粋なC言語又はC++言語では時間の概念や並行処理などの表現ができないため、ハードウェア特有の機能を記述することが困難である。そのため、C言語やC++言語にハードウェアの表現能力を追加したシステムレベル記述言語(例えばSystemC等)が、HWモデルの開発向けに用いられている。
高位合成技術とは前記システムレベル記述言語を入力として、RTLを自動生成する技術であり各種製品開発のTAT(ターンアラウンドタイム)短縮を目的としたものである。現時点で広く普及している高位合成ツールとしては、Forte社製のCynthesizer等がある。
仮想プラットフォームを用いたハードウェア・ソフトウェア協調検証技術とは、ハードウェアとソフトウェアからなるシステムを共通のシステムレベル記述言語を用いて設計することで、ハードウェアが完成するよりも早期の段階で、高速に協調検証シミュレーションを可能とする技術である。仮想プラットフォームとしては、Synopsys社製のPlatform Architect等がある。
これらの技術を活用するには、ハードウェアとなる部分のC言語記述を基にシステムレベル記述言語を用いてHWモデルを作成する必要がある。しかしながら、高位合成への橋渡しを行う有意の技術は提供されておらず、従来は人手で行っていた。例えばモデル外部との入出力に関わる部分、すなわち、バスやメモリ等との外部アクセスとなる部分の変数を抽出し、抽出した入出力ポートに対して対象アルゴリズムをラッピングして、外部アクセスに相当する変数とポート間の受け渡しを規定する。
一方、そのような高位合成への橋渡しを行うことについて考慮しない技術として例えば特許文献1に記載のものがある。特許文献1では、並列処理及び同期通信をサポートするプログラミング言語でその機能を定義することによって、集積回路の設計を行うものであり、得られたソースコードが、コンパイラに与えられ、コンパイラは、集積回路の外部通信の順番を変えずに同期通信のタイミングを変える最適化器モジュールを介して、集積回路の回路構成を表すHDLによる出力コードを生成する。
特開2003−216668号公報
本発明者の検討によれば以下の点が明らかになった。第1に、高位合成への橋渡しのための変換を人手で行う場合には、その結果得られたシステムレベル記述に対してベースのアルゴリズム記述との等価性について解析及び検証を行うことが必要になる。しかし、システムレベル記述言語を対象としたコード解析ツールは未成熟であり、メモリリークやメモリ破壊、未初期化変数、配列外アクセスなどの解析やデバッグを行う事が容易ではないため、開発工数が著しく増大する虞がある。要するに、オリジナルのC言語によるアルゴリズム記述と、人手による書き換え後のシステムレベル記述のハードウェアモデルの両方を対象に、未初期化変数チェックなどのコード解析検証やデバッグが必要となり、そもそも、人手による書き換えを行うため、ミスも混入し易くなる。
第2に、特許文献1のように、高位合成ツールへ橋渡しする技術ではなく、合成技術そのものである場合には、並列構文や通信構文などの拡張C言語を用いて、最初からハードウェアを意識した記述を行う必要があり、設計対象の大規模化及び複雑化するに従って現実的には不可能に近い。
本発明の目的は、プログラム記述言語によるハードウェアのアルゴリズム記述をベースに高位合成のためのハードウェアモデルの設計工数の短縮、さらには大規模化及び複雑化に対して半導体集積回路の開発効率の向上に資することができる言語変換処理方法を提供することにある。
本発明の別の目的は、プログラム記述言語によるハードウェアのアルゴリズム記述をベースに高位合成のためのハードウェアモデルの設計工数の短縮、さらには大規模化及び複雑化に対して半導体集積回路の開発効率の向上に資することができる言語変換処理方向を容易に実現することができる言語変換処理プログラムを提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、プログラム記述言語を用いてハードウェアのアルゴリズムを記述したアルゴリズム記述のデータをシステムレベル記述によるハードウェアモデルのデータに変換するとき、前記アルゴリズム記述のデータに含まれるハードウェア要素としてのパラメータについての前記アルゴリズム記述上でのデータの依存関係を前記システムレベル記述において維持するデータ依存関係維持記述を生成する。
これによれば、ハードウェア特有の時間や並列処理の概念を表現するシステムレベル記述にアルゴリズム記述を変換したとき、アルゴリズム記述で想定されているデータ依存関係はデータ依存関係維持記述によって維持されるから、アルゴリズム記述からシステムレベル記述に変換されたハードウェアモデルには、アルゴリズム記述に対して既に評価及び検証された結果が反映されることになり、変換されたハードウェアモデルに対して、使用言語が相違されていても、重ねて評価及び検証を行うことを要しない。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、プログラム記述言語によるハードウェアのアルゴリズム記述をベースに高位合成のためのハードウェアモデルの設計工数の短縮、さらには大規模化及び複雑化に対して半導体集積回路の開発効率の向上に資することができる。
図1はC言語を用いて所用のハードウェアアルゴリズムを記述したCアルゴリズム記述をシステムレベル記述言語によるハードウェアモデルに変換する処理(言語変換処理)について全体的に示したフローチャートである。 図2はシステムレベル記述への変換を人手で行うようにした比較例に係る処理を全体的に示したフローチャートである。 図3はCアルゴリズム記述データに対してステップS3によりハードウェアモデルデータへ自動変換された結果の一例を示す説明図である。 図4はCアルゴリズム記述データに対して人手によりハードウェアモデルデータへ変換された結果を比較例として示す説明図である。 図5は順データ依存関係及び逆データ依存関係の例を示す説明図である。 図6は図1の自動変換処理S3の具体例を示す説明図である。 図7は図1に示される言語変換処理を行うコンピュータ装置の一例を示すブロック図である。 図8は順データ依存関係を持つCアルゴリズム記述に対するハードウェアモデル記述の例を示す説明図である。 図9は逆データ依存関係を持つCアルゴリズム記述に対するハードウェアモデル記述の例を示す説明図である。 図10はデータ依存解析処理のデータ処理フローを例示するフローチャートである。 図11はデータ依存関係テーブルを例示する説明図である。 図12はデータ依存関係維持変換処理S33の詳細なデータ処理を例示するフローチャートである。 図13は図8の順データ依存関係の記述に対して生成されるデータ依存関係保存済コードを例示する説明図である。 図14は図9の逆データ依存関係の記述に対して生成されるデータ依存関係保存済コードを例示する説明図である。 図15はシステムレベル変換処理S34の具体例を示すフローチャートである。 図16は図6の自動変換処理S3の入力データとしてCアルゴリズム記述データ10及びハードウェア要素指示データ20の具体例を示す説明図である。 図17は自動変換処理S3におけるデータ依存関係維持変換処理S33において図12の処理フローによって生成されるデータ依存関係保存済コードの具体例を示す説明図である。 図18はシステムレベル記述変換処理によって生成されるハードウェアモデルのクラス定義部の記述を例示する説明図である。 図19はシステムレベル記述変換処理によって生成されるユーザ定義型クラスの記述を例示する説明図である。 図20はシステムレベル記述変換処理によって生成される並行プロセスの記述を例示する説明図である。 図21はシステムレベル記述変換処理によって生成されるテストベンチモジュールの記述を例示する説明図である。 図22はシステムレベル記述変換処理によって生成されるテストベンチモジュールの接続とシミュレーションの記述を例示する説明図である。 図23はシステムレベル記述変換処理によって生成されるCアルゴリズム用テストベンチの記述を例示する説明図である。 図24はパラメータに対する命名規則を採用することによってハードウェア要素指示データを不要とする場合のCアルゴリズム記述を例示する説明図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<ハードウェア要素の指示を受け、データ依存関係を維持し、アルゴリズム記述をシステムレベル記述に変換>
本発明の代表的な実施の形態に係る言語変換処理方法は、所定の記述制約の下でプログラム記述言語を用いてハードウェアのアルゴリズムを記述したアルゴリズム記述のデータ(10)をコンピュータ装置(1)が入力する第1処理と、前記アルゴリズム記述のデータに含まれるハードウェア要素としてのパラメータを指示するハードウェア要素指示データ(20)を前記コンピュータ装置が入力する第2処理と、前記コンピュータ装置が前記アルゴリズム記述のデータをシステムレベル記述によるハードウェアモデルのデータに変換する第3処理(S3)とを含む。前記第3処理において、前記コンピュータ装置は前記ハードウェア要素指示データで指示されたパラメータに関する前記アルゴリズム記述上でのデータ依存関係を前記ハードウェアモデル上において維持する、データ依存関係維持記述(42)を生成する(図1、図6、図7参照、が必要?)。
これによれば、アルゴリズム記述を、ハードウェア特有の時間や並列処理の概念を表現するシステムレベル記述に変換したとき、前記記述制約によってアルゴリズム記述で想定されているデータ依存関係はデータ依存関係維持記述によって維持されるから、アルゴリズム記述からシステムレベル記述に変換されたハードウェアモデルには、アルゴリズム記述に対して既に評価及び検証された結果が反映されることになり、変換されたハードウェアモデルに対して、使用言語が相違されていても、重ねてコード解析やデバッグなどの評価及び検証を行うことを要しない。更にハードウェア要素としてのパラメータについてはハードウェア要素指示データによって後から指定することができるから、アルゴリズム記述を生成するときポートや信号(レジスタ)になるパラメータなどを予め把握する手間を要しない。
〔2〕<関数操作のクロックサイクル数に関する記述制約>
項1の言語変換処理方法において、前記記述制約は、システムレベル記述言語によるプロセスがクロック同期プロセスであるとき、プログラム記述の関数による操作は一定のクロックサイクル内で完了される、という制約を含む。
これによれば、時間の概念を持たないプログラム記述言語による記述に対して暗黙的な時間概念を持たせることが可能になる。
〔3〕<順序関係の維持>
項1又は2の言語変換処理方法において、前記データ依存関係維持記述は、パラメータに対する代入と参照の順序を維持し、且つ、代入された値をその代入操作から前記一定のクロックサイクル内で参照することを保証する記述である(図8、図9参照)。
これによれば、アルゴリズム記述で想定されているデータ依存関係を簡単な記述によって前記システムレベル記述に反映することができる。
〔4〕<中間パラメータの採用>
項1乃至3の何れかの言語変換処理方法において、前記データ依存関係維持記述は、アルゴリズム記述のデータにおいて代入されてから参照されるパラメータについて中間パラメータ(_out1)を定義し、前記パラメータに代入される値を前記中間パラメータに代入してから当該中間パラメータの値を当該パラメータに書き込む記述と、その値の参照先を前記中間パラメータとする記述とを含む。
これによれば、ポートや信号(レジスタ)としてのパラメータに書き込み結果が反映されるまでの遅延を考慮すると、その書き込みデータを一定のクロックサイクル内で参照する操作が想定されている場合に、上記中間パラメータを定義して利用することにより、上記データ依存関係の維持を簡単に実現することが可能になる。
〔5〕<データ依存関係テーブルの生成>
項1乃至4の何れかの言語変換処理方法において、前記第3処理は、前記アルゴリズム記述上における記述行の順番によって参照が先か代入が先かを示すデータ依存関係テーブル(41)を生成し、当該テーブルを用いて前記データ依存関係維持記述を生成する。
これによれば、コントロールデータフローグラフを生成することなく容易にデータ依存関係を判別することができる。
〔6〕<ハードウェア要素指示情報>
項1乃至5の何れかの言語変換処理方法において、ハードウェア要素指示データは、入力ポートになるパラメータ(in1)を指示する情報と、出力ポートになるパラメータ(out1)を指示する情報と、信号(レジスタ)になるパラメータ(sig1,sig2)を指示する情報とを含む。
これによれば、入力ポート、出力ポート及び信号(レジスタ)になるパラメータを簡単に指示することができる。
〔7〕<並行プロセスの指示>
項1乃至6の何れかの言語変換処理方法において、前記ハードウェア要素指示データは更に並行処理を行うプロセス(th_1,th_2)を指示する。
これによれば、並行処理を行うプロセスを簡単に指示することができる。
〔8〕<//タイプのコメント>
項1乃至7の何れかの言語変換処理方法において、前記アルゴリズム記述のデータは、前記プログラム記述言語ではサポートしない記述を//タイプのコメントとして有し、前記第3処理は前記//タイプの記述をシステムレベル記述に反映する。
これによれば、自動変換では容易に対応し難いハードウェアモデル特有の記述を予めアルゴリズム記述に埋め込んでおくことにより、これを第3処理による変換の補助とすることができ、第3処理による変換精度の向上に資することができる。
〔9〕<”{ } { }”の記述をクロック境界の記述に変換>
項1乃至8の何れかの言語変換処理方法において、前記第3処理は、前記アルゴリズム記述のデータに含まれる”{ } { }”の記述をクロック境界の記述に変換する。
これによれば、予めアルゴリズム記述データに暗黙的にクロック境界を意味する記述を埋め込む方が、意味付けの明確化と可読性の向上に寄与する。
〔10〕<ハードウェアモデルのテストベンチの生成>
項1乃至9の何れかの言語変換処理方法において、前記第3処理は、変換したハードウェアモデルの機能及び動作タイミングを検証するためのテストベンチを前記コンピュータ装置が生成するテストベンチ生成処理(S124)を含む。
これによれば、生成されたテストベンチを用いることによってハードウェアモデルに対する評価及び検証についても容易に対応することができる。
〔11〕<並行処理及び時間の概念>
項1乃至10の何れかの言語変換処理方法において、前記プログラム記述言語は並行処理及び時間の概念を持たないC言語であり、前記システムレベル記述言語は並行処理及び時間の概念を持つSystemC言語などである。
これによれば、C言語を用いて記述されたアルゴリズム記述データをSystemC言語などによるハードウェアモデルデータに自動的に書き換え可能になる。
〔12〕<ハードウェア要素を自動判別し、データ依存関係を維持し、アルゴリズム記述をシステムレベル記述に変換>
本発明の別の実施の形態に係る言語変換処理方法は、所定の記述制約の下でプログラム記述言語を用いてハードウェアのアルゴリズムを記述したアルゴリズム記述のデータ(10)をコンピュータ装置(1)が入力する第1処理と、前記コンピュータ装置が前記アルゴリズム記述のデータに含まれるハードウェア要素としてのパラメータをパラメータの命名規則(inで始まる変数は入力ポート、outで始まる変数は出力ポート、sigで始まる変数は信号、thで始まる関数は並行処理プロセス)に従って判別して、前記コンピュータ装置が前記アルゴリズム記述のデータをシステムレベル記述によるハードウェアモデルのデータに変換する第2処理とを含む。前記第2処理において、前記コンピュータ装置は、判別したパラメータに関するアルゴリズム記述上でのデータ依存関係を前記ハードウェアモデル上において維持する、データ依存関係維持記述(42)を生成する。
これによれば、アルゴリズム記述を、ハードウェア特有の時間や並列処理の概念を表現するシステムレベル記述に変換したとき、前記記述制約を満足するアルゴリズム記述で想定されているデータ依存関係はデータ依存関係維持記述によって維持されるから、アルゴリズム記述からシステムレベル記述に変換されたハードウェアモデルには、アルゴリズム記述に対して既に評価及び検証された結果が反映されることになり、変換されたハードウェアモデルに対して、使用言語が相違されていても、重ねてコード解析やデバッグなどの評価及び検証を行うことを要しない。更にハードウェア要素としてのパラメータについてはその命名規則に基づいて自動的に判別されるから、項1のハードウェア要素指示データのようなデータは必要ではない。ただし、ハードウェア要素とすべきパラメータについてはその命名規則に従ったパラメータ名を付与しておかなければならない。
〔13〕<関数操作のクロックサイクル数に関する記述制約>
項12の言語変換処理方法において、前記所定の記述制約は、システムレベル記述言語によるプロセスがクロック同期プロセスであるとき、プログラム記述の関数による操作は一定のクロックサイクル内で完了される、という制約を含む。
これによれば、時間の概念を持たないプログラム記述言語による記述に対して暗黙的な時間概念を持たせることが可能になる。
〔14〕<順序関係の維持>
項12の言語変換処理方法において、前記データ依存関係維持記述は、パラメータに対する代入と参照の順序を維持し、且つ、代入された値をその代入操作から前記一定のクロックサイクル内で参照することを保証する記述である。
これによれば、アルゴリズム記述で想定されているデータ依存関係を簡単な記述によって前記システムレベル記述に反映することができる。
〔15〕<中間パラメータの採用>
項12乃至14の何れかの言語変換処理方法において、前記データ依存関係維持記述は、アルゴリズム記述のデータにおいて代入されてから参照されるパラメータについて中間パラメータ(_out1)を定義し、前記パラメータに代入される値を前記中間パラメータに代入してから当該中間パラメータの値を当該パラメータに書き込む記述と、その値の参照先を前記中間パラメータとする記述とを含む。
これによれば、ポートや信号(レジスタ)としてのパラメータに書き込み結果が反映されまでの遅延を考慮すると、その書き込みデータを一定のクロックサイクル内で参照する操作が想定されている場合に、上記中間パラメータを定義して利用することにより、上記データ依存関係の維持を簡単に実現することが可能になる。
〔16〕<データ依存関係テーブルの生成>
項12乃至15の何れかの言語変換処理方法において、前記第2処理は、前記アルゴリズム記述上における記述行の順番によって参照が先か代入が先かを示すデータ依存関係テーブル(41)を生成し、当該テーブルを用いて前記データ依存関係維持記述を生成する。
これによれば、コントロールデータフローグラフを生成することなく容易にデータ依存関係を判別することができる。
〔17〕<命名規則が指示するハードウェア要素>
項12乃至16の何れかの言語変換処理方法において、前記ハードウェア要素としての前記命名規則に従ったパラメータは、入力ポートになる第1のパラメータ(in1)、出力ポートになる第2のパラメータ(our1)、及び信号(レジスタ)になる第3のパラメータ(sig1,sig2)を含む。
これによれば、入力ポート、出力ポート及び信号(レジスタ)になるパラメータを簡単に識別することができる。
〔18〕<命名規則が指示する並行プロセス>
項12乃至17の何れかの言語変換処理方法において、前記第2処理は更に前記アルゴリズム記述データに含まれる並行処理を行うプロセス(th_1,th_2)をプロセスの命名規則によって判別する処理を含む。
これによれば、並行処理を行うプロセスを簡単に識別することができる。
〔19〕<//タイプのコメント>
項12乃至18の何れかの言語変換処理方法において、前記アルゴリズム記述データは、前記プログラム記述言語ではサポートしない記述を//タイプのコメントとして有し、前記第2処理は前記//タイプの記述をシステムレベル記述に反映する。
これによれば、自動変換では容易に対応し難いハードウェアモデル特有の記述を予めアルゴリズム記述に埋め込んでおくことにより、これを第3処理による変換の補助とすることができ、第2処理による変換精度の向上に資することができる。
〔20〕<”{ } { }”の記述をクロック境界の記述に変換>
項12乃至19の何れかの言語変換処理方法において、前記第2処理は、前記アルゴリズム記述に含まれる”{ } { }”の記述をクロック境界の記述に変換する。
これによれば、予めアルゴリズム記述データに暗黙的にクロック境界を意味する記述を埋め込む方が、意味付けの明確化と可読性の向上に寄与する。
〔21〕<ハードウェアモデルのテストベンチの生成>
項12乃至20の何れかの言語変換処理方法において、前記第2処理は変換したハードウェアモデルの機能及び動作タイミングを検証するためのテストベンチを前記コンピュータ装置が生成するテストベンチ生成処理(S124)を更に含む。
これによれば、生成されたテストベンチを用いることによってハードウェアモデルに対する評価及び検証についても容易に対応することができる。
〔22〕<並行処理及び時間の概念>
請求項12乃至21の何れかの言語変換処理方法において、前記プログラム記述言語は並行処理及び時間の概念を持たないC言語であり、前記システムレベル記述言語は並行処理及び時間の概念を持つSystemC言語などである。
これによれば、C言語を用いて記述されたアルゴリズム記述データをSystemC言語などによるハードウェアモデルデータに自動的に書き換え可能になる。
〔23〕<ハードウェア要素の指示を受け、データ依存関係を維持し、アルゴリズム記述をシステムレベル記述に変換>
本発明の更に別の実施の形態に係る言語変換処理プログラム(PGM)は、コンピュータ装置(1)が実行することにより、所定の記述制約の下でプログラム記述言語を用いてハードウェアのアルゴリズムを記述したアルゴリズム記述のデータ(10)を入力する第1処理と、前記アルゴリズム記述のデータに含まれるハードウェア要素としてのパラメータを指示するハードウェア要素指示データを入力する第2処理と、前記第2処理で入力したハードウェア要素指示データで指示されたパラメータに関する前記アルゴリズム記述上でのデータ依存関係を特定するためのデータ依存関係維持記述を生成する第3処理(S32,S33)と、前記アルゴリズム記述のデータをシステムレベル記述によるハードウェアモデルのデータに変換すると共に、前記データ依存関係維持記述で特定されたデータ依存関係を前記ハードウェアモデルに反映する第4処理(S34)と、を制御する。
これによれば、項1で説明したようにプログラム記述言語によるハードウェアのアルゴリズム記述をベースに高位合成のためのハードウェアモデルの設計工数の短縮などに寄与する言語変換処理方向を容易に実現することができる。
〔24〕<ハードウェア要素を自動判別し、データ依存関係を維持し、アルゴリズム記述をシステムレベル記述に変換>
本発明の更に別の実施の形態に係る言語変換処理プログラム(PGM)は、コンピュータ装置(1)が実行することにより、所定の記述制約の下でプログラム記述言語を用いてハードウェアのアルゴリズムを記述したアルゴリズム記述のデータ(10)を入力する第1処理と、前記アルゴリズム記述に含まれるハードウェア要素としてのパラメータをパラメータの命名規則(inで始まる変数は入力ポート、outで始まる変数は出力ポート、sigで始まる変数は信号、thで始まる関数は並行処理プロセス)に従って判別する第2処理(S31)と、前記第2処理で判別されたパラメータに関する前記アルゴリズム記述上でのデータ依存関係を特定するためのデータ依存関係維持記述を生成する第3処理(S32,S33)と、前記アルゴリズム記述のデータをシステムレベル記述によるハードウェアモデルのデータに変換すると共に、前記データ依存関係維持記述で特定されたデータ依存関係を前記ハードウェアモデルに反映する第4処理(S34)と、を制御する。
これによれば、項12で説明したようにプログラム記述言語によるハードウェアのアルゴリズム記述をベースに高位合成のためのハードウェアモデルの設計工数の短縮などに寄与する言語変換処理方向を容易に実現することができる。
2.実施の形態の詳細
実施の形態について更に詳述する。
〔実施の形態1〕
《Cアルゴリズムからハードウェアモデルへの自動変換》
ソフトウェアプログラミング言語として例えばC言語を用いて所用のハードウェアアルゴリズムを記述したCアルゴリズム記述をシステムレベル記述言語によるハードウェアモデルに変換する処理(言語変換処理)について図1を参照しながら全体的に説明する。ソフトウェアプログラミング言語は並行処理及び時間の概念がない。これに対してシステムレベル記述言語は並行処理及び時間の概念を持つ。
図1に示される処理フローは例えばエンジニアリングワークステーションなどのコンピュータ装置が言語変換処理プログラムなどのプログラムを実行することによって実現される処理である。ワークステーション1は例えば図7に例示されるように、プログラムを実行する中央処理装置(CPU)2にワークメモリ3及び補助記憶装置4が接続されると共に、外部インタフェース5を介してディスプレイ6、キーボード7、マウス8、及びDVDドライブ9などに接続される。CPU2はDVDドライブ9から言語処理変換プログラムを補助記憶装置にダウンロードし、ダウンロードした言語処理変換プログラムを必要に応じてワークメモリ3に転送し、ワークメモリ3からプログラムをフェッチして言語変換処理を実行する。
開発しようとする回路モジュールに要求される機能はC言語の文法に従い、所定の記述制約の下でハードウェアアルゴリズムを記述するためのCアルゴリズム仕様として入力される(S1)。入力された仕様はC言語によるCアルゴリズム記述にコード化され、コード化されたコード(以下単にCアルゴリズム記述データとも称する)10が解析されて検証され、デバッグに供される(S2)。例えばC言語を用いたときは、 [1]のPurifyに代表される商用動的コード解析ツールや、[2]、[3]などの学術検証ツールなどを用いて、検証及びデバッグを容易に行うことができる。
[1].IBM Rational Purify http://www-01.ibm.com/software/awdtools/purify/
[2].CBMC http://www.cprover.org/cbmc/
[3].Edmund Clarke, Daniel Kroening, and Flavio Lerda, "A Tool for Checking ANSI-C Programs," TACAS2004, LNCS Vol.2988, pp.168-176, 2004.
これによって、C言語を用いて所用のハードウェアアルゴリズムを記述したCアルゴリズム記述データ10が生成される。このCアルゴリズム記述データ10に対して並行処理及び時間の概念を表現するために、Cアルゴリズム記述データ10に含まれるハードウェア要素としてのパラメータを指示するハードウェア指示データ20を入力して、Cアルゴリズム記述データ10をSystemCのようなシステムレベル記述に自動変換して、ハードウェアモデルデータ30を生成する(S3)。このハードウェアモデルデータ30は、レジスタトランスファレベル(RTL)への高位合成、さらにはハードウェアモデルのタイミング検証などのためのテストベンチの生成に利用される。高位合成を行う高位合成ツールとして例えばForte社製のCynthesizer等を用いればよい。
自動変換S3においては、システムレベル記述のハードウェアモデルデータ30は、Cアルゴリズム記述データ10に対して機能的な等価性を保証するように変換処理が行われることになる。図2の比較例のようにシステムレベル記述への変換を人手で行うとすれば、その変換結果には上記等価性を保証することができないので、システムレベル記述に対するコード解析や検証及びデバッグを改めて行うことが必要になる。しかも、システムレベル記述言語を対象とするコード解析ツールは未成熟であり、メモリリークやメモリ破壊、未初期化変数、配列外アクセスなどの解析及びデバッグを行う事は容易ではなく、ハードウェアモデルの開発工数を増大させる原因にもなる。
図3にはCアルゴリズム記述データ10に対してステップS3によりハードウェアモデルデータ30へ自動変換された結果の一例が示される。これに対して図4にはCアルゴリズム記述データに対して人手によりハードウェアモデルデータへ変換された結果が比較例として示される。
図4の人手変換による場合と図3の本発明を用いた自動変換による場合では、ハードウェアモデルの記述形式に明確な違いが現れる。図3と図4のどちらの変換方式を用いる場合でも、アルゴリズム記述データ中の関数の入出力となる変数を切り出す作業が必要な点は同じである。
図4の人手変換の場合は、入出力となる変数が関数の引数や戻り値となるようアルゴリズム記述の書き換えを行う。これは、人間がモデル記述を理解し易いように、インタフェースを明確化する必要があるためである。
一方、図3の本発明を用いた自動変換の場合は、入出力となる変数がどれかを外部から指示することにより、データ依存関係を考慮した変換手法によって、アルゴリズム処理をダイレクトにハードウェア記述化するものである。
ここでデータ依存関係とは、ソフトウェア実行における制限の1つであり、命令Aの実行結果を命令Bが利用する場合、命令Aと命令Bで受け渡しする変数についてデータ依存関係があると言う。ここで命令Aの方が命令Bよりもソフトウェアコード内で実行順が先である場合は順データ依存関係にあると言い、逆に命令Bの方の実行順が先である場合は逆データ依存関係にあると言う。順データ依存関係、逆データ依存関係の例を図5に示す。左右どちらの記述例も、命令Aでbufにinを代入、命令Bでoutにbuf(命令Aの実行結果)を代入しているが、左側は命令Aが命令Bに先行しており、右側は命令Bが命令Aに先行している。
データ依存関係にある変数が存在する場合、自動変換においては機能の等価性を維持するためにその依存関係を維持するための考慮が必要となる。その詳細については後述する。
図1に基づいてその概略を説明したように、C言語で記述したアルゴリズムを入力として、機能的に等価なハードウェアモデルを自動生成できるので、C記述に対してコード解析及びデバッグを行えば充分となる。図2の人手を介する比較例の設計フローでは、Cアルゴリズム記述とハードウェアモデルの両方に対してコード解析検証及びデバッグが必要となる。従って、本発明による言語変換処理の方法によれば、ハードウェアモデルの設計工数および検査工数を低減でき、半導体集積回路などの開発効率を大幅に向上することが可能となることが理解されるであろう。
《自動変換処理》
以下、等価性を保証する自動変換の処理について詳述する。
図6には図1の自動変換処理S3の具体例が示される。自動変換処理S3において、Cアルゴリズム記述データ10とハードウェア要素指示データ20を入力し、入力データに基づいて、例えば、入出力アクセス解析処理S31、データ依存解析処理S32,データ依存関係維持変換処理S33、及びシステムレベル記述変換処理S34を行う。
入出力アクセス解析処理S31では、Cアルゴリズム記述データをパースして入出力アクセスの解析を行い、その記述における入力変数と出力変数の解析結果(入出力変数解析結果)をデータベース40に保存する。
データ依存解析処理S32では、入出力変数解析結果のデータベース40を参照して、データ依存関係のあるコード箇所を抽出し、データ依存関係テーブル41を作成する。
データ依存関係維持変換処理S33では、データ依存関係テーブル41を参照して、データ依存関係を保持したコードを書き換えて、データ依存関係保存済コードとしてデータベース42に保存する。データ依存関係保存済コードは、特に制限されないが、中間コードとして位置付けられる。
システムレベル記述変換処理S34では、データベース42が保持するデータ依存関係保存済コードを用いて、システムレベル記述によるハードウェアモデルデータ30を生成する。
自動変換処理を行うための言語変換処理プログラムは図7のワークメモリ3にダウンロードされて、CPU2によって実行される。CPU2による自動変換処理に用いるCアルゴリズム記述データ10、ハードウェア要素指示データ20は外部インタフェース5を介して補助記憶装置4に格納される。CPU2が自動変換処理を行うことによって生成される入出力変数解析結果のデータベース40、及びデータ依存関係テーブル41は、ワークメモリ3に保持され、変換処理の途中で生成される中間コード(データ依存関係保存済コード42など)、及び変換結果としてハードウェアモデルデータ30は補助記憶装置4に得られる。
《データ依存関係維持変換処理》
次にデータ依存関係維持変換処理について具体的に説明する。
図8には順データ依存関係を持つ場合の処理記述例が示される。データ依存関係維持変換処理S33では、データ依存関係に基づいて、入力、あるいは出力にマッピングされる変数を、例えばポートアクセスとなる処理に置換する。この時、単純な置換処理では、データ依存関係が損なわれてしまう場合がある。これはCアルゴリズム記述では時間の概念が反映されず、SystemC記述は時間の概念を持ち、変数の値は、時間の概念で把握されるクロックを刻んだとき(クロックサイクルが変わったとき)更新される場合があるからである。例えば、図8のCアルゴリズム記述には変数out1に関して順データ依存関係が存在し、このとき、図8の非等価の矢印方向に示されるように、単純な置換を行う場合には、意図しない処理結果になる場合がある。SystemCを用いたハードウェアモデル記述では、出力ポートや信号に対する代入処理がノンブロッキング代入となり、次のクロックを刻んだタイミング(例えばwaitのコール)で実際に値が更新される場合がある。すなわち、out1に代入した値を、次のif文での評価に用いているが、HWモデルでは、out1の値が即座に反映されないので、両者の処理結果が一致しない。
この問題を解決するために中間変数を導入する。図8の等価の矢印方向に示されたコードでは、中間変数_out1に更新後の値を代入し、その_中間変数out1の値を変数out1に代入している。値の参照には中間変数_out1を用いるよう処理を書き換えることで、Cアルゴリズム記述とハードウェアモデル記述との機能的な等価性が保障されることになる。尚、in1.read()は入力ポートin1からデータを読み込むリードメソッドであり、out1.write()は出力ポートout1にデータを書き込むメソッドである。
比較例のような人手によるハードウェアモデル化手法と大きく異なる点は、別途ポートを定義することを要せず、アルゴリズム記述内の変数を直接ポートとして利用する部分である。本手法を人手で行うとした場合に、データ依存関係を考慮に入れた上でアルゴリズムを書き換えるには、変数の使われ方を実行順に目視で追いながら依存関係を探る必要があるため通常は極めて困難であり、作業が収束しない可能性が高い。
図9には逆データ依存関係を持つ場合の処理記述例が示される。この場合、Cアルゴリズム記述は、変数out1に関して逆データ依存関係が存在し、非等価の矢印方向に示されるように単純な処理置換を行うと、変数out1がノンブロッキング代入となるため意図しない処理結果になる場合がある。等価の矢印方向に示されるように、順データ依存関係の場合と同様の中間変数を導入することで、上記同様にその不都合は解消される。
図10にはデータ依存解析処理のデータ処理フローが例示される。図11にはデータ依存関係テーブルが例示され、図12にはデータ依存関係維持変換処理S33の詳細なデータ処理フローが例示される。
図10に例示したデータ依存解析の処理フローは、前記アルゴリズム記述上における記述行の順番によって参照が先か代入が先かを判別して、図11のデータ依存関係テーブル41を生成する。
図10に例示したデータ依存解析処理は、ソースコード文字で書かれたCアルゴリズム記述の意味を解釈(パース)して対象変数をリストアップする(S101)。対象変数は、(出力ポートあるいは信号になる変数&&(代入文右辺で使用||条件判定式・配列インデックス・単項/短縮演算で使用)の関係を満足する変数とされる。即ち、代入文右辺で使用され、条件判定式で使用され、配列インデックスで使用され、又は単項/短縮演算で使用される変数であって、且つ、出力ポートあるいは信号になる変数が対象変数とされる。
次に、全対象変数毎に、代入文左辺で使用されている変数があるか否かを判別する(S102)。そのような変数がある場合には当該解析対象変数を含む文毎に、ステップS103の処理を繰り返す。ステップS103では、当該変数を代入文左辺で使用している他の文が、現解析文の上側にあるかの判別が行われ、ステップS103の条件を満足する変数に対してはデータ依存関係テーブルに順データ依存として情報追加を行い(S104)、そうでなければその変数に対してはデータ依存関係テーブルに逆データ依存として情報追加を行う(S105)。
データ依存関係テーブル41の情報を入力として図12のデータ依存関係維持変換処理により、データ依存関係保存済コード42が作成される。このデータ依存関係保存済コード42は、後段のシステムレベル記述変換処理S34の入力となる。
図12のデータ依存関係維持変換処理は、中間変数の導入(S111)、初期化記述の生成(S112)、依存元代入文の変換(S113)、及び依存先代入文の変換(S114)の各処理によって実現される。中間変数の導入処理S111は、データ依存関係を持つ対象変数に対して中間変数を導入する処理である。初期化記述の生成処理S112は、逆データ依存関係を持つ対象変数に対して、導入した中間変数の初期化記述を生成する処理である。依存元代入文の変換処理S113は、「左辺=右辺;」の処理を、「導入変数=右辺;左辺=導入変数;」へ変換する処理である。依存先代入文の変換処理S114は、文内の依存関係を持つ変数を導入変数に置換する処理である。
例えば図8の順データ依存関係の記述例を用いて図10の処理フローを説明する。図10の処理フローによると、ステップS101にて変数out1は”if (out1 < max) {”の処理行があることから対象変数に該当(出力ポートあるいは信号になる変数&&条件判定式で使用)する条件を満足し、ステップS102にて”out1 = in1 + buf;”の代入文左辺で使用されている処理行があることから条件を満足する。さらにステップS103にて、out1変数の代入文よりも下側にout1変数を使用した条件判定式があることから、順データ依存関係があると判定され、図11のデータ依存関係テーブル41に、out1の代入行の情報(行番号が**、変数がout1、種別が代入)と、out1の順データ依存による参照の情報(行番号が**、変数がout1、種別が参照、依存関係が順データ依存)が追加される。その後、図12の処理フローによると、生成されたデータ依存関係テーブル41を参照して、S111にて_out1などの中間変数が導入され、ステップS113にて依存元の代入文の変換が行われ、ステップS114にて依存先の代入文の変換が行われる。その結果として、図13に示すデータ依存関係保存済コード42が作成される。
同様に、図9の逆データ依存関係の記述例を用いて図10の処理フローを説明する。図10の処理フローによると、ステップ101にて変数out1は”if (out1 < max) {”の処理行があることから対象変数に該当(出力ポートあるいは信号になる変数&&条件判定式で使用)する条件を満足し、ステップ102にて”out1 = in1 + buf;”の代入文左辺で使用されている処理行があることから条件を満足する。さらにステップ103にて、変数out1の代入文よりも上側に変数out1を使用した条件判定式があることから、逆データ依存関係があると判定され、図11のデータ依存関係テーブルに、out1の代入行の情報(行番号が**、変数がout1、種別が代入)と、out1の逆データ依存による参照の情報(行番号が**、変数がout1、種別が参照、依存関係が逆データ依存)が追加される。その後、図12の処理フローによると、生成されたデータ依存関係テーブル41を参照して、ステップS111にて_out1などの中間変数が導入され、ステップS102にて中間変数の初期化記述を生成し、ステップS103にて依存元の代入文の変換が行われ、ステップS104にて依存先の代入文の変換が行われる。その結果として、図14に示すデータ依存関係保存済コード42が作成される。
上述のように、データ依存関係を生成するためにCDFG(コントロールデータフローグラフ)を生成する必要がないため、本発明に係る言語変換処理方法の開発コスト低減、変換処理の高速化に資することができる。尚、CDFGとは、プログラムを実行したときに通る可能性のある全経路のグラフであり、動作記述に現れたデータの流れ(データフロー)と各演算の実行順序の制御の流れ(コントロールフロー)を表す。コンパイラ最適化や静的コード解析ツール等でよく用いられるものである。
《Cアルゴリズムの記述制約》
上記SystemC言語によって記述されるハードウェアモデルにおいて、そのプロセスがメソッドプロセスSC_METHODか、同期スレッドプロセスSC_CTHREADか、等に応じて、上述のデータ依存関係維持変換処理の前後で機能の等価性を保障するために、入力となるCアルゴリズム記述に対して所定の記述制約を設けることが得策となる。
例えば、変換後のシステムレベル記述がSystemC言語であり、かつ並行プロセスをメソッドプロセスSC_METHODに変換する場合には、以下に示す制約1、制約2、制約3、制約4を設けるとよい。この制約の下であれば、同一入力シーケンスに対して全出力系列が変換前後で一致する。一方、並行プロセスをクロック同期スレッドプロセスSC_CTHREADに変換する場合には、以下に示す制約2、制約3、制約5を設けるのが良い。この制約の下であれば、出力サイクルが1サイクルだけ異なる、すなわち1サイクルのずれを無視すれば、全出力系列が変換前後で一致する。
制約1:組合せゲートループとなる記述が存在しないこと、
制約2:読み出し・書き込み両方の操作が行われることになる内部信号となる変数が存在していないこと、
制約3:出力ポートとなる変数への読み出し操作が全くないか、読み出し操作を行う場合は、他の並行プロセスとなる関数から当該変数への書き込みが一切ないこと。すなわち出力ポートとなる変数を入出力変数として用いていないこと、
制約4:入力ベクタがサイクル同期していること、
制約5:1クロックで動作を終了する記述となっていること、である。
《システムレベル記述変換》
次にシステムレベル変換処理S34について詳述する。
図15にはシステムレベル変換処理S34の処理フローの具体例が示される。システムレベル変換処理S34は、モジュールクラス生成処理S121、ユーザ定義型生成処理S122、並行プロセス変換処理S123,及びテストベンチ生成処理S124によって実現される。システムレベル変換処理S34は、データ依存関係維持変換処理S33で生成したデータ依存関係保存済コード(中間コード)42、及びハードウェア要素指示データ20を用いて、4つのステップS121乃至S124によりシステムレベル記述を用いたハードウェアモデルデータ30を生成する。
モジュールクラス生成処理S121では、ハードウェアモデルのクラスの宣言として、ポート及び信号宣言、並行プロセスの登録などの記述を生成する。この時にハードウェア要素指示データ20を見て、データ型変換が指示されている場合には、元の型を指示された型に変換する。例えば、C整数型のint型に対して、SystemCデータ型であるsc_int<24>への変換指示がある場合、int型で定義されている変数は、sc_int<24>型に変換する。尚、モジュールはSystemC言語における設計の基本要素となるクラスとされ、プロセス、ポート、チャネル、他のモジュールなどをメンバとして持つ。
ユーザ定義型生成処理S122では、構造体ポート、構造体信号が生成されることになる場合に、演算子をオーバーロードしたユーザ定義型クラスを生成する。これは、構造体ポートや構造体信号を用いた処理記述で、通常の演算子を使用できるように(コンパイルエラーにならないように)するために必要となる。オーバーロードする演算子としては、”==”、”!=”、 ”=”、 ”^=”、 ”|=”、 ”&=”、 ”<<=”、 ”>>=”、 ”%=”、 ”/=”、 ” *=”、 ”+=”、 ”-=”、 ”+”、 ”-”、 ”++”、 ”--”、 ”<<”、 ”<<”等であり、演算子の内部実装は、構造体の各データメンバに対して、該当演算子の処理を個別に実施する処理となる。
並行プロセス変換処理S123では、Cアルゴリズムからハードウェアモデルの並行プロセス記述を生成する。リセット処理や無限ループ処理を用いて、入出力信号に関わる変数のデータ依存関係を維持しつつハードウェアモデル記述を生成する。この時にハードウェア要素指示データ20を参照して、データ型変換が指示されている場合には、元の型を指示された型に変換する。データ依存関係はデータ依存関係維持変換処理で生成されたデータ依存関係保存済コード452を参照して得ることができる。
更に、並行プロセス変換処理S123では、記述変換規則としてCアルゴリズム内に記述された”{}{}”を、クロック境界の記述(SystemCの場合はwait()コール)に変換する。本情報については、ソースコードの何行目にクロック境界を挿入するかをハードウェア要素指示データ20から与えることも可能である。Cアルゴリズム記述内に、クロック境界を意味するこの記述を埋め込む方が、意味付けの明確化と可読性の向上を見込むことができる。またCアルゴリズムとして動作させる場合に意味のない処理記述なので、機能動作として弊害が生じることもない。
記述変換規則として、Cアルゴリズム内に記述された//タイプのコメントは、ハードウェアモデルではコメントを無効化して、有効な記述となる。これは、自動変換では対応しきれないハードウェアモデル特有の記述を、Cアルゴリズム内にあらかじめ埋め込んでおくことにより、変換を補助する目的で用意したものである。
テストベンチ生成処理S124では、Cアルゴリズム、および生成したシステムレベル記述(ハードウェアモデルデータ)の動作を確認できるテストベンチをそれぞれ生成する。Cアルゴリズムとハードウェアモデルデータに対して、同一のランダムテストベクタを入力し、出力結果のログをそれぞれ取得可能である。この出力結果を比較することにより、変換によって生成したハードウェアモデルが、オリジナルのCアルゴリズム記述と機能的に等価であるかを確認することが可能となる。ハードウェアモデル用のテストベンチは、ハードウェアモデルにポートを介して接続可能なモデルであり、自律動作プロセスを所持する。このプロセスでは、ランダムテストベクタを一定時間間隔で入力ポートに与え、出力ポートから得られる信号値をログファイルに記録する動作を一定回数繰り返す。ハードウェアモデルとテストベンチモデルのインスタンスを作成してポート間接続を行い、シミュレーションを実行する記述も合わせて生成する。一方、Cアルゴリズム用のテストベンチは、ランダムテストベクタを生成してアルゴリズム関数を呼び出し、処理結果をログファイルに記録する動作を一定回数繰り返す。
尚、テストベンチの生成は必須ではない。所定の記述制約を満足し、デバッグにて不都合が解消されたCアルゴリズム記述に対して自動変換処理S3が行われれば、テストベンチを用いた評価及び返照を行わなくても、バグのないシステムレベル記述を得ることができる。テストベンチはそのような記述制約が遵守されていなかったりした場合に、全く評価環境が提供さていないことによる不都合に対する予備的なものとされる。
以上説明した自動変換処理S3を言語変換処理方法に採用することにより、以下の作用効果を得ることができる。即ち、人手によって開発していたハードウェアモデルの作成工数を大幅に削減できると共に、アルゴリズム記述に対して機能的に等価なバグのないハードウェアモデルを得ることが可能となる。これにより、ハードウェアモデルへの書き換え工数低減のみならず、従来行ってきた、ハードウェアモデルを対象としたコード解析検証やデバッグの工数の削減が可能となり、人手によるバグ混入による信頼性低下も回避可能になる。更に、データ依存関係の生成にCDFG(コントロールデータフローグラフ)を生成する必要がないため、言語変換処理方法の開発コスト低減、変換処理の高速化に資することができる。
《言語変換処理方法の具体例》
図16乃至図23に基づいて上述の言語変換処理方法による処理の更なる具体例について説明する。
図16には図6の自動変換処理S3の入力データとしてCアルゴリズム記述データ10、ハードウェア要素指示データ20を用意する。入力となるCアルゴリズム記述データは、すでにコード解析検証およびデバッグが完了されているものとする。図16においてCアルゴリズム記述データ10として、ソード部10sとヘッダ部10hが例示される。
自動変換処理S3における入出力アクセス解析処理S31では、Cアルゴリズム記述データ10におけるグローバル変数in1は入力ポート、グローバル変数out1は出力ポート、グローバル変数sig1およびsig2は信号として認識される。
自動変換処理S3におけるデータ依存解析処理S32では、図10の処理フローによって、Cアルゴリズム記述データ(ソース部)で使われている変数out1に順データ依存関係があると認識され、図11に例示されるようなデータ依存関係テーブル41が生成される。
自動変換処理S3におけるデータ依存関係維持変換処理S33では図12の処理フローによって、図17に例示されるデータ依存関係保存済みコード42が生成される。
自動変換処理S3におけるシステムレベル記述変換処理S34では、図15の処理フローによって、図18に例示されるハードウェアモデルのクラス定義部、図19に例示されるユーザ定義型クラス、図20に例示される並行プロセス、図21乃至図23に例示されるテストベンチのコードがそれぞれ生成される。
図18においてDS1はポート宣言の記述、DS2は信号宣言の記述、DS3は並行プロセスの登録の記述である。並行プロセスの登録では同期スレッドプロセスSC_CTHREADの登録が行われる。図19においてDS4は演算子のオーバーロードの記述である。図20においてDS5はリセット処理の記述、DS6は無限ループの記述である。図21においてDS7はランダムテストベクタ生成の記述、DS8は出力結果のログ取得の記述である。図22においてDS9はハードウェアモデル作成のモジュール記述、DS10はテストベンチモデル作成のモジュール記述、DS11はハードウェアモデルとテストベンチモデルの接続の記述である。図23においてDS12はランダムテストベクタ生成の記述、DS13はアルゴリズム関数の呼び出しと出力結果のログ取得の記述である。
生成されたハードウェアモデルデータ30は、公知の高位合成手法などによってRTLデータに変換される。
〔実施の形態2〕
実施の形態2ではハードウェア要素指示データ20を不要とする言語処理変換方法について説明する。ハードウェア要素指示データ20を不要とする場合には、Cアルゴリズムで用いる変数名、構造体名、関数名への命名規則によって、入出力属性や並行プロセスに関するハードウェア要素の意味付けを行う。例えば以下の命名規則を採用する。
(1)in/out/sigで始まる整数型のグローバル変数は、それぞれ入力ポート・出力ポート・信号とする。
(2)thで始まるグローバル関数は、並行プロセスとする。
この命名規則を採用するとき図6の自動変換処理S3は、Cアルゴリズム記述10のみを入力として受け取る。入出力アクセス解析処理S31では、Cアルゴリズム記述をパースして本命名規則に基づき入出力アクセスの解析を行い、それによる入出力変数解析結果をデータベース40に保存する。
図24に例示されるCアルゴリズムでは、上記命名規則によって、変数in1は入力ポート、変数out1は出力ポート、変数sig1とsig2は信号となり、関数th_1とth_2は並行プロセスとなる。これ以降の処理は実施の形態1と同様であるからその詳細な説明は省略する。尚、図24では上記命名規則がコメントとして付記され、記述に対する可読性が考慮されている。
実施の形態2によれば、実施の形態1と同様に、アルゴリズム記述を、ハードウェア特有の時間や並列処理の概念を表現するシステムレベル記述に変換したとき、前記記述制約を満足するアルゴリズム記述で想定されているデータ依存関係はデータ依存関係維持記述によって維持されるから、アルゴリズム記述からシステムレベル記述に変換されたハードウェアモデルには、アルゴリズム記述に対して既に評価及び検証された結果が反映されることになり、変換されたハードウェアモデルに対して、使用言語が相違されていても、重ねてコード解析やデバッグなどの評価及び検証を行うことを要しない。更にハードウェア要素としてのパラメータについてはその命名規則に基づいて自動的に判別されるから、ハードウェア要素指示データのようなデータは必要ではない。
〔実施の形態3〕
上述した自動変換処理S3を制御する言語変換処理プログラムは、特に制限されないが、図7のDVD9dに格納されて提供される。DVD9dはDVDドライブ9装置を介してワークステーション1によって読み取り可能な情報記録媒体である。特に図示はしないが、言語変換処理プログラムは通信ネットワークを介してワークステーションン1がダウンロードしてもよい。言語変換処理プログラムはワークステーション1の機械語に対応したオブジェクトプログラムとして提供される。言語変換処理プログラムによる制御機能については図1乃至図24に基づいて説明した上述の自動変換処理S3を実現すればよい。例えば図6の入出力アクセス解析処理S31、データ依存解析処理S32、データ依存関係維持変換処理S33、及びシステムレベル記述変換処理S34を制御する機能を備えればよく、その詳細な説明を重ねて行うことは省略する。
このような言語変換処理プログラムが提供されることにより、上述の言語変換処理のための自動変換処理S3を容易に実現可能にすることができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、プログラム記述言語はC言語に限定されず、JAVA(登録商標)やその他の言語であってよい。それに従って、システム記述言語もSystemC言語に限定されず適宜変更可能である。図16乃至図24などに例示された記述例は一例であり、プロセスの内容、パラメータの種類、及びパラメータの命名規則などは適宜変更可能である。
本発明はSoC開発向けハードウェアモデル(高位合成向け・性能評価向け問わず)全般等に適用可能であり、例えば、携帯電話のアプリケーションチップ、携帯オーディオ、携帯ビデオ、車載オーディオ、車載ビデオ、車載ナビゲーションシステム、暗号システム等を個別に又は複合的に実現する回路モジュール、更にはLSIの開発に広く適用することができる。
1 ワークステーション
PGM 言語変換処理プログラム
2 中央処理装置(CPU)
3 ワークメモリ
4 補助記憶装置
9 DVDドライブ
9d DVDディスク
10 Cアルゴリズム記述データ
20 ハードウェア指示データ
30 ハードウェアモデルデータ
S3 自動変換処理
S31 入出力アクセス解析処理
S32 データ依存解析処理
S33 データ依存関係維持変換処理
S34 システムレベル記述変換処理
40 入出力変数解析結果のデータベース
41 データ依存関係テーブル
42 データ依存関係保存済コードのデータベース

Claims (24)

  1. プログラム記述言語を用いて所定の記述制約の下でハードウェアのアルゴリズムを記述したアルゴリズム記述のデータをコンピュータ装置が入力する第1処理と、
    前記アルゴリズム記述のデータに含まれるハードウェア要素としてのパラメータを指示するハードウェア要素指示データを前記コンピュータ装置が入力する第2処理と、
    前記コンピュータ装置が前記アルゴリズム記述のデータを、システムレベル記述言語によるハードウェアモデルのデータに変換する第3処理とを含み、
    前記第3処理において、前記コンピュータ装置は前記ハードウェア要素指示データで指示されたパラメータに関する前記アルゴリズム記述上でのデータ依存関係を前記ハードウェアモデル上において維持するデータ依存関係維持記述を生成する、言語変換処理方法。
  2. 前記記述制約は、システムレベル記述言語によるプロセスがクロック同期プロセスであるとき、プログラム記述の関数による操作は一定のクロックサイクル内で完了される、という制約を含む、請求項1記載の言語変換処理方法。
  3. 前記データ依存関係維持記述は、パラメータに対する代入と参照の順序を維持し、且つ、代入された値をその代入操作から前記一定のクロックサイクル内で参照することを保証する記述である、請求項2記載の言語変換処理方法。
  4. 前記データ依存関係維持記述は、アルゴリズム記述において代入されてから参照されるパラメータについて中間パラメータを定義し、前記パラメータに代入される値を前記中間パラメータに代入してから当該中間パラメータの値を当該パラメータに書き込む記述と、その値の参照先を前記中間パラメータとする記述とを含む、請求項3記載の言語変換処理方法。
  5. 前記第3処理は、前記アルゴリズム記述上における記述行の順番によって参照が先か代入が先かを示すデータ依存関係テーブルを生成し、当該テーブルを用いて前記データ依存関係維持記述を生成する、請求項1記載の言語変換処理方法。
  6. ハードウェア要素指示データは、入力ポートになるパラメータを指示する情報と、出力ポートになるパラメータを指示する情報と、レジスタになるパラメータを指示する情報とを含む、請求項1記載の言語変換処理方法。
  7. 前記ハードウェア要素指示データは更に並行処理を行うプロセスを指示する請求項1記載の言語変換処理方法。
  8. 前記アルゴリズム記述は、前記プログラム記述言語ではサポートしない記述を//タイプのコメントとして有し、
    前記第3処理は前記//タイプの記述をシステムレベル記述に反映する、請求項1記載の言語変換処理方法。
  9. 前記第3処理は、前記アルゴリズム記述に含まれる”{ } { }”の記述をクロック境界の記述に変換する、請求項1記載の言語変換処理方法。
  10. 前記第3処理は、変換したハードウェアモデルのデータによる機能及び動作タイミングを検証するためのテストベンチを前記コンピュータ装置が生成するテストベンチ生成処理を更に含む、請求項1記載の言語変換処理方法。
  11. 前記プログラム記述言語は並行処理及び時間の概念を持たないC言語であり、
    前記システムレベル記述言語は並行処理及び時間の概念を持つSystemC言語である、請求項1記載の言語変換処理方法。
  12. プログラム記述言語を用いて所定の記述制約の下でハードウェアのアルゴリズムを記述したアルゴリズム記述のデータをコンピュータ装置が入力する第1処理と、
    前記コンピュータ装置が前記アルゴリズム記述のデータに含まれるハードウェア要素としてのパラメータをパラメータの命名規則に従って判別して、前記コンピュータ装置が前記アルゴリズム記述のデータをシステムレベル記述言語によるハードウェアモデルのデータに変換する第2処理とを含み、
    前記第2処理において、前記コンピュータ装置は、判別したパラメータに関するアルゴリズム記述上でのデータ依存関係を前記ハードウェアモデル上において維持する、データ依存関係維持記述を生成する、言語変換処理方法。
  13. 前記所定の記述制約は、システムレベル記述言語によるプロセスがクロック同期プロセスであるとき、プログラム記述の関数による操作は一定のクロックサイクル内で完了される、という制約を含む、請求項12記載の言語変換処理方法。
  14. 前記データ依存関係維持記述は、パラメータに対する代入と参照の順序を維持し、且つ、代入された値をその代入操作から前記一定のクロックサイクル内で参照することを保証する記述である、請求項13記載の言語変換処理方法。
  15. 前記データ依存関係維持記述は、アルゴリズム記述のデータにおいて代入されてから参照されるパラメータについて中間パラメータを定義し、前記パラメータに代入される値を前記中間パラメータに代入してから当該中間パラメータの値を当該パラメータに書き込む記述と、その値の参照先を前記中間パラメータとする記述とを含む、請求項14記載の言語変換処理方法。
  16. 前記第2処理は、前記アルゴリズム記述上における記述行の順番によって参照が先か代入が先かを示すデータ依存関係テーブル(41)を生成し、当該テーブルを用いて前記データ依存関係維持記述を生成する、請求項12記載の言語変換処理方法。
  17. 前記ハードウェア要素としての前記命名規則に従ったパラメータは、入力ポートになる第1のパラメータ、出力ポートになる第2のパラメータ、及びレジスタになる第3のパラメータを含む、請求項12記載の言語変換処理方法。
  18. 前記第2処理は更に前記アルゴリズム記述データに含まれる並行処理を行うプロセスをプロセスの命名規則によって判別する処理を含む、請求項12記載の言語変換処理方法。
  19. 前記アルゴリズム記述データは、前記プログラム記述言語ではサポートしない記述を//タイプのコメントとして有し、
    前記第2処理は前記//タイプの記述をシステムレベル記述に反映する、請求項12記載の言語変換処理方法。
  20. 前記第2処理は、前記アルゴリズム記述データに含まれる”{ } { }”の記述をクロック境界の記述に変換する、請求項12記載の言語変換処理方法。
  21. 前記第2処理は変換したハードウェアモデルデータによる機能及び動作タイミングを検証するためのテストベンチを前記コンピュータ装置が生成するテストベンチ生成処理を更に含む、請求項12記載の言語変換処理方法。
  22. 前記プログラム記述言語は並行処理及び時間の概念を持たないC言語であり、
    前記システムレベル記述言語は並行処理及び時間の概念を持つSystemC言語である、請求項12記載の言語変換処理方法。
  23. コンピュータ装置が実行することにより、
    プログラム記述言語を用いて所定の記述制約の下でハードウェアのアルゴリズムを記述したアルゴリズム記述のデータを入力する第1処理と、
    前記アルゴリズム記述のデータに含まれるハードウェア要素としてのパラメータを指示するハードウェア要素指示データを入力する第2処理と、
    前記第2処理で入力したハードウェア要素指示データで指示されたパラメータに関する前記アルゴリズム記述上でのデータ依存関係を特定するためのデータ依存関係維持記述を生成する第3処理と、
    前記アルゴリズム記述のデータをシステムレベル記述言語によるハードウェアモデルデータに変換すると共に前記データ依存関係維持記述で特定されたデータ依存関係を前記ハードウェアモデルに反映する第4処理と、を制御する言語変換処理プログラム。
  24. コンピュータ装置が実行することにより、
    プログラム記述言語を用いて所定の記述制約の下でハードウェアのアルゴリズムを記述したアルゴリズム記述のデータを入力する第1処理と、
    前記アルゴリズム記述に含まれるハードウェア要素としてのパラメータをパラメータの命名規則に従って判別する第2処理と、
    前記第2処理で判別されたパラメータに関する前記アルゴリズム記述上でのデータ依存関係を特定するためのデータ依存関係維持記述を生成する第3処理と、
    前記アルゴリズム記述のデータをシステムレベル記述言語によるハードウェアモデルのデータに変換すると共に、前記データ依存関係維持記述で特定されたデータ依存関係を前記ハードウェアモデルに反映する第4処理と、を制御する言語変換処理プログラム。
JP2011151529A 2011-07-08 2011-07-08 言語変換処理方法及び言語変換処理プログラム Active JP5751669B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011151529A JP5751669B2 (ja) 2011-07-08 2011-07-08 言語変換処理方法及び言語変換処理プログラム
US13/492,077 US8719744B2 (en) 2011-07-08 2012-06-08 Language conversion method and language conversion program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011151529A JP5751669B2 (ja) 2011-07-08 2011-07-08 言語変換処理方法及び言語変換処理プログラム

Publications (2)

Publication Number Publication Date
JP2013020329A true JP2013020329A (ja) 2013-01-31
JP5751669B2 JP5751669B2 (ja) 2015-07-22

Family

ID=47439441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011151529A Active JP5751669B2 (ja) 2011-07-08 2011-07-08 言語変換処理方法及び言語変換処理プログラム

Country Status (2)

Country Link
US (1) US8719744B2 (ja)
JP (1) JP5751669B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018220974A1 (ja) 2017-05-29 2018-12-06 富士通株式会社 SystemCモデル生成方法およびSystemCモデル生成プログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8555226B1 (en) * 2012-09-04 2013-10-08 Freescale Semiconductor, Inc. Automatic verification of dependency
WO2016162970A1 (ja) * 2015-04-08 2016-10-13 三菱電機株式会社 回路設計支援装置及び回路設計支援方法及び回路設計支援プログラム
US10545739B2 (en) * 2016-04-05 2020-01-28 International Business Machines Corporation LLVM-based system C compiler for architecture synthesis
CN111831285B (zh) * 2020-06-23 2023-03-14 西安电子科技大学 一种面向内存计算平台的代码转换方法、系统及应用
CN115993955B (zh) * 2023-03-23 2023-06-23 山东大学 对称密码算法的源代码生成和测试方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003016122A (ja) * 2001-06-29 2003-01-17 Matsushita Electric Ind Co Ltd 論理回路設計方法

Family Cites Families (9)

* 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
US5999734A (en) * 1997-10-21 1999-12-07 Ftl Systems, Inc. Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models
US20020152061A1 (en) * 2001-04-06 2002-10-17 Shintaro Shimogori Data processing system and design system
US20040111248A1 (en) * 2002-09-04 2004-06-10 Granny Nicola V. Polymorphic computational system and method
US8127113B1 (en) * 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US7904850B2 (en) * 2007-11-30 2011-03-08 Cebatech System and method for converting software to a register transfer (RTL) design
GB0811943D0 (en) * 2008-06-30 2008-07-30 Symbian Software Ltd Computing device
JP5056644B2 (ja) * 2008-07-18 2012-10-24 富士通セミコンダクター株式会社 データ変換装置、データ変換方法及びプログラム
EP2438545A2 (en) * 2009-06-02 2012-04-11 Vector Fabrics B.V. Improvements in embedded system development

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003016122A (ja) * 2001-06-29 2003-01-17 Matsushita Electric Ind Co Ltd 論理回路設計方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018220974A1 (ja) 2017-05-29 2018-12-06 富士通株式会社 SystemCモデル生成方法およびSystemCモデル生成プログラム

Also Published As

Publication number Publication date
US20130014091A1 (en) 2013-01-10
US8719744B2 (en) 2014-05-06
JP5751669B2 (ja) 2015-07-22

Similar Documents

Publication Publication Date Title
US11914933B2 (en) Generation of dynamic design flows for integrated circuits
US7962886B1 (en) Method and system for generating design constraints
JP5751669B2 (ja) 言語変換処理方法及び言語変換処理プログラム
Cerny et al. SVA: the power of assertions in systemVerilog
US9501269B2 (en) Automatic source code generation for accelerated function calls
US9665674B2 (en) Automating a microarchitecture design exploration environment
JP5039698B2 (ja) 複製されたロジックを使用するデバッグ及びテスト方法並びにシステム
US9235669B2 (en) Method and an apparatus for automatic processor design and verification
Schmidt et al. A new formal verification approach for hardware-dependent embedded system software
US7370312B1 (en) System and method for controlling simulation of hardware in a hardware development process
US10296673B1 (en) Mixed-language simulation
US9235670B2 (en) Method and an apparatus for automatic generation of verification environment for processor design and verification
JP2009230451A (ja) 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法
Ecker et al. Introducing model-of-things (mot) and model-of-design (mod) for simpler and more efficient hardware generators
US11513818B1 (en) Method, product, and system for integrating a hardware accelerator with an extensible processor
US8881074B2 (en) Device and method for refactoring hardware code
Dobis et al. Chiselverify: An open-source hardware verification library for chisel and scala
US20070271080A1 (en) Model generation method for software/hardware collaboration design
Goeders et al. Allowing software developers to debug HLS hardware
KR20190070960A (ko) 디버깅 시스템 및 방법
Ebeid et al. HDL code generation from UML/MARTE sequence diagrams for verification and synthesis
Jiang et al. PyH2: Using PyMTL3 to create productive and open-source hardware testing methodologies
Arvind et al. Getting formal verification into design flow
Lund Design and Application of a Co-Simulation Framework for Chisel
Loitz et al. Complete verification of weakly programmable ips against their operational isa model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150407

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150515

R150 Certificate of patent or registration of utility model

Ref document number: 5751669

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350