図面 (/)

技術 変換方法、変換プログラムおよび変換装置

出願人 日本電信電話株式会社
発明者 金子斉
出願日 2016年2月16日 (5年8ヶ月経過) 出願番号 2016-027435
公開日 2017年8月24日 (4年2ヶ月経過) 公開番号 2017-146747
状態 特許登録済
技術分野 特別なプログラム実行装置
主要キーワード 二進数表記 オーバーフローエラー C言語 オンラインソフト ゲートレベル設計 リソース消費量 汎用プログラム 実行機構
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年8月24日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (13)

課題

変換後のプログラムを実行するハードウェアに多くの無駄が発生することを防止する。

解決手段

入力部11は、例えばビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける。そして、解析部12は、入力部11によって受け付けられたプログラムから、第1のデータ型を用いて定義された変数を取得する。そして、変換部13は、解析部12によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する。

概要

背景

FPGA(Field Programmable Gate Array)等の設計は、動作仕様による動作レベル設計、動作を実現するRTL(Register Transfer Level)設計、論理素子によるゲートレベル設計チップ上のレイアウト設計の工程により行われる。ここで、RTL設計においては、verilog等のハードウェア記述言語によってプログラム記述されるが、このようなハードウェア記述言語によるプログラムの記述には、高いスキルが求められる等のデメリットがある。

そのため、動作すなわち記述が分かりやすく、過去の資産流用性が高いC言語等のプログラム言語を用いて動作レベル設計を行い、高位合成により、C言語等のプログラム言語で記述された動作レベル設計のプログラムをverilog等のハードウェア記述言語で記述されたRTLのプログラムに変換することが知られている。

概要

変換後のプログラムを実行するハードウェアに多くの無駄が発生することを防止する。入力部11は、例えばビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける。そして、解析部12は、入力部11によって受け付けられたプログラムから、第1のデータ型を用いて定義された変数を取得する。そして、変換部13は、解析部12によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する。

目的

また、変換装置は、ユーザが使用する端末装置クライアントとし、当該クライアントに上記の変換に関するサービスを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力工程と、前記入力工程によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析工程と、前記解析工程によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換工程と、を含んだことを特徴とする変換方法

請求項2

前記変換工程は、前記解析工程によって取得された変数を、前記第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする請求項1に記載の変換方法。

請求項3

前記変換工程は、前記解析工程によって取得された変数が、前記第1のデータ型の変数を要素とする配列である場合、前記配列の各要素を、前記第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする請求項1に記載の変換方法。

請求項4

前記変換工程は、前記解析工程によって取得された変数が、ビット幅が1ビットの変数を要素とする配列である場合、前記配列の各要素を、前記第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体のメンバーに変換することを特徴とする請求項1に記載の変換方法。

請求項5

コンピュータに、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力ステップと、前記入力ステップによって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析ステップと、前記解析ステップによって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換ステップと、を実行させることを特徴とする変換プログラム

請求項6

ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力部と、前記入力部によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析部と、前記解析部によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換部と、を有することを特徴とする変換装置

技術分野

0001

本発明は、変換方法変換プログラムおよび変換装置に関する。

背景技術

0002

FPGA(Field Programmable Gate Array)等の設計は、動作仕様による動作レベル設計、動作を実現するRTL(Register Transfer Level)設計、論理素子によるゲートレベル設計チップ上のレイアウト設計の工程により行われる。ここで、RTL設計においては、verilog等のハードウェア記述言語によってプログラム記述されるが、このようなハードウェア記述言語によるプログラムの記述には、高いスキルが求められる等のデメリットがある。

0003

そのため、動作すなわち記述が分かりやすく、過去の資産流用性が高いC言語等のプログラム言語を用いて動作レベル設計を行い、高位合成により、C言語等のプログラム言語で記述された動作レベル設計のプログラムをverilog等のハードウェア記述言語で記述されたRTLのプログラムに変換することが知られている。

先行技術

0004

岡田 尚也、山本 亮、峯孝行、「高位合成におけるFIRフィルタのDSPマクロ割当て自動化」、2015年電子情報通信学会総合大会A-3-2
西洋平、谷口 一徹、冨山 宏之、「FPGA高位合成における関数インライン展開の評価」、2015年 電子情報通信学会総合大会 AS-1-2
若林 一敏、「ソフトウェアプログラムからハードウェア記述を合成する高位合成技術−プロセッサ以外の汎用プログラム実行機構−」IEICE Fundamentals Review Vol.6 No.1 pp.37-50
Benjamin CARRION SCHAFER,Yusuke IGUCHI,Wataru TAKAHASHI,Shingo NAGATANI,Kazutoshi WAKABAYASHI,“Fixed Point Data Type Modeling for High Level Synthesis”,2010 IEICE TRANSACTIONS on Electronics Vol.E93-C No.3 pp.361-368

発明が解決しようとする課題

0005

しかしながら、従来のプログラムの変換方法には、変換後のプログラムを実行するハードウェアに多くの無駄を発生させるという問題があった。

0006

例えば、C言語では、変数ビット幅は32ビット、64ビット等のバイト単位である。これに対し、ハードウェア記述言語では、1ビット単位で様々なビット幅を扱う。このため、例えば、ハードウェア記述言語ではビット幅が1ビットで済む変数であっても、C言語で記述された場合は少なくとも1バイト、すなわち8ビットのビット幅が必要になる。

0007

そして、C言語で記述されたプログラムの変数を、そのままRTLのプログラムの変数に変換すると、変換後の変数のビット幅は少なくとも1バイトとなる。このため、C言語のプログラムをそのままRTLのプログラムに変換し、ハードウェア上で実行すると、ハードウェアには、リソース消費量の増大や、リソース消費量の増大にともなう通信の遅延等の無駄が発生することがある。

0008

また、高位合成において、変数の値からビット幅を自動的に推定し最適化を行う方法があるが、このような方法を用いても、実際に変数にどのような範囲の値が代入されるかの解析は困難であり、使用する変数領域を削減することは難しかった。そのため、変換後のプログラムを実行するハードウェアに多くの無駄を発生させることを回避することは困難であった。

課題を解決するための手段

0009

本発明の変換方法は、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力工程と、前記入力工程によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析工程と、前記解析工程によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換工程と、を含んだことを特徴とする。

0010

また、本発明の変換プログラムは、コンピュータに、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力ステップと、前記入力ステップによって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析ステップと、前記解析ステップによって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換ステップと、を実行させることを特徴とする。

0011

また、本発明の変換装置は、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力部と、前記入力部によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析部と、前記解析部によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換部と、を有することを特徴とする。

発明の効果

0012

本発明によれば、変換後のプログラムを実行するハードウェアに多くの無駄が発生することを防止することができる。

図面の簡単な説明

0013

図1は、高位合成およびプリプロセッサについて説明するための図である。
図2は、高位合成の一例を示す図である。
図3は、第1の実施形態に係る変換装置の構成を示すブロック図である。
図4は、第1の実施形態のプログラムの高位合成について説明するための図である。
図5は、第1の実施形態に係る第1の変換方法について説明するための図である。
図6は、第1の実施形態に係る第2の変換方法を説明するための図である。
図7は、第1の実施形態に係る第2の変換方法の課題を説明するための図である。
図8は、第1の実施形態に係る第3の変換方法を説明するための図である。
図9は、第1の実施形態に係る第4の変換方法を説明するための図である。
図10は、第1の実施形態に係る第5の変換方法を説明するための図である。
図11は、第1の実施形態に係る変換装置を用いたシミュレーションの処理の流れを示すフローチャートである。
図12は、プログラムが実行されることにより変換装置が実現されるコンピュータの一例を示す図である。

実施例

0014

以下に、本願に係る変換装置、変換方法および変換プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。

0015

[第1の実施形態の概要
まず、高位合成およびプリプロセッサについて、図1を用いて説明する。図1は、高位合成およびプリプロセッサについて説明するための図である。前述の通り、RTL設計においては、C言語等のプログラム言語で記述された動作レベル設計のプログラムは、高位合成により、verilog等のハードウェア記述言語で記述されたRTLのプログラムに変換される。そして、高位合成により生成されたRTLのプログラムは、論理合成およびレイアウト設計が行われた後、FPGAロードモジュールに出力される。

0016

従来、高位合成の対象のプログラムは、C言語等によって記述されていた。しかしながら、高位合成の対象のプログラムを例えばC言語で記述することには、高位合成により生成されたプログラムを実行するハードウェアに多くの無駄を発生させるという問題があった。

0017

例えば、verilogで記述されたプログラムにおいては、registerのビット幅を自由に定義することができる。一方、C言語はバイト境界を基本としているため、C言語で記述されたプログラムにおいては、ビット幅が8、16、32、64ビット等の、1バイトすなわち8ビットの整数倍であるような変数しか定義することができない。

0018

このため、例えば、verilogであればビット幅が2ビットの変数として定義可能な、範囲が0〜3である変数であっても、C言語ではビット幅が8ビットの変数として定義される。具体的には、図2に示すように、C言語のプログラムでビット幅が8ビットの変数として定義された変数Aは、高位合成により変換された場合、verilogのプログラムにおいてもビット幅が8ビットのプログラムとして定義される。図2は、高位合成の一例を示す図である。

0019

この結果、変数Aには0〜3、すなわち2ビットまでの値しか代入されない場合は、ハードウェアにおいて変換後のverilogプログラムを実行した際に、1つの変数ごと最低でも6ビットの領域が無駄になることになる。

0020

そこで、第1の実施形態においては、図1に示すように、高位合成の対象のプログラムとして、C言語の高位合成向け仕様のプログラムが用いられる。また、高位合成の対象のプログラムは、FPGA等で実行する前に、バグの検出等のために、IA(Intel Architecture)サーバ等でシミュレーションを行っておく必要がある。

0021

ここで、IAサーバ等の既存のサーバは、C言語等の既存のプログラム言語で記述されたプログラムのシミュレーションを行うことはできるが、実施形態のプログラムであるC言語の高位合成向け仕様のプログラムのシミュレーションを行うことはできない。そのため、実施形態のプログラムのシミュレーションをIAサーバで行うためには、プリプロセッサを用いて実施形態のプログラムをC言語のプログラムに変換しておく必要がある。

0022

このとき、図1に示すように、高位合成の対象のプログラムは、プリプロセッサによりC言語のプログラムに変換され、コンパイラによりコンパイルされた後、IAサーバ用ロードモジュールに出力され、IAサーバによってシミュレーションが行われる。

0023

第1の実施形態の変換装置は、プリプロセッサとして機能するものであり、例えばIAサーバにおける実施形態のプログラムのシミュレーションを可能にするものである。そして、その結果、実施形態のプログラムを高位合成の対象のプログラムとして用いることができるようになるため、高位合成により生成されたRTLのプログラムを実行する際に、ハードウェアに多くの無駄が発生することを防止することができるようになる。

0024

[第1の実施形態の構成]
図3を用いて、第1の実施形態の変換装置の構成について説明する。図3は、第1の実施形態に係る変換装置の構成を示すブロック図である。図3に示すように、変換装置10は、入力部11、解析部12、変換部13および出力部14を有する。また、変換装置10は、実施形態のプログラムの入力を受け付け、C言語のプログラムを出力する。

0025

入力部11は、実施形態のプログラムの入力を受け付ける。実施形態のプログラムは、例えばビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムである。また、解析部12は、入力部11によって受け付けられたプログラムから、第1のデータ型を用いて定義された変数を取得する。また、変換部13は、解析部12によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する。また、出力部14は、変換によって生成されたC言語のプログラムを出力する。

0026

図4を用いて、実施形態のプログラムの高位合成について説明する。図4は、第1の実施形態のプログラムの高位合成について説明するための図である。C言語では、ビット幅が1バイトの整数倍である変数しか定義することができないのに対し、図4に示すように、実施形態のプログラムでは、ビット幅が1バイトの整数倍でない変数を定義することができる。具体的には、実施形態のプログラムでは、ビット幅が2ビットのデータ型unit2_tや、ビット幅が18ビットのデータ型unit18_tといった、任意のビット幅のデータ型が使用可能である。

0027

そして、図4に示すように、例えばビット幅が2ビットのデータ型であるunit2_tの変数Aが高位合成によりverilogに変換された場合、verilogにおける変数Aのビット幅は2ビットとなる。

0028

(第1の変換方法)
ここで、変換部13が実施形態のプログラムをC言語のプログラムに変換する方法を、具体例を用いて説明する。まず、図5を用いて、第1の変換方法について説明する。図5は、第1の実施形態に係る第1の変換方法について説明するための図である。

0029

第1の変換方法では、変換部13は、解析部12によって取得された実施形態のプログラムの変数を、ビット幅が1バイトの整数倍であって、当該変数より大きいビット幅の変数に変換する。例えば、図5に示すように、変換部13は、実施形態のプログラムのデータ型がunit2_tである変数Aを、C言語のプログラムのデータ型がunit8_tである変数に変換する。データ型がunit8_tである変数のビット幅は1バイトであり、変換前の変数のビット幅である2ビットより大きい。

0030

(第2の変換方法)
第1の変換方法を用いた場合、シミュレーション時に値のオーバーフロー等のバグを検出できない場合がある。例えば、変数Aは本来ビット幅が2ビットであるため、シミュレーションにおいて変数Aに2ビットより大きい値、例えば4以上の数値を代入する処理が実行されると、値のオーバーフローエラーが発生しなければならない。しかしながら、変数Aは、第1の変換方法によってunit8_tの変数に変換されているため、シミュレーションにおいて例えば3ビットの数値である4を代入する処理が実行されてもエラーが発生しない。

0031

そこで、第2の変換方法では、変換部13は、解析部12によって取得された実施形態のプログラムの変数を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。

0032

C言語の構造体のメンバーに、ビットフィールドに指定したビット幅より大きいビット幅の値が代入される処理が行われた場合、エラーが発生する。このため、図6に示すように、変換部13は、実施形態のプログラムの変数を構造体のメンバーに変換し、当該メンバーのビットフィールドには、実施形態のプログラムにおけるビット幅を指定する。図6は、第1の実施形態に係る第2の変換方法を説明するための図である。

0033

例えば、図6に示すように、変換部13は、ビット幅が2ビットの変数Aを、C言語の構造体tdataのメンバーAに変換し、メンバーAのビットフィールドに2を指定する。このとき、メンバーAの値は3であるため、シミュレーションにおいてtdata.A++という処理が実行され、メンバーAの値が4になると、ビット幅が2ビットを超えてしまうため、エラーが発生する。なお、A++とは、Aに1を足す処理を示している。

0034

(第3の変換方法)
ただし、C言語の構造体のメンバーは配列とすることができないため、図7に示すように、例えば実施形態のプログラムで各要素のビット幅が2ビットである配列A[4]が定義されていた場合、第2の変換方法を用いて変換することができず、ビット幅が8ビットの変数の配列に変換せざるをえない。図7は、第1の実施形態に係る第2の変換方法の課題を説明するための図である。

0035

そこで、第3の変換方法では、変換部13は、解析部12によって取得された変数が、第1のデータ型の変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。

0036

図8に示すように、変換部13は、実施形態のプログラムの配列の各要素を構造体に変換し、当該構造体のメンバーのビットフィールドには、実施形態のプログラムにおけるビット幅を指定する。図8は、第1の実施形態に係る第3の変換方法を説明するための図である。

0037

例えば、図8に示すように、変換部13は、4つの要素を持ち、各要素のビット幅が2ビットである配列A[4]を、C言語の構造体の配列tdata1[4]に変換する。また、変換部13は、構造体tdata1の各メンバーのビットフィールドに2を指定する。このとき、メンバーtdata1[0].Aの値は3であるため、シミュレーションにおいてtdata1[0].A++という処理が実行され、メンバーAの値が4になると、ビット幅が2ビットを超えてしまうため、エラーが発生する。

0038

(第4の変換方法)
実施形態のプログラムでは、所定のビット幅の変数を、ビット幅が1ビットの変数を要素とする配列として定義してもよい。そして、第4の変換方法では、変換部13は、解析部12によって取得された変数が、ビット幅が1ビットの変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体のメンバーに変換する。

0039

例えば、図9のA[12]は、ビット幅が1ビットの変数を要素とする配列である。図9は、第1の実施形態に係る第4の変換方法を説明するための図である。A[12]には、12ビットまでの値を代入することができる。例えば、2222は、二進数表記では100010101110と表すことができるため、12ビットである。

0040

そして、変換部13は、A[12]を、ビット幅が1ビットの変数を要素とする配列の各要素をメンバーとする構造体tAに変換する。また、変換部13は、構造体tAの各メンバーのビットフィールドに1を指定する。

0041

なお、A[12]はC言語においては配列を表す表記であるが、図9のように、bit_t A[12]=2222等と記述された場合は、解析部12および変換部13は、第4の変換方法による変換を行うための表記であると解釈するものとする。すなわち、解析部12および変換部13は、bit_t A[12]=2222が2222を二進数表記した100010101110の各ビットを、配列A[12]の各要素として解釈する。

0042

さらに、実施形態のプログラムにおいては、A[6]=0のように、配列の要素の変更を行う場合と同じ記述により、の所定のビットを変更することができる。すなわち、A[6]=0は、100010101110の左から7番目の1を0に変更することを示している。また、変換部13は、実施形態のプログラムのA[6]=0を、C言語において構造体tAのA6というメンバーを0にすることを意味するtA.A6=0に変換する。

0043

また、実施形態のプログラムにおいては、X=A[2:10]のように、A[12]の指定した範囲を取得することができる。X=A[2:10]は、A[6]=0によって変更された後のA[12]=100010001110(十進数表記で2190)の左から数えて3番目から11番目までの範囲のビット、すなわち001000111(十進数表記で71)である。また、変換部13は、実施形態のプログラムのX=A[2:10]を、X|=tA.A10<<8のようなC言語のビット演算により、構造体から取得したビットで001000111を生成するコードに変換する。

0044

(第5の変換方法)
また、例えばverilogで定義可能な変数のビット幅には制限がないが、C言語で定義可能な変数のビット幅は64ビットであるため、図10に示すように、実施形態のプログラムにおいて要素数が64を超える配列が定義されている場合、変換部13は、当該配列を第4の変換方法では変換することができない。そのため、要素数が64を超える配列が定義されている場合、図10に示すように、変換部13は、当該配列を複数の構造体に分割して変換する。図10は、第1の実施形態に係る第5の変換方法を説明するための図である。

0045

図10に示すように、変換部13は、120ビットの変数を表すB[120]を、C言語の構造体tB1およびtB2に分割して変換する。このとき、tB1には64個のメンバー(B0〜B63)が指定され、tB2には56個のメンバー(B0〜B55)が設定される。なお、このとき、tB2の57個目以降のメンバー(B56〜B63)は使用されない。

0046

[第1の実施形態の処理]
図11を用いて、実施形態のプログラムを用いてシミュレーションを行う際の処理について説明する。図11は、第1の実施形態に係る変換装置を用いたシミュレーションの処理の流れを示すフローチャートである。図11に示すように、まず、変換装置10に実施形態のプログラムが入力される(ステップS11)。そして、変換装置10は、第1の変換方法から第5の変換方法のいずれか、または複数を用いて入力されたプログラムを変換する(ステップS12)。そして、変換装置10は、変換したC言語のプログラムを出力する(ステップS13)。

0047

次に、変換装置10によって出力されたC言語のプログラムは、コンパイラによってコンパイルされる(ステップS14)。そして、コンパイルされたC言語のプログラムは、IAサーバ用ロードモジュールへ出力され、シミュレーションが行われる(ステップS15)。

0048

[第1の実施形態の効果]
入力部11は、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける。そして、解析部12は、入力部11によって受け付けられたプログラムから、第1のデータ型を用いて定義された変数を取得する。そして、変換部13は、解析部12によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する。

0049

これにより、IAサーバ等を用いて、任意のビット幅の変数を定義可能なプログラムのシミュレーションを行い、バグ等をあらかじめ検知することができるようになる。その結果、任意のビット幅の変数を定義可能なプログラムの高位合成を行うことができるようになり、高位合成されたプログラムを実行するハードウェアに、リソース消費量の増大や、リソース消費量の増大にともなう通信の遅延等の無駄が発生することを防止することができるようになる。

0050

変換部13は、解析部12によって取得された変数を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。これにより、シミュレーションにおいて値のオーバーフローを検知することができるようになる。

0051

変換部13は、解析部12によって取得された変数が、第1のデータ型の変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。これにより、シミュレーションにおいて、配列についても値のオーバーフローを検知することができるようになる。

0052

変換部13は、解析部12によって取得された変数が、ビット幅が1ビットの変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体のメンバーに変換する。これにより、変数の任意のビットを操作できるようになる。

0053

システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)および当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。

0054

また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。

0055

また、変換部13は、printf()等の出力関数はそのまま変換するようにしてもよい。これにより、変換装置10は、printf()等を用いたデバッグに影響を与えることなく変換を行うことができる。

0056

[プログラム]
一実施形態として、変換装置は、パッケージソフトウェアオンラインソフトウェアとして上記の変換を実行する変換プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の変換プログラムを情報処理装置に実行させることにより、情報処理装置を変換装置として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型パーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。

0057

また、変換装置は、ユーザが使用する端末装置クライアントとし、当該クライアントに上記の変換に関するサービスを提供するサーバ装置として実装することもできる。例えば、変換装置は、高位合成仕様のプログラムを入力とし、C言語のプログラムを出力とする変換サービスを提供するサーバ装置として実装される。この場合、変換装置は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記の変換に関するサービスを提供するクラウドとして実装することとしてもかまわない。

0058

図12は、プログラムが実行されることにより変換装置が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。

0059

メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスク光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。

0060

ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、変換装置の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、変換装置における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。

0061

また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。

0062

なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093およびプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093およびプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。

0063

10変換装置
11 入力部
12解析部
13 変換部
14 出力部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ