JP2010118081A - 動作合成ツールにおける配列変換 - Google Patents

動作合成ツールにおける配列変換 Download PDF

Info

Publication number
JP2010118081A
JP2010118081A JP2010041194A JP2010041194A JP2010118081A JP 2010118081 A JP2010118081 A JP 2010118081A JP 2010041194 A JP2010041194 A JP 2010041194A JP 2010041194 A JP2010041194 A JP 2010041194A JP 2010118081 A JP2010118081 A JP 2010118081A
Authority
JP
Japan
Prior art keywords
array
memory
packing
word
memory resource
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.)
Pending
Application number
JP2010041194A
Other languages
English (en)
Inventor
Shiva Prakash
プラカシュ,シバ
Bryan Darrell Bowyer
ボウヤー,ブライアン・ダレル
Peter Pius Gutberlet
ガットベルレット,ぺーター・ピアス
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.)
Mentor Graphics Corp
Original Assignee
Mentor Graphics 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 Mentor Graphics Corp filed Critical Mentor Graphics Corp
Publication of JP2010118081A publication Critical patent/JP2010118081A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

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)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】メモリに対する配列の改善されたパッキングを実現する動作合成ツールを提供する。
【解決手段】本ツールにより、設計者は集積回路のソースコード記述12を修正することなく変数またはアレイをメモリリソースに対話的に割り付けることができる。本ツールは、ソースコード記述12を読み取り、メモリ中に記憶される合成中間形式16を生成する。本ツールはメモリ中の合成形式を探索して各プロセスごとにアレイを見出す。次いで、このアレイがGUI18中にリストアップされる。GUIにより、設計者はメモリのタイプおよびパッキングモードを指定するメモリリソースを作成することができる。このメモリパッキングプロセス中にメモリにアレイをパックするために使用される複数の形式の間で形式を変更する機能も提供される。メモリ割り当ての修正が完了すると、設計者はこの変更を保存し、かかる変更はその合成中間形式を自動的に更新することによって実施される。
【選択図】図1

Description

本発明は、一般に、集積回路を開発するための動作合成ツールに関し、より詳細には、メモリに対する配列の改善されたパッキング(packing)を実現する動作合成ツールに関する。
音声処理、画像処理およびビデオ処理などデータ集約的な用途の普及と共に、メモリ・サブシステムが、電子システム設計の重要な関心の的になってきている。データ集約的なシステムの4分の3以上が、記憶構成要素からなる可能性があり、これにより、メモリ・サブシステムが集積回路の設計における最も重要な部分になっている。これらのシステムのほとんどは、関与する大量のデータのために高速である必要があり、また、注意深く設計して解決結果が予想以上に大きくなるのを回避する必要がある。
集積回路の設計は、もはや回路図から開始されてはいない。その代わりに、集積回路の設計は、回路の動作または機能を記述するソフトウェアプログラムから開始される。このソフトウェアプログラムは、実装の詳細が限られた実施すべきアルゴリズムを定義するソースコード記述である。設計者は、動作合成ツールに指示してこのソースコード記述をRTL(register transfer level、レジスタ転送レベル)記述へと変換する。このRTL記述を使用して最終的に回路中のコンポーネントのリストおよびコンポーネント間の相互接続を含むネットリストを生成する。このネットリストを使用して物理的な集積回路を作成する。
配列は、ソースコード記述におけるメモリの動作をモデリングするための強力で便利な方法を提供する。すなわち、動作記述を使用して配列を使用した抽象的な方法でデータのグループを操作する。これらの配列は、設計者の制御の下で、メモリへとパックされる。動作合成ツールは、自動的にメモリを制御するためのロジックを構築し、設計者が、(例えば、同期式対非同期式、シングルポート対デュアルポートなど)様々な特性を持つ様々なメモリを使用してアーキテクチャを探求する必要をなくし、また設計のための適切な実装についての知的な判断を行う必要もなくする。
配列をメモリにパックするために、設計者は、特にソースコード中で配列を表現する変数をメモリに割り当て、メモリのタイプおよび他のメモリパラメータを指定する必要がある。これは、1組の属性または指示文を使用して達成される。例えば、Synopsis(登録商標)ツールは、「プラグマ(pragma)」ステートメントを使用する。
設計者がソースコード記述中で(プラグマステートメントまたは他の指示文を使用して)メモリ割付けの詳細を指定した後、この設計者は、合成ツールを介してソースコード記述を処理する。この合成ツールは、設計者が回路性能を解析するために使用できるレポートを生成する。例えば、ユーザは、回路の速度および面積を調べて現在のメモリ割付けが受入れ可能かどうかを判定することができる。このメモリ割付けが受入れ可能でない場合には、設計者はエディタに戻り、ソースコード記述を再編集してメモリ割付けの詳細を変更し、この合成ツールを介してもう一度ソースコード記述を処理する必要がある。メモリ割付けを修正するためのかかる技法は、時間がかかり非効率的であり、どのようにしてメモリを割り付けるかを指定するための限られた選択肢しか設計者に提供しない。
したがって、設計者がメモリリソースをより速やかに簡単に修正できるようにすると共に、設計者にどのようにして配列をメモリにパックするかを指定するためのさらに拡張された選択肢を提供できるようにする方法および合成ツールを提供することが望ましい。
回路のソースコード記述をRTL記述に変換する際に、メモリパッキングプロセス中に配列をどのようにしてメモリにパックするかについての形式を設計者が変更できるようにする方法、システム、動作合成ツールが提供される。設計者は、設計すべき回路の動作を記述するアルゴリズムレベルでソースコード記述を書くことができる。次いで設計者は、動作合成ツールを使用して合成技法を使用したいくつかの異なるアーキテクチャ設計を生成する。各設計では、RAM対レジスタのどちらを使用すべきか、どのタイプのRAMを使用すべきか、どれだけ多くのメモリを使用すべきか、オンチップメモリまたはオフチップメモリのどちらを使用すべきかなど、設計者は、いくつかの異なる制約条件を変更できるようにすることによって異なるメモリ割付けを実装することができる。設計者が配列の選択されたメモリへのパッキングを速やかに簡単に制御できるように、設計者には、ソースコード記述中の配列のレイアウト形式を変換する機能も提供される。グラフィックユーザインターフェースを使用して、その動作合成ツール内の制約条件を変更して、あるいはソースコード記述を手動で操作することによって、これらの制約条件を変更することができる。次いで動作合成ツールは、回路の性能を解析するためのレポートを各設計ごとに作成する。例えば、設計者は、各設計から作成される回路の速度および面積を調査し比較してそのメモリ性能およびメモリサイズが受入れ可能かどうかを判定することができる。
ハードウェア記述を有するソースコードファイルが、動作合成ツール内でデータベースに読み出される。この動作合成ツールは、ソースコード記述を解析し、このソースコード記述に関連するデータ構造を生成する。次いで、設計者は、メモリタイプ、メモリ数、メモリサイズなどメモリ割付けの詳細を指示するいくつかの制約条件を修正することができる。したがって、ソースコード記述を再編集する必要はなくなり、設計者は、メモリのパッキングプロセス中にこれらのメモリ制約条件を対話的に動的に変更してどのようにして配列をメモリ中にパックするかを制御することができる。設計者が設計に満足した後に、RTL記述をそのデータ構造から生成する。
配列をメモリにパックするためのいくつかの追加の選択肢が、動作合成ツールによって設計者に対して提供され、その結果、設計者は、メモリのパッキングプロセス中に複数の配列レイアウト形式のうちの1つを選択することができる。配列のレイアウトを動的に変換する機能を設計者に提供することにより、設計者にとって合成すべき回路のメモリ割付けをカスタマイズする高速で効率のよい方法が可能になる。
本発明のさらなる特徴および利点は、以下の詳細な説明および添付図面を参照することによって明らかになろう。
対話的なメモリ割付けを可能にするシステムのブロック図である。 図1のシステムを使用して集積回路を開発するための設計フローを示す詳細な図である。 メモリへの配列の直接パッキングを示す図である。 図4aは、メモリの単一ワードへの配列の複数ワードのパッキングを示す図であり、図4bは、メモリの単一ワードへの配列の複数ワードのパッキングを示す別の図である。 図5aは、リトルエンディアン形式を使用したメモリへの配列のパッキングを示す図であり、図5bは、ビッグエンディアン形式を使用したメモリへの配列のパッキングを示す図である。 図6aは、インターレーシング形式における、メモリへの配列のパッキングを示す図であり、図6bは、インターレーシング形式における、メモリへの配列のパッキングを示す別の図である。 メモリの複数ワードへの配列の単一ワードのパッキングを示す図である。 メモリの複数ワードへの配列の単一ワードのパッキングを示す別の図である。 メモリ中のカスタマイズされたロケーションへの配列のパッキングを示す図である。 図9aは、複数のメモリへの単一配列のパッキングを示す図であり、図9bは、複数のメモリへの単一配列のパッキングを示す別の図である。 単一メモリへの複数の配列のパッキングを示す図である。 メモリの使用において重複する配列を伴う、単一メモリへの複数の配列のパッキングを示す図である。 デフォルト動作を定義し設計者のエラーを訂正する解決モードの使用を示す図のうちの1つである。 デフォルト動作を定義し設計者のエラーを訂正する解決モードの使用を示す図のうちの1つである。 デフォルト動作を定義し設計者のエラーを訂正する解決モードの使用を示す図のうちの1つである。 設計者が動作合成ツール中のメモリリソースを修正できるようにするユーザインターフェースの一例を示す図である。 動作合成ツールを実装するためのネットワーク環境の一実施形態のブロック図である。 本発明による方法、システム、およびツールを実施するシステムの一実施形態を示すブロック図である。 メモリ割付けをSIFに適用する一例である。
図1に、集積回路を生成するためのシステム10を示す。設計者は一般に、別のエディタ(図示せず)を使用してソースコード12を生成することによって集積回路の動作記述を作成する。このソースコード記述は、C、C++、VHDL、Verilog、Pascalなど、動作レベルで回路を記述することが可能な任意のプログラミング言語で書くことができる。ソースコード記述12が完成した後に、動作合成ツール14は、このソースコード記述12を読み込み、設計者が設計プロセスの早期において回路アーキテクチャを評価し修正することができるようにする。特に、ソースコード記述12は、この動作記述をデータ構造として保持する中間データベース16中に読み込まれる。SIF(synthesis intermediate format、合成中間形式)と呼ばれるこのデータ構造は、GUI(graphical user interface、グラフィックユーザインターフェース)18を介してユーザによる修正が可能である。このGUI18により、設計者は、このデータ構造中のメモリ割付けを対話的に動的に修正できるようになる。しかし、設計者はまた、元のソースコード記述を手動で編集することによって、またはGUIの助けなしにこのSIFを修正することによってこのメモリ割付けを修正することもできる。例えば、設計者は、コマンドを発行して、このSIF内のメモリ割付けを修正することもできる。次いで、設計者は、異なるメモリアーキテクチャに関連する面積および待ち時間を速やかに評価することができる。設計者がそのアーキテクチャに満足した後に、そのRTLコードを20に示すように生成する。次いでさらなる処理をそのRTLコードに対して実施して最終的にその集積回路が生成される。
図2に、本発明の一実施形態による、集積回路を生成するためのより詳細なフローチャートを示す。プロセスブロック30において、動作合成ツールは、すでに説明したように、この集積回路の動作を記述するソースコードを読み込む。このソースコード記述は、最初のメモリ割付けを確立するための1組のデフォルト制約条件を含むことができる。あるいは、このソースコード記述をこの動作合成ツール中に読み込んだ後に、選択済みのパッキングモードまたは設計者によって、このデフォルト制約条件を提供することができる。プロセスブロック32において、動作合成ツール14(図1参照)は、このソースコード記述を中間データベース16中に読み込み、設計者が変更可能なデータ構造を生成する。このデータ構造を生成する際に、この合成ツールは、このソースコード記述の解析を実施する。例えば、この合成ツールは、このソースコード記述中のオペレータ、信号、および変数を探索し、これらのステートメントに基づいてこのデータ構造を生成する。さらに、この合成ツールは、指示文を求めて探索し、これらの指示文をこのデータ構造中のメモリ割付けについてのデフォルトとして使用する。
このフロー中のこのポイントで、メモリ割付け情報が中間データベースに独立に記憶され、すなわちこれは、この情報がまだ完全にはこのSIF中に統合されてはいないことを意味することになる。かかる変更がこのSIFに適用されるとき、これによって、設計者がこのメモリ割付けと制御を対話的に変更できるようになる。このメモリ割付け情報は、この設計についての1組のリソースとして記憶され、ここで各リソースは、最終的な集積回路設計中に存在する可能性もあるメモリリソースを表現する。さらに、このソースコード記述中の配列もまた、このデータ構造中に記憶される。このデータ構造は、多くの異なる方法で構成することができる。1つの可能な構成は、このデータ構造に記憶されるこれらのリソースおよび配列に関連する様々なフィールドをもつ構成である。例えば、一実施形態では、以下のフィールドをこのデータ構造に記憶されたリソースに関連づけることができる:
このリソースについての一意的な識別子、
このリソースについて使用すべきメモリタイプ、
このリソースにパックされる変数リスト、
このリソースについてのパッキングモード、
このリソースがこの設計の外部にあるかどうかを示すフラグ、
このリソースに対するパッキング変数についての形式。
同様に、一実施形態では、以下のフィールドをこのデータ構造に記憶される配列に関連づけることができる:
このリソースについての一意的な識別子、
配列長、
配列幅、
リソース中の開始アドレス、
このリソース中の開始ビット、
このリソースに配列をパックするための形式。
プロセスブロック34において、設計者は、このソースコード記述中にある変数についてのメモリ割付けを対話的に変更することができる。すなわち、このソースコード記述は、(場合によっては、配列はメモリにパックされないが)メモリ記憶域に関連づけられる配列を表現する変数を含んでいる。この配列を表現する変数についてのこのメモリ割付けは、メモリ割付けに関連したいくつかの制約条件を設計者が操作できるようにすることによって修正される。例えば、第1の制約条件により、設計者が回路設計中で使用可能な多くの異なるメモリから選択できるようにすることもできる。追加の制約条件では、選択されるメモリ(例えば、デュアルポートメモリ、シングルポートメモリなど)のサイズおよびタイプを変更することができる。したがって、プロセスブロック34において、設計者は、どのメモリを使用すべきか、これらのメモリに関連する変数、パッキングモードなどを選択することができる。
設計者に、さらに多くの、設計における柔軟性を提供するために、設計者には、プロセスブロック34において、配列のレイアウトを様々な形式に変換する機能も提供される。配列をメモリにパックするために使用される形式は、回路の全体的なメモリ性能にかなりの影響を及ぼす可能性がある。この使用される形式は、しばしば配列またはメモリの所与数のワードにアクセスするために必要な読取りおよび/または書込みの回数に影響を与えることになる。回路のサイズを所与の仕様の範囲内に維持することに重点を置いた様々な形式を選択することができるが、(クロックサイクル/読取り/書込みの数を減らす)回路速度に重点を置いた他の形式を選択することもできる。特定の配列レイアウト形式については、図3〜図11について長く時間をかけて説明することにする。
設計者は、いくつかの方法で、前述のメモリ割付け制約条件(すなわち、サイズ、数、メモリタイプ、パッキングモード、形式)のうちのどれでも修正することができる。設計者は、図1に示すGUI18を使用してメモリ割付けを制御する制約条件を変更することができる。あるいは、設計者は、SIF中の制約条件を手動で変更することもでき、またそのソースコード記述を手動で編集して制約条件を含めることもできる。
メモリが適切に割り付けられた後、設計者は、初期検査を実施してその回路の面積およびタイミングを解析することができる(プロセスブロック36)。これは、例えば、そのメモリ割付けが満足できるものであるかどうかの何らかの直接フィードバックを設計者に提供する面積対待ち時間グラフを表示することによって行うことができる。設計者が、その面積およびタイミングに不満な場合、設計者は、矢印38に示すようにプロセスブロック34に戻ってさらにそのメモリ割付けを修正することができる。他方、設計者が、そのメモリ割付けに満足する場合には、そのRTLコードを生成しシミュレーションを行うことができる(プロセスブロック40および42)。最終的には、RTL合成ツールでRTL合成を実施することができ(プロセスブロック44)、そのゲートレベル設計を検証し解析することができる(プロセスブロック46)。
各配列または各メモリごとに、同時に読み取られ、または書き込まれる固定したデータブロックが存在する。この固定データブロックは、ワードと呼ばれる。配列またはメモリは、ワードサイズおよびワード数によって特徴づけることができる。メモリまたは配列の第1のパラメータは、ワードサイズであり、これは、単一のアクセスで読み取られ、または書き込まれるビット数のことである。第2のパラメータは、メモリが記憶することができるワード数である。各ワードは、その下でワードを読み取り、または書き込むことができる一意的なアドレスを有しており、このアドレスは、通常0からワード数−1に至る数字である。配列には通常、実行中に計算される表現によってインデックス付けすることができる。ハードウェアユニットとしてのメモリは、遅延やポート数などの追加パラメータをもつことができる。
次に、メモリ割付けがどのようにしてSIFに適用されるかについてのさらなる詳細について説明することにする。設計者がそのメモリ割付けに満足した後に、設計者は、GUIに指示して、そのメモリ割付け情報をSIFに適用する。したがって、このポイントで、1組の独立なリソースおよびそれらのフィールド情報を修正することにより、設計者がメモリ割付けに対して行ったどのような変更もデータベース中に反映される。この情報のSIFに対する適用は、以下のいくつかのステップを含んでいる。
1.各メモリリソースを表現するメモリデータオブジェクトを作成する。これは、そのパッキングモードと共に、そのメモリにパックされる変数および変数のサイズに基づいてメモリのサイズを決定するものである。また、(そのメモリ上のパッキングモードおよび変数の順序に基づいて)最初の変数インデックスが異なるメモリアドレスにパックされることもあり得るので、オフセットは、各配列/インデックスごとに計算される。
2.メモリリソースにパックされる任意の変数に対するすべての読取り/書込みアクセスをステップ1中の作成済みのメモリデータオブジェクトに対する対応する読取り/書込みに変換する。変換は、そのSIFを適切に修正して実際のメモリアドレスロケーションへの最初の配列ンデックスのパッキングを反映するステップを含んでいる。このパッキングは、これらの変数の順序付けおよび使用されるパッキングモードに依存する。適切なオフセットが各配列インデックスアクセスごとに挿入される。このオフセットの挿入は、アドレス計算としても知られるものである。
図16を参照すると、どのようにしてメモリ割付けがSIFに対して適用されるかについての例が示されている。図16は、3つのコードセグメントを示している。第1のコードセグメント160は、配列Aを宣言し、次いでこの配列の様々なワードを変数に割り当てるための基本コードの例である。セグメント160中で、配列Aは、100の配列長および32ビットのワード幅を伴うものとして宣言される。その後、配列Aのワード5が、変数bに割り当てられ、配列Aのワード9が変数cに割り当てられる。
この例で、設計者は、コードセグメント160を動作合成ツール中に読み取っており、今や、幅が50ワードしかなく、64ビット幅となるようにこの配列の形式を変換したいと思っているものと想定する。以前の方法を用いてこのポイントで、コードセグメント162に示すように配列について宣言する際も、配列をアクセスするときもいつでも、設計者は、ソースコードセグメント160を再編集してこの変更を反映する必要があるはずである。コードセグメント162は、新しいサイズを反映するように変更された配列Aの宣言を示しているが、この配列に対する後続のアクセスに対して行う必要がある変更も示している。この配列アクセスがサイズ変更後に配列Aの正しいワードを依然として割り当てられるようにするために、所望のワードについて新しいアドレスを計算する必要がある。行われる変更によっては、この計算はかなり難しいものになる可能性がある。したがって、この新しいコードを手動で作成するためには、設計者側でかなりの編集時間が必要であり、図16に示すような最も簡単なコードについてさえも、エラーが起こりやすい傾向がある。集積回路の動作を記述するために書かれるコードは、しばしばさらにずっと複雑であり、したがって、時間とエラーの可能性は、それに従って長く、また大きくなる。
しかし、本実施形態の動作合成ツールにより、設計者は、制約条件を簡単に変更して配列Aのレイアウトを32×100から64×50に変換することができる。ソースコードセグメント160は、すでにSIFに読み込まれているので、提供されたGUIは、配列Aを現行のサイズ32×100を用いて表示することになる。次いで、設計者は、配列を64×50形式に変換すべきことを示す配列についてのサイズ制約条件を変更する。これを確認した後に、配列AのサイズについてのSIF内の制約条件を変更してこの設計者の所望の変更を反映し、この動作合成ツールは、これらの制約条件のどのような変更をも反映したRTLコードを作成する。換言すれば、たとえ、コードセグメント160がSIF中に読み込まれていたとしても、GUIを介したこれら制約条件の設計者の設定によって、このRTLコードは、まるでコードセグメント162が最初に読み込まれていたかのように作成される。これは、コードセグメント160を実際に作成し編集してコードセグメント162の機能を反映することにより、コード160のSIFを編集してコードセグメント162の機能を反映することにより、またはコードセグメント160を変更しないままRTLコードを作成してコードセグメント162の機能を反映することにより、この動作合成ツールによって実現することができる。
あるいは、他の実施形態では、設計者は、コードセグメント164に示すようなサイズ制約条件をソースコードセグメント160に手動で追加することができ、次いでコードセグメント164をSIFに読み込んでいる。さらに他の実施形態では、このSIF内のサイズ制約条件を、設計者がGUIの助けなしに手動で変更することもできる。
この選択されたアーキテクチャは、そのメモリシステムの性能にかなりの影響があるはずなので、集積回路を合成する際のメモリパッキングプロセス中にどのようにして配列をメモリにパックするかについての設計者の制御を可能にすることが望ましい。例えば、配列ワードがどのようにアクセスされるかによっては、配列ワードサイズと異なるRAMワードサイズを有することがより効果的なこともある。配列からの2つの連続的なワードが一緒にアクセスされる場合、2つの配列ワードを単一のRAMワードにパックすることが効率的なこともある。あるいは逆に、配列ワードの半分がしばしばアクセスされる場合には、この配列ワードを2つのRAMワードに分割することが効果的なこともある。
2つの配列A(ワードサイズ:16)と配列B(ワードサイズ:32)を、一緒にパックすべき場合について考察する。RAMワードサイズは、例えば16または32であるように選択することができる。設計者が、32を選択する場合、配列Aワードは、パッドなしですべてのAワードおよびBワードを同じサイズにすることができる。提案したばかりの解決方法は、メモリ使用の観点からは明らかに非常に無駄が多い。別の解決方法では、2つの配列Aのワードを単一のRAMワードにパックすることになる。第3の解決方法では、16をRAMワードサイズとして選択し配列Bの各ワードを2つのRAMワードに分割することになる。第2の形式か第3の形式かの選択は、2つの配列についてのワードアクセスパターンによる影響を受けるはずである。しばしば、同じ設計記述について使用可能な数多くの形式が存在し、それぞれは、他の形式に比べて利点および欠点を有している。
図3は、メモリへの配列の直接パッキングを示す図である。この例では、配列50およびメモリ52は同じ長さ(10ワード)および幅(4ビット)をもっている。しかし、配列50をより大きなメモリのサブセクションにパックすることもできる。配列50をメモリ52にパックするために、配列50のワード0は、メモリ52のワード0に直接にパックされ、後続のワード1からワード9も同様である。各配列のアクセスは1つのメモリアクセスをもたらす。アドレス変換はなく、配列アドレスはそのままメモリアドレスとして使用することができる。したがって、直接パッキングは、かなり単純であり、動作合成ツールによって速やかに処理される。
多くの場合に、メモリ要素へのアクセスは、実施される機能の最大の並列性を制限するので、設計のボトルネックになる。1つの選択肢は、メモリワードの幅を広げることであり、それによって、各メモリアクセスが、複数の配列ワードを読み取りまたは書き込むことになる。配列をより大きなワードサイズをもつメモリにパックすることは、複数ポートをもつメモリへと置き換えることでメモリポートのスループットを増大させる典型的な変換である。図4(a)は、メモリの単一ワードへの配列の複数ワードのパッキングを示す図である。図4(a)に示す配列60は、10ワードの長さと4ビットの幅を有している。配列60は、幅が8ワード、すなわち配列60のワード幅の2倍のワード幅のメモリ62にパックされる。したがって、配列60のワード0およびワード1は、メモリ62のワード0にパックすることができる。同様に、配列60のワード2およびワード3は、メモリ62のワード1にパックされ、以下同様にすることができる。
図4(b)は、メモリの単一ワードへの配列の複数ワードのパッキングを示す別の図である。図4(b)中の配列64は、4ビットのワード幅を有する。しかし、メモリ66は、ワード幅12、すなわち配列64のワード幅の3倍のワード幅を有する。したがって、配列64のワード0、ワード1、およびワード2は、メモリ66のワード0にパックする
ことができる。同様に、配列64のワード3、ワード4、およびワード5は、メモリ66のワード1にパックされ、以下同様にすることができる。
メモリの単一ワードへの複数の配列ワードのパッキングには、各配列のアクセスを1つのメモリアクセスに変換することが必要であり、メモリワードのある種のアドレス計算および副次的な選択を実施することが必要である。配列の要素への書込みにはまずメモリワードの読取りが必要であり、さもないと、同じメモリワードを共有する配列要素が上書きされない。換言すれば、各配列読取りは、1つのメモリ読取りに変換され、配列書込みは複数のメモリアクセスに変換される。したがって、複数の配列アクセスを単一メモリアクセスにパックすることができる場合には、設計者はこの形式が有用であることを見出すはずである。ソースコード記述が順番に配列要素にアクセスする多数のループを含むとき、またはソースコード記述が常に、またはしばしば対をなす配列ワードにアクセスする場合には、このようなことがあり得る。
図5(a)および図5(b)は、エンディアン形式(Endian format)を使用したメモリへの配列のパッキングを示す図である。図5(a)および図5(b)中の配列70は、長さ10の配列長および4ビットのワード幅を有する。配列70は、8ビットのワード幅をもつメモリ72へとパックされ、図4(a)に関して以前に説明したように2つの配列ワードが単一のメモリワードにパックされる。しかし、配列またはメモリの形式、すなわちワード幅または長さは、エンディアン形式を使用する目的では重要ではない。エンディアン形式では、本明細書中で説明するフォーマットのすべてと同様に他の形式と組み合わせて使用して配列レイアウトを変換することもできる。
図5(a)は、「リトルエンディアン(Little Endian)」形式を使用したメモリへの配列のパッキングを示す図である。この形式は、メモリ72の各ワードの最下位のビットで開始されるメモリ72に配列70をパックする。したがって、図5(a)におけるメモリ72は、配列70のワード0およびワード1が最下位のビットで開始されるメモリ72のワード0にパックされ、配列70のワード2およびワード3が最下位のビットで開始されるメモリ72のワード1にパックされ、以下同様に続くように示される。リトルエンディアン形式は、Microsoft Windows(登録商標)プラットフォームを使用したパーソナルコンピュータ用のほとんどのIntelプロセッサで使用される。
図5(b)は、「ビッグエンディアン(Big Endian)」形式を使用したメモリ74への配列70のパッキングを示す図である。この形式は、メモリ74の各ワードの最上位のビットで開始されるメモリ74に配列70をパックする。したがって、図5(b)におけるメモリ74は、配列70のワード0およびワード1が最上位のビットで開始されるメモリ74のワード0にパックされ、配列70のワード2およびワード3が最上位のビットで開始されるメモリ74のワード1にパックされ、以下同様に続くように示される。ビッグエンディアン形式は、Macintoshプラットフォームを使用したパーソナルコンピュータ用のほとんどのMotorolaプロセッサで使用される。
インターレーシング(interlacing)は、配列から読み取る際に特定のワード数をスキップしてワードを所与の順にメモリへとパックする形式である。配列の奇数アドレスワードと偶数アドレスワードが、そのアルゴリズムの別々の部分で使用される場合が典型的なアプリケーションとなるはずである。図6(a)は、インターレーシング形式のメモリへの配列のパッキングを示す図である。配列80は、配列80の偶数ワードがメモリ82の最初の5ワードへとパックされ、配列80の奇数ワードがメモリ82の第2番目の5ワードへとパックされるようにして、パックされるワードごとに3ワードをスキップするインターレーシング形式でパックすることができる。
図6(b)は、インターレーシング形式のメモリへの配列のパッキングを示す別の図である。この例では、メモリ86にパックされる配列84の各ワード間で2ワードだけがスキップされ、メモリ86は、ワード幅が配列84の2倍である。したがって、メモリ86にパックすべき配列84の最初の2ワード、すなわちワード0とワード3がメモリ86の最初のワードにパックされる。次いで、同様に、配列84のワード6とワード9がメモリ86の次のワードにパックされ、以下同様である。
図7(a)は、メモリの複数ワードへの配列の単一ワードのパッキングを示す図である。図7(a)は、8ビット幅の配列90が4ビット長をもつメモリ92へとパックされるのを示している。したがって、この配列ワードは、配列ワード0の前半がメモリ92の第1のワードにパックされ、配列ワード0の後半がメモリ92のワード1にパックされるように分割される。配列ワードの残りも、配列ワード1が分割され前半がメモリワード2に後半がメモリワード3に記憶され、以下同様になるように同様な方法で分割される。配列ワードは、分割し高位ビットから低位ビットへ、またはその逆に順番にメモリワードにパックすることができる。例えば、各メモリワード0および1は、メモリ92中の配列ワード0の半分ずつを含んでいる。配列ワード0の半分ずつをメモリ92に任意の順序でパックすることができる。配列ワード0の最初の4ビット(AB0〜AB3)は、メモリワード0にパックすることができ、また配列ワード0の最後の4ビット(AB4〜AB7)は、メモリワード0にパックすることができる。
この場合には、各配列アクセスは、複数のメモリアクセスをもたらす。これは、その設計の性能を低下させるが、例えば、ある種のメモリワードサイズだけしか使用可能でないときには設計の制約条件となることもある。
図7(b)は、メモリの複数ワードへの配列の単一ワードのパッキングを示す別の図である。図7(b)では、長さが10ワードで幅が8ビットの配列94が、幅が6ビットのメモリ96上にパックされる。配列ワードサイズの厳密な倍数または約数ではないメモリワードサイズを選択することによって、より複雑なアドレス変換およびスライスオペレーションのうちの一方がもたらされる。第1の配列ワード、すなわちワード0(8ビット)は、メモリワード0(6ビット)とメモリワード1の最初の2ビットにパックされる。これによって、メモリワード1中に未使用スペースの4ビットが残る。したがって、第2の配列ワード、ワード1の最初の4ビットは、メモリワード1中の自由スペースの残りの4ビットにパックされ、配列ワード1の残りの4ビットは、メモリワード2にパックされる。これは、すべての配列ワードがメモリ96にパックされてしまうまで続行される。この場合、14語のメモリワードが、配列94の80ビットすべてを保持するために必要とされる。これによって、4ビットの未使用ビット98が残り(80配列ビットが614=84メモリビットにパックされ)、これらの未使用ビットは、メモリ96中のどこにも割り付けることができる。図7(b)では、これらのビット98は、メモリ96の末尾に割り付けられる。
図7(b)に示すパッキングは、図7(a)と同様に、このメモリ中のある種の配列要素にアドレス指定をするために多大な計算を必要とする。しかし、かかるパッキングは、使用可能なメモリが非常に制約されている場合に有用となる可能性がある。配列要素が2つのメモリ要素上に分散しているので、複数のメモリアクセスが各配列のアクセスについて必要なこともある。
図8は、メモリ中のカスタマイズされたロケーションへの配列のパッキングを示す図である。配列100は、8ビットの幅と4ワードの長さを有している。メモリ102は、長さが指定されていないが、配列100よりも大きく、配列長12を有している。配列100は、配列100によって占有されるのに十分大きなメモリ102中の任意のロケーションにパックすることができる。図8で、配列100は、配列100の最初のワードがメモリワード6にパックされるようにパックされ、配列ワード0の最初のビットがメモリワード6のビット4にパックされるように配置される。配列100の後続の各ワードは、この配列ワードの最初のビットがこのメモリワードのビット4に配置されるようにメモリ102の後続のワードにパックされる。
図9(a)は、複数のメモリへの単一配列のパッキングを示す図である。配列110は、長さが10ワード、幅が4ビットである。2つのメモリ、すなわち112および114が示されており、これらの各メモリは、幅が4ビットで、長さが5ワードである。配列110は、様々な方法でこれらのメモリにパックすることができる。例えば、配列110は、各配列ワードを第1のメモリ112へ、次いで第2のメモリ114へと交互にパックすることによりメモリ112およびメモリ114にパックすることができる。かかる場合が、図9(a)の場合である。配列110のワード0は、メモリ112のワード0にパックされ、配列110のワード1は、メモリ114のワード0にパックされる。次いで配列110のワード2は、メモリ112のワード1にパックされ、また配列110のワード3は、メモリ114のワード1にパックされる。この形式は、配列110中のワードの残りがメモリにパックされるまで続行する。
代わりに、図9(b)に示すように、配列110の最初の5ワードがメモリ112に順次パックされ、配列110の第2番目の5ワードがメモリ114にパックされるように、配列110をパックすることもできる。配列を2つの別々のメモリに分割することは、全体回路のサイズを増大させるが、2つのメモリは独立にアクセスすることができるので、この設計の速度を上げるのに効果的である。したがって、この設計者は、配列110の2ワードを効果的に並行してアクセスできるようにしている。
図10は単一メモリへの複数の配列のパッキングを示す図である。2つの配列120および122が、4ワードの長さと8ビットの幅をもつように示されている。メモリ124は、中間的な幅のものであるが、配列120および配列122よりも大きい。メモリ124の長さは、12ワードである。配列120のワード0は、メモリ120のワード2にパックされ、配列ワードのビット0が、メモリ124のワード2のビット4に配置されている。配列120の後続の各ワードは、配列ワードの最下位のビットがそのメモリワードのビット4に配置されてメモリ120の後続のワードにパックされる。
配列122は、メモリ124中の、配列120にすぐ隣接した場所を占めるようにパックされる。したがって、配列122のワード0は、配列120のワード0と同様にメモリ124のワード2にパックされる。しかし、配列122のワード0は、最下位のビットがこのメモリワードのビット12に配置されるように位置がずらされている。次いで、配列122の後続のワードは、各配列ワードの最下位のビットをメモリワードのビット12に配置し、メモリ124の後続のワードにパックされる。
したがって、設計者には、図9に示すように複数のメモリ上に1つの配列をパックすることによって回路速度を増加させるか、あるいは図10に示すように同じメモリ上に複数の配列をパックすることによってメモリ数を、したがって回路サイズを減少させるかについての代替的な選択肢が提供される。
図11は、メモリの使用において重複する配列を伴う、単一メモリへの複数の配列のパッキングを示す図である。配列130および132とメモリ134は、図10に関して説明したものと同じ大きさのものである。しかし、この例では、配列130および132は、配列130のワード0および1の後の方の部分が配列132のワード2および3の最初の部分とロケーションが重複するようにパックされている。配列130および132が共通の生存期間(life time)をもつ場合には、これらのセクションは、別々になっている必要があり、図に示すパッキングは、メモリ割付けエラーを引き起こすことになる。しかし、これらの配列が異なる生存期間を有する場合には、この構成がメモリリソースを節約する効果的な方法になることもある。
図3〜図11に関して説明した形式は、配列を別の配列にまたはメモリにパックする配列レイアウト形式に影響を与える制約条件を調整する際に、設計者に柔軟性を与えるものである。面積の影響を考慮すべき設計では、すべてのデータを1つのメモリにマージしてしまいがちである。しかし、これは、各メモリが別々のメモリにパックされる場合に比べてずっとメモリアクセスを制約することになる。並行性を介しての速度増加は、回路サイズが大きくなる欠点があるが、使用可能なときには複数のメモリを使用して実現することができる。
これらの説明した形式が、解決モードと組み合わせて使用することができることも注目に値する。図12は、設計のデフォルト動作を設定し、または設計者のエラーを訂正するための解決モードの使用を示す図である。例では、図12(a)に示す4つの配列が、SIFに読み込まれるソースコード中で宣言されているが、第1の解決モードしか指定されていないものと想定する。したがって、図12(a)中の配列の位置は、この第1の解決モードによる、各配列ごとの1組の制約条件によって決定されたものである。次いで、図12(b)は、設計者がその後、配列144に対応する制約条件を変更し、配列144が配列142と重複するようになった後の4つの配列の位置を示している。次に、設計者には、配列を図12(b)に示すように(重複して)配置されたままにし、制約条件を変更して、配列142または配列144をメモリ中の代替位置に移動してこの問題を訂正する、あるいはこの現行の解決モードに基づいてこの配列を自動的に他の場所にパックするという選択肢が与えられる。あるいは、設計者は、新しく選択された解決モードに基づいてこの配列をメモリ140中の他の場所にパックすることもできる。例えば、設計者は、図12(c)に示すように、配列144についての新しい位置を決定するための基礎として第2の解決モードを選択することによってこの問題を訂正するように選択できる。この解決モードでは、この配列を任意方向に移動し、この配列のサイズ変更を行い、この配列を別のメモリリソースにパックするなど、様々な方法で配列144を再配置するタスクを知的に取り扱うことができる。
図13は、設計者がメモリリソースを対話的にまた動的に修正できるようにするためのユーザインターフェース150の一例を示している。このユーザインターフェースは、プロセス、およびこれらのプロセス内でアクセスされる配列変数をリストアップする表示ペイン152を含んでいる。これらのプロセスおよび配列変数は、データベース16に記憶された現在のメモリ割付けを示し、グラフィックオブジェクトとして表現される。合成ツール14がデータベース16に記憶されるデータ構造を生成するとき、変数およびメモリ割付けに関するソースコード指示文が識別され、メモリ割付けについてのデフォルト設定として使用される。このGUIを使用して設計者は、メモリ割付けを示す指示文をもたないソースコードを作成することを選択することができる。かかる場合では、設計者は、このGUIを介してメモリ割付けを対話的に指定する。あるいは、設計者は、ソースコード中に、デフォルト設定として使用される指示文を含めることもできる。
例えば、GUI150中で選択された配列154は、サイズ64×21であり、すなわち配列の幅が64ビットで長さが21ワードであることを意味している。表示ペイン152は、変数に関するリソースの記号名を提供する。この場合には、「dct_temp_rsc」は、「dct_temp」と名付けられた配列154のために使用されるメモリリソースである。GUI150は、提供された制約条件を使用して回路のメモリ割付けを変更するために設計者が使用する設定タブ156を示している。この例における設定タブ
156は、回路設計のメモリ割付けをカスタマイズするために提供することができる多数の制約条件のうちの1つだけを示している。ここでは、入力ウィンドウ158を介して配列ワード幅制約条件を所望の幅に変更することができる。新しい幅を入力した後に、表示ペイン154は、配列dct_tempについての新しい幅を反映することになる。このポイントで、設計者は、配列dct_tempの形式、他の配列、メモリタイプの変更など他の変更を行うことができる。あるいは、設計者が満足する場合には、設計者は、「OK」ボタンを選択してこのSIFに対するこの変更を適用することができる。
前述の方法、システム、および動作合成ツールの態様のうちのいずれについても、分散コンピュータネットワーク中で実施することもできる。図14は、ネットワークの一例を示している。サーバコンピュータ170は、(サーバコンピュータの内部または外部に)関連する記憶装置172を有することもできる。サーバコンピュータ170は、前述の方法の実装形態のうちのどれを実施するようにも構成することができる。サーバコンピュータ170は、174に全体を示すネットワークに結合することができる。176、178に示すものなど、1つまたは複数のクライアントコンピュータは、ネットワーク174に結合され、ネットワークプロトコルを使用してサーバコンピュータ170とインターフェースすることができる。
図15は、ユーザがメモリ割付けを変更できるようにするGUIまたは代替手段をクライアント上に提供することができることを示している。次いでクライアントは、動作合成ツールの他の態様を提供するサーバと対話する。例えば、プロセスブロック180で、クライアントコンピュータは、回路の動作を記述するソースコードを送信する。このソースコードは、最初のソースコードの可能性もあり、また以前に送信されたソースコードの更新バージョンの可能性もある。プロセスブロック182で、ソースコードが受信され、サーバが提供する動作合成ツールに読み込まれる。次いで、プロセスブロック184で、このソースコードがSIFで表現され、これによってメモリ割付け制約条件を、クライアントが修正できるようになる。プロセスブロック186で、メモリ割付け制約条件などのメモリ割付け情報が、ユーザに表示するためにクライアントに伝送される。プロセスブロック184で、クライアントは、そのように望む場合にはこのメモリ割付け情報を修正することができ、あるいはこれらの制約条件を承認しそれらを修正しないままにしておくこともできる。このユーザが、その制約条件を修正する場合には、この修正結果がサーバに伝送され、ここでプロセスブロック190は、この修正結果に基づいてこのSIF中のメモリ割付けを更新し、このユーザが現行のメモリ割付けを承認するまでプロセスブロック186および188を反復することができる。ユーザがメモリ割付けを承認すると、プロセスブロック192を処理して承認されたメモリ割付けを含むこのSIFからRTLコードを作成する。次いで、プロセスブロック194は、クライアントがサーバからRTLコードを受信するステップを示している。
例示の実施形態についての原理を示し説明してきたが、これらの実施形態は、かかる原理を逸脱することなく構成および細部について修正できることが当業者には明らかであろう。
例えば、特定のGUIについて示したが、このユーザインターフェースを修正して変数およびリソースを異なる方法で示すこともできる。使用される特定のユーザインターフェースは、本発明にとっては重要ではない。
また、このパッキングプロセス中の1つの形式から別の形式への配列の変換については、様々な方法で実現することができる。例えば、第1の形式の配列は、第2の形式の中間配列に変換し、次いでメモリに直接にパックすることができる。あるいは、第1の形式の配列は、次いでその配列が所望の第2の形式でメモリに記憶されるように、メモリにパックされているときに変換することもできる。
本明細書中で説明した形式および方法は一般に、分かりやすくするために分離して示しているが、本明細書中で説明した配列レイアウトを変換する方法および形式は、組み合わせ修正することができることが当業者には理解されよう。例えば、図8に示すものなどカスタマイズされたロケーションにパックされる配列は、図5に示すエンディアン形式のいずれかのカスタマイズされたロケーションにパックすることもでき、また図6(a)および図6(b)に示すようなインターレーシング形式にパックすることもできる。
さらに、データベース16に記憶されるデータ構造は、多種多様の方法で構築することができる。使用される特定のデータ構造は、本発明にとっては、重要ではない。
さらに、説明では、配列に注目しているが、集積回路中の単一レジスタに関連する変数を、説明した形式およびツールを使用して修正することもできる。さらに、任意の単一変数または非配列データを配列として表現し、説明した動作合成ツールの実施形態によって処理することもできる。
特定のデータ構造について示しているが、多種多様のデータ構造を使用できることが当業者には理解されよう。
本発明の原理を適用することができる多くの実施形態が可能なことを考慮すれば、例示の実施形態は本発明の好ましい例であるにすぎず、本発明の範囲を限定するものと考えるべきではないことを理解されたい。それとは逆に、本発明の範囲は、添付の特許請求の範囲によって定義される。したがって、本発明者らは、これらの特許請求の範囲の範囲内に含まれるものすべてを本発明として請求するものである。

Claims (19)

  1. 集積回路を設計するために使用される動作合成ツールにおいて、配列レイアウトを再構成する方法であって、
    前記集積回路に関連するソースコード記述を前記動作合成ツールに読み込むステップであって、前記ソースコード記述は少なくとも1つの配列を有する、ステップと、
    前記ソースコード記述を前記動作合成ツール内の中間データ構造に記憶するステップであって、前記中間データ構造は、各配列について、前記各配列が第1のレイアウト形式に従って前記集積回路の1つ又は複数のメモリに割り当てられることを示す1つ又は複数のメモリ割り当て制約条件を含み、前記1つ又は複数のメモリ割り当て制約条件は、前記各配列の配列長、前記各配列の配列幅及び前記各配列をリソースにパックする形式を設定する制約条件を含む、ステップと、
    前記第1のレイアウト形式に従って割り当てられる前記少なくとも1つの配列による回路の面積及び速度のレポートをユーザに対して表示するステップと、
    前記各配列の配列長、前記各配列の配列幅又は前記各配列をパックする形式を設定するために前記制約条件の任意のものをユーザが修正できるようにするステップであって、ユーザによる修正は、前記ソースコード記述及び前記中間データ構造をユーザが手動で編集することなくグラフィックユーザインターフェースを介して実行される、ステップと、
    ユーザによる修正に応答して、前記各配列の配列レイアウトを前記第1のレイアウト形式から第2のレイアウト形式に変換するステップと、
    を含み、
    前記変換するステップは、前記修正されたメモリ割り当て制約条件を含むように前記中間データ構造を更新するステップを含み、
    前記表示するステップ、前記修正できるようにするステップ及び前記変換するステップは、前記ソースコード記述が前記動作合成ツール内に記憶される間であって前記ソースコード記述が前記集積回路のレジスタ転送レベル記述へ合成される前に実行される方法。
  2. 請求項1に記載の方法であって、前記メモリ割り当て制約条件の少なくとも1つは、前記メモリリソースがオンチップであるかオフチップであるか、前記メモリリソースがシングルポートであるかマルチポートであるか、又は前記メモリリソースが同期式であるか非同期式であるかというメモリリソースの種類のうちの少なくとも1つを指定する、方法。
  3. 請求項2に記載の方法であって、前記変換するステップは、前記配列をメモリリソースにパックするステップを含む、方法。
  4. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列の各ワードを、前記メモリリソースの対応するワードに、順番に直接にパックするステップを含む、方法。
  5. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列の複数ワードを、前記メモリリソースの各ワードにパックするステップを含む、方法。
  6. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列を、前記メモリリソースに、リトルエンディアン形式でパックするステップを含む、方法。
  7. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列を、前記メモリリソースに、ビッグエンディアン形式でパックするステップを含む、方法。
  8. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列を前記メモリリソースに、インターレーシング形式でパックするステップを含む、方法。
  9. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列の単一ワードを、前記メモリリソースの複数ワードに、パックするステップを含む、方法。
  10. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列を、前記メモリリソースにおけるカスタマイズされたロケーションに、パックするステップを含む、方法。
  11. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列を、前記メモリリソースの特定のワード内の特定のビットロケーションに、パックするステップを含む、方法。
  12. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列を、複数のメモリリソースにパックするステップを含む、方法。
  13. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、複数の配列を、前記メモリリソースにパックするステップを含む、方法。
  14. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップは、前記配列が前記メモリリソース内でロケーションが少なくとも部分的に重複するように、複数の配列を前記メモリリソースにパックするステップを含む、方法。
  15. 請求項3に記載の方法であって、配列をメモリリソースにパックする前記ステップが、以下の、
    前記配列の各ワードを前記メモリリソースの対応するワードに順番に直接にパックするステップ、
    前記配列の複数ワードを前記メモリリソースの各ワードにパックするステップ、
    前記配列を前記メモリリソースにリトルエンディアン形式でパックするステップ、
    前記配列を前記メモリリソースにビッグエンディアン形式でパックするステップ、
    前記配列を前記メモリリソースにインターレーシング形式でパックするステップ、
    前記配列の単一ワードを前記メモリリソースの複数ワードにパックするステップ、
    前記配列を前記メモリリソースにおけるカスタマイズされたロケーションにパックするステップ、
    前記配列を前記メモリリソースの指定されたワード内の指定されたビットロケーションにパックするステップ、
    単一の配列を複数のメモリリソースにパックするステップ、
    複数の配列を前記メモリリソースにパックするステップ、又は
    前記配列が、前記メモリリソース内でロケーションが少なくとも部分的に重複するように、複数の配列を前記メモリリソースにパックするステップ
    のうちの2つ以上のステップの組合せを使用して前記配列を前記メモリリソースにパックするステップを含む、方法。
  16. 請求項1乃至15のいずれかに記載の方法であって、前記更新された中間データ構造から前記集積回路の前記レジスタ転送レベル記述を生成するステップをさらに含む方法。
  17. 請求項16に記載の方法であって、前記レジスタ転送レベル記述から前記集積回路のゲートレベル記述を生成するステップをさらに含む方法。
  18. 請求項1乃至15のいずれかに記載の方法により、前記レポートをユーザに対して表示し且つ前記1つ又は複数のメモリ割り当て制約条件をユーザが修正することを可能にするグラフィックユーザインターフェースを表示するクライアントコンピュータであって、ネットワークを介してサーバコンピュータと通信する、クライアントコンピュータ。
  19. 請求項1乃至15のいずれかに記載の方法を実行するためのコンピュータ実行可能命令を格納するコンピュータ読取り可能媒体。
JP2010041194A 2002-03-08 2010-02-26 動作合成ツールにおける配列変換 Pending JP2010118081A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US36267902P 2002-03-08 2002-03-08

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009024400A Division JP4833303B2 (ja) 2002-03-08 2009-02-05 動作合成ツールにおける配列変換

Publications (1)

Publication Number Publication Date
JP2010118081A true JP2010118081A (ja) 2010-05-27

Family

ID=27805210

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2003575326A Pending JP2005520238A (ja) 2002-03-08 2003-03-07 動作合成ツールにおけるアレイ変換
JP2009024400A Expired - Lifetime JP4833303B2 (ja) 2002-03-08 2009-02-05 動作合成ツールにおける配列変換
JP2010041194A Pending JP2010118081A (ja) 2002-03-08 2010-02-26 動作合成ツールにおける配列変換

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2003575326A Pending JP2005520238A (ja) 2002-03-08 2003-03-07 動作合成ツールにおけるアレイ変換
JP2009024400A Expired - Lifetime JP4833303B2 (ja) 2002-03-08 2009-02-05 動作合成ツールにおける配列変換

Country Status (5)

Country Link
US (2) US7310787B2 (ja)
EP (1) EP1488367A4 (ja)
JP (3) JP2005520238A (ja)
AU (1) AU2003224667A1 (ja)
WO (1) WO2003077184A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235475A (ja) * 2012-05-10 2013-11-21 Mitsubishi Electric Corp 回路設計支援装置及び回路設計支援方法及びプログラム
JP2013254472A (ja) * 2012-05-11 2013-12-19 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
JP2015114874A (ja) * 2013-12-12 2015-06-22 国立大学法人東京工業大学 プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法

Families Citing this family (18)

* 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
WO2003077184A1 (en) * 2002-03-08 2003-09-18 Mentor Graphics Corporation Array transformation in a behavioral synthesis tool
US7210116B2 (en) * 2003-06-27 2007-04-24 Robert Zeidman Method and apparatus for synthesizing a hardware system from a software description
JP2005173648A (ja) * 2003-12-05 2005-06-30 Matsushita Electric Ind Co Ltd 高位合成方法及び高位合成装置
JP2005284577A (ja) * 2004-03-29 2005-10-13 Matsushita Electric Ind Co Ltd コンパイラ
US7412684B2 (en) * 2004-05-28 2008-08-12 Peter Pius Gutberlet Loop manipulation in a behavioral synthesis tool
US7315993B2 (en) * 2004-11-30 2008-01-01 Lsi Logic Corporation Verification of RRAM tiling netlist
US7735050B2 (en) * 2006-02-09 2010-06-08 Henry Yu Managing and controlling the use of hardware resources on integrated circuits
US8122399B2 (en) 2008-08-28 2012-02-21 International Business Machines Corporation Compiler for closed-loop 1×N VLSI design
US8136062B2 (en) * 2008-08-28 2012-03-13 International Business Machines Corporation Hierarchy reassembler for 1×N VLSI design
US8132134B2 (en) * 2008-08-28 2012-03-06 International Business Machines Corporation Closed-loop 1×N VLSI design system
US8156458B2 (en) * 2008-08-29 2012-04-10 International Business Machines Corporation Uniquification and parent-child constructs for 1xN VLSI design
US7966598B2 (en) * 2008-08-29 2011-06-21 International Business Machines Corporation Top level hierarchy wiring via 1×N compiler
US8141016B2 (en) * 2008-08-29 2012-03-20 International Business Machines Corporation Integrated design for manufacturing for 1×N VLSI design
US20100107130A1 (en) * 2008-10-23 2010-04-29 International Business Machines Corporation 1xn block builder for 1xn vlsi design
US8780114B1 (en) * 2009-08-31 2014-07-15 The Mathworks, Inc. Interactive memory map
US8352899B1 (en) * 2010-08-20 2013-01-08 Altera Corporation Method to modify an integrated circuit (IC) design
US9058860B2 (en) * 2012-03-29 2015-06-16 Memoir Systems, Inc. Methods and apparatus for synthesizing multi-port memory circuits

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05101141A (ja) * 1991-08-13 1993-04-23 Toshiba Corp 高位合成装置

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3624616A (en) * 1969-12-04 1971-11-30 Burroughs Corp Dynamic allocation of multidimensional array memory space
US4527249A (en) * 1982-10-22 1985-07-02 Control Data Corporation Simulator system for logic design validation
US5353243A (en) * 1989-05-31 1994-10-04 Synopsys Inc. Hardware modeling system and method of use
US5870308A (en) * 1990-04-06 1999-02-09 Lsi Logic Corporation Method and system for creating and validating low-level description of electronic design
US5222030A (en) * 1990-04-06 1993-06-22 Lsi Logic Corporation Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from high-level semantic specifications and descriptions thereof
US5555201A (en) * 1990-04-06 1996-09-10 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information
US5428740A (en) * 1990-10-18 1995-06-27 Ventana Systems, Inc. Applying successive data group operations to an active data group
US5404319A (en) * 1993-02-11 1995-04-04 Analog, Inc. Translation of behavioral modeling properties into an analog hardware description language
EP0660268A3 (en) * 1993-10-15 1996-01-31 Cadence Design Systems Process for displaying an electronic model.
US6044211A (en) * 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5623419A (en) * 1994-04-28 1997-04-22 Cadence Design Systems, Inc. Modeling of multi-disciplinary signals
US5541850A (en) * 1994-05-17 1996-07-30 Vlsi Technology, Inc. Method and apparatus for forming an integrated circuit including a memory structure
US5764951A (en) * 1995-05-12 1998-06-09 Synopsys, Inc. Methods for automatically pipelining loops
US6053948A (en) * 1995-06-07 2000-04-25 Synopsys, Inc. Method and apparatus using a memory model
US5727187A (en) * 1995-08-31 1998-03-10 Unisys Corporation Method of using logical names in post-synthesis electronic design automation systems
US5870588A (en) * 1995-10-23 1999-02-09 Interuniversitair Micro-Elektronica Centrum(Imec Vzw) Design environment and a design method for hardware/software co-design
US5673198A (en) * 1996-03-29 1997-09-30 Xilinx, Inc. Concurrent electronic circuit design and implementation
US5847969A (en) * 1996-05-01 1998-12-08 Hewlett-Packard Co. Integrated circuit design system and method for generating a regular structure embedded in a standard cell control block
US5912819A (en) * 1996-12-03 1999-06-15 Motorola, Inc. Method for designing an architectural system
US6708144B1 (en) * 1997-01-27 2004-03-16 Unisys Corporation Spreadsheet driven I/O buffer synthesis process
US6195786B1 (en) * 1997-12-23 2001-02-27 Nec Usa, Inc. Constrained register sharing technique for low power VLSI design
US6145117A (en) * 1998-01-30 2000-11-07 Tera Systems Incorporated Creating optimized physical implementations from high-level descriptions of electronic design using placement based information
US6917909B1 (en) * 1998-05-18 2005-07-12 Lev A. Markov Facilitating guidance provision for an architectural exploration based design creation process
US6305006B1 (en) * 1998-05-18 2001-10-16 Mentor Graphics Corporation Generating candidate architectures for an architectural exploration based electronic design creation process
US6314552B1 (en) * 1998-05-18 2001-11-06 Lev A. Markov Electronic design creation through architectural exploration
US6480985B1 (en) * 1998-08-26 2002-11-12 Mentor Graphics Corporation Method and apparatus for graphically presenting an integrated circuit design
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6438735B1 (en) * 1999-05-17 2002-08-20 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
US6519754B1 (en) * 1999-05-17 2003-02-11 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
US6467075B1 (en) * 2000-03-24 2002-10-15 Nec Corporation Resolution of dynamic memory allocation/deallocation and pointers
US6587995B1 (en) * 2000-04-19 2003-07-01 Koninklijke Philips Electronics N.V. Enhanced programmable core model with integrated graphical debugging functionality
US6769081B1 (en) * 2000-08-30 2004-07-27 Sun Microsystems, Inc. Reconfigurable built-in self-test engine for testing a reconfigurable memory
GB2367225B (en) 2000-09-26 2002-08-07 Oracle Corp User interface
US6701501B2 (en) 2000-10-16 2004-03-02 Simon Joshua Waters Structured algorithmic programming language approach to system design
US6711729B1 (en) * 2000-12-05 2004-03-23 Synplicity, Inc. Methods and apparatuses for designing integrated circuits using automatic reallocation techniques
US6611952B1 (en) * 2000-12-21 2003-08-26 Shiv Prakash Interactive memory allocation in a behavioral synthesis tool
US7302670B2 (en) 2000-12-21 2007-11-27 Bryan Darrell Bowyer Interactive interface resource allocation in a behavioral synthesis tool
US6957418B2 (en) 2001-01-23 2005-10-18 Altia, Inc. System and method of designing, testing, and employing graphical computer code
US6691301B2 (en) * 2001-01-29 2004-02-10 Celoxica Ltd. System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures
US6574708B2 (en) * 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
US6477689B1 (en) * 2001-06-13 2002-11-05 The Boeing Company Architectural structure of a process netlist design tool
JP4007483B2 (ja) * 2001-07-16 2007-11-14 シャープ株式会社 高位合成装置および高位合成方法
WO2003077184A1 (en) * 2002-03-08 2003-09-18 Mentor Graphics Corporation Array transformation in a behavioral synthesis tool
US7134100B2 (en) * 2002-07-29 2006-11-07 Nec Usa, Inc. Method and apparatus for efficient register-transfer level (RTL) power estimation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05101141A (ja) * 1991-08-13 1993-04-23 Toshiba Corp 高位合成装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235475A (ja) * 2012-05-10 2013-11-21 Mitsubishi Electric Corp 回路設計支援装置及び回路設計支援方法及びプログラム
JP2013254472A (ja) * 2012-05-11 2013-12-19 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
JP2015114874A (ja) * 2013-12-12 2015-06-22 国立大学法人東京工業大学 プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法
US10089426B2 (en) 2013-12-12 2018-10-02 Tokyo Institute Of Technology Logic circuit generation device and method

Also Published As

Publication number Publication date
AU2003224667A1 (en) 2003-09-22
JP2005520238A (ja) 2005-07-07
US20030172055A1 (en) 2003-09-11
US7310787B2 (en) 2007-12-18
EP1488367A4 (en) 2005-05-11
WO2003077184A1 (en) 2003-09-18
JP2009093682A (ja) 2009-04-30
EP1488367A1 (en) 2004-12-22
US20080172646A1 (en) 2008-07-17
JP4833303B2 (ja) 2011-12-07

Similar Documents

Publication Publication Date Title
JP4833303B2 (ja) 動作合成ツールにおける配列変換
US7716622B2 (en) Memory re-implementation for field programmable gate arrays
US6412102B1 (en) Wire routing optimization
US6026219A (en) Behavioral synthesis links to logic synthesis
US7146300B2 (en) Method of co-simulating a digital circuit
US7831938B2 (en) Interactive interface resource allocation in a behavioral synthesis tool
US7058945B2 (en) Information processing method and recording medium therefor capable of enhancing the executing speed of a parallel processing computing device
US7840931B2 (en) Loop manipulation if a behavioral synthesis tool
JP4791959B2 (ja) ブロックモデリング入出力バッファー
US5912819A (en) Method for designing an architectural system
US6687894B2 (en) High-level synthesis method, high-level synthesis apparatus, method for producing logic circuit using the high-level synthesis method for logic circuit design, and recording medium
JP4212676B2 (ja) 情報処理システムおよび情報処理方法
Touiza et al. A novel methodology for accelerating bitstream relocation in partially reconfigurable systems
US8046206B1 (en) Method and system using subgraph isomorphism to configure hardware resources
JP2002269162A (ja) 動作合成方法
US10310823B2 (en) Program development support system and program development support software
JP5668404B2 (ja) 構成情報管理装置、その方法及びそのプログラム並びに動作合成装置
US6665766B1 (en) Adaptable configuration interface for a programmable logic device
JP2004054641A (ja) モジュール間インタフェースの自動合成装置、合成方法、プログラム及び可搬記憶媒体
Khare et al. High-level synthesis with synchronous and RAMBUS DRAMs
JP5835498B2 (ja) Lsi及びlsi製造方法
JP2018206195A (ja) 演算システム、演算システムの制御方法およびプログラム
US8205186B1 (en) Incremental modification of instrumentation logic
JP2004302856A (ja) 集積回路装置およびその装置に対するデータ設定装置
Rodrigues et al. On Pipelining Sequences of Data-Dependent Loops.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120306

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120309

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121102