JP2013235475A - 回路設計支援装置及び回路設計支援方法及びプログラム - Google Patents

回路設計支援装置及び回路設計支援方法及びプログラム Download PDF

Info

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
Application number
JP2012108308A
Other languages
English (en)
Other versions
JP5979966B2 (ja
Inventor
Akira Yamamoto
亮 山本
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012108308A priority Critical patent/JP5979966B2/ja
Priority to US13/850,421 priority patent/US8990741B2/en
Publication of JP2013235475A publication Critical patent/JP2013235475A/ja
Application granted granted Critical
Publication of JP5979966B2 publication Critical patent/JP5979966B2/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
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic 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設計時間を多大に要することが問題となっている。
そこで、RTLよりも抽象度が高い高級言語であるC言語、C++言語、SystemC言語などを用いて自動的にRTLを生成する高位合成技術が提唱されており、これを実現する高位合成ツールが市販されている。
特許技術文献1では、この高位合成ツールへの入力の前処理として、冗長なメモリを削除するために、冗長なメモリの発生要因となる配列記述箇所を検出し、自動的に配列を削除することで、小回路規模な集積回路を得ることが開示されている。
特開2010−238054号公報
しかしながら、特許文献1では、添え字がループ変数のみで表現されている配列だけを削除の対象としており、削除できない配列については依然として配列要素分のメモリが必要であるという課題がある。
この発明は、上記のような課題を解決することを主な目的としており、冗長なバッファを有効に削減することを主な目的とする。
本発明に係る回路設計支援装置は、
ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断部と、
前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断部により判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更部とを有することを特徴とする回路設計支援装置。
本発明によれば、ライトアクセスアドレスの使用順序又はリードアクセスアドレスの使用順序の変更により、ライトアクセスの順序とリードアクセスの順序とを整合させてバッファを減らすことができる。
実施の形態1に係る半導体設計支援装置の構成例を示す図。 実施の形態1に係る処理部の動作例を示すフローチャート図。 実施の形態1に係る高級言語で記述されたコードの例を示す図。 実施の形態1に係るループテーブルの例を示す図。 実施の形態1に係る配列テーブルの例を示す図。 実施の形態1に係るループテーブル(依存関係判定後)の例を示す図。 実施の形態1に係るアクセス遅延テーブルの例を示す図。 実施の形態1に係る高級言語で記述された他のコードの例を示す図。 実施の形態1に係るアクセス遅延テーブル(ライト依存なし、リード依存あり)の例を示す図。 実施の形態1に係るアクセス遅延テーブル(ライト依存あり、リード依存なし)の例を示す図。 実施の形態1の手法を適用しない場合のブロック図と性能の例を示す図。 実施の形態1の手法を適用した場合(ライト依存なし、リード依存あり)のブロック図と性能の例を示す図。 実施の形態1の手法を適用した場合(ライト依存あり、リード依存なし)のブロック図と性能の例を示す図。 実施の形態1に係る半導体設計支援装置のハードウェア構成例を示す図。
実施の形態1.
本実施の形態では、回路間にあるメモリ、またはレジスタ数を削減し、かつ低遅延で演算結果を出力可能なコードを得るための半導体設計支援装置を説明する。
より具体的には、本実施の形態で説明する半導体設計支援装置は、演算間の依存関係を抽出し、演算の順序を変更する。
そして、本実施の形態に係る半導体設計支援装置によれば、設計者の能力に依存することなく高性能で小回路規模なハードウェア構成(アーキテクチャ)を短時間で得ることができる。
図1は、実施の形態1に係る半導体設計支援装置を用いた高位合成システムの構成を示すブロック図である。
図1において、半導体設計支援装置1は、処理部3とテーブル記憶部4とファイル記憶部5を備える。
半導体設計支援装置1は、回路設計支援装置に相当する。
高位合成装置2は、高級言語による動作記述コードを受理して、RTLを生成する装置である。
半導体設計支援装置1から高位合成装置2へ高位合成が可能な動作記述コードを与えることで目的とするRTLを得ることができる。
処理部3は、高位合成の対象となる高級言語で記述された動作記述コードを入力し、配列のアクセス依存関係を検出し、低遅延、小回路規模になるように配列のアクセス順序を変更する。
処理部3は、コード入力部、アクセス順序判断部及びアクセス順序変更部に相当する。
テーブル記憶部4は、処理部3の処理結果が示されるテーブルや、処理部3が参照するテーブルを記憶する。
ファイル記憶部5は、処理部3が入力した動作記述コードを記憶する。
また、ファイル記憶部5は、処理部3が変更した後の動作記述コードを記憶してもよい。
次に、実施の形態1の動作を説明する。
図2は、実施の形態1の半導体設計支援装置1の動作の流れを示すフローチャートである。
このフローチャートにある機能は処理部3で実行され、必要なときにテーブル記憶部4とファイル記憶部5とのデータのやりとりが行われる。
動作を説明するにあたり図3に例示する動作記述コードを用いる。
なお、図3のコードは本実施の形態に係る動作を説明するために必要な一部を抜き出して示したものであり、動作記述としては不完全なものである。
この記述を高位合成装置2に直接入力すれば、最初のループと次のループの間にN個のデータを格納するためのバッファ(メモリ、あるいはレジスタ)が必要となる。
最初のループが終了しないと次のループに処理が移れないため、結果であるoutが出力されるには時間を要することが問題となる。
まず、半導体設計支援装置1が動作を開始すると、処理部3は高位合成の対象となる動作記述のファイル、ここでは図3に示すコードを受理し(ステップST1:コード受理)、ファイル記憶部5に格納する。
次に、処理部3は、ファイル記憶部5のコード(図3)を読み出し、for文の抽出を行う(ステップST2:for文の抽出)。
この抽出では図4に示すように各for文にループID(Identifier)とその記述箇所(行数)をテーブル記憶部4に書き込む。
図4のテーブルをループテーブルと呼ぶ。
次に、処理部3は、ループテーブル(図4)に基づき、動作記述コード(図3)を解析し、ループID毎にループ内にある配列名、配列ID、アクセス方法、アクセス数、トータルアクセス数を抽出し、テーブル記憶部4へ書き込む(ステップST3:配列アクセス関係抽出)。
ここで書き込まれるテーブルを配列テーブルと呼ぶ。
配列名は、コード中に記載がある配列変数名である。
アクセス方法は、式中に該当する配列が左辺にある場合はライト、右辺にある場合はリードとする。
アクセス数は、該当する配列に何度アクセスしたかを示す。
このアクセス数は、繰り替えし回数あたりのアクセス数となる。
図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の値が、リードアクセスアドレスである。
次に、ステップST1で作成したループテーブルからループID毎に繰り返し文(for文)の中で、前のイタレーションが次のイタレーションに影響を与えるかを調べる(ステップST4:依存関係判定)。
具体的には、繰り返し文中にある任意の変数が参照後、代入を行っている場合は依存ありとし、それ以外を依存なしとする。
図3のコードの場合、1つ目のfor文では、変数countについての参照(count!=10)後に、代入(count++)が行われているので、1つ目のfor文では依存関係がある。
一方、2つ目のfor文では、このような変数はないので、2つ目のfor文では依存関係がない。
なお、依存関係があるfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスの使用順序を変更すると高位合成の対象となる回路の動作が変化してしまう。
このため、依存関係があるfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスの使用順序を変更することはできない。
一方、依存関係がないfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスは使用順序しても高位合成の対象となる回路の動作が変化しない。
このため、依存関係がないfor文に含まれるライトアクセスアドレス又はリードアクセスアドレスの使用順序は変更することはできる。
ステップST4で抽出された依存関係の有無は、テーブル記憶部4のループテーブルに依存関係を追記される。
図6は、依存関係の有無が追記された後のループテーブルを示す。
なお、動作記述コードにおいて、処理として実行順序をあらかじめ決めておきたい場合がある。
例えば画像データなどは座標順にデータが入力される場合がある。
そのため、動作記述コードに順序変更不可の情報を付加して、あるいはオプションとして、処理部3がそれを解析し、依存関係情報を生成してもよい。
図8は、リード順序の変更が禁止されている動作記述コードの例である。
なお、図8の動作記述コードについては後述する。
次に、処理部3は、配列テーブル(図5)を参照し、同一配列IDをアクセスするアドレス(添え字)計算を行い、アクセス遅延テーブルを作成し、作成したアクセス遅延テーブルをテーブル記憶部4に格納する(ステップST5:アクセス遅延算出)。
より具体的には、処理部3は、配列名が共通するライトアクセス配列とリードアクセス配列を抽出し、配列名が共通するライトアクセス配列とリードアクセス配列を対にし、ライトアクセス配列とリードアクセス配列の対ごとに、動作記述コード実行時のライトアクセスアドレスの使用順序と、動作記述コード実行時のリードアクセスアドレスの使用順序とを判断する。
図5の例では、配列名が共通するライトアクセス配列とリードアクセス配列であるdatを対にし、dat(W:2行目)のライトアクセスアドレスの使用順序と、dat(R:3行目)のリードアクセスアドレスの使用順序とを判断する。
図7は、図3のコードを解析して得られたアクセス遅延テーブルである。
アクセス遅延テーブルには、サイクル数、ライトアクセスアドレス、リードアクセスアドレス、アクセス遅延、アクセスコストを書き込む。
サイクル数は、時間情報であり、1サイクル目、2サイクル目といったようにサイクルをインクリメントして記述する。
この上限はループのトータルアクセス数である。
ライトアクセスアドレスは、ループを展開して得られるライトアクセスする配列の添え字である。
ライトアクセスアドレスの欄に示される数字は、それぞれライトアクセスアドレスを表しており、ライトアクセスアドレスの欄には、動作記述コード実行時のライトアクセスアドレスの使用順序が記述されている。
リードアクセスアドレスは、リードアクセスする各配列について記載する。
図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」となる。
アクセスコストは、複数のリードがある場合はもっともアクセス遅延が大きい値をアクセスコストとする。
図3のコードでは、16サイクル目に、リードアクセスアドレス0とリードアクセスアドレス15の両方の値が揃うので、ループID2のout[0]=dat[0]+dat[15−0]が実行可能である。
リードアクセスアドレス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サイクルを要する。
例えば、リードアクセスアドレス1とリードアクセスアドレス14についてみれば、サイクル数2のときにライトアクセスアドレス1のライトが行われ、サイクル数15のときにライトアクセスアドレス14のライトが行われている。
一方で、ループ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は、ライトあるいはリードのアクセス順序の変更を行う(ステップST6:アクセス順序変更)。
より具体的には、処理部3は、ループテーブル(図6)と配列テーブル(図5)を参照し、動作記述コードが以下の4つのケースのいずれに該当するかを判断する。
アクセスケース1:「ライト依存あり」で「リード依存あり」
アクセスケース2:「ライト依存なし」で「リード依存あり」
アクセスケース3:「ライト依存なし」で「リード依存なし」
アクセスケース4:「ライト依存あり」で「リード依存なし」
ここで、「ライト依存あり」とは、ライトアクセスアドレスの使用順序を変更すると高位合成の対象となる回路の動作が変化してしまうため、ライトアクセスアドレスの使用順序を変更できないことを意味する。
一方、「ライト依存なし」とは、ライトアクセスアドレスの使用順序を変更しても高位合成の対象となる回路の動作が変化しないため、ライトアクセスアドレスの使用順序を変更できることを意味する。
また、「リード依存あり」とは、リードアクセスアドレスの使用順序を変更すると高位合成の対象となる回路の動作が変化してしまうため、リードアクセスアドレスの使用順序を変更できないことを意味する。
一方、「リード依存なし」とは、リードアクセスアドレスの使用順序を変更しても高位合成の対象となる回路の動作が変化しないため、リードアクセスアドレスの使用順序を変更できることを意味する。
アクセスケース1の場合は、ライト及びリードのアクセス順序は固定化されるため、本実施の形態による高性能化はできないので、ここで処理を終了する。
アクセスケース2の場合は、ライトの書き込み順序は変更可能であるため、ライトアクセス順をリードアクセス順に合わせることが可能である。
なお、リードアクセス順に合わせてライトアクセス順を変更する処理を、ライトアクセス順序変更処理という。
アクセスケース3の場合、どちらも依存関係はないので、ライトアクセス順又はリードアクセス順のどちらかを固定として他方の順序を変更する。
ライトアクセス順、リードアクセス順のいずれを固定とするかは、アクセスコストが小さいほうを選べばよい。
アクセスケース4の場合は、リードの書き込み順序は変更可能であるため、リードアクセス順をライトアクセス順に合わせることが可能である。
なお、ライトアクセス順に合わせてリードアクセス順を変更する処理を、リードアクセス順序変更処理という。
ここでは、アクセスケース2について説明する。
図8は、ライト依存なしでリード依存ありの場合のコード例である。
図8の1つ目のループのライトアクセス配列dat[i]は、依存関係がない。
一方、2つ目のループでは、リード固定オプションを付加してある。
これはループ文自体に依存関係はないが、設計上out配列にたいして0、1、2、3...とコードで示した順序で処理を行いたい場合に付加されるオプションである。
このオプションを処理部3が解析し、依存関係判定において、該当するループIDに依存関係あり(2つ目のループで「リード依存」あり)と判断される。
前述のように、ライト側(1つ目のループ)は依存関係がないため、for文中どのiからライトアクセスを始めてもよい。
つまり、リード側(2つ目のループ)のdat(リードアクセス配列)が要求する順序でライトアクセスを行い、ライトアクセス結果をリード側のdatに渡すことで処理が高速になる。
このように、アクセスケース2の場合は、処理部3は、リードアクセス順にライトを実行できるように変更ライトアクセスアドレスをアクセス遅延テーブルに書き込む。
図9に、図8のコードに対応させて、変更ライトアクセスアドレスと更新したアクセスコストを付加した遅延テーブルを示す。
なお、図8のコードの2つ目ループの内容と図3の2つ目のループの内容が同じであり、図8のコードの場合も、ライトアクセスの順序を変更する前のアクセス遅延テーブル(図2のST5:アクセス遅延算出の後のアクセス遅延テーブル)は、図7に示すものと同じである。
図9のアクセス遅延テーブルでは、リードアクセスアドレスの順序と一致するように、ライトアクセスアドレスの順序を変更している(ライトアクセス順序変更処理)。
なお、遅延コストが0のため、図8の1つ目のループと2つ目のループの間にバッファは必要なく、1つ目のループの結果を直接2つ目のループが受けとることができる。
図9のようにライトアクセスの順序を変更すると、ライトアクセスアドレスiへのライトの直後にリードアクセスアドレスiからのリードが発生するため、16サイクルで処理が終了する。
また、前述したように、ライトアクセスとリードアクセスとの間のタイミング差がないので、バッファも不要である。
本実施の形態に係る手法を適用しない場合、図8のコードを高位合成してRTLを生成すると、図11に示すブロック図、および性能になる。
バッファはN個分必要であり、さらに1つ目のループ(図11ではA1と表記)の処理が終了した後に、2つ目のループ(図11ではB1と表記)の処理が開始されている。
本実施の形態に係る手法を適用してライトアクセス順序を変更し、図8のコードを高位合成してRTLを生成すると、図12に示すブロック図、および性能になる。
本実施の形態によれば、図12に示すように中間バッファは必要なく、1つ目のループ(図12ではA1と表記)の処理を全て待つことなく、2つ目のループ(図12ではB1と表記)の処理が開始可能となり、高速に処理が可能となる。
アクセスケース3:「ライト依存なし」で「リード依存なし」の場合は、ライト依存ありとリード依存なしの場合(アクセスケース4)とライト依存なしとリード依存ありの場合(アクセスケース2)との2つの場合を処理し、アクセスコストが小さくなるほうを選べばよい。
アクセスケース4:「ライト依存あり」で「リード依存なし」の場合、リード側のアクセス順序をアクセスコストが小さくなるように変更する。
図3のコード例は、アクセスケース4に該当する。
図3コードの場合のアクセス順序変更の図を図10に示す。
図3のコードを処理する場合は、例えば、処理部3は以下のアルゴリズムに従ってリードアクセスアドレスの順序を変更する。
まず、処理部3は、図3のコードの実行時に同期して用いられる2つのリードアクセスアドレスをグルーピングし、リードアクセスアドレスのグループ(以下、グループを「ペア」という)を生成する。
例えば、図7のリード1のアクセスアドレス7とリード2アクセスアドレス8はループID2で同時に処理されるものであるため、ペアになる。
そして、処理部3は、リードアクセスアドレスのペアごとに、ペア内の2つのリードアクセスアドレスのうち、同じアドレス値のライトアクセスアドレスの使用タイミングが遅いリードアクセスアドレスを基準リードアクセスアドレスとするとともに、基準リードアクセスアドレスと同じアドレス値のライトアクセスアドレスを基準ライトアクセスアドレスとする。
更に、処理部3は、基準リードアクセスアドレス間の使用順序が基準ライトアクセスアドレス間の使用順序と一致するように、リードアクセスアドレスのペア単位で、リードアクセスアドレスの使用順序を変更する。
図7の例では、リードアクセスアドレス(0、15)、(1、14)、(2、13)、(3、12)、(4、11)、(5、10)、(6、9)、(7、8)がペアとなる。
更に、リードアクセスアドレス(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)という順序に変更される。
上述のリードアクセスアドレスの順序変更アルゴリズムの考え方は以下の通りである。
ライトアクセスアドレスの使用順序は固定されているので、ループID2で最初に処理可能となるのは、ライトアクセスアドレス7とライトアクセスアドレス8の処理の直後に処理可能となるリードアクセスアドレス7とリードアクセスアドレス8である。
そのため、リードアクセスアドレス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が演算開始可能となる。
このように演算可能となる処理から順に演算するようにリードアクセスアドレスの処理順序を変更する。
図10に示す順序でリードアクセスアドレスの順序を変更すると、最後のペアであるリードアクセスアドレス0とリードアクセスアドレス15を用いたout[0]=dat[0]+dat[15−0]は、16サイクル目で実現できる。
このため、図3の動作記述コードをそのまま高位合成の対象とした場合のサイクル数である23(図7)に比べて大幅に処理時間を短縮することができる。
また、図10の順序の場合は、リードアクセスアドレス8〜15からのリードは、ライトアクセスアドレス8〜15へのライトの直後に行われるため、リードアクセスアドレス8〜15についてはバッファが不要であり、リードアクセスアドレス0〜7についての8個のバッファで済む(バッファ数を最少個数とすることができる)。
このため、図3の動作記述コードをそのまま高位合成の対象とした場合のバッファ数である16個に比べて大幅にバッファ数を削減することができる。
このように、リードアクセスアドレスの順序を変更することで、遅延コストが小さくなることで、ループID2が出力するデータの遅延が小さくなり、この結果、低レイテンシな処理が可能となる。
つまり、本実施の形態の手法によらない場合は、データ数N個分のレジスタ、あるいはメモリが必要であるが、本実施の形態によりアクセス順序を変更することにより、バッファ数が半分で済む。
さらに、本実施の形態の手法によらない場合は、16サイクル目の後にループID2の処理を開始するが、本実施の形態によりアクセス順序を変更することにより、8サイクル目の後にループID2の処理を開始することが可能となり、低レイテンシとなる。
バッファ容量は半分になり、さらにループ1の計算途中からループ2の演算が開始可能となり、高速に処理が可能となる。
図13にアクセスケース4の場合のブロック図と性能を示す。
図13に示すように、図11の場合に比べて中間バッファのサイズが小さく、また、1つ目のループ(図13ではA1と表記)の処理を全て待つことなく、2つ目のループ(図13ではB1と表記)の処理が開始可能となり、高速に処理が可能となる。
以上説明したように、アクセスケース2、アクセスケース4のいずれの場合も、図3の動作記述コードがそのまま高位合成に用いられる場合に比べて、高位合成で生成されるバッファの個数が減少するライトアクセス又はリードアクセスの順序を導出し、導出したライトアクセス又はリードアクセスの順序に沿ってライトアクセスアドレス又はリードアクセスアドレスの使用順序を変更している。
そして、処理部3は、最後に、アクセス順序を変更したコードを生成し、アクセス順序の変更後のコードをファイル記憶部5に格納する(ステップST7:コード生成)。
変更記述箇所は、ループテーブル(図6)に記載ある行数から判断する。
ここで、コード生成は、アクセス遅延テーブル(図9又は図10)から、更新されたアクセスになるようにループを展開して記述する。
つまり、処理部3は、図8のコードの1つ目のループ文を、図9の変更ライトアクセスの順序でライトアクセスされる記述に書き換える。
また、処理部3は、図3のコードの2つ目のループ文を、図10の変更リードアクセスアドレスの順序でリードアクセスされる記述に書き換える。
なお、処理部3が動作記述コードを書き換える代わりに、処理部3が図9の変更ライトアクセスの内容を示す情報(ライトアクセスアドレス使用順序情報の例)を高位合成装置2(コード書き換え装置の例)に出力し、高位合成装置2に、図8のコードの1つ目のループ文を、図9の変更ライトアクセスの順序でライトアクセスされる記述に書き換えさせるようにしてもよい。
同様に、処理部3が図10の変更リードアクセスアドレスの内容を示す情報(リードアクセスアドレス使用順序情報の例)を高位合成装置2(コード書き換え装置の例)に出力し、高位合成装置2に、図3のコードの2つ目のループ文を、図10の変更リードアクセスアドレスの順序でリードアクセスされる記述に書き換えさせるようにしてもよい。
以上、本実施の形態では、
高位合成の対象となる設計回路の動作を記述した動作記述を入力とし、入力した動作記述の中から、複数の配列変数の依存関係を抽出し、配列を実現するメモリ、あるいはレジスタ数を削減する、または遅延が小さくなるように配列にライトする、またはリードする順序を変更するコードを生成する処理部を備えた半導体設計支援装置を説明した。
最後に、本実施の形態に示した半導体設計支援装置1のハードウェア構成例を図14を参照して説明する。
半導体設計支援装置1はコンピュータであり、半導体設計支援装置1の各要素はプログラムにより処理を実行することができる。
半導体設計支援装置1のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
通信装置904は、高位合成装置2やその他の装置と通信を行う。
入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、図1に示す「処理部3」として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1に示す「処理部3」の機能を実現するプログラムを実行する。
また、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の算出」、「〜の導出」、「〜の解析」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
なお、図14の構成は、あくまでも半導体設計支援装置1のハードウェア構成の一例を示すものであり、半導体設計支援装置1のハードウェア構成は図14に記載の構成に限らず、他の構成であってもよい。
また、本実施の形態に示した高位合成装置2も、図14のハードウェア構成をしていてもよいし、他のハードウェア構成であってもよい。
また、本実施の形態に示す手順により、本発明に係る回路設計支援方法を実現可能である。
1 半導体設計支援装置、2 高位合成装置、3 処理部、4 テーブル記憶部、5 ファイル記憶部。

Claims (13)

  1. ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
    前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断部と、
    前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断部により判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更部とを有することを特徴とする回路設計支援装置。
  2. 前記アクセス順序変更部は、
    ライトアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しないか否か、及びリードアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しないか否かを判断し、
    判断結果に基づき、前記ライトアクセス順序変更処理及び前記リードアクセス順序変更処理のいずれかを行うことを特徴とする請求項1に記載の回路設計支援装置。
  3. 前記アクセス順序変更部は、
    ライトアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しない一方で、リードアクセスアドレスの使用順序を変更すると前記高位合成の対象となる回路の動作が変化してしまう場合に、前記ライトアクセス順序変更処理を行い、
    リードアクセスアドレスの使用順序を変更しても前記高位合成の対象となる回路の動作が変化しない一方で、ライトアクセスアドレスの使用順序を変更すると前記高位合成の対象となる回路の動作が変化してしまう場合に、前記リードアクセス順序変更処理を行い、
    ライトアクセスアドレスの使用順序及びリードアクセスアドレスの使用順序のいずれを変更しても前記高位合成の対象となる回路の動作が変化しない場合に、前記ライトアクセス順序変更処理及び前記リードアクセス順序変更処理のいずれかを行うことを特徴とする請求項2に記載の回路設計支援装置。
  4. 前記高位合成では、
    アドレス値が共通するライトアクセスアドレスとリードアクセスアドレスとの対ごとに、対になるライトアクセスアドレスとリードアクセスアドレスとの間で使用タイミングに差がある場合に、使用タイミングの差を吸収するバッファが生成され、
    前記アクセス順序変更部は、
    前記ライトアクセス順序変更処理において、
    前記コード入力部により入力された動作記述コードがそのまま前記高位合成に用いられる場合に比べて、前記高位合成で生成されるバッファの個数が減少するライトアクセスアドレスの使用順序を導出し、導出した使用順序に沿ってライトアクセスアドレスの使用順序を変更し、
    前記リードアクセス順序変更処理において、
    前記コード入力部により入力された動作記述コードがそのまま前記高位合成に用いられる場合に比べて、前記高位合成で生成されるバッファの個数が減少するリードアクセスアドレスの使用順序を導出し、導出した使用順序に沿ってリードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜3のいずれかに記載の回路設計支援装置。
  5. 前記アクセス順序変更部は、
    前記ライトアクセス順序変更処理において、
    前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序を変更することなく、前記高位合成で生成されるバッファの個数が減少するライトアクセスアドレスの使用順序を導出し、
    前記リードアクセス順序変更処理において、
    前記アクセス順序判断部により判断されたライトアクセスアドレスの使用順序を変更することなく、前記高位合成で生成されるバッファの個数が減少するリードアクセスアドレスの使用順序を導出することを特徴とする請求項4に記載の回路設計支援装置。
  6. 前記アクセス順序変更部は、
    前記ライトアクセス順序変更処理において、
    前記高位合成で生成されるバッファの個数が最少となるライトアクセスアドレスの使用順序を導出し、
    前記リードアクセス順序変更処理において、
    前記高位合成で生成されるバッファの個数が最少となるリードアクセスアドレスの使用順序を導出することを特徴とする請求項4又は5に記載の回路設計支援装置。
  7. 前記アクセス順序変更部は、
    前記ライトアクセス順序変更処理において、
    前記アクセス順序判断部により判断されたリードアクセスアドレスの使用順序と一致するように、ライトアクセスアドレスの使用順序を変更することを特徴とする請求項1〜6のいずれかに記載の回路設計支援装置。
  8. 前記アクセス順序変更部は、
    前記リードアクセス順序変更処理において、
    前記動作記述コード実行時に同期して用いられる2つ以上のリードアクセスアドレスをグルーピングし、
    リードアクセスアドレスのグループごとに、グループ内の2つ以上のリードアクセスアドレスのうち、同じアドレス値のライトアクセスアドレスが使用されるタイミングが最も遅いリードアクセスアドレスを基準リードアクセスアドレスとするとともに、基準リードアクセスアドレスと同じアドレス値のライトアクセスアドレスを基準ライトアクセスアドレスとし、
    基準リードアクセスアドレス間の使用順序が基準ライトアクセスアドレス間の使用順序と一致するように、リードアクセスアドレスのグループ単位で、リードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜7のいずれかに記載の回路設計支援装置。
  9. 前記アクセス順序判断部は、
    前記動作記述コードから複数のループ文を抽出し、
    抽出したループ文から、配列名が共通するライトアクセス配列とリードアクセス配列を抽出し、
    配列名が共通するライトアクセス配列とリードアクセス配列を対にし、
    ライトアクセス配列とリードアクセス配列の対ごとに、ライトアクセスアドレスの使用順序と、リードアクセスアドレスの使用順序とを判断し、
    前記アクセス順序変更部は、
    ライトアクセス配列とリードアクセス配列の対ごとに、前記ライトアクセス順序変更処理及び前記リードアクセス順序変更処理のいずれかを行うことを特徴とする請求項1〜8のいずれかに記載の回路設計支援装置。
  10. 前記アクセス順序変更部は、
    前記ライトアクセス順序変更処理において、前記動作記述コードを書き換えてライトアクセスアドレスの使用順序を変更し、
    前記リードアクセス順序変更処理において、前記動作記述コードを書き換えてリードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜9のいずれかに記載の回路設計支援装置。
  11. 前記アクセス順序変更部は、
    前記ライトアクセス順序変更処理において、変更後のライトアクセスアドレスの使用順序が示されるライトアクセスアドレス使用順序情報を、前記動作記述コードを書き換えるコード書換え装置に出力し、前記コード書換え装置に、前記ライトアクセスアドレス使用順序情報に示されるライトアクセスアドレスの使用順序に沿って前記動作記述コードの書き換えを行わせてライトアクセスアドレスの使用順序を変更し、
    前記リードアクセス順序変更処理において、変更後のリードアクセスアドレスの使用順序が示されるリードアクセスアドレス使用順序情報を、前記動作記述コードを書き換えるコード書換え装置に出力し、前記コード書換え装置に、前記リードアクセスアドレス使用順序情報に示されるリードアクセスアドレスの使用順序に沿って前記動作記述コードの書き換えを行わせてリードアクセスアドレスの使用順序を変更することを特徴とする請求項1〜9のいずれかに記載の回路設計支援装置。
  12. ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、コンピュータが、入力するコード入力ステップと、
    前記コンピュータが、前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断ステップと、
    前記コンピュータが、前記アクセス順序判断ステップにより判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断ステップにより判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更ステップとを有することを特徴とする回路設計支援方法。
  13. ライトアクセスされるライトアクセス配列と、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力ステップと、
    前記動作記述コードを解析し、前記動作記述コード実行時の各ライトアクセスアドレスの使用順序と、前記動作記述コード実行時の各リードアクセスアドレスの使用順序とを判断するアクセス順序判断ステップと、
    前記アクセス順序判断ステップにより判断されたリードアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のライトアクセスアドレスの使用順序を変更するライトアクセス順序変更処理、及び前記アクセス順序判断ステップにより判断されたライトアクセスアドレスの使用順序に基づいて前記動作記述コード実行時のリードアクセスアドレスの使用順序を変更するリードアクセス順序変更処理のいずれかを行うアクセス順序変更ステップとをコンピュータに実行させることを特徴とするプログラム。
JP2012108308A 2012-05-10 2012-05-10 回路設計支援装置及び回路設計支援方法及びプログラム Active JP5979966B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020129297A (ja) * 2019-02-08 2020-08-27 富士通株式会社 情報処理装置、情報処理方法、及びプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社東芝 スケジューラ、スケジューリング方法、スケジューリング・プログラム、及び高位合成装置
US7412684B2 (en) 2004-05-28 2008-08-12 Peter Pius Gutberlet Loop manipulation in a behavioral synthesis tool
US7353491B2 (en) 2004-05-28 2008-04-01 Peter Pius Gutberlet Optimization of memory accesses in a circuit design
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 設計支援装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US8990741B2 (en) 2015-03-24
JP5979966B2 (ja) 2016-08-31
US20130305198A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
EP3674877B1 (en) Method for accessing extended memory, device, and system
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
JP5979966B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
US11321092B1 (en) Tensor-based memory access
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) 情報処理装置及び情報処理方法及びプログラム
US11106846B1 (en) Systems and methods for emulation data array compaction
JP5545054B2 (ja) デバッグ回路及びデバッグシステム
JP2014194746A (ja) シミュレーション装置及びシミュレーション方法及びプログラム
JP6305644B2 (ja) アーキテクチャ生成装置およびアーキテクチャ生成プログラム
US20220366111A1 (en) High-level synthesis device and high-level synthesis method
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
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
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