マルチチャネル回路の自動合成の方法および装置
シングルチャネル回路から時間多重化マルチチャネル回路を自動的に生成する方法および装置である。本発明の少なくとも1つの実施形態は、シングルチャネル回路の設計からマルチチャネル回路の時間多重化設計を自動的に生成することによって時間多重化リソース共有のためのマルチチャネルハードウェアを自動的かつ効率的に合成する。シングルチャネル設計のチャネル固有の要素(例えば、レジスタやメモリ)は、複数のチャネルの信号処理をパイプライン化するための、N倍の容量を有する、対応する要素に置き換えられる。
【発明の詳細な説明】
【発明の分野】
【0001】
[0001]本発明はデジタル回路に関し、より詳細には、マルチチャネルハードウェアの自動合成に関する。
【関連技術の説明】
【0002】
[0002](例えば、超LSI(VLSI)技術の規模の)デジタル回路の設計では、設計者は、コンピュータ支援手法を用いることが多い。複雑なデジタル回路の設計およびシミュレーションを支援する目的でデジタル回路を記述するために、HDL(ハードウェア記述言語)などの標準言語が開発されてきた。いくつかのハードウェア記述言語(VHDLやVerilogなど)は、業界標準として進化している。VHDLおよびVerilogは、ゲートレベル、レジスタ転送レベル(RTL)、または抽象データ型を用いた動作レベルでのハードウェアモデルの記述を可能にする汎用ハードウェア記述言語である。デバイス技術が進歩し続けるとともに、HDLをより新しいデバイスや設計スタイルに使えるように適応させるべく、様々な製品設計ツールが開発されている。
【0003】
[0003]HDLコードによる集積回路の設計では、最初にコードが作成され、そのコードがHDLコンパイラによってコンパイルされる。HDLソースコードは、特定のレベルで回路要素を記述したものであり、コンパイラは、コンパイル結果としてRTLネットリストを生成する。RTLネットリストは、特定ベンダの集積回路(FPGA(フィールドプログラマブルゲートアレイ)やASIC(特定用途向け集積回路)など)のテクノロジ/アーキテクチャに依存しないという意味で、一般にテクノロジ非依存のネットリストである。RTLネットリストは、(動作表現と異なり)回路要素の回路図表現に対応する。この、テクノロジ非依存のRTLネットリストをテクノロジ固有のネットリストに変換するために、あるマッピング操作が行われる。この操作により、そのベンダのテクノロジ/アーキテクチャで回路を作成することが可能である。FPGAベンダらがそれぞれの集積回路内に論理回路を実装するために様々なテクノロジ/アーキテクチャを利用していることはよく知られている。したがって、テクノロジ非依存のRTLネットリストにマッピングが施されて作成されるネットリストは、個々のベンダのテクノロジ/アーキテクチャに固有のものである。
【0004】
[0004]回路の設計では、特定の設計目標を最適化するために、よく変形を行う。例えば、ある回路で使用される面積を減らすために変形が行われる場合がある。集積回路で使用されるシリコン面積を減らすための体系化されたアプローチの1つが、折り畳み変形(Folding Transformation)である。単一の機能単位に対して複数のアルゴリズム操作を実行することにより、実装時の機能単位数を減らすことが可能である。折り畳み変形の詳細については、「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley−Interscience、1999年)に説明がある。
【0005】
[0005]デジタル回路の配線では、時間多重化リソース共有が行われてきた。例えば、「Parallel Operations in the Control Data 6600」(AFIPS Proceedings FJCC、Part 2、Vol.26、1964年、33〜40頁)でJ. E. Thorntonによって説明されている、CDC 6600コンピュータのPeripheral and Control Processors(PACPs)では、ラウンドロビン様式で共通リソースにアクセスすることによって実行ハードウェアを共有する。また、マルチチャネルフィルタ用リソース共有に関する別の例を、「FPGA Implementation of a Serial Organized DA Multichannel FIR Filter」(Jhon J.Leon Franco、Miguel A.Melgarejo、Tenth ACM International Symposium on Field Programmable Gate Arrays、Monterey、California、2002年2月24〜26日)に見ることができる。
【0006】
[0006]従来の折り畳みアルゴリズムは、所与の設計から、時間多重化リソース共有を伴う設計を自動的に生成することが可能である。従来の折り畳みアルゴリズムは、単一機能単位への時間多重化が可能な複数のアルゴリズム操作を識別して、機能単位(例えば、加算器、マルチプレクサ)の数を減らすことが可能である。ただし、デジタル信号処理(DSP)設計の場合、従来の折り畳みアルゴリズムは、並列処理および依存性の抽出と、計算スケジュールの最適化とに多大な時間がかかる。ハードウェア合成の複雑さは、計算に関与する論理単位の数に対して比例を超える変化で大きくなる。したがって、設計規模が大きくなるほど、回路の最適化および変形が困難になる。
【発明の概要】
【0007】
[0007]本明細書では、シングルチャネル回路から時間多重化マルチチャネル回路を自動的に生成する方法および装置について記載する。
【0008】
[0008]本発明の少なくとも1つの実施形態は、シングルチャネル回路の設計からマルチチャネル回路の時間多重化設計を自動的に生成することによって時間多重化リソース共有のためのマルチチャネルハードウェアを自動的かつ効率的に合成する。シングルチャネル設計のチャネル固有の要素(例えば、レジスタやメモリ)は、複数のチャネルの信号処理をパイプライン化するための、N倍の容量を有する、対応する要素に置き換えられる。
【0009】
[0009]本発明の一態様では、デジタル回路を設計する方法は、シングルチャネル回路である第1の設計を受け取ることと、その、シングルチャネル回路である第1の設計を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成することとを含む。一例では、マルチチャネル回路の自動生成後に、(例えば、クロック周波数を高めるために)時間多重化マルチチャネル回路に対してリタイミングが実施される。一例では、(例えば、マルチチャネル回路の遅延を調整するために)時間多重化マルチチャネル回路のパイプラインレジスタの組が識別され、除去される。一例では、時間多重化マルチチャネル回路にパイプラインレジスタの組が挿入される。一例では、複数のチャネルによる第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)が生成され、複数のチャネル用の複数の入力を第1の設計の入力ラインに時間多重化するために多重化回路が生成され、第1の設計の出力ラインからの信号を複数のチャネル用の複数の出力に時間多重分離するための多重分離回路が生成される。一例では、第1の設計における要素(例えば、定数、ランダムアクセスメモリ(RAM)要素、読み出し専用メモリ(ROM)要素、レジスタ、フリップフロップ、または負遅延レジスタ)が、対応する複数の、またはより大きな要素に置き換えられ、その要素のそれぞれは、FSMの状態に応じて複数のチャネルのうちの1つのチャネルに対してアクセスされる。一例では、チャネル固有でない順次要素が識別された後、第1の設計における他の順次要素がチャネル固有と識別され、チャネル固有の要素だけが、対応する複数の要素に置き換えられる。チャネル固有でない順次要素には、(例えば、順次要素のフィードフォワード切断集合の数を調べることによって、チャネル固有でない順次要素として識別された)パイプラインレジスタの組が含まれる。一例では、チャネル固有の順次要素が、複数の移動順次要素のカスケード接続に置き換えられ、別の例では、チャネル固有の順次要素が、FSMの状態に応じてアドレス指定される、複数のメモリ要素(または、容量がより大きなメモリ要素)に置き換えられる。
【0010】
[0010]一例では、第1の設計における順次要素(例えば、フリップフロップ、レジスタ、メモリ要素、定数、および負遅延レジスタ)が、第2の設計を生成するために、対応する要素(例えば、レジスタのカスケード接続、デュアルポートRAM、またはRAMとシフトレジスタの組み合わせ)に置き換えられる。対応する要素は、複数のチャネルからの信号を処理するタイミングに応じて、第2の設計において順次アクセスされる。一例では、対応する要素が、移動要素のカスケード接続であり、別の例では、対応する要素が、順次アドレス指定される(例えば、N個のメモリ要素からなるメモリが、Mチャネル回路に対応するようにN×M個のメモリ要素を有するメモリに置き換えられる)。
【0011】
[0011]本発明の一態様では、デジタル回路を設計する方法が、シングルチャネル回路である第1の設計を受け取ることと、第1の設計のシングルチャネル回路の集合体と、そのシングルチャネル回路の集合体における並列処理を指示する情報とを生成することと、その情報を用いて、そのシングルチャネル回路の集合体に折り畳み変形を適用して、時間多重化マルチチャネル回路である第2の設計を生成することとを含む。例えば、この情報は、折り畳みの集合の情報を含み、この、折り畳みセットの情報は、折り畳みアルゴリズムを誘導して折り畳み変形を実施するために用いられる。シングルチャネル回路である第1の設計に負遅延レジスタを含めることが可能であり、変形後にリタイミング操作を実施することが可能である。
【0012】
[0012]本発明は、方法と方法を実施する装置とを含み、装置は、方法を実施するデータ処理システムと、データ処理システムで実行されたときに方法をデータ処理システムに実施させるコンピュータ可読媒体とを含む。
【0013】
[0013]本発明の他の特徴は、添付図面と、この後の詳細説明から明らかになるであろう。
【0014】
[0014]添付図面の図中では、本発明が限定ではなく例として示されており、添付図面において類似した参照符号は同様の要素を指す。
【詳細な説明】
【0015】
[0033]以下の説明および図面は、本発明の例示であって、本発明を限定するものと解釈されてはならない。本発明が完全に理解されるように、数多くの具体的な詳細について説明する。ただし、場合によっては、本発明の説明が不明瞭にならないように、よく知られている事柄や一般的な事柄については詳しく説明しない。本開示におけるある実施形態または一実施形態への参照は、必ずしも同じ実施形態への参照とは限らず、そのような参照は、少なくとも1つの実施形態への参照を意味する。
【0016】
[0034]本発明の少なくとも1つの実施形態は、シングルチャネル回路の設計からマルチチャネル回路の時間多重化設計を自動的に生成することによって時間多重化リソース共有のためのマルチチャネルハードウェアを自動的かつ効率的に合成しようとするものである。
【0017】
[0035]ハードウェア合成の複雑さは、設計に関与する論理単位の数に対して比例を超える変化で大きくなる。マルチチャネル回路は、一般に、独立した同一のシングルチャネルを複数有する。Nチャネル回路は、一般に、ハードウェア合成時に回路を最適化する際に、対応するシングルチャネル回路のN倍を超える数の論理(計算)単位を必要とする。使用される機能単位の数を減らすために、従来の折り畳み変形をマルチチャネル回路に適用して時間多重化回路を生成する場合、従来の折り畳みアルゴリズムでは、並列処理および依存性の抽出と、計算スケジュールの最適化とに多大な時間がかかる。したがって、時間多重化リソース共有のためのハードウェア合成の最適化は、一般に計算量が非常に多い(特に設計規模が大きい場合)。
【0018】
[0036]本発明の一実施形態によれば、複数のチャネルの時間多重化リソース共有のための合成の最適化は、シングルチャネルの設計に基づく。並列処理および依存性を抽出する計算は不要であり、従来の折り畳み変形の大量の計算を行うことなく、シングルチャネルの設計から、時間多重化リソース共有を伴う設計を生成することが可能である。一例では、シングルチャネル設計のチャネル固有の要素(例えば、レジスタやメモリ)を、複数のチャネルの信号処理をパイプライン化するためにN倍を超える容量の、それらに対応する要素に置き換えることによって、シングルチャネル設計が時間多重化Nチャネル設計に変形される。後でさらに例を挙げて詳しく説明する。
【0019】
[0037]本発明の方法の多くは、従来の汎用コンピュータシステムなどのデジタル処理システムで実施可能である。1つの機能だけを実行するために設計またはプログラムされた特殊用途コンピュータも使用可能である。
【0020】
[0038]図1は、本発明に使用可能な、一般的なコンピュータシステムの一例である。図1は、コンピュータシステムの各種コンポーネントを示しているが、それらのコンポーネントの相互接続の特定のアーキテクチャまたは様式を表すことを意図したものではないことに注意されたい。そのような細部は、本発明と特に関係するものではないからである。また、これよりコンポーネントが少ないか、あるいは多いネットワークコンピュータや他のデータ処理システムも本発明に使用可能であることも理解されよう。図1のコンピュータシステムは、例えば、Sunワークステーション、またはWindowsオペレーティングシステムが動作するパーソナルコンピュータ(PC)、またはApple Macintoshコンピュータであってよい。
【0021】
[0039]図1に示すように、データ処理システムの形をとるコンピュータシステム101は、マイクロプロセッサ103、ROM 107、揮発性RAM 105、および不揮発性メモリ106に結合されたバス102を含む。マイクロプロセッサ103は、Motorola,Inc.製またはIBM製のG3またはG4マイクロプロセッサであってよく、図1の例に示すように、キャッシュメモリ104に結合される。バス102は、これらの様々なコンポーネントを相互接続し、さらに、コンポーネント103、107、105、および106を、ディスプレイコントローラおよびディスプレイ機器108、ならびにマウス、キーボード、モデム、ネットワークインターフェース、プリンタ、スキャナ、ビデオカメラ、および他の、当業者にはよく知られている機器などが挙げられる入出力(I/O)機器などの周辺機器と相互接続する。通常、入出力機器110は、入出力コントローラ109を介してシステムに結合される。揮発性RAM 105は、一般に、メモリ内のデータをリフレッシュまたは保持するために継続的な給電が必要なダイナミックRAM(DRAM)として実装される。不揮発性メモリ106は、一般に、システムへの給電がなくなってもデータを保持する磁気ハードドライブ、光磁気ドライブ、光ドライブ、DVD RAM、または他のタイプ、のメモリシステムである。一般には不揮発性メモリもランダムアクセスメモリであるが、ランダムアクセスメモリでなくてもかまわない。図1では、不揮発性メモリは、データ処理システムのそれ以外のコンポーネントと直接結合されているローカルデバイスであるが、本発明は、モデムやイーサネットインターフェースなどのネットワークインターフェースでデータ処理システムと結合されているネットワークストレージ機器のような、システムから離れている不揮発性メモリも利用可能であることが理解されよう。バス102は、当業者にはよく知られている様々なブリッジ、コントローラ、および/またはアダプタで相互接続された1つまたは複数のバスを含むことが可能である。一実施形態では、I/Oコントローラ109は、USB(ユニバーサルシリアルバス)周辺機器を制御するUSBアダプタ、および/またはIEEE−1394周辺機器を制御するIEEE−1394バスアダプタを含む。
【0022】
[0040]本発明の態様が少なくとも部分的にソフトウェアで実施可能であることは、以下の記述から明らかであろう。すなわち、本手法は、コンピュータシステムまたは他のデータ処理システムにおいて、そのプロセッサ(マイクロプロセッサなど)が、ROM 107、揮発性RAM 105、不揮発性メモリ106、キャッシュ104、またはリモートストレージ機器に格納されている命令のシーケンスを実行するのに応答する形で実施されることが可能である。様々な実施形態において、本発明を実装するために、ハードワイヤード回路をソフトウェア命令を組み合わせて用いることが可能である。したがって、本手法は、ハードウェア回路とソフトウェアの特定の組み合わせに限定されるものではなく、また、データ処理システムで実行される命令の特定のソースに限定されるものでもない。さらに、以下の記述では、説明を単純にするために、様々な機能や操作を、ソフトウェアコードによって実行または起動されるものとして説明する。しかしながら、当業者であれば、そのような表現が、プロセッサ(マイクロプロセッサ103など)によるコードの実行の結果として機能が実施されることを意味することを理解されよう。
【0023】
[0041]データ処理システムによって実行されたときに本発明の各種方法をシステムに実行させるソフトウェアおよびデータを格納するために、マシン可読媒体を用いることが可能である。この実行可能ソフトウェアおよびデータは、例えば、図1に示したROM 107、揮発性RAM 105、不揮発性メモリ106、および/またはキャッシュ104など、様々な場所に格納することが可能である。このソフトウェアおよび/またはデータの一部を、これらのストレージ機器の任意のいずれかに格納することが可能である。
【0024】
[0042]したがって、マシン可読媒体には、マシン(例えば、コンピュータ、ネットワーク機器、携帯情報端末、製造ツール、1つまたは複数のプロセッサの集合を有する任意の機器など)からのアクセスが可能な形で情報を提供する(すなわち、格納および/または送信する)任意のメカニズムが含まれる。例えば、マシン可読媒体として、記録可能または記録不可能媒体(例えば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイスなど)、ならびに電気、光、音、または他の形で伝搬する信号(例えば、搬送波、赤外線信号、デジタル信号など)などがある。
【0025】
[0043]図2は、本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能なシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。シングルチャネル回路200は、ライン201で入力を受け取り、ライン203で出力を生成する。このシングルチャネル設計は、定数211、213、および215と、乗算器221、223、および225と、加算器235および237と、レジスタ(フリップフロップ)231および233とを含む。乗算器221、223、および225がライン201の入力に定数211、213、および215を乗じ、それらの結果を加算器235および237が合計して、ライン203に出力を生成する。ライン205のクロック信号Csが、シングルチャネル回路内の処理のパイプライン化と同期とを制御する。
【0026】
[0044]図3は、図2の例の様々な場所での信号波形を示す図である。時刻t0(301)に、入力信号I1がライン201に到着する。時刻t1(303)に、レジスタ231が乗算器221の結果を出力してラインA 207に信号SA 313を生成する。時刻t2(305)に、レジスタ233が加算器235の結果を出力してラインB 209に信号SB 315を生成する。これは、信号SA 313と乗算器223の出力との和である。時刻t3に、加算器237が信号SB 315と乗算器225の出力とを合計して出力ライン203に信号O1 317を生成する。
【0027】
[0045]図4は、図2のシングルチャネルフィルタの集合体に対応する2チャネルフィルタの例を示す図である。例えば、回路401および403は、図2の回路200と同じ要素および構成を有する。ハードウェアシステムの自動合成についての従来のソリューションでは、マルチチャネルシステムを特別に扱うことはしない。従来の方法では、マルチチャネル設計を、シングルチャネルシステムの大きな集合体として扱う。一般に、従来の方法は、設計に内在する高レベル並列処理を何ら示すことなく、図4に示すような2チャネルフィルタを提示する。したがって、ハードウェア合成ソフトウェアプログラムは、大量の計算を要する、並列処理および依存性を抽出するタスクを実行する。時間多重化リソース共有を伴う設計を生成するためには、折り畳み変形を適用することが可能である。したがって、従来の方法は、大量の計算を必要とする。さらに、マルチチャネルシステムがシングルチャネルシステムの集合体として解釈される場合は、内在する高レベル並列処理が見逃される可能性があり、結果として、折り畳み変形が適用される際にさらに多くの計算リソースが費やされること、および/または所与の設計が十分に最適化されないことが起こる。
【0028】
[0046]本発明の一実施形態では、シングルチャネルシステムの集合体の中の並列処理に関連する情報は、そのシングルチャネル設計から自動的に生成されるが、この情報が生成されるのは、シングルチャネルシステムの集合体が時間多重化回路に自動的に変形される際に折り畳み変形が適用されるように汎用折り畳みアルゴリズムを誘導するためでもある。例えば、一般的な折り畳みアルゴリズム(例えば、「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley−Interscience、1999年、149〜187頁)で説明されている折り畳みアルゴリズムなど)では、折り畳みの集合を識別することは、時間のかかる操作である。折り畳みの集合は、時間多重化によって同一機能単位で実行されることになる操作の集合である。シングルチャネル設計からシングルチャネルシステムの集合体が自動的に生成される場合は、大量の計算を行うことなく、折り畳みの集合を生成することが可能である。そのように識別された折り畳みの集合は、一般的な折り畳みアルゴリズムを、シングルチャネルシステムの集合体を変形することに誘導するために用いられることが可能である(例えば、そのような情報を用いて操作を効率化するように従来の折り畳みアルゴリズムを修正することが可能である)。
【0029】
[0047]本発明の少なくとも1つの実施形態では、シングルチャネルシステムの大きな集合体に折り畳み変形を適用する代わりに、シングルチャネル設計に自動変形を適用して、時間多重化リソース共有を可能にする設計を生成することによって、マルチチャネル回路内の並列処理を漏れなく探り出す。
【0030】
[0048]本発明の一実施形態は、並列処理および依存性の抽出、計算スケジュールの最適化、その他に時間を費やすことを避けるために、最初からマルチチャネル動作を想定する。この実施形態は、システムのシングルチャネルバージョンを入力と見なし、シンプルなマッピングを適用して、マルチチャネルシステムに内在する高レベル並列処理を非常に効率的に利用する。結果として得られるマルチチャネル設計の、独立した各スレッド内のデータフローが同一であるので、結果として回路の制御は最小限である。
【0031】
[0049]図5は、本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成される2チャネルフィルタの例である。機能単位(例えば、乗算器や加算器)は、チャネル固有ではない。定数C1、C2、およびC3(211、213、および215)はチャネル固有ではないので、これらも修正なしで共有されることが可能である。レジスタは、このケースではチャネル固有である。したがって、シングルチャネル設計200のレジスタ231と233とは、2個のシフトレジスタのカスケード接続531、533と535、537とに置き換えられる。(例えば、図4のチャネル401および403の入力411および413に対応する)入力501および503が、信号SM(507)に応じて、マルチプレクサ541によって入力ライン505に時間多重化され、(例えば、図4のチャネル401および403の出力421および423に対応する)出力509が、デマルチプレクサ543によってライン513および515に多重分離される。マルチプレクサ541(またはデマルチプレクサ543)の生成は、複数のチャネルが複数のポートで信号を受信(または生成)するかどうかに応じて省略可能であることが理解されよう。
【0032】
[0050]図6は、図5の例の様々な場所での信号波形を示す図である。入力信号I1(615)およびI2(617)は、制御信号SM(613)の状態に応じて、信号SIとして時間多重化される。シングルチャネル回路の一般的なクロックサイクル(例えば、図3の時刻t0 310からt1 303。これは図6の時刻t0 601からt2 603に対応する)では、各入力信号が1つのタイムスロットに割り当てられる(例えば、信号I1 615がスロット621に、信号I2 617がスロット622に割り当てられる)。所与のスロットに割り当てられた入力信号は、論理単位によって処理され、さらなる処理のために、レジスタのカスケード接続によってパイプライン移送される。例えば、SIのスロット621に割り当てられた信号I1 615に定数211が乗ぜられて、時刻t1に、レジスタ531からのラインA1(521)に、SA1の中間結果631が生成される。中間結果631が、レジスタ533によって遅延され、時刻t2 603に、ラインA2(523)でSA2の出力信号641となり、その後に、信号I1 615が乗算器223の入力として、再度SIのスロット623に割り当てられる。時刻t3 604に、加算器235の結果がレジスタ535から出力されて、ラインB1(525)にSB1の信号651が生成され、これが同様にレジスタ537によって遅延されて、時刻t4 605に、ラインB2(527)にSB2の信号661が出力される。その後に、信号I1 615が乗算器225の入力として、再度SIのスロット625に割り当てられる。時刻t5 606に、ラインO(図5の509)でSOの信号671(入力信号I1 615に対する加算器237の結果)が、デマルチプレクサ513による出力のために待機している。同様に、信号672は、入力信号I2 617がスロット622、624、および626に割り当てられて計算された結果である。この後も、前の入力に基づく結果が中間的な次のクロックサイクルで利用可能になるように、前の入力からの中間結果がシステム内をパイプライン移送される(例えば、入力I1のサンプル623、625、および627に基づく結果がタイムスロット673で利用可能になる)。
【0033】
[0051]したがって、図5および6に示すように、シングルチャネル設計におけるレジスタがレジスタのカスケード接続に置き換えられた場合は、レジスタのカスケード接続の出力がマルチチャネル回路における信号処理のためのタイムスロット割り当てに同期するように、シングルチャネル設計のレジスタに格納された中間結果が、マルチチャネル設計におけるレジスタのカスケード接続をパイプライン移送される。本発明の一実施形態では、シングルチャネル設計におけるチャネル固有の各順次要素(例えば、レジスタ、フリップフロップ、メモリ要素)が、N倍を超える容量の、対応する要素(例えば、レジスタまたはフリップフロップのカスケード接続、タイムスロット割り当てに応じてアドレス指定されるデュアルポートRAM、RAMとシフトレジスタの組み合わせ、その他)に置き換えられる。
【0034】
[0052]図7は、本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。図2のシングルチャネル設計200を図7の時間多重化Nチャネル設計700に自動的に変換するために、図2のレジスタ231がN個のシフトレジスタのカスケード接続711〜719に置き換えられ、図2のレジスタ233がN個のシフトレジスタのカスケード接続721〜729に置き換えられる。入力信号に対するタイムスロット割り当てを制御する信号を生成するために、モジュロ−Nカウンタ705が用いられる。ライン707でのモジュロ−Nカウンタ705の出力がi(i=0,1,...,N−1)の場合、マルチプレクサ701は、ライン709への入力信号として信号Ii+1を選択する。同様に、図7の加算器237の出力信号がデマルチプレクサ703によってデコードされて、モジュロ−Nカウンタ705の出力に対応するチャネルの出力信号が生成される。
【0035】
[0053]図8は、本発明の一実施形態による、マルチチャネルフィルタの出力を多重分離する出力デコーダおよびラッチ回路の例を示す図である。テスタ811、813、・・・、819は、(例えば、図7のモジュロ−Nカウンタ705からの)選択信号841の状態に応じてラッチ801、803、・・・、809を制御する。ライン843の信号(例えば、図7の加算器237の出力)は、選択信号の状態がテスタ(811〜819)の定数(821〜829)のうちの1つと一致したときに、それと対応する、出力ライン831、833、・・・、839のうちの1つでラッチされる。
【0036】
[0054]図9は、本発明の代替実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの別の例である。図9では、各入力信号を処理するために、回路200がラウンドロビン様式でアクセスされる。モジュロ−3カウンタ907により、各チャネルが次のチャネルの信号の処理に使用されるまでに、各チャネルの入力信号を完全に処理して出力信号を生成することが可能である。モジュロ−Nカウンタ905は、回路200で処理されるチャネルの信号を選択する。図9の方法は、マルチチャネル設計の生成時のシングルチャネル回路の修正がより少なくなるが、図9の回路は図7の回路よりスループットが小さい。シングルチャネル設計での信号のパイプライン移送が、図9では、ラウンドロビン方式であるために、十分に利用されていない。入力信号および出力信号の構成によっては、図9のマルチチャネル設計を用いた場合に、各チャネルの信号の処理遅延を最小化できる可能性がある。しかしながら、一般には、異なるチャネルの入力信号はラウンドロビン様式では到着せず、むしろ、異なるチャネルの入力信号は同じタイミングで到着することが理解されよう。入力信号がラウンドロビン様式で到着するように入力信号をリタイミングするために、入力信号とマルチプレクサ901との間にバッファを用いることが可能である。そのようなバッファは、入力信号を同じタイミングでサンプルし、チャネルごとに異なる時間量だけ遅延させて、サンプルされた信号がラウンドロビン様式でマルチプレクサ901に到着するようにする。
【0037】
[0055]図7の時間多重化マルチチャネルは、クロック信号CN(741)の周波数がシングルチャネルシステムのクロック信号(例えば、図4のクロック信号CS)の周波数のN倍である場合は、(例えば、図4の)シングルチャネルシステムの集合体を直接置き換えることが可能であることに注意されたい。図9の設計を用いる場合は、入力をリタイミングするために追加回路(例えば、入力信号のタイミングと処理のためのタイムスロット割り当てとに応じてアドレス指定されるRAMのブロック)を用いることが可能である。
【0038】
[0056]本発明の一実施形態では、シングルチャネル設計の各チャネル固有要素(例えば、レジスタ、定数、ROM、またはRAM)が、マルチチャネル入力の処理をパイプライン化する、対応する要素に置き換えられる。各レジスタ(またはフリップフロップ)は、シフトレジスタのカスケード接続に置き換えられるチャネル固有レジスタと見なすことが可能であるが、パイプラインレジスタは、非チャネル固有レジスタとして識別されることが可能である。パイプラインレジスタがシフトレジスタのカスケード接続に置き換えられない場合でも、時間多重化共有チャネル内のタイミングは、チャネルの入力に対して同期することが可能である。
【0039】
[0057]パイプラインレジスタの組は、システムグラフのフィードフォワード切断集合である。システムのフィードフォワード切断集合がそうであるように、パイプラインレジスタの組を除去すると、システムが、切断された2つのサブシステムに分割され、その2つのサブシステムの間に単一方向のデータフローがある。ただし、システム内に複数の入力および/または複数の出力がある場合、入力または出力を異なるサブシステムに分割する切断集合は、パイプラインレジスタの組として適格ではない。これは、そのような切断集合がマルチチャネル設計の生成時にパイプライン化されないと、同期が乱れる可能性があるからである。
【0040】
[0058]フィードフォワード切断集合は、当業者に知られている様々なアルゴリズムによって自動的に識別されることが可能である。例えば、Fran HalperinとUri Zwickが「Combinatorial approximation algorithms for the maximum directed cut problem」(Proceedings of 12th Symposium on Discrete Algorithms、1〜7頁、2001年)で説明した方法を用いて、フィードフォワード切断集合を決定することが可能である。グラフ理論の文献では、フィードフォワード切断集合は、しばしば、「有向カット(directed cutsまたはdicuts)」と呼ばれていることに注意されたい。最大数のレジスタを含むフィードフォワード切断集合を見つける場合は、Eran HalperinとUri Zwickによる、「最大有向カット」を見つける方法を用いることが可能である。
【0041】
[0059]図10は、本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。図10の設計は、パイプラインレジスタ1001〜1005を含む。フィードフォワード切断集合1011は、図10のシステムを、その間に単一方向のデータフローがある2つのサブシステムに分割する。したがって、レジスタ1001〜1005は、非チャネル固有として識別され、したがって、図10の設計におけるチャネル固有要素は、レジスタ231および233である。図10のチャネル固有レジスタ231および233がレジスタのカスケード接続に置き換えられて、図11の時間多重化リソース共有設計が生成される。
【0042】
[0060]図11は、本発明の一実施形態による、図10のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。図11では、パイプラインレジスタ1011は不変である。デマルチプレクサ703の動作をモジュロ−Nカウンタ705の状態と同期させるために、レジスタ1201が挿入され、これによるカウンタ705の出力の1サイクルの遅延が、切断集合1011による遅延の影響を相殺する。一般に、M組のパイプラインレジスタが非チャネル固有要素と識別された場合は、マルチプレクサとデマルチプレクサ(例えば、図11の701と703)の動作を同期させるために、モジュロ−Nカウンタの集合がmod(M,N)サイクル遅延される。また、図10のレジスタ231、1003、および1005が1組のパイプラインレジスタとして識別される可能性がある点にも注意されたい。この場合は、レジスタ1001および233がシフトレジスタのカスケード接続に置き換えられる。あるいは、パイプラインレジスタとして識別されるレジスタが図10にない場合は、図10のすべてのレジスタがレジスタのカスケード接続に置き換えられる。この場合、結果として得られる設計はN組のパイプラインレジスタを有し、mod(N,N)=0なので、モジュロ−Nカウンタ705の出力を遅延させるレジスタは不要である。
【0043】
[0061]シングルチャネルシステムのチャネル固有レジスタは、マルチチャネルシステムの生成時にN個のシフトレジスタのカスケード接続に置き換えられることが可能である。いくつかのFPGAアーキテクチャ(Xilinx Virtexなど)では、シフトレジスタはナチュラルプリミティブである。これにより、ターゲットアーキテクチャがこれらのFPGAアーキテクチャのいずれかであれば、非常に効率的なメモリの使い方が可能になる。各チャネル固有レジスタは、モジュロ−Nカウンタの状態に応じて中間結果をパイプライン移送することが可能な他のメモリ構成(例えば、NアイテムのデュアルポートRAM、RAMとシフトレジスタの組み合わせ、その他)に置き換えられることも可能であることを理解されたい。
【0044】
[0062]図12は、本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル回路の別の例を示す図である。図12の設計は、レジスタ1201、1203、231とレジスタ1205、233とを含むフィードフォワード切断集合1211および1213を含む。したがって、図12のすべてのレジスタは非チャネル固有として識別されることが可能であり、図13の設計の生成時にレジスタのカスケード接続に置き換えられるレジスタはない。
【0045】
[0063]図13は、本発明の一実施形態による、図12のシングルチャネル設計から自動的に生成されるマルチチャネルフィルタの例である。マルチプレクサ1301とデマルチプレクサ1303との間に2組のパイプラインレジスタがあるので、2サイクルの遅延を用いて、マルチチャネルフィルタの動作を同期させることが可能である。図13の設計では、2組のパイプラインレジスタによる遅延を補償するために、デマルチプレクサ1303の定数を2シフトだけ循環させている。したがって、モジュロ−Nカウンタがi(i=0,1,...,N−1)を出力すると、マルチプレクサ1301が信号Ii+1を入力として選択し、デマルチプレクサ1303がOmod(i−1,N)を出力する。
【0046】
[0064]上述の例から、時間共有設計において不変のままのパイプラインレジスタの組による遅延を補償するために、別の方法(例えば、遅延要素を挿入する、デマルチプレクサに用いる定数をシフトする、別の選択信号を生成する、またはこれらの組み合わせ)を用いることが可能であることが、当業者には明らかであろう。さらに、一般には、有限ステートマシン(FSM)(例えば、モジュロ−Nカウンタ)を用いて入力信号の時間多重化ならびに設計におけるリソース共有を制御することも可能である。
【0047】
[0065]上述の例は、単一入力と単一出力とを有するシングルチャネル設計を用いて示されているが、この説明から、複数入力と複数出力とを有するシングルチャネル設計にも、本発明の様々な実施形態の方法が適用可能であることが当業者には明らかであろう。さらに、Mチャネル設計(M>1)をシングルチャネル設計として扱うことにより、リソース共有を伴うN×Mチャネル設計を自動的に生成することが可能である。
【0048】
[0066]本発明の一実施形態では、複数のチャネルのリソース共有設計の生成時の、従来の方法(例えば、折り畳み変形、その他)による自動変形の前および/または後に、シングルチャネル設計が最適化される。
【0049】
[0067]図14は、本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法のフローチャートである。操作1401でシングルチャネル設計を受け取り、操作1403で、シングルチャネル設計を自動的に変形して時間多重化マルチチャネル設計を生成する。この変形はシングルチャネル設計に基づいており、シングルチャネルシステムの集合体より論理要素が少ないので、大量の計算を要する、高レベル並列処理の抽出操作が不要である。
【0050】
[0068]図15は、本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の詳細なフローチャートである。操作1501で、シングルチャネル回路の設計を受け取る。操作1503で、シングルチャネル回路の論理要素へのアクセスを時間多重化するために、Nステートの有限ステートマシン(FSM)(例えば、モジュロ−Nカウンタ)を生成する。操作1505で、Nチャネル入力を、FSMの状態に応じて、シングルチャネル回路への入力として多重化する多重化回路を生成する。操作1507で、シングルチャネル回路の各チャネル固有要素(例えば、RAM、ROM、定数、レジスタ、フリップフロップ)を、FSMの状態に応じて複数のチャネルについてアクセスされる、対応する要素に置き換える。操作1509で、FSMの状態に応じて、シングルチャネル回路の対応する出力からNチャネル出力を多重分離する多重分離回路を生成する。上述の変形の後に、シングルチャネル設計からマルチチャネル設計が生成される。
【0051】
[0069]図16は、本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の例である。操作1601で、シングルチャネル回路の設計を受け取る。操作1603で、モジュロ−Nカウンタの値がiであるときにチャネルi(i=0,1,...,N−l)の信号に対する操作が実施されるようにシングルチャネルの論理要素を制御する、そのモジュロ−Nカウンタを生成する。操作1605で、カウンタの値がiのときに、チャネルiの入力をシングルチャネル回路の入力として受け取るNアイテムのマルチプレクサを生成する。操作1607(オプション)で、シングルチャネル回路内の非チャネル固有の順次要素(例えば、フリップフロップ、レジスタ、ROM、定数、RAM)を識別する。操作1609で、シングルチャネル設計の各チャネル固有レジスタ(例えば、フリップフロップ)を、N個の順次要素(例えば、N個のシフトレジスタのカスケード接続、NアイテムのデュアルポートRAM、またはRAMとシフトレジスタの組み合わせ)に置き換える。操作1611で、サイズMの各チャネル固有メモリ(例えば、RAMまたはROM)を、サイズN×Mの新しいメモリに置き換える(新しいメモリのメモリアイテムN×j+iは、シングルチャネル回路においてメモリのアイテムjがアドレス指定されたときに、チャネルiに対してアドレス指定される)。操作1613で、各チャネル固有定数をNアイテムのROMメモリに置き換える(メモリアイテムiは、チャネルiの定数に対してアドレス指定される)。操作1615で、各チャネルに対して、シングルチャネル回路の対応する出力から出力を生成する、Nアイテムのデマルチプレクサを生成する。
【0052】
[0070]本発明の一実施形態では、マルチチャネル回路の自動生成時に導入されたレジスタを用いて回路のクロックレートを高めるために、リタイミングアルゴリズム(例えば、切断集合のリタイミングおよびパイプライン化、クロック周期の最小化のためのリタイミング(「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley Interscience、1999年、91〜118頁)で説明されている方法や、当業者に知られている他の方法など)をさらに用いる。
【0053】
[0071]回路設計の過程の中間段階(例えば、周辺機器のリタイミング時やアーキテクチャのリタイミング時)に、負遅延を有する負遅延レジスタを用いることが可能である。物理的な負遅延レジスタは存在しないが、負遅延レジスタは、設計の中間的状態におけるタイミング制約を表すものであることを理解されたい。負遅延レジスタは、設計プロセスの早い段階で用いることが可能であり、一般には、最終的なソリューションを達成するための回路設計の過程で除去される。
【0054】
[0072]本発明の一実施形態では、シングルチャネルシステムは、1つまたは複数の負遅延レジスタで特徴づけられ、負遅延レジスタは、普通のレジスタと同様の様式で変形されることが可能である。
【0055】
[0073]図17は、シングルチャネルシステムの例である。説明のために、レジスタ以外の要素の遅延は無視されている。各レジスタ(例えば、1731、1733、および1741)は、1単位の遅延を有する。要素1711、1713、および1715は定数であって、これらは時間的に変化しない。したがって、ライン1701の入力をI1(t)とすると、ライン1703の信号は、I1(t)×C3+I1(t−2)×C2+I1(t−2)×C1である。図17では、レジスタ1731が乗算器1721の中間結果を格納してI1(t−1)×C1を生成し、レジスタ1733が、乗算器1723の中間結果を格納してI1(t−1)×C1を生成する。レジスタ1741は、加算器1751の中間結果を格納してI1(t−2)×C2+I1(t−2)×C1を生成する。
【0056】
[0074]乗算器1725と加算器1753との間の経路に正遅延レジスタと負遅延レジスタのペアを挿入することが可能である。挿入すると、図17の回路が図18の回路に変形される。図18では、レジスタ1743が負遅延レジスタであり、レジスタ1735が普通のレジスタ(正遅延レジスタ)である。図18では、レジスタ1731、1733、および1735が、1組のパイプラインレジスタである。このパイプラインレジスタの組(1731、1733、および1735)を除去するとシングルチャネル回路の遅延が変わることに注意されたい(この変化が許容されるか望ましい場合もある)。あるいは、図19の点1701の前にレジスタ(図19には示されず)を挿入して、図18の回路と同じ遅延を有するシングルチャネル回路にすることが可能であることにも注意されたい。したがって、図18のシングルチャネル回路を、図19のシングルチャネル回路として指定することが可能である。図19で、ライン1701の入力がI1(t)であるとすると、ライン1703の出力は、I1(t+1)×C3+I1(t−1)×C2+I1(t−1)×C1である。したがって、1単位のタイミングシフトを別にすれば、図19の回路は、本質的に図17(または図18)の回路としての機能を実施する。図19の回路が入力として指定された場合は、マルチチャネル回路を自動的に生成することが可能である。レジスタ1741および1743はパイプラインレジスタではなく、これらはカスケード接続された複数のレジスタに置き換えられることが可能である。図20は、図19を入力して自動的に生成された2チャネル回路の例である。図19の負遅延レジスタ1743は、カスケード接続された負遅延レジスタ1771および1773に置き換えられ、図19のレジスタ1741は、カスケード接続されたレジスタ1761および1763に置き換えられる。入力信号を一度に1つずつ共有チャネルに供給するためにマルチプレクサ1705が追加され、共有チャネルから出力を一度に1つずつ復元するためにデマルチプレクサ1707が追加される。マルチチャネル回路が生成された後、リタイミングアルゴリズム(例えば、「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley Interscience、1999年、91〜118頁)で説明されている方法や、当業者に知られている他の方法など)を用いてシステムを最適化することが可能である。例えば、負遅延レジスタを除去するためにパイプラインレジスタの出力を挿入することが可能である。例えば、乗算器1721、1723、および1725の後に2組のパイプラインレジスタを挿入して、図21の回路を生成することが可能である。前述のとおり、一般に、パイプラインレジスタの組を挿入したり削除したりすると、ライン1703の出力の生成のタイミングが変わるので、適切な数のレジスタ(または遅延要素)をライン1709に用いて(図11に示されるように)デマルチプレクサ1707の制御信号のタイミングを調整することが可能であり、(図13に示されるように)制御信号と出力ラインとの間の対応関係を調整することが可能であることに注意されたい。本発明の実施形態によれば、図21の回路は、図17の回路から直接生成されることが可能である。図20の乗算器1725と加算器1751の後にも2組のパイプラインレジスタを挿入して負遅延レジスタを除去できることに注意されたい。
【0057】
[0075]さらに、本発明の一実施形態では、パイプラインレジスタを識別する過程で、正遅延レジスタおよび負遅延レジスタの1つまたは複数のペアがシングルチャネルシステムに導入される。例えば、マルチチャネル回路の生成のために図17のシングルチャネル回路を受け取った後、パイプラインレジスタの識別のために正遅延レジスタと負遅延レジスタのペア(例えば、図18の1735および1743)を挿入することが可能である。図18に示されるように、普通のレジスタ1735と負遅延レジスタ1743とが挿入されると、パイプラインレジスタの組(1731、1733、および1735)の識別が可能になる。したがって、図18のレジスタ1741および1743だけが、対応する、カスケード接続されたレジスタに置き換えられる。同様に、マルチチャネル回路の自動生成の回路を、リタイミングアルゴリズムを用いてさらに最適化することが可能である。
【0058】
[0076]図22〜25は、本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。図22のシングルチャネルフィルタは、パイプライン化された加算器1847(A2)と、パイプライン化された乗算器1841〜1843(M1〜M3)とを有する。パイプライン化された加算器にはレジスタが組み込まれている。例えば、パイプライン化された加算器1847はレジスタ1865を有し、レジスタ1865はパイプライン化された加算器の物理的な一部であって、分離不可能である。同様に、パイプライン化された乗算器にもレジスタが組み込まれている(例えば、パイプライン化された乗算器1841、1842、および1843には、レジスタ1831、1833、および1835がそれぞれ組み込まれている)。
【0059】
[0077]加算器1851を実装するために、パイプライン化された加算器が用いられるとする。加算器1851にレジスタを与えるために、負遅延レジスタを用いないのであれば、(例えば、加算器1853の両方の入力ラインに)普通のレジスタの組を追加することが可能である。そのような方法では、シングルチャネルシステムの遅延が増える可能性がある。別の方法として、図23は、加算器1851と1853との間に正遅延レジスタおよび負遅延レジスタ(1861および1863)を追加する例を示している。したがって、加算器1851とレジスタ1861とを、パイプライン化された加算器1845(A1)として実装することが可能である。リタイミングを実行してもシングルチャネルシステムの負遅延レジスタを除去することができないことに注意されたい。
【0060】
[0078]本発明の実施形態によれば、マルチチャネル回路を自動的に生成することが可能である。例えば、図23は、2チャネル回路について、本発明の一実施形態に従って生成されたマルチチャネル回路の時間共有部分を示している。2チャネル回路の、入力を多重化する部分と、出力を多重分離する部分とは、図24に示されていないので注意されたい。レジスタ1831、1833、および1835は、図23においてチャネル固有であり、レジスタ1832、1834、および1836は、図24においてマルチチャネル回路のために挿入される。同様に、図23のレジスタ1861および1863は、図24の、カスケード接続されたレジスタの組(1861、1862、および1863と1864)に置き換えられる。
【0061】
[0079]本発明の一実施形態に従って生成される2チャネル回路では、パイプライン化された演算器のそれぞれに対して追加レジスタが生成される。そして、負遅延レジスタを除去するためにリタイミング操作が行われる。例えば、リタイミング操作では、図24のレジスタ1832および1834を加算器1851と1853との間の経路に移動して、加算器1851と1853との間の経路に、負レジスタ(1863および1864)を相殺するのに十分な、普通のレジスタがあるようにすることが可能である。そのようにして2チャネル回路が得られる例を図25に示す。図25では、乗算器2821、1823、および1825と、加算器1851および1853とを、対応する、パイプライン化された演算器(パイプライン化された乗算器1841、1842、および1843と、パイプライン化された加算器1845および1847)として実装することが可能である。ただし、負遅延レジスタはすべて、リタイミング後に除去される。
【0062】
[0080]上述の例では、パイプライン化された加算器と、パイプライン化された乗算器とを示した。しかしながら、次の説明から、他のパイプライン化された論理要素やパイプライン化されたIPブロックも同様に扱うことが可能であることを理解されよう。
【0063】
[0081]本発明の一実施形態では、パイプラインレジスタの組が識別されず、すべてのレジスタがチャネル固有であると見なされる。例えば、シングルチャネルシステムをNチャネルシステムに自動的に変形する方法は、以下の操作を含む。
【0064】
[0082]1.モジュロ−NカウンタをNステートの有限ステートマシン(FSM)として生成する。FSMのステート変数はcntで表される。システムのm番目のチャネル((0≦m≦N−1)は、FSMがm番目の状態のとき(例えば、cnt=mであるとき)に有効にアクティブ化される。
【0065】
[0083]2.各レジスタを、N個のシフトレジスタのカスケード接続に置き換える(あるいは、Nが大きい場合は、各レジスタを、NアイテムのデュアルポートRAMか、RAMとシフトレジスタの組み合わせに置き換えることが可能である)。
【0066】
[0084]3.サイズMの各RAMメモリを、サイズN×MのRAMメモリに置き換える。アドレス生成回路は、シングルチャネル設計のメモリアイテムAがアドレスN×A+cntのアイテムに置き換えられるように、メモリアイテムをアドレス指定するよう修正または追加される。新しいメモリからの出力がFSMの状態と同期するようにメモリアイテムを論理的にパイプライン化するために、他のアドレス変換方式を用いることも可能であることを理解されたい。一般に、変換されたアドレスは、元のアドレス、FSMの状態、およびアクティブなチャネルの番号の関数である。
【0067】
[0085]4.チャネル固有のROMがある場合(例えば、ROMの内容がチャネルごとに異なる場合)は、ROMアイテムN×A+mがm番目のチャネルのROMアイテムAの内容を保持するように、RAMの場合と同様の変形を適用する。ROMがチャネル固有でない場合、変形は不要である。
【0068】
[0086]5.チャネル固有の定数がある場合(例えば、チャネルごとに定数の値が異なる場合)は、その定数を、NアイテムのROMに置き換える。ROMのアドレスラインはcntで駆動される(ROMアクセスに1クロックの遅延がある場合はcnt−1で駆動される)。定数がチャネル固有でない場合、変形は不要である。
【0069】
[0087]異なるチャネルの入力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の入力ポートを有する場合は、これらの入力を、cntで駆動される選択ラインを有する、Nアイテムのマルチプレクサで多重化する。cntは、入力を駆動するクロックよりN倍高速である。同様に、異なるチャネルの出力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の出力ポートを有する場合は、これらの出力を、cntで駆動される選択ラインを有する、Nアイテムのデコーダで多重分離する。この出力は、N倍低速なクロックでラッチされることが可能である。シングルチャネル設計の他のコンポーネントは、時間多重化されている間中、現状のまま、共有リソースとして保持される。
【0070】
[0088]本発明の別の実施形態では、レジスタの生成を避けるためにパイプラインレジスタの組が識別される。例えば、シングルチャネルシステムをNチャネルシステムに自動的に変形する方法は、以下の操作を含む。
【0071】
[0089]1.可能な限り多くの、かつ幅広のレジスタをカバーするために、システム内のパイプラインレジスタを識別する。パイプラインレジスタの組が複数存在してもよいが、それらの組は相互に排他的でなければならない。どのパイプラインレジスタの組にも分類されないレジスタはすべて状態レジスタである。パイプラインレジスタは非チャネル固有であり、状態レジスタはチャネル固有である。P個の個別のパイプラインレジスタの組が存在する場合、システムは、まとまりのないP+1個のサブシステムに分割されており、サブシステムが単体でリンクされたリストが形成されている。このリストでは、各フィードフォワード切断集合が、リンクを、データフローの方向を示すリンク方向とともに定義している。リンクされたリストでの順番がi(0≦i≦P)であるサブシステムをSiで表す。
【0072】
[0090]2.少なくとも1つのモジュロ−NカウンタからP+1個のNステートの有限ステートマシン(FSM)を生成する。i番目のFSM(0≦i≦P)の状態変数をcntiで表す。i番目のFSMがm番目の状態にある場合(例えば、cnti=mの場合)、サブシステムSiのハードウェアは、m番目のチャネル(0≦m≦N−1)のデータを処理する。[0,P]における∀i,jに対してmod((cnti−cntj),N)=mod((j−i),N)であれば、サブシステム間で適正な同期が維持される。この関係は、cntiがcnti−1を1クロック遅延させたものである場合に成り立つ(i=1,2,...,N−1)。したがって、cntiは、レジスタを用いてcnti−1から導出されることが可能であり、FSMは、1つのモジュロ−Nカウンタとレジスタのカスケード接続とを用いて実装されることが可能である。
【0073】
[0091]3.各状態レジスタを、N個のシフトレジスタのカスケード接続に置き換える(あるいは、Nが大きい場合は、各状態レジスタを、NアイテムのデュアルポートRAMか、RAMとシフトレジスタの組み合わせに置き換えることが可能である)。
【0074】
[0092]4.サイズMの各RAMメモリを、サイズN_MのRAMメモリに置き換える。サブシステムSi内のRAMに関しては、シングルチャネル設計のメモリアイテムAが、アドレスN_A+cntiにあるアイテムに置き換えられるようにメモリアイテムをアドレス指定するよう、アドレス生成回路が修正または追加される。新しいメモリからの出力がi番目のFSMの状態と同期するようにメモリアイテムを論理的にパイプライン化するために、他のアドレス変換方式を用いることも可能であることを理解されたい。一般に、変換されたアドレスは、元のアドレス、i番目のFSMの状態、およびアクティブなチャネルの番号の関数である。
【0075】
[0093]5.チャネル固有のROMがある場合(例えば、ROMの内容がチャネルごとに異なる場合)は、ROMアイテムN_A+mがm番目のチャネルのROMアイテムAの内容を保持するように、RAMの場合と同様の変形を適用する。ROMがチャネル固有でない場合、変形は不要である。
【0076】
[0094]6.サブシステムSi内にチャネル固有の定数がある場合(例えば、チャネルごとに定数の値が異なる場合)は、その定数を、NアイテムのROMに置き換える。ROMのアドレスラインはcntiで駆動される(ROMアクセスに1クロックの遅延がある場合はcnti−1で駆動される)。定数がチャネル固有でない場合、変形は不要である。
【0077】
[0095]異なるチャネルの入力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の入力ポートを有する場合は、これらの入力を、cnt0で駆動される選択ラインを有する、Nアイテムのマルチプレクサで多重化する。cnt0は、入力を駆動するクロックよりN倍高速である。同様に、異なるチャネルの出力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の出力ポートを有する場合は、これらの出力を、cntpで駆動される選択ラインを有する、Nアイテムのデコーダで多重分離する。この出力は、N倍低速なクロックでラッチされることが可能である。シングルチャネル設計の他のコンポーネントは、時間多重化されている間中、現状のまま、共有リソースとして保持される。
【0078】
[0096]P+1個のNステートの有限ステートマシンを用いればP+1個のサブシステムのタイミングを個別に制御することが可能であるが、別の方法として、単一のNステートのFSMを用いてすべてのサブシステムの動作を制御することが可能である。この場合、所与のチャネルに対して、FSMの状態が別の値に達すると、別のサブシステムが処理を行う。例えば、FSMが状態cnt=mod(m−1,N)の場合には、サブシステムSiのハードウェアがm番目のチャネル(0≦m≦N−1)のデータを処理する。
【0079】
[0097]パイプラインレジスタの組は、タイミング制限が許せば、識別および除去されることが可能である。例えば、図10のパイプラインレジスタの組1011は、図2の設計を生成するために除去されることが可能であり、図11のパイプラインレジスタの組1011は、図7の設計を生成するために自動的に除去されることが可能である。同様に、パイプラインレジスタが自動的に設計に追加されることも可能である。一般には、パイプラインレジスタを追加したり削除したりすると、回路の入力から出力までの遅延が変わることに注意されたい。ただし、そのような変化は許容されることが多い。
【0080】
[0098]本発明の一実施形態では、実行時に構成可能な深さを有するシフトレジスタを用い、実行時に構成可能な法を有するモジュロ−Nカウンタを用いると、動作を中断させることなく、折り畳みレートNを実行時に変更することが可能である。アクティブチャネルの数が動的なパラメータである用途では、折り畳みレートをアクティブチャネルの数に適応させて、状況が許すときに、電力消費を抑えるためにクロックレートを下げることが可能である。
【0081】
[0099]したがって、本発明の少なくとも1つの実施形態は、入力されたシングルチャネルシステムの設計からマルチチャネルシステムの設計を自動的に生成する。シングルチャネルシステムの設計は、論理(計算)ユニットの時間多重化リソース共有を伴うNチャネルシステムに自動的に変形される。この変形はシンプルで非常に高速であり、得られる設計のハードウェアは非常に効率的である。
【0082】
[00100]本発明の様々な実施形態の方法によりシングルチャネル設計から時間多重化マルチチャネル設計が生成されるので、より少ない数の論理要素に対して最適化および合成の操作を高速で実施することが可能である。制御論理の使い方については、最小限にすることが可能である。一部のFPGAアーキテクチャでは、合成されたシステムのメモリの使い方を非常に効率的にすることが可能である。さらに、本発明の様々な方法が、高次のパイプラインと大幅な高速化を想定している。
【0083】
[00101]本明細書ではここまで、本発明の特定の例示的実施形態を参照しながら本発明について説明してきた。添付の特許請求項で示されている、本発明の広い趣旨および範囲を逸脱することなく、様々な修正を本発明に施しうることは明らかであろう。したがって、本明細書および添付図面は、制限の意味ではなく例示の意味で解釈されるべきである。
【図面の簡単な説明】
【0084】
【図1】本発明に使用可能なデータ処理システムのブロック図の例である。
【図2】本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能なシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。
【図3】図2の例の様々な場所での信号波形を示す図である。
【図4】図2のシングルチャネルフィルタの集合体に対応する2チャネルフィルタの例を示す図である。
【図5】本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成される2チャネルフィルタの例である。
【図6】図5の例の様々な場所での信号波形を示す図である。
【図7】本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。
【図8】本発明の一実施形態による、マルチチャネルフィルタの出力を多重分離する出力デコーダおよびラッチ回路の例を示す図である。
【図9】本発明の代替実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの別の例である。
【図10】本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。
【図11】本発明の一実施形態による、図10のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。
【図12】本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル回路の別の例を示す図である。
【図13】本発明の一実施形態による、図12のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。
【図14】本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法のフローチャートである。
【図15】本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の詳細なフローチャートである。
【図16】本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の例である。
【図17】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図18】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図19】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図20】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図21】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図22】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【図23】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【図24】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【図25】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【発明の分野】
【0001】
[0001]本発明はデジタル回路に関し、より詳細には、マルチチャネルハードウェアの自動合成に関する。
【関連技術の説明】
【0002】
[0002](例えば、超LSI(VLSI)技術の規模の)デジタル回路の設計では、設計者は、コンピュータ支援手法を用いることが多い。複雑なデジタル回路の設計およびシミュレーションを支援する目的でデジタル回路を記述するために、HDL(ハードウェア記述言語)などの標準言語が開発されてきた。いくつかのハードウェア記述言語(VHDLやVerilogなど)は、業界標準として進化している。VHDLおよびVerilogは、ゲートレベル、レジスタ転送レベル(RTL)、または抽象データ型を用いた動作レベルでのハードウェアモデルの記述を可能にする汎用ハードウェア記述言語である。デバイス技術が進歩し続けるとともに、HDLをより新しいデバイスや設計スタイルに使えるように適応させるべく、様々な製品設計ツールが開発されている。
【0003】
[0003]HDLコードによる集積回路の設計では、最初にコードが作成され、そのコードがHDLコンパイラによってコンパイルされる。HDLソースコードは、特定のレベルで回路要素を記述したものであり、コンパイラは、コンパイル結果としてRTLネットリストを生成する。RTLネットリストは、特定ベンダの集積回路(FPGA(フィールドプログラマブルゲートアレイ)やASIC(特定用途向け集積回路)など)のテクノロジ/アーキテクチャに依存しないという意味で、一般にテクノロジ非依存のネットリストである。RTLネットリストは、(動作表現と異なり)回路要素の回路図表現に対応する。この、テクノロジ非依存のRTLネットリストをテクノロジ固有のネットリストに変換するために、あるマッピング操作が行われる。この操作により、そのベンダのテクノロジ/アーキテクチャで回路を作成することが可能である。FPGAベンダらがそれぞれの集積回路内に論理回路を実装するために様々なテクノロジ/アーキテクチャを利用していることはよく知られている。したがって、テクノロジ非依存のRTLネットリストにマッピングが施されて作成されるネットリストは、個々のベンダのテクノロジ/アーキテクチャに固有のものである。
【0004】
[0004]回路の設計では、特定の設計目標を最適化するために、よく変形を行う。例えば、ある回路で使用される面積を減らすために変形が行われる場合がある。集積回路で使用されるシリコン面積を減らすための体系化されたアプローチの1つが、折り畳み変形(Folding Transformation)である。単一の機能単位に対して複数のアルゴリズム操作を実行することにより、実装時の機能単位数を減らすことが可能である。折り畳み変形の詳細については、「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley−Interscience、1999年)に説明がある。
【0005】
[0005]デジタル回路の配線では、時間多重化リソース共有が行われてきた。例えば、「Parallel Operations in the Control Data 6600」(AFIPS Proceedings FJCC、Part 2、Vol.26、1964年、33〜40頁)でJ. E. Thorntonによって説明されている、CDC 6600コンピュータのPeripheral and Control Processors(PACPs)では、ラウンドロビン様式で共通リソースにアクセスすることによって実行ハードウェアを共有する。また、マルチチャネルフィルタ用リソース共有に関する別の例を、「FPGA Implementation of a Serial Organized DA Multichannel FIR Filter」(Jhon J.Leon Franco、Miguel A.Melgarejo、Tenth ACM International Symposium on Field Programmable Gate Arrays、Monterey、California、2002年2月24〜26日)に見ることができる。
【0006】
[0006]従来の折り畳みアルゴリズムは、所与の設計から、時間多重化リソース共有を伴う設計を自動的に生成することが可能である。従来の折り畳みアルゴリズムは、単一機能単位への時間多重化が可能な複数のアルゴリズム操作を識別して、機能単位(例えば、加算器、マルチプレクサ)の数を減らすことが可能である。ただし、デジタル信号処理(DSP)設計の場合、従来の折り畳みアルゴリズムは、並列処理および依存性の抽出と、計算スケジュールの最適化とに多大な時間がかかる。ハードウェア合成の複雑さは、計算に関与する論理単位の数に対して比例を超える変化で大きくなる。したがって、設計規模が大きくなるほど、回路の最適化および変形が困難になる。
【発明の概要】
【0007】
[0007]本明細書では、シングルチャネル回路から時間多重化マルチチャネル回路を自動的に生成する方法および装置について記載する。
【0008】
[0008]本発明の少なくとも1つの実施形態は、シングルチャネル回路の設計からマルチチャネル回路の時間多重化設計を自動的に生成することによって時間多重化リソース共有のためのマルチチャネルハードウェアを自動的かつ効率的に合成する。シングルチャネル設計のチャネル固有の要素(例えば、レジスタやメモリ)は、複数のチャネルの信号処理をパイプライン化するための、N倍の容量を有する、対応する要素に置き換えられる。
【0009】
[0009]本発明の一態様では、デジタル回路を設計する方法は、シングルチャネル回路である第1の設計を受け取ることと、その、シングルチャネル回路である第1の設計を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成することとを含む。一例では、マルチチャネル回路の自動生成後に、(例えば、クロック周波数を高めるために)時間多重化マルチチャネル回路に対してリタイミングが実施される。一例では、(例えば、マルチチャネル回路の遅延を調整するために)時間多重化マルチチャネル回路のパイプラインレジスタの組が識別され、除去される。一例では、時間多重化マルチチャネル回路にパイプラインレジスタの組が挿入される。一例では、複数のチャネルによる第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)が生成され、複数のチャネル用の複数の入力を第1の設計の入力ラインに時間多重化するために多重化回路が生成され、第1の設計の出力ラインからの信号を複数のチャネル用の複数の出力に時間多重分離するための多重分離回路が生成される。一例では、第1の設計における要素(例えば、定数、ランダムアクセスメモリ(RAM)要素、読み出し専用メモリ(ROM)要素、レジスタ、フリップフロップ、または負遅延レジスタ)が、対応する複数の、またはより大きな要素に置き換えられ、その要素のそれぞれは、FSMの状態に応じて複数のチャネルのうちの1つのチャネルに対してアクセスされる。一例では、チャネル固有でない順次要素が識別された後、第1の設計における他の順次要素がチャネル固有と識別され、チャネル固有の要素だけが、対応する複数の要素に置き換えられる。チャネル固有でない順次要素には、(例えば、順次要素のフィードフォワード切断集合の数を調べることによって、チャネル固有でない順次要素として識別された)パイプラインレジスタの組が含まれる。一例では、チャネル固有の順次要素が、複数の移動順次要素のカスケード接続に置き換えられ、別の例では、チャネル固有の順次要素が、FSMの状態に応じてアドレス指定される、複数のメモリ要素(または、容量がより大きなメモリ要素)に置き換えられる。
【0010】
[0010]一例では、第1の設計における順次要素(例えば、フリップフロップ、レジスタ、メモリ要素、定数、および負遅延レジスタ)が、第2の設計を生成するために、対応する要素(例えば、レジスタのカスケード接続、デュアルポートRAM、またはRAMとシフトレジスタの組み合わせ)に置き換えられる。対応する要素は、複数のチャネルからの信号を処理するタイミングに応じて、第2の設計において順次アクセスされる。一例では、対応する要素が、移動要素のカスケード接続であり、別の例では、対応する要素が、順次アドレス指定される(例えば、N個のメモリ要素からなるメモリが、Mチャネル回路に対応するようにN×M個のメモリ要素を有するメモリに置き換えられる)。
【0011】
[0011]本発明の一態様では、デジタル回路を設計する方法が、シングルチャネル回路である第1の設計を受け取ることと、第1の設計のシングルチャネル回路の集合体と、そのシングルチャネル回路の集合体における並列処理を指示する情報とを生成することと、その情報を用いて、そのシングルチャネル回路の集合体に折り畳み変形を適用して、時間多重化マルチチャネル回路である第2の設計を生成することとを含む。例えば、この情報は、折り畳みの集合の情報を含み、この、折り畳みセットの情報は、折り畳みアルゴリズムを誘導して折り畳み変形を実施するために用いられる。シングルチャネル回路である第1の設計に負遅延レジスタを含めることが可能であり、変形後にリタイミング操作を実施することが可能である。
【0012】
[0012]本発明は、方法と方法を実施する装置とを含み、装置は、方法を実施するデータ処理システムと、データ処理システムで実行されたときに方法をデータ処理システムに実施させるコンピュータ可読媒体とを含む。
【0013】
[0013]本発明の他の特徴は、添付図面と、この後の詳細説明から明らかになるであろう。
【0014】
[0014]添付図面の図中では、本発明が限定ではなく例として示されており、添付図面において類似した参照符号は同様の要素を指す。
【詳細な説明】
【0015】
[0033]以下の説明および図面は、本発明の例示であって、本発明を限定するものと解釈されてはならない。本発明が完全に理解されるように、数多くの具体的な詳細について説明する。ただし、場合によっては、本発明の説明が不明瞭にならないように、よく知られている事柄や一般的な事柄については詳しく説明しない。本開示におけるある実施形態または一実施形態への参照は、必ずしも同じ実施形態への参照とは限らず、そのような参照は、少なくとも1つの実施形態への参照を意味する。
【0016】
[0034]本発明の少なくとも1つの実施形態は、シングルチャネル回路の設計からマルチチャネル回路の時間多重化設計を自動的に生成することによって時間多重化リソース共有のためのマルチチャネルハードウェアを自動的かつ効率的に合成しようとするものである。
【0017】
[0035]ハードウェア合成の複雑さは、設計に関与する論理単位の数に対して比例を超える変化で大きくなる。マルチチャネル回路は、一般に、独立した同一のシングルチャネルを複数有する。Nチャネル回路は、一般に、ハードウェア合成時に回路を最適化する際に、対応するシングルチャネル回路のN倍を超える数の論理(計算)単位を必要とする。使用される機能単位の数を減らすために、従来の折り畳み変形をマルチチャネル回路に適用して時間多重化回路を生成する場合、従来の折り畳みアルゴリズムでは、並列処理および依存性の抽出と、計算スケジュールの最適化とに多大な時間がかかる。したがって、時間多重化リソース共有のためのハードウェア合成の最適化は、一般に計算量が非常に多い(特に設計規模が大きい場合)。
【0018】
[0036]本発明の一実施形態によれば、複数のチャネルの時間多重化リソース共有のための合成の最適化は、シングルチャネルの設計に基づく。並列処理および依存性を抽出する計算は不要であり、従来の折り畳み変形の大量の計算を行うことなく、シングルチャネルの設計から、時間多重化リソース共有を伴う設計を生成することが可能である。一例では、シングルチャネル設計のチャネル固有の要素(例えば、レジスタやメモリ)を、複数のチャネルの信号処理をパイプライン化するためにN倍を超える容量の、それらに対応する要素に置き換えることによって、シングルチャネル設計が時間多重化Nチャネル設計に変形される。後でさらに例を挙げて詳しく説明する。
【0019】
[0037]本発明の方法の多くは、従来の汎用コンピュータシステムなどのデジタル処理システムで実施可能である。1つの機能だけを実行するために設計またはプログラムされた特殊用途コンピュータも使用可能である。
【0020】
[0038]図1は、本発明に使用可能な、一般的なコンピュータシステムの一例である。図1は、コンピュータシステムの各種コンポーネントを示しているが、それらのコンポーネントの相互接続の特定のアーキテクチャまたは様式を表すことを意図したものではないことに注意されたい。そのような細部は、本発明と特に関係するものではないからである。また、これよりコンポーネントが少ないか、あるいは多いネットワークコンピュータや他のデータ処理システムも本発明に使用可能であることも理解されよう。図1のコンピュータシステムは、例えば、Sunワークステーション、またはWindowsオペレーティングシステムが動作するパーソナルコンピュータ(PC)、またはApple Macintoshコンピュータであってよい。
【0021】
[0039]図1に示すように、データ処理システムの形をとるコンピュータシステム101は、マイクロプロセッサ103、ROM 107、揮発性RAM 105、および不揮発性メモリ106に結合されたバス102を含む。マイクロプロセッサ103は、Motorola,Inc.製またはIBM製のG3またはG4マイクロプロセッサであってよく、図1の例に示すように、キャッシュメモリ104に結合される。バス102は、これらの様々なコンポーネントを相互接続し、さらに、コンポーネント103、107、105、および106を、ディスプレイコントローラおよびディスプレイ機器108、ならびにマウス、キーボード、モデム、ネットワークインターフェース、プリンタ、スキャナ、ビデオカメラ、および他の、当業者にはよく知られている機器などが挙げられる入出力(I/O)機器などの周辺機器と相互接続する。通常、入出力機器110は、入出力コントローラ109を介してシステムに結合される。揮発性RAM 105は、一般に、メモリ内のデータをリフレッシュまたは保持するために継続的な給電が必要なダイナミックRAM(DRAM)として実装される。不揮発性メモリ106は、一般に、システムへの給電がなくなってもデータを保持する磁気ハードドライブ、光磁気ドライブ、光ドライブ、DVD RAM、または他のタイプ、のメモリシステムである。一般には不揮発性メモリもランダムアクセスメモリであるが、ランダムアクセスメモリでなくてもかまわない。図1では、不揮発性メモリは、データ処理システムのそれ以外のコンポーネントと直接結合されているローカルデバイスであるが、本発明は、モデムやイーサネットインターフェースなどのネットワークインターフェースでデータ処理システムと結合されているネットワークストレージ機器のような、システムから離れている不揮発性メモリも利用可能であることが理解されよう。バス102は、当業者にはよく知られている様々なブリッジ、コントローラ、および/またはアダプタで相互接続された1つまたは複数のバスを含むことが可能である。一実施形態では、I/Oコントローラ109は、USB(ユニバーサルシリアルバス)周辺機器を制御するUSBアダプタ、および/またはIEEE−1394周辺機器を制御するIEEE−1394バスアダプタを含む。
【0022】
[0040]本発明の態様が少なくとも部分的にソフトウェアで実施可能であることは、以下の記述から明らかであろう。すなわち、本手法は、コンピュータシステムまたは他のデータ処理システムにおいて、そのプロセッサ(マイクロプロセッサなど)が、ROM 107、揮発性RAM 105、不揮発性メモリ106、キャッシュ104、またはリモートストレージ機器に格納されている命令のシーケンスを実行するのに応答する形で実施されることが可能である。様々な実施形態において、本発明を実装するために、ハードワイヤード回路をソフトウェア命令を組み合わせて用いることが可能である。したがって、本手法は、ハードウェア回路とソフトウェアの特定の組み合わせに限定されるものではなく、また、データ処理システムで実行される命令の特定のソースに限定されるものでもない。さらに、以下の記述では、説明を単純にするために、様々な機能や操作を、ソフトウェアコードによって実行または起動されるものとして説明する。しかしながら、当業者であれば、そのような表現が、プロセッサ(マイクロプロセッサ103など)によるコードの実行の結果として機能が実施されることを意味することを理解されよう。
【0023】
[0041]データ処理システムによって実行されたときに本発明の各種方法をシステムに実行させるソフトウェアおよびデータを格納するために、マシン可読媒体を用いることが可能である。この実行可能ソフトウェアおよびデータは、例えば、図1に示したROM 107、揮発性RAM 105、不揮発性メモリ106、および/またはキャッシュ104など、様々な場所に格納することが可能である。このソフトウェアおよび/またはデータの一部を、これらのストレージ機器の任意のいずれかに格納することが可能である。
【0024】
[0042]したがって、マシン可読媒体には、マシン(例えば、コンピュータ、ネットワーク機器、携帯情報端末、製造ツール、1つまたは複数のプロセッサの集合を有する任意の機器など)からのアクセスが可能な形で情報を提供する(すなわち、格納および/または送信する)任意のメカニズムが含まれる。例えば、マシン可読媒体として、記録可能または記録不可能媒体(例えば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイスなど)、ならびに電気、光、音、または他の形で伝搬する信号(例えば、搬送波、赤外線信号、デジタル信号など)などがある。
【0025】
[0043]図2は、本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能なシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。シングルチャネル回路200は、ライン201で入力を受け取り、ライン203で出力を生成する。このシングルチャネル設計は、定数211、213、および215と、乗算器221、223、および225と、加算器235および237と、レジスタ(フリップフロップ)231および233とを含む。乗算器221、223、および225がライン201の入力に定数211、213、および215を乗じ、それらの結果を加算器235および237が合計して、ライン203に出力を生成する。ライン205のクロック信号Csが、シングルチャネル回路内の処理のパイプライン化と同期とを制御する。
【0026】
[0044]図3は、図2の例の様々な場所での信号波形を示す図である。時刻t0(301)に、入力信号I1がライン201に到着する。時刻t1(303)に、レジスタ231が乗算器221の結果を出力してラインA 207に信号SA 313を生成する。時刻t2(305)に、レジスタ233が加算器235の結果を出力してラインB 209に信号SB 315を生成する。これは、信号SA 313と乗算器223の出力との和である。時刻t3に、加算器237が信号SB 315と乗算器225の出力とを合計して出力ライン203に信号O1 317を生成する。
【0027】
[0045]図4は、図2のシングルチャネルフィルタの集合体に対応する2チャネルフィルタの例を示す図である。例えば、回路401および403は、図2の回路200と同じ要素および構成を有する。ハードウェアシステムの自動合成についての従来のソリューションでは、マルチチャネルシステムを特別に扱うことはしない。従来の方法では、マルチチャネル設計を、シングルチャネルシステムの大きな集合体として扱う。一般に、従来の方法は、設計に内在する高レベル並列処理を何ら示すことなく、図4に示すような2チャネルフィルタを提示する。したがって、ハードウェア合成ソフトウェアプログラムは、大量の計算を要する、並列処理および依存性を抽出するタスクを実行する。時間多重化リソース共有を伴う設計を生成するためには、折り畳み変形を適用することが可能である。したがって、従来の方法は、大量の計算を必要とする。さらに、マルチチャネルシステムがシングルチャネルシステムの集合体として解釈される場合は、内在する高レベル並列処理が見逃される可能性があり、結果として、折り畳み変形が適用される際にさらに多くの計算リソースが費やされること、および/または所与の設計が十分に最適化されないことが起こる。
【0028】
[0046]本発明の一実施形態では、シングルチャネルシステムの集合体の中の並列処理に関連する情報は、そのシングルチャネル設計から自動的に生成されるが、この情報が生成されるのは、シングルチャネルシステムの集合体が時間多重化回路に自動的に変形される際に折り畳み変形が適用されるように汎用折り畳みアルゴリズムを誘導するためでもある。例えば、一般的な折り畳みアルゴリズム(例えば、「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley−Interscience、1999年、149〜187頁)で説明されている折り畳みアルゴリズムなど)では、折り畳みの集合を識別することは、時間のかかる操作である。折り畳みの集合は、時間多重化によって同一機能単位で実行されることになる操作の集合である。シングルチャネル設計からシングルチャネルシステムの集合体が自動的に生成される場合は、大量の計算を行うことなく、折り畳みの集合を生成することが可能である。そのように識別された折り畳みの集合は、一般的な折り畳みアルゴリズムを、シングルチャネルシステムの集合体を変形することに誘導するために用いられることが可能である(例えば、そのような情報を用いて操作を効率化するように従来の折り畳みアルゴリズムを修正することが可能である)。
【0029】
[0047]本発明の少なくとも1つの実施形態では、シングルチャネルシステムの大きな集合体に折り畳み変形を適用する代わりに、シングルチャネル設計に自動変形を適用して、時間多重化リソース共有を可能にする設計を生成することによって、マルチチャネル回路内の並列処理を漏れなく探り出す。
【0030】
[0048]本発明の一実施形態は、並列処理および依存性の抽出、計算スケジュールの最適化、その他に時間を費やすことを避けるために、最初からマルチチャネル動作を想定する。この実施形態は、システムのシングルチャネルバージョンを入力と見なし、シンプルなマッピングを適用して、マルチチャネルシステムに内在する高レベル並列処理を非常に効率的に利用する。結果として得られるマルチチャネル設計の、独立した各スレッド内のデータフローが同一であるので、結果として回路の制御は最小限である。
【0031】
[0049]図5は、本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成される2チャネルフィルタの例である。機能単位(例えば、乗算器や加算器)は、チャネル固有ではない。定数C1、C2、およびC3(211、213、および215)はチャネル固有ではないので、これらも修正なしで共有されることが可能である。レジスタは、このケースではチャネル固有である。したがって、シングルチャネル設計200のレジスタ231と233とは、2個のシフトレジスタのカスケード接続531、533と535、537とに置き換えられる。(例えば、図4のチャネル401および403の入力411および413に対応する)入力501および503が、信号SM(507)に応じて、マルチプレクサ541によって入力ライン505に時間多重化され、(例えば、図4のチャネル401および403の出力421および423に対応する)出力509が、デマルチプレクサ543によってライン513および515に多重分離される。マルチプレクサ541(またはデマルチプレクサ543)の生成は、複数のチャネルが複数のポートで信号を受信(または生成)するかどうかに応じて省略可能であることが理解されよう。
【0032】
[0050]図6は、図5の例の様々な場所での信号波形を示す図である。入力信号I1(615)およびI2(617)は、制御信号SM(613)の状態に応じて、信号SIとして時間多重化される。シングルチャネル回路の一般的なクロックサイクル(例えば、図3の時刻t0 310からt1 303。これは図6の時刻t0 601からt2 603に対応する)では、各入力信号が1つのタイムスロットに割り当てられる(例えば、信号I1 615がスロット621に、信号I2 617がスロット622に割り当てられる)。所与のスロットに割り当てられた入力信号は、論理単位によって処理され、さらなる処理のために、レジスタのカスケード接続によってパイプライン移送される。例えば、SIのスロット621に割り当てられた信号I1 615に定数211が乗ぜられて、時刻t1に、レジスタ531からのラインA1(521)に、SA1の中間結果631が生成される。中間結果631が、レジスタ533によって遅延され、時刻t2 603に、ラインA2(523)でSA2の出力信号641となり、その後に、信号I1 615が乗算器223の入力として、再度SIのスロット623に割り当てられる。時刻t3 604に、加算器235の結果がレジスタ535から出力されて、ラインB1(525)にSB1の信号651が生成され、これが同様にレジスタ537によって遅延されて、時刻t4 605に、ラインB2(527)にSB2の信号661が出力される。その後に、信号I1 615が乗算器225の入力として、再度SIのスロット625に割り当てられる。時刻t5 606に、ラインO(図5の509)でSOの信号671(入力信号I1 615に対する加算器237の結果)が、デマルチプレクサ513による出力のために待機している。同様に、信号672は、入力信号I2 617がスロット622、624、および626に割り当てられて計算された結果である。この後も、前の入力に基づく結果が中間的な次のクロックサイクルで利用可能になるように、前の入力からの中間結果がシステム内をパイプライン移送される(例えば、入力I1のサンプル623、625、および627に基づく結果がタイムスロット673で利用可能になる)。
【0033】
[0051]したがって、図5および6に示すように、シングルチャネル設計におけるレジスタがレジスタのカスケード接続に置き換えられた場合は、レジスタのカスケード接続の出力がマルチチャネル回路における信号処理のためのタイムスロット割り当てに同期するように、シングルチャネル設計のレジスタに格納された中間結果が、マルチチャネル設計におけるレジスタのカスケード接続をパイプライン移送される。本発明の一実施形態では、シングルチャネル設計におけるチャネル固有の各順次要素(例えば、レジスタ、フリップフロップ、メモリ要素)が、N倍を超える容量の、対応する要素(例えば、レジスタまたはフリップフロップのカスケード接続、タイムスロット割り当てに応じてアドレス指定されるデュアルポートRAM、RAMとシフトレジスタの組み合わせ、その他)に置き換えられる。
【0034】
[0052]図7は、本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。図2のシングルチャネル設計200を図7の時間多重化Nチャネル設計700に自動的に変換するために、図2のレジスタ231がN個のシフトレジスタのカスケード接続711〜719に置き換えられ、図2のレジスタ233がN個のシフトレジスタのカスケード接続721〜729に置き換えられる。入力信号に対するタイムスロット割り当てを制御する信号を生成するために、モジュロ−Nカウンタ705が用いられる。ライン707でのモジュロ−Nカウンタ705の出力がi(i=0,1,...,N−1)の場合、マルチプレクサ701は、ライン709への入力信号として信号Ii+1を選択する。同様に、図7の加算器237の出力信号がデマルチプレクサ703によってデコードされて、モジュロ−Nカウンタ705の出力に対応するチャネルの出力信号が生成される。
【0035】
[0053]図8は、本発明の一実施形態による、マルチチャネルフィルタの出力を多重分離する出力デコーダおよびラッチ回路の例を示す図である。テスタ811、813、・・・、819は、(例えば、図7のモジュロ−Nカウンタ705からの)選択信号841の状態に応じてラッチ801、803、・・・、809を制御する。ライン843の信号(例えば、図7の加算器237の出力)は、選択信号の状態がテスタ(811〜819)の定数(821〜829)のうちの1つと一致したときに、それと対応する、出力ライン831、833、・・・、839のうちの1つでラッチされる。
【0036】
[0054]図9は、本発明の代替実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの別の例である。図9では、各入力信号を処理するために、回路200がラウンドロビン様式でアクセスされる。モジュロ−3カウンタ907により、各チャネルが次のチャネルの信号の処理に使用されるまでに、各チャネルの入力信号を完全に処理して出力信号を生成することが可能である。モジュロ−Nカウンタ905は、回路200で処理されるチャネルの信号を選択する。図9の方法は、マルチチャネル設計の生成時のシングルチャネル回路の修正がより少なくなるが、図9の回路は図7の回路よりスループットが小さい。シングルチャネル設計での信号のパイプライン移送が、図9では、ラウンドロビン方式であるために、十分に利用されていない。入力信号および出力信号の構成によっては、図9のマルチチャネル設計を用いた場合に、各チャネルの信号の処理遅延を最小化できる可能性がある。しかしながら、一般には、異なるチャネルの入力信号はラウンドロビン様式では到着せず、むしろ、異なるチャネルの入力信号は同じタイミングで到着することが理解されよう。入力信号がラウンドロビン様式で到着するように入力信号をリタイミングするために、入力信号とマルチプレクサ901との間にバッファを用いることが可能である。そのようなバッファは、入力信号を同じタイミングでサンプルし、チャネルごとに異なる時間量だけ遅延させて、サンプルされた信号がラウンドロビン様式でマルチプレクサ901に到着するようにする。
【0037】
[0055]図7の時間多重化マルチチャネルは、クロック信号CN(741)の周波数がシングルチャネルシステムのクロック信号(例えば、図4のクロック信号CS)の周波数のN倍である場合は、(例えば、図4の)シングルチャネルシステムの集合体を直接置き換えることが可能であることに注意されたい。図9の設計を用いる場合は、入力をリタイミングするために追加回路(例えば、入力信号のタイミングと処理のためのタイムスロット割り当てとに応じてアドレス指定されるRAMのブロック)を用いることが可能である。
【0038】
[0056]本発明の一実施形態では、シングルチャネル設計の各チャネル固有要素(例えば、レジスタ、定数、ROM、またはRAM)が、マルチチャネル入力の処理をパイプライン化する、対応する要素に置き換えられる。各レジスタ(またはフリップフロップ)は、シフトレジスタのカスケード接続に置き換えられるチャネル固有レジスタと見なすことが可能であるが、パイプラインレジスタは、非チャネル固有レジスタとして識別されることが可能である。パイプラインレジスタがシフトレジスタのカスケード接続に置き換えられない場合でも、時間多重化共有チャネル内のタイミングは、チャネルの入力に対して同期することが可能である。
【0039】
[0057]パイプラインレジスタの組は、システムグラフのフィードフォワード切断集合である。システムのフィードフォワード切断集合がそうであるように、パイプラインレジスタの組を除去すると、システムが、切断された2つのサブシステムに分割され、その2つのサブシステムの間に単一方向のデータフローがある。ただし、システム内に複数の入力および/または複数の出力がある場合、入力または出力を異なるサブシステムに分割する切断集合は、パイプラインレジスタの組として適格ではない。これは、そのような切断集合がマルチチャネル設計の生成時にパイプライン化されないと、同期が乱れる可能性があるからである。
【0040】
[0058]フィードフォワード切断集合は、当業者に知られている様々なアルゴリズムによって自動的に識別されることが可能である。例えば、Fran HalperinとUri Zwickが「Combinatorial approximation algorithms for the maximum directed cut problem」(Proceedings of 12th Symposium on Discrete Algorithms、1〜7頁、2001年)で説明した方法を用いて、フィードフォワード切断集合を決定することが可能である。グラフ理論の文献では、フィードフォワード切断集合は、しばしば、「有向カット(directed cutsまたはdicuts)」と呼ばれていることに注意されたい。最大数のレジスタを含むフィードフォワード切断集合を見つける場合は、Eran HalperinとUri Zwickによる、「最大有向カット」を見つける方法を用いることが可能である。
【0041】
[0059]図10は、本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。図10の設計は、パイプラインレジスタ1001〜1005を含む。フィードフォワード切断集合1011は、図10のシステムを、その間に単一方向のデータフローがある2つのサブシステムに分割する。したがって、レジスタ1001〜1005は、非チャネル固有として識別され、したがって、図10の設計におけるチャネル固有要素は、レジスタ231および233である。図10のチャネル固有レジスタ231および233がレジスタのカスケード接続に置き換えられて、図11の時間多重化リソース共有設計が生成される。
【0042】
[0060]図11は、本発明の一実施形態による、図10のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。図11では、パイプラインレジスタ1011は不変である。デマルチプレクサ703の動作をモジュロ−Nカウンタ705の状態と同期させるために、レジスタ1201が挿入され、これによるカウンタ705の出力の1サイクルの遅延が、切断集合1011による遅延の影響を相殺する。一般に、M組のパイプラインレジスタが非チャネル固有要素と識別された場合は、マルチプレクサとデマルチプレクサ(例えば、図11の701と703)の動作を同期させるために、モジュロ−Nカウンタの集合がmod(M,N)サイクル遅延される。また、図10のレジスタ231、1003、および1005が1組のパイプラインレジスタとして識別される可能性がある点にも注意されたい。この場合は、レジスタ1001および233がシフトレジスタのカスケード接続に置き換えられる。あるいは、パイプラインレジスタとして識別されるレジスタが図10にない場合は、図10のすべてのレジスタがレジスタのカスケード接続に置き換えられる。この場合、結果として得られる設計はN組のパイプラインレジスタを有し、mod(N,N)=0なので、モジュロ−Nカウンタ705の出力を遅延させるレジスタは不要である。
【0043】
[0061]シングルチャネルシステムのチャネル固有レジスタは、マルチチャネルシステムの生成時にN個のシフトレジスタのカスケード接続に置き換えられることが可能である。いくつかのFPGAアーキテクチャ(Xilinx Virtexなど)では、シフトレジスタはナチュラルプリミティブである。これにより、ターゲットアーキテクチャがこれらのFPGAアーキテクチャのいずれかであれば、非常に効率的なメモリの使い方が可能になる。各チャネル固有レジスタは、モジュロ−Nカウンタの状態に応じて中間結果をパイプライン移送することが可能な他のメモリ構成(例えば、NアイテムのデュアルポートRAM、RAMとシフトレジスタの組み合わせ、その他)に置き換えられることも可能であることを理解されたい。
【0044】
[0062]図12は、本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル回路の別の例を示す図である。図12の設計は、レジスタ1201、1203、231とレジスタ1205、233とを含むフィードフォワード切断集合1211および1213を含む。したがって、図12のすべてのレジスタは非チャネル固有として識別されることが可能であり、図13の設計の生成時にレジスタのカスケード接続に置き換えられるレジスタはない。
【0045】
[0063]図13は、本発明の一実施形態による、図12のシングルチャネル設計から自動的に生成されるマルチチャネルフィルタの例である。マルチプレクサ1301とデマルチプレクサ1303との間に2組のパイプラインレジスタがあるので、2サイクルの遅延を用いて、マルチチャネルフィルタの動作を同期させることが可能である。図13の設計では、2組のパイプラインレジスタによる遅延を補償するために、デマルチプレクサ1303の定数を2シフトだけ循環させている。したがって、モジュロ−Nカウンタがi(i=0,1,...,N−1)を出力すると、マルチプレクサ1301が信号Ii+1を入力として選択し、デマルチプレクサ1303がOmod(i−1,N)を出力する。
【0046】
[0064]上述の例から、時間共有設計において不変のままのパイプラインレジスタの組による遅延を補償するために、別の方法(例えば、遅延要素を挿入する、デマルチプレクサに用いる定数をシフトする、別の選択信号を生成する、またはこれらの組み合わせ)を用いることが可能であることが、当業者には明らかであろう。さらに、一般には、有限ステートマシン(FSM)(例えば、モジュロ−Nカウンタ)を用いて入力信号の時間多重化ならびに設計におけるリソース共有を制御することも可能である。
【0047】
[0065]上述の例は、単一入力と単一出力とを有するシングルチャネル設計を用いて示されているが、この説明から、複数入力と複数出力とを有するシングルチャネル設計にも、本発明の様々な実施形態の方法が適用可能であることが当業者には明らかであろう。さらに、Mチャネル設計(M>1)をシングルチャネル設計として扱うことにより、リソース共有を伴うN×Mチャネル設計を自動的に生成することが可能である。
【0048】
[0066]本発明の一実施形態では、複数のチャネルのリソース共有設計の生成時の、従来の方法(例えば、折り畳み変形、その他)による自動変形の前および/または後に、シングルチャネル設計が最適化される。
【0049】
[0067]図14は、本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法のフローチャートである。操作1401でシングルチャネル設計を受け取り、操作1403で、シングルチャネル設計を自動的に変形して時間多重化マルチチャネル設計を生成する。この変形はシングルチャネル設計に基づいており、シングルチャネルシステムの集合体より論理要素が少ないので、大量の計算を要する、高レベル並列処理の抽出操作が不要である。
【0050】
[0068]図15は、本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の詳細なフローチャートである。操作1501で、シングルチャネル回路の設計を受け取る。操作1503で、シングルチャネル回路の論理要素へのアクセスを時間多重化するために、Nステートの有限ステートマシン(FSM)(例えば、モジュロ−Nカウンタ)を生成する。操作1505で、Nチャネル入力を、FSMの状態に応じて、シングルチャネル回路への入力として多重化する多重化回路を生成する。操作1507で、シングルチャネル回路の各チャネル固有要素(例えば、RAM、ROM、定数、レジスタ、フリップフロップ)を、FSMの状態に応じて複数のチャネルについてアクセスされる、対応する要素に置き換える。操作1509で、FSMの状態に応じて、シングルチャネル回路の対応する出力からNチャネル出力を多重分離する多重分離回路を生成する。上述の変形の後に、シングルチャネル設計からマルチチャネル設計が生成される。
【0051】
[0069]図16は、本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の例である。操作1601で、シングルチャネル回路の設計を受け取る。操作1603で、モジュロ−Nカウンタの値がiであるときにチャネルi(i=0,1,...,N−l)の信号に対する操作が実施されるようにシングルチャネルの論理要素を制御する、そのモジュロ−Nカウンタを生成する。操作1605で、カウンタの値がiのときに、チャネルiの入力をシングルチャネル回路の入力として受け取るNアイテムのマルチプレクサを生成する。操作1607(オプション)で、シングルチャネル回路内の非チャネル固有の順次要素(例えば、フリップフロップ、レジスタ、ROM、定数、RAM)を識別する。操作1609で、シングルチャネル設計の各チャネル固有レジスタ(例えば、フリップフロップ)を、N個の順次要素(例えば、N個のシフトレジスタのカスケード接続、NアイテムのデュアルポートRAM、またはRAMとシフトレジスタの組み合わせ)に置き換える。操作1611で、サイズMの各チャネル固有メモリ(例えば、RAMまたはROM)を、サイズN×Mの新しいメモリに置き換える(新しいメモリのメモリアイテムN×j+iは、シングルチャネル回路においてメモリのアイテムjがアドレス指定されたときに、チャネルiに対してアドレス指定される)。操作1613で、各チャネル固有定数をNアイテムのROMメモリに置き換える(メモリアイテムiは、チャネルiの定数に対してアドレス指定される)。操作1615で、各チャネルに対して、シングルチャネル回路の対応する出力から出力を生成する、Nアイテムのデマルチプレクサを生成する。
【0052】
[0070]本発明の一実施形態では、マルチチャネル回路の自動生成時に導入されたレジスタを用いて回路のクロックレートを高めるために、リタイミングアルゴリズム(例えば、切断集合のリタイミングおよびパイプライン化、クロック周期の最小化のためのリタイミング(「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley Interscience、1999年、91〜118頁)で説明されている方法や、当業者に知られている他の方法など)をさらに用いる。
【0053】
[0071]回路設計の過程の中間段階(例えば、周辺機器のリタイミング時やアーキテクチャのリタイミング時)に、負遅延を有する負遅延レジスタを用いることが可能である。物理的な負遅延レジスタは存在しないが、負遅延レジスタは、設計の中間的状態におけるタイミング制約を表すものであることを理解されたい。負遅延レジスタは、設計プロセスの早い段階で用いることが可能であり、一般には、最終的なソリューションを達成するための回路設計の過程で除去される。
【0054】
[0072]本発明の一実施形態では、シングルチャネルシステムは、1つまたは複数の負遅延レジスタで特徴づけられ、負遅延レジスタは、普通のレジスタと同様の様式で変形されることが可能である。
【0055】
[0073]図17は、シングルチャネルシステムの例である。説明のために、レジスタ以外の要素の遅延は無視されている。各レジスタ(例えば、1731、1733、および1741)は、1単位の遅延を有する。要素1711、1713、および1715は定数であって、これらは時間的に変化しない。したがって、ライン1701の入力をI1(t)とすると、ライン1703の信号は、I1(t)×C3+I1(t−2)×C2+I1(t−2)×C1である。図17では、レジスタ1731が乗算器1721の中間結果を格納してI1(t−1)×C1を生成し、レジスタ1733が、乗算器1723の中間結果を格納してI1(t−1)×C1を生成する。レジスタ1741は、加算器1751の中間結果を格納してI1(t−2)×C2+I1(t−2)×C1を生成する。
【0056】
[0074]乗算器1725と加算器1753との間の経路に正遅延レジスタと負遅延レジスタのペアを挿入することが可能である。挿入すると、図17の回路が図18の回路に変形される。図18では、レジスタ1743が負遅延レジスタであり、レジスタ1735が普通のレジスタ(正遅延レジスタ)である。図18では、レジスタ1731、1733、および1735が、1組のパイプラインレジスタである。このパイプラインレジスタの組(1731、1733、および1735)を除去するとシングルチャネル回路の遅延が変わることに注意されたい(この変化が許容されるか望ましい場合もある)。あるいは、図19の点1701の前にレジスタ(図19には示されず)を挿入して、図18の回路と同じ遅延を有するシングルチャネル回路にすることが可能であることにも注意されたい。したがって、図18のシングルチャネル回路を、図19のシングルチャネル回路として指定することが可能である。図19で、ライン1701の入力がI1(t)であるとすると、ライン1703の出力は、I1(t+1)×C3+I1(t−1)×C2+I1(t−1)×C1である。したがって、1単位のタイミングシフトを別にすれば、図19の回路は、本質的に図17(または図18)の回路としての機能を実施する。図19の回路が入力として指定された場合は、マルチチャネル回路を自動的に生成することが可能である。レジスタ1741および1743はパイプラインレジスタではなく、これらはカスケード接続された複数のレジスタに置き換えられることが可能である。図20は、図19を入力して自動的に生成された2チャネル回路の例である。図19の負遅延レジスタ1743は、カスケード接続された負遅延レジスタ1771および1773に置き換えられ、図19のレジスタ1741は、カスケード接続されたレジスタ1761および1763に置き換えられる。入力信号を一度に1つずつ共有チャネルに供給するためにマルチプレクサ1705が追加され、共有チャネルから出力を一度に1つずつ復元するためにデマルチプレクサ1707が追加される。マルチチャネル回路が生成された後、リタイミングアルゴリズム(例えば、「VLSI digital signal processing systems: design and implementation」(Keshab K.Parhi、Wiley Interscience、1999年、91〜118頁)で説明されている方法や、当業者に知られている他の方法など)を用いてシステムを最適化することが可能である。例えば、負遅延レジスタを除去するためにパイプラインレジスタの出力を挿入することが可能である。例えば、乗算器1721、1723、および1725の後に2組のパイプラインレジスタを挿入して、図21の回路を生成することが可能である。前述のとおり、一般に、パイプラインレジスタの組を挿入したり削除したりすると、ライン1703の出力の生成のタイミングが変わるので、適切な数のレジスタ(または遅延要素)をライン1709に用いて(図11に示されるように)デマルチプレクサ1707の制御信号のタイミングを調整することが可能であり、(図13に示されるように)制御信号と出力ラインとの間の対応関係を調整することが可能であることに注意されたい。本発明の実施形態によれば、図21の回路は、図17の回路から直接生成されることが可能である。図20の乗算器1725と加算器1751の後にも2組のパイプラインレジスタを挿入して負遅延レジスタを除去できることに注意されたい。
【0057】
[0075]さらに、本発明の一実施形態では、パイプラインレジスタを識別する過程で、正遅延レジスタおよび負遅延レジスタの1つまたは複数のペアがシングルチャネルシステムに導入される。例えば、マルチチャネル回路の生成のために図17のシングルチャネル回路を受け取った後、パイプラインレジスタの識別のために正遅延レジスタと負遅延レジスタのペア(例えば、図18の1735および1743)を挿入することが可能である。図18に示されるように、普通のレジスタ1735と負遅延レジスタ1743とが挿入されると、パイプラインレジスタの組(1731、1733、および1735)の識別が可能になる。したがって、図18のレジスタ1741および1743だけが、対応する、カスケード接続されたレジスタに置き換えられる。同様に、マルチチャネル回路の自動生成の回路を、リタイミングアルゴリズムを用いてさらに最適化することが可能である。
【0058】
[0076]図22〜25は、本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。図22のシングルチャネルフィルタは、パイプライン化された加算器1847(A2)と、パイプライン化された乗算器1841〜1843(M1〜M3)とを有する。パイプライン化された加算器にはレジスタが組み込まれている。例えば、パイプライン化された加算器1847はレジスタ1865を有し、レジスタ1865はパイプライン化された加算器の物理的な一部であって、分離不可能である。同様に、パイプライン化された乗算器にもレジスタが組み込まれている(例えば、パイプライン化された乗算器1841、1842、および1843には、レジスタ1831、1833、および1835がそれぞれ組み込まれている)。
【0059】
[0077]加算器1851を実装するために、パイプライン化された加算器が用いられるとする。加算器1851にレジスタを与えるために、負遅延レジスタを用いないのであれば、(例えば、加算器1853の両方の入力ラインに)普通のレジスタの組を追加することが可能である。そのような方法では、シングルチャネルシステムの遅延が増える可能性がある。別の方法として、図23は、加算器1851と1853との間に正遅延レジスタおよび負遅延レジスタ(1861および1863)を追加する例を示している。したがって、加算器1851とレジスタ1861とを、パイプライン化された加算器1845(A1)として実装することが可能である。リタイミングを実行してもシングルチャネルシステムの負遅延レジスタを除去することができないことに注意されたい。
【0060】
[0078]本発明の実施形態によれば、マルチチャネル回路を自動的に生成することが可能である。例えば、図23は、2チャネル回路について、本発明の一実施形態に従って生成されたマルチチャネル回路の時間共有部分を示している。2チャネル回路の、入力を多重化する部分と、出力を多重分離する部分とは、図24に示されていないので注意されたい。レジスタ1831、1833、および1835は、図23においてチャネル固有であり、レジスタ1832、1834、および1836は、図24においてマルチチャネル回路のために挿入される。同様に、図23のレジスタ1861および1863は、図24の、カスケード接続されたレジスタの組(1861、1862、および1863と1864)に置き換えられる。
【0061】
[0079]本発明の一実施形態に従って生成される2チャネル回路では、パイプライン化された演算器のそれぞれに対して追加レジスタが生成される。そして、負遅延レジスタを除去するためにリタイミング操作が行われる。例えば、リタイミング操作では、図24のレジスタ1832および1834を加算器1851と1853との間の経路に移動して、加算器1851と1853との間の経路に、負レジスタ(1863および1864)を相殺するのに十分な、普通のレジスタがあるようにすることが可能である。そのようにして2チャネル回路が得られる例を図25に示す。図25では、乗算器2821、1823、および1825と、加算器1851および1853とを、対応する、パイプライン化された演算器(パイプライン化された乗算器1841、1842、および1843と、パイプライン化された加算器1845および1847)として実装することが可能である。ただし、負遅延レジスタはすべて、リタイミング後に除去される。
【0062】
[0080]上述の例では、パイプライン化された加算器と、パイプライン化された乗算器とを示した。しかしながら、次の説明から、他のパイプライン化された論理要素やパイプライン化されたIPブロックも同様に扱うことが可能であることを理解されよう。
【0063】
[0081]本発明の一実施形態では、パイプラインレジスタの組が識別されず、すべてのレジスタがチャネル固有であると見なされる。例えば、シングルチャネルシステムをNチャネルシステムに自動的に変形する方法は、以下の操作を含む。
【0064】
[0082]1.モジュロ−NカウンタをNステートの有限ステートマシン(FSM)として生成する。FSMのステート変数はcntで表される。システムのm番目のチャネル((0≦m≦N−1)は、FSMがm番目の状態のとき(例えば、cnt=mであるとき)に有効にアクティブ化される。
【0065】
[0083]2.各レジスタを、N個のシフトレジスタのカスケード接続に置き換える(あるいは、Nが大きい場合は、各レジスタを、NアイテムのデュアルポートRAMか、RAMとシフトレジスタの組み合わせに置き換えることが可能である)。
【0066】
[0084]3.サイズMの各RAMメモリを、サイズN×MのRAMメモリに置き換える。アドレス生成回路は、シングルチャネル設計のメモリアイテムAがアドレスN×A+cntのアイテムに置き換えられるように、メモリアイテムをアドレス指定するよう修正または追加される。新しいメモリからの出力がFSMの状態と同期するようにメモリアイテムを論理的にパイプライン化するために、他のアドレス変換方式を用いることも可能であることを理解されたい。一般に、変換されたアドレスは、元のアドレス、FSMの状態、およびアクティブなチャネルの番号の関数である。
【0067】
[0085]4.チャネル固有のROMがある場合(例えば、ROMの内容がチャネルごとに異なる場合)は、ROMアイテムN×A+mがm番目のチャネルのROMアイテムAの内容を保持するように、RAMの場合と同様の変形を適用する。ROMがチャネル固有でない場合、変形は不要である。
【0068】
[0086]5.チャネル固有の定数がある場合(例えば、チャネルごとに定数の値が異なる場合)は、その定数を、NアイテムのROMに置き換える。ROMのアドレスラインはcntで駆動される(ROMアクセスに1クロックの遅延がある場合はcnt−1で駆動される)。定数がチャネル固有でない場合、変形は不要である。
【0069】
[0087]異なるチャネルの入力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の入力ポートを有する場合は、これらの入力を、cntで駆動される選択ラインを有する、Nアイテムのマルチプレクサで多重化する。cntは、入力を駆動するクロックよりN倍高速である。同様に、異なるチャネルの出力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の出力ポートを有する場合は、これらの出力を、cntで駆動される選択ラインを有する、Nアイテムのデコーダで多重分離する。この出力は、N倍低速なクロックでラッチされることが可能である。シングルチャネル設計の他のコンポーネントは、時間多重化されている間中、現状のまま、共有リソースとして保持される。
【0070】
[0088]本発明の別の実施形態では、レジスタの生成を避けるためにパイプラインレジスタの組が識別される。例えば、シングルチャネルシステムをNチャネルシステムに自動的に変形する方法は、以下の操作を含む。
【0071】
[0089]1.可能な限り多くの、かつ幅広のレジスタをカバーするために、システム内のパイプラインレジスタを識別する。パイプラインレジスタの組が複数存在してもよいが、それらの組は相互に排他的でなければならない。どのパイプラインレジスタの組にも分類されないレジスタはすべて状態レジスタである。パイプラインレジスタは非チャネル固有であり、状態レジスタはチャネル固有である。P個の個別のパイプラインレジスタの組が存在する場合、システムは、まとまりのないP+1個のサブシステムに分割されており、サブシステムが単体でリンクされたリストが形成されている。このリストでは、各フィードフォワード切断集合が、リンクを、データフローの方向を示すリンク方向とともに定義している。リンクされたリストでの順番がi(0≦i≦P)であるサブシステムをSiで表す。
【0072】
[0090]2.少なくとも1つのモジュロ−NカウンタからP+1個のNステートの有限ステートマシン(FSM)を生成する。i番目のFSM(0≦i≦P)の状態変数をcntiで表す。i番目のFSMがm番目の状態にある場合(例えば、cnti=mの場合)、サブシステムSiのハードウェアは、m番目のチャネル(0≦m≦N−1)のデータを処理する。[0,P]における∀i,jに対してmod((cnti−cntj),N)=mod((j−i),N)であれば、サブシステム間で適正な同期が維持される。この関係は、cntiがcnti−1を1クロック遅延させたものである場合に成り立つ(i=1,2,...,N−1)。したがって、cntiは、レジスタを用いてcnti−1から導出されることが可能であり、FSMは、1つのモジュロ−Nカウンタとレジスタのカスケード接続とを用いて実装されることが可能である。
【0073】
[0091]3.各状態レジスタを、N個のシフトレジスタのカスケード接続に置き換える(あるいは、Nが大きい場合は、各状態レジスタを、NアイテムのデュアルポートRAMか、RAMとシフトレジスタの組み合わせに置き換えることが可能である)。
【0074】
[0092]4.サイズMの各RAMメモリを、サイズN_MのRAMメモリに置き換える。サブシステムSi内のRAMに関しては、シングルチャネル設計のメモリアイテムAが、アドレスN_A+cntiにあるアイテムに置き換えられるようにメモリアイテムをアドレス指定するよう、アドレス生成回路が修正または追加される。新しいメモリからの出力がi番目のFSMの状態と同期するようにメモリアイテムを論理的にパイプライン化するために、他のアドレス変換方式を用いることも可能であることを理解されたい。一般に、変換されたアドレスは、元のアドレス、i番目のFSMの状態、およびアクティブなチャネルの番号の関数である。
【0075】
[0093]5.チャネル固有のROMがある場合(例えば、ROMの内容がチャネルごとに異なる場合)は、ROMアイテムN_A+mがm番目のチャネルのROMアイテムAの内容を保持するように、RAMの場合と同様の変形を適用する。ROMがチャネル固有でない場合、変形は不要である。
【0076】
[0094]6.サブシステムSi内にチャネル固有の定数がある場合(例えば、チャネルごとに定数の値が異なる場合)は、その定数を、NアイテムのROMに置き換える。ROMのアドレスラインはcntiで駆動される(ROMアクセスに1クロックの遅延がある場合はcnti−1で駆動される)。定数がチャネル固有でない場合、変形は不要である。
【0077】
[0095]異なるチャネルの入力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の入力ポートを有する場合は、これらの入力を、cnt0で駆動される選択ラインを有する、Nアイテムのマルチプレクサで多重化する。cnt0は、入力を駆動するクロックよりN倍高速である。同様に、異なるチャネルの出力を共通ポートで多重化することが可能である。複数のチャネルがそれぞれ別々の出力ポートを有する場合は、これらの出力を、cntpで駆動される選択ラインを有する、Nアイテムのデコーダで多重分離する。この出力は、N倍低速なクロックでラッチされることが可能である。シングルチャネル設計の他のコンポーネントは、時間多重化されている間中、現状のまま、共有リソースとして保持される。
【0078】
[0096]P+1個のNステートの有限ステートマシンを用いればP+1個のサブシステムのタイミングを個別に制御することが可能であるが、別の方法として、単一のNステートのFSMを用いてすべてのサブシステムの動作を制御することが可能である。この場合、所与のチャネルに対して、FSMの状態が別の値に達すると、別のサブシステムが処理を行う。例えば、FSMが状態cnt=mod(m−1,N)の場合には、サブシステムSiのハードウェアがm番目のチャネル(0≦m≦N−1)のデータを処理する。
【0079】
[0097]パイプラインレジスタの組は、タイミング制限が許せば、識別および除去されることが可能である。例えば、図10のパイプラインレジスタの組1011は、図2の設計を生成するために除去されることが可能であり、図11のパイプラインレジスタの組1011は、図7の設計を生成するために自動的に除去されることが可能である。同様に、パイプラインレジスタが自動的に設計に追加されることも可能である。一般には、パイプラインレジスタを追加したり削除したりすると、回路の入力から出力までの遅延が変わることに注意されたい。ただし、そのような変化は許容されることが多い。
【0080】
[0098]本発明の一実施形態では、実行時に構成可能な深さを有するシフトレジスタを用い、実行時に構成可能な法を有するモジュロ−Nカウンタを用いると、動作を中断させることなく、折り畳みレートNを実行時に変更することが可能である。アクティブチャネルの数が動的なパラメータである用途では、折り畳みレートをアクティブチャネルの数に適応させて、状況が許すときに、電力消費を抑えるためにクロックレートを下げることが可能である。
【0081】
[0099]したがって、本発明の少なくとも1つの実施形態は、入力されたシングルチャネルシステムの設計からマルチチャネルシステムの設計を自動的に生成する。シングルチャネルシステムの設計は、論理(計算)ユニットの時間多重化リソース共有を伴うNチャネルシステムに自動的に変形される。この変形はシンプルで非常に高速であり、得られる設計のハードウェアは非常に効率的である。
【0082】
[00100]本発明の様々な実施形態の方法によりシングルチャネル設計から時間多重化マルチチャネル設計が生成されるので、より少ない数の論理要素に対して最適化および合成の操作を高速で実施することが可能である。制御論理の使い方については、最小限にすることが可能である。一部のFPGAアーキテクチャでは、合成されたシステムのメモリの使い方を非常に効率的にすることが可能である。さらに、本発明の様々な方法が、高次のパイプラインと大幅な高速化を想定している。
【0083】
[00101]本明細書ではここまで、本発明の特定の例示的実施形態を参照しながら本発明について説明してきた。添付の特許請求項で示されている、本発明の広い趣旨および範囲を逸脱することなく、様々な修正を本発明に施しうることは明らかであろう。したがって、本明細書および添付図面は、制限の意味ではなく例示の意味で解釈されるべきである。
【図面の簡単な説明】
【0084】
【図1】本発明に使用可能なデータ処理システムのブロック図の例である。
【図2】本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能なシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。
【図3】図2の例の様々な場所での信号波形を示す図である。
【図4】図2のシングルチャネルフィルタの集合体に対応する2チャネルフィルタの例を示す図である。
【図5】本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成される2チャネルフィルタの例である。
【図6】図5の例の様々な場所での信号波形を示す図である。
【図7】本発明の一実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。
【図8】本発明の一実施形態による、マルチチャネルフィルタの出力を多重分離する出力デコーダおよびラッチ回路の例を示す図である。
【図9】本発明の代替実施形態による、図2のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの別の例である。
【図10】本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル3タップ有限インパルス応答(FIR)フィルタの例を示す図である。
【図11】本発明の一実施形態による、図10のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。
【図12】本発明の一実施形態による、マルチチャネルフィルタを自動的に生成することが可能な、パイプラインレジスタを有するシングルチャネル回路の別の例を示す図である。
【図13】本発明の一実施形態による、図12のシングルチャネルフィルタから自動的に生成されるマルチチャネルフィルタの例である。
【図14】本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法のフローチャートである。
【図15】本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の詳細なフローチャートである。
【図16】本発明の一実施形態による、シングルチャネル回路からマルチチャネル回路を生成する方法の例である。
【図17】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図18】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図19】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図20】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図21】本発明の一実施形態による、負遅延レジスタを有するシングルチャネル回路からマルチチャネル回路を生成する例を示す図である。
【図22】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【図23】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【図24】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【図25】本発明の一実施形態による、負遅延レジスタを用いたシングルチャネル回路からマルチチャネル回路を生成する別の例を示す図である。
【特許請求の範囲】
【請求項1】
デジタル回路を設計する方法であって、
シングルチャネル回路である第1の設計を受け取るステップと、
前記シングルチャネル回路を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成するステップと
を含む方法。
【請求項2】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項1に記載の方法。
【請求項3】
前記時間多重化マルチチャネル回路をリタイミングするステップをさらに含む、請求項1に記載の方法。
【請求項4】
クロック周波数を上げるために、前記時間多重化マルチチャネル回路がリタイミングされる、請求項3に記載の方法。
【請求項5】
前記時間多重化マルチチャネル回路内のパイプラインレジスタの組を識別するステップと、
前記パイプラインレジスタの組を除去するステップと
をさらに含む、請求項1に記載の方法。
【請求項6】
前記時間多重化マルチチャネル回路にパイプラインレジスタの組を挿入するステップをさらに含む、請求項1に記載の方法。
【請求項7】
前記変形するステップが、
複数のチャネルによる前記第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)を生成するステップを含む、請求項1に記載の方法。
【請求項8】
前記変形するステップが、
前記第1の設計の入力ラインへの、前記複数のチャネル用の複数の入力を時間多重化するために、多重化回路を生成するステップをさらに含む、請求項7に記載の方法。
【請求項9】
前記変形するステップが、
前記第1の設計の出力ラインからの信号を、複数のチャネル用の複数の出力に時間多重分離するために、多重分離回路を生成するステップをさらに含む、請求項7に記載の方法。
【請求項10】
前記変形するステップが、
前記第1の設計内のチャネル固有要素を、対応する複数の要素に置き換えるステップをさらに含み、前記対応する複数の要素のそれぞれが、前記FSMの状態に応じて前記複数のチャネルの1つに対してアクセスされる、請求項7に記載の方法。
【請求項11】
前記チャネル固有要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項10に記載の方法。
【請求項12】
前記チャネル固有要素がチャネル固有順次要素である、請求項10に記載の方法。
【請求項13】
非チャネル固有順次要素を識別するステップをさらに含む、請求項12に記載の方法。
【請求項14】
前記非チャネル固有順次要素がパイプラインレジスタの組を含む、請求項13に記載の方法。
【請求項15】
前記チャネル固有順次要素が、複数の移動順次要素のカスケード接続に置き換えられる、請求項12に記載の方法。
【請求項16】
前記チャネル固有順次要素が、前記FSMの状態に応じてアドレス指定される複数のメモリ要素に置き換えられる、請求項12に記載の方法。
【請求項17】
順次要素の、いくつかのフィードフォワード切断集合を、非チャネル固有の順次要素として決定するステップをさらに含む、請求項12に記載の方法。
【請求項18】
前記変形するステップが、
前記第2の設計を生成するために、前記第1の設計内の順次要素を、対応する要素に置き換えるステップを含み、前記対応する要素が、複数のチャネルからの信号を処理するタイミングに従って前記第2の設計内で順次アクセスされる、請求項1に記載の方法。
【請求項19】
前記対応する要素が順次アドレス指定される、請求項18に記載の方法。
【請求項20】
前記対応する要素が順次アドレス指定される、請求項18に記載の方法。
【請求項21】
前記順次要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項18に記載の方法。
【請求項22】
デジタル処理システムで実行されたときに、デジタル回路を設計する方法を前記システムに実施させる、実行可能なコンピュータプログラム命令を格納するマシン可読媒体であって、前記方法が、
シングルチャネル回路である第1の設計を受け取るステップと、
前記シングルチャネル回路を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成するステップと
を含む媒体。
【請求項23】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項22に記載の媒体。
【請求項24】
前記方法が、前記時間多重化マルチチャネル回路をリタイミングするステップをさらに含む、請求項22に記載の媒体。
【請求項25】
クロック周波数を上げるために、前記時間多重化マルチチャネル回路がリタイミングされる、請求項24に記載の媒体。
【請求項26】
前記方法が、
前記時間多重化マルチチャネル回路内のパイプラインレジスタの組を識別するステップと、
前記パイプラインレジスタの組を除去するステップとをさらに含む、請求項22に記載の媒体。
【請求項27】
前記方法が、
前記時間多重化マルチチャネル回路にパイプラインレジスタの組を挿入するステップをさらに含む、請求項22に記載の媒体。
【請求項28】
前記変形するステップが、
複数のチャネルによる前記第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)を生成するステップを含む、請求項22に記載の媒体。
【請求項29】
前記変形するステップが、
前記第1の設計の入力ラインへの、前記複数のチャネル用の複数の入力を時間多重化するために、多重化回路を生成するステップをさらに含む、請求項28に記載の媒体。
【請求項30】
前記変形するステップが、
前記第1の設計の出力ラインからの信号を、複数のチャネル用の複数の出力に時間多重分離するために、多重分離回路を生成するステップをさらに含む、請求項28に記載の媒体。
【請求項31】
前記変形するステップが、
前記第1の設計内のチャネル固有要素を、対応する複数の要素に置き換えるステップをさらに含み、前記対応する複数の要素のそれぞれが、前記FSMの状態に応じて前記複数のチャネルの1つに対してアクセスされる、請求項28に記載の媒体。
【請求項32】
前記チャネル固有要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項31に記載の媒体。
【請求項33】
前記チャネル固有要素がチャネル固有順次要素である、請求項31に記載の媒体。
【請求項34】
前記方法が、
非チャネル固有順次要素を識別するステップをさらに含む、請求項33に記載の媒体。
【請求項35】
前記非チャネル固有順次要素がパイプラインレジスタの組を含む、請求項34に記載の媒体。
【請求項36】
前記チャネル固有順次要素が、複数の移動順次要素のカスケード接続に置き換えられる、請求項33に記載の媒体。
【請求項37】
前記チャネル固有順次要素が、前記FSMの状態に応じてアドレス指定される複数のメモリ要素に置き換えられる、請求項33に記載の媒体。
【請求項38】
前記方法が、
順次要素の、いくつかのフィードフォワード切断集合を、非チャネル固有の順次要素として決定するステップをさらに含む、請求項33に記載の媒体。
【請求項39】
前記変形するステップが、
前記第2の設計を生成するために、前記第1の設計内の順次要素を、対応する要素に置き換えるステップを含み、前記対応する要素が、複数のチャネルからの信号を処理するタイミングに従って前記第2の設計内で順次アクセスされる、請求項22に記載の媒体。
【請求項40】
前記対応する要素が順次アドレス指定される、請求項39に記載の媒体。
【請求項41】
前記対応する要素が順次アドレス指定される、請求項39に記載の媒体。
【請求項42】
前記順次要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項39に記載の媒体。
【請求項43】
デジタル回路を設計するデジタル処理システムであって、
シングルチャネル回路である第1の設計を受け取る手段と、
前記シングルチャネル回路を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成する手段と
を備えるデジタル処理システム。
【請求項44】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項43に記載のデジタル処理システム。
【請求項45】
前記時間多重化マルチチャネル回路をリタイミングする手段をさらに備える、請求項43に記載のデジタル処理システム。
【請求項46】
クロック周波数を上げるために、前記時間多重化マルチチャネル回路がリタイミングされる、請求項45に記載のデジタル処理システム。
【請求項47】
前記時間多重化マルチチャネル回路内のパイプラインレジスタの組を識別する手段と、
前記パイプラインレジスタの組を除去する手段とをさらに備える、請求項43に記載のデジタル処理システム。
【請求項48】
前記時間多重化マルチチャネル回路にパイプラインレジスタの組を挿入する手段をさらに備える、請求項43に記載のデジタル処理システム。
【請求項49】
前記変形する手段が、
複数のチャネルによる前記第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)を生成する手段を備える、請求項43に記載のデジタル処理システム。
【請求項50】
前記変形する手段が、
前記第1の設計の入力ラインへの、前記複数のチャネル用の複数の入力を時間多重化するために、多重化回路を生成する手段をさらに備える、請求項49に記載のデジタル処理システム。
【請求項51】
前記変形する手段が、
前記第1の設計の出力ラインからの信号を、複数のチャネル用の複数の出力に時間多重分離するために、多重分離回路を生成する手段をさらに備える、請求項49に記載のデジタル処理システム。
【請求項52】
前記変形する手段が、
前記第1の設計内のチャネル固有要素を、対応する複数の要素に置き換える手段をさらに備え、前記対応する複数の要素のそれぞれが、前記FSMの状態に応じて前記複数のチャネルの1つに対してアクセスされる、請求項49に記載のデジタル処理システム。
【請求項53】
前記チャネル固有要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを備える、請求項52に記載のデジタル処理システム。
【請求項54】
前記チャネル固有要素がチャネル固有順次要素である、請求項52に記載のデジタル処理システム。
【請求項55】
非チャネル固有順次要素を識別する手段をさらに備える、請求項54に記載のデジタル処理システム。
【請求項56】
前記非チャネル固有順次要素がパイプラインレジスタの組を含む、請求項55に記載のデジタル処理システム。
【請求項57】
前記チャネル固有順次要素が、複数の移動順次要素のカスケード接続に置き換えられる、請求項54に記載のデジタル処理システム。
【請求項58】
前記チャネル固有順次要素が、前記FSMの状態に応じてアドレス指定される複数のメモリ要素に置き換えられる、請求項54に記載のデジタル処理システム。
【請求項59】
順次要素の、いくつかのフィードフォワード切断集合を、非チャネル固有の順次要素として決定する手段をさらに備える、請求項54に記載のデジタル処理システム。
【請求項60】
前記変形する手段が、
前記第2の設計を生成するために、前記第1の設計内の順次要素を、対応する要素に置き換える手段を備え、前記対応する要素が、複数のチャネルからの信号を処理するタイミングに従って前記第2の設計内で順次アクセスされる、請求項43に記載のデジタル処理システム。
【請求項61】
前記対応する要素が順次アドレス指定される、請求項60に記載のデジタル処理システム。
【請求項62】
前記対応する要素が順次アドレス指定される、請求項60に記載のデジタル処理システム。
【請求項63】
前記順次要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを備える、請求項60に記載のデジタル処理システム。
【請求項64】
デジタル回路を設計する方法であって、
シングルチャネル回路である第1の設計を受け取るステップと、
前記第1の設計のシングルチャネル回路の集合体と、シングルチャネル回路の前記集合体の中の並列処理を示す情報とを生成するステップと、
時間多重化マルチチャネル回路である第2の設計を生成するために、前記情報を用いて、シングルチャネル回路の前記集合体に折り畳み変形を適用するステップと
を含む方法。
【請求項65】
前記情報が、折り畳みの集合の情報を含む、請求項64に記載の方法。
【請求項66】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項64に記載の方法。
【請求項67】
デジタル処理システムで実行されたときに、デジタル回路を設計する方法を前記システムに実施させる、実行可能なコンピュータプログラム命令を格納するマシン可読媒体であって、前記方法が、
シングルチャネル回路である第1の設計を受け取るステップと、
前記第1の設計のシングルチャネル回路の集合体と、シングルチャネル回路の前記集合体の中の並列処理を示す情報とを生成するステップと、
時間多重化マルチチャネル回路である第2の設計を生成するために、前記情報を用いて、シングルチャネル回路の前記集合体に折り畳み変形を適用するステップと
を含む媒体。
【請求項68】
前記情報が、折り畳みの集合の情報を含む、請求項67に記載の媒体。
【請求項69】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項67に記載の媒体。
【請求項70】
デジタル回路を設計するデジタル処理システムであって、
シングルチャネル回路である第1の設計を受け取る手段と、
前記第1の設計のシングルチャネル回路の集合体と、シングルチャネル回路の前記集合体の中の並列処理を示す情報とを生成する手段と、
時間多重化マルチチャネル回路である第2の設計を生成するために、前記情報を用いて、シングルチャネル回路の前記集合体に折り畳み変形を適用する手段と
を備えるデジタル処理システム。
【請求項71】
前記情報が、折り畳みの集合の情報を含む、請求項70に記載のデジタル処理システム。
【請求項72】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項70に記載のデジタル処理システム。
【請求項1】
デジタル回路を設計する方法であって、
シングルチャネル回路である第1の設計を受け取るステップと、
前記シングルチャネル回路を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成するステップと
を含む方法。
【請求項2】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項1に記載の方法。
【請求項3】
前記時間多重化マルチチャネル回路をリタイミングするステップをさらに含む、請求項1に記載の方法。
【請求項4】
クロック周波数を上げるために、前記時間多重化マルチチャネル回路がリタイミングされる、請求項3に記載の方法。
【請求項5】
前記時間多重化マルチチャネル回路内のパイプラインレジスタの組を識別するステップと、
前記パイプラインレジスタの組を除去するステップと
をさらに含む、請求項1に記載の方法。
【請求項6】
前記時間多重化マルチチャネル回路にパイプラインレジスタの組を挿入するステップをさらに含む、請求項1に記載の方法。
【請求項7】
前記変形するステップが、
複数のチャネルによる前記第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)を生成するステップを含む、請求項1に記載の方法。
【請求項8】
前記変形するステップが、
前記第1の設計の入力ラインへの、前記複数のチャネル用の複数の入力を時間多重化するために、多重化回路を生成するステップをさらに含む、請求項7に記載の方法。
【請求項9】
前記変形するステップが、
前記第1の設計の出力ラインからの信号を、複数のチャネル用の複数の出力に時間多重分離するために、多重分離回路を生成するステップをさらに含む、請求項7に記載の方法。
【請求項10】
前記変形するステップが、
前記第1の設計内のチャネル固有要素を、対応する複数の要素に置き換えるステップをさらに含み、前記対応する複数の要素のそれぞれが、前記FSMの状態に応じて前記複数のチャネルの1つに対してアクセスされる、請求項7に記載の方法。
【請求項11】
前記チャネル固有要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項10に記載の方法。
【請求項12】
前記チャネル固有要素がチャネル固有順次要素である、請求項10に記載の方法。
【請求項13】
非チャネル固有順次要素を識別するステップをさらに含む、請求項12に記載の方法。
【請求項14】
前記非チャネル固有順次要素がパイプラインレジスタの組を含む、請求項13に記載の方法。
【請求項15】
前記チャネル固有順次要素が、複数の移動順次要素のカスケード接続に置き換えられる、請求項12に記載の方法。
【請求項16】
前記チャネル固有順次要素が、前記FSMの状態に応じてアドレス指定される複数のメモリ要素に置き換えられる、請求項12に記載の方法。
【請求項17】
順次要素の、いくつかのフィードフォワード切断集合を、非チャネル固有の順次要素として決定するステップをさらに含む、請求項12に記載の方法。
【請求項18】
前記変形するステップが、
前記第2の設計を生成するために、前記第1の設計内の順次要素を、対応する要素に置き換えるステップを含み、前記対応する要素が、複数のチャネルからの信号を処理するタイミングに従って前記第2の設計内で順次アクセスされる、請求項1に記載の方法。
【請求項19】
前記対応する要素が順次アドレス指定される、請求項18に記載の方法。
【請求項20】
前記対応する要素が順次アドレス指定される、請求項18に記載の方法。
【請求項21】
前記順次要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項18に記載の方法。
【請求項22】
デジタル処理システムで実行されたときに、デジタル回路を設計する方法を前記システムに実施させる、実行可能なコンピュータプログラム命令を格納するマシン可読媒体であって、前記方法が、
シングルチャネル回路である第1の設計を受け取るステップと、
前記シングルチャネル回路を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成するステップと
を含む媒体。
【請求項23】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項22に記載の媒体。
【請求項24】
前記方法が、前記時間多重化マルチチャネル回路をリタイミングするステップをさらに含む、請求項22に記載の媒体。
【請求項25】
クロック周波数を上げるために、前記時間多重化マルチチャネル回路がリタイミングされる、請求項24に記載の媒体。
【請求項26】
前記方法が、
前記時間多重化マルチチャネル回路内のパイプラインレジスタの組を識別するステップと、
前記パイプラインレジスタの組を除去するステップとをさらに含む、請求項22に記載の媒体。
【請求項27】
前記方法が、
前記時間多重化マルチチャネル回路にパイプラインレジスタの組を挿入するステップをさらに含む、請求項22に記載の媒体。
【請求項28】
前記変形するステップが、
複数のチャネルによる前記第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)を生成するステップを含む、請求項22に記載の媒体。
【請求項29】
前記変形するステップが、
前記第1の設計の入力ラインへの、前記複数のチャネル用の複数の入力を時間多重化するために、多重化回路を生成するステップをさらに含む、請求項28に記載の媒体。
【請求項30】
前記変形するステップが、
前記第1の設計の出力ラインからの信号を、複数のチャネル用の複数の出力に時間多重分離するために、多重分離回路を生成するステップをさらに含む、請求項28に記載の媒体。
【請求項31】
前記変形するステップが、
前記第1の設計内のチャネル固有要素を、対応する複数の要素に置き換えるステップをさらに含み、前記対応する複数の要素のそれぞれが、前記FSMの状態に応じて前記複数のチャネルの1つに対してアクセスされる、請求項28に記載の媒体。
【請求項32】
前記チャネル固有要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項31に記載の媒体。
【請求項33】
前記チャネル固有要素がチャネル固有順次要素である、請求項31に記載の媒体。
【請求項34】
前記方法が、
非チャネル固有順次要素を識別するステップをさらに含む、請求項33に記載の媒体。
【請求項35】
前記非チャネル固有順次要素がパイプラインレジスタの組を含む、請求項34に記載の媒体。
【請求項36】
前記チャネル固有順次要素が、複数の移動順次要素のカスケード接続に置き換えられる、請求項33に記載の媒体。
【請求項37】
前記チャネル固有順次要素が、前記FSMの状態に応じてアドレス指定される複数のメモリ要素に置き換えられる、請求項33に記載の媒体。
【請求項38】
前記方法が、
順次要素の、いくつかのフィードフォワード切断集合を、非チャネル固有の順次要素として決定するステップをさらに含む、請求項33に記載の媒体。
【請求項39】
前記変形するステップが、
前記第2の設計を生成するために、前記第1の設計内の順次要素を、対応する要素に置き換えるステップを含み、前記対応する要素が、複数のチャネルからの信号を処理するタイミングに従って前記第2の設計内で順次アクセスされる、請求項22に記載の媒体。
【請求項40】
前記対応する要素が順次アドレス指定される、請求項39に記載の媒体。
【請求項41】
前記対応する要素が順次アドレス指定される、請求項39に記載の媒体。
【請求項42】
前記順次要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを含む、請求項39に記載の媒体。
【請求項43】
デジタル回路を設計するデジタル処理システムであって、
シングルチャネル回路である第1の設計を受け取る手段と、
前記シングルチャネル回路を自動的に変形して、時間多重化マルチチャネル回路である第2の設計を生成する手段と
を備えるデジタル処理システム。
【請求項44】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項43に記載のデジタル処理システム。
【請求項45】
前記時間多重化マルチチャネル回路をリタイミングする手段をさらに備える、請求項43に記載のデジタル処理システム。
【請求項46】
クロック周波数を上げるために、前記時間多重化マルチチャネル回路がリタイミングされる、請求項45に記載のデジタル処理システム。
【請求項47】
前記時間多重化マルチチャネル回路内のパイプラインレジスタの組を識別する手段と、
前記パイプラインレジスタの組を除去する手段とをさらに備える、請求項43に記載のデジタル処理システム。
【請求項48】
前記時間多重化マルチチャネル回路にパイプラインレジスタの組を挿入する手段をさらに備える、請求項43に記載のデジタル処理システム。
【請求項49】
前記変形する手段が、
複数のチャネルによる前記第1の設計の論理要素へのアクセスを時間多重化するためにマルチステートの有限ステートマシン(FSM)を生成する手段を備える、請求項43に記載のデジタル処理システム。
【請求項50】
前記変形する手段が、
前記第1の設計の入力ラインへの、前記複数のチャネル用の複数の入力を時間多重化するために、多重化回路を生成する手段をさらに備える、請求項49に記載のデジタル処理システム。
【請求項51】
前記変形する手段が、
前記第1の設計の出力ラインからの信号を、複数のチャネル用の複数の出力に時間多重分離するために、多重分離回路を生成する手段をさらに備える、請求項49に記載のデジタル処理システム。
【請求項52】
前記変形する手段が、
前記第1の設計内のチャネル固有要素を、対応する複数の要素に置き換える手段をさらに備え、前記対応する複数の要素のそれぞれが、前記FSMの状態に応じて前記複数のチャネルの1つに対してアクセスされる、請求項49に記載のデジタル処理システム。
【請求項53】
前記チャネル固有要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを備える、請求項52に記載のデジタル処理システム。
【請求項54】
前記チャネル固有要素がチャネル固有順次要素である、請求項52に記載のデジタル処理システム。
【請求項55】
非チャネル固有順次要素を識別する手段をさらに備える、請求項54に記載のデジタル処理システム。
【請求項56】
前記非チャネル固有順次要素がパイプラインレジスタの組を含む、請求項55に記載のデジタル処理システム。
【請求項57】
前記チャネル固有順次要素が、複数の移動順次要素のカスケード接続に置き換えられる、請求項54に記載のデジタル処理システム。
【請求項58】
前記チャネル固有順次要素が、前記FSMの状態に応じてアドレス指定される複数のメモリ要素に置き換えられる、請求項54に記載のデジタル処理システム。
【請求項59】
順次要素の、いくつかのフィードフォワード切断集合を、非チャネル固有の順次要素として決定する手段をさらに備える、請求項54に記載のデジタル処理システム。
【請求項60】
前記変形する手段が、
前記第2の設計を生成するために、前記第1の設計内の順次要素を、対応する要素に置き換える手段を備え、前記対応する要素が、複数のチャネルからの信号を処理するタイミングに従って前記第2の設計内で順次アクセスされる、請求項43に記載のデジタル処理システム。
【請求項61】
前記対応する要素が順次アドレス指定される、請求項60に記載のデジタル処理システム。
【請求項62】
前記対応する要素が順次アドレス指定される、請求項60に記載のデジタル処理システム。
【請求項63】
前記順次要素が、
a)定数と、
b)ランダムアクセスメモリ(RAM)要素と、
c)読み出し専用メモリ(ROM)要素と、
d)レジスタと、
e)フリップフロップと、
f)負遅延レジスタとのうちの1つを備える、請求項60に記載のデジタル処理システム。
【請求項64】
デジタル回路を設計する方法であって、
シングルチャネル回路である第1の設計を受け取るステップと、
前記第1の設計のシングルチャネル回路の集合体と、シングルチャネル回路の前記集合体の中の並列処理を示す情報とを生成するステップと、
時間多重化マルチチャネル回路である第2の設計を生成するために、前記情報を用いて、シングルチャネル回路の前記集合体に折り畳み変形を適用するステップと
を含む方法。
【請求項65】
前記情報が、折り畳みの集合の情報を含む、請求項64に記載の方法。
【請求項66】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項64に記載の方法。
【請求項67】
デジタル処理システムで実行されたときに、デジタル回路を設計する方法を前記システムに実施させる、実行可能なコンピュータプログラム命令を格納するマシン可読媒体であって、前記方法が、
シングルチャネル回路である第1の設計を受け取るステップと、
前記第1の設計のシングルチャネル回路の集合体と、シングルチャネル回路の前記集合体の中の並列処理を示す情報とを生成するステップと、
時間多重化マルチチャネル回路である第2の設計を生成するために、前記情報を用いて、シングルチャネル回路の前記集合体に折り畳み変形を適用するステップと
を含む媒体。
【請求項68】
前記情報が、折り畳みの集合の情報を含む、請求項67に記載の媒体。
【請求項69】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項67に記載の媒体。
【請求項70】
デジタル回路を設計するデジタル処理システムであって、
シングルチャネル回路である第1の設計を受け取る手段と、
前記第1の設計のシングルチャネル回路の集合体と、シングルチャネル回路の前記集合体の中の並列処理を示す情報とを生成する手段と、
時間多重化マルチチャネル回路である第2の設計を生成するために、前記情報を用いて、シングルチャネル回路の前記集合体に折り畳み変形を適用する手段と
を備えるデジタル処理システム。
【請求項71】
前記情報が、折り畳みの集合の情報を含む、請求項70に記載のデジタル処理システム。
【請求項72】
前記シングルチャネル回路である第1の設計が、少なくとも1つの負遅延レジスタを含む、請求項70に記載のデジタル処理システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【公表番号】特表2007−524899(P2007−524899A)
【公表日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−509572(P2006−509572)
【出願日】平成16年4月2日(2004.4.2)
【国際出願番号】PCT/US2004/010006
【国際公開番号】WO2004/090758
【国際公開日】平成16年10月21日(2004.10.21)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Macintosh
2.WINDOWS
3.イーサネット
【出願人】(300056440)シンプリシティ・インコーポレーテッド (5)
【Fターム(参考)】
【公表日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願日】平成16年4月2日(2004.4.2)
【国際出願番号】PCT/US2004/010006
【国際公開番号】WO2004/090758
【国際公開日】平成16年10月21日(2004.10.21)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Macintosh
2.WINDOWS
3.イーサネット
【出願人】(300056440)シンプリシティ・インコーポレーテッド (5)
【Fターム(参考)】
[ Back to top ]