JP6091140B2 - 情報処理装置及び情報処理方法及びプログラム - Google Patents
情報処理装置及び情報処理方法及びプログラム Download PDFInfo
- Publication number
- JP6091140B2 JP6091140B2 JP2012221483A JP2012221483A JP6091140B2 JP 6091140 B2 JP6091140 B2 JP 6091140B2 JP 2012221483 A JP2012221483 A JP 2012221483A JP 2012221483 A JP2012221483 A JP 2012221483A JP 6091140 B2 JP6091140 B2 JP 6091140B2
- Authority
- JP
- Japan
- Prior art keywords
- sequence
- program code
- array
- extracted
- sequences
- 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
Links
Images
Description
特に、半導体集積回路設計に用いられるプログラムコードを解析し、プログラムコードの書換えを行う装置に関する。
このRTLを論理合成ツールに入力することにより、レジスタ間の機能を全てのゲートに割り当てたゲートレベルを出力させ、これを配置配線する、という工程で半導体集積回路を設計していた。
これに対して、近年では、RTLよりも抽象度の高い動作記述からRTLを自動的に生成する高位合成(あるいは、動作合成とも呼ばれる)技術が提唱されており、これを実現する高位合成ツールも市販されている。
上述の動作記述用の言語には、コンピュータプログラム用の言語として一般的に普及しているCやC++等の言語が用いられることが多い。
動作記述では、ハードウェアで実現すべき動作のみを記述することは可能であるが、クロックやリセット、レジスタ等の半導体集積回路のハードウェアの概念は記述できない。
このため、同じ機能を持つ半導体集積回路用の動作記述とRTL記述とを比較した場合、動作記述は、RTL記述よりも記述量が少なく、この結果として手書き設計に要する設計期間が短くて済む。
また、動作記述の中で配列の構文は、まとまった記憶領域をプログラムから効率的に使用するために用いられる。
動作記述の中で使用された配列は、記述したアルゴリズムにおいて必要な記憶素子を表すことになる。
高位合成においても、配列は、一般的にメモリやレジスタ等の記憶素子へ割り当てられる。
さらに、配列は大きなサイズで記述されることが多く、この場合、高位合成においても、そのまま大きなサイズの記憶素子へ割り当てられる。
また、SRAM(Static Random Access Memory)等のメモリ素子は、面積効率が高い反面、記憶領域の個々の要素の読み出しや書き込みを行うアドレスデコーダの並列化数が制限されるため、処理の並列化を抑制する要因となり、性能の高い半導体集積回路が得られない。
また、コンピュータプログラムを記述する設計者は、半導体集積回路を意識せずに設計する場合も多く、配列を減らすという概念がない場合が多い。
そのような状態で記述されたコンピュータプログラムを基に高位合成用の動作記述をした場合、高位合成における配列(メモリ)のハードウェアへの割り当てが非常に多くなり、面積増大や配線混雑という問題が起こる可能性がある。
また、前記技術のように不要な配列を削除するだけでなく、一つの配列(メモリ)を複数の論理回路で共有化する方法も提案されている(例えば、特許文献2)。
また、特許文献2に開示される従来の方法では、メモリ共有化において抽象度の高い動作記述から、高位合成に向いた動作記述に書き換えることが詳細に記載されているが、複数の配列のうちのどの配列がメモリの共有化が可能なのかについては設計者が見て容易に気が付く配列同士の例しか述べられておらず、メモリ共有化が可能な複数の配列の抽出という意味では明確な方法が無いという課題がある。
複数の配列が含まれるプログラムコードを入力するプログラムコード入力部と、
前記プログラムコードに含まれる配列ごとに、前記プログラムコード内で配列が使用されている範囲を配列使用範囲として特定し、それぞれの配列使用範囲が重複しない2つ以上の配列を抽出する配列抽出部と、
前記配列抽出部により抽出された2つ以上の配列が前記プログラムコードの実行の際に同一のメモリを共有するように、前記プログラムコードを書き換えるプログラムコード書換え部とを有することを特徴とする。
このため、人手を介することなく、プログラムコードからメモリ共有が可能な配列を抽出し、抽出した配列にメモリを共有させることが可能である。
本実施の形態では、抽象度の高いコンピュータプログラムを入力し解析することで、物理的に共有化可能な配列(メモリ)を抽出し、その配列同士を共有化する記述に変更した動作記述(SystemC言語)を自動で出力する高位設計メモリ共有化支援装置を説明する。
高位設計メモリ共有化支援装置10は、動作記述ファイル1を解析し、動作記述ファイル1の内容を書き換える。
より具体的には、高位設計メモリ共有化支援装置10は、動作記述ファイル1に含まれる配列ごとに、動作記述ファイル1内で配列が使用されている範囲を配列使用範囲として特定し、それぞれの配列使用範囲が重複しない2つ以上の配列を抽出する。
そして、高位設計メモリ共有化支援装置10は、抽出した2つ以上の配列が動作記述ファイル1の実行の際に同一のメモリ領域を共有するように、動作記述ファイル1の内容を書き換える。
メモリ共有化動作記述ファイル2は、高位設計メモリ共有化支援装置10が内容を書き換えた後の動作記述ファイル1である。
なお、高位設計メモリ共有化支援装置10は、情報処理装置の例に相当する。
ファイル入力部15は、プログラムコード入力部の例に相当する。
配列読出検索部12は、前記配列の使用されている範囲を前記動作記述ファイル1の記述から検索する。
共有化可能配列抽出部13は、前記動作記述ファイル1の記述から前記配列と共有化可能な別の配列を抽出する。
配列共有化記述部14は、前記共有化可能配列抽出部13で抽出された配列が共有されるように記述し、SystemC等の高位合成可能なファイルとして出力する。
配列共有化記述部14からの出力ファイルが、配列共有化されるように変更されたメモリ共有化動作記述ファイル2である。
なお、配列検出部11、配列読出検索部12及び共有化可能配列抽出部13は、配列抽出部の例に相当する。
また、共有化可能配列抽出部13は、記憶容量判断部の例にも相当する。
また、配列共有化記述部14は、プログラムコード書換え部の例に相当する。
すなわち、当該動作記述ファイル1には、配列名memA,memB,memCに対応する配列が記述されており、これら配列に記憶素子(以降、「メモリ」と呼ぶ)が割り当てられる。
なお、15行目に記載されているコメントは説明のためのものであり、現実の動作記述ファイル1には、このようなコメントは含まれていなくてもよい。
なお、図2に示す記述は、SystemC言語で記述されたプログラムを説明するために必要な一部の記述のみを抜き出したもので、動作記述としては不完全なプログラムである。
図3は、高位設計メモリ共有化支援装置10の動作を示すフローチャートであり、この図に沿って説明する。
図2においては、for文で記載されたmemAがそれにあたる。
配列検出部11は、その配列にマーキングが付いているかどうかを確認し、マーキングがある場合は、共有化は不要ということでステップS16に進む。
マーキングが無い場合は共有化の次のフェーズ(ステップS13)に進む(ステップS12)。
なお、マーキングの説明は後述する。
図2においては、配列memA(memA[i]=din[i]+fancZ() 式の左辺)が、どの行まで使われているかをファイルの一番下まで検索し、ここでは上から14行目(Array=memA[x]+fancX();)が最後に使用される箇所であることが分かる。
これは、この配列memAが15行目以降は使用されないことを意味する。
つまり、15行目以降の動作では配列memAは使用されずに空いていることを意味する。
ここでは、配列検出部11と同様な手法を用い、15行目以降ではじめて使用される配列があるかどうかを確認し、該当する配列が無い場合はmemAと共有化できる配列が無いと認識してステップS16に進む。
逆に、15行目以降ではじめて使用される配列があった場合(図2の場合はmemCが17行目から使用されているので、memCが相当)は、15行目以降で使用されないmemAと共有化可能となるため、ステップS15に進む(ステップS14)。
配列数(メモリのワード数に相当)とビット数を比較し、大きい方に合わせたものを共有化する配列とする。
図2の場合は、memAの配列数512の方がmemCの配列数256より大きいため配列数は512とする。
逆に、memCの配列数が大きい場合は、memAの配列数をmemCに合わせる。
ビット数は、memCの32ビットの方が大きいので、共有化配列は32ビットにする。
このようにして、共有化可能配列抽出部13は、配列ごとに、プログラムコードの実行の際の配列の使用時に必要な記憶容量を解析して、配列memAと配列memCが共有するメモリに必要な記憶容量を判断する。
また、共有化可能配列抽出部13は、共有化することが決まった配列には、memAとmemCが共有化済みである印としてマーキングをつける(ステップS15)。
図4において、図2の下から3行目の「memC[k]=memB[k]+fancX();」に相当する式の左辺がmemCからmemAに変更されて「memA[k]=memB[k]+fancX();」となり(符号401)、1行目のビット数が16から32に(符号402)、3行目のmemCがコメントアウト(無効行)となる(符号403)。
さらに図2、図4には明示していないが、元々の配列memCが使われている箇所すべての信号がmemCからmemAに置き換えられる。
以上の変更でmemCがmemAに共有化される動作記述となる。
なお、図2のmemBについては、memAと同様の手順で共有化が可能な他の配列を検索したが、該当する配列がなかったため、共有化は行われていない。
また、前記例では全配列を共有化の対象としているが、小容量のメモリを多数共有化したり、レイアウトで離れたメモリを共有化したりすることで配線混雑や配線遅延の問題が生じる可能性がある。
その場合は、共有化したくない配列にあらかじめマーキングしておくことにより、共有化対象外とすることも可能である。
また、前記例では入力である動作記述ファイル1は一つのファイルであるが、複数ファイルであっても順番は把握できるため同様のことが可能である。
例えば、図2の動作記述ファイル1の一例においては、アルゴリズムC記述のため、動作は記述の上から下の順になり、memAはこの動作記述ファイル1のコードが最後(最終行)まで実行されると再び使用される。
つまり、前記例のように、配列memAとmemCを共有化しても、処理がぶつかることも、メモリ共有化しない時に較べ処理時間が遅くなることもない。
処理時間向上については、実施の形態3で述べる。
そして、配列共有化記述部14が、配列使用範囲が重複しない2つ以上の配列がプログラムコードの実行の際に同一のメモリを共有するように、プログラムコードを書き換えて、メモリ共有化動作記述ファイル2とする。
このため、設計者の手を煩わさずにメモリの共有化が可能となり半導体集積回路の回路規模が削減される。
また、共有化したくないメモリについては、あらかじめ指定して共有化対象から外すことも容易なので、共有化実施後に見直す必要がなくなる。
半導体集積回路の設計において、
設計回路の動作を記述した動作記述を入力する手段と、
当該動作記述から記憶素子となる配列を検出する手段と、
当該配列の使用箇所を検索する手段と、
当該配列と共有化可能な別の配列を抽出する手段と、
当該配列同士が共有化される高位合成対象の動作記述に書き換える手段
とを備えた高位設計メモリ共有化支援装置を説明した。
以上の実施の形態1では、メモリを共有化した動作記述ファイルを自動で生成するものであるが、一旦設計者がメモリ共有化情報を確認してから動作記述ファイルの変更が行えるよう、メモリ共有化情報を表やテキストの形式等の見やすいリストで出力し、場合によっては共有化情報を書き換えて実行できる実施の形態を示す。
共有化情報入出力部21は、前記共有化候補リスト3の出力及び入力を可能とする手段である。
図6は共有化候補リスト3の一例である。
共有化候補リスト3は、共有化の候補として抽出された配列が示される情報であり、抽出配列情報の例に相当する。
そして、共有化情報入出力部21は、共有化候補リスト3を高位設計メモリ共有化支援装置20のユーザ(設計者)に提示するものであり、抽出配列情報提示部の例に相当する。
なお、共有化候補リスト3の詳細説明は後述する。
図7は、高位設計メモリ共有化支援装置20の動作を示すフローチャートであり、この図に沿って説明する。
共有化候補リスト3について一例を図6で説明する。
図6において、「配列名」とは、抽出された配列を全て書き出したもので、「配列数」、「ビット数」はその配列のサイズを表すもので、「共有化可能配列」は、共有化可能配列抽出部13で抽出された各々の共有化可能な配列を表示し、「マーキング」は、共有化を実施するためのマーキングである。
この例は、実施の形態1の共有化と同じ結果を表しており、memAはmemCと共有化可能なこと、memBは共有化可能な配列が無いことを示している。
所望の共有化がなされた時点でSystemC記述に変更されて(ステップS17)終了となる。
また、前記例では触れていないが、共有化候補リスト3の「配列数」や「ビット数」を所望の数値に書き換えて再実行できるようにしてもよい。
また、配列共有化情報(共有化候補リスト3)を変更し、再実行できるようにしているので、もしその共有化情報が設計者の満足行くものでなかった場合には、共有化候補リスト3を書き換えて、所望の共有化が容易にできるようになる。
また、共有化候補リスト3の「配列数」や「ビット数」も変更可能にできるため、あらかじめ共有化させたい配列のサイズを合わせることも可能となる。
実施の形態1で示した構成に加えて、
配列共有化情報を出力する手段と、
当該配列共有化情報を変更して再入力する手段と、
当該配列共有化情報に応じて配列共有化を再実行する手段
とを備えた高位設計メモリ共有化支援装置を説明した。
実施の形態1では、時間の制約がない複数メモリを共有化するものであるが、システム全体の処理速度を上げるために時間の制約をつけたパイプライン動作(以降パイプライン動作と呼ぶ)のようなメモリについても共有化できる実施の形態を示す。
ファイル入力部15が入力する動作記述ファイル1には、各配列に対する処理が並行して行われるm個(mは3以上の整数)の配列が含まれているものとする。
また、このm個の配列は、それぞれが異なる配列名を有するものとする。
ファイル入力部15は、プログラムコード入力部の例に相当する。
つまり、配列処理サイクル抽出部31は、配列検出部11により抽出された配列ごとに、処理サイクル(実行時間)、つまり、動作記述ファイル1の実行の際に配列に対する処理が継続している時間を特定する。
なお、配列処理サイクル抽出部31により特定される処理サイクル(実行時間)は、配列処理時間の例に相当する。
また、配列処理サイクル抽出部31は、配列処理時間特定部の例に相当する。
そして、配列処理サイクル分析部32は、分析結果に基づき、前記m個の配列の中からn個(nは、2以上の整数であって、m>n)の配列を抽出する。
より具体的には、配列処理サイクル分析部32は、前記m個の配列のうち最先に処理される配列を最先処理配列として抽出し、n個の配列の処理サイクル(実行時間)の合計時間が前記最先処理配列の処理サイクル(実行時間)の範囲内となるように、前記最先処理配列以外の配列の中からn個の配列を抽出する。
配列処理サイクル分析部32は、配列処理時間解析部の例に相当する。
共有化可能配列抽出部13は、記憶容量判断部の例に相当する。
より具体的には、配列共有化記述部14は、n個の配列が動作記述ファイル1の実行の際に同一のメモリを共有し、n個の配列に対する処理がシリアルに行われるように、動作記述ファイル1を書き換える。
実施の形態1のような時間の制約がない動作記述(図9)では、メモリとなる配列動作は、図10のように一つの配列動作が完了してから次の配列動作に移行する。
つまり、図9の動作記述を実行すると、図10に示すように、物理メモリAを用いた配列memAの処理が完了した後に、物理メモリBを用いた配列memBの処理が開始し、配列memBの処理が完了した後に、物理メモリCを用いた配列memCの処理が開始する。
そのため、全体の処理時間が遅くなってしまう。
図9の動作記述の場合、実施の形態1の手順に従えば、memAとmemCでメモリの共有が可能であるが、処理時間は短くならない。
図11の動作記述を実行すると、図12に示すように、物理メモリAを用いた配列memAの処理、物理メモリBを用いた配列memBの処理、物理メモリCを用いた配列memCの処理が並列化する。
そして、図11の動作記述の場合、本実施の形態により、memBとmemCでメモリを共有させる。
ここでの動作記述ファイル1は、図11のように、配列のパイプライン動作が記述されたものである。
図11においては、for文で記載されたmemAがそれにあたる。
配列検出部11は、その配列にマーキングが付いているかどうかを確認し、マーキングがある場合は、共有化は不要ということでステップS16に進む。
マーキングが無い場合は共有化の次のフェーズ(ステップS31)に進む(ステップS12)。
なお、マーキングの説明は後述する。
配列memAの処理サイクルは、図12では、iの長さが相当し、図11ではfor文のiが「0」から「512」に達するまでのサイクル(時間)が相当する。
複数の配列がある場合は、次のフェーズ(ステップS33)に進む(ステップS32)。
複数の配列とは、図11ではmemB、memCがこれに相当する。
配列memBの処理サイクルは、図12では、jの長さが相当し、図11ではfor文のjが「0」から「256」に達するまでのサイクル(時間)が相当する。
配列memCの処理サイクルは、図12では、kの長さが相当し、図11ではfor文のkが「0」から「256」に達するまでのサイクル(時間)が相当する。
また、i≧j+kが成り立たない場合は共有不可と判断してステップS16に進む(ステップS34)。
ここで、i≧j+kが成り立つと共有可能とする理由は、配列memA、memB、memCの処理サイクルのうち、システム全体の処理サイクルに影響を及ぼすのはmemAの処理サイクルであり、memB、memCはmemAの処理サイクルに待たされるため、memB、memCの処理サイクルの合計サイクルが、memAの処理サイクル以下であれば、memBとmemCの処理をシリアルに実行して良く(全体の処理速度は変わらない)、別のメモリに振り分ける必要がない。
このため、i≧j+kが成り立つと、配列memBとmemCが共有可能である。
配列数(メモリのワード数に相当)とビット数を比較し、大きい方に合わせたものを共有化する配列とする。
図11の場合は、memBの配列数256、ビット数32がmemCと同じため、このままのメモリサイズとする。
配列数やビット数が異なる場合の処理は、実施の形態1の例と同じであるので、ここでは説明を省略する。
このようにして、共有化可能配列抽出部13は、配列ごとに、プログラムコードの実行の際の配列の使用時に必要な記憶容量を解析して、memBとmemCが共有するメモリに必要な記憶容量を判断する。
また、共有化可能配列抽出部13は、共有化することが決まった配列(memBとmemC)が共有化済みである印としてマーキングをつける(ステップS35)。
配列共有化記述部14において前記のマーキングした配列を共有化した動作記述(SystemC等)に変更して、動作は終了となる(ステップS17)。
図14では、元々memCの開始イネーブル信号であったenCのタイミングをj==0からJ==256に変更し(符号1401)、元々memCだったメモリをmemBに変更するのみである(符号1402、1403)。
また、図11の3つ目のファイルを削除し、2つ目のファイルの下に演算memB[k]= funcX(d2in.read());を置いてもよく、変更方法は特に問わない。
また、前記例では全配列を共有化の対象としているが、小容量のメモリを多数共有化したり、レイアウトで離れたメモリを共有化したりすることで配線混雑や配線遅延の問題が生じる可能性がある。
その場合は、共有化したくない配列にあらかじめマーキングしておくことにより、共有化対象外とすることも可能である。
そして、配列共有化記述部14が、システム全体の処理サイクルに影響を及ぼさない2つ以上の配列がプログラムコードの実行の際に同一のメモリを共有するように、プログラムコードを書き換えて、メモリ共有化動作記述ファイル2とする。
このため、設計者の手を煩わさず、かつ、システム性能を落とすことなくメモリの共有化が可能となり半導体集積回路の回路規模が削減される。
また、共有化したくないメモリについては、あらかじめ指定して共有化対象から外すことも容易なので、共有化実施後に見直す必要がなくなる。
半導体集積回路の設計において、
設計回路の動作を記述した動作記述を入力する手段と、
当該動作記述から記憶素子となる配列を検出する手段と、
当該配列の使用箇所を検索する手段と、
当該配列の処理アクセスを抽出する手段と、
当該配列の処理アクセスを分析する手段と、
当該配列と共有化可能な別の配列を抽出する手段と、
当該配列同士が共有化される高位合成対象の動作記述に書き換える手段
とを備えた高位設計メモリ共有化支援装置を説明した。
すなわち、図8の構成に図5の共有化情報入出力部21(抽出配列情報提示部)を追加し、共有化情報入出力部21が、共有化可能配列抽出部13により抽出された共有化候補の配列(前出の例では、配列memBとmemC)が示される共有化候補リスト3を生成し、生成した共有化候補リスト3を設計者に提示するようにしてもよい。
なお、共有化候補リスト3の提示後の手順は、実施の形態2で説明したものと同様であるため、説明を省略する。
従って、C、C++、SystemVerilog等の高位合成に入力する動作記述として用いられる言語に対し同じように適用することができる。
また、上記では、半導体集積回路の動作が記述されている動作記述ファイルに含まれている配列に対してメモリの共有化を図る例を説明したが、適用対象は動作記述ファイルに限定されない。
複数の配列が含まれ、2つ以上の配列でメモリを共有化する必要があるプログラムコードであれば、実施の形態1及び2及び3に示した手法でメモリの共有化を実現することができる。
高位設計メモリ共有化支援装置10、20、30はコンピュータであり、高位設計メモリ共有化支援装置10、20、30の各要素はプログラムにより処理を実行することができる。
高位設計メモリ共有化支援装置10、20、30のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
通信装置904は、他の装置と通信を行う。
入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
プログラムは、図1及び図5において「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1及び図5の「〜部」の機能を実現するプログラムを実行する。
また、入力された動作記述ファイル1は、外部記憶装置902に格納され、配列の抽出が行われる際に、外部記憶装置902から主記憶装置903にロードされる。
また、実施の形態1及び2及び3の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検出」、「〜の確認」、「〜の決定」、「〜の解析」、「〜の検知」、「〜の設定」、「〜の比較」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
Claims (9)
- 複数の配列が含まれるプログラムコードを入力するプログラムコード入力部と、
前記プログラムコードに含まれる配列ごとに、前記プログラムコード内で配列が使用されている範囲を配列使用範囲として特定し、それぞれの配列使用範囲が重複しない2つ以上の配列を抽出する配列抽出部と、
前記配列抽出部により抽出された2つ以上の配列が前記プログラムコードの実行の際に同一のメモリを共有するように、前記プログラムコードを書き換えるプログラムコード書換え部とを有することを特徴とする情報処理装置。 - 前記プログラムコード入力部は、
異なる配列名を有する複数の配列が含まれるプログラムコードを入力し、
前記プログラムコード書換え部は、
前記配列抽出部により抽出された2つ以上の配列の配列名が同じになるように、前記プログラムコードを書き換えることを特徴とする請求項1に記載の情報処理装置。 - 前記情報処理装置は、更に、
前記配列抽出部により抽出された配列ごとに、前記プログラムコードの実行の際の配列の使用時に必要な記憶容量を解析して、前記配列抽出部により抽出された2つ以上の配列が共有するメモリに必要な記憶容量を判断する記憶容量判断部を有し、
前記プログラムコード書換え部は、
前記記憶容量判断部により判断された記憶容量を持つメモリを前記配列抽出部により抽出された2つ以上の配列が共有するように、前記プログラムコードを書き換えることを特徴とする請求項1又は2に記載の情報処理装置。 - 前記配列抽出部は、
抽出の対象外として指定されている配列を除き、配列ごとに配列使用範囲を特定することを特徴とする請求項1〜3のいずれかに記載の情報処理装置。 - 前記情報処理装置は、更に、
前記配列抽出部により抽出された2つ以上の配列が示される抽出配列情報を生成し、前記情報処理装置のユーザに前記抽出配列情報を提示する抽出配列情報提示部を有し、
前記プログラムコード書換え部は、
前記抽出配列情報の提示の結果、前記配列抽出部により抽出された2つ以上の配列が前記情報処理装置のユーザに承認された場合に、前記配列抽出部により抽出された2つ以上の配列が前記プログラムコードの実行の際に同一のメモリを共有するように、前記プログラムコードを書き換えることを特徴とする請求項1〜4のいずれかに記載の情報処理装置。 - 前記配列抽出部は、
前記抽出配列情報の提示の結果、前記配列抽出部により抽出された2つ以上の配列が前記情報処理装置のユーザに承認されなかった場合に、承認されなかった2つ以上の配列とは別の2つ以上の配列を抽出することを特徴とする請求項5に記載の情報処理装置。 - 前記プログラムコード入力部は、
前記プログラムコードとして、半導体集積回路の動作が記述されている動作記述ファイルを入力することを特徴とする請求項1〜6のいずれかに記載の情報処理装置。 - コンピュータが、複数の配列が含まれるプログラムコードを入力するプログラムコード入力ステップと、
前記コンピュータが、前記プログラムコードに含まれる配列ごとに、前記プログラムコード内で配列が使用されている範囲を配列使用範囲として特定し、それぞれの配列使用範囲が重複しない2つ以上の配列を抽出する配列抽出ステップと、
前記配列抽出ステップにより抽出された2つ以上の配列が前記プログラムコードの実行の際に同一のメモリを共有するように、前記コンピュータが、前記プログラムコードを書き換えるプログラムコード書換えステップとを有することを特徴とする情報処理方法。 - 複数の配列が含まれるプログラムコードを入力するプログラムコード入力ステップと、
前記プログラムコードに含まれる配列ごとに、前記プログラムコード内で配列が使用されている範囲を配列使用範囲として特定し、それぞれの配列使用範囲が重複しない2つ以上の配列を抽出する配列抽出ステップと、
前記配列抽出ステップにより抽出された2つ以上の配列が前記プログラムコードの実行の際に同一のメモリを共有するように、前記プログラムコードを書き換えるプログラムコード書換えステップとをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012221483A JP6091140B2 (ja) | 2012-05-11 | 2012-10-03 | 情報処理装置及び情報処理方法及びプログラム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012109157 | 2012-05-11 | ||
JP2012109157 | 2012-05-11 | ||
JP2012221483A JP6091140B2 (ja) | 2012-05-11 | 2012-10-03 | 情報処理装置及び情報処理方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013254472A JP2013254472A (ja) | 2013-12-19 |
JP6091140B2 true JP6091140B2 (ja) | 2017-03-08 |
Family
ID=49951883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012221483A Active JP6091140B2 (ja) | 2012-05-11 | 2012-10-03 | 情報処理装置及び情報処理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6091140B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303832B2 (en) | 2015-09-18 | 2019-05-28 | Mitsubishi Electric Corporation | Architecture generating device |
JP7100597B2 (ja) * | 2019-02-25 | 2022-07-13 | 株式会社日立製作所 | 回路設計支援装置、回路設計支援方法、および情報処理装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005520238A (ja) * | 2002-03-08 | 2005-07-07 | メンター グラフィックス コーポレイション | 動作合成ツールにおけるアレイ変換 |
JP4083491B2 (ja) * | 2002-07-19 | 2008-04-30 | 富士通株式会社 | モジュール間インタフェースの自動合成装置、合成方法、プログラム及び可搬記憶媒体 |
JP5293520B2 (ja) * | 2009-09-14 | 2013-09-18 | 株式会社リコー | 回路ブロック図作成装置、回路ブロック図作成方法、及び半導体集積回路製造方法 |
-
2012
- 2012-10-03 JP JP2012221483A patent/JP6091140B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2013254472A (ja) | 2013-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691856B1 (en) | System design flow with runtime customizable circuits | |
US20190278884A1 (en) | Methodology To Create Constraints And Leverage Formal Coverage Analyzer To Achieve Faster Code Coverage Closure For An Electronic Structure | |
JP5312151B2 (ja) | 半導体設計支援装置、高位合成方法及び半導体設計支援プログラム | |
JP6091140B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
JP5979966B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
Tatsuoka et al. | Physically aware high level synthesis design flow | |
Karmazin et al. | Timing driven placement for quasi delay-insensitive circuits | |
US10157253B2 (en) | Multi-bit-mapping aware clock gating | |
US20180107777A1 (en) | Optimizing an integrated circuit (ic) design comprising at least one wide-gate or wide-bus | |
JP5979965B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
US8522175B2 (en) | Semiconductor circuit design supporting apparatus and method, and non-transitory computer-readable medium | |
US8949766B2 (en) | Detecting corresponding paths in combinationally equivalent circuit designs | |
US12073159B2 (en) | Computing device and method for detecting clock domain crossing violation in design of memory device | |
JP2014194746A (ja) | シミュレーション装置及びシミュレーション方法及びプログラム | |
US8832633B2 (en) | Generating a convergent circuit design from a functional description using entities having access to the functional description and to physical design information | |
JP5541011B2 (ja) | 最適化ネットリスト作成プログラム、最適化ネットリスト作成装置および最適化ネットリスト作成方法 | |
JP2005293349A (ja) | 回路設計支援システム、設計方法及びプログラム | |
JP5262678B2 (ja) | 動作合成システム、動作合成方法、及び動作合成用プログラム | |
JP5333792B2 (ja) | 半導体検証装置、方法およびプログラム | |
CN106650033B (zh) | 一种输入输出端口的工艺映射方法 | |
Chu et al. | A New Design Methodology for Composing Complex Digital Systems | |
US9852259B2 (en) | Area and/or power optimization through post-layout modification of integrated circuit (IC) design blocks | |
JP5849973B2 (ja) | データ処理装置、データ処理システム、データ処理方法、及びデータ処理プログラム | |
US20180039722A1 (en) | Circuit design support apparatus, circuit design support method, and computer readable medium | |
JP6394278B2 (ja) | 有限状態機械の設計検証装置、設計検証方法、及び設計検証プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150911 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160804 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160830 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161013 |
|
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: 20170110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170207 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6091140 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 |