ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2006-8-31 10:42
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
VerilogかVHDLか
ModelSim Xilinx Editionをインストールする際だったかにVerilogかVHDLどちらか一方を選択しなければならない。

実はここでどちらかに決めたとしてもISE自体で選択した方で書かれたデザインしかまったくシミュレーションできないという意味ではないということが使ってみて判明した。

ModelSimでどちらか一方を選択したとしてもPost-Fit Simulationであればどんな言語でも可能である。シミュレーションする対象のネットリストやデバイスシミュレーションモデルとして選択した言語のものを使用するということだけである。

実際にPost-FitシミュレーションしてみるとISEはModelSimシミュレーション用にVerilogかVHDL形式でデザインのネットリストとテストベンチソースコードを吐き出してModelSimに渡す。なのでVerilogを選択したからといってまったくそれ以外の言語で書いたデザインや複数の言語が使用されているデザインとかのシミュレーションが出来ないわけではない。

できないのは選択した言語で書かれたデザインのソースコードレベルのデバッグをが伴うBehavioral Simulationだけである。
webadm
投稿日時: 2006-8-22 17:54
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
インストールドライブがC決め打ちのソフト
インストーラーがソフトをインストールするドライブをCに決め打ちしているソフトが結構あるらしい。

大抵はインストールする場所を任意に変えることが出来るようになっているので問題にはならない。気の利いたソフトは最初から起動ドライブのレターを使う。それでも最初はC:\xxxとか出て知らずに次ぎをクリックするとエラーが出て慌てるソフトも結構多い。

中にまれにインストール先がC:\xxxと出て変更できないソフトがあることを発見。たまたま先日Cドライブ用のコンパクトフラッシュを買って使い道が無かったのでそれを挿してそこにインストールさせて事なきを得たが、あれはひどい。Microchip社のUSB評価ボード用のソフトだけどね。ソフト作成者の手抜きに違いない。
webadm
投稿日時: 2006-8-22 5:08
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
20MHzでも余裕でうごくことが判明
以前20MHzのクロックでシミュレートした際にはPost-Route Simulationで不定が所々でてしまうということだったが原因が判明。

ふと20MHzクロックでのテストベンチウェーブを作成する際にセットアップとホールド時間をデフォルトの15nsから短くしてしまったのを思い出した。

年月日時分秒のプリセットシーケンスで既に不定が出ているのでそれが尾を引いていた感じだ。

クロック周期は50nsのままでセットアップとホールド時間を15nsに増やしてテストベンチウェーブを作成したらすんなり動いた。

やはりクロック信号に関する制約条件を与えていないから何らチェックもされていないとはいえ、なんか警告が出てくれてもよさそうな気がする。出力信号に不定が出るからそれでやっとわかる。

タイミング解析結果から見ると最大遅延でも50nsにかなり余裕があるので実際はCPLDと同じように50MHz超えても余裕なのかもしれない。
webadm
投稿日時: 2006-8-19 20:33
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
なるほど
やはりそうだったのですね。論理合成のリポートとかどこ見てもFPGAの場合は最大動作周波数的な情報が見あたらないのでそうかなとは薄々思ってましたが。

Webで他の方のXilinxのデザインの仕方みても必ず論理合成前にやっとかないといけない作業として制約条件の設定というのがあるのでやはりお約束なのですね。

CPLDの場合は確か何もしなくても最大動作周波数とかがリポートに出てきたのですが、Xilinxの場合FPGAとCPLDとは根本的にアーキテクチャが違うので使い勝手が違っても仕方ないですね。
marsee101
投稿日時: 2006-8-19 15:29
Just popping in
登録日: 2006-8-16
居住地:
投稿: 3
Re: 10MHzでのテストベンチならOK
ご存知かもしれませんが、Xilinxは動作周波数(周期)を制約ファイル(.UCF)に書いてやらないと、プレーサー&ルータが怠けるので注意が必要です。
webadm
投稿日時: 2006-8-19 12:23
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
Re: 論理合成後のモデルを使えばいいのか
marseeさんどうも初めまして。

一連の問題で無我夢中でレスされているの気が付きませんでした。無視したわけではありませんすいません。

なにぶん手近の資料がどれも古いので試行錯誤な状況です。
貴重なアドバイスありがとうございます。

FPGA日記密かに読まさせて頂いております。内容が高度なのでついて行けてませんが...orz

今後ともよろしくお願いします。
webadm
投稿日時: 2006-8-19 12:11
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
10MHzでのテストベンチならOK
やはりISE 8.2iでもSpartan2Eだと20MHzではまともに動かないらしい$setup警告が随所で出てしまう。波形も最後の方は真っ赤だ。

CLOCK1Mを10MHzにしてnPRESETやVALUEのタイミングもそれに合わせて間延びさせてやると今度はPost-Route Simulationでも意図した通り動いてくれた。

Alteraの場合はBehavior Simulationに相当するのはFunctional SimulationだがこれはFunctional Netlistをベースにシミュレーションするだけで遅延とかの要素は一切考慮しない、その代わりシミュレーションはばか速い。タイミング以外の基本的な設計誤りはこちらで取り除いて最後タイミングに重点を置いたシミュレーションは時間をかけてやるという感じ。それでも規模とかの制約が無いので高速だったがXilinxは制限がかかっているのでとてつもなく時間がかかる。そういった点を狙ってAlteraはXilinxからの鞍替えを勧めているけどどうなのだろうか。

Post-Route Simulationをやらない限りは動くとは限らないのはこれでわかった。
webadm
投稿日時: 2006-8-19 11:55
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
原因がわかった
ModelSimの前出の波形を見てなぜかSELECT入力の変化タイミングがずれているのが気になった。

そしてカーソルを表示させてCLOCK1Mの周期を測ったら100nsだった。む、20MHzじゃない。

思い出した、ISE 8.1iの時にPost-Route Simulationでタイミング違反が出たようなのでクロックを下げようと半分の10MHzにしたのだが他の入力信号のタイミングは20MHzのままだった。

なら1つおきにしかCLOCK1Mの立ち上がりタイミングに遭遇しないわけだ。

がっくし、いろいろ試行錯誤してやるのもいいけどこういう墓穴を掘る危険も高くなる。

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



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

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

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

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

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

なんだろう。
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

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