スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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ドライブ決め打ちですか... うちの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 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |