FC2ブログ

[LM32]Warning: Non-aligned word access. Address: 0xz Time: 375000.

# run -all
# Warning: Non-aligned word access. Address: 0xz Time: 375000.
# ** Note: $finish : rtl/tb_DE2_115.v(167)



シミュレーションで動かない原因解析。
原因があるとしたら、LM32の外部に自分で接続した命令用とデータ用のSRAMがミスってるか、
あとは.srecから.mif/.v/.hexを生成しているDWM2007/10プログラムの設定をミスってるか
とは思ってるが。

■解析手順
 なぜこのWarningが出るか?
  ↓
 これに該当するから。
 lm32_load_store_unit.v: load_store_address_m[1:0] !== 2'b00
  ↓
 lm32_load_store_unit.v: load_store_address_mはどこからやってくる?
  ↓
 lm32_cpu.v: operand_mレジスタ
  ↓
 なぜ、lm32_cpu.v: operand_mは106nsまでALL 0で、その後Hizになるのか?
  ↓
 lm32_cpu.v: operand_mが変化するケースは以下の2つのみ。
   rst_i == `TRUE の時、ALL 0になる。
   リセットかかってない時、stall_m == `FALSEならば、x_resultが代入される。
  ↓
 lm32_cpu.v: x_resultは76nsで、ALL 0からHizへ変化。
  ↓
 (xresult動作をコンフィグするdefineがいろいろあるが)
 今のコンフィグでは、x_result_sel_add_x、x_result_sel_csr_x、x_result_sel_sext_xのみ関係ある。
 この中で、x_result_sel_add_xがL -> Hになったので、adder_result_xがx_resultへ代入されHizへ変化した。
  ↓
 lm32_cpu.v: adder_result_xは最初からずっとHiz。なぜ?
  ↓
 adder_result_x はlm32_adder.vの中のlm32_addsub.vのResult出力で駆動される。
  ↓
 lm32_addsub.v内でLatticeファミリー毎にpmi_addsubモジュールを使うか、Verilog記述で加減算をするか選択してる。
 今pmi_addsubが使われてるが、入力信号確定してるのに、出力ResultがHiz。入力A=B=0だから?
 Latticeファミリーを変えてみる。

//`define LATTICE_FAMILY "EC"
`define LATTICE_FAMILY "SC"


 SCファミリーにしてみたら、エラーの状況が変わった。
 pmi_addsubモジュールを使うかどうかだけで、論理は等価とおもったが、そうならない。これ良いのかな?

# run -all
# Data bus error. Address: fffffff8
# Data bus error. Address: 00000004
# Data bus error. Address: 00000004
# Data bus error. Address: 00000004
# Data bus error. Address: 00000004
# Data bus error. Address: 00000004
# Data bus error. Address: 00000004
  :


  ↓
 
スポンサーサイト
カレンダー
05 | 2014/06 | 07
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 - - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

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

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

この人とブロともになる

QRコード
QRコード