JP6495842B2 - 変換方法、変換プログラムおよび変換装置 - Google Patents

変換方法、変換プログラムおよび変換装置 Download PDF

Info

Publication number
JP6495842B2
JP6495842B2 JP2016027435A JP2016027435A JP6495842B2 JP 6495842 B2 JP6495842 B2 JP 6495842B2 JP 2016027435 A JP2016027435 A JP 2016027435A JP 2016027435 A JP2016027435 A JP 2016027435A JP 6495842 B2 JP6495842 B2 JP 6495842B2
Authority
JP
Japan
Prior art keywords
variable
program
conversion
data type
bit width
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
JP2016027435A
Other languages
English (en)
Other versions
JP2017146747A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016027435A priority Critical patent/JP6495842B2/ja
Publication of JP2017146747A publication Critical patent/JP2017146747A/ja
Application granted granted Critical
Publication of JP6495842B2 publication Critical patent/JP6495842B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は、変換方法、変換プログラムおよび変換装置に関する。
FPGA(Field Programmable Gate Array)等の設計は、動作仕様による動作レベル設計、動作を実現するRTL(Register Transfer Level)設計、論理素子によるゲートレベル設計、チップ上のレイアウト設計の工程により行われる。ここで、RTL設計においては、verilog等のハードウェア記述言語によってプログラムが記述されるが、このようなハードウェア記述言語によるプログラムの記述には、高いスキルが求められる等のデメリットがある。
そのため、動作すなわち記述が分かりやすく、過去の資産の流用性が高いC言語等のプログラム言語を用いて動作レベル設計を行い、高位合成により、C言語等のプログラム言語で記述された動作レベル設計のプログラムをverilog等のハードウェア記述言語で記述されたRTLのプログラムに変換することが知られている。
岡田 尚也、山本 亮、峯岸 孝行、「高位合成における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
しかしながら、従来のプログラムの変換方法には、変換後のプログラムを実行するハードウェアに多くの無駄を発生させるという問題があった。
例えば、C言語では、変数のビット幅は32ビット、64ビット等のバイト単位である。これに対し、ハードウェア記述言語では、1ビット単位で様々なビット幅を扱う。このため、例えば、ハードウェア記述言語ではビット幅が1ビットで済む変数であっても、C言語で記述された場合は少なくとも1バイト、すなわち8ビットのビット幅が必要になる。
そして、C言語で記述されたプログラムの変数を、そのままRTLのプログラムの変数に変換すると、変換後の変数のビット幅は少なくとも1バイトとなる。このため、C言語のプログラムをそのままRTLのプログラムに変換し、ハードウェア上で実行すると、ハードウェアには、リソース消費量の増大や、リソース消費量の増大にともなう通信の遅延等の無駄が発生することがある。
また、高位合成において、変数の値からビット幅を自動的に推定し最適化を行う方法があるが、このような方法を用いても、実際に変数にどのような範囲の値が代入されるかの解析は困難であり、使用する変数領域を削減することは難しかった。そのため、変換後のプログラムを実行するハードウェアに多くの無駄を発生させることを回避することは困難であった。
本発明の変換方法は、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力工程と、前記入力工程によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析工程と、前記解析工程によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換工程と、を含んだことを特徴とする。
また、本発明の変換プログラムは、コンピュータに、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力ステップと、前記入力ステップによって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析ステップと、前記解析ステップによって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換ステップと、を実行させることを特徴とする。
また、本発明の変換装置は、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力部と、前記入力部によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析部と、前記解析部によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換部と、を有することを特徴とする。
本発明によれば、変換後のプログラムを実行するハードウェアに多くの無駄が発生することを防止することができる。
図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は、プログラムが実行されることにより変換装置が実現されるコンピュータの一例を示す図である。
以下に、本願に係る変換装置、変換方法および変換プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
[第1の実施形態の概要]
まず、高位合成およびプリプロセッサについて、図1を用いて説明する。図1は、高位合成およびプリプロセッサについて説明するための図である。前述の通り、RTL設計においては、C言語等のプログラム言語で記述された動作レベル設計のプログラムは、高位合成により、verilog等のハードウェア記述言語で記述されたRTLのプログラムに変換される。そして、高位合成により生成されたRTLのプログラムは、論理合成およびレイアウト設計が行われた後、FPGAロードモジュールに出力される。
従来、高位合成の対象のプログラムは、C言語等によって記述されていた。しかしながら、高位合成の対象のプログラムを例えばC言語で記述することには、高位合成により生成されたプログラムを実行するハードウェアに多くの無駄を発生させるという問題があった。
例えば、verilogで記述されたプログラムにおいては、registerのビット幅を自由に定義することができる。一方、C言語はバイト境界を基本としているため、C言語で記述されたプログラムにおいては、ビット幅が8、16、32、64ビット等の、1バイトすなわち8ビットの整数倍であるような変数しか定義することができない。
このため、例えば、verilogであればビット幅が2ビットの変数として定義可能な、範囲が0〜3である変数であっても、C言語ではビット幅が8ビットの変数として定義される。具体的には、図2に示すように、C言語のプログラムでビット幅が8ビットの変数として定義された変数Aは、高位合成により変換された場合、verilogのプログラムにおいてもビット幅が8ビットのプログラムとして定義される。図2は、高位合成の一例を示す図である。
この結果、変数Aには0〜3、すなわち2ビットまでの値しか代入されない場合は、ハードウェアにおいて変換後のverilogプログラムを実行した際に、1つの変数ごとに最低でも6ビットの領域が無駄になることになる。
そこで、第1の実施形態においては、図1に示すように、高位合成の対象のプログラムとして、C言語の高位合成向け仕様のプログラムが用いられる。また、高位合成の対象のプログラムは、FPGA等で実行する前に、バグの検出等のために、IA(Intel Architecture)サーバ等でシミュレーションを行っておく必要がある。
ここで、IAサーバ等の既存のサーバは、C言語等の既存のプログラム言語で記述されたプログラムのシミュレーションを行うことはできるが、実施形態のプログラムであるC言語の高位合成向け仕様のプログラムのシミュレーションを行うことはできない。そのため、実施形態のプログラムのシミュレーションをIAサーバで行うためには、プリプロセッサを用いて実施形態のプログラムをC言語のプログラムに変換しておく必要がある。
このとき、図1に示すように、高位合成の対象のプログラムは、プリプロセッサによりC言語のプログラムに変換され、コンパイラによりコンパイルされた後、IAサーバ用ロードモジュールに出力され、IAサーバによってシミュレーションが行われる。
第1の実施形態の変換装置は、プリプロセッサとして機能するものであり、例えばIAサーバにおける実施形態のプログラムのシミュレーションを可能にするものである。そして、その結果、実施形態のプログラムを高位合成の対象のプログラムとして用いることができるようになるため、高位合成により生成されたRTLのプログラムを実行する際に、ハードウェアに多くの無駄が発生することを防止することができるようになる。
[第1の実施形態の構成]
図3を用いて、第1の実施形態の変換装置の構成について説明する。図3は、第1の実施形態に係る変換装置の構成を示すブロック図である。図3に示すように、変換装置10は、入力部11、解析部12、変換部13および出力部14を有する。また、変換装置10は、実施形態のプログラムの入力を受け付け、C言語のプログラムを出力する。
入力部11は、実施形態のプログラムの入力を受け付ける。実施形態のプログラムは、例えばビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムである。また、解析部12は、入力部11によって受け付けられたプログラムから、第1のデータ型を用いて定義された変数を取得する。また、変換部13は、解析部12によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する。また、出力部14は、変換によって生成されたC言語のプログラムを出力する。
図4を用いて、実施形態のプログラムの高位合成について説明する。図4は、第1の実施形態のプログラムの高位合成について説明するための図である。C言語では、ビット幅が1バイトの整数倍である変数しか定義することができないのに対し、図4に示すように、実施形態のプログラムでは、ビット幅が1バイトの整数倍でない変数を定義することができる。具体的には、実施形態のプログラムでは、ビット幅が2ビットのデータ型unit2_tや、ビット幅が18ビットのデータ型unit18_tといった、任意のビット幅のデータ型が使用可能である。
そして、図4に示すように、例えばビット幅が2ビットのデータ型であるunit2_tの変数Aが高位合成によりverilogに変換された場合、verilogにおける変数Aのビット幅は2ビットとなる。
(第1の変換方法)
ここで、変換部13が実施形態のプログラムをC言語のプログラムに変換する方法を、具体例を用いて説明する。まず、図5を用いて、第1の変換方法について説明する。図5は、第1の実施形態に係る第1の変換方法について説明するための図である。
第1の変換方法では、変換部13は、解析部12によって取得された実施形態のプログラムの変数を、ビット幅が1バイトの整数倍であって、当該変数より大きいビット幅の変数に変換する。例えば、図5に示すように、変換部13は、実施形態のプログラムのデータ型がunit2_tである変数Aを、C言語のプログラムのデータ型がunit8_tである変数に変換する。データ型がunit8_tである変数のビット幅は1バイトであり、変換前の変数のビット幅である2ビットより大きい。
(第2の変換方法)
第1の変換方法を用いた場合、シミュレーション時に値のオーバーフロー等のバグを検出できない場合がある。例えば、変数Aは本来ビット幅が2ビットであるため、シミュレーションにおいて変数Aに2ビットより大きい値、例えば4以上の数値を代入する処理が実行されると、値のオーバーフローエラーが発生しなければならない。しかしながら、変数Aは、第1の変換方法によってunit8_tの変数に変換されているため、シミュレーションにおいて例えば3ビットの数値である4を代入する処理が実行されてもエラーが発生しない。
そこで、第2の変換方法では、変換部13は、解析部12によって取得された実施形態のプログラムの変数を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。
C言語の構造体のメンバーに、ビットフィールドに指定したビット幅より大きいビット幅の値が代入される処理が行われた場合、エラーが発生する。このため、図6に示すように、変換部13は、実施形態のプログラムの変数を構造体のメンバーに変換し、当該メンバーのビットフィールドには、実施形態のプログラムにおけるビット幅を指定する。図6は、第1の実施形態に係る第2の変換方法を説明するための図である。
例えば、図6に示すように、変換部13は、ビット幅が2ビットの変数Aを、C言語の構造体tdataのメンバーAに変換し、メンバーAのビットフィールドに2を指定する。このとき、メンバーAの値は3であるため、シミュレーションにおいてtdata.A++という処理が実行され、メンバーAの値が4になると、ビット幅が2ビットを超えてしまうため、エラーが発生する。なお、A++とは、Aに1を足す処理を示している。
(第3の変換方法)
ただし、C言語の構造体のメンバーは配列とすることができないため、図7に示すように、例えば実施形態のプログラムで各要素のビット幅が2ビットである配列A[4]が定義されていた場合、第2の変換方法を用いて変換することができず、ビット幅が8ビットの変数の配列に変換せざるをえない。図7は、第1の実施形態に係る第2の変換方法の課題を説明するための図である。
そこで、第3の変換方法では、変換部13は、解析部12によって取得された変数が、第1のデータ型の変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。
図8に示すように、変換部13は、実施形態のプログラムの配列の各要素を構造体に変換し、当該構造体のメンバーのビットフィールドには、実施形態のプログラムにおけるビット幅を指定する。図8は、第1の実施形態に係る第3の変換方法を説明するための図である。
例えば、図8に示すように、変換部13は、4つの要素を持ち、各要素のビット幅が2ビットである配列A[4]を、C言語の構造体の配列tdata1[4]に変換する。また、変換部13は、構造体tdata1の各メンバーのビットフィールドに2を指定する。このとき、メンバーtdata1[0].Aの値は3であるため、シミュレーションにおいてtdata1[0].A++という処理が実行され、メンバーAの値が4になると、ビット幅が2ビットを超えてしまうため、エラーが発生する。
(第4の変換方法)
実施形態のプログラムでは、所定のビット幅の変数を、ビット幅が1ビットの変数を要素とする配列として定義してもよい。そして、第4の変換方法では、変換部13は、解析部12によって取得された変数が、ビット幅が1ビットの変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体のメンバーに変換する。
例えば、図9のA[12]は、ビット幅が1ビットの変数を要素とする配列である。図9は、第1の実施形態に係る第4の変換方法を説明するための図である。A[12]には、12ビットまでの値を代入することができる。例えば、2222は、二進数表記では100010101110と表すことができるため、12ビットである。
そして、変換部13は、A[12]を、ビット幅が1ビットの変数を要素とする配列の各要素をメンバーとする構造体tAに変換する。また、変換部13は、構造体tAの各メンバーのビットフィールドに1を指定する。
なお、A[12]はC言語においては配列を表す表記であるが、図9のように、bit_t A[12]=2222等と記述された場合は、解析部12および変換部13は、第4の変換方法による変換を行うための表記であると解釈するものとする。すなわち、解析部12および変換部13は、bit_t A[12]=2222が2222を二進数表記した100010101110の各ビットを、配列A[12]の各要素として解釈する。
さらに、実施形態のプログラムにおいては、A[6]=0のように、配列の要素の変更を行う場合と同じ記述により、の所定のビットを変更することができる。すなわち、A[6]=0は、100010101110の左から7番目の1を0に変更することを示している。また、変換部13は、実施形態のプログラムのA[6]=0を、C言語において構造体tAのA6というメンバーを0にすることを意味するtA.A6=0に変換する。
また、実施形態のプログラムにおいては、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を生成するコードに変換する。
(第5の変換方法)
また、例えばverilogで定義可能な変数のビット幅には制限がないが、C言語で定義可能な変数のビット幅は64ビットであるため、図10に示すように、実施形態のプログラムにおいて要素数が64を超える配列が定義されている場合、変換部13は、当該配列を第4の変換方法では変換することができない。そのため、要素数が64を超える配列が定義されている場合、図10に示すように、変換部13は、当該配列を複数の構造体に分割して変換する。図10は、第1の実施形態に係る第5の変換方法を説明するための図である。
図10に示すように、変換部13は、120ビットの変数を表すB[120]を、C言語の構造体tB1およびtB2に分割して変換する。このとき、tB1には64個のメンバー(B0〜B63)が指定され、tB2には56個のメンバー(B0〜B55)が設定される。なお、このとき、tB2の57個目以降のメンバー(B56〜B63)は使用されない。
[第1の実施形態の処理]
図11を用いて、実施形態のプログラムを用いてシミュレーションを行う際の処理について説明する。図11は、第1の実施形態に係る変換装置を用いたシミュレーションの処理の流れを示すフローチャートである。図11に示すように、まず、変換装置10に実施形態のプログラムが入力される(ステップS11)。そして、変換装置10は、第1の変換方法から第5の変換方法のいずれか、または複数を用いて入力されたプログラムを変換する(ステップS12)。そして、変換装置10は、変換したC言語のプログラムを出力する(ステップS13)。
次に、変換装置10によって出力されたC言語のプログラムは、コンパイラによってコンパイルされる(ステップS14)。そして、コンパイルされたC言語のプログラムは、IAサーバ用ロードモジュールへ出力され、シミュレーションが行われる(ステップS15)。
[第1の実施形態の効果]
入力部11は、ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける。そして、解析部12は、入力部11によって受け付けられたプログラムから、第1のデータ型を用いて定義された変数を取得する。そして、変換部13は、解析部12によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する。
これにより、IAサーバ等を用いて、任意のビット幅の変数を定義可能なプログラムのシミュレーションを行い、バグ等をあらかじめ検知することができるようになる。その結果、任意のビット幅の変数を定義可能なプログラムの高位合成を行うことができるようになり、高位合成されたプログラムを実行するハードウェアに、リソース消費量の増大や、リソース消費量の増大にともなう通信の遅延等の無駄が発生することを防止することができるようになる。
変換部13は、解析部12によって取得された変数を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。これにより、シミュレーションにおいて値のオーバーフローを検知することができるようになる。
変換部13は、解析部12によって取得された変数が、第1のデータ型の変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体に変換する。これにより、シミュレーションにおいて、配列についても値のオーバーフローを検知することができるようになる。
変換部13は、解析部12によって取得された変数が、ビット幅が1ビットの変数を要素とする配列である場合、配列の各要素を、第2のデータ型の変数であるメンバーを有する構造体であって、あらかじめ指定されたビット幅より大きいビット幅の数値がメンバーに代入された場合にはエラーを発生させる構造体のメンバーに変換する。これにより、変数の任意のビットを操作できるようになる。
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)および当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、変換部13は、printf()等の出力関数はそのまま変換するようにしてもよい。これにより、変換装置10は、printf()等を用いたデバッグに影響を与えることなく変換を行うことができる。
[プログラム]
一実施形態として、変換装置は、パッケージソフトウェアやオンラインソフトウェアとして上記の変換を実行する変換プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の変換プログラムを情報処理装置に実行させることにより、情報処理装置を変換装置として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
また、変換装置は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の変換に関するサービスを提供するサーバ装置として実装することもできる。例えば、変換装置は、高位合成仕様のプログラムを入力とし、C言語のプログラムを出力とする変換サービスを提供するサーバ装置として実装される。この場合、変換装置は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記の変換に関するサービスを提供するクラウドとして実装することとしてもかまわない。
図12は、プログラムが実行されることにより変換装置が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
メモリ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に接続される。
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、変換装置の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、変換装置における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093およびプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093およびプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
10 変換装置
11 入力部
12 解析部
13 変換部
14 出力部

Claims (6)

  1. ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力工程と、
    前記入力工程によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析工程と、
    前記解析工程によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換工程と、
    を含んだことを特徴とする変換方法であって、
    前記変換工程は、前記解析工程によって取得された変数が、前記第1のデータ型の変数を要素とする第1の配列である場合、前記第1の配列の各要素を、前記第1の配列と同数の要素を持つ配列の各要素である構造体であって、メンバーが前記第2のデータ型の変数であり、あらかじめ指定されたビット幅より大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする変換方法。
  2. ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力工程と、
    前記入力工程によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析工程と、
    前記解析工程によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換工程と、
    を含んだことを特徴とする変換方法であって、
    前記変換工程は、前記解析工程によって取得された変数を二進数表記した場合の各ビットを要素とする第1の配列の各要素を、前記第1の配列と同数の要素を持つ配列の各要素である構造体であって、メンバーが前記第2のデータ型の変数であり、1ビットより大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする変換方法。
  3. コンピュータに、
    ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力ステップと、
    前記入力ステップによって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析ステップと、
    前記解析ステップによって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換ステップと、
    を実行させることを特徴とする変換プログラムであって、
    前記変換ステップは、前記解析ステップによって取得された変数が、前記第1のデータ型の変数を要素とする第1の配列である場合、前記第1の配列の各要素を、前記第1の配列と同数の要素を持つ配列の各要素である構造体であって、メンバーが前記第2のデータ型の変数であり、あらかじめ指定されたビット幅より大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする変換プログラム。
  4. コンピュータに、
    ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力ステップと、
    前記入力ステップによって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析ステップと、
    前記解析ステップによって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換ステップと、
    を実行させることを特徴とする変換プログラムであって、
    前記変換ステップは、前記解析ステップによって取得された変数を二進数表記した場合の各ビットを要素とする第1の配列の各要素を、前記第1の配列と同数の要素を持つ配列の各要素である構造体であって、メンバーが前記第2のデータ型の変数であり、1ビットより大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする変換プログラム。
  5. ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力部と、
    前記入力部によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析部と、
    前記解析部によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換部と、
    を有することを特徴とする変換装置であって、
    前記変換部は、前記解析部によって取得された変数が、前記第1のデータ型の変数を要素とする第1の配列である場合、前記第1の配列の各要素を、前記第1の配列と同数の要素を持つ配列の各要素である構造体であって、メンバーが前記第2のデータ型の変数であり、あらかじめ指定されたビット幅より大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする変換装置。
  6. ビット幅が1バイトの整数倍でない第1のデータ型を用いて変数が定義されたプログラムの入力を受け付ける入力部と、
    前記入力部によって受け付けられた前記プログラムから、前記第1のデータ型を用いて定義された変数を取得する解析部と、
    前記解析部によって取得された変数を、ビット幅が1バイトの整数倍である第2のデータ型を用いて定義された変数に変換する変換部と、
    を有することを特徴とする変換装置であって、
    前記変換部は、前記解析部によって取得された変数を二進数表記した場合の各ビットを要素とする第1の配列の各要素を、前記第1の配列と同数の要素を持つ配列の各要素である構造体であって、メンバーが前記第2のデータ型の変数であり、1ビットより大きいビット幅の数値が前記メンバーに代入された場合にはエラーを発生させる構造体に変換することを特徴とする変換装置。
JP2016027435A 2016-02-16 2016-02-16 変換方法、変換プログラムおよび変換装置 Active JP6495842B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016027435A JP6495842B2 (ja) 2016-02-16 2016-02-16 変換方法、変換プログラムおよび変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016027435A JP6495842B2 (ja) 2016-02-16 2016-02-16 変換方法、変換プログラムおよび変換装置

Publications (2)

Publication Number Publication Date
JP2017146747A JP2017146747A (ja) 2017-08-24
JP6495842B2 true JP6495842B2 (ja) 2019-04-03

Family

ID=59681454

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016027435A Active JP6495842B2 (ja) 2016-02-16 2016-02-16 変換方法、変換プログラムおよび変換装置

Country Status (1)

Country Link
JP (1) JP6495842B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6542848B2 (ja) 2017-07-28 2019-07-10 株式会社アマダホールディングス レーザ切断用ノズル製造方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10260997A (ja) * 1997-03-19 1998-09-29 Toshiba Corp 論理シミュレーション・システム
GB2355085A (en) * 1999-10-05 2001-04-11 Sharp Kk Translating a source operation to a target operation
JP2005346272A (ja) * 2004-06-01 2005-12-15 Sony Corp 構造体型配列のデータのメモリ使用方法

Also Published As

Publication number Publication date
JP2017146747A (ja) 2017-08-24

Similar Documents

Publication Publication Date Title
US11042675B2 (en) Systems and methods for automatically realizing models for co-simulation
US11106437B2 (en) Lookup table optimization for programming languages that target synchronous digital circuits
JP2022036889A (ja) チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
US8990739B2 (en) Model-based retiming with functional equivalence constraints
US9600384B2 (en) System-on-chip verification
Damavandpeyma et al. Modeling static-order schedules in synchronous dataflow graphs
US20160070844A1 (en) Selectively reducing graph based analysis pessimism
Darulova et al. Synthesis of fixed-point programs
KR20210112330A (ko) 스레드 실행 순서를 유지하는 동기식 디지털 회로를 생성하는 언어 및 컴파일러
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
US8448113B2 (en) Efficiently applying a single timing assertion to multiple timing points in a circuit using creating a deffinition
JP6495842B2 (ja) 変換方法、変換プログラムおよび変換装置
JP7310921B2 (ja) 検査装置、検査方法及び検査プログラム
US10929584B1 (en) Environmental modification testing for design correctness with formal verification
Khan et al. Accelerating SpMV multiplication in probabilistic model checkers using GPUs
KR102656567B1 (ko) 다양한 유형의 신경망 모델을 변환 및 활용할 수 있도록 하는 방법 및 장치
US8281263B2 (en) Propagating design tolerances to shape tolerances for lithography
Karandikar et al. Cdpu: Co-designing compression and decompression processing units for hyperscale systems
Lee et al. External don’t cares in logic synthesis
US20180137217A1 (en) Context-dependent useful skew estimation for optimization, placement, and clock tree synthesis
US20230325476A1 (en) Obfuscation device, obfuscation method, and obfuscation program
US9769025B2 (en) Predicting the performance of a multi-stage communications network under load from multiple communicating servers
JP6674048B2 (ja) 判定装置、判定方法及び判定プログラム
Schaumont et al. Data flow modeling and transformation
JP6788249B2 (ja) 生成装置、生成方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190110

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190307

R150 Certificate of patent or registration of utility model

Ref document number: 6495842

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150