2008/12/11(木)[FPGA][ModelSIM] シミュレーションとライセンス
[SOPC] Model-Simによるシミュレーション
設定~ModelSimのライセンス
最初のインストールでQuartusIIしか入れていなかったため,ModelSim AlteraEditionを入れる.ライセンスが無いといわれたので,その追加方法についてメモを残しておく.
SOPC Builderにて,[System Generation]タブのOptionグループの"Simulation. Create project simulator files."をcheckする.
- "Run Simulator"を押下するとModelSimが起動する模様.
(ModelSimのインストール,ライセンスの取得は必須である.)
QuartusIIの,メニュー"Tool"→ "License Setup.." → "WebLicense Update"ボタンを押下すると,ALTERAのサイトに接続しにいきます.ALTERA WEB SITEのアカウントを取得しておき,LOGINします.
ユーザ情報を確認した後に,"ModelSim WEB edition"のライセンスも必要か問うているチェックボックスがあるので,忘れずにチェックを入れておきます.ライセンスファイルはメールで送られてきますので,コレを任意のフォルダに保存して,LM license managerがそれを参照するように設定します.
ユーザによっては,すでにxilinxやLM license managerを使用する製品を利用されているかもしれません.
マイコンピュータ→(右クリック)→ property → "詳細徹底"タブ → "環境変数"ボタン → ユーザの環境変数またはシステム環境変数
ここを参照して,下記の変数の値を修正します.存在しなければ新規に作成します.
QuartusIIに限れば,Option Dialogにて,"Use LM_LICENSE_FILE"の指定ができるチェックボックスが存在します.
ModelSimにはソレが無いため,環境変数の設定が必須となります.
ライセンスファイルが存在しない場合は,ここで記すような解決策の定時をダイアログで受けることになるでしょう.
環境変数
MGLS_LICENSE_FILE LM_LICENSE_FILE
複数のファイルや,ライセンスサーバ(
設定が正しくできているかどうかは,スタートメニューからたどって,"ModelSim-Altera 6.3g_p1 (Quartus II 8.1)"を実行します.
コマンド待ち受け画面("transcript")が出てくるので,ここで"lmutil lmdiag"と入力します.出力例を以下に示します.(IPやNETBIOS名を'x'で塗り替えています)
>lmutil lmdiag # # This license can be checked out # ----------------------------------------------------- # # Enter <CR> to continue: "adwu" v1.31, vendor: armlmd # License server: xxxxxxxx # floating license no expiration date # # Requests from the same USER/HOST/DISPLAY do not consume a new license # # This license can be checked out # ----------------------------------------------------- # ----------------------------------------------------- # License file: 8224@xxxxxxxx # ----------------------------------------------------- # ----------------------------------------------------- # License file: C:\altera\xxxxxxxxxxxx__0-xxxx3015308023.dat # ----------------------------------------------------- # "quartus_lite" v2009.05, vendor: alterad # uncounted nodelocked license, locked to ethernet address "xxxxxxxxxxxx" expires: 15-may-2009 # # This is the correct node for this node-locked license # ----------------------------------------------------- # # Enter <CR> to continue: "alteramtiwe" v2009.05, vendor: mgcld # uncounted nodelocked license, locked to ethernet address "xxxxxxxxxxxx" starts: 9-dec-2008, expires: 15-may-2009 # # This is the correct node for this node-locked license # ----------------------------------------------------- # ----------------------------------------------------- # License file: C:\altera\xxxxxxxxxxxx__0-xxxx42759966265.dat # ----------------------------------------------------- # "quartus_lite" v2008.12, vendor: alterad # uncounted nodelocked license, locked to ethernet address "xxxxxxxxxxxx" expires: 15-dec-2008 # # This is the correct node for this node-locked license # -----------------------------------------------------
この例では,旧ファイルも残っているようで,複数のライセンスが見て取れます.
一部ライセンスサーバからも取得してきており,ADSのライセンスも見受けられます.(各種ツールの名称が並びますが,個々では無関係なので省略しました.)
ModelSimのライセンスは,"alteramtiwe"であると考えられます.QuartusIIは"quartus_lite"でしょう.これらの文字列が見えない,または,"License file: "で,取得したライセンスファイル名がない場合は,どこかの設定が誤っているか,設定終了後にアプリを起動していないのかもしれません.
[SOPC][ModelSim] 不定値伝播
気持ちよくシミュレーションを実行すると,不定値が伝播しており,testbenchモジュールで $stopコマンドが発令された.cpu coreのあたりで,ddr_sdramからの信号のようだ.タイミングはreset_nがネゲートされたあたりで,PLL unlock状態なのが問題のように思える.
現状は,system clockとddrclockの2系統があり,これらの安定化を待つようなシステムになっているのかは不明である.少なくともシミュレーションで不定値が伝播してきているので,下記のいずれかの問題が生じていると考えられる.
- 自動生成されるテストベンチが不正
- PLL lock状態までシステムをとめるような仕組みが存在しない\これはこれで問題な気がする.どこかのサンプルでPLLをSOPCからはずしていた理由はコレか...
- シミュレーション実行において手順が抜け落ちている?\ALTERAセミナ資料どおりにやってるはず...
実機+JTAGがぶら下がっている状態では動いているので,PLL安定後は正常動作する模様です.
初期起動時の不安定性がシミュレーションにより予見されたということでしょうかね.
妄想レベルでの対策は,すべてのPLL出力が安定(lock信号がアサートされるまで)は,NiosIIシステム全体をリセット状態にしておくことですね.SOPC builderにより生成されたモジュールへのリセット信号が,本当の全域リセットと,PLLブロックへ入っている?リセットと区別されていることが条件になりますねぇ.もしくはPLLブロックをSOPC Builderから離して生成するか.そうなるとdynamicなclock制御ができなくなるか.
そんなことするのは当面先のことになるし,clock domain境界の処理をどうすべきかを検討する必要がありますが.クロック・モジュールリセットの集中管理が必須となってくるでしょうねぇ.そんなことできるかな...