JP2013235475A - 回路設計支援装置及び回路設計支援方法及びプログラム - Google Patents
回路設計支援装置及び回路設計支援方法及びプログラム Download PDFInfo
- Publication number
- JP2013235475A JP2013235475A JP2012108308A JP2012108308A JP2013235475A JP 2013235475 A JP2013235475 A JP 2013235475A JP 2012108308 A JP2012108308 A JP 2012108308A JP 2012108308 A JP2012108308 A JP 2012108308A JP 2013235475 A JP2013235475 A JP 2013235475A
- Authority
- JP
- Japan
- Prior art keywords
- order
- access
- read
- write
- address
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられた動作記述コードを入力する。また、処理部3は、動作記述コードを解析し、動作記述コード実行時の各ライトアクセスアドレスの使用順序と、各リードアクセスアドレスの使用順序とを判断する。更に、処理部3は、リードアクセスアドレスの使用順序に基づいて動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及びライトアクセスアドレスの使用順序に基づいて動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行う。
【選択図】図1
Description
より具体的には、動作記述コード(以下、単に「動作記述」ともいう)からレジスタ転送レベルを自動生成する高位合成(動作合成)を利用した半導体設計を支援する回路設計支援装置に関する。
近年では集積回路の回路規模が増大しており、RTL設計時間を多大に要することが問題となっている。
そこで、RTLよりも抽象度が高い高級言語であるC言語、C++言語、SystemC言語などを用いて自動的にRTLを生成する高位合成技術が提唱されており、これを実現する高位合成ツールが市販されている。
特許技術文献1では、この高位合成ツールへの入力の前処理として、冗長なメモリを削除するために、冗長なメモリの発生要因となる配列記述箇所を検出し、自動的に配列を削除することで、小回路規模な集積回路を得ることが開示されている。
ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断部と、
前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断部により判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更部とを有することを特徴とする回路設計支援装置。
本実施の形態では、回路間にあるメモリ、またはレジスタ数を削減し、かつ低遅延で演算結果を出力可能なコードを得るための半導体設計支援装置を説明する。
より具体的には、本実施の形態で説明する半導体設計支援装置は、演算間の依存関係を抽出し、演算の順序を変更する。
そして、本実施の形態に係る半導体設計支援装置によれば、設計者の能力に依存することなく高性能で小回路規模なハードウェア構成(アーキテクチャ)を短時間で得ることができる。
図1において、半導体設計支援装置1は、処理部3とテーブル記憶部4とファイル記憶部5を備える。
半導体設計支援装置1は、回路設計支援装置に相当する。
高位合成装置2は、高級言語による動作記述コードを受理して、RTLを生成する装置である。
半導体設計支援装置1から高位合成装置2へ高位合成が可能な動作記述コードを与えることで目的とするRTLを得ることができる。
処理部3は、コード入力部、アクセス順序判断部及びアクセス順序変更部に相当する。
テーブル記憶部4は、処理部3の処理結果が示されるテーブルや、処理部3が参照するテーブルを記憶する。
ファイル記憶部5は、処理部3が入力した動作記述コードを記憶する。
また、ファイル記憶部5は、処理部3が変更した後の動作記述コードを記憶してもよい。
図2は、実施の形態1の半導体設計支援装置1の動作の流れを示すフローチャートである。
このフローチャートにある機能は処理部3で実行され、必要なときにテーブル記憶部4とファイル記憶部5とのデータのやりとりが行われる。
動作を説明するにあたり図3に例示する動作記述コードを用いる。
なお、図3のコードは本実施の形態に係る動作を説明するために必要な一部を抜き出して示したものであり、動作記述としては不完全なものである。
この記述を高位合成装置2に直接入力すれば、最初のループと次のループの間にN個のデータを格納するためのバッファ(メモリ、あるいはレジスタ)が必要となる。
最初のループが終了しないと次のループに処理が移れないため、結果であるoutが出力されるには時間を要することが問題となる。
この抽出では図4に示すように各for文にループID(Identifier)とその記述箇所(行数)をテーブル記憶部4に書き込む。
図4のテーブルをループテーブルと呼ぶ。
ここで書き込まれるテーブルを配列テーブルと呼ぶ。
配列名は、コード中に記載がある配列変数名である。
アクセス方法は、式中に該当する配列が左辺にある場合はライト、右辺にある場合はリードとする。
アクセス数は、該当する配列に何度アクセスしたかを示す。
このアクセス数は、繰り替えし回数あたりのアクセス数となる。
図3のコードの場合、dat変数は2回のリードアクセスが発生している(dat[i]とdat[N−i])ため、ここでは2となる。
トータルアクセス数は、該当する配列がforループ間に何回アクセスされるかを示す。
図3のコードから配列アクセス関係を抽出した結果を図5に示す。
図5では、2行目の「dat」と4行目の「out」がライトアクセス配列であり、1行目の「mem」と3行目の「dat」がリードアクセス配列である。
また、ライトアクセス配列の配列要素をライトアクセスアドレスともいい、リードアクセス配列の配列要素をリードアクセスアドレスともいう。
ライトアクセスアドレスは、それぞれライトアクセスのアクセス先のアドレスであり、リードアクセスアドレスは、それぞれリードアクセスのアクセス先のアドレスである。
図3のコードでは、1つ目のfor文のdat[i]の各iの値が、ライトアクセスアドレスである。
同様に、2つ目のfor文のdat[i]の各iの値が、リードアクセスアドレスである。
具体的には、繰り返し文中にある任意の変数が参照後、代入を行っている場合は依存ありとし、それ以外を依存なしとする。
図3のコードの場合、1つ目のfor文では、変数countについての参照(count!=10)後に、代入(count++)が行われているので、1つ目のfor文では依存関係がある。
一方、2つ目のfor文では、このような変数はないので、2つ目のfor文では依存関係がない。
なお、依存関係があるfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスの使用順序を変更すると高位合成の対象となる回路の動作が変化してしまう。
このため、依存関係があるfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスの使用順序を変更することはできない。
一方、依存関係がないfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスは使用順序しても高位合成の対象となる回路の動作が変化しない。
このため、依存関係がないfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスの使用順序は変更することはできる。
図6は、依存関係の有無が追記された後のループテーブルを示す。
なお、動作記述コードにおいて、処理として実行順序をあらかじめ決めておきたい場合がある。
例えば画像データなどは座標順にデータが入力される場合がある。
そのため、動作記述コードに順序変更不可の情報を付加して、あるいはオプションとして、処理部3がそれを解析し、依存関係情報を生成してもよい。
図8は、リード順序の変更が禁止されている動作記述コードの例である。
なお、図8の動作記述コードについては後述する。
より具体的には、処理部3は、配列名が共通するライトアクセス配列とリードアクセス配列を抽出し、配列名が共通するライトアクセス配列とリードアクセス配列を対にし、ライトアクセス配列とリードアクセス配列の対ごとに、動作記述コード実行時のライトアクセスアドレスの使用順序と、動作記述コード実行時のリードアクセスアドレスの使用順序とを判断する。
図5の例では、配列名が共通するライトアクセス配列とリードアクセス配列であるdatを対にし、dat(W:2行目)のライトアクセスアドレスの使用順序と、dat(R:3行目)のリードアクセスアドレスの使用順序とを判断する。
アクセス遅延テーブルには、サイクル数、ライトアクセスアドレス、リードアクセスアドレス、アクセス遅延、アクセスコストを書き込む。
この上限はループのトータルアクセス数である。
ライトアクセスアドレスの欄に示される数字は、それぞれライトアクセスアドレスを表しており、ライトアクセスアドレスの欄には、動作記述コード実行時のライトアクセスアドレスの使用順序が記述されている。
リードアクセスアドレスは、リードアクセスする各配列について記載する。
図3のコード例の場合、2つのリードアクセス(dat[i]とdat[N−i])が発生するため、この項目は2つ存在する。
リードアクセスアドレスは、ループを展開して得られるリードアクセスする配列の添え字である。
リードアクセスアドレスの欄に示される数字は、それぞれリードアクセスアドレスを表しており、リードアクセスアドレスの欄には、動作記述コード実行時のリードアクセスアドレスの使用順序が記述されている。
なお、リード制約について、1サイクルで2つのデータを読み込むことが可能である場合、それを追加情報として処理部3に与えてもよい。
例えば、ライトアクセスアドレス6はサイクル7で発生している一方で、対応するリードアクセスアドレス6はサイクル13で発生している。
リードアクセスアドレス6のアクセス遅延は、対応するライトアクセスアドレス6のサイクル数である「7」となる。
また、例えば、リードアクセスアドレス15はサイクル2で発生している一方で、対応するライトアクセスアドレス15はサイクル16で発生している。
リードアクセスアドレス15のアクセス遅延は、対応するライトアクセスアドレス15のサイクル数である「16」となる。
リードアクセスアドレス1とリードアクセスアドレス14はリードアクセスアドレス15の後に発生するので、17サイクル目に、リードアクセスアドレス1とリードアクセスアドレス14についての、ループID2のout[1]=dat[1]+dat[15−1]が実行可能である。
リードアクセスアドレス2とリードアクセスアドレス13は更に1サイクル後なので、18サイクル目に、リードアクセスアドレス2とリードアクセスアドレス13についての、ループID2のout[2]=dat[2]+dat[15−2]が実行可能である。
このように、図7のアクセスコストの欄には、i=0、1、2、3...の各々について、ループID2のout[i]=dat[i]+dat[N−i]が実行可能なサイクル数をかっこ書で示している。
図7に示すように、図3のループID2の処理が終了するまでには、23サイクルを要する。
一方で、ループID2のout[1]=dat[1]+dat[15−1]の処理が行われるのは17サイクル目なので、ライトアクセスアドレス1の値はサイクル数2からサイクル数17までの間、ライトアクセスアドレス14の値はサイクル数15からサイクル数17までの間、ライトタイミングとリードタイミングとの間のタイミング差を吸収するためのバッファに保持しておく必要がある。
同様に、ライトアクセスアドレス2の値はサイクル数3からサイクル数18までの間、ライトアクセスアドレス13の値はサイクル数14からサイクル数18までの間、バッファに保持しておく必要がある。
他のアドレス値でも同様であり、リードアクセスアドレス0〜15の全てについて、ライトされた値を保持しておくためのバッファが必要であり、計16個のバッファを設ける必要がある。
このように、図3のコードを実行する場合には、ライトアクセスの順序とリードアクセスの順序に整合がとれていないため、高位合成において16個のバッファを生成する必要がある。
本実施の形態に係る半導体設計支援装置1では、このようなライトアクセスの使用順序とリードアクセスの使用順序の不整合を抑制するものである。
より具体的には、処理部3は、ループテーブル(図6)と配列テーブル(図5)を参照し、動作記述コードが以下の4つのケースのいずれに該当するかを判断する。
アクセスケース1:「ライト依存あり」で「リード依存あり」
アクセスケース2:「ライト依存なし」で「リード依存あり」
アクセスケース3:「ライト依存なし」で「リード依存なし」
アクセスケース4:「ライト依存あり」で「リード依存なし」
ここで、「ライト依存あり」とは、ライトアクセスアドレスの使用順序を変更すると高位合成の対象となる回路の動作が変化してしまうため、ライトアクセスアドレスの使用順序を変更できないことを意味する。
一方、「ライト依存なし」とは、ライトアクセスアドレスの使用順序を変更しても高位合成の対象となる回路の動作が変化しないため、ライトアクセスアドレスの使用順序を変更できることを意味する。
また、「リード依存あり」とは、リードアクセスアドレスの使用順序を変更すると高位合成の対象となる回路の動作が変化してしまうため、リードアクセスアドレスの使用順序を変更できないことを意味する。
一方、「リード依存なし」とは、リードアクセスアドレスの使用順序を変更しても高位合成の対象となる回路の動作が変化しないため、リードアクセスアドレスの使用順序を変更できることを意味する。
なお、リードアクセス順に合わせてライトアクセス順を変更する処理を、ライトアクセス順序変更処理という。
ライトアクセス順、リードアクセス順のいずれを固定とするかは、アクセスコストが小さいほうを選べばよい。
なお、ライトアクセス順に合わせてリードアクセス順を変更する処理を、リードアクセス順序変更処理という。
図8は、ライト依存なしでリード依存ありの場合のコード例である。
図8の1つ目のループのライトアクセス配列dat[i]は、依存関係がない。
一方、2つ目のループでは、リード固定オプションを付加してある。
これはループ文自体に依存関係はないが、設計上out配列にたいして0、1、2、3...とコードで示した順序で処理を行いたい場合に付加されるオプションである。
このオプションを処理部3が解析し、依存関係判定において、該当するループIDに依存関係あり(2つ目のループで「リード依存」あり)と判断される。
前述のように、ライト側(1つ目のループ)は依存関係がないため、for文中どのiからライトアクセスを始めてもよい。
つまり、リード側(2つ目のループ)のdat(リードアクセス配列)が要求する順序でライトアクセスを行い、ライトアクセス結果をリード側のdatに渡すことで処理が高速になる。
図9に、図8のコードに対応させて、変更ライトアクセスアドレスと更新したアクセスコストを付加した遅延テーブルを示す。
なお、図8のコードの2つ目ループの内容と図3の2つ目のループの内容が同じであり、図8のコードの場合も、ライトアクセスの順序を変更する前のアクセス遅延テーブル(図2のST5:アクセス遅延算出の後のアクセス遅延テーブル)は、図7に示すものと同じである。
図9のアクセス遅延テーブルでは、リードアクセスアドレスの順序と一致するように、ライトアクセスアドレスの順序を変更している(ライトアクセス順序変更処理)。
なお、遅延コストが0のため、図8の1つ目のループと2つ目のループの間にバッファは必要なく、1つ目のループの結果を直接2つ目のループが受けとることができる。
また、前述したように、ライトアクセスとリードアクセスとの間のタイミング差がないので、バッファも不要である。
バッファはN個分必要であり、さらに1つ目のループ(図11ではA1と表記)の処理が終了した後に、2つ目のループ(図11ではB1と表記)の処理が開始されている。
本実施の形態によれば、図12に示すように中間バッファは必要なく、1つ目のループ(図12ではA1と表記)の処理を全て待つことなく、2つ目のループ(図12ではB1と表記)の処理が開始可能となり、高速に処理が可能となる。
図3のコード例は、アクセスケース4に該当する。
図3コードの場合のアクセス順序変更の図を図10に示す。
例えば、図7のリード1のアクセスアドレス7とリード2アクセスアドレス8はループID2で同時に処理されるものであるため、ペアになる。
そして、処理部3は、リードアクセスアドレスのペアごとに、ペア内の2つのリードアクセスアドレスのうち、同じアドレス値のライトアクセスアドレスの使用タイミングが遅いリードアクセスアドレスを基準リードアクセスアドレスとするとともに、基準リードアクセスアドレスと同じアドレス値のライトアクセスアドレスを基準ライトアクセスアドレスとする。
更に、処理部3は、基準リードアクセスアドレス間の使用順序が基準ライトアクセスアドレス間の使用順序と一致するように、リードアクセスアドレスのペア単位で、リードアクセスアドレスの使用順序を変更する。
更に、リードアクセスアドレス(15、14、13、12、11、10、9、8)が基準リードアクセスアドレスとなる。
また、基準リードアクセスアドレスと同じアドレス値のライトアクセスアドレスが基準ライトアクセスアドレスとなる。
そして、処理部3は、基準リードアクセスアドレス間の使用順序が基準ライトアクセスアドレス間の使用順序(8、9、10、11、12、13、14、15)と一致するように、リードアクセスアドレスのペア単位で、リードアクセスアドレスの使用順序を変更する。
この結果、図10に示すように、リードアクセスアドレスの順序が、(7、8)、(6、9)、(5、10)、(4、11)、(3、12)、(2、13)、(1、14)、(0、15)という順序に変更される。
そのため、リードアクセスアドレス7とリードアクセスアドレス8のペアを最初にリードアクセスの対象とする。
この場合、リードアクセスアドレス7へのアクセスは、ライトアクセスアドレス7へのアクセスが行われるサイクル8のときに可能なので、リードアクセスアドレス7のアクセス遅延は8となる。
また、リードアクセスアドレス8へのアクセスは、ライトアクセスアドレス8へのアクセスが行われるサイクル9のときに可能なので、リードアクセスアドレス8のアクセス遅延は9となる。
この結果、リードアクセスアドレス7とリードアクセスアドレス8のペアとしてのアクセス遅延は9となる。
つまり、9サイクル目の時点で、リードアクセスアドレス7とリードアクセスアドレス8の両方の値が揃っているので、ループID2のout[7]=dat[7]+dat[15−7]が実行可能である。
その他のペアについてはデータがそろっていないため処理が開始できない。
次のサイクルでライトアクセスアドレス9がアクセスされるが、既にサイクル7でライトアクセスアドレス6へのアクセスが行われているので、サイクル10の時点で、リードアクセスアドレス6とリードアクセスアドレス9が演算開始可能となる。
このように演算可能となる処理から順に演算するようにリードアクセスアドレスの処理順序を変更する。
このため、図3の動作記述コードをそのまま高位合成の対象とした場合のサイクル数である23(図7)に比べて大幅に処理時間を短縮することができる。
また、図10の順序の場合は、リードアクセスアドレス8〜15からのリードは、ライトアクセスアドレス8〜15へのライトの直後に行われるため、リードアクセスアドレス8〜15についてはバッファが不要であり、リードアクセスアドレス0〜7についての8個のバッファで済む(バッファ数を最少個数とすることができる)。
このため、図3の動作記述コードをそのまま高位合成の対象とした場合のバッファ数である16個に比べて大幅にバッファ数を削減することができる。
つまり、本実施の形態の手法によらない場合は、データ数N個分のレジスタ、あるいはメモリが必要であるが、本実施の形態によりアクセス順序を変更することにより、バッファ数が半分で済む。
さらに、本実施の形態の手法によらない場合は、16サイクル目の後にループID2の処理を開始するが、本実施の形態によりアクセス順序を変更することにより、8サイクル目の後にループID2の処理を開始することが可能となり、低レイテンシとなる。
バッファ容量は半分になり、さらにループ1の計算途中からループ2の演算が開始可能となり、高速に処理が可能となる。
図13に示すように、図11の場合に比べて中間バッファのサイズが小さく、また、1つ目のループ(図13ではA1と表記)の処理を全て待つことなく、2つ目のループ(図13ではB1と表記)の処理が開始可能となり、高速に処理が可能となる。
変更記述箇所は、ループテーブル(図6)に記載ある行数から判断する。
ここで、コード生成は、アクセス遅延テーブル(図9又は図10)から、更新されたアクセスになるようにループを展開して記述する。
つまり、処理部3は、図8のコードの1つ目のループ文を、図9の変更ライトアクセスの順序でライトアクセスされる記述に書き換える。
また、処理部3は、図3のコードの2つ目のループ文を、図10の変更リードアクセスアドレスの順序でリードアクセスされる記述に書き換える。
同様に、処理部3が図10の変更リードアクセスアドレスの内容を示す情報(リードアクセスアドレス使用順序情報の例)を高位合成装置2(コード書き換え装置の例)に出力し、高位合成装置2に、図3のコードの2つ目のループ文を、図10の変更リードアクセスアドレスの順序でリードアクセスされる記述に書き換えさせるようにしてもよい。
高位合成の対象となる設計回路の動作を記述した動作記述を入力とし、入力した動作記述の中から、複数の配列変数の依存関係を抽出し、配列を実現するメモリ、あるいはレジスタ数を削減する、または遅延が小さくなるように配列にライトする、またはリードする順序を変更するコードを生成する処理部を備えた半導体設計支援装置を説明した。
半導体設計支援装置1はコンピュータであり、半導体設計支援装置1の各要素はプログラムにより処理を実行することができる。
半導体設計支援装置1のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
通信装置904は、高位合成装置2やその他の装置と通信を行う。
入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
プログラムは、図1に示す「処理部3」として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1に示す「処理部3」の機能を実現するプログラムを実行する。
また、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の算出」、「〜の導出」、「〜の解析」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
また、本実施の形態に示した高位合成装置2も、図14のハードウェア構成をしていてもよいし、他のハードウェア構成であってもよい。
Claims (13)
- ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断部と、
前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断部により判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更部とを有することを特徴とする回路設計支援装置。 - 前記アクセス順序変更部は、
ライトアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しないか否か、及びリードアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しないか否かを判断し、
判断結果に基づき、前記ライトアクセス順序変更処理及び前記リードアクセス順序変更処理のいずれかを行うことを特徴とする請求項1に記載の回路設計支援装置。 - 前記アクセス順序変更部は、
ライトアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しない一方で、リードアクセスアドレスの使用順序を変更すると前記高位合成の対象となる回路の動作が変化してしまう場合に、前記ライトアクセス順序変更処理を行い、
リードアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しない一方で、ライトアクセスアドレスの使用順序を変更すると前記高位合成の対象となる回路の動作が変化してしまう場合に、前記リードアクセス順序変更処理を行い、
ライトアクセスアドレスの使用順序及びリードアクセスアドレスの使用順序のいずれを変更しても前記高位合成の対象となる回路の動作が変化しない場合に、前記ライトアクセス順序変更処理及び前記リードアクセス順序変更処理のいずれかを行うことを特徴とする請求項2に記載の回路設計支援装置。 - 前記高位合成では、
アドレス値が共通するライトアクセスアドレスとリードアクセスアドレスとの対ごとに、対になるライトアクセスアドレスとリードアクセスアドレスとの間で使用タイミングに差がある場合に、使用タイミングの差を吸収するバッファが生成され、
前記アクセス順序変更部は、
前記ライトアクセス順序変更処理において、
前記コード入力部により入力された動作記述コードがそのまま前記高位合成に用いられる場合に比べて、前記高位合成で生成されるバッファの個数が減少するライトアクセスアドレスの使用順序を導出し、導出した使用順序に沿ってライトアクセスアドレスの使用順序を変更し、
前記リードアクセス順序変更処理において、
前記コード入力部により入力された動作記述コードがそのまま前記高位合成に用いられる場合に比べて、前記高位合成で生成されるバッファの個数が減少するリードアクセスアドレスの使用順序を導出し、導出した使用順序に沿ってリードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜3のいずれかに記載の回路設計支援装置。 - 前記アクセス順序変更部は、
前記ライトアクセス順序変更処理において、
前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序を変更することなく、前記高位合成で生成されるバッファの個数が減少するライトアクセスアドレスの使用順序を導出し、
前記リードアクセス順序変更処理において、
前記アクセス順序判断部により判断されたライトアクセスアドレスの使用順序を変更することなく、前記高位合成で生成されるバッファの個数が減少するリードアクセスアドレスの使用順序を導出することを特徴とする請求項4に記載の回路設計支援装置。 - 前記アクセス順序変更部は、
前記ライトアクセス順序変更処理において、
前記高位合成で生成されるバッファの個数が最少となるライトアクセスアドレスの使用順序を導出し、
前記リードアクセス順序変更処理において、
前記高位合成で生成されるバッファの個数が最少となるリードアクセスアドレスの使用順序を導出することを特徴とする請求項4又は5に記載の回路設計支援装置。 - 前記アクセス順序変更部は、
前記ライトアクセス順序変更処理において、
前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序と一致するように、ライトアクセスアドレスの使用順序を変更することを特徴とする請求項1〜6のいずれかに記載の回路設計支援装置。 - 前記アクセス順序変更部は、
前記リードアクセス順序変更処理において、
前記動作記述コード実行時に同期して用いられる2つ以上のリードアクセスアドレスをグルーピングし、
リードアクセスアドレスのグループごとに、グループ内の2つ以上のリードアクセスアドレスのうち、同じアドレス値のライトアクセスアドレスが使用されるタイミングが最も遅いリードアクセスアドレスを基準リードアクセスアドレスとするとともに、基準リードアクセスアドレスと同じアドレス値のライトアクセスアドレスを基準ライトアクセスアドレスとし、
基準リードアクセスアドレス間の使用順序が基準ライトアクセスアドレス間の使用順序と一致するように、リードアクセスアドレスのグループ単位で、リードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜7のいずれかに記載の回路設計支援装置。 - 前記アクセス順序判断部は、
前記動作記述コードから複数のループ文を抽出し、
抽出したループ文から、配列名が共通するライトアクセス配列とリードアクセス配列を抽出し、
配列名が共通するライトアクセス配列とリードアクセス配列を対にし、
ライトアクセス配列とリードアクセス配列の対ごとに、ライトアクセスアドレスの使用順序と、リードアクセスアドレスの使用順序とを判断し、
前記アクセス順序変更部は、
ライトアクセス配列とリードアクセス配列の対ごとに、前記ライトアクセス順序変更処理及び前記リードアクセス順序変更処理のいずれかを行うことを特徴とする請求項1〜8のいずれかに記載の回路設計支援装置。 - 前記アクセス順序変更部は、
前記ライトアクセス順序変更処理において、前記動作記述コードを書き換えてライトアクセスアドレスの使用順序を変更し、
前記リードアクセス順序変更処理において、前記動作記述コードを書き換えてリードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜9のいずれかに記載の回路設計支援装置。 - 前記アクセス順序変更部は、
前記ライトアクセス順序変更処理において、変更後のライトアクセスアドレスの使用順序が示されるライトアクセスアドレス使用順序情報を、前記動作記述コードを書き換えるコード書換え装置に出力し、前記コード書換え装置に、前記ライトアクセスアドレス使用順序情報に示されるライトアクセスアドレスの使用順序に沿って前記動作記述コードの書き換えを行わせてライトアクセスアドレスの使用順序を変更し、
前記リードアクセス順序変更処理において、変更後のリードアクセスアドレスの使用順序が示されるリードアクセスアドレス使用順序情報を、前記動作記述コードを書き換えるコード書換え装置に出力し、前記コード書換え装置に、前記リードアクセスアドレス使用順序情報に示されるリードアクセスアドレスの使用順序に沿って前記動作記述コードの書き換えを行わせてリードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜9のいずれかに記載の回路設計支援装置。 - ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、コンピュータが、入力するコード入力ステップと、
前記コンピュータが、前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断ステップと、
前記コンピュータが、前記アクセス順序判断ステップにより判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断ステップにより判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更ステップとを有することを特徴とする回路設計支援方法。 - ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力ステップと、
前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断ステップと、
前記アクセス順序判断ステップにより判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断ステップにより判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更ステップとをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012108308A JP5979966B2 (ja) | 2012-05-10 | 2012-05-10 | 回路設計支援装置及び回路設計支援方法及びプログラム |
US13/850,421 US8990741B2 (en) | 2012-05-10 | 2013-03-26 | Circuit design support device, circuit design support method and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012108308A JP5979966B2 (ja) | 2012-05-10 | 2012-05-10 | 回路設計支援装置及び回路設計支援方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013235475A true JP2013235475A (ja) | 2013-11-21 |
JP5979966B2 JP5979966B2 (ja) | 2016-08-31 |
Family
ID=49549629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012108308A Active JP5979966B2 (ja) | 2012-05-10 | 2012-05-10 | 回路設計支援装置及び回路設計支援方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8990741B2 (ja) |
JP (1) | JP5979966B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020129297A (ja) * | 2019-02-08 | 2020-08-27 | 富士通株式会社 | 情報処理装置、情報処理方法、及びプログラム |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703920B2 (en) * | 2015-06-30 | 2017-07-11 | International Business Machines Corporation | Intra-run design decision process for circuit synthesis |
JP6407181B2 (ja) * | 2016-03-04 | 2018-10-17 | 三菱電機株式会社 | 設計支援装置、設計支援方法及び設計支援プログラム |
US11836426B1 (en) * | 2022-08-15 | 2023-12-05 | Xilinx, Inc. | Early detection of sequential access violations for high level synthesis |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004042623A2 (en) * | 2002-10-31 | 2004-05-21 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
JP2010118081A (ja) * | 2002-03-08 | 2010-05-27 | Mentor Graphics Corp | 動作合成ツールにおける配列変換 |
JP2010238054A (ja) * | 2009-03-31 | 2010-10-21 | Mitsubishi Electric Corp | 半導体設計支援装置、高位合成方法及び半導体設計支援プログラム |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0844773A (ja) | 1994-07-26 | 1996-02-16 | Mitsubishi Electric Corp | 自動高位合成方法 |
JP3045286B2 (ja) | 1997-12-19 | 2000-05-29 | 日本電気株式会社 | 回路設計方法および装置、情報記憶媒体 |
JP3386427B2 (ja) | 2000-01-28 | 2003-03-17 | シャープ株式会社 | 高位合成方法並びに高位合成方法の実施に使用される記録媒体 |
JP2002269162A (ja) | 2001-03-08 | 2002-09-20 | Nec Eng Ltd | 動作合成方法 |
JP4007483B2 (ja) * | 2001-07-16 | 2007-11-14 | シャープ株式会社 | 高位合成装置および高位合成方法 |
JP4083491B2 (ja) | 2002-07-19 | 2008-04-30 | 富士通株式会社 | モジュール間インタフェースの自動合成装置、合成方法、プログラム及び可搬記憶媒体 |
US7185181B2 (en) * | 2002-08-05 | 2007-02-27 | Intel Corporation | Apparatus and method for maintaining a floating point data segment selector |
JP2005173648A (ja) | 2003-12-05 | 2005-06-30 | Matsushita Electric Ind Co Ltd | 高位合成方法及び高位合成装置 |
JP4031427B2 (ja) | 2003-12-24 | 2008-01-09 | 株式会社東芝 | スケジューラ、スケジューリング方法、スケジューリング・プログラム、及び高位合成装置 |
US7353491B2 (en) | 2004-05-28 | 2008-04-01 | Peter Pius Gutberlet | Optimization of memory accesses in a circuit design |
US7412684B2 (en) | 2004-05-28 | 2008-08-12 | Peter Pius Gutberlet | Loop manipulation in a behavioral synthesis tool |
JP4580827B2 (ja) | 2005-06-17 | 2010-11-17 | 株式会社東芝 | 動作合成装置及び自動動作合成方法 |
JP2007272797A (ja) | 2006-03-31 | 2007-10-18 | Toshiba Corp | パイプライン高位合成システム及び方法 |
JP2007287044A (ja) | 2006-04-19 | 2007-11-01 | Toshiba Corp | 設計支援装置 |
-
2012
- 2012-05-10 JP JP2012108308A patent/JP5979966B2/ja active Active
-
2013
- 2013-03-26 US US13/850,421 patent/US8990741B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010118081A (ja) * | 2002-03-08 | 2010-05-27 | Mentor Graphics Corp | 動作合成ツールにおける配列変換 |
WO2004042623A2 (en) * | 2002-10-31 | 2004-05-21 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
JP2010238054A (ja) * | 2009-03-31 | 2010-10-21 | Mitsubishi Electric Corp | 半導体設計支援装置、高位合成方法及び半導体設計支援プログラム |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020129297A (ja) * | 2019-02-08 | 2020-08-27 | 富士通株式会社 | 情報処理装置、情報処理方法、及びプログラム |
JP7172687B2 (ja) | 2019-02-08 | 2022-11-16 | 富士通株式会社 | 情報処理装置、情報処理方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP5979966B2 (ja) | 2016-08-31 |
US20130305198A1 (en) | 2013-11-14 |
US8990741B2 (en) | 2015-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3674877B1 (en) | Method for accessing extended memory, device, and system | |
JP7088897B2 (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
US11321092B1 (en) | Tensor-based memory access | |
JP5979966B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
US11226798B2 (en) | Information processing device and information processing method | |
JP2004030638A (ja) | マイクロプロセッサキャッシュ設計初期化 | |
JP5979965B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
US9483379B2 (en) | Randomly branching using hardware watchpoints | |
CN116301775A (zh) | 基于复位树原型图的代码生成方法、装置、设备及介质 | |
JP6545417B2 (ja) | シミュレーション装置、シミュレーション方法およびシミュレーションプログラム | |
JP6091140B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
JP2014194746A (ja) | シミュレーション装置及びシミュレーション方法及びプログラム | |
US12106029B2 (en) | High-level synthesis device and high-level synthesis method | |
US11106846B1 (en) | Systems and methods for emulation data array compaction | |
JP5545054B2 (ja) | デバッグ回路及びデバッグシステム | |
JP6305644B2 (ja) | アーキテクチャ生成装置およびアーキテクチャ生成プログラム | |
JP6473023B2 (ja) | 性能評価モジュール及びこれを組み込んだ半導体集積回路 | |
US11080030B2 (en) | Information processing apparatus and information processing method | |
JP6266183B2 (ja) | 回路設計支援装置および回路設計支援プログラム | |
JP5469106B2 (ja) | コンピュータシステム、試験装置、試験方法、及び試験プログラム | |
JP5266651B2 (ja) | ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法 | |
JP2006202329A (ja) | システムlsiの設計方法及びこれを記憶した記録媒体 | |
Burbage | A Private, Associative Memory Alternative for RISC Systems | |
JP3693873B2 (ja) | マスクビット数演算装置、ベクトル処理装置、情報処理装置 | |
KR20210033916A (ko) | 파일 시스템 디스크에서 내장된 데이터 블록 정보로부터 디렉토리/블록 할당 맵을 재구축하는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141203 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151217 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160119 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160222 |
|
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: 20160628 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160726 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5979966 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |