fc2ブログ

Virtex5のRAMB36が動かない

一昨日data2memが成功したのは良いが、なぜかMico32命令用RAMB36が動かない。
単なる2portRAMだから、以下の設定でやってるが、なんかミスってるかな?

RAMB36 #( .WRITE_MODE_A("WRITE_FIRST")
, .WRITE_MODE_B("WRITE_FIRST")
, .WRITE_WIDTH_A(36)
// , .WRITE_WIDTH_B(36)
, .READ_WIDTH_A (36)
// , .READ_WIDTH_B (36)
, .DOA_REG (1)
, .DOB_REG (1)
) RAMB36_0 ( .CASCADEOUTLATA( ) // no use
, .CASCADEOUTLATB( ) // no use
, .CASCADEOUTREGA( ) // no use
, .CASCADEOUTREGB( ) // no use
, .DOA (data_out )
, .DOB ( ) // no use
, .DOPA ( ) // no use
, .DOPB ( ) // no use
, .ADDRA ({5'h00, addr})
, .ADDRB ({16{1'b0}} ) // no use
, .CASCADEINLATA (1'b0 ) // no use
, .CASCADEINLATB (1'b0 ) // no use
, .CASCADEINREGA (1'b0 ) // no use
, .CASCADEINREGB (1'b0 ) // no use
, .CLKA (clk )
, .CLKB (clk ) // no use
, .DIA (data_in )
, .DIB ({32{1'b0}} ) // no use
, .DIPA ({ 4{1'b0}} ) // no use
, .DIPB ({ 4{1'b0}} ) // no use
, .ENA (1'b1 )
, .ENB (1'b1 ) // no use
, .REGCEA (1'b1 ) // no use
, .REGCEB (1'b1 ) // no use
, .SSRA (1'b0 ) // not reset
, .SSRB (1'b0 ) // not reset
, .WEA ({ 4{we }} ) // no use
, .WEB ({ 4{1'b0}} ) // no use
);

Sim時の確認事項として以下。

  ・glbl.vはコンパイルしていてGSRが1→0になるのを待ってから動作させてるので、
   スタートアップ時の待ち時間が無い訳ではない。
  ・Mico32の命令用SRAMなので、A側の1portだけを使い、かつROMとして使う。
    → 上記ではweを入力しているが上位モジュールで0固定。
       data_inも同様に未使用。
  ・出力段FFは使わなくても良いのだが、とりあえず、動かしておけば値が出てくるのが
   見れると思ってDOA_REG=1でparameter設定。
  ・テストベンチとしては、clk入力して、addrを変化させれば、それに合わせて出力data_out
   から値が出てくるものとして作成している。

単に、2portSRAMをROMとして使うだけなんだが、なぜ動かない?なんか見落としてる??
スポンサーサイト



コメントの投稿

非公開コメント

No title

Virtex5はボードを持っていないし、BRAMは使ったことがないの良くわかりませんが、おかしいのはシミュレーションだけですか?
そういうことなら、もしかして、ROMとして使っているということは、DATA2MEMでROMのデータを入れているとか?初期化の記述がないですし。。。
そうなると、シミュレーション時にはROMのデータがないので、Mico32は動作しないとか?そんな単純なミスじゃないですよね?
バグの内容が良くわからないので、判断がつきませんが、バグが解消されるといいですね。

No title

marseeさん、いつも見て頂きありがとうございます。

○BRAM初期値の設定
 RAMB36をインスタンシエーションしたmoduleで以下のようにして読み込んでます。
 初期値ファイルの内容が出るには出るので、Sim時に読み込めてない事は無いようです。

 <初期値ファイルの読み込み>
 `include "inst_ram_data.v"

 <初期値ファイルの内容>
defparam RAMB36_0.INIT_00 = 256'h00000000000000000000000000000000000000000000000000000000e0000040;
defparam RAMB36_0.INIT_01 = 256'h00000000000000000000000000000000000000000000000000000000e000006d;
      :

○デバッグ状況
  RAMB16_S9 x 4個(実機動作OK版)とRAMB36(実機動作NG版)の違いを探るべく、Simして
  BRAM周りの信号をテキストファイルへdumpして解析中です。確かにdumpをdiffすると不一致。
  ちょっと落ち付いてデバッグしてみます。
カレンダー
02 | 2024/03 | 04
- - - - - 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 26 27 28 29 30
31 - - - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード