FC2ブログ

[NEEK]System IDエラー解析

VEEKで作業してたけど、画面に絵が出ないので、NEEKで成功したデータで
動きを確認する事に。
しかし、当時成功したデータで再QuartusIIコンパイルすると、NiosII SBTで
SWダウンロードする前に、Run Configurationで、

  System ID hash not match on target xxxxx

とかなんとかで、RUN出来ない状態に。

プログラムメモリをSSRAMにしてるから、おそらくインプリ時のタイミング制約など
ミスってるのかと思い、サンプルデザインを探して見たが、いずれも以下の制約。
AlteraWikiにUpされてるサンプルデザインはqsfもsdcもどれもこの設定。
それでもやはりSystem IDエラー出て、RUN出来ない。

■qsf
set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to flash_tristate_bridge_out_tcm_begintransfer_n_out
set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to flash_tristate_bridge_out_tcm_byteenable_n_out
set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to flash_tristate_bridge_out_tcm_chipselect_n_out
set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to flash_tristate_bridge_out_tcm_outputenable_n_out
set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to flash_tristate_bridge_out_tcm_write_n_out
set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to ssram_clk


set_instance_assignment -name TCO_REQUIREMENT "3.3 ns" -from * -to flash_tristate_bridge_out_tcm_address_out
set_instance_assignment -name TCO_REQUIREMENT "3.3 ns" -from * -to flash_tristate_bridge_out_tcm_byteenable_n_out
set_instance_assignment -name TCO_REQUIREMENT "3.3 ns" -from * -to flash_tristate_bridge_out_tcm_chipselect_n_out
set_instance_assignment -name TCO_REQUIREMENT "3.3 ns" -from * -to flash_tristate_bridge_out_tcm_write_n_out
set_instance_assignment -name TCO_REQUIREMENT "3.3 ns" -from * -to flash_tristate_bridge_out_tcm_outputenable_n_out
set_instance_assignment -name TCO_REQUIREMENT "3.3 ns" -from * -to flash_tristate_bridge_out_tcm_begintransfer_n_out
set_instance_assignment -name TSU_REQUIREMENT "6 ns" -from * -to flash_tristate_bridge_out_tcm_data_out


set_location_assignment PIN_A2 -to ssram_clk
set_location_assignment PIN_C3 -to flash_tristate_bridge_out_tcm_reset_n_out
set_location_assignment PIN_F10 -to flash_tristate_bridge_out_tcm_byteenable_n_out[0]
set_location_assignment PIN_F11 -to flash_tristate_bridge_out_tcm_byteenable_n_out[1]
set_location_assignment PIN_F12 -to flash_tristate_bridge_out_tcm_byteenable_n_out[2]
set_location_assignment PIN_F13 -to flash_tristate_bridge_out_tcm_byteenable_n_out[3]
set_location_assignment PIN_F9 -to flash_tristate_bridge_out_tcm_chipselect_n_out
set_location_assignment PIN_G13 -to flash_tristate_bridge_out_tcm_write_n_out
set_location_assignment PIN_E9 -to flash_tristate_bridge_out_tcm_outputenable_n_out
set_location_assignment PIN_F7 -to flash_tristate_bridge_out_tcm_begintransfer_n_out
set_instance_assignment -name VIRTUAL_PIN ON -to flash_tristate_bridge_out_tcm_address_out[0]
set_location_assignment PIN_E12 -to flash_tristate_bridge_out_tcm_address_out[1]
set_location_assignment PIN_A16 -to flash_tristate_bridge_out_tcm_address_out[2]
set_location_assignment PIN_B16 -to flash_tristate_bridge_out_tcm_address_out[3]
set_location_assignment PIN_A15 -to flash_tristate_bridge_out_tcm_address_out[4]
set_location_assignment PIN_B15 -to flash_tristate_bridge_out_tcm_address_out[5]
set_location_assignment PIN_A14 -to flash_tristate_bridge_out_tcm_address_out[6]
set_location_assignment PIN_B14 -to flash_tristate_bridge_out_tcm_address_out[7]
set_location_assignment PIN_A13 -to flash_tristate_bridge_out_tcm_address_out[8]
set_location_assignment PIN_B13 -to flash_tristate_bridge_out_tcm_address_out[9]
set_location_assignment PIN_A12 -to flash_tristate_bridge_out_tcm_address_out[10]
set_location_assignment PIN_B12 -to flash_tristate_bridge_out_tcm_address_out[11]
set_location_assignment PIN_A11 -to flash_tristate_bridge_out_tcm_address_out[12]
set_location_assignment PIN_B11 -to flash_tristate_bridge_out_tcm_address_out[13]
set_location_assignment PIN_C10 -to flash_tristate_bridge_out_tcm_address_out[14]
set_location_assignment PIN_D10 -to flash_tristate_bridge_out_tcm_address_out[15]
set_location_assignment PIN_E10 -to flash_tristate_bridge_out_tcm_address_out[16]
set_location_assignment PIN_C9 -to flash_tristate_bridge_out_tcm_address_out[17]
set_location_assignment PIN_D9 -to flash_tristate_bridge_out_tcm_address_out[18]
set_location_assignment PIN_A7 -to flash_tristate_bridge_out_tcm_address_out[19]
set_location_assignment PIN_A6 -to flash_tristate_bridge_out_tcm_address_out[20]
set_location_assignment PIN_B18 -to flash_tristate_bridge_out_tcm_address_out[21]
set_location_assignment PIN_C17 -to flash_tristate_bridge_out_tcm_address_out[22]
set_location_assignment PIN_C18 -to flash_tristate_bridge_out_tcm_address_out[23]
set_location_assignment PIN_G14 -to flash_tristate_bridge_out_tcm_address_out[24]
set_location_assignment PIN_B17 -to flash_tristate_bridge_out_tcm_address_out[25]
set_location_assignment PIN_H3 -to flash_tristate_bridge_out_tcm_data_out[0]
set_location_assignment PIN_D1 -to flash_tristate_bridge_out_tcm_data_out[1]
set_location_assignment PIN_A8 -to flash_tristate_bridge_out_tcm_data_out[2]
set_location_assignment PIN_B8 -to flash_tristate_bridge_out_tcm_data_out[3]
set_location_assignment PIN_B7 -to flash_tristate_bridge_out_tcm_data_out[4]
set_location_assignment PIN_C5 -to flash_tristate_bridge_out_tcm_data_out[5]
set_location_assignment PIN_E8 -to flash_tristate_bridge_out_tcm_data_out[6]
set_location_assignment PIN_A4 -to flash_tristate_bridge_out_tcm_data_out[7]
set_location_assignment PIN_B4 -to flash_tristate_bridge_out_tcm_data_out[8]
set_location_assignment PIN_E7 -to flash_tristate_bridge_out_tcm_data_out[9]
set_location_assignment PIN_A3 -to flash_tristate_bridge_out_tcm_data_out[10]
set_location_assignment PIN_B3 -to flash_tristate_bridge_out_tcm_data_out[11]
set_location_assignment PIN_D5 -to flash_tristate_bridge_out_tcm_data_out[12]
set_location_assignment PIN_B5 -to flash_tristate_bridge_out_tcm_data_out[13]
set_location_assignment PIN_A5 -to flash_tristate_bridge_out_tcm_data_out[14]
set_location_assignment PIN_B6 -to flash_tristate_bridge_out_tcm_data_out[15]
set_location_assignment PIN_C16 -to flash_tristate_bridge_out_tcm_data_out[16]
set_location_assignment PIN_D12 -to flash_tristate_bridge_out_tcm_data_out[17]
set_location_assignment PIN_E11 -to flash_tristate_bridge_out_tcm_data_out[18]
set_location_assignment PIN_D2 -to flash_tristate_bridge_out_tcm_data_out[19]
set_location_assignment PIN_E13 -to flash_tristate_bridge_out_tcm_data_out[20]
set_location_assignment PIN_E14 -to flash_tristate_bridge_out_tcm_data_out[21]
set_location_assignment PIN_A17 -to flash_tristate_bridge_out_tcm_data_out[22]
set_location_assignment PIN_D16 -to flash_tristate_bridge_out_tcm_data_out[23]
set_location_assignment PIN_C12 -to flash_tristate_bridge_out_tcm_data_out[24]
set_location_assignment PIN_A18 -to flash_tristate_bridge_out_tcm_data_out[25]
set_location_assignment PIN_F8 -to flash_tristate_bridge_out_tcm_data_out[26]
set_location_assignment PIN_D7 -to flash_tristate_bridge_out_tcm_data_out[27]
set_location_assignment PIN_F6 -to flash_tristate_bridge_out_tcm_data_out[28]
set_location_assignment PIN_E6 -to flash_tristate_bridge_out_tcm_data_out[29]
set_location_assignment PIN_G6 -to flash_tristate_bridge_out_tcm_data_out[30]
set_location_assignment PIN_C7 -to flash_tristate_bridge_out_tcm_data_out[31]


■SDC
set SSRAM_Clock_ext eth_std_main_system_inst|pll|sd1|pll7|clk[1]
set_clock_groups -group [get_clocks $SSRAM_Clock_ext] -exclusive

set_output_delay -clock [get_clocks $SSRAM_Clock_ext] -reference_pin [get_ports {ssram_clk}] 2.4 [get_ports {flash_tristate_bridge_out_tcm_begintransfer_n_out flash_tristate_bridge_out_tcm_byteenable_n_out* flash_tristate_bridge_out_tcm_write_n_out flash_tristate_bridge_out_tcm_chipselect_n_out flash_tristate_bridge_out_tcm_outputenable_n_out flash_tristate_bridge_out_tcm_address_out* flash_tristate_bridge_out_tcm_data_out*}]
set_input_delay -clock [get_clocks $SSRAM_Clock_ext] -reference_pin [get_ports {ssram_clk}] 4.1 [get_ports {flash_tristate_bridge_out_tcm_data_out*}]
set_multicycle_path -from [get_ports {flash_tristate_bridge_out_tcm_data_out*} ] -setup -end 2




NEEKで、SSRAMを使わず、内臓SRAMで足りるくらいの小さなプログラムを書いたが、
それでもエラー消えない。

次に回路を最初からQsysで作って、NiosII、PLL、PIO、System IDの構成でやっても
今度は、timestampチェックを外せばRUNは出来るものの、RUNした後、結局
次のエラーウィンドウ。Detailを押しても以下情報のみ。

Downloading ELF Process failed



その時のQsys構成がこれ。
SYSID_DBG_QSYS

エラー情報ぐぐってると、
  ・System IDのインスタンス名は「sysid」。「sysid_0」ではダメ。
とか良く分からない解決策が載ってたり。
これで上手く行ったから神情報かと喜んだ時期もあったが、今ではその方法でもエラー。
ちょっと前には、NiosIIのjtag_debug_module_resetを各周辺回路に外部リセットと
ともに接続する、ってのが自分が発見した解決策かと思ったけど、それも違うみたい。
Sim's Blogさんのページ参考にすると、そんな事はしてない。

http://blog.goo.ne.jp/sim00/e/236d685cc29873571051270075449cac


System ID関連エラーの情報は、一通りあさったと思うけど、どっかの海外の人が
キレてたな・・・「エラー情報が無いに等しく、ほとほとアルテラにうんざりしてる」って。
確かに、この情報だけだと何にも分からない。

でも日本でぐぐっても、ほぼエラーで困ってるとかいう情報は出て来ない。
自分は定期的にこのエラーで長期間ハマルのに。
これまで何度もやり直しして成功した制約も、おそらくはたまたま出来たに違いないのかも。
同じ制約にしても回路を追加したりしてコンパイルする毎にエラーが出たり出なかったり
するから、たぶん制約漏れだろう・・・
たしかにうんざりして来た。なんなんだこの問題は。いちいち引っかかる。
クロック制約も当たっていて、no_clockはPLLのlockなんちゃらのFFだけ。
それでタイミング全METって出てるのに、System IDエラーが出て来る。
プログラムメモリも内臓SRAMで、System IDも内蔵なのに。



その後の経過は以下。

・PLL出力25MHzから外部オシレータ50MHzに変えたらSWダウンロード成功。
 PLLクロックでカウンタは正常に動いてLEDチカチカしてたけど、なぜかPLLクロックが関係してるらしい。
 しかし、SWの動き通りLEDチカチカしない。


・LED用のPIOが、data_masterのみ接続なので、instruction_masterも接続してみた。
 LEDチカチカ成功。NiosIIリファレンスマニュアルだか何だかに、

 「周辺回路にはdata_masterのみ接続、メモリコンポーネントには、data_masterと
  とinstruction_master両方接続」


 とか何とか書いてあったけど。(周辺回路って言い方はしてなかった気がする)
 未だにinstruction_masterをどこに接続すべきか区別が付かない。
 とりあえずPIOはメモリコンポーネントって事か?
 というかAvalon MMでアクセスされるのは全て両方接続必要なのかな?


外部オシレータ50MHzからPLL出力50MHzに変えたらエラー。

Downloading ELF Process failed

試しに外部リセットをかけた場合をやってみたら、

The system console model is invalid. Cannot launch.


というエラーだったから、リセットがかかってる事が問題な訳ではない。
周波数が同じなのに、なぜPLLだと問題起こる?
derive_pll_clocks -create_base_clocks
でちゃんとPLLクロックにもクロック制約当たってるし。



当たり前だが、Signal TAPをDisableにしてもエラー変わらず。
jtag_debug_module_resetをNios、PLL、プログラム用内蔵SRAMのリセットへ接続。
するとSWダウンロード成功して、LEDチカチカした。これが解決策か?
そいや、jtag_debug_module_resetをNiosIIに接続する事はどっかのマニュアルに書いたあった記憶が。

スポンサーサイト



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

bobgosso

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

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

この人とブロともになる

QRコード
QRコード