ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2006-8-17 12:50
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
ModelSim Xilinx Edition (MXE) Starterではまる
ISE SimulatorがあまりにタコなのでModelSim Xilinx Edition (MXE) Starter 6.1eをダウンロードしてインストールしてみた。

インストールの最後にライセンス取得の手続きをするか訪ねられるのでyesとやるとXilinxのライセンス取得Webページが表示される。

Starterのライセンスはユーザー登録してあれば簡単に取得できる。ぽちっとやるとメールでlicense.datが添付されてくるのでそれを設定するだけ。

でとりあえず起動してみたら起動できた。ライセンスを設定しないと起動時点でライセンスが無いと怒られて終わってしまう。

とりあえずMXE単独で立ち上げてprojectを作り万年時計のVerilogソースをコピペしてコンパイルする。そしてSimulatorを開始すると以下のメッセージがログに出てきてエラーとなる。

# Licensing checkout error with feature xe-starter. (Error code -9.)
# The hostid of the license does not match the hostid for this machine.
# One of the following is likely:
# -The license is intended for another machine.
# -A dongle is not plugged into this machine.
# -The dongle driver is not installed or is not functioning properly.
# -The hostid mechanism has been changed or removed from this machine.
# ** Error: Failure to obtain a Verilog simulation license.

なんだこれは。

Xilinxのアンサーデータベースで検索してみると慟哭の事実が発覚。

引用:

ライセンスは、C ドライブ ディスク ID にロックされています。 C ドライブ ディスク ID を変更したり、MXE スタータを別のコンピュータにインストールする場合は、新しいライセンスを取得する必要があります。


あの、Cドライブ決め打ちですか...
うちのPCの起動ドライブはFなんですけど、CはCF/MS/SDアダプタのリムーバブルドライブになってて普段は何も入ってないのですが...orz

使えないことが判明
webadm
投稿日時: 2006-8-18 5:44
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
Ethernetアドレス固定でライセンスを申請する方法発見
コンパクトフラッシュの128MBを購入して(安かった千円でおつりがきた)Cドライブに差し込んでライセンスを取り直そうと思ったらいきなりFDとUSBのメディア変換コンボドライブが認識されなくなった。

おわ、コンパクトフラッシュが粗悪品で壊れたか?

と思って一旦ドライブを取り出すためにFDやUSBのケーブルを抜いて、USBのケーブルだけ差し直して立ち上げてみた。

やったC,Dドライブが復活した。

もういっぺんコンパクトフラッシュを差し込んでみると見える。フォーマットしてないのでフォーマットする。

これでライセンスを取り直せばよいわけだが、ライセンス申請のリンクを開くとやはりhostidは以前と一緒、なんだこれは。

プログラムメニューに追加されたライセンス申請のリンクを見るとどれも既にインストール時に取得されたethernetアドレスやホスト名にIPアドレスそれにドライブシリアル番号らしきパラメータが既に組み込まれているではないか。

http://www.xilinx.com/cgi-bin/mxe_license.cgi?pr=STARTER&key=ds&ei=88832b8f8e6ead05af3aa42cfcc6c72f&ea=00016cd46659&hn=pipin&ds=00007d90&in=192.168.1.18&&version=ModelSim XE III 6.1e Starter

もしやと思ってドライブシリアル番号パラメータ"&ds=00007d90"だけを上のURLから消して開いてみるとなにやらドライブシリアル番号かEtherアドレスを選択する項目が現れた。



やったこれでEthernetアドレスを指定すればいいはず。

メールで届いたlicense.datを登録すると今度は問題なくライセンステストもパスしModelsimのシミュレーターが開始できるようになった。



懐かしいModelSimの波形表示。昔から本職さんはこれを使っていたよね。本当にベストセラーだけに使いやすいし操作がスムーズ。ISE Navigatorの前処理が依然としてハングしているように見えるのがなんとも。その点ではAlteraのQuartus IIは首尾一貫していて良く調整されていると思う。慣れればModelSimだけでデザインすることも可能なのかも。


同じ問題ではまった人はやってみるべし。
webadm
投稿日時: 2006-8-18 23:28
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
ModelSimはやっぱりModelSimだった
初めてModelSimを使ってみたけど、Post-Fit Simulationだからといっても論理合成されたネットリストをベースにシミュレーションするのではなくあくまでHDLで書かれたModelを使ったBehavior Simulationでしかない。

とどのつまり論理合成された細かなネットリストの信号が見えるわけではなくHDLソースにある変数や信号だけを追っかけることができるだけである。タイミング関係でModel的に現実に近くなるということぐらいの意味だろう。

なのでHDL記述仕様に関する正確な知識が無いと話にならない。

問題のSEG出力が表示桁更新時(dispselの変化時)にしか更新されないというのはデザイン上で

assign SEG = segment(dispsel);

という継続的代入文を使っているだけである。どうやら"dispselが変化した時だけ評価される"らしい。どこが継続的代入文なのだろう。これが本当はVerilog HDL仕様の忠実な解釈なのかもしれない。自分ではVerilog HDL仕様を読んだことが無いので盲点だった。

ということはAlteraのVerilogはどうなのだろう。自分的にはAlteraの方が扱いやすいのだが。

そういえばAlteraでinitialブロックを追加したデザインをコンパイルしたらinitialはサポートしていないという警告が出て無視された。Alteraの場合はすべて初期化されるので電源投入直後に任意の初期化を行うということはできないというわけだ。

Xilinxの場合はModelSimの波形に出てくるグローバルプリロードという内部信号があるらしくそれを使ってinitialを実装できる。初期化の時だけしか使われない論理を沢山入れておくというのも納得がいかないけど。そうしないとレジスタ値が不定になってしまってシミュレーションが出来ない。
webadm
投稿日時: 2006-8-19 0:32
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
論理合成後のモデルを使えばいいのか
ISE Simulatorの時はBehavioral SimulationとPost-Fit Simulationの2つしかなかった気がするが、いままでそのまま使っていた。

改めてNavigationのMenuを開いたらPost-Translate SimulationやPost-Map SimulationにPost-Route Simulationが増えていた。

Post-Translate Simulationを選んでやったところ合成されたすべてのネットリストがリストに出てくるようになった。

しかし今度はSpartan2Eにしたせいか年のプリセットだけがうまくいっていない、0000年のままスタートしている。内部の年のレジスタのCE信号を表示させてみるとちゃんとプリセット時にだけ該当桁のCEがイネーブルになっている。しかしレジスタ値が0のまま変化していない。dispselの変化条件がすっかり抜けているとしか思えない。年替わりの時にはしっかり0001年に変化しているのだが。

新な謎が。
webadm
投稿日時: 2006-8-19 0:50
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
GSRってglobal system resetか
ターゲットをSpartan2EとかFPGAにするとinitialブロックでレジスタを初期化しなくてもAlteraと同様にコンフィグレーション時に0で初期化される。

それはいいが、謎は最初にプリセットさせているはずの年が設定がレジスタに取り込まれないという点。



見るとCPLDの時はPRSTだったはずのところがGSRという名前なっている。Global System Resetだろうか。どうもこれによって内部のレジスタはすべてリセットされるらしい。

ちょうと年のプリセットシーケンスがタイミング的に重なっている。

テストベンチ波形のタイミングを後ろにずらす必要がありそうだ。

それ以外は年替わりもちゃんと動作しているのでデザインそのものは変更することなく動くはず。
webadm
投稿日時: 2006-8-19 2:57
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
だんだんわからなくなってきた
ISE Simulatorの代わりにModelSimを使うとPost-Fit Simulationの代わりにPost-Translate/Post-Map/Post-Route Simulationの3つが使えるようになる。

しかしこの3つがそれぞれやってみると挙動が違う。

おまけにNavigatorのSourcesビューでテストベンチ配下のUUTをRemoveしちゃったら元に戻せなくなって大弱り。?マークの追加UUTのまま直せなくなってしまった。

それでもシミュレーションはできるのであるが。

Post-Translateでやるとそれなりに意図した通り動いてくれる。プリセットシーケンスの開始を200ns程遅らせてGSRをやり過ごすと年も正しくセットされてそれ以降は意図した通り。

しかし同じことをPost-Routeでやると途中あちこちに不定のビットが現れる。シミュレーター立ち上げ時にエラーが出ているのだがセットアップタイムが満足していないのだろうか。

もう一度新しくプロジェクトを作りなおした方がいいのかも。どうも操作に一貫性が無くいろんなことが出来てしまうわりに後戻しがどれも効かない。ISEは使いづらいのう。
marsee101
投稿日時: 2006-8-19 5:18
Just popping in
登録日: 2006-8-16
居住地:
投稿: 3
Re: 論理合成後のモデルを使えばいいのか
こんばんわ。marseeといいます。初めましてよろしくお願いします。

私はModelSimはBehavioral Simulationだけで後はTiming Analyzerで静的な遅延を確認して終わりにしています。これで今までは大丈夫でした。
webadm
投稿日時: 2006-8-19 10:55
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
ISE 8.2iにアップグレードしてみた
どうもISE 8.1iだとPost-Route Simulationでおかしなことになるので思い切ってISE 8.2iにアップグレードしてみた。

ISEWebInstallerを使うと最新のサービスパックまで適用されるらしい。

ISE 8.2iで以前のISE 8.1iのプロジェクトを一旦オープンしてしまうともう以前のISEとは互換性が無くなるらしい。

さっそくPost-Route Simulationを選んでやってみると、論理合成が始まってやがてModelSimが立ち上がった。以前はシミュレーションモデルをロードしている際にいろいろ沢山$setupの警告が出て波形もかなりの出力波形が不定(赤)になってまだらになっていたが今回はもうそうしたことは起こらない。バグだったのだろう。

その代わり以下の警告が出てシミュレーション速度が異様に遅くなった。

# ** Warning: Design size of 10033 statements or 1 non-Xilinx leaf instances exceeds ModelSim XE-Starter recommended capacity.
# Expect performance to be quite adversely affected.

どうやらPlace&Route済みネットリストがStarter版の制限規模を超えてしまうがパフォーマンスが下がる以外は影響無いよということらしい。しかしISE Simulatorと同じぐらい遅くなった。影響は多大である。

こまめにテストするのにはPost-Translate Simulationあたりで十分かも。最終的にはPost-Route Simulationを一回はやらないといけないだろうけど。

あとは正規版のModelSimを購入するとか。
webadm
投稿日時: 2006-8-19 11:05
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
でもやっぱりおかしい
Post-Route Simulationの波形をシミュレーション途中に眺めていたら(これが出来るのでModelSimは便利)、不定こそは出てないが以前不定で赤になったりXが所々混じっていたところが全部意図しない値が出力されている。

たとえば最初の年月日時分秒をプリセットした後に出力される7Segデコード値があたかも一部設定値がセットされず0のままになっている事を示す値が出ている。

本来は9999年12月31日23時59分59秒がプリセットされるべきところが表示される結果から推測すると9900年12月00日23時00分59秒となっている。一回のプリセットは2桁づつなのでどうも一つおきに正しくプリセットされていないようだ。

なんだろう。
webadm
投稿日時: 2006-8-19 11:39
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
原因がわからない
年の下2桁分のレジスタのイネーブル信号をRTL Viewerで見つけて波形表示に追加して最初の1usだけシミュレーションして見てみた。



最初のGSRが100nsアサートされているので安全を見て200ns後からプリセットシーケンスを開始するように遅らせた。年の上2桁が最初にセットされ続いて下2桁がセットされるはずが変化していない。セットされるはずのCLOCK1Mの立ち上がりの前後でちゃんと下2桁のレジスタのCE信号はアサートされている...と見えたが実は立ち下がりの前後だった...orz

これでは取り込まれるはずがない。

なんでずれてるんだ?
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索