ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Veritak友の会コミュの質問総合

  • mixiチェック
  • このエントリーをはてなブックマークに追加
Veritakに関する質問やVerilog-HDL、SystemVerilogに関する質問などの質問をするトピックを立ち上げました。
管理人さん、勝手にトピックを立ち上げて申し訳ないですが、質問するトピックがなかったので、作らせていただきました。問題がありましたらご連絡ください。

コメント(18)

早速、質問で申し訳ないです。

今、Xilinx社のISEのXPowerを評価するためにVeritakでVCDを出力させながら、Place & Route後の遅延シミュレーションをしています。実装している回路はDDR SDRAMコントローラです。
その際に波形のアーカイブを保存するディスク容量がすぐに400MBを超えてしまって、リミットまで100MBを切りましたというダイアログが出てしまいます。
信号を選択的にアーカイブできるようなオプションはあるでしょうか?

また、VeritakのVerilogプロジェクトメニューのプロジェクト設定ダイアログの説明はどこかにあるでしょうか?
marseeさん、

Projectは、Default400MBになっていてこれを増やすこともできますが、遅延ゲートでは、SIM速度の観点から現実的ではないです。また、選択SAVEは、Pro版だけしかできません。

なので、SaveをオフにしてVCDだけで見る方法が現実的です。VCDは、階層・信号、期間(on/off) をソースで記述します。Verilog標準です。

$dumpvars (1, top);
は、トップ以下1階層を意味します。ですのでtopしかSAVEされません。
$dumpvars (2,top.dut);
なら、top.dut以下の2階層になります。ON/OFF指定は$dumpon/$dumpoffで、これは、サンプルに入っていたと思います。


Xpower は、Veritakの吐くVCDでは動かなかったいう報告を受けたことがあった(F.A.Q.384)のですが、今は動くのしょうか?
たっくさん、ありがとうございます。

実はSaveをオフしてVCDだけでやっていますが、ISEが吐いたVerilog形式のネットリスト****_timesim.vなので、VCDファイルを見ても信号名が見えません。テストベンチのもう1つ上に階層を作れば、信号名が見えるかもしれないのでやってみます。

今の状態でVeritakで吐いたVCDファイルの容量は380MB程度でした。これを10.1iのXPowerで読み込むと、Fatal ErrorでXPowerが落ちてしまいます。
ModelSim Starter だとVCDファイルを作ってXPowerで読み込めるのですが、デフォルトのトグル率から変更がないようでした。シミュレーション結果を調べてみると、途中でXになっていたので、Veritakで調べようとしていました。ModelSim Starterだと全部のシミュレーションを終了するのに1時間くらいかかっています。

また、VeritakのVerilogプロジェクトメニューのプロジェクト設定ダイアログの説明がどこかにあるのでしたら、教えていただけますか?
marseeーさん、


プロジェクト設定は、tutorial 2.10です。

合成後でも、HARD TOP階層のポート名だけは、Human-Readable名でRTLから保存されているはずです。まずはそのIFの部分がどうなっているかだと思います。信号名だけでもVCD保存はできます。

$dumpvars(1,信号名,信号名....)

少数の信号を見るときは、こちらが速いです。

Veritakのプロジェクトを送っていただけるなら、RTL結果と比較するなどして、こちらでもどんな具合か見てみたいと思います。ご検討いただければ、と思います。




> $dumpvars(1,信号名,信号名....)
こうも書けるんですね。ありがとうございました。

> Veritakのプロジェクトを送っていただけるなら、RTL結果と比較するなどして、こちらでもどんな具合か見てみたいと思います。ご検討いただければ、と思います。
ありがとうございます。本当にありがたいのですが、お仕事の邪魔になっても困るという気持ちもありますので、頂いたヒントを元にもう少しやってみようと思います。

良く考えてみれば、SDRAMコントローラは、イニシャライズの時間が長いので、XPowerのVCDファイルによるトグル率を見る例としては向いていないような気がしてきました。もう少し単純な例で調べてみようと思います。
たびたび質問ですみません。

VeritakのXilinxの遅延シミュレーションのやり方は、Veritakプロジェクトと同じ階層にSDFファイルを置いて、プロジェクト設定のComplile modeをXilinx SDF にすれば大丈夫でしょうか?
ModelSimと同じファイルをシミュレーションしても波形がでないようです。どこか間違っていますか?Veritakはテストベンチの$dumpvarsだけModelSimと違っています。
$dumpvars(1, clk, reset, led, ddr_address, ddr_dq_fpga, ddr_ba, ddr_rasb, ddr_casb, ddr_web, ddr_dm, ddr_dqs_fpga, ddr_clk);

Veritakの図を2つ添付します。
ModelSimのシミュレーションの様子は下のブログに書きました。
http://marsee101.blog19.fc2.com/blog-entry-1025.html
marsee さん、
原因が分かりませんので、プロジェクト一式送っていただけますでしょうか?

たっくさん、

メールでプロジェクトをお送りしました。お暇な時に検討をよろしくお願いいたします。
marseeさん、

ファイルの送付ありがとうございました。

現象を確認しました。DCMが動いていませんでした。以下のような状況です。

1)ModelSim6.3Cの付属ライブラリ(コンパイル済み)では、動きました。
2)Veritak-Xilinx9.1i のsimprimesでは動きました。
3)Veritak-Xilinx10.1 のX_DCM_SP.vを9.1iのそれと置き換えると2)に同じ結果になりました。

以上より10.1以降のX_DCM_SP.vの記述変更がなにか影響していると考えますが、原因については、未だ分かりません。

WORKAROUNDとしては、9.1i環境での合成・POSTISIMライブラリを(おそらく9.2もOKだと思います。)を行うか、ライブラリをCOPYして、X_DCM_SP.vだけを置き換えるかだと思います。


なお、ゲートレベルで簡単に動いているかどうか確認するには、

1)DDRメモリのDEBUGをONにする
2)$sdf_annotate(.. をコメントアウトする。遅延なしゲートになります。IDFEFをプロジェクト定義してプロジェクトを分けるとよろしいかと思います。

これで、RUNするとDDRのメッセージがコンソールに出てくるのですぐに分かります。Viewerも実用的な範囲だと思います。

原因を解明した後、再度報告します。
10.1のsimprimsライブラリをModelSim6.3CでコンパイルするとVeritakと同じく、次のメッセージが出力されDCMが動作しません。

# Warning : Input Clock Period Jitter on instance DDRtest_tb.DDRtest_inst.\ddr_sdram_cont_inst/dcm_module_inst/DCM_INST1 exceeds 1.000 ns. Locked CLKIN Period = 20.000. Current CLKIN Period = 10.000.

遅延なしで、DCM周りの内部波形がVeritakと一致することを確認しました。
従い、10.1のX_DCM_SP.vの記述が原因と思われます。ModelSimで問題ないように見えたのは、恐らく10.1のライブラリをコンパイルしたものではなかったからだと思います。(10.1では、あるべき信号がダンプされていませんでした。)


お手数をおかけしてすみませんでした。




たっくさん、トラブルシュートをお願いしてしまって、申し訳ありませんでした。

了解しました。
10.1のX_DCM_SP.vの記述が原因ですね。ISE9は家のパソコンには入っていないので、明日、職場のパソコンからコピーして確かめてみたいと思います。
本当にありがとうございました。
たっくさん

ISE9.2iSP3のX_DCM_SP.vに入れ替えましたが、ModelSimと同じ波形はでませんでした。
ISE9.1iはたぶん入ってないので、ISE8のものと入れ替えて試してみます。

話は変わりますが、遅延シミュレーションすると階層ビューアの左側ペイン(インスタンス名)の検索も欲しくなりますね。インスタンス名が沢山ありすぎてわからなくなります。
marseeさん、

すみません。間違いがありました。X_DCM_SP.vだけではなくライブラリ全体を置換して行っていました。従いX_DCM_SP.vの説明はその通りなのですが、その他も取替えないと走りません。(複数のファイルの依存関係があります)次の手順でライブラリ全体を取り替えて確認をお願いします。9.2がダウンロードできなかったので確認はできなかったのですが、9.2でOKと思います。


遅延なしゲートの動作を確認します。

1)DDRメモリのDEBUGをONにする
2)$sdf_annotate(.. 
3)Saveなし、DebugMode Normalが速いです。

私のマシンでは(Q9550)、コンパイル2sec、SIM時間24secで終わりました。

このときのログが以下です。
http://japanese.sugawara-systems.com/user_note/marsee-analysis/Veritak91iNodelay.txt

同様にModelSim6.3Cのログです。(頭の方は、スクロールバッファが不足して取れていません。)

http://japanese.sugawara-systems.com/user_note/marsee-analysis/ModelSim91iNodelay.txt

遅延なしでは、完全に一致していると思います。
これは、Veritak・ModelSim共9.1のライブラリを使用した結果ですが、10.1のライブラリをコンパイルするとVeritak・ModelSim共、全く動かなくなるのは、前に説明した通りです。

次にSDF DelayをEnableした結果です。

http://japanese.sugawara-systems.com/user_note/marsee-analysis/Veritak91iSDF.txt

http://japanese.sugawara-systems.com/user_note/marsee-analysis/ModelSim91iSDF.txt

遅延SIMの場合、一般には、Veritakの結果は、完全には一致しません。これは、

・Setup/Holdエラー時のXの取り扱いが違うこと、
・SpecifySection中に遅延パスを定義(Xilinxの場合100psが入る場合があります。)は無視している
・レース記述

等によるものです。

>検索も欲しくなりますね。インスタンス名が沢山ありすぎてわからなくなります。

同意です。機会を見て実装したいと思います。


今回、私の解析のミスにより、却ってお手数をかけてしまったことをお詫びします。






本当に詳しい説明をありがとうございました。

ISE9.1のsimprims のソースがあったので、それでシミュレーションしてみたところ、うまく行きました。
SDFなしだとVeritakは最後までシミュレーションが終わって、出力がでています。ModelSimはいまやっていますが、多分60分以上かかるので、まだ結果がでていません。
ありがとうございました。XPowerに食わせるVCDはSDFなしで十分そうなので、これでやってみたいと思います。
遅延シミュレーション(タイミング・シミュレーション)は難しいですね。不定値が伝播してしまいますし、どこが悪くて伝播するのかが良くわかりません。プリミティブに分解されているので。。。あまりやらないほうが良さそうです。

たっくさん、解析をしていただいて、本当にありがとうございました。助かりました。
質問させて下さい。

----------------------
parameter MULT =0;
wire [1:0] out;

assign out = { 2'b11, {MULT{1'b0}} }
----------------------
【out == 2'b11】が期待値

上記のように繰り返し記述の乗数が0になる記述というのは、
Verilogの記述として不正な記述なのでしょうか?


modelsimでは期待通り。
Simplifyの合成結果も期待通り。
Veritakでは値を評価できないとerror通知するものの、
sim結果自体は期待通り。

NCでは, {MULT{1'b0}} が 1'b0 と評価され、
【out == 2'b10】で期待値不一致。
失礼、
自己解決しました。

LRMにそのものズバリが書いてありました。

/////////////////////////////////////////////////////////////////////////////////////
Another form of concatenation is the replication operation. The first expression shall be a non-zero, non-X
and non-Z constant expression, the second expression follows the rules for concatenations. This example
replicates "w" 4 times.
{4{w}} // This is equivalent to {w, w, w, w}
a[31:0] = {1’b1, {0{1’b0}} }; //illegal. RHS becomes {1’b1,;
a[31:0] = {1’b1, {1’bz{1’b0}} }; //illegal. RHS becomes {1’b1,;
a[31:0] = {1’b1, {1’bx{1’b0}} }; //illegal. RHS becomes {1’b1,;
/////////////////////////////////////////////////////////////////////////////////////

ログインすると、残り1件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Veritak友の会 更新情報

Veritak友の会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング