JP6586759B2 - 設計装置、プログラム、及びfpga設計方法 - Google Patents

設計装置、プログラム、及びfpga設計方法 Download PDF

Info

Publication number
JP6586759B2
JP6586759B2 JP2015074988A JP2015074988A JP6586759B2 JP 6586759 B2 JP6586759 B2 JP 6586759B2 JP 2015074988 A JP2015074988 A JP 2015074988A JP 2015074988 A JP2015074988 A JP 2015074988A JP 6586759 B2 JP6586759 B2 JP 6586759B2
Authority
JP
Japan
Prior art keywords
ram
rams
circuit
fpga
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015074988A
Other languages
English (en)
Other versions
JP2016194850A (ja
Inventor
誓 山岸
誓 山岸
正高 峰
正高 峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015074988A priority Critical patent/JP6586759B2/ja
Priority to US15/082,277 priority patent/US9971860B2/en
Publication of JP2016194850A publication Critical patent/JP2016194850A/ja
Application granted granted Critical
Publication of JP6586759B2 publication Critical patent/JP6586759B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本願開示は、設計装置、プログラム、及びFPGA設計方法に関する。
FPGA(Field Programmable Gate Array)開発においては、設計した回路を実装するFPGAデバイスの価格が開発コストに大きく影響する。FPGAの価格はFPGAデバイスのベンダや回路規模によって異なるが、最新テクノロジを使用した大規模FPGAは非常に高価になる。FPGA開発の担当者はコストを最大限に抑えるため、一世代前のFPGAデバイスを採用したり、小さな規模のデバイスを採用するなどの工夫をしている。このため、回路設計においては、FPGAのリソースを最大限に利用することが求められている。
FPGAの回路設計においては、テクノロジやベンダに依存しないRTL(Register Transfer Level)ベースでの設計が一般的である。RAM(Random Access Memory)を除く回路部分の論理については、CAD(Computer Aided Design)による最適化などによりFPGAの実装の効率化が可能となっている。
RAMについては、FPGAデバイス毎に搭載されているRAM(ブロックRAM)の個数が決まっている。従来、設計した回路で利用するRAMの個数が、使用予定のFPGAデバイスのブロックRAMの個数よりも多くなってしまった場合には、搭載ブロックRAM数が多い上位機種のFPGAデバイスを採用したり、外部RAMを別途用意したりして対応していた。しかしながら、上位機種のFPGAデバイスを用いることは、コストの増大に直結する。また外部RAMを使用すると、RTL設計やプリント板の変更が必要になり、開発コストが上昇してしまう。
特開2007−207042号公報 特開2000−207274号公報 特開2004−178056号公報
以上を鑑みると、FPGA開発において限られた数のRAMを効率的に利用する手法が望まれる。
設計装置は、FPGAに所定個数搭載された物理的なFPGAブロックRAMのうちの少なくとも1つのFPGAブロックRAMのワード方向及びビット方向の少なくとも一方において見かけ上複数のRAMを割り当て、前記複数のRAMの各々を単一のRAMとしてアクセスするように前記複数のRAMの各々の入出力信号を制御する制御回路をハードウェア記述言語による記述として生成する処理を実行する処理部を備えたことを特徴とする。
少なくとも1つの実施例によれば、FPGA開発において限られた数のRAMを効率的に利用することができる。
FPGA開発手順の一例を示すフローチャートである。 論理RAMモデル生成の処理を示すフローチャートである。 論理RAMモデルの構成の一例を示す図である。 設計対象回路の論理モジュールとRAMとの関係の一例を示す模式図である。 複数マッピングされたRAMと論理モジュールとの関係の一例を示す模式図である。 論理RAMモデル25の構成の一例を示す図である。 RAM割り当て処理の手順の一例を示すフローチャートである。 ブロックRAM内の空きビット領域を説明するための図である。 ブロックRAM内の空きビット領域に対するRAMの割り当てを説明するための図である。 RAM割り当て処理の手順の一例を示すフローチャートである。 ブロックRAM内の空きワード領域を説明するための図である。 ブロックRAM内の空きビット領域に対するRAMの割り当てを説明するための図である。 複数マッピングされたRAMに対する制御回路を生成する処理の手順の一例を示すフローチャートである。 図13に示される処理の続きの処理を示すフローチャートである。 データ書き込み時の動作を説明するための図である。 複数マッピングされたRAMの引き出し処理の概略的な手順の一例を示す図である。 複数マッピングされたRAMの引き出し処理の詳細な手順の一例を示す図である。 複数マッピングされた論理RAMモデルの入出力信号の一例を示す図である。 図18に示す論理RAMモデルの入出力信号について説明する表である。 図18に示すマルチマッピングRAMの回路構成の一例を示す図である。 競合判定回路及び調停回路の構成の一例を示す図である。 1つのポートにアクセスした場合のマルチマッピングRAMの動作の一例を示すタイミング図である。 2つのポートに同時アクセスした場合のマルチマッピングRAMの動作の一例を示すタイミング図である。 3つのポートに同時アクセスした場合のマルチマッピングRAMの動作の一例を示すタイミング図である。 ユーザ回路とマルチマッピングRAMとの接続形態の一例を示す図である。 マルチマッピングRAMにアクセスするユーザ回路の動作の一例を示すタイミング図である。 設計装置の構成の一例を示す図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。なお以下の図面において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図1は、FPGA開発手順の一例を示すフローチャートである。なお図1及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
図1に示すFPGA開発手順の各ステップの処理は、CAD(Computer Aided Design)装置等の設計装置を用いて実行される。ステップS1において、設計装置が論理RAMモデルをRAMライブラリ11として生成する。即ち、ビット数、ワード数、及びメモリタイプ(例えばデュアルポート又はシングルポートの種別等)を規定したRAM情報10に基づいて、FPGAのブロックRAMを所望のビット数、ワード数、及びメモリタイプを有するRAMとして使用できるようにする。
図2は、論理RAMモデル生成の処理を示すフローチャートである。ステップS1−1において、FPGAにより開発したい対象の回路の仕様を記述したFPGA設計仕様書5から、RAM情報10を抽出する。ステップS1−2において、RAM情報10に規定されるビット数、ワード数、及びメモリタイプを有するRAMとしてFPGAのブロックRAMを使用できるように、設計装置によりアクセス制御回路を生成する。即ち、設計装置により、上記アクセス制御回路のハードウェア記述言語による記述を生成する。ステップS1−3において、設計装置は、FPGAブロックRAMライブラリ12とアクセス制御回路と組み合わせることで、論理RAMモデルをRTL記述として生成する。
図3は、論理RAMモデルの構成の一例を示す図である。図3に示されるように、論理RAMモデル22は、ブロックRAM21、入力制御回路22A、及び出力制御回路22Bを含む。ブロックRAM21は、データビット幅及びアドレスビット幅を設定可能となっている。入力制御回路22A及び出力制御回路22Bを設けることにより、ブロックRAM21を所望のデータビット幅及びアドレスビット幅を有するRAMとして使用可能になる。入力制御回路22Aが、ユーザ回路Aからの入力アドレスや書き込みデータをブロックRAM21に供給する。出力制御回路22Bが、ブロックRAM21からの読み出しデータをユーザロジックBに供給する。
図1に戻り、ステップS2において、設計装置によりRTLコーディングを行う。即ち、開発対象の回路のRTL記述に対して、ステップS1で生成した論理RAMモデルのRTL記述を組み込む。これにより設計装置はRTL記述13を生成する。ステップS3において、設計装置は、RTL記述13により記述された回路の動作が仕様に合った動作をするか否かを、シミュレータを用いて検証する。適宜RTL記述13の修正及びシミュレーションを繰り替えすことにより、適切なRTL記述13を生成する。
ステップS4において、設計装置により、RTL記述13に基づいてFPGAを論理合成する。即ち、RTL記述13の内容をFPGAデバイスが有するリソースに割り当てる。この時点において、RTL記述13で使用するRAM種別及び数が使用RAM情報14として判明する。FPGAデバイスに搭載されているブロックRAMの個数が、RTL記述13で使用するRAMの個数よりも少ない場合には、FPGA論理合成は失敗しエラーが通知される。FPGAデバイスに搭載されているブロックRAMの個数が、RTL記述13で使用するRAMの個数よりも大きいか等しい場合には、FPGA論理合成は成功するので、その後FPGAへの回路のレイアウト(配置及び配線)を行えばよい。
FPGA論理合成が失敗しエラーが通知されると、ステップS5において、設計装置により、1つのFPGAブロックRAMに複数のRAMを割り当てる。具体的には、使用RAM情報14と、FPGA上で使用可能なRAMの種別及び数を示すハードウェア制限情報15とに基づいて、設計装置が、1つのFPGAブロックRAMのワード方向及びビット方向の少なくとも一方において複数のRAMを割り当てる。また更に、設計装置が、1つのFPGAブロックRAMに割り当てられた複数のRAMの各々を単一のRAMとしてアクセスするように、複数のRAMの各々の入出力信号を制御する制御回路を、ハードウェア記述言語による記述として生成する。これらの処理により、複数マッピング(複数割り当て)されたRAMについての論理RAMライブラリ16とブロックRAMライブラリ17とが生成される。これらの処理の内容については、後ほど詳細に説明する。
ステップS6において、設計装置は、設計対象回路の論理ブロック(論理モジュール)に対して、複数マッピングされたRAMの引き出し処理を実行する。具体的には、設計装置が、開発対象の回路のハードウェア記述言語による記述から、単一のRAMとしてそれぞれ配置された複数のRAMの各々に接続される信号を特定し、特定された信号を1つのFPGAブロックRAMの制御回路に接続し直す。これにより、複数マッピングされたRAMを含むRTL記述18が生成される。
図4は、設計対象回路の論理モジュールとRAMとの関係の一例を示す模式図である。図4に示される例において、設計対象回路20は論理モジュール23及び論理モジュール24を含む。論理モジュール23はユーザ回路A、論理RAMモデル22、及びユーザ回路Bを含む。論理モジュール24はユーザ回路C、論理RAMモデル22、及びユーザ回路Dを含む。この状態では、RAM22がそれぞれ単一のRAMとして各モジュールに配置されている。
図5は、複数マッピングされたRAMと論理モジュールとの関係の一例を示す模式図である。図5に示される例において、設計対象回路20は論理モジュール23及び論理モジュール24を含む。論理モジュール23は、ユーザ回路A及びユーザ回路Bを含むが、論理RAMモデルを含んでいない。また論理モジュール24は、ユーザ回路C及びユーザ回路Dを含むが、論理RAMモデルを含んでいない。1つのブロックRAMに2つのRAMが割り当てられた論理RAMモデル25が、論理モジュール23及び24の外部に配置されている。ユーザ回路Aの出力信号及びユーザ回路Bの入力信号が論理モジュール23から引き出され、論理RAMモデル25に接続されている。またユーザ回路Cの出力信号及びユーザ回路Dの入力信号が論理モジュール24から引き出され、論理RAMモデル25に接続されている。
図6は、論理RAMモデル25の構成の一例を示す図である。論理RAMモデル25は、複数のRAMが割り当てられたブロックRAM21、論理回路26、及び論理回路27を含む。論理回路26及び27は、1つのFPGAブロックRAM21に割り当てられた複数のRAMの各々を単一のRAMとしてアクセスするように複数のRAMの各々の入出力信号を制御する制御回路である。論理回路26の入力信号は、図5に示されるユーザ回路A及びCのそれぞれの出力信号である。論理回路26は受け取った入力信号に基づいて、ブロックRAM21をアクセスするための信号を生成する。論理回路27はブロックRAM21からの信号を入力信号として受け取り、受け取った入力信号に基づいて出力信号を生成する。論理回路27の出力信号は、図5に示されるユーザ回路B及びDのそれぞれの入力信号となる。
図4乃至図6に示されるように、設計対象回路20から、単一のRAMとしてそれぞれ配置された複数のRAM(図4に示される論理RAMモデル22)の各々に接続される信号を特定し、特定された信号を論理RAMモデル25に接続し直す。この際、これらの特定された信号は、論理RAMモデル25に内蔵されたブロックRAM21の制御回路(論理回路26及ぶ27)に接続されることになる。
図1に戻り、ステップS7において、設計装置は、RTL記述18により記述された回路の動作が仕様に合った動作をするか否かを、シミュレータを用いて検証する。適宜RTL記述18の修正及びシミュレーションを繰り替えすことにより、適切なRTL記述18を生成する。
ステップS8において、設計装置により、RTL記述13に基づいてFPGAを論理合成する。即ち、RTL記述18の内容をFPGAデバイスが有するリソースに割り当てる。ステップS9において、設計装置により、FPGAに対する回路のレイアウト(配置及び配線)を行う。なお必要に応じて、要求速度で回路が動作するか否かのタイミング検証を行う。以上でFPGA開発処理を終了する。
図7は、RAM割り当て処理の手順の一例を示すフローチャートである。図7の処理は図1のステップS5において実行され、図7に示す各ステップの処理は、設計装置により自動時に実行されてよい。
ステップS11において、図1のステップS1で生成された論理RAMモデルをワード数の多い順にソートして、ワード数の降順に論理RAMモデルが並べられたリストを生成する。このリストを「W,WN−1,・・・,W,W」とする。ステップS12において、リスト中の各論理RAMモデルについて、ブロックRAM内の空きビット領域を計算する。
図8は、ブロックRAM内の空きビット領域を説明するための図である。図8及び以降の同様の図において、図面縦方向は複数のワード線が並べられている方向(即ちビット線が延びる方向)であり、図面横方向は複数のビット線が並べられている方向(即ちワード線が延びる方向)である。1つのブロックRAM21には1つのRAM28−1が割り当てられており、残りの領域28−2のビット数が空きビット領域のビット数となる。
図7に戻り、ステップS13において、リストに含まれる論理RAMモデルの総数Nを変数nに代入する。ステップS14において、変数mを1に設定する。ステップS15において、リスト中にWn−mが存在し且つWの空きビット領域にWn−mを割り当て可能である、との条件が満たされるか否かを判断する。当該条件が満たされる場合にはステップS16に進み、当該条件が満たされない場合にはステップS18に進む。ステップS16において、Wの空きビット領域にWn−mを割り当て、Wn−mをリストから削除する。
図9は、ブロックRAM内の空きビット領域に対するRAMの割り当てを説明するための図である。1つのブロックRAM21には2つのRAM28−1及び28−3が割り当てられており、残りの領域28−4のビット数が空きビット領域のビット数となる。RAM28−1が当初から存在するRAM(W)であり、RAM28−3が後ほど割り当てられたRAM(Wn−m)である。なお、リスト「W,WN−1,・・・,W,W」はワード数の多い順(降順)に並べられているので、Wのワード線数よりもWn−mのワード線数の方が少なく、図9において、RAM28−3の方がRAM28−1よりも縦方向の幅が短くなっている。
図7に戻り、ステップS17において、Wn−mを割り当て後のWの残りビット領域を再計算する。即ち、例えば図9の例においては、空きビット領域28−4のビット数を計算する。ステップS18において、変数mを1増加させる。
ステップS19において、n−mが0より大きいか否かを判定する。n−mが0より大きい場合にはステップS15に戻り、以降の処理を繰り返す。即ち、Wの空きビット領域に対する次のWn−mの割り当て処理を実行する。n−mが0より大きくない場合にはステップS20に進む。
ステップS20において、変数nを1減少させる。ステップS21において、nが1より大きく且つリスト中Wが存在しない、との条件が満たされるか否かを判定する。当該条件が満たされる場合にはステップS20に戻り、変数nを更に1減少させ、次のWの存否を判定する。
ステップS21の条件が満たされない場合には、ステップS22において、nが1より大きいか否かを判定する。nが1より大きい場合、ステップS14に戻り、以降の処理を繰り返す。即ち、新規Wに対する割り当て処理を実行する。nが1より大きくない場合、図7の処理は終了する。
図10は、RAM割り当て処理の手順の一例を示すフローチャートである。図10の処理は、図1のステップS5において図7の処理の後に実行され、図10に示す各ステップの処理は、設計装置により自動時に実行されてよい。
ステップS31において、図7の処理の終了時に存在するリスト中の論理RAMモデルをビット数の多い順にソートして、ビット数の降順に論理RAMモデルが並べられたリストを生成する。このリストを「W,WK−1,・・・,W,W」とする。なおこの際比較対象とするビット数は、複数のRAMが図7の処理で割り当てられた論理RAMモデルについては、複数のRAMのビット数の合計(総ビット数)を用いる。ステップS32において、リスト中の各論理RAMモデルについて、ブロックRAM内の空きワード領域を計算する。
図11は、ブロックRAM内の空きワード領域を説明するための図である。1つのブロックRAM21には1つのRAM29−1が割り当てられており、残りの領域29−2のワード数が空きワード領域のワード数となる。
図10に戻り、ステップS33において、リストに含まれる論理RAMモデルの総数Kを変数kに代入する。ステップS34において、変数mを1に設定する。ステップS35において、リスト中にWk−mが存在し且つWの空きビット領域にWk−mを割り当て可能である、との条件が満たされるか否かを判断する。当該条件が満たされる場合にはステップS36に進み、当該条件が満たされない場合にはステップS38に進む。ステップS36において、Wの空きビット領域にWk−mを割り当て、Wk−mをリストから削除する。
図12は、ブロックRAM内の空きビット領域に対するRAMの割り当てを説明するための図である。1つのブロックRAM21には2つのRAM29−1及び29−3が割り当てられており、残りの領域29−4のワード数が空きワード領域のワード数となる。RAM29−1が当初から存在するRAM(W)であり、RAM29−3が後ほど割り当てられたRAM(Wk−m)である。なお、リスト「W,WK−1,・・・,W,W」はビット数の多い順(降順)に並べられているので、Wのビット線数よりもWk−mのビット線数の方が少なく、図9において、RAM29−3の方がRAM29−1よりも横方向の幅が短くなっている。
図10に戻り、ステップS37において、Wk−mを割り当て後のWの残りワード領域を再計算する。即ち、例えば図12の例においては、空きワード領域29−4のワード数を計算する。ステップS38において、変数mを1増加させる。
ステップS39において、k−mが0より大きいか否かを判定する。k−mが0より大きい場合にはステップS35に戻り、以降の処理を繰り返す。即ち、Wの空きビット領域に対する次のWk−mの割り当て処理を実行する。k−mが0より大きくない場合にはステップS40に進む。
ステップS40において、変数kを1減少させる。ステップS41において、kが1より大きく且つリスト中Wが存在しない、との条件が満たされるか否かを判定する。当該条件が満たされる場合にはステップS40に戻り、変数kを更に1減少させ、次のWの存否を判定する。
ステップS41の条件が満たされない場合には、ステップS42において、kが1より大きいか否かを判定する。kが1より大きい場合、ステップS34に戻り、以降の処理を繰り返す。即ち、新規Wに対する割り当て処理を実行する。kが1より大きくない場合、図7の処理は終了する。
図13は、複数マッピングされたRAMに対する制御回路を生成する処理の手順の一例を示すフローチャートである。図13の処理は図1のステップS5において実行され、図13に示す各ステップの処理は、設計装置により自動時に実行されてよい。この図13の処理により、1つのFPGAブロックRAMに割り当てられた複数のRAMの各々を単一のRAMとしてアクセス可能となるように、複数のRAMの各々の入出力信号を制御する制御回路が、ハードウェア記述言語による記述として生成される。
なお図13に示される処理は、複数マッピングされた論理RAMモデルの各々に対して実行される。即ち、1つの論理RAMモデルに着目した場合、複数のRAMが割り当てられた1つのFPGAブロックRAMに対して、図13に示される処理が実行されてよい。まず複数マッピングされた論理RAMモデル30(1つの論理RAMモデル)のうち、当該RAMモデルにマッピングされた複数のRAMのリスト31が、ステップS1において用いられる。
ステップS51乃至S53のループにおいて、複数マッピングされたRAMのリスト31中に存在する各RAMに対して、ステップ52におけるポート番号割り当て処理を実行する。具体的には、各RAMに対して入出力ポートを割り当て、更に入出力ポートにポート番号を割り当てる。ポート番号は、リスト中の複数のRAMに対して1から順番(例えば昇順)に割り当てられた連続する番号であってよい。
ステップS54において、設計装置は、競合判定回路及び競合調停回路を生成する。即ち、設計装置は、競合判定回路及び競合調停回路のハードウェア記述言語による記述を生成する。この際、外部からのアクセス対象のポートに対するアクセス要求が、外部から供給されるENABLE信号のアサートとして通知されるとする。競合判定回路は、複数のポートに対するENABLE信号のアサートが同一サイクルで発生した場合に、競合が発生したと判定するように設計される。また競合調停回路は、複数のRAMに対するアクセス競合が存在する場合に複数のRAMに順番にアクセスを可能にするよう設計される。より具体的には、競合調停回路は、競合が発生した場合に競合が発生している複数のポートのうちでポート番号の若い順番にアクセス権を与えるように設計される。即ち競合調停回路は、ラウンドロビン方式でポートにアクセス権を与える。具体的な回路形態の一例としては、競合調停回路からの信号に基づいて、ポートセレクタ回路が、アクセス権の与えられたポートを選択するポート選択信号を出力してよい。なおポートセレクタ回路は、アクセス競合の存在しない場合には、外部からのENABLE信号のアサートに応答して、当該アサート状態のENABLE信号に対応するポートを選択するようなポート選択信号を出力してよい。競合判定回路及び競合調停回路を自動で生成することにより、1つのFPGAブロックRAMに複数RAMのマッピングをしても、それに起因して発生する追加の設計作業の手間は最小限ですむ。従って、適切な動作をするFPGA回路をコスト増なく開発することができる。
ステップS55乃至S57のループにおいて、マッピングされた複数のRAMのそれぞれのアドレス開始位置について、当該アドレス開始位置をポート番号に対応付けする処理を実行する。なおマッピングされた複数のRAMのそれぞれのアドレス開始位置に関する情報は、複数マッピングされた論理RAMモデル30に含まれるアドレス開始位置情報32として提供される。設計装置は例えば、各ポート番号とアドレス開始位置とを対応付けたテーブルを生成してよい。
ステップS58において、設計装置はアドレス計算回路を生成する。即ち、設計装置は、アドレス計算回路のハードウェア記述言語による記述を生成してよい。具体的には、複数のポートのうちの1つを上記ポート選択信号に応じて選択し、選択されたポートに外部から入力されるアドレスデータにオフセットを加算するアドレス選択及びオフセット調整回路を生成する。アドレス選択及びオフセット調整回路は、オフセットの加算により、外部から入力されるアドレスを変換して複数のRAMのそれぞれにアクセスするアドレスを生成する。アドレス選択及びオフセット調整回路を自動で生成することにより、1つのFPGAブロックRAMに複数RAMのマッピングをしても、それに起因して発生する追加の設計作業の手間は最小限ですむ。従って、適切な動作をするFPGA回路をコスト増なく開発することができる。
ステップS59において、設計装置はライトイネーブルセレクト回路を生成する。即ち、設計装置は、ライトイネーブルセレクト回路のハードウェア記述言語による記述を生成する。ライトイネーブルセレクト回路は、複数のポートのうちの1つをポート選択信号に応じて選択し、選択されたポートに外部から入力されるライトイネーブル信号をRAMに印加する。
ステップS60において、設計装置は書き込みアドレスのデータを読み出すリード制御回路を生成する。即ち、設計装置は、リード制御回路のハードウェア記述言語による記述を生成する。ビット方向に複数のRAMが割り当てられている場合には、あるワードアドレスに対する書き込み動作を1つのRAMに対して実行すると、他のRAMの当該ワードアドレスの格納データが破壊されてしまう。これは、1つの物理的なブロックRAMに対して、見かけ上複数のRAMを割り当てているからである。そこでビット方向に複数のRAMが割り当てられている場合には、書き込みワードアドレスのデータを読み出して、書き込み対象となるRAMに対応するビット位置のデータを書き込みデータで置き換え、置き換えた後のデータをRAMに書き込む。即ち、ビット方向に割り当てられた複数のRAMからデータを読み出し、外部からの書き込みデータにより読み出したデータの一部を置き換え、置き換えた後のデータを複数のRAMに書き込む。この書き込み処理は以下に説明するライトデータ回路により実行される。
ステップS61において、設計装置はライトデータ生成回路を生成する。即ち、設計装置は、ライトデータ生成回路のハードウェア記述言語による記述を生成してよい。ビット方向に複数のRAMが割り当てられていない場合、ライトデータ生成回路は、複数のポートのうちの1つをポート選択信号に応じて選択し、選択されたポートに外部から入力される書き込みデータをRAMに入力する。ビット方向に複数のRAMが割り当てられている場合、ライトデータ生成回路は、書き込みワードアドレスのデータを読み出して、書き込み対象となるRAMに対応するビット位置のデータを書き込みデータで置き換え、置き換えた後のデータをRAMに供給する。ライトデータ生成回路を自動で生成することにより、1つのFPGAブロックRAMに複数RAMのマッピングをしても、それに起因して発生する追加の設計作業の手間は最小限ですむ。従って、適切な動作をするFPGA回路をコスト増なく開発することができる。
図15は、データ書き込み時の動作を説明するための図である。読み出しデータ40に対して、書き込みデータ41を適切なビット位置に挿入することにより、書き込みデータ41によりデータが部分的に置き換えられた読み出しデータ40Aが得られる。この読み出しデータ40Aが、書き込みデータとして、複数のRAM(1つのブロックRAM)に書き込まれる
図14は、図13に示される処理の続きの処理を示すフローチャートである。ステップS62において、設計装置はVALID信号を生成するVALID信号制御回路を生成する。即ち、設計装置は、VALID信号制御回路のハードウェア記述言語による記述を生成してよい。具体的には、VALID信号制御回路は、ポート選択信号が示す出力ポートから出力されるVALID信号を、当該ポートに対応するRAMの処理が終了したときにアサート状態にする。更にVALID信号制御回路は、アクセス要求されていないポートについては、VALID信号をアサート状態にしてよい。このVALID信号制御回路は、複数のRAMのうちアクセス可能なRAMを示す信号を出力する回路として機能する。VALID信号制御回路を自動で生成することにより、1つのFPGAブロックRAMに複数RAMのマッピングをしても、それに起因して発生する追加の設計作業の手間は最小限ですむ。従って、適切な動作をするFPGA回路をコスト増なく開発することが可能となる。
ステップS63において、設計装置は出力データセレクト回路を生成する。即ち、設計装置は、出力データセレクト回路のハードウェア記述言語による記述を生成してよい。具体的には、出力データセレクト回路は、ポート選択信号が示す出力ポートから、RAMのアクセス処理に必要なレイテンシに合わせて、RAMからの読み出し信号を出力する。書き込み動作の場合は、出力データはドントケアとなる。
以上の処理により、マルチマッピングRAMラッパー回路34が生成される。このマルチマッピングRAMラッパー回路34は、複数のRAMか割り当てられた1つのFPGAブロックRAMと、図13及び図14の処理で生成された種々の制御回路とを含む。
図16は、複数マッピングされたRAMの引き出し処理の概略的な手順の一例を示す図である。図16に示す処理は、図1のステップS6において実行される。図16に示す各ステップの処理は、設計装置により自動的に実行されてよい。
ステップS71において、設計装置は、設計対象回路中に存在するのRAMのうち、他のRAMと一緒にFPGAブロックRAMに割り当てられた全てのRAMについて、入出力信号を抽出する。この抽出処理により、各RAMについてRAMの識別情報と入出力信号の識別情報とを含むマッピングRAM情報45が得られる。
ステップS72において、設計装置が、RTL記述を修正する。具体的には、設計装置が、マッピングRAM情報45により特定される入出力信号を、論理RAMライブラリ16中の論理RAMモデルの制御回路に接続し直す。これにより、複数マッピングされたRAMを含む修正後のRTL記述18が生成される。
このようにRTL記述の修正はRAMの入出力信号のつなぎ替えのみであり、RTL記述の実質的な内容を修正するものではない。またRAMの入出力信号のつなぎ替えは自動的に行うことができる。従って、1つのFPGAブロックRAMに複数RAMのマッピングをしても、それに起因して発生する追加の設計作業の手間は最小限ですむ。従って、適切な動作をするFPGA回路をコスト増なく開発することが可能となる。
図17は、複数マッピングされたRAMの引き出し処理の詳細な手順の一例を示す図である。図17に示す処理は、図1のステップS6において実行される。図17に示す各ステップの処理は、設計装置により自動的に実行されてよい。
なお図17に示される処理は、複数マッピングされた論理RAMモデルの各々に対して実行される。即ち、1つの論理RAMモデルに着目した場合、複数のRAMが割り当てられた1つのFPGAブロックRAMと制御回路とを含む1つの論理RAMモデルに対して、図17に示される処理が実行されてよい。
ステップS81において、1つの論理RAMモデル(マルチマッピングRAMモデル)50に割り当てられている複数のRAMの各々について、設計装置は、RTL記述13中の対応するRAMの入出力信号とRAMが配置されている階層とを抽出する。この抽出処理により、マッピングされたRAMのリスト45−1、マッピングされたRAMの階層情報45−2、及びマッピングされたRAMのIF情報(入出力信号情報)45−3が得られる。
ステップS82において、マッピングされたRAMのリスト45−1により特定される全てのRAMが、RTL記述13において同一階層に配置されているか否かを判定する。全てのRAMが同一階層に配置されている場合、ステップS94において、複数マッピング論理RAMモデル50を当該階層に配置する。ステップS95において、マッピングされたRAMのIF情報45−3により特定される入出力信号を、上記階層に配置された複数マッピング論理RAMモデル50に接続する。
RAMが同一階層に配置されていない場合、ステップS83及びS91で構成されるループにおいて、マッピングされたRAMのリスト45−1中の複数RAMの一つ一つについて、ステップS84乃至90の処理を順次実行する。まずステップS84において、リスト45−1中の着目RAMのRTL記述13における階層レベルをyに代入する。ここで階層レベル1が最上位階層である。
ステップS85及び90で構成されるループにおいて、yを1ずつ減少させながら、ステップS86乃至88の処理を実行する。ステップS86乃至88では、マッピングされたRAMのIF情報45−3により特定される入出力信号の一つ一つについて、当該信号をyよりも1つ上の階層に引き出すようにRTL記述を修正する処理を順次実行する。
以上のステップS83及びS91の処理により、マッピングされたRAMのIF情報45−3により特定される入出力信号が全て最上位階層まで引き出される。その後ステップS92において、複数マッピング論理RAMモデル50を最上位階層に配置する。ステップS93において、最上位階層まで引き出した入出力信号を、最上位階層に配置された複数マッピング論理RAMモデル50に接続する。以上の処理により、修正されたRTL記述18が生成される。
図18は、複数マッピングされた論理RAMモデルの入出力信号の一例を示す図である。図18に示すマルチマッピングRAM51は、RAM52、RAM53、及びRAM54を含む。RAM52は、イネーブル信号EN1、6ビットのアドレス信号AD1[5:0]、8ビットのデータ信号DI1[7:0]、及びライトイネーブル信号WE1を入力信号として受け取る。RAM52は、8ビットのデータ信号DO1[7:0]及びVALID信号VAL1を出力信号として出力する。RAM53は、イネーブル信号EN2、8ビットのアドレス信号AD2[7:0]、20ビットのデータ信号DI2[19:0]、及びライトイネーブル信号WE2を入力信号として受け取る。RAM53は、20ビットのデータ信号DO2[19:0]及びVALID信号VAL2を出力信号として出力する。RAM54は、イネーブル信号EN3、9ビットのアドレス信号AD3[8:0]、16ビットのデータ信号DI3[15:0]、及びライトイネーブル信号WE3を入力信号として受け取る。RAM54は、16ビットのデータ信号DO3[15:0]及びVALID信号VAL3を出力信号として出力する。マルチマッピングRAM51は更に、クロック信号CLK及びシステムリセット信号XRSTを入力信号として受け取る。
図19は、図18に示す論理RAMモデルの入出力信号について説明する表である。I/Oは入力(I)と出力(O)との区別を示す。P/Nは信号の極性を示す。表においてRAM1乃至RAM3は、図18のRAM52乃至54のことである。「bit」欄が「−」の信号はビット幅が1ビットの信号である。
図20は、図18に示すマルチマッピングRAMの回路構成の一例を示す図である。図20に示すマルチマッピングRAMは、競合判定回路61、調停回路62、ポートセレクタ63、VALIDセレクタ64、アドレス選択&オフセット調整回路65、ライトイネーブルセレクタ66、及び入力データセレクタ67を含む。マルチマッピングRAMは更に、フリップフロップ68、フリップフロップ69、出力データセレクタ70、及びFPGAブロックRAM71を含む。
競合判定回路61は、イネーブル信号EN1乃至EN3の何れかが重複してアサート状態になると、競合状態を示す信号をアサートする。調停回路62は、競合判定回路61からの競合状態を示す信号に基づいて、競合状態にあるポート間での調停を行う信号を出力する。この調停を行う信号は、ポート1及びポート2の間での調停を行う信号、ポート2及びポート3の間での調停を行う信号、ポート1及びポート3の間での調停を行う信号、ポート1乃至ポート3の間での調停を行う信号を含む。
ポートセレクタ63は、競合判定回路61からの競合状態を示す信号に基づいて、調停回路62からのポート間での調停を行う複数の信号のうちの何れか1つ又は外部から入力されるそのままのイネーブル信号EN1乃至EN3を選択して出力する。このポートセレクタ63の出力信号は、選択したポート即ちアクセス許可したポートを示すポート選択信号である。VALIDセレクタ64は、競合判定回路61からの競合状態を示す信号に基づいて、調停回路62からの複数の信号のうちの何れか1つ又は固定値"111"を選択して出力する。このVALIDセレクタ64の出力信号は、フリップフロップ69によりFPGAブロックRAM71の読み出し動作のレイテンシ分だけ遅延され、アクセス可能なポートを示すVALID信号VAL1乃至VAL3として出力される。
アドレス選択&オフセット調整回路65は、ポート選択信号が示すポートの入力アドレス(AD1乃至AD3の何れか1つ)を選択し、ポート選択信号が示すポートに対応するオフセット値を選択アドレスに加算することで、変換後のアドレスを生成する。変換後のアドレスはFPGAブロックRAM71に入力される。ライトイネーブルセレクタ66は、ポート選択信号が示すポートのライトイネーブル信号(WE1乃至WE3の何れか1つ)を選択し、選択されたライトイネーブル信号をFPGAブロックRAM71に供給する。入力データセレクタ67は、ポート選択信号が示すポートの入力データ信号(DI1乃至DI3の何れか1つ)を選択し、選択された入力データ信号をFPGAブロックRAM71に供給する。
フリップフロップ68は、FPGAブロックRAM71の読み出し動作のレイテンシ分だけポート選択信号を遅延し、遅延されたポート選択信号を出力データセレクタ70に供給する。出力データセレクタ70は、FPGAブロックRAM71から出力される読み出しデータを、遅延されたポート選択信号が示すポートの出力信号として主力する。この出力信号が、マルチマッピングRAM51の読み出しデータ(DO1乃至DO3の何れか1つ)となる。
図21は、競合判定回路及び調停回路の構成の一例を示す図である。図21において競合判定回路61は、AND回路80乃至83、OR回路84、AND回路85、OR回路86、及びNAND回路87を含む。イネーブル信号EN1乃至EN3が、1つが反転され残り2つが非反転の状態でAND回路80乃至82に印加され、また3つとも非反転の状態でAND回路83に印加される。これにより、AND80乃至82の出力はそれぞれ、ポート1及び2の競合時、ポート2及び3の競合時、ポート1及び3の競合時、及びポート1乃至3の競合時にHIGHにアサートされる。OR回路84、AND回路85、OR回路86、及びNAND回路87は、イネーブル信号EN1乃至EN3を入力として、ポート間に競合の無い時にHIGHにアサートされる信号を生成する。即ち、NAND回路87の出力は、イネーブル信号EN1乃至EN3のうち1つのみHIGH又は全てがLOWのときにHIGHになる。
調停回路62は、トグル回路91乃至93、3進カウンタ94、デコーダ95、インバータ101乃至106を含む。トグル回路91乃至93はそれぞれ、ポート1及び2の競合時、ポート2及び3の競合時、及びポート1及び3の競合時にそれぞれアサートされる信号をイネーブル信号として受け取り、クロック信号CLKに同期してトグル動作をする。3進カウンタ94は、ポート1乃至3の競合時にアサートされる信号をイネーブル信号として受け取り、クロック信号CLKに同期して0〜2の間で循環的に繰り返しカウントアップする。デコーダ95は、3進カウンタ94のカウント値出力をデコードすることにより、3ビットの出力のうちの1つのビットを順番にアサート状態にする。
ポートセレクタ63は、無競合時にP0入力を選択し、ポート1及び2の競合時にP1入力を選択し、ポート2及び3の競合時にP2入力を選択し、ポート1及び3の競合時にP3入力を選択し、ポート1乃至3の競合時にP4入力を選択する。具体的には、無競合時には、P0入力に印加されるイネーブル信号EN1乃至EN3が、そのままポート選択信号の第1ビット乃至第3ビットとして出力される。ポート1及び2の競合時には、P1入力に印加される調停回路62のトグル回路91の出力信号と、その反転信号と、固定値"0"とがそれぞれポート選択信号の第1ビット乃至第3ビットとして出力される。ポート2及び3の競合時には、P2入力に印加される固定値"0"と、調停回路62のトグル回路92の出力信号と、その反転信号とがそれぞれポート選択信号の第1ビット乃至第3ビットとして出力される。ポート1及び3の競合時には、P3入力に印加される調停回路62のトグル回路93の出力トグル信号と、固定値"0"と、トグル信号の反転信号とがそれぞれポート選択信号の第1ビット乃至第3ビットとして出力される。またポート1乃至3の競合時には、P4入力に印加される調停回路62のデコーダ95の3ビットの出力信号が、ポート選択信号の第1ビット乃至第3ビットとして出力される。
VALIDセレクタ64は、無競合時にV0入力を選択し、ポート1及び2の競合時にV1入力を選択し、ポート2及び3の競合時にV2入力を選択し、ポート1及び3の競合時にV3入力を選択し、ポート1乃至3の競合時にV4入力を選択する。具体的には、無競合時には、V0入力に印加される固定値"111"が、VALID信号の第1ビット乃至第3ビットとして出力される。ポート1及び2の競合時には、V1入力に印加される調停回路62のトグル回路91の出力信号と、その反転信号と、固定値"1"とがそれぞれVALID信号の第1ビット乃至第3ビットとして出力される。ポート2及び3の競合時には、V2入力に印加される固定値"1"と、調停回路62のトグル回路92の出力信号と、その反転信号とがそれぞれVALID信号の第1ビット乃至第3ビットとして出力される。ポート1及び3の競合時には、V3入力に印加される調停回路62のトグル回路93の出力トグル信号と、固定値"1"と、トグル信号の反転信号とがそれぞれVALID信号の第1ビット乃至第3ビットとして出力される。またポート1乃至3の競合時には、V4入力に印加される調停回路62のデコーダ95の3ビットの出力信号が、全ビット反転されてVALID信号の第1ビット乃至第3ビットとして出力される。
図22は、1つのポートにアクセスした場合のマルチマッピングRAMの動作の一例を示すタイミング図である。サイクルT1において、VALID信号VAL1がHIGHのアサート状態にあり、ポート1はアクセス可能状態であることが分かる。サイクルT2において、ポート1のイネーブル信号EN1とライトイネーブル信号WE1とをアサートし、アドレスad1(0)とデータdi1(1)とを印加することにより、ポート1のRAMに対する書き込み動作が実行される。またサイクルT6において、ポート1のイネーブル信号EN1とライトイネーブル信号WE1とをそれぞれアサート及びネゲートし、アドレスad1(1)を印加することにより、ポート1のRAMからデータdo1(1)を読み出す動作が実行される。この例のようにポート間でアクセスが競合しない場合には、アクセス要求したサイクルの次のサイクルで処理が完了するため、VALID信号VAL1は常時HIGHとなっている。
図23は、2つのポートに同時アクセスした場合のマルチマッピングRAMの動作の一例を示すタイミング図である。サイクルT1において、VALID信号VAL1及びVAL2がHIGHのアサート状態にあり、ポート1及び2はアクセス可能状態であることが分かる。サイクルT2において、ポート1のイネーブル信号EN1とライトイネーブル信号WE1とをアサートし、ポート2のイネーブル信号EN2をアサートする。即ち、ポート1とポート2とに同時にアクセスを要求する。
サイクルT3において、ポート1のVALID信号VAL1がアサート状態となることから、ポート1についてはアクセスリクエストが完了したことが分かる。従って、その次のサイクルT4では、ポート1に対する新たなアドレス入力ada(1)を印加している。またサイクルT3において、ポート2のVALID信号VAL2がネゲート状態となることから、ポート2についてはアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT4まで、ポート2に対するアドレス入力ad2(0)をそのまま維持している。
サイクルT4において、ポート1のVALID信号VAL1がネゲート状態となることから、ポート1についてはアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT5まで、ポート1に対するアドレス入力ada(1)をそのまま維持している。またサイクルT4において、ポート2のVALID信号VAL2がアサート状態となることから、ポート2についてはアクセスリクエストが完了したことが分かる。従って、その次のサイクルT5では、ポート2に対する新たなアドレス入力ad2(1)を印加している。
以降同様にしてポート1とポート2とが交互にアクセス許可され、VALID信号VAL1とVAL2とが交互にアサートされる。
図24は、3つのポートに同時アクセスした場合のマルチマッピングRAMの動作の一例を示すタイミング図である。サイクルT1において、VALID信号VAL1乃至VAL3がHIGHのアサート状態にあり、ポート1乃至3はアクセス可能状態であることが分かる。サイクルT2において、ポート1乃至3のイネーブル信号EN1乃至EN3をアサートする。即ち、ポート1乃至3に同時にアクセスを要求する。
サイクルT3において、ポート1のVALID信号VAL1がアサート状態となることから、ポート1についてはアクセスリクエストが完了したことが分かる。従って、その次のサイクルT4では、ポート1に対する新たなアドレス入力ada(1)を印加している。またサイクルT3において、ポート2のVALID信号VAL2がネゲート状態となることから、ポート2についてはアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT4まで、ポート2に対するアドレス入力ad2(0)をそのまま維持している。サイクルT3においては更に、ポート3のVALID信号VAL3がネゲート状態となることから、ポート3についてもアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT4まで、ポート3に対するアドレス入力ad3(0)をそのまま維持している。
サイクルT4において、ポート1のVALID信号VAL1がネゲート状態となることから、ポート1についてはアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT5まで、ポート1に対するアドレス入力ada(1)をそのまま維持している。またサイクルT4において、ポート2のVALID信号VAL2がアサート状態となることから、ポート2についてはアクセスリクエストが完了したことが分かる。従って、その次のサイクルT5では、ポート2に対する新たなアドレス入力ad2(1)を印加している。サイクルT4においては更に、ポート3のVALID信号VAL3がネゲート状態となることから、ポート3についてはアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT5まで、ポート3に対するアドレス入力ad3(0)をそのまま維持している。
サイクルT5において、ポート1のVALID信号VAL1がネゲート状態となることから、ポート1についてはアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT6まで、ポート1に対するアドレス入力ada(1)をそのまま維持している。またサイクルT5において、ポート2のVALID信号VAL2がネゲート状態となることから、ポート2についてはアクセスリクエストが完了していないことが分かる。従って、その次のサイクルT6まで、ポート2に対するアドレス入力ad2(1)をそのまま維持している。サイクルT5においては更に、ポート3のVALID信号VAL3がアサート状態となることから、ポート3についてはアクセスリクエストが完了したことが分かる。従って、その次のサイクルT6では、ポート3に対する新たなアドレス入力ad3(1)を印加している。
以降同様にしてポート1乃至ポート3が1つずつ順番にアクセス許可され、VALID信号VAL1乃至VAL3とが1つずつ順番にアサートされる。
図25は、ユーザ回路とマルチマッピングRAMとの接続形態の一例を示す図である。ユーザ回路200は、マルチマッピングRAM201のn個のRAMにアクセスしてデータ書き込みやデータ読み出しのアクセス動作を実行する。ユーザ回路200からマルチマッピングRAM201へは、n個のRAMに対応するn個のイネーブル信号ENn、n個のライトイネーブル信号WEn、n個のアドレス信号ADn、及びn個の書き込みデータ信号DInを印加する。マルチマッピングRAM201からユーザ回路200へは、n個のRAMに対応するn個の読み出しデータ信号DOn及びn個のVALID信号VALnが供給される。
ユーザ回路200には、VALID信号を監視し、VALID信号がアサート状態の時のみアクセスできるように設計しておく。このような機能をユーザ回路200に予め設けておくことにより、複数マッピングされた論理RAMに対して競合アクセスが発生しても、VALID信号に基づいて適切なアクセス動作を実現することができる。従って、RAMリソースが不足したことが判明した時点で複数のRAMを単一のブロックRAMに割り当てた場合でも、最初に生成したユーザ回路200のRTL記述を変更する必要がない。
図26は、マルチマッピングRAMにアクセスするユーザ回路の動作の一例を示すタイミング図である。ユーザ回路200は、サイクルT2において、VALID信号VALnがHIGHのアサート状態にあり、ポートnはアクセス可能状態であることが分かる。サイクルT3において、ユーザ回路200は、ポートnのイネーブル信号ENnとライトイネーブル信号WEnとをアサートし、アドレス信号とデータ信号とを印加することにより、ポートnのRAMに対する書き込み動作を実行する。またサイクルT8において、VALID信号VALnがHIGHのアサート状態にあり、ポートnはアクセス可能状態であることが分かる。サイクルT9において、ユーザ回路200は、ポートnのイネーブル信号ENnをアサートし、アドレス信号ad1(2)を印加することにより、ポートnのRAMに対する読み出し動作を実行しようとする。しかしこのとき、ユーザ回路200は他のポートに対してアクセス処理を実行しており、ポートnのアクセス処理はサイクルT12まで完了しない。サイクルT12においてVALID信号VALnがHIGHのアサート状態になると、ユーザ回路200はポートnに対する読み出し動作が完了したことを認識し、次のサイクルT13においてアドレス信号入力を停止する。
図27は、設計装置の構成の一例を示す図である。図27に示されるように、本願開示の設計処理を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図27の装置は、コンピュータ510と、コンピュータ510に接続されるディスプレイ装置520、通信装置523、及び入力装置よりなる。入力装置は、例えばキーボード521及びマウス522を含む。コンピュータ510は、CPU(Central Processing Unit)511、RAM512、ROM513、ハードディスク等の二次記憶装置514、可換媒体記憶装置515、及びインターフェース516を含む。
キーボード521及びマウス522は、ユーザとのインターフェースを提供するものであり、コンピュータ510を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置520は、コンピュータ510で処理された結果等を表示すると共に、コンピュータ510を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置523は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
本願開示の設計装置は、コンピュータ510が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置515に装着可能な記憶媒体Mに記憶されており、記憶媒体Mから可換媒体記憶装置515を介して、RAM512或いは二次記憶装置514にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体(図示せず)に記憶されており、この記憶媒体から通信装置523及びインターフェース516を介して、RAM512或いは二次記憶装置514にロードされる。
キーボード521及び/又はマウス522を介してユーザからプログラム実行指示があると、CPU511は、記憶媒体M、遠隔地記憶媒体、或いは二次記憶装置514からプログラムをRAM512にロードする。プロセッサであり演算回路でもあるCPU511は、RAM512の空き記憶空間をワークエリアとして使用して、RAM512にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおROM513は、コンピュータ510の基本動作を制御するための制御プログラムが格納されている。
上記コンピュータプログラムを実行することにより、コンピュータ510が、ここまでにおいて説明された設計動作を実行する。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
10 RAM情報
11 RAMライブラリ
12 FPGAブロックRAMライブラリ
13 RTL記述
14 使用RAM情報
15 ハードウェア制限情報
16 論理RAMライブラリ
17 ブロックRAMライブラリ
18 RTL記述
20 設計対象回路
21 ブロックRAM
22 論理RAMモデル

Claims (10)

  1. FPGAに所定個数搭載された物理的なFPGAブロックRAMのうちの少なくとも1つのFPGAブロックRAMのワード方向及びビット方向の少なくとも一方において見かけ上複数のRAMを割り当て、前記複数のRAMの各々を単一のRAMとしてアクセスするように前記複数のRAMの各々の入出力信号を制御する制御回路をハードウェア記述言語による記述として生成する処理を実行する処理部、
    を備えたことを特徴とする設計装置。
  2. 前記処理部は、1つのFPGAブロックRAMには1つのRAMのみを割り当てることにより生成された開発対象の回路のハードウェア記述言語による記述から、単一のRAMとして配置された前記複数のRAMの各々に接続される信号を特定し、前記特定された信号を前記1つのFPGAブロックRAMの前記制御回路に接続し直す処理を、更に実行する請求項1に記載の設計装置。
  3. 前記制御回路は、前記複数のRAMに対するアクセス競合が存在する場合に前記複数のRAMに順番にアクセスを可能にする調停回路を含む請求項1又は2記載の設計装置。
  4. 前記制御回路は、外部から入力されるアドレスを変換して前記複数のRAMにアクセスするアドレスを生成するアドレス変換回路を含む請求項1乃至3いずれか一項記載の設計装置。
  5. 前記制御回路は、前記複数のRAMのうちアクセス可能なRAMを示す信号を出力する回路を含む請求項1乃至4いずれか一項記載の設計装置。
  6. 前記1つのFPGAブロックRAMのビット方向において複数のRAMが割り当てられている場合、前記制御回路は、ビット方向に割り当てられた前記複数のRAMからデータを読み出し、外部からの書き込みデータにより前記読み出したデータの一部を置き換え、前記置き換えた後のデータを前記複数のRAMに書き込む回路を含む請求項1乃至5いずれか一項記載の設計装置。
  7. FPGAに所定個数搭載された物理的なFPGAブロックRAMのうちの少なくとも1つのFPGAブロックRAMのワード方向及びビット方向の少なくとも一方において見かけ上複数のRAMを割り当て、
    前記複数のRAMの各々を単一のRAMとしてアクセスするように前記複数のRAMの各々の入出力信号を制御する制御回路をハードウェア記述言語による記述として生成する、
    各処理をコンピュータに実行させるプログラム。
  8. 1つのFPGAブロックRAMには1つのRAMのみを割り当てることにより生成された開発対象の回路のハードウェア記述言語による記述から、単一のRAMとして配置された前記複数のRAMの各々に接続される信号を特定し、前記特定された信号を前記1つのFPGAブロックRAMの前記制御回路に接続し直す処理を更にコンピュータに実行させる請求項7に記載のプログラム。
  9. FPGAに所定個数搭載された物理的なFPGAブロックRAMのうちの少なくとも1つのFPGAブロックRAMのワード方向及びビット方向の少なくとも一方において見かけ上複数のRAMを割り当て、
    前記複数のRAMの各々を単一のRAMとしてアクセスするように前記複数のRAMの各々の入出力信号を制御する制御回路をハードウェア記述言語による記述として生成する
    処理をコンピュータに実行させるFPGA設計方法。
  10. 前記処理部は、1つのFPGAブロックRAMのワード方向及びビット方向の少なくとも一方において、ビット数またはワード数の大きい順に複数のRAMを割り当てる処理を実行することを特徴とする請求項1に記載の設計装置。
JP2015074988A 2015-04-01 2015-04-01 設計装置、プログラム、及びfpga設計方法 Expired - Fee Related JP6586759B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015074988A JP6586759B2 (ja) 2015-04-01 2015-04-01 設計装置、プログラム、及びfpga設計方法
US15/082,277 US9971860B2 (en) 2015-04-01 2016-03-28 Allocating plurality of RAMs to FPGA block RAM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015074988A JP6586759B2 (ja) 2015-04-01 2015-04-01 設計装置、プログラム、及びfpga設計方法

Publications (2)

Publication Number Publication Date
JP2016194850A JP2016194850A (ja) 2016-11-17
JP6586759B2 true JP6586759B2 (ja) 2019-10-09

Family

ID=57015947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015074988A Expired - Fee Related JP6586759B2 (ja) 2015-04-01 2015-04-01 設計装置、プログラム、及びfpga設計方法

Country Status (2)

Country Link
US (1) US9971860B2 (ja)
JP (1) JP6586759B2 (ja)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954951A (en) * 1970-12-28 1990-09-04 Hyatt Gilbert P System and method for increasing memory performance
JP2775549B2 (ja) * 1992-05-08 1998-07-16 三菱電機株式会社 連想メモリセルおよび連想メモリ回路
JP2000207274A (ja) 1999-01-14 2000-07-28 Matsushita Electric Works Ltd 共有メモリの読出制御装置および読出制御方法
JP4266619B2 (ja) 2002-11-25 2009-05-20 株式会社ルネサステクノロジ 調停回路
JP4606341B2 (ja) 2006-02-02 2011-01-05 富士通株式会社 メモリ構築装置
US8315158B2 (en) * 2008-05-01 2012-11-20 Siemens Aktiengesellschaft Methods and apparatus for decentralized rapid recovery for Ethernet rings
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8671323B2 (en) * 2012-02-10 2014-03-11 The Hong Kong Polytechnic University High throughput decoder architecture for low-density parity-check convolutional codes
US9256369B2 (en) * 2012-04-18 2016-02-09 Samsung Electronics Co., Ltd. Programmable memory controller
JP2014106639A (ja) * 2012-11-26 2014-06-09 Ricoh Co Ltd 高位合成装置、高位合成方法、及び高位合成プログラム

Also Published As

Publication number Publication date
US9971860B2 (en) 2018-05-15
US20160292337A1 (en) 2016-10-06
JP2016194850A (ja) 2016-11-17

Similar Documents

Publication Publication Date Title
US11237728B2 (en) Method for accessing extended memory, device, and system
US8041920B2 (en) Partitioning memory mapped device configuration space
US6954812B2 (en) Two-stage round robin arbitration system
CN112287569B (zh) 用于仿真逻辑系统设计的方法、电子设备及存储介质
JP4007483B2 (ja) 高位合成装置および高位合成方法
JP2022533828A (ja) ヘテロジニアスプログラマブルデバイスのためのハードウェアソフトウェア設計時のフロー収束
KR20220023346A (ko) 이종 및 프로그램 가능 디바이스를 위한 고수준 합성을 갖는 하드웨어-소프트웨어 설계 흐름
JP2020087499A (ja) スタティックランダムアクセスメモリにアクセスするための方法、装置、機器及び記憶媒体
JP2022533825A (ja) 異種プログラマブルデバイスのハードウェア-ソフトウェア設計フロー
CN103377135B (zh) 寻址方法、装置及系统
US20160246715A1 (en) Memory module with volatile and non-volatile storage arrays
JP6586759B2 (ja) 設計装置、プログラム、及びfpga設計方法
CN109324899B (zh) 基于PCIe池化硬件资源的编址方法、装置及主控节点
JP7062793B2 (ja) 回路配線記憶方法、fpgaシステムおよび記憶媒体
US8997210B1 (en) Leveraging a peripheral device to execute a machine instruction
US10366001B1 (en) Partitioning memory blocks for reducing dynamic power consumption
US20140013148A1 (en) Barrier synchronization method, barrier synchronization apparatus and arithmetic processing unit
US9570134B1 (en) Reducing transactional latency in address decoding
JP5835498B2 (ja) Lsi及びlsi製造方法
CN116185910B (zh) 访问设备内存、管理设备内存的方法、设备和介质
JP5559932B2 (ja) 半導体装置
JP2010033452A (ja) レジスタ制御回路およびレジスタ制御方法
JP5791797B2 (ja) Lsi設計装置及びlsi設計方法及びプログラム
CN116775292A (zh) 硬件资源的分配方法及装置、电子设备与存储介质
Jia et al. Rapid display optimization based on on-chip programmable memory for mobile intelligent devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190322

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190813

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190826

R150 Certificate of patent or registration of utility model

Ref document number: 6586759

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees