JP4007483B2 - 高位合成装置および高位合成方法 - Google Patents

高位合成装置および高位合成方法 Download PDF

Info

Publication number
JP4007483B2
JP4007483B2 JP2001215560A JP2001215560A JP4007483B2 JP 4007483 B2 JP4007483 B2 JP 4007483B2 JP 2001215560 A JP2001215560 A JP 2001215560A JP 2001215560 A JP2001215560 A JP 2001215560A JP 4007483 B2 JP4007483 B2 JP 4007483B2
Authority
JP
Japan
Prior art keywords
read
thread
circuit
generating
generation
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.)
Expired - Fee Related
Application number
JP2001215560A
Other languages
English (en)
Other versions
JP2003030261A (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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2001215560A priority Critical patent/JP4007483B2/ja
Priority to GB0215882A priority patent/GB2380291B/en
Priority to US10/195,740 priority patent/US6704914B2/en
Publication of JP2003030261A publication Critical patent/JP2003030261A/ja
Application granted granted Critical
Publication of JP4007483B2 publication Critical patent/JP4007483B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

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)
  • Dram (AREA)
  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、動作記述からレジスタトランスファレベル(RTL)の論理回路を自動的に生成する、高位合成方法とその高位合成方法を用いて生成されたスレッドおよび回路生成方法に関し、ASIC(Application Specific Integrated Circuit:特定用途向けIC)の設計等、短期間での設計が要求される場合に、特に有効に用いられる技術である。
【0002】
【従来の技術】
高位合成方法は、ハードウェアの構成に関する情報が含まれず、処理の動作のみが記述された動作記述から、レジスタ、演算器等のハードウェア構成と動作周期毎のレジスタ間のデータの流れと処理とが含まれるRTLの論理回路を自動的に生成する方法である。この高位合成方法は、例えば特開平5−101141号公報に開示されている。以下に、従来の高位合成方法のフローについて、その概要を説明する。
【0003】
▲1▼動作記述からコントロールデータフローグラフ(CDFG)への変換
高位合成においては、まず、動作記述が解析されて、演算、外部入出力およびメモリアクセス実行順序の依存関係を表現するCDFGと称されるモデルに変換される。
【0004】
図1に動作記述の例を示す。この動作記述では、101において変数aにアドレス(adr)に対応するメモリの内容が代入され、102において変数bにアドレス(adr+1)に対応するメモリの内容が代入され、103において変数cにアドレス(adr−1)に対応するメモリの内容が代入されている。そして、104において変数dにa+b+cの値が代入されている。
【0005】
図2に、図1の動作記述から変換されたCDFGの例を示す。このCDGFにおいて、節点105は回路に対する外部入力であり、節点106は回路からの外部出力である。また、節点107〜109はメモリへのリード要求であり、節点110〜112はメモリからのリードデータである。また、節点133はインクリメント、節点134はデクリメントであり、節点135および136は加算である。
【0006】
図2に一点鎖線で示す枝113および114は制御依存枝であり、枝113は節点107と節点108とを接続しており、枝114は節点108と節点109とを接続している。この制御依存枝の接続先の節点は、この枝の接続元の節点よりも遅いステップにスケジューリングする必要がある。例えば、後述するスケジューリング工程において、節点108は節点107よりも遅いステップにスケジューリングされる。パイプラインアクセス可能なメモリを用いる場合には、リード要求107〜109が動作記述と同じ順序で実行され、かつ、異なるステップにスケジューリングされていればよい。ここで、パイプラインアクセス可能なメモリとは、毎クロック、アクセスを要求することができるメモリのことを表す。図1の動作記述では、メモリリードを3回行っており、それらが記述されている順に、異なるステップで実行されるように、制御依存枝113および114が設けられる。
【0007】
図2に点線で示す枝117〜119は制御依存枝であり、枝117は節点107と節点110とを接続しており、枝118は節点108と節点111とを接続しており、枝119は節点109と節点112とを接続している。この制御依存枝の接続先の節点は、この枝の接続元の節点よりもnステップだけ遅いステップにスケジューリングする必要がある。ここで、nはこの枝に対応付けられた相対ステップ数120〜122である。例えば、後述するスケジューリング工程において、節点110は節点107よりも2ステップだけ遅いステップにスケジューリングされる。図3に示すように、リード要求信号RREQの立ち上がり時点から2クロック後に、リードデータRDATAが有効になるメモリを用いる場合には、相対ステップ数2の制御依存枝117〜119が設けられる。本明細書においては、リード要求信号の立ち上がり時点からnクロック後に、リードデータが有効になり、かつ、パイプラインアクセス可能なメモリを、レイテンシがnのパイプラインメモリと称する。
【0008】
図2に実線で示す枝123〜132はデータ依存枝である。枝123はメモリへのリード要求107と外部から入力されるメモリのアドレス105を接続している。また、枝126はメモリへのリード要求108とインクリメント133を接続しており、枝124はインクリメント133とメモリのアドレス105とを接続している。また、枝127はメモリへのリード要求109とデクリメント134とを接続しており、枝125はデクリメント134とメモリのアドレス105とを接続している。枝128および129は、それぞれメモリからのリードデータ110および111と加算135とを接続しており、枝130および131は、それぞれ加算135およびメモリからのリードデータ112と加算136とを接続している。さらに、枝132は加算136と外部出力106とを接続しており、外部出力106から処理結果が外部に出力される。
【0009】
▲2▼スケジューリング
スケジューリング工程では、CDFGの各節点が、ステップと称される、コントローラ(有限状態遷移機械)の状態に対応した時間に割り当てられる。
【0010】
図4に、図2のCDFGをスケジューリングした結果の例を示す。この例では、ステップ0〜ステップ4までの5つのステップが各節点に割り当てられている。異なるステップにスケジューリングされた演算間では、1つの演算器を共有することができる。例えば、図4では、加算135と加算136とは異なるステップにスケジューリングされているので、1つの加算器を共有することができる。スケジューリングにおいては、このようにハードウェアの数をできるだけ少なくしてコストを低減できるように、各節点がステップに割り当てられる。
【0011】
▲3▼アロケーション
アロケーション工程では、スケジューリングされたCDFGの実行に必要な演算器、レジスタおよび入出力ピンが生成され、CDFGの演算が演算器に、ステップ境界を横切るデータ依存枝がレジスタに、外部入出力およびメモリアクセスが入出力ピンにそれぞれ割り当てられる。
【0012】
図5に、アロケーションの例を示す。この例では、インクリメンタ137、デクリメンタ138および加算器139が生成されて、図5に点線で示すように、インクリメント133がインクリメンタ137に割り当てられ、デクリメント134がデクリメンタ138に割り当てられ、加算135および136が加算器139に割り当てられる。
【0013】
また、レジスタ140が生成されて、図5に点線で示すように、、ステップ境界を横切るデータ依存枝124、125、128および130がレジスタ140に割り当てられる。
【0014】
さらに、入力ピン141および142、出力ピン143および144が生成されて、図5に点線で示すように、外部入力105が入力ピン141に割り当てられ、外部出力106が出力ピン144に割り当てられ、リード要求107〜109が出力ピン143に割り当てられ、リードデータ110〜112が入力ピン142に割り当てられる。
【0015】
▲4▼データパスの生成
データパス生成工程では、CDFGのデータ依存枝に対応したデータパスが生成され、必要に応じてセレクタが生成される。
【0016】
図6に、データパス生成の例を示す。この例では、図6に点線で示すように、外部入力105からリード要求107へのデータ依存枝123に対応して、外部入力105が割り当てられた入力ピン141からリード要求107が割り当てられた出力ピン143へのパス145および146が生成される。
【0017】
また、図6に点線で示すように、外部入力105からインクリメント133へのデータ依存枝124に対応して、外部入力105が割り当てられた入力ピン141からデータ依存枝124が割り当てられたレジスタ140へのパス147および148と、データ依存枝124が割り当てられたレジスタ140からインクリメント133が割り当てられたインクリメンタへのパス149とが生成される。
【0018】
さらに、図6に点線で示すように、メモリリード110から加算135へのデータ依存枝128に対応して、メモリリード110が割り当てられた入力ピン142からデータ依存枝128が割り当てられたレジスタ140へのパス150および148と、データ依存枝128が割り当てられたレジスタ140から加算135が割り当てられた加算器139へのパス151が生成される。
【0019】
同様にして、外部入力105からデクリメント134へのデータ依存枝に対応するデータパス、インクリメント133からリード要求108へのデータ依存枝に対応するデータパス、デクリメント134からリード要求109へのデータ依存枝に対応するデータパス、メモリリード111から加算135へのデータ依存枝に対応するデータパス、メモリリード112から加算136へのデータ依存枝に対応するデータパス、加算136から外部出力106へのデータ依存枝に対応するデータパスがそれぞれ生成される。
【0020】
なお、この例のように、演算器、レジスタ、出力ピン等が共有されている場合には、セレクタ152および153が生成されて演算器、レジスタ、出力ピン等に入力されるデータが選択される。
【0021】
▲5▼制御論理の生成
制御論理生成工程では、アロケーション工程およびデータパス生成工程により生成されたレジスタ、セレクタ等を制御する制御論理が生成される。
【0022】
図7に、制御論理生成の例を示す。
【0023】
(1)制御論理用入出力ピンの生成
まず、制御論理用の入出力ピンとして、クロックが入力される入力ピン154およびメモリリード要求が出力される出力ピン155が生成される。なお、リード要求が出力されるときには、上記出力ピン143からメモリのアドレスが出力され、この出力ピン155からリード要求が出力される。
【0024】
(2)有限状態遷移機械の生成
次に、有限状態遷移機械156が生成される。ここでは、まず、スケジューリング結果の総ステップ数と同じ数の状態403〜407(S0〜S4)が生成される。次に、各ステップに対応する状態から次のステップに対応する状態への遷移条件を真として、S0から順に状態が毎クロック遷移するように、状態遷移論理408〜411が生成される。その後、各状態に対応するときにアクティブとなり、他の状態に対応するときにはインアクティブとなる状態出力論理および状態出力ピン158〜162が生成される。
【0025】
(3)メモリリード要求信号論理の生成
上記スケジューリングの結果から分かるように、ステップ0に対応する状態S0、ステップ1に対応する状態S1、ステップ2に対応する状態S2では、メモリリードが要求される。このため、状態遷移機械156の状態出力ピン158、159および160からそれぞれ出力される出力S0、S1およびS2のいずれかがアクティブであるときに、出力ピン155からの出力がアクティブになるように論理163が生成される。
【0026】
(4)セレクタ選択論理の生成
上記スケジューリング、アロケーションおよびデータパス生成の結果から分かるように、ステップ0では入力ピン141から出力ピン143へのパス145および146が使用される。このため、状態遷移機械156の状態出力ピン158から出力される出力S0がアクティブであるときに、パス145を介して入力ピン141に接続されたセレクタ153の入力164が選択されるように論理165が生成される。
【0027】
同様にして、状態遷移機械156の状態出力ピン159および160から出力される出力S1およびS2がそれぞれアクティブであるときに、インクリメンタに接続された入力およびデクリメンタに接続された入力がそれぞれ選択されるように論理165が生成される。セレクタ152についても同様に、状態遷移機械156の状態出力ピン158、160および161から出力される出力S0、S2およびS3がそれぞれアクティブであるときに、パス145を介して入力ピン141に接続された入力、パス150を介して入力ピン142に接続された入力および加算器139に接続された入力がそれぞれ選択されるように論理が生成される。また、レジスタ140に接続されている論理(OR)については、出力S0〜S3がアクティブであるときにレジスタがアクティブになるように論理が生成されている。
【0028】
以上のようにして、動作記述からRTLの論理回路が生成される。
【0029】
【発明が解決しようとする課題】
以下に、並列に動作する複数のスレッドがメモリを共有している回路構成について考える。ここで、スレッドとは、独立した有限状態遷移機械を有する回路である。この回路構成において、上述した従来の高位合成方法により各スレッドを個別に生成すると、複数のスレッドから同時に共有メモリへのアクセスが行われたときに、アクセスの競合が起こり、正しいメモリアクセスを行うことができない場合がある。
【0030】
本発明は、このような従来技術の課題を解決するためになされたものであり、並列に動作する複数のスレッドから共有メモリに対して同時にアクセスが行われたときに、スレッド間でアクセスの競合が起こらないようにすることができる高位合成方法とそれを用いて生成された回路およびそのスレッドを備えた回路を提供することを目的とする。
【0031】
【課題を解決するための手段】
本発明の高位合成装置は、動作記述からレジスタトランスファレベルの論理回路を生成する高位合成装置であって、ハードウェアの構成に関する情報が含まれず、処理の動作のみが記述された動作記述を解析して、演算、外部入出力およびメモリアクセス実行順序の依存関係を表現するコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段と、該コントロールデータフローグラフ生成手段によって生成されたコントロールデータフローグラフの各節点を、スレッドを構成する有限状態遷移機械の状態に対応したステップに割り当てるスケジューリング手段と、該スケジューリング手段によってスケジューリングされたコントロールデータフローグラフの実行に必要な演算器、レジスタおよび入出力ピンを生成し、コントロールデータフローグラフの演算を該演算器に、ステップ境界を横切るデータ依存枝を該レジスタに、外部入出力およびメモリアクセスを該入出力ピンにそれぞれ割り当てるアロケーション手段と、コントロールデータフローグラフのデータ依存枝に対応したデータパスを生成し、必要に応じてセレクタを生成するデータパス生成手段と、前記アロケーション手段および前記データパス生成手段により生成されたレジスタおよびセレクタを制御する制御論理を生成する制御論理生成手段とを備え、前記スケジューリング手段により、並列に動作する他のスレッドとメモリを共有しているスレッドにおける前記有限状態遷移機械のメモリアクセス要求をコントロールデータフローグラフの節点で表現してスケジューリングを行い、前記制御論理生成手段により、前記メモリアクセス要求の節点が割り当てられたステップに対応する前記有限状態遷移機械の状態として、共有メモリインターフェイスに対してアクセス要求信号を出力し、該共有メモリインターフェイスからのアクセス要求受付信号がアクティブになるまで該アクセス要求信号を出力する状態に留まって次の状態に遷移しない状態遷移論理を有する有限状態遷移機械を生成してスレッドを合成することを特徴とし、そのことにより上記目的が達成される。
また、本発明は、前記高位合成装置により、動作記述からレジスタトランスファレベルの論理回路を生成する高位合成方法であって、前記コントロールデータフローグラフ生成手段によって、ハードウェアの構成に関する情報が含まれず、処理の動作のみが記述された動作記述を解析して、演算、外部入出力およびメモリアクセス実行順序の依存関係を表現するコントロールデータフローグラフを生成するコントロールデータフローグラフ生成工程と、前記スケジューリング手段によって、該コントロールデータフローグラフの各節点を、スレッドを構成する有限状態遷移機械の状態に対応したステップに割り当てるスケジューリング工程と、前記アロケーション手段によって、該スケジューリングされたコントロールデータフローグラフの実行に必要な演算器、レジスタおよび入出力ピンを生成し、コントロールデータフローグラフの演算を該演算器に、ステップ境界を横切るデータ依存枝を該レジスタに、外部入出力およびメモリアクセスを該入出力ピンにそれぞれ割り当てるアロケーション工程と、前記データパス生成手段によって、コントロールデータフローグラフのデータ依存枝に対応したデータパスを生成し、必要に応じてセレクタを生成するデータパス生成工程と、前記制御論理生成手段によって、前記アロケーション工程および前記データパス生成工程により生成されたレジスタおよびセレクタを制御する制御論理を生成する制御論理生成工程とを含み、前記スケジューリング工程において、並列に動作する他のスレッドとメモリを共有しているスレッドにおける前記有限状態遷移機械のメモリアクセス要求をコントロールデータフローグラフの節点で表現してスケジューリングを行い、前記制御論理生成工程において、前記メモリアクセス要求の節点が割り当てられたステップに対応する前記有限状態遷移機械の状態として、共有メモリインターフェイスに対してアクセス要求信号を出力共有メモリインターフェイスからのアクセス要求受付信号がアクティブになるまで該アクセス要求信号を出力する状態に留まって次の状態に遷移しない状態遷移論理を有する有限状態遷移機械を生成してスレッドを合成することを特徴とし、そのことにより上記目的が達成される。
【0032】
上記方法によれば、後述する実施形態1に示すように、並列に動作する複数のスレッドから共有メモリに対して同時にアクセスが行われたときに、スレッド間でアクセスの競合が起こらないように調整することができる。
【0033】
前記高位合成装置は、前記スレッド内に、前記共有メモリからリードされたデータが一時記憶されるリードデータ記憶回路と、前記共有メモリからリードされた前記データを前記アクセス要求受付信号がアクティブになってから該リードデータ記憶回路に書き込むためのタイミングを発生するリードタイミング発生回路と、前記共有メモリからのデータリードが実行されると、該リードデータ記憶回路の前記リードデータの読み出しポインタを更新するための信号を発生させるリード終了発生回路とを有するリードデータ記憶選択回路を生成するリードデータ記憶選択回路生成手段を有し、前記制御論理生成工程に次いで、前記リードデータ記憶選択回路生成手段によって前記リードデータ記憶選択回路を生成する工程を実行することを特徴としてもよい
【0034】
上記方法によれば、後述する実施形態2に示すように、正しいタイミングでメモリからリードされたデータが、一旦、リードデータ記憶回路に記憶されるため、スレッドは、必要なときにキューに記憶されたデータを読み出すことができる。
【0035】
前記リードデータ記憶回路は、キューを含んでいてもよい。また、前記リードタイミング発生回路は、シフトレジスタを含んでいてもよい。
【0036】
上記方法によれば、キューおよびシフトレジスタを用いることにより、回路の面積を小さくすることができる。
【0037】
前記リードデータ記憶選択回路を生成する工程において生成される前記リードデータ記憶選択回路は、前記スレッドを構成する前記有限状態遷移機械が連続して状態遷移したか否かを判定する連続遷移判定回路と、該連続遷移判定回路の判定結果に基づいて、前記共有メモリからリードされたデータを前記有限状態遷移機械を有するスレッドにて直接用いるか、または前記リードデータ記憶回路に記憶されたデータを該スレッドにて用いるかを選択するリードデータ選択回路とを有していてもよい
【0038】
上記方法によれば、後述する実施形態3に示すように、スレッドの有限状態遷移機械が連続して遷移したか否かが判定され、その結果によってメモリからリードされたデータまたはリードデータ記憶回路に記憶されたデータのどちらかが選択されるため、メモリ自体のレイテンシと等しいレイテンシでメモリアクセスを行うことができる。
【0039】
前記連続遷移判定回路は、シフトレジスタを含んでいてもよい。
【0040】
上記方法によれば、シフトレジスタを用いることにより、回路の面積を小さくすることができる。
【0042】
前記高位合成装置は、複数のスレッドからリード要求信号が入力されたときに、リード要求信号がアクティブであるスレッドのうち、最も優先度の高いスレッドからの要求を受け付けてそのスレッドに対する要求受付信号をアクティブにする共有メモリインターフェイスを生成する共有メモリインターフェイス生成手段と、該共有メモリインターフェイスを前記合成されたスレッドと接続する接続手段とを有し、前記共有メモリインターフェイス生成手段によって前記共有メモリインターフェイスを生成する工程と、次いで、前記接続手段によって、該共有メモリインターフェイスと前記スレッドとを接続する工程とをさらに含んでいてもよい
【0043】
【発明の実施の形態】
以下に、本発明の実施の形態について、図面に基づいて説明する。
【0044】
(実施形態1)
図8は、実施形態1の回路生成方法を説明するためのフローチャートである。本実施形態では、並列に動作し、共有メモリに対してアクセスを行う複数のスレッドと、メモリインターフェイスとが接続された回路において、複数のスレッド間でメモリアクセス競合を調整することができる回路が生成される。
【0045】
まず、メモリインターフェイスの生成504では、メモリインターフェイスが生成される。このメモリインターフェイスは、複数のスレッドからリード要求信号が入力されたときに、リード要求信号がアクティブ”1”(アクティブ)であるスレッドのうち、最も優先度の高いスレッドからの要求を受け付けて、直ちにそのスレッドに対する要求受付信号をアクティブ”1”にし、要求が受け付けられたことをスレッドに通知する。そして、n回目のクロックの立ち上がり後、リードデータピンにメモリからのデータを出力する。ここで、nはメモリのレイテンシである。
【0046】
次に、各スレッドの合成505では、高位合成方法によりRTLレベルの各スレッドが個別に生成される。図9は、本実施形態1において、各スレッドを生成する高位合成方法のフローチャートである。ここでは、動作記述からCDFGへの変換工程、スケジューリング工程、アロケーション工程、データパス生成工程および制御論理生成工程500がこの順に行われる。この図9において、動作記述からCDFGへの変換工程、スケジューリング工程、アロケーション工程およびデータパス生成工程は、図1〜図6を用いて説明した従来技術と同様であり、制御論理生成工程500が従来技術と異なっている。
【0047】
図10は、本実施形態1における、制御論理工程500のフローチャートである。ここでは、制御論理用入出力ピンの生成、有限状態遷移機械の生成501、メモリリード要求論理の生成およびセレクタ選択論理の生成がこの順に行われる。この図10において、制御論理用入出力ピンの生成、メモリリード要求論理の生成およびセレクタ選択論理の生成は、図7を用いて説明した従来技術と同様であり、有限状態遷移機械の生成501が従来技術と異なっている。
【0048】
図11は、本実施形態1における、有限状態遷移機械の生成501のフローチャートである。ここでは、スケジューリング結果の総ステップ数と同じ数の状態の生成、リード要求ノードの選択502、状態論理の生成503、状態出力論理および状態出力ピンの生成がこの順に行われる。この図11において、スケジューリング結果の総ステップ数の状態の生成と、状態出力論理および状態出力ピンの生成とは、図7を用いて説明した従来技術と同様であり、リード要求ノードの選択502および状態論理の生成503が従来技術と異なっている。
【0049】
リード要求ノードの選択502では、リード競合調停が行われるリード要求ノード(節点)が選択される。また、状態論理の生成503では、リード要求ノードがスケジューリングされたステップに対応する状態から、次のステップに対応する状態への遷移条件を、メモリリード要求受け付け信号=アクティブとして、それ以外の遷移条件を真(常に遷移)とした状態遷移論理を生成する。これによって、スレッドからリード要求信号がメモリインターフェイスに出力されると共に、メモリインターフェイスからスレッドに入力されるメモリリード要求受付信号がアクティブ”1”であれば次状態へ遷移し、インアクティブであれば状態遷移しない状態遷移論理が生成される。
【0050】
その後、各スレッドとメモリインターフェイスとの接続506では、生成された各スレッドとメモリインターフェイスとが接続される。
【0051】
以下に、このようにして生成された回路の動作について、図12を用いて説明する。ここでは、スレッド1およびスレッド2の2つのスレッドとメモリインターフェイスとが接続されており、レイテンシが2のパイプラインメモリにアクセスが行われるものとする。また、スレッド1および2は、状態S0でメモリリードを要求し、状態S2でメモリリードを行うものとする。
【0052】
図12(a)に示すサイクル0では、スレッド1および2の状態が共にS0であるため、スレッド1および2は同時にメモリリードを要求する。メモリインターフェイスは、スレッド1からの要求を優先し、スレッド1へのリード要求受付信号をアクティブにする。
【0053】
サイクル0において、メモリインターフェイスからスレッド1へのリード要求受付信号がアクティブになるので、図12(b)に示すサイクル1では、スレッド1は状態S1になる。一方、サイクル0において、メモリインターフェイスからスレッド2へのリード要求受付信号はインアクティブのままであるので、図12(b)に示すサイクル1では、スレッド2は状態S0のままである。
【0054】
サイクル1において、スレッド2は再びメモリリードを要求する。このときには、メモリインターフェイスは、スレッド2からの要求を受け付けて、スレッド2へのリード要求受付信号をアクティブにする。
【0055】
図12(c)のサイクル2では、スレッド1がメモリインターフェイスからデータをリードする。また、図12(d)のサイクル3では、スレッド2がメモリインターフェイスからデータをリードする。
【0056】
このように、本実施形態の回路生成方法によって生成された回路では、各スレッドが、メモリインターフェイスからの要求受付信号によって、次の状態に遷移するか、遷移しないかを決定することにより、複数のスレッド間でメモリアクセスが競合しないように調整することができる。
【0057】
図13に、本実施形態において生成される、スレッド、メモリインターフェイスを含む回路のトップ階層を示す。ここでは、スレッド201〜203の3つのスレッドとメモリインターフェイス211とが接続されている。スレッド201〜203からメモリインターフェイス211に対してリード要求信号204〜206とそのアドレスがそれぞれ入力される。インターフェイス211は、リード要求を行ったスレッドのうち、最も優先度の高いスレッドからの要求を受け付けて、直ちにそのスレッドに対するリード要求受付信号207〜209をアクティブ”1”にして、要求が受け付けられたことをスレッドに通知する。そして、2回目のクロックの立ち上がり後、リードデータピン210にメモリからのデータを出力する。
【0058】
図14に、レイテンシが2のパイプラインメモリを使用すると仮定して、本実施形態の高位合成方法によって、図1に示す動作記述から生成されるスレッドの回路例を示す。本実施形態において、図1に示す動作記述から変換されるCDFGは図2と同様であり、スケジューリング結果は図4と同様であり、アロケーション結果は図5と同様であり、データパス生成結果は図6と同様である。
【0059】
この図14の回路では、リード要求受付信号MEM_RACK 215がアクティブ”1”のとき(C0)に、このノード107がスケジューリングされたステップに対応する状態S0 403から、次のステップに対応する状態S1 404へ遷移し、リード要求受付信号MEM_RACK 215がインアクティブであれば状態S0 403に留まる状態遷移論理412が生成されている。そして、図2に示すリード要求ノード107に対してのみ、リード競合調停が行われる。それ以外の構成は、図7に示す従来のスレッドの回路構成と同様である。
【0060】
このように、本実施形態の回路生成方法によって生成された回路では、各スレッドが、メモリインターフェイスからの要求受付信号によって、次の状態に遷移するか、遷移しないかを決定することにより、並列に動作する複数のスレッドから共有メモリに対して同時にアクセスが行われたときに、スレッド間でアクセスの競合が起こらないように調整することができる。
【0061】
次に、本実施形態の回路生成方法を用いて生成される回路の問題点について説明する。ここでは、図2に示すリード要求ノード107〜109に対して、リード競合調停が行われる場合について考える。図15に、本実施形態の高位合成方法によって生成されるスレッドの回路例を示す。
【0062】
この図15の回路では、メモリへのリード要求が行われる各状態S0 403〜S2 405において、メモリインターフェイスからのリード要求受付信号215がアクティブ”1”のときに、その状態から次の状態へ遷移し、リード要求受付信号215がインアクティブ(C0バー))であればその状態に留まる制御論理が生成されている。
【0063】
図13に示すメモリインターフェイス211において、リード要求が受け付けられると、2回目のクロックの立ち上がり後にリードデータピン210にデータが出力されるが、その後は、他のリード要求に対応するデータが出力される可能性がある。
【0064】
一方、図15に示す状態遷移機械156は、状態S0、S1またはS2では、メモリインターフェイスからの要求受付信号215がアクティブにならない限りその状態に留まっているので、リード要求信号が出力されてから3クロック以上後にリードデータ入力ピン142からデータが入力される可能性がある。
【0065】
この場合の問題点について、図15に示すスレッドの回路と、図16に示すタイミング図とを用いて説明する。
【0066】
サイクル0では、スレッドの状態がS0であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にする。そして、サイクル0では、すぐにリード要求受付信号MEM_RACK 215がアクティブ”1”になるため、スレッドからのリード要求が受け付けられたと判断して、サイクル1でスレッドが状態S1になる。
【0067】
サイクル1でも、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にするが、リード要求受付信号MEM_RACK 215がインアクティブ”0”になるため、サイクル2でもスレッドが状態S1のままで次の状態S2に遷移しない。
【0068】
サイクル2では、リード要求受付信号MEM_RACK 215がアクティブ”1”になるため、サイクル3でスレッドが状態S2になる。この状態S2では、最初のリード要求に対応するメモリデータがスレッドにリードされるが、この時点218では既にサイクル3であり、最初のリード要求時点220から3サイクル経っているため、スレッドは正しいリードデータ219を読み込むことができない。従って、実施形態1で生成された回路では、メモリリードを正しいタイミングで行うことができないおそれがある。この問題点を解決することができる回路生成方法について、以下の実施形態2において説明する。
【0069】
(実施形態2)
図17は、実施形態2の回路生成方法を説明するためのフローチャートである。本実施形態では、並列に動作し、共有メモリに対してアクセスを行う複数のスレッドと、メモリインターフェイスとが接続された回路において、正しいタイミングでメモリからデータがリードされ、リードされたデータが、一旦、リードデータ記憶回路に記憶され、スレッドが必要とするときにキューに記憶されたデータが読み出されることにより、共有メモリに対してパイプラインアクセスを行うことができ、かつ、複数のスレッド間でメモリアクセス競合を調整することができる回路が生成される。
【0070】
ここでは、メモリインターフェイスの生成、各スレッドの合成507および各スレッドとメモリインターフェイスとの接続がこの順に行われる。この図17において、メモリインターフェイスの生成および各スレッドとメモリインターフェイスとの接続は、図8を用いて説明した実施形態1と同様であり、各スレッドの合成507が実施形態1と異なっている。
【0071】
各スレッドの合成507では、高位合成方法によりRTLレベルの各スレッドが個別に生成される。図18は、本実施形態2において、各スレッドを生成する高位合成方法のフローチャートである。ここでは、動作記述からCDFGへの変換工程514、スケジューリング工程、アロケーション工程、データパス生成工程、制御論理生成工程、リードデータ記憶選択回路の生成工程508およびデータパスへの挿入工程509がこの順に行われる。この図18において、スケジューリング工程、アロケーション工程、データパス生成工程および制御論理生成工程は、図9を用いて説明した実施形態1と同様であり、動作記述からCDFGへの変換工程514、リードデータ記憶選択回路の生成工程508およびデータパスへの挿入工程509が実施形態1と異なっている。
【0072】
本実施形態で生成される回路は、メモリインターフェイスを介してメモリからリードされたデータが、一旦、キューを含むリードデータ記憶回路に記憶され、その後、キューからそのデータが読み出されて利用される。このため、1クロック分のオーバーヘッドを見込んで、リードデータノードは、リード要求ノードよりも(n+1)ステップだけ遅いステップにスケジューリングされる。従って、動作記述からCDFGへの変換工程514においては、リード要求ノードと対応するリードデータノード間に、相対ステップ数(n+1)の制御依存枝が設けられる。それ以外は、実施形態1と同様である。ここで、nは使用されるパイプラインメモリのレイテンシである。
【0073】
リードデータ記憶選択回路の生成工程508では、メモリインターフェイスからリードされたデータが一時記憶されるリードデータ記憶選択回路が生成される。
【0074】
データパスへの挿入工程509では、生成されたリードデータ記憶選択回路が、データパスに挿入される。
【0075】
図19は、本実施形態2における、リードデータ記憶選択回路の生成工程のフローチャートである。ここでは、リードデータ記憶回路の生成510、リードタイミング発生回路の生成511、リード終了信号発生回路の生成512および各サブ回路の接続513がこの順に行われる。
【0076】
リードデータ記憶回路の生成510では、メモリインターフェイスからリードされたデータが一時記憶されるキューが生成される。
【0077】
リードタイミング発生回路の生成511では、メモリリード要求がメモリインターフェイスに受け付けられてからnクロック後に、メモリインターフェイスからのデータをキューに書き込むためのタイミングを発生する回路が生成される。このタイミング発生のためには、シフトレジスタが用いられる。ここで、nはパイプラインメモリのレイテンシである。
【0078】
リード終了信号発生回路の生成512では、メモリリードが実行されると出力をアクティブにする、リード終了信号発生回路が生成される。この信号は、キューから新しいデータを読み出すために、キューの読み出しポインタを更新するために用いられる。
【0079】
各サブ回路の接続513では、リードデータ記憶回路、リードタイミング発生回路およびリード終了信号発生回路が接続され、リードデータ記憶選択回路が生成される。
【0080】
図20に、レイテンシが1のパイプラインメモリを使用すると仮定して、本実施形態の高位合成方法によって生成されるスレッドの回路例を示す。この場合には、リードデータノードがリード要求ノードから2ステップだけ遅いステップにスケジューリングされるため、図1に示す動作記述から変換されるCDFGは図2と同様であり、スケジューリング結果は図4と同様であり、アロケーション結果は図5と同様であり、データパス生成結果は図6と同様である。
【0081】
この図20の回路では、図15に示す実施形態1の回路に加えて、リードタイミング発生回路311、リードデータ記憶回路304およびリード終了信号発生回路322を含むリードデータ記憶選択回路324が設けられている。
【0082】
リードタイミング発生回路311は、3つのAND回路とOR回路とシフトレジスタ312とを有している。各AND回路の入力には、有限状態遷移機械156から出力される状態S0およびリード要求受付信号MEM_RACK(C0)と、状態S1およびC0と、状態S2およびC0とがそれぞれ入力され、各AND回路の出力はそれぞれOR回路の入力と接続されている。また、OR回路の出力は、シフトレジスタ312の入力DIN 336と接続されている。シフトレジスタ312の入力CLKには、クロックが入力される。
【0083】
リード終了信号発生回路322は、AND回路とOR回路とを有している。AND回路の入力には、状態S2およびリード要求受付信号MEM_RACK(C0)が入力され、AND回路の出力と有限状態遷移機械156から出力される状態S3およびS4とがOR回路の入力と接続されている。
【0084】
リードデータ記憶回路304は、キュー339を有している。キュー339の入力WEN 340は、リードタイミング発生回路311を構成するシフトレジスタ312の出力DOUT0 338と接続されている。また、キュー339の入力DINは、リードデータMEM_RDATAが入力される入力ピン142と接続されている。また、キュー339の入力RF523は、リード終了信号発生回路322を構成するOR回路の出力と接続されている。キュー339の入力CLKには、クロックが入力される。キュー339の出力DOUT341は、リードデータ記憶選択回路324の出力rdm out 343と接続されており、データ記憶選択回路324の出力343は、加算器139の一方の入力およびセレクタ152の入力と接続されている。
【0085】
図21に、キュー339のアクセスタイミングを示す。DINにリードデータが与えられ、WENが”1”になると、次のCLKの立ち上がり時に、キュー339にデータが書き込まれる。図21の例では、data1、data2およびdata3の3つのデータが連続して書き込まれる。
【0086】
キュー339の出力DOUTには、キュー339の読み出しポインタが現在示している値が出力される。そして、RFが”1”になると、次のCLKの立ち上がり時にキュー339の読み出しポインタが移動して、DOUTに新しいデータが出力される。図21の例では、最初はDOUTからdata1が出力されているが、RFが1回目に”1”になってCLKが立ち上がるとdata2が出力され、RFが2回目に”1”になってCLKが立ち上がるとdata3が出力される。
【0087】
図22に、シフトレジスタ312のアクセスタイミングを示す。このシフトレジスタは、1ビットのシフトレジスタであり、CLKが立ち上がる度にDINの値がDOUTに代入される。
【0088】
この回路の動作タイミングについて、図20に示すスレッドの回路と、図23に示すタイミング図とを用いて説明する。
【0089】
サイクル0では、スレッドの状態がS0であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にする。そして、サイクル0では、すぐにリード要求が受け付けられてリード要求受付信号MEM_RACK 215がアクティブ”1”になる。よって、リードタイミング発生回路311に含まれるシフトレジスタ312の入力DIN 336が”1”になり、サイクル1でスレッドが状態S1になる。
【0090】
サイクル1では、スレッドの状態がS1であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にするが、リード要求は受け付けられず、リード要求受付信号MEM_RACK 215がインアクティブ”0”になる。よって、サイクル2でもスレッドが状態S1のままで次の状態S2に遷移しない。
【0091】
また、サイクル1において、リードタイミング発生回路311に含まれるシフトレジスタ312の出力DOUT0 338が”1”になる。この出力DOUT0 338は、リードデータ記憶回路304内のキュー339の入力WEN 340に接続されているため、サイクル1でメモリインターフェイスからリードされたデータdata1がキュー339に書き込まれる。
【0092】
サイクル2では、スレッドの状態がS1であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にする。そして、サイクル2では、すぐにリード要求が受け付けられてリード要求受付信号MEM_RACK 215がアクティブ”1”になる。よって、リードタイミング発生回路311に含まれるシフトレジスタ312の入力DIN 336が”1”になり、サイクル3でスレッドが状態S2になる。
【0093】
サイクル3では、スレッドの状態がS2であり、1回目のメモリリード要求に対するメモリリードが行われる。そして、リードデータ記憶選択回路324の出力rdm_out343がキュー339の出力に接続されているため、キュー339からの出力data1がリードデータとしてスレッドに利用される。
【0094】
また、サイクル3では、リード要求受付信号MEM_RACK 215がアクティブ”1”であるため、キュー339の入力RF 523が”1”になり、次のサイクル4でキュー339の出力DOUT 341はdata2になる。
【0095】
また、サイクル3では、スレッドの状態がS2であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にする。そして、サイクル3では、すぐにリード要求が受け付けられてリード要求受付信号MEM_RACK 215がアクティブ”1”になる。よって、リードタイミング発生回路311に含まれるシフトレジスタ312の入力DIN 336が”1”になり、サイクル4でスレッドが状態S3になる。
【0096】
また、サイクル3において、リードタイミング発生回路311に含まれるシフトレジスタ312の出力DOUT0 338がアクティブ”1”になる。この出力DOUT0 338は、リードデータ記憶回路304内のキュー339の入力WEN 340に接続されているため、サイクル3でメモリインターフェイスからリードされたデータdata2がキュー339に書き込まれる。
【0097】
サイクル4では、スレッドの状態がS3であり、2回目のメモリリード要求に対するメモリリードが行われる。そして、リードデータ記憶選択回路324の出力rdm_out343がキュー339の出力に接続されているため、キュー339からの出力data2がリードデータとしてスレッドに利用される。
【0098】
また、サイクル4において、リードタイミング発生回路311に含まれるシフトレジスタ312の出力DOUT0 338がアクティブ”1”になる。この出力DOUT0 338は、リードデータ記憶回路304内のキュー339の入力WEN 340に接続されているため、サイクル4でメモリインターフェイスからリードされたデータdata3がキュー339に書き込まれる。
【0099】
また、サイクル4では、スレッドの状態がS3であるため、キュー339の入力RF 523が”1”になり、次のサイクル5でキュー339の出力DOUT 341はdata3になる。
【0100】
サイクル5では、スレッドの状態がS4であり、3回目のメモリリード要求に対するメモリリードが行われる。そして、リードデータ記憶選択回路324の出力rdm_out343がキュー339の出力に接続されているため、キュー339からの出力data3がリードデータとしてスレッドに利用される。
【0101】
このように、本実施形態の回路生成方法によって生成された回路では、正しいタイミングでメモリからリードされたデータが、一旦、リードデータ記憶回路に記憶され、スレッドは、必要なときにキューに記憶されたデータを読み出すことができるので、共有メモリに対してパイプラインアクセスを行い、かつ、複数のスレッド間でメモリアクセスが競合しないように調整することができる。
【0102】
この実施形態2において、図1に示す動作記述から図4に示すスケジューリング結果を得るためには、レイテンシが1のパイプラインメモリを用いる必要がある。これは、スレッドによってメモリインターフェイスを介してメモリからリードしたデータが一旦キューに記憶され、キューの出力がリードデータとして利用され、1クロック分のオーバーヘッドが生じるためである。
【0103】
この実施形態2において、レイテンシが2のパイプラインメモリを用いるためには、動作記述からCDFGの変換において、リード要求ノードと対応するリードデータノードとの間に、相対スレッド数3の制御依存枝を設けて、スケジューリングする必要がある。この場合には、メモリアクセスのレイテンシが長くなるため、回路の動作速度がおそくなるおそれがある。この問題点を解決することができる回路生成方法について、以下の実施形態3において説明する。
【0104】
(実施形態3)
図24は、実施形態3の回路生成方法を説明するためのフローチャートである。本実施形態では、並列に動作し、共有メモリに対してアクセスを行う複数のスレッドと、メモリインターフェイスとが接続された回路において、スレッドの有限状態遷移機械が連続して遷移したか否かが判定され、その結果によってメモリからリードされたデータまたはリードデータ記憶回路に記憶されたデータのどちらかが選択されることにより、メモリ自体のレイテンシと等しいレイテンシでメモリアクセスを行うことができる回路が生成される。
【0105】
ここでは、メモリインターフェイスの生成、各スレッドの合成600および各スレッドとメモリインターフェイスとの接続がこの順に行われる。この図24において、メモリインターフェイスの生成および各スレッドとメモリインターフェイスとの接続は、図17を用いて説明した実施形態2と同様であり、各スレッドの合成600が実施形態2と異なっている。
【0106】
各スレッドの合成600では、高位合成方法によりRTLレベルの各スレッドを個別に生成する。図25は、本実施形態3において、各スレッドを生成する高位合成方法のフローチャートである。ここでは、動作記述からCDFGへの変換工程601、スケジューリング工程、アロケーション工程、データパス生成工程、制御論理生成工程、リードデータ記憶選択回路の生成工程602およびデータパスへの挿入工程がこの順に行われる。この図25において、スケジューリング工程、アロケーション工程、データパス生成工程、制御論理生成工程およびデータパスへの挿入工程は、図18を用いて説明した実施形態2と同様であり、動作記述からCDFGへの変換工程601およびリードデータ記憶選択回路の生成工程602が実施形態2と異なっている。
【0107】
本実施形態で生成される回路は、連続遷移判定回路によってスレッドを構成する有限状態遷移機械が連続して状態遷移したか否かが判定され、この判定結果に応じて、リードデータ選択回路によって共有メモリからリードされたデータを直接用いるか、またはリードデータ記憶回路に記憶されたデータを用いるかが選択される。よって、動作記述からCDFGへの変換工程601においては、リード要求ノードと対応するリードデータノードとの間に、相対ステップ数nの制御依存枝が設けられる。それ以外は、実施形態2と同様である。ここで、nは使用されるパイプラインメモリのレイテンシである。
【0108】
リードデータ記憶選択回路の生成工程602では、メモリインターフェイスからリードされたデータが一時記憶されるリードデータ記憶選択回路が生成される。
【0109】
図26は、本実施形態3における、リードデータ記憶選択回路の生成工程のフローチャートである。ここでは、リードデータ記憶回路の生成、リードタイミング発生回路の生成、連続遷移判定回路の生成603、リードデータ選択回路の生成604、リード終了信号発生回路の生成および各サブ回路の接続がこの順に行われる。この図26において、リードデータ記憶回路の生成、リードタイミング発生回路の生成、、リード終了信号発生回路の生成および各サブ回路の接続は、図19を用いて説明した実施形態2と同様であり、連続遷移判定回路の生成603およびリードデータ選択回路の生成604が実施形態2と異なっている。
【0110】
メモリインターフェイスにリード要求が受け付けられてから、そのリード要求に対するリードが行われるまで、スレッドに含まれる有限状態遷移機械が止まることなく連続して遷移した場合に、スレッドによってメモリインターフェイスから直接データがリードされて利用される。一方、スレッドに含まれる有限状態遷移機械が連続して遷移しなかった場合には、スレッドによってキューに記憶されたデータがリードされて利用される。このため、連続遷移判定回路の生成603では、有限状態遷移機械が連続して状態遷移したか否かを判定して判定信号を生成する、連続遷移判定回路が生成される。この判定のためには、シフトレジスタが用いられる。
【0111】
リードデータ選択回路604の生成では、連続遷移判定回路から出力される判定信号によって、メモリインターフェイスを介してメモリからリードされたデータ、またはキューからリードされたデータのいずれかを選択するリードデータ選択回路が生成される。
【0112】
図27に、レイテンシが2のパイプラインメモリを使用すると仮定して、本実施形態の高位合成方法によって生成されるスレッドの回路例を示す。本実施形態において、図1に示す動作記述から生成されるCDFGは図2と同様であり、スケジューリング結果は図4と同様であり、アロケーション結果は図5と同様であり、データパス生成結果は図6と同様である。
【0113】
この図27の回路では、図20に示す実施形態2の回路に加えて、リードデータ選択記憶回路324内に、連続遷移判定回路318およびリードデータ選択回路320が設けられている。
【0114】
連続遷移判定回路318は、4つのAND回路と2つのOR回路とシフトレジスタ328とを有している。3つAND回路の入力には、有限状態遷移機械156から出力される状態S0およびリード要求受付信号MEM_RACK(C0)と、状態S1およびC0と、状態S2およびC0とがそれぞれ入力され、各AND回路の出力はそれぞれ一方のOR回路の入力と接続されている。このOR回路の出力は、他方のOR回路の入力と接続されている。また、他方のOR回路の出力は2つの分岐され、それぞれシフトレジスタ328の入力DIN 337と、もう1つのAND回路の入力とに接続されている。シフトレジスタ328の入力CLKには、クロックが入される。シフトレジスタ328の出力DOUT0およびDOUT1は、それぞれもう1つのAND回路の入力に接続されている。なお、リードデータタイミング発生回路311のシフトレジスタの出力についても、シフトレジスタ328と動作タイミングを合わせるためにDOUT1、DOUT0の2つが設けられているが、このDOUT1はシフトレジスタの外部とは接続されていない。
【0115】
リードデータ選択回路320は、NOT回路とセレクタとを有している。連続遷移判定回路318を構成するAND回路の出力ctj_out342は2つに分岐され、それぞれNOT回路の入力とセレクタの入力とに接続されている。セレクタの入力は、さらに、NOT回路の出力と、リードデータMEM_RDATAが入力される入力ピン142と、キュー339を構成するリードデータ記憶回路304の出力DOUTとに接続されている。セレクタの出力は、リードデータ記憶選択回路324の出力rdm out 343と接続されており、データ記憶選択回路324の出力343は、加算器139の一方の入力およびセレクタ152の入力と接続されている。
【0116】
図28に、シフトレジスタ312および328のアクセスタイミングを示す。このシフトレジスタは、2ビットのシフトレジスタであり、CLKが立ち上がる度にDOUT1の値がDOUT0に代入され、DINの値がDOUT1に代入される。
【0117】
この回路の動作タイミングについて、図27に示すスレッドの回路と、図29に示すタイミング図とを用いて説明する。
【0118】
サイクル0では、スレッドの状態がS0であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にする。そして、サイクル0では、すぐにリード要求が受け付けられてリード要求受付信号MEM_RACK 215がアクティブ”1”になる。よって、リードタイミング発生回路311に含まれるシフトレジスタ312の入力DIN 336および連続遷移判定回路318に含まれるシフトレジスタ328の入力DIN 337が”1”になり、サイクル1でスレッドが状態S1になる。
【0119】
サイクル1では、スレッドの状態がS1であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にするが、リード要求は受け付けられず、リード要求受付信号MEM_RACK 215がインアクティブ”0”になる。よって、サイクル2でもスレッドが状態S1のままで次の状態S2に遷移しない。
【0120】
また、サイクル1では、スレッドの状態がS1であり、リード要求受付信号MRM_RACK 215がインアクティブ”0”であるため、連続遷移判定回路318に含まれるシフトレジスタ328の入力DIN 337は”0”になる
サイクル2では、スレッドの状態がS1であり、スレッドはメモリへのリード要求信号MEM_RREQ 155をアクティブ”1”にする。そして、サイクル2では、すぐにリード要求が受け付けられてリード要求受付信号MEM_RACK 215がアクティブ”1”になる。よって、リードタイミング発生回路311に含まれるシフトレジスタ312の入力DIN 336が”1”になり、サイクル3でスレッドが状態S2になる。
【0121】
また、サイクル2において、リードタイミング発生回路311に含まれるシフトレジスタ312の出力DOUT0 338が”1”になる。この出力DOUT0 338は、リードデータ記憶回路304内のキュー339の入力WEN 340に接続されているため、サイクル2でメモリインターフェイスからリードされたデータdata1がキュー339に書き込まれ、サイクル3でキュー339の出力341にリードされた値data1が出力される。
【0122】
また、サイクル2では、スレッドの状態がS1であり、リード要求受付信号MEM_RACK 215がアクティブ”1”であるため、連続遷移判定回路318に含まれるシフトレジスタ328の入力DIN 337は”1”になる。
【0123】
サイクル3では、スレッドの状態がS2であり、リード要求受付信号MEM_RACK 215がアクティブ”1”であるため、連続遷移判定回路318に含まれるシフトレジスタ328の入力DIN 337は”1”になる。
【0124】
よって、サイクル3では、連続状態遷移判定回路318の出力ctj_out342が”0”になり、リードデータ選択回路320では、キュー339からの出力341が選択されるため、リードデータ記憶選択回路324の出力rdm_out 343には、キュー339からの出力data1が出力される。
【0125】
また、サイクル3では、スレッドの状態がS2であり、リード要求受付信号MEM_RACK 215がアクティブ”1”であるので、連続遷移判定回路318に含まれるシフトレジスタ328の入力DIN 337は”1”になる。
【0126】
また、サイクル3では、リード要求が受け付けられ、リード要求受付信号MEM_RACK 215がアクティブ”1”になる。よって、リードタイミング発生回路311に含まれるシフトレジスタ312の入力DIN336が”1”になり、サイクル4でスレッドが状態S3になる。
【0127】
サイクル4では、スレッドの状態がS3であるので、連続遷移判定回路318に含まれるシフトレジスタ328の入力DIN 337は”1”になる。
【0128】
よって、サイクル4では、連続状態遷移判定回路318の出力ctj_out342が”1”になり、リードデータ選択回路320では、メモリインターフェイスからのデータMEM_RDATAが選択されるため、リードデータ記憶選択回路324の出力rdm_out 343には、メモリインターフェイスからのデータdata2が出力される。
【0129】
同様に、サイクル5でも、連続状態遷移判定回路318の出力ctj_out342が”1”になり、リードデータ選択回路320では、メモリインターフェイスからのデータMEM_RDATAが選択されるため、リードデータ記憶選択回路324の出力rdm_out 343には、メモリインターフェイスからのデータdata3が出力される。
【0130】
このように、本実施形態の回路生成方法によって生成された回路では、スレッドの有限状態遷移機械が連続して遷移したか否かが判定され、その結果によってメモリからリードされたデータまたはリードデータ記憶回路に記憶されたデータのどちらかが選択されるため、メモリ自体のレイテンシと等しいレイテンシでメモリアクセスを行うことができる。
【0131】
【発明の効果】
以上詳述したように、請求項1および請求項2に記載の本発明によれば、共有メモリにアクセスする複数のスレッドを含み、各スレッドから共有メモリへのアクセス競合が生じないように調整することができる回路を生成することができる。
【0132】
また、請求項3に記載の本発明によれば、共有メモリにアクセスする複数のスレッドを含み、各スレッドから共有メモリに対してパイプラインアクセスを行うことができ、かつ、各スレッドから共有メモリへのアクセス競合が生じないように調整することができる回路を生成することができる。
【0133】
請求項4および請求項8に記載の本発明によれば、共有メモリにアクセスする複数のスレッドを含み、各スレッドから共有メモリに対してパイプラインアクセスを行うことができると共に、メモリのレイテンシと等しいレイテンシでメモリアクセスを行うことができ、かつ、各スレッドから共有メモリへのアクセス競合が生じないように調整することができる回路を生成することができる。
【0134】
請求項4、請求項5および請求項8に記載の本発明によれば、共有メモリにアクセスする複数のスレッドを含み、各スレッドから共有メモリに対してパイプラインアクセスを行うことができ、かつ、各スレッドから共有メモリへのアクセス競合が生じないように調整することができ、面積が小さい回路を生成することができる。
【0135】
請求項6および請求項8に記載の本発明によれば、共有メモリにアクセスする複数のスレッドを含み、各スレッドから共有メモリに対してパイプラインアクセスを行うことができると共に、メモリのレイテンシと等しいレイテンシでメモリアクセスを行うことができ、かつ、各スレッドから共有メモリへのアクセス競合が生じないように調整することができ、面積が小さい回路を生成することができる。
【図面の簡単な説明】
【図1】高位合成における動作記述の例を示す図である。
【図2】高位合成におけるCDFGの例を示す図である。
【図3】パイプラインメモリにおけるリードタイミングを示すタイミング図である。
【図4】高位合成におけるスケジューリングの例を示す図である。
【図5】高位合成におけるアロケーションの例を示す図である。
【図6】高位合成におけるデータパス生成の例を示す図である。
【図7】高位合成における制御論理生成の例を示す図である。
【図8】実施形態1の回路生成方法を説明するためのフローチャートである。
【図9】実施形態1の回路生成方法を説明するためのフローチャートである。
【図10】実施形態1の回路生成方法を説明するためのフローチャートである。
【図11】実施形態1の回路生成方法を説明するためのフローチャートである。
【図12】(a)〜(d)は、実施形態1で生成された回路の動作を説明するための図である。
【図13】実施形態1で生成された回路のトップ階層を示す図である。
【図14】実施形態1で生成された回路における、スレッドの構成を示す図である。
【図15】実施形態1の回路生成方法の問題点を説明するためのスレッドの構成を示す図である。
【図16】図15に示すスレッドの動作タイミングを示すタイミング図である。
【図17】実施形態2の回路生成方法を説明するためのフローチャートである。
【図18】実施形態2の回路生成方法を説明するためのフローチャートである。
【図19】実施形態2の回路生成方法を説明するためのフローチャートである。
【図20】実施形態2で生成された回路における、スレッドの構成を示す図である。
【図21】実施形態2で生成された回路における、キューの動作タイミングを示すタイミング図である。
【図22】実施形態2で生成された回路における、シフトレジスタの動作タイミングを示すタイミング図である。
【図23】図20に示すスレッドの動作タイミングを示すタイミング図である。
【図24】実施形態3の回路生成方法を説明するためのフローチャートである。
【図25】実施形態3の回路生成方法を説明するためのフローチャートである。
【図26】実施形態3の回路生成方法を説明するためのフローチャートである。
【図27】実施形態3で生成された回路における、スレッドの構成を示す図である。
【図28】実施形態3で生成された回路における、シフトレジスタの動作タイミングを示すタイミング図である。
【図29】図27に示すスレッドの動作タイミングを示すタイミング図である。
【符号の説明】
105 回路への外部入力
106 回路からの外部出力
107〜109 メモリへのリード要求
110〜112 メモリからのリードデータ
113、114、117〜119 制御依存枝
120〜122 相対ステップ数
123〜132 データ依存枝
133 インクリメント
134 デクリメント
135、136 加算
137 インクリメンタ
138 デクリメンタ
139 加算器
140、152、153 セレクタ
141 外部入力が入力される入力ピン
142 リードデータが入力される入力ピン
143 リード要求が出力される出力ピン
144 外部出力が出力される出力ピン
145〜151 データパス
154 クロックが入力される入力ピン
155 メモリリード要求が出力される出力ピン
156 有限状態遷移機械
158〜162 状態出力ピン
163 メモリリード要求信号論理
164 セレクタの入力
165 セレクタ選択論理
201〜203 スレッド
211 メモリインターフェイス
204〜206 リード要求信号
207〜209 リード要求受付信号
210 リードデータピン
215 リード要求受付信号
304 リードデータ記憶回路
311 リードタイミング発生回路
312、328 シフトレジスタ
318 連続遷移判定回路
320 リードデータ選択回路
322 リード終了信号発生回路
336、337 シフトレジスタの入力DIN
338 シフトレジスタの出力DOUT
339 キュー
340 キューの入力WEN
341 キューの出力DOUT
342 連続遷移判定回路の出力ctj_out
343 データ記憶船体選択回路の出力rdm_out
403〜407 状態
408〜411、412 状態遷移論理
523 キューの入力RF

Claims (8)

  1. 動作記述からレジスタトランスファレベルの論理回路を生成する高位合成装置であって、
    ハードウェアの構成に関する情報が含まれず、処理の動作のみが記述された動作記述を解析して、演算、外部入出力およびメモリアクセス実行順序の依存関係を表現するコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段と、
    該コントロールデータフローグラフ生成手段によって生成されたコントロールデータフローグラフの各節点を、スレッドを構成する有限状態遷移機械の状態に対応したステップに割り当てるスケジューリング手段と、
    該スケジューリング手段によってスケジューリングされたコントロールデータフローグラフの実行に必要な演算器、レジスタおよび入出力ピンを生成し、コントロールデータフローグラフの演算を該演算器に、ステップ境界を横切るデータ依存枝を該レジスタに、外部入出力およびメモリアクセスを該入出力ピンにそれぞれ割り当てるアロケーション手段と、
    コントロールデータフローグラフのデータ依存枝に対応したデータパスを生成し、必要に応じてセレクタを生成するデータパス生成手段と、
    前記アロケーション手段および前記データパス生成手段により生成されたレジスタおよびセレクタを制御する制御論理を生成する制御論理生成手段とを備え
    前記スケジューリング手段により、並列に動作する他のスレッドとメモリを共有しているスレッドにおける前記有限状態遷移機械のメモリアクセス要求をコントロールデータフローグラフの節点で表現してスケジューリングを行い、前記制御論理生成手段により、前記メモリアクセス要求の節点が割り当てられたステップに対応する前記有限状態遷移機械の状態として、共有メモリインターフェイスに対してアクセス要求信号を出力共有メモリインターフェイスからのアクセス要求受付信号がアクティブになるまで該アクセス要求信号を出力する状態に留まって次の状態に遷移しない状態遷移論理を有する有限状態遷移機械を生成してスレッドを合成することを特徴とする高位合成装置
  2. 請求項1に記載の高位合成装置により、動作記述からレジスタトランスファレベルの論理回路を生成する高位合成方法であって、
    前記コントロールデータフローグラフ生成手段によって、ハードウェアの構成に関する情報が含まれず、処理の動作のみが記述された動作記述を解析して、演算、外部入出力およびメモリアクセス実行順序の依存関係を表現するコントロールデータフローグラフを生成するコントロールデータフローグラフ生成工程と、
    前記スケジューリング手段によって、該コントロールデータフローグラフの各節点を、スレッドを構成する有限状態遷移機械の状態に対応したステップに割り当てるスケジューリング工程と、
    前記アロケーション手段によって、該スケジューリングされたコントロールデータフローグラフの実行に必要な演算器、レジスタおよび入出力ピンを生成し、コントロールデータフローグラフの演算を該演算器に、ステップ境界を横切るデータ依存枝を該レジスタに、外部入出力およびメモリアクセスを該入出力ピンにそれぞれ割り当てるアロケーション工程と、
    前記データパス生成手段によって、コントロールデータフローグラフのデータ依存枝に対応したデータパスを生成し、必要に応じてセレクタを生成するデータパス生成工程と、
    前記制御論理生成手段によって、前記アロケーション工程および前記データパス生成工程により生成されたレジスタおよびセレクタを制御する制御論理を生成する制御論理生成工程とを含み、
    前記スケジューリング工程において、並列に動作する他のスレッドとメモリを共有しているスレッドにおける前記有限状態遷移機械のメモリアクセス要求をコントロールデータフローグラフの節点で表現してスケジューリングを行い、前記制御論理生成工程において、前記メモリアクセス要求の節点が割り当てられたステップに対応する前記有限状態遷移機械の状態として、共有メモリインターフェイスに対してアクセス要求信号を出力共有メモリインターフェイスからのアクセス要求受付信号がアクティブになるまで該アクセス要求信号を出力する状態に留まって次の状態に遷移しない状態遷移論理を有する有限状態遷移機械を生成してスレッドを合成することを特徴とする高位合成方法。
  3. 前記高位合成装置は、前記スレッド内に、前記共有メモリからリードされたデータが一時記憶されるリードデータ記憶回路と、前記共有メモリからリードされた前記データを前記アクセス要求受付信号がアクティブになってから該リードデータ記憶回路に書き込むためのタイミングを発生するリードタイミング発生回路と、前記共有メモリからのデータリードが実行されると、該リードデータ記憶回路の前記リードデータの読み出しポインタを更新するための信号を発生させるリード終了発生回路とを有するリードデータ記憶選択回路を生成するリードデータ記憶選択回路生成手段を有し、
    前記制御論理生成工程に次いで、前記リードデータ記憶選択回路生成手段によって前記リードデータ記憶選択回路を生成する工程を実行することを特徴とする請求項2に記載の高位合成方法。
  4. 前記リードデータ記憶選択回路を生成する工程において生成される前記リードデータ記憶選択回路は、前記スレッドを構成する前記有限状態遷移機械が連続して状態遷移したか否かを判定する連続遷移判定回路と、該連続遷移判定回路の判定結果に基づいて、前記共有メモリからリードされたデータを前記有限状態遷移機械を有するスレッドにて直接用いるか、または前記リードデータ記憶回路に記憶されたデータを該スレッドにて用いるかを選択するリードデータ選択回路とを有する請求項3に記載の高位合成方法。
  5. 前記リードデータ記憶回路は、キューを含む請求項3に記載の高位合成方法。
  6. 前記リードタイミング発生回路は、シフトレジスタを含む請求項3に記載の高位合成方法。
  7. 前記連続遷移判定回路は、シフトレジスタを含む請求項4に記載の高位合成方法。
  8. 前記高位合成装置は、複数のスレッドからリード要求信号が入力されたときに、リード要求信号がアクティブであるスレッドのうち、最も優先度の高いスレッドからの要求を受け付けてそのスレッドに対する要求受付信号をアクティブにする共有メモリインターフェイスを生成する共有メモリインターフェイス生成手段と、該共有メモリインターフェイスを前記合成されたスレッドと接続する接続手段とを有し、
    前記共有メモリインターフェイス生成手段によって前記共有メモリインターフェイスを生成する工程と、次いで、前記接続手段によって、該共有メモリインターフェイスと前記スレッドとを接続する工程とをさらに含む、請求項2に記載の高位合成方法
JP2001215560A 2001-07-16 2001-07-16 高位合成装置および高位合成方法 Expired - Fee Related JP4007483B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001215560A JP4007483B2 (ja) 2001-07-16 2001-07-16 高位合成装置および高位合成方法
GB0215882A GB2380291B (en) 2001-07-16 2002-07-09 High level synthesis method, thread generated using the same, and method for generating circuit including such threads
US10/195,740 US6704914B2 (en) 2001-07-16 2002-07-16 High level synthesis method, thread generated using the same, and method for generating circuit including such threads

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001215560A JP4007483B2 (ja) 2001-07-16 2001-07-16 高位合成装置および高位合成方法

Publications (2)

Publication Number Publication Date
JP2003030261A JP2003030261A (ja) 2003-01-31
JP4007483B2 true JP4007483B2 (ja) 2007-11-14

Family

ID=19050178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001215560A Expired - Fee Related JP4007483B2 (ja) 2001-07-16 2001-07-16 高位合成装置および高位合成方法

Country Status (3)

Country Link
US (1) US6704914B2 (ja)
JP (1) JP4007483B2 (ja)
GB (1) GB2380291B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7905790B2 (en) 2008-09-05 2011-03-15 Disney Enterprises, Inc. Theme park ride with ride-through screen system
US8020346B2 (en) 2007-08-16 2011-09-20 Joseph Singiser Magnetically supported sliding track system

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302670B2 (en) * 2000-12-21 2007-11-27 Bryan Darrell Bowyer Interactive interface resource allocation in a behavioral synthesis tool
AU2003224667A1 (en) * 2002-03-08 2003-09-22 Mentor Graphics Corporation Array transformation in a behavioral synthesis tool
US7155708B2 (en) * 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
JP2005173648A (ja) 2003-12-05 2005-06-30 Matsushita Electric Ind Co Ltd 高位合成方法及び高位合成装置
US7552042B1 (en) 2004-01-30 2009-06-23 Xilinx, Inc. Method for message processing on a programmable logic device
US7770179B1 (en) * 2004-01-30 2010-08-03 Xilinx, Inc. Method and apparatus for multithreading on a programmable logic device
US7823162B1 (en) * 2004-01-30 2010-10-26 Xilinx, Inc. Thread circuits and a broadcast channel in programmable logic
DE102004033339A1 (de) * 2004-07-09 2006-02-02 Infineon Technologies Ag Verfahren und Vorrichtung zum Auffinden von Schaltungsabweichungen
US7509599B1 (en) * 2004-12-10 2009-03-24 Synopsys, Inc Method and apparatus for performing formal verification using data-flow graphs
JP2007034887A (ja) * 2005-07-29 2007-02-08 Matsushita Electric Ind Co Ltd ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置
US7761586B2 (en) * 2006-02-06 2010-07-20 Microsoft Corporation Accessing and manipulating data in a data flow graph
US7735050B2 (en) 2006-02-09 2010-06-08 Henry Yu Managing and controlling the use of hardware resources on integrated circuits
JP2007272797A (ja) 2006-03-31 2007-10-18 Toshiba Corp パイプライン高位合成システム及び方法
US8392913B2 (en) * 2008-03-28 2013-03-05 International Business Machines Corporation Method and apparatus for threaded background function support
JP5267166B2 (ja) * 2009-01-30 2013-08-21 ソニー株式会社 インターフェース装置、演算処理装置、インターフェース生成装置、および回路生成装置
KR101068669B1 (ko) 2009-10-26 2011-09-28 한국과학기술원 OpenMP프로그램의 접근을 확장형 3차원 원추 상에 시각화하기 위한 방법, 장치, 및 방법을 저장하는 저장 매체
US20130046912A1 (en) * 2011-08-18 2013-02-21 Maxeler Technologies, Ltd. Methods of monitoring operation of programmable logic
JP5979966B2 (ja) * 2012-05-10 2016-08-31 三菱電機株式会社 回路設計支援装置及び回路設計支援方法及びプログラム
WO2016162970A1 (ja) * 2015-04-08 2016-10-13 三菱電機株式会社 回路設計支援装置及び回路設計支援方法及び回路設計支援プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867399A (en) * 1990-04-06 1999-02-02 Lsi Logic Corporation System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description
JPH05101141A (ja) 1991-08-13 1993-04-23 Toshiba Corp 高位合成装置
US6195786B1 (en) * 1997-12-23 2001-02-27 Nec Usa, Inc. Constrained register sharing technique for low power VLSI design
JP3716967B2 (ja) * 1999-07-29 2005-11-16 シャープ株式会社 高位合成装置および高位合成方法並びにそれに用いられる記録媒体
US6385757B1 (en) * 1999-08-20 2002-05-07 Hewlett-Packard Company Auto design of VLIW processors

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020346B2 (en) 2007-08-16 2011-09-20 Joseph Singiser Magnetically supported sliding track system
US7905790B2 (en) 2008-09-05 2011-03-15 Disney Enterprises, Inc. Theme park ride with ride-through screen system

Also Published As

Publication number Publication date
US6704914B2 (en) 2004-03-09
GB0215882D0 (en) 2002-08-14
JP2003030261A (ja) 2003-01-31
GB2380291B (en) 2003-11-19
GB2380291A (en) 2003-04-02
US20030028854A1 (en) 2003-02-06

Similar Documents

Publication Publication Date Title
JP4007483B2 (ja) 高位合成装置および高位合成方法
JP4266619B2 (ja) 調停回路
JP6170093B2 (ja) 原子メモリ装置
US7814243B2 (en) Shared storage for multi-threaded ordered queues in an interconnect
JP5431003B2 (ja) リコンフィギュラブル回路及びリコンフィギュラブル回路システム
US7269754B2 (en) Method and apparatus for flexible and programmable clock crossing control with dynamic compensation
JP4272108B2 (ja) データ処理装置用バス相互接続ブロックの設計に関するフレキシビリティの改善
EP2442231A1 (en) Reordering arrangement
US11782760B2 (en) Time-multiplexed use of reconfigurable hardware
JP4076973B2 (ja) データ処理装置を使用する場合のフレキシビリティの改善
JP2005018626A (ja) 並列処理システムの生成方法
US20080040700A1 (en) Behavioral synthesizer, debugger, writing device and computer aided design system and method
US7725843B2 (en) Behavioral synthesis apparatus, behavioral synthesis method, method for manufacturing digital circuit, behavioral synthesis control program and computer-readable recording medium
CN110059035B (zh) 半导体装置和总线发生器
US9720879B2 (en) Reconfigurable circuit having rows of a matrix of registers connected to corresponding ports and a semiconductor integrated circuit
CN102405466B (zh) 存储控制装置及其控制方法
JPH07152721A (ja) マイクロコンピュータ
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
JPWO2004025478A1 (ja) メモリブロック間のレイテンシ差を活用するデータ処理装置および方法
JP2006215621A (ja) Dma制御装置
JP2019101969A (ja) 演算処理装置および演算処理装置の制御方法
JP5393289B2 (ja) メモリ制御回路、メモリシステム及び制御方法
JP3385167B2 (ja) 位相調整回路を含むシステムおよび位相調整方法
JP4549073B2 (ja) メモリ制御回路
US20090100220A1 (en) Memory system, control method thereof and computer system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070629

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070802

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070823

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110907

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120907

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130907

Year of fee payment: 6

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

LAPS Cancellation because of no payment of annual fees