| 項 |
Question |
Answer |
| 1 |
時間0で、トリガが検出されません。次のソースで、$displayが動きません。
initial begin
edge=0;
end
下位モジュールで、
always @(negede edge) begin
$display("edge detected %b",edge);
end
シミュレーション最初の非同期Preset動作がModelsimと違う。
Project Optionを変更したら同じになったがどちらがいい... |
Project OptionのThread Generate Sequence の設定を上にしてください。(After all always threads doneにCheck)。
Verilogの言語チュートリアルにも書きましたが、シミュレータによる相違の一つで、言語仕様でスレッドの生成順序が規定されていないことによるものです。詳しくは、Verilogの言語チュートリアル第5章シミュレータの内部構造-時間とイベントをご参照ください。
Verilog 言語仕様上は、どちらの設定でもOKです。どちらがいいということ
はありません。
デフォルトと反対の設定ですと、全てのAlwaysが実行されてから、Initialが実行されます。デフォルト設定ですと、それが、Module内でAlways->Initial、
次のModule内でAlways->Initialという風に実行されます。(Stepで確認できます。)
Power On時は、どうしてもThread依存になってしまいますが、Thread依存コードは、
Power On後の最初の数パターンで吸収されるテスト記述とすることををお勧めします。Option設定
を変えてPower On後の数パターン後、一致しないようだと、Thread 実装Seq.
依存コードになっているということです。これは、「他のシミュレータと結果が違う」ことを意味します。たとえば、Tutorial にあるPICの例は、Project Optionが逆だと、
パターンズレが生じてFailとDisplayされます。これは、使ったシミュレータのThreadシーケンスに依存したコードになっている悪い例です。
ASIC屋さんへパターンを提出する際、PowerOn後の数パターンをxxにすることは、普通に行われていると思います。
=>Ver.1.47から、新たなオプションをDefaultとしました。 |
| 2 |
Project OptionでSave All Sim DataにCheckをしないと波形がおかしい。Checkをすると遅くなる。 |
仕様です。波形をご覧になる場合は、Save All Sim DataをOnにしてください。Onにすると全波形を圧縮しながらシミュレーションを行うので遅くなります。 |
| 3 |
$fscanfが動かない |
$fscanfは、システムファンクションとして規定されているので、戻り値の記述が必要です。(たとえば、 a=$fscanf..)
Version1.22よりコンパイルエラーからWarningに変更します。
|
| 4 |
「ステートに名前を付ける」が機能しない。 |
パラメータリストでは、[msb:lsb]を明示してください。
たとえば、
parameter [2:0] vidle = 3'd0,vvoid = 3'd1,vwld = 3'd2,vsen = 3'd3, vild = 3'd4,vinter = 3'd5;
のようにビット幅[2:0] を明示します。 |
| 5 |
NCSIMを使用しています。Veritakでサポートしていないタスクは、無視するようにできないでしょうか?
|
Unique Keyword Veritakは、Veritak内で暗黙に宣言されています。`ifdef Veritakで逃げてください。サンプルソースは、regression testフォルダにfmonitor_test.vがありますので、それをご参照ください。 |
| 6 |
Read-Onlyレジスタの動作確認をする場合、テストベンチではforceで 内部ノードを所望の値に設定し、レジスタリードをすることで動作確認
していますが、forceの書き方によりコンパイルがエラーとなります。
(Verilog-XLでは問題なくコンパイルできます) |
Veritakのバグです。1.24Aで修正しました。1.41Aより、NET構文のFORCE/RELEASEも対応しました。 |
| 7 |
信号処理の回路を検討しているので、波形をアナログで表示したいのですが、 どうすればいいのでしょうか? |
Tutorialに載せていませんでした。載せました。 |
| 8 |
ウィンドウズ2000で動かしたいのですが、可能でしょうか?
また、2000に正式対応する予定はありますか? |
Windows2000もXP系なので、何ら問題なく使用できます。Release時の検証環境としては、XPを使っているのでXPとしかしていませんが、サポートとしては、Windows2000も行いますのでご安心ください。 |
| 9 |
数々の改善のおかげで、veritakはそれほど規模の大きくないブロックレベルでのRTL-Simに使用するには重宝しておりますが、チップレベルでの大規模回路でのデバッグへの適用を考えるとSim実行時間で問題があります。
NC-Verilog(UNIX)に比べて遅過ぎるのですが。 |
=>3.00で、速度計測してみました。3.1ユーザレポートによりますと,ベンチによりますが、PEからSE程度の速度のようです。 NC/VCSとの比較では、1/5程度と推定しています。
|
| 10 |
仮想メモリの最大サイズが小さい場合、さまざまなエラーメッセージを出力する。
Windows2000、実メモリ128Mバイト、仮想メモリ最大384Mバイ
トで発生。
仮想メモリの最大サイズを大きく設定する。
とりあえず仮想メモリの最大サイズを768Mバイトに設定して症状が発生しなくなった。 |
Veritak内部では、 シミュレータエンジンスタートアップ時に仮想メモリを比較的大容量取得しています。
このときメモリが確保できないとエラーとなります。その場合は、下記1)2)のいずれかを実施してください。
1)ご掲示方法のように仮想メモリを増やします。
2)プロジェクトを構成することで、WaveformView用の取得仮想メモリ設定を変えることができ、必要な仮想メモリ量を少なくできます。
<方法>
A)プロジェクトを構成します。
B)プロジェクト設定=>MAX_DISK_CAPACITY_FOR_SAVE_DATA 400MBを220MBにします。
C)一旦プロジェクトをSaveし、LoadProjectします。
|
| 11 |
RTLシミュレーションにおいて、ALTERAのPLLマクロ(メガファンクション:altpll)を使用すると、
(RAM,ROMマクロではそんなに大幅な速度低下はないのですが、)PLLだけは大幅な速度低下となってしまいます。 |
Version1.41Aにおいて改善しました。
=> ユーザ様から[PLL記述で、10.5倍、PLLを含まない記述で3倍程度になった。」との報告をいただきました。ありがとうございました。 |
| 12 |
generate文でインスタンスを記述するとき、上位層で記述したパラメ
ータが下位層モジュールにオーバライドされていない。そのため、下位層
デフォルトのパラメータが用いられ、warningが出る。またそのため正常なシミュレーションができない(defparamを用いた場合)
VCSでは問題のない記述です。
|
Verilog2001 generateはVersion1.44よりサポートしました。 |
| 13 |
プロジェクトを起動するとメッセージWindowが起動しますが
Windowのタイトルバーの”Veritak 127”とありますが、
これはバージョンを意味しているのでしょうか?
バージョンでしたら次回のソフトのUpDate時にでも
修正していただけますでしょうか?
使用環境は、
OS WindowsXP
Veritak Ver1.29A です。 |
これは、読み込んだプロジェクトファイルの冒頭に書いてある
Version Noです。この場合は、Version1.27以上で作成されたプロジェクトファイルを読み込んだことを示しています。
Versionが上がって、プロジェクトファイルにSaveする情報が増えたときだけ、書き直していますので必ずしも、お使いのVeritak Versionを現していません。(Version1.29では、情報追加がありませんでした。)
そういう訳ですので、そのままとさせてください。
Version.1.50から、VersionUpの際は、更新することにしました。 |
| 14 |
RTLシミュレーションで、A社やX社などベンダーオリジナルのオリジナルファンクション
(MegaFunctionやMegaCoreなど)を使用したシミュレーションの方法が今ひとつ
解りません。ご教授頂けると幸いです。
|
Veritak チュートリアル 5 ゲートシミュレーションで、FPGAベンダのライブラリを使ったシミュレーション例(RTL/ゲート)を行っております。御参照ください。なお、FPGAベンダライブラリは、プロジェクトと同じドライブにある必要があります。ないときは、COPYして同じドライブになるようにしてください。 |
| 15 |
ツールチップのon/offは出来るのでしょうか? |
WaveformView上、マウス中ボタンでメニューがでてきます。 |
| 16 |
Xilinx CoreGenで生成したコアでコンパイルエラーが発生する。
DCM の記述でコンパイルErrorが発生する |
1.44でFixいたしました。 1.44よりプロジェクトのLIBフォルダを指定できるようになりました。これによりフォルダ内ファイル全部のSelectをしなくてもよいようになりました。
DCMの記述は、Real Case文で、1.44よりサポートしました。 |
| 17 |
Altera primitive Library
を使った記述で、コンパイルが終了しない。 |
Altera の*atoms.v は、Primitive Libraryになっておりゲートレベルシミュレーションの為のライブラリです。この場合は、Project Optionの Alteraをチェックしてみてください。
また、Altera Primitive Livrary(特にメモリを含んだ記述)は、必要以上にメモリを馬鹿食いします。たとえば、Altera Primitive Libraryを使った 32KB
メモリ,5000LUTの記述で、500MB 位Veritakは消費してしまいます。VeritakでAltera ゲートレベルで扱える範囲は、PCメモリの搭載量にもよります。(EP1S60+32MB
Memoryで、コンパイルに2GBのメモリを必要とした例がございます。)
Veritakは、RTLにフォーカスしているシミュレータです。大規模Projectのゲートレベルシミュレーションでは、規模的な制限があることをご了承ください。
|
| 18 |
Simulationが進まない。
Silosでは、No convergence during time simulation エラーが出るが。 |
無限ループ記述をチェックしてみてください。 Alaways/Initialで記述される無限ループは、DebugモードPauseで止まるはずですが、Net記述で時間の進まない無限ループだと 止まらない仕様になっております。Simulationが進まなくなる時刻手前からStep実行により記述のデバッグを試みてください。
|
| 19 |
Design規模の制限は? |
・Veritakは、設計の殆どの時間が、RTL/テスト記述/RTL検証時間であることに注目して、RTLにフォーカスしているシミュレータです。
・RTL レベルで使い勝手がよいのは、個人で設計できる限界に近いASIC10万ゲートクラスではないかと思います。このレベルでは、トレースモードを使っても速度低下はそれほど感じないと思います。
RTLレベルの限界は、PCメモリに依存します。500MBメモリ搭載のPCでは、ASIC100万ゲートレベルが可能と思われます。(このレベルでは、NCとの速度差は、10倍近くになると思います。)
いずれにいたしましても、記述によりますので試用時に御確認ください。
ゲートシミュレーションについては、17項を参照ください。
|
| 20 |
wire #(real-real) a=b;
でコンパイルエラーが出る |
Net Real Delay Expressionは、Real単項だけの限定サポートになっておりました。Version1.44(1/11)リリースより通常のExpressionに対応しました。 |
| 21 |
VHDL->VerilogトランスレータがWindowsXPでないと使用できないとのメッセージが表示されます。
当方の使用OSはWindows2000ProSP4です。
|
Version 1.44よりWindows2000に対応しました。
|
| 22 |
Veritakの使い方ではないのですが、realの使い方を説明した文献がほとんどなく、よくわかりません。 |
インストールしたフォルダのなかに「regression test」フォルダがあります。これは、コンパイラの検証に使ったサンプル集です。(1.47では270個程あります。リリース時には、これで、Failがないことを確認しています。)そのなかでrealを扱ったサンプルもありますのでgrepしてみてください。
またオープンコア「デザインウェーブコンテスト2005課題を解く」,または、「演算 除算/対数/平方根のH/Wアルゴリズム」で、realを使ったシステムシミュレーションを行っています。ご参考になるかもしれません。 |
| 23 |
ProjectをHDDではなく、USB
フラッシュに置くとコンパイルできない。HDDでは、問題ない。 |
メルコ バッファロー製 RUF-C64Mで問題があったとのことでしたが、しかしすでに販売中止品でしてしかもUSB1.1準拠でした。入手を試みたのですが、入手できず、再現にいたっておりません。なお同系列のUSB2.0では、問題なかったとの報告をいただいております。 |
| 24 |
Xilinx Coregen LibraryのMemory で、EC=220エラーが出てコンパイルできない。
RunTime warningがでる。 |
CoregenのRTL記述に問題がありますが、Libraryになっているので、Veritak 1.49Aで応しました。
Coregenlibは、VerilogHDLとしてあまりよい書き方をしていません。これまで、何箇所かWarningがでる箇所を特定、解析していますが、そのように書かれている としか言い様がありません。例えば、存在しないインデックス値のVectorにライトしてしまうという記述が散見されます。 |
| 25 |
チュートリアルに「拡張子vtakprjは、インストール時にVertakに関連付けるられます。フォルダを移動したときは再インストール。。」とありますが、エクスプローラ等で関連付してもよいですか? |
手動で、できる方はそれでもOKです。VeritakのメインプログラムはVeritakWin.exeです。Drag&Drop、プロジェクトのダブルクリックによる起動等は、このEXEに対して引数として渡すことになります。 |
| 26 |
1)シュミレート時間は、どれくらいできるのでしょうか?
2)テストベンチの時間ステップと、配置配線後の”時間ーステップ”をどの様に関連づけ、遅延量を考えてば良いでしょうか。
|
1)シミュレーションの時間設定を、ツールのどこかで設定でするものではありません。Spice等のAnalogシミュレータとは違い、刻み幅(デルタt)ごとに、見るものではなく(たとえば、1psごとに値をいちいち見に行くことはなく)、EVENTがあったときしか値を再計算しません。これをEventDrivenと言います。(Verilog/VHDL皆同じです。)
たとえば、
`timescale 1ns/1ps
という記述では、単位は、1ns、丸め精度は1psで行うということですが、
always #10 a=~a;
と言う記述のとき変化するのは、#10、つまり10ns毎しか値は変化しないですから、1ps毎に値を計算する必要はなく10ns毎に見ればよい訳です。従ってシミュレート時間の「時間としての制限」はありません。(ただし、SaveでDiskの容量設定はProjectOptionであります。)実際的に制限になりうるのは、発生するEVENT数、つまり、対応するゲート数とPCの搭載メモリになります。通常は、コンパイルできれば、実行時メモリ不足になることはありませんので、デザイン規模とメモリという関係に帰着しますが、それについては、上の方のF.A.Q.をご参照いただきたいと思います。
2)テストベンチにおいては、単位ですので、たとえば、
#10 a=0;
#10 a=1;
の10は、10nsでも10ps,10ms、何でもいいのです。その単位は、たとえば、
`timescale 1ns/1ps
のように冒頭に指定しますが、RTLシミュレーションにおいては、Hardwareの記述(論理合成部)の遅延時間は、0と考えますので、仮想的な時間でいいのです。
配置配線後は、MAX xxMHzと駆動最大周波数を合成器が言ってきますので、
それよりも速い記述をテストベンチで指定しておりますと、当然期待通り動かないことになるので、それ以下になるように記述しなければなりません。そこで、`define CYCLE 10
としておいて、上の例では、
#(`CYCLE) a=0;
#(`CYLCE) a=1;
としておくと合成器が、9nsでもいいよと言ってきたら、冒頭のCYCLEを9
にするだけで、RTLテストベンチがそのまま、最大駆動周波数ので遅延シミュレーションにもなります。
Veritak チュートリアルでは、具体例で、RTLテストベンチから、論理合成、遅延シミュレーションまで詳しく説明しています。
|
| 27 |
マーカをだすと、拡大縮小ができなくなってしまう。1.50以降 |
個別グラフィックチップ/ドライバに依存するようです。
対処Versionは、1.52D以降です。 |
| 28 |
[環境]
* Veritak Version 1.60A Build May.12 2005
* QuatusII version 4.2SP1 or 4.1
* ModelSim - Altera5.8e
[現象]
* チュートリアルの "5.1.2 Dual Port RAM" シミュレーションを実施
* Altera ライブラリーは以下に設定
C:\altera\quartus42\eda\sim_lib/altera_mf
* シミュレーションを実行すると、RAM出力に不定がある。(添付ファイル参照)
[その他]
* ModelSim - Altera5.8e(QuatusIIVer4.2とセットだったもの)で確認すると、
不定は発生しない。
* QuatusII のVerを4.1にバージョンダウンした場合のaltera_mfを
ライブラリーとして設定すると不定は発生しない。 |
Veritakのバグではありません。altera_mf.vの記述に問題があります。5.0のaltera_mf.vでは修正されているので、5.0以上のVersionをお使いください。ModelSimでは、なぜか次の文で、トリガをかけてしまっているからです。(6.0で確認)
module tri_test;
wire a;
sub sub1(a,);
initial begin
#100;
$finish;
end
endmodule
module sub(input a ,input e);
tri i_byteena_a;
always @(i_byteena_a )
begin
$display("triggered");
end
endmodule
|
|
| 29 |
パラメータのステート名表示が???になってしまう。 |
Verilog-2001形式のパラメータリストにしてください。
// Parameter List
//By Tak.S May.18.2005
//parameter IDLE_ST = 3'h0;
//parameter ST0 = 3'h1;
//parameter ST1 = 3'h2;
//parameter ST2 = 3'h3;
//parameter ST3 = 3'h4;
//parameter ST4 = 3'h5;
//parameter ST5 = 3'h6;
//parameter ST6 = 3'h7;
//を
// Parameter List Added by Tak.S May.18.2005
parameter IDLE_ST = 3'h0,
ST0 = 3'h1,
ST1 = 3'h2,
ST2 = 3'h3,
ST3 = 3'h4,
ST4 = 3'h5,
ST5 = 3'h6,
ST6 = 3'h7;
//にしてください。 |
| 30 |
次の記述がVCSの結果と一致しません。?
wire signed [7:0] regSB;
assign regSB = $signed(4'b1100); |
Veritakのバグです。Version1.61/1.63で修正しました。なお、$signedは、FPGAの論理合成で未対応なようです。4'sb1100 (Verilog-2001) の方がより直接的な表現になるかと思います。また、LHSと、RHSで、ビット幅が異なる演算は、VHDLでは、エラーとなりますが、Verilogでは、エラーとなりません。これに符号付きがはいるとさらに、状況を複雑にするので特に、LHSとRHSのビット幅を一致させて書く記述をお勧めします。(VeritakのLintオプションで、チェックするのも一方法です。)なお、Verilog-2001符号については、言語チュートリアル編8.3.5にあります。 |
31 |
VeritakでVCDファイルを出力し、LSIベンダーさんに送ったところヘッダーがうまく認識できないとの連絡がありました。
全く同じ下記のVSDファイル出力の記述での結果を添付しますが、VeritakとModelSimとで結果が異なるフォーマットになっております。
どちらの出力ファイルもVeritakで波形確認できるのでフォーマット自体は問題ないのだと思いますが、LSIベンダーとやりとりのために、出力フォーマットをModelSimの形式で出力する方法をご教示いただけないでしょうか? |
拝見したVCD出力は、LRM上は問題ない記述です。MODELSIMとの違いは、個々の信号にたいして、$scopeが入っている点です。これは、個々の信号について$dampvars宣言を行っているためですので、ハードのトップ階層による方法で変更してみてください。
例えば、
initial begin
$dumpfile("Sim.vcd") ;
$dumpvars(1,Sim_top.abc.a);
$dumpvars(1,Sim_top.abc.b);
$dumpvars(1,Sim_top.abc.c);
...
を
initial begin
$dumpfile("Sim.vcd") ;
$dumpvars(1,Sim_top.abc);
にすると Sim_top.abcの階層にある信号すべてが出力され、そのSCOPEに対して$scopeの記述が対応しますので、ModelSimとの相性が良くなると思います。
|
| 32 |
tranでInternal Errorが発生する |
tran..構文はVersion 1.71で、strengthの表示と共にサポートしました。 |
| 33 |
reg宣言する前に信号を使用した場合もWarningメッセージを出してほしい。
ALTERA/QuartusIIではエラーになりませんが、ModelSimではエラーになります |
ご指摘の箇所は、LRM上問題ない記述です。なぜか、De-fact StandardのシミュレータとLRMとの乖離が存在するため、悩ましい問題です。ここでの処理は、LRM準拠とし、当該指摘箇所は、LINTでWarningを出力することにしました。Version1.64より。 |
| 34 |
reg宣言やwire宣言していない信号res00を使用した場合何らかのメッセージを出してほしい。 Enable
Lint Warning をチェックしていてもWarningメッセージが出ない。ALTERA/QuartusII
や ModelSimではエラーになりますので |
Verilogでは、インスタンスポートの1ビット宣言は、wire宣言をしなくてもよいのですが、ご指摘の箇所は、確かにLRM上エラーとするべきです。Verision1.64よりエラーとします。また、LINT機能では、Verilog2001の'default_netype
none
に相当する処理をWarningとして出力するようにします。 |
| 34 |
アプリケーションエラーで落ちる。
Viewerを最小にしておくと起きない。
現象が出やすいのは、DELLのようです。Precision670、370と言ったタイプが
ありますが、全般的に同じ動きをします。ほとんどがPen4で、Memoryは1〜2GB
程度入っています。(一部Xeonがあったかも。) |
ViewとSimulationの同時進行に起因し、グラフィックカードによるようです。
1.64で対策済みです。 |
| 35 |
プロジェクト設定で-include_dirを指定したがincludeファイルを探しに行かない。 |
-inlclude_dir は、プロジェクト編集画面で、一番頭になるようにしてください。逆に言うと、-include_dir
より上にあるファイルは、それより下にある-include_dir フォルダを探しに行かない仕様になっています。 |
| 36 |
シミュレーションをしていて、ソースを直した時など、Saveボタンをクリックしておくのですが、せっかく信号を整列させておいても、Reload
& GO するとシミュレーションが終了してもWaveform Viewerはポップアップせず、また一から信号を整列させています。
何か良い方法は無いでしょうか? |
現在の仕様では、コンパイルエラーがでた後のReloadでは、画面が出ません。このため、F.A.Q.s.TODO LIST29によりSaveボタンを設けました。
Saveボタンでは、Diskに状態がSaveされますので、所望のWaveformViewが出ているときにSaveしてください。
この後、ソースを直してコンパイルエラー等でWaveformViewが出ていないときにはSaveしないでください。(SaveするとWaveforViewなしがSaveされてしまいます。)
Load Projectで、ファイルダイアログを出してProjectを再読み込み、GOするとSave状態で出てきます。また、Doファイルによる画面ごとのSaveもできます。(F.A.Q.s TODO LIST6)チュートリアル2.4.10をご参照ください。
なお、本アイテムは、TODOLIST59に関連しています。1.68より改善しました。 |
| 37 |
<XILINXでのゲートレベルSIM>
結論から申し上げますと遅延が付いてゲートレベルSIMが動作しました。
そこで質問ですが "glbl.v"は、プロジェクトで設定する時に順番があるように
思えますがいかがでしょうか?
テストベンチより上におくと、うまく動作しないようです。
弊社では、プロジェクトを
(1)verilognet
(2)testbench_top
(3)other testbench_model
:
(4)glbl.v
(5)-lib_dir
simprims
にするとうまくいきました。
((4)を(2)の前に置くと)うまく動作しません。) |
ソース冒頭に下記のような宣言があり、これが影響したものと思われます。全部のModuleに宣言が含まれていれば、問題ないのですが、恐らく、テストベンチ で、宣言されてないmoduleがあり、glbl.vのタイムスケールを引きづったのではないかと想像します。
VerilogHDLの仕様の紛らわしさと言いますか、Veritakチュートリアルにも、その辺の事を書いていませんで
した。次回改版時に順序問題について追加します。
`timescale 1 ps / 1 ps |
| 38 |
veritakは、MIN,TYP,MAXのどの遅延を用いているのでしょうか? |
SDFにおいては、TYPを使っています。
これは、Altera/Xilinx共SDF ファイルをみていただければ、分かりますが、MIN/TYP/MAX共、同じ値になっており選択の意味がないからです。しかしながら、お使いのACTELのSDFファイルは、MIN/TYP/MAXが有意に生成されておりました。
そのため、1.68(7/4Release)より、選択を設けました。 |
| 39 |
Veritakでもって、cycloneを用いた設計をしております。
メガファンクションのlpm_multを使用し、RTLシミュレーションを行いたいのですが、いったい何をプロジェクトに入れればよいのかが分かりません。
FAQを見て、チュートリアルの5章は良く読みました。
|
altera_mf.v と同じフォルダにある220model.vのなかにlpm_mult モジュールが定義されていますので、それをaltera_mf.v
と同様にプロジェクトのなかに放り込んでください。multだけなら、
altera_mf.v は要りません。 |
| 40 |
タイミング設計時に、基準クロックのエッジに合わせて、グリッドを書いています。
Waveform Viewerも、一定の時間間隔のグリッドではなく、指定クロックの指定エッジを単位としてグリッドを表示するように出来ないでしょうか?
|
グリッドは、1.68から、シミュレータの精度で設定できる ようにしました。(`timesclale
1xx/1ps になっていれば、1ps単位での設定ができます。)通常クロックは、Power
Onから自走していると思うので、大部分は カバーできるのでは?と思います。 |
| 41 |
Xilinx7.1 で合成できる記述で、generateがコンパイルできない。 |
Veritakのバグです。1.70で修正しました。 |
| 42 |
早速インストールしたところ、PCにインストールしてある
Virus検出ソフトウェアが、veritakwinフォルダにあるassosiation.exe が Worm/Opanki.A
の可能性ありと診断しました。
webでwormの内容について調べましたが、AOLのメッセンジャーを
使って広がるwormとのことでしたので、無視してインストールして
しまったのですが、大丈夫でしょうか? |
MacAfeeVirusScan (最新Versionと最新更新Data)で、 Scanしましたが、ウィルスは、検出されませんでした。
また、メッセンジャーは、弊社の全PCでインストールしておりません。 どうして、そのように診断されたかは不明ですが、association.exe
は、関連付 けの為(vtakprj拡張子)に、レジストリを操作しますのでそのコードを読んだのかもしれません。
なお、このプログラムは、インストール時に一回だけ実行され、それ以外は実行
されませんので、削除していただいても評価に支障はございません。いずれにいたしましても,開発環境/リリース時の検査を含め、ウィルス対策は、万全を期しておりますので、ご安心して御使用ください。
|
| 43 |
現在veritak上でPLIを利用しようと試みております。
菅原様のHP上のPLIを使った算術ライブラリの説明を参考に
しているのですが。システムタスクを追加する際の vpi_user.h
にあたるファイルは veritak のどのファイルになるのでしょうか?
また、PLIを試用する上で参考になるチュートリアル等も
ありましたら教えて頂けると幸いです。 |
旧PLIは保守になっているのでお勧めしません。Verilog-2001のPLI=VPIは、ICARUSのソースが参考になります。ICARUSでの$readmemdh等のシステムタスクは、全てVPIで書かれています。一部独自の機能で書かれていますが、ソースは読みやすいと思います。ソースのVPIフォルダをご参照ください。
なお、邦訳は、ありませんが、http://www.sutherland-hdl.com/pli_book_examples.html
が参考になると思います。
また、http://www.chris.spear.net/pli/default.htm
では、IO関係の記述がありますが、2001では、殆どBuilt inしているので、Veritakその他2001をサポートしているシミュレータでは必要ありませんが、記述としては参考になると思います。
SystemVerilogでは、DPIというのもありますが、これだと直接CALLですのでVPIの面倒なLINK手順は必要ありません。(が、その性質上、殆ど一発で動かさないといけません。)Veritakでは、コンパイルドバージョンにおいてDPIの実装を優先して考えています。
=>Item 135をご参照ください。 |
| 44 |
いつもveritakを設計検証のメインツールとしてつかわせていただいております。
早速ですが、質問がございます。
xilinxの配置配線後のシュミレーションを行いたいのですが、コンパイルが途中で止まってしまいます。
Reduction Phase: |
ターゲットデバイスはxc3s1500との事で、Veritakには、その規模のゲートシミュレーションは、荷が重過ぎるようです。
ゲートレベルについては、改善が滞っており申し訳ありません。 |
| 45 |
VCDファイルは144 MBで、読み込めません。 |
1.79Aで改善しました。
VCDのフォーマットは、一種の圧縮フォーマットになっていて、通常、内部のメモリは、VCDファイルサイズの数倍程度メモリが必要です。(たとえば、144MBx5=700MB強)
1.79A での評価では、例えば、140MBのファイルで、750MB、250MBのファイルで1.7GBのメモリが必要でした。
それ以上のVCDファイルについては、64ビットVersionを待っていただきたいです。(かかる時間は別としてサイズの制限はなくなります。)
|
| 46 |
波形表示画面で、ある信号に注目して他との比較等を行いたいことはよくあるかと思いますが、このとき、マウスクリックで選択したときに、該当波形を「反転」等して強調表示できると、とても具合が良いと思うのですが如何でしょうか。今の状態ですと、注目している波形がどれなのか直感的に分かりづらいことがあるかと思います。 |
選択波形のハイライト機能は、
・プロジェクト設定=>Highlight Selected Items
をチェックすると機能いたします。ハイライトの色は、
・表示=>色設定=>Highlight Color
で選択できます。設定した状態で、プロジェクトをSaveしておくと
ハイライト機能/ハイライト色は、覚えています。
また、StatusBarの左端は、xitemsになっていると思います。これは、現在選
択されているアイテムの個数を表しています。
ご要望事項とは、少し違いますが、これで代用できないでしょうか?
|
| 47 |
ALTERAのFPGAのゲートレベルシミュレーションをしたいのですが、PLLが発振
しません。
何が悪いのかアドバイスいただけますでしょうか?
PLLだけの簡単なプロジェクトを作成してみました。 |
Wizardで設定した周波数とTestBench上のRef周波数がわずかに違っていますね。確かにRTLのSimでは、このままでも発振してくれましたが、ゲートシミュレーションでは、Ref周波数のチェックにひっかかっているようです。Wizardで設定した周波数を入れてみてください。 |
| 48 |
1
クロックの立ち上がりのセットアップは1クロック分あり、ホールド時間は0という認識でいました。
ご存知のように高速ロジックではホールドタイム0での動作保証をしている
ものがありますが、それと同じような感覚でいました。
私の認識がおかしいのかもしれませんが教えていただければ幸いです。
2
シミュレーションする回路からの信号のレベルで入力する信号を
変化させたいときにどのように記述すればよいのか教えてください。
つまり、例えばシミュレーションベクタからSTBをアサートしたとします。
STBをネゲートするのは、シミュレーションすべき回路のACKがアサートされ時点でネゲートしたい。 |
HDLシミュレータは、言語仕様に従って順に実行しているだけですので、
少なくとも、この場合、SETUP/HOLDという概念はありません。単純にinitial
とalways の実行順序のみで決まります。単純には、CLKに対し、同時にDataを変化させるとどちらに転ぶかわかりません。これは、DFFのCLKに同時にDATAを変化させるとどちらにころぶかわからないのと同じではないでしょうか?
シミュレータが決まれば決定的ですが。。これは、Race問題と呼んでおり、シミュレータ同士で実行結果が変わってしまう例です。この辺の話は、言語編の5章に書いてあります。
とりあえず、DataとCLKを同時に入力しないようにしないといけません。そこで、添付のように記述してみました。HARDは、POSで見ますのでNEGで入れてやればいいですね。
例えば、 always @(posedge CLK) begin
if (wOUT==8'h44) begin
@(negedge CLK) ;
LD=0;
INDATA=$random;
@(negedge CLK);// 同時変化を避けてテストベクタを作成してください。
LD=1;
end
のように、Hardモジュールの出力(wOUT)に応じて、テストベンチ側の入力(INDATA,LD)を変えてやります。その際に、Hard側では使っていないEdgeで入力を変化させてやると、CLK周期が変わってもメンテが楽にできます。
LSIを設計する場合の最も大きな問題は、バグをいかにして出さないか?だと思います。バグを出さないようにするにはどのようにすればいいでしょうか?
理屈的には、全てのケースをシミュレーションで確認しておけばよいですね。それには、
周辺のモデリング(現実のハードはなくともそれらしく動く記述)が必要になります。そうすれば、仮想世界で、時間はかかっても全てのケースをテストすることは可能です。そのためには、パターン#ではなく、上記のようにダイナミックに応答するモデリングが必須です。HDLには、そのための機構が備わっています。
簡単なハードでも、上流でテストしておくことをお勧めします。FPGAの場合、「論よりRUN」の感覚もありますが、モデリングして機能検証という作業は大切な設計工程だと思っています。このとき、適度なモジュールユニット単位でのテストベンチを設計資産として残しておくことをお勧めします。
そうすると、仮に問題があった場合、RTLシミュレーションのテストベンチで、HARDだけ論理合成したものに置き換え、遅延シミュレーションをすることができます。ここで動いたのなら、まず論理合成の問題はない、と言えると思います。
|
| 49 |
I am running regressions on Windows XP by executing ModelSim PE in
command-line mode.
Can veritak be run in command line mode without the GUI? That would really
help to run regressions. |
Yes, though it is very primitive and interim.
See "Command" folder and "release_note.txt" for usage of command switch in installed version of 1.73A.
"example.bat" is batch file as small example.
|
| 50 |
reg[3:0] memory[3:0]
の信号を、Waveformに表示させようとした場合、「データはsaveされていません」と出ますが、表示は不可能なのでしょうか?
|
samplesフォルダにmemory_testのプロジェクトがありますので、Load Project/Goしてみてください。チュートリアルは、2.4.9メモリになります。Verilog-2001
の多次元配列(reg[3:0] mem [1:4][2:4] といったメモリ)のViewの例になっています。 |
| 51 |
I am running a complex testbench and modules that include a fast model of a large DDR by doing disk I/O using $fseek, $fscanf and $fdisplay.
What I see is when a value is read from disk into a register by doing $fscanf (file_reg), if the value is passed to a module above the module doing the file read, the module above correctly delays by one cycle outputting the value read from the file using a non-blocking assignment (tb_file_reg). However, when passing the value read to a module below the module doing the file read, the value is not delayed when doing a non-blocking assignment (o1). You can compare with the behavior of a locally-generated value (local_reg) which is correctly delayed by a module above and a module below the module that generates it.
|
In my implementations, $scanf behaviors like Blocking Assignment,not Non-Blocking assignment,so ,file_reg=hoo;
I think this may cause famous race problem in verilog as you know.
(Simulator dependency(threading order) results in most cases.)
If you are expecting Non-Blocking assignment in $scanf,
Add #1 in last line of always process.
always @(posedge clk or negedge reset_n)
begin
if (reset_n==1'b0)
begin
file_reg <= 2'd0;
local_reg <= 2'd0;
BA_reg<=0;
fp = $fopen("input.txt","r");
end
else
begin
local_reg <= local_reg + 2'd1;
#1;//file_reg are assigned like blocking_register
//file_reg=hoo
status = $fscanf(fp,"%d",file_reg);
end
end
In summary,thread sequence in Veritak is as follows.
1)#5 tb_clk = ~tb_clk; // Time advances
2)tb_file_reg_1 <= tb_file_reg; //Test Bench NBA
3) // status = $fscanf(fp,"%d",file_reg);//TAK
file_reg=file_reg+1;//TAK Blocking Assignment
4) out1 <= in1;
5)#5 tb_clk = ~tb_clk; // Time advances
Please note,
. out1 is assigned after updated file_reg
. tb_file_reg1 is assigned before updated file_reg
That's why Difference between out1 and tb_file_reg1 exists.
Thread Sequence in verilog depends on implementation of the simulator,
or even optimized level in the same version of simulator.
I checked by using Modelsim, the results are what you are expecting.
Thread sequence is;
1)#5 tb_clk = ~tb_clk; // Time advances
2)tb_file_reg_1 <= tb_file_reg; //Test Bench NBA
4) out1 <= in1;
3) // status = $fscanf(fp,"%d",file_reg);//TAK
file_reg=file_reg+1;//TAK Blocking Assignment
5)#5 tb_clk = ~tb_clk; // Time advances
However, this is not always true in all simulators as I mentioned.
Some simulator will perform ,for examples,1)3)2)4)5).It is noted 1)5) are determinative, while the sequence of 2)3)4) may vary.
One solution to avoid the race is to use NBA (as you did by local_reg.),
However $scanf is BA. So, some delay technique should be applied to obtain determinative simulation results.
|
| 52 |
Right now I am re-running my regression after finding and fixing a discrepancy between ModelSim 6.1a and Veritak 1.74a.
Inside a file, the entry:
...
forever #2222 clk = ~clk;
...
was interpreted by ModelSim 6.1a as 2222 ps while Veritak 1.74a was interpreting it as 2222 ns. The file does not have a `timescale but the testbench of the whole design has a
`timescale of 1 ns / 1 ps
ModelSim uses a 'default' setting which I believe is 1 ps / 1 ps but can be overriden.
I believe that Veritak 1.74a is doing the right thing by propagating the `timescale downwards. Can you please confirm this?
|
`timescale is frequent problem in Verilog-HDL.It depends on only order of compilation, not hierarchy of design.
For example,
File A;
`timescale 1ns/1ps
module ...
File B,C,D,E
module ...(no timescale declaration)
File F;
`timescale 1ps/1ps
module...
File G,H,K,
module ...(no timescale declaration)
If compile order is A,B,C,D,E,F,G,H,K
timescale of B,C,D,E is 1ns/1ps because previously declared is 1ns/1ps in File A.
timescale of G,H,K is 1ps/1ps because previously declared is 1ps/1ps
if compile order is F,B,C,D,E,A,G,H,K
timescale of B,C,D,E is 1ps/1ps because previously declared is 1ps/1ps in File F.
timescale of G,H,K is 1ns/1ns because previously declared is 1ns/1ns
You can change compile-order by changing order of files in Project file.
LRM states as follows;
The ‘timescale compiler directive specifies the unit of measurement for time and delay values and the
degree of accuracy for delays in all modules that follow this directive
until another ‘timescale compiler directive is read.
Of-course Veritak is based on LRM.
Veritak assumes 1ns/1ns until valid timescale appears. However this is not always true in other simulators. LRM states nothing about this issue,means it depends on implementation of simulator.
Recommendation is to declare timescale on all design files,for example,
using `include "xxx.h" . |
| 53 |
For example, put together all PCI signals and be able to shrink them to
1 line or expand to all as desired, then do the same for DDR signals. Kind
of what can be done with buses. Does Veritak have that capability? |
I think current Veritak can do that. Please see tutorial 2.4.6 Grouping.
After Grouping you can save the format in project file ,also can save as .do file (,which is not compatible with ModelSim's) |
| 54 |
下記でエラーが発生する。MODELSIMでは問題ない。
genvar ii;
generate
for(ii = 4 ; ii < 16 ; ii = ii + 1) begin
pulldown(A[ii]);
end
endgenerate |
問題は、begin :loop のラベルの記述(:Name)がないことです。少なくともVerilog 2001による記述では、for文のgenerateは全てラベルの記述が必要です。MODELSIMでなぜ、エラーとしていないかはわかりませんが、SystemVerilog3.1aでも該当する構文はないように思います。
従いまして、ラベルの記述をしていただくのが解決策になります。
なお、generateの説明は、http://japanese.sugawara-systems.com/tutorial/verilog/framepage7.htm
の11章の3にあります。 |
| 55 |
下記の添付ファイルで構文エラーが発生します。
遅延設定で、カッコ内の計算処理を行っていないようです。
#( ( 10:20:30 ) ) ;
#( ( 20:40:60) − ( 10:20:30 ) ) ;
のような文の処理ができないようです。 |
Version 1.78で対応しました。Min,TYP,MAXの選択は、
プロジェクトのSDFの設定で行ってください。 |
| 56 |
システムタスクreadmemh を使用してメモリモデルを初期化
しています。
シミュレーションを行うと、下記のメッセージが出力されます。
readmemb(h) ../xxx.txt Access Error accessing address=1000000 min_address=ffffff
max_address=0
恐らくデータ数が多いことが問題だと思っています。そこで、システムタスクreadmemhで初期化できるデータ数の制限を教えていただきたいのですがよろしくお願いします。 |
大きなメモリ宣言ですね。 たとえば、
reg [7:0] mem [24'hffffff:000000];
$readmem("abc ",mem);
範囲チェックにひっかかっている可能性があります。(Veritakの実装では、範囲Checkを厳密に行っています。)
これで、Data点数が1000001hex個あったとするとエラーになる可能性があります。
す。 この場合は、ffffff を少し増やしてみてはどうでしょうか?Veritakの実装では、メモリが許す限り頑張りますが、LRM上の仕様は、24ビットまでだったと思います。 |
| 57 |
Veritakにて以下の記述が syntax error になります。
reg [16383:0] pag0_buf;
pag0_buf = 16384'dx; |
1995では、Illegalな構文ですが、2001では、Legalです。1.81よりサポートいたしました。
=>
この文の応用で、'sdxとすると無制限にxが拡張されるので、Regression Testを書くのに重宝しています。ありがとうございました。 |
58
|
$freadで読んでいる途中でおかしくなる。 |
MS Windows 特有の世界があります。この質問は、「ModelsimもVeritakも同じだが、動かない。。」と何回か海外掲示板でも出ていました。
$fopen( "xx","rb") バイナリで開いてみてください。 |
| 59 |
$fscanf ("xx\n",xx);の後の動作がおかしい。 |
$fscanf 中の改行はサポートしていませんでした。1.85より対応しました。
なお、$fscanfよりも、一旦行を$fgetsで読んで、$sscanfで、解析した方がスマートかもしれません。 |
| 60 |
XilinxのROMジェネレーターがコンパイル不可 |
プリプロセッサのバグです。1.85で修正しました。 |
| 61 |
ソフト屋さんからの脱却をめざし、Verilog-HDLのお勉強,,
|
ソフトから入ってこられる方は、まずハードウェアのお勉強をお勧めします。
Veritakは、初心者には優しい作りになっていますが、Verilog HDL自体は、決してそうではないので、フリップフロップ、マルチプレクサ、等の概念をまず思い出すことが必要だと思います。
業務としてやっていかれるなら、HDLと回路の対応を記したSTARCの「RTL設計スタイルガイト」に目を通されることをお勧めします。(Verilogの言語と合成可能な記述はまた別です。 一定のスタイルを覚えてしまった方がよいのではと思っています。)
また、H/Wの勉強という意味では、(入手可能なら)HDL以前の ASIC論理回路設計法 小林芳直 が良い本でした。(私は、HDL以前に、この本をベースにASICを回路図ベースでそれこそ、数十個起こしました。)
=>

前述の通りVerilog HDL の合成記述は、文法(BNF)もさることながら、一定のスタイルを覚えた方が早いと思い、なにかよい方法がないかと考えました。そこで、入門用として、インストールパッケージsamples/coding_styleのsyn.hta スクリプトで、シミュレーションと記述の対応を書いてみました。(スクリプトなので、ウィルスチェックの警告は出ます。)数は、まだ少ないのですが、記述のメモとしても活用できるように Verilog-2001の記述についても順次追加していきます。 また、記述例としては、regression_testフォルダにも多数収録しているので、grepしてみてください。(1.94では、500以上のサンプルがありました。Veritakの歩みでもあります。) |
| 62 |
VeriPadの改造も考えています |
ソースは公開していますが、それが内部的にもDocumentの全てです。
不明な点は、どうぞお問い合わせください。
|
| 63 |
Q1 Veritakの正しい読み方が解りません。
Q2 「2xの実装はそこそこに、4xの検討に入りました」等の表現がありますが 2x、4xとは何でしょうか?
Q3つい先日、IEEEでVerilog2005が規格化されましたが、 Verilog2005については、将来的に対応を検討していきますか?
|
Q1べりたっく と読んでください。
Q2 2倍速、4倍速の意味です。ModelSimのザイリンクス版(アルテラ版もたぶん同速度だと思いますが、)1xとしたときの、シミュレーション速度です。ModelSimは、FPGA業界標準のシミュレータで、最下位機種のPEは、Veritakと同じか、やや速い速度です。最上位機種のSEという製品は、さらにその2倍速です。
従って、4xとは、SEの速度を目標にしているという意味です。
4x Versionは、C++ソースを吐きますので、SystemCモデルや、C/C++で書かれたユーザアプリケーションモデルとのLINKがSTATICに可能になると思います。
Q3言語仕様が大きすぎて1年かけてもその全てを実装するのはできないと思います。よく使いそうな機能(SUBSET)から年末位にリリースする予定です。 |
| 64 |
プロジェクト設定で、設定したはずのチェックが外れてしまう。 |
表示のバグです。1.93Aで修正しました。 |
| 65 |
A few of us tried using your software and were very impressed with it ..
I am not sure, but is it possible to run in batch mode. I would like to
be able to create an exutable (without any GUI interface), that I can submit
the jobs on remote machines and look at log file for pass / fail information. |
Veritak is currently interpreter ,not compiler for generating executables.However you can perform batch operations for use of such as regression tests.
Please see Command folder in installed package.
There should be one example "examples.bat".
Run "example.bat", then you will see the log file as a result.
Explanation of command line is in "release_note.txt".
Once you build veritak-Project and run the project, "veritak_command.txt" will be appeared in project folder. It may be easier to arrange the description to the command line. One note is that veritak2.exe in Command is all different from veritak2.exe in used GUI. Please use veritak2 in Command for use of batch operations. |
| 66 |
mifファイルによる初期化されたRAMはシミュレーシ
ョンでは使用できないのでしょうか |
mifファイルは、サポートしていません。 というよりも、Verilog言語以外の直接のサポートはしておりません。従って、mifにしろ、coeにしろhexにしろ、結局は、Verilogの形式にしないと読み込めません。Alteraの場合は、altera_mf.v
の中で、hexを内部でVerilogに変換しているので、hexなら読むことが出来ます。5.1以前は、$hex2verでこれを行っていましたが、5.1からHDL記述で、やるようになっています。(その為、遅くなっています。) |
| 67 |
読み込むテキストファイル(tp.txt)中にコメント行を入れたい場合
.vではどのように記述すればよいのでしょうか。
tp.txtの内容(例)
;Comment Line 1
aaaa5555
5555aaaa
12345678
;Comment Line 2
87654321
$xxxxという関数とかちょっとしたテクニックはほとんど知らないと言ってもいいくらいです。
何か良い書籍がありましたら、お知らせください。
|
オープンコアCRCの項に記載しました。
残念ながら、今回、一連の$xxは、Verilog2001で追加されたFILEIOというもので、邦訳ではないと思います。あるのは、英文のLRMだけで、しかもIEEEで数十ドルします。余裕のあるときに言語編で解説をするつもりですが、それまでは、すみません、サンプル(regressiion_test
フォルダ、オープンコア)を見ながらやっていただきたいです。 |
| 68 |
お奨めいただいたSTARCの「RTL設計スタイルガイト」に目を通しながら、本を2冊ほど読んでおりました。
Veritakの新版にて、書籍用とありますが、何か本が出るのでしょうか?
1ユーザーとして楽しみでもあります。 |
STARCの本は、実践的ですごく良い本だと思います。理屈よりも、
Design Compilerはこう解釈する、ということなんですね。
それ以上の、Coding Style については、Sutherlandさんが書いている一連のPaperがあり、余裕がありましたら、これもお勧めです。
http://sutherland.com/papers.html
海外と国内で一件づつ書籍化のお話があります。いずれも決まった話ではありませんが、それぞれの著者の方の評価用に制限を加えコンパイルし直したものを準備しただけで(Veritak-Liteは、公開していません)、実現するにしても随分先(1年後?)です。
Veritakは、あくまでプロフェッショナルが使いやすいツールを指向して(実際ユーザ様の、2/3以上がそうだと思います。)いるのですが、考えてみると、日本語環境を含め、初学者がすぐに使いやすいツールにもなっていると思います。そのような方々の力になれたら幸いです。 |
| 69 |
Having LINT checks switched on, I am getting "backward declaration"warnings
for the $display functions. Most likely it is my problem as I do
not have this issue with my other test benches. But - I am not able to understand
and fix it. |
As a workaround, please ignore Warnings for hierarchy signals. This should fix in near future versions.
=>Version 1.98A fixed this problem. |
| 70 |
Verilogのテクニックを教えてください。
functionを使って、2個のリターン値を取得したいのですが
方法はありますでしょうか。 |
ファンクションは、1個のリターンしか返せません。
ファンクションは、組み合わせ回路です。Cでいうならなら、関数CALLですね。
複数のビット幅でよければ、無理やり、下のような感じでしょうが、元々、独立した回路なら、複数のファンクション(すなわち組み合わせ回路)を呼ぶことになるでしょう。
function [8:0] FUNC (input [3:0] a, input [4:0] b);
FUNC={a,b}
endfunction
Item61/68に関連しますが、HDLの文法としては、間違いなくても合成の記述としては、問題である例が多々あります。もし、業務で記述されるようでしたら、RTLとHDL記述の対応を記したSTARCの書籍をご覧になることをお勧めします。
合成に関しては、既に実績ある記述(Coding Style)を真似ることをお勧めします。勿論、テストベンチは、合成の対象外ですので、文法を駆使して独自のCoding Styleで書かれても問題はないと思います。
|
| 71 |
I recently purchased your very promising Veritak simulator. I have found
one bug that seems to be present in the current 1.98A snapshot as well
as
the 1.75A stable version, regarding the concatenation operator when used
with don't-care values (1'bx). |
Yes,this is a serious bug. I will fix this within a day.
Fixed version will be 1.99A.
Again, thank you very much for your cooperation.
|
72  |
Micron のSDRAM記述でコンパイルエラーがでる。 |
task /function で
input a;
real a;
という記述に対応していませんでした。Version2.00Aにて対応しました。
また、シミュレーションモデルでは、コンペアエラーになってしまいますが、これは、テストベンチの記述で、レースがある為で、ソースを直していただくより方法がありません。ソースを修正するシミュレーションモデルのFeedBackを行います。 |
73 |
同じラベル名をつけてもエラーとなりませんが、問題ないでしょうか?
always @(posedge clk or negedge reset_n)
begin : delay
reg a;
...
always @(posedge clk or negedge reset_n)
begin : delay
reg a;
... |
SCOPEは、Uniqueである必要がありますので、コンパイルエラーとすべきと考えます。Version
2.00Aにて対応しました。 |
74 |
ifdefでこんな事したいのですが、表記が不明です。
良い方法があればお教えください。
よろしくお願いします。
`ifdef PACKET_TYPE_PL_IN || PACKET_TYPE_PL_OUT
max_i = 70;
`endif
`ifdef PACKET_TYPE_PL_IN || PACKET_TYPE_PL_OUT
DPRAM_WE = 1;
`end
|
C言語みたいに||とか &&は使えません。
どうしても
`define PACKET_TYPE_PL_IN_PACKET_TYPE_PL_OUT
`ifdef PACKET_TYPE_PL_IN_PACKET_TYPE_PL_OUT
max_i = 70;
`endif
`ifdef PACKET_TYPE_PL_IN_PACKET_TYPE_PL_OUT
DPRAM_WE = 1;
`end
か、
`ifdef PACKET_TYPE_PL_IN
`define PACKET_TYPE_PL_IN_PACKET_TYPE_PL_OUT
`elseif PACKET_TYPE_PL_OUT
`define PACKET_TYPE_PL_IN_PACKET_TYPE_PL_OUT
`endif
になってしまうと思います。 |
75 |
Veritakとquartusのシミュレーション結果に差が生じてしまい
Veritakでどのように対応したら同じような結果が出るか
教えてください。
...、結果的に送信データが1ビットずれてしまうと言う
現象が発生しています。(リスト1)
RTL,ゲートレベルシミュレータの差だとは思いますが
このような差が発生しないようなテクニックがあるのでしたら教えていただければ幸いです。 |
RTLシミュレータは、遅延0の仮想世界です。DFFで、CLOCKとDATAを
同時に変化させてQは、どちらになるでしょうか? (SETUP/HOLDが0では、どうなるか分かりませんね。) RTLの記述は、常にこのことを自問自答しながら注意深くテストベンチを作成する必要があります。
ゲートシミュレーションとRTLの結果を一致させるには、
「読み込みと書き込みを同時にしない」
に尽きます。もし、H/Wでそのような回路になっていれば、当然誤動作になりますから論外ですが、テスト記述でも、POS/NEG や、#Delay記述を使って、同時変化をさせないようにしてください。
いずれにしても、
の区別をしっかり意識できている必要があります。
|
76 |
いつもVeritakを利用させて頂いています。
早速ですが質問があります。
あるプロジェクトをロードし、シミュレーションをGOさせると
以下のような画面表示が出てしまい、途中で止まってしまいます。
------------------------------------------------------------
Window02
EC:2884 MapViewOfFile. Can not allocate memory...
8size = 100419664low_address=8781824high_address=0hdiskpmap=000005B8
------------------------------------------------------------
どのような内容で、どのようにすれば対処できるのかのご教示の程、宜しくお願い致します。 |
恐れ入ります。最新版の2.06にしてください。内蔵しているソフトウェアプロテクション(他社製)との相性がよくなかったようなので変更しました。 |
77 |
今回、結構大きなものをFPGAを用いて作成しようと考えて
いるのですが、バグ?を見つけましたので、メールを差し上げました。
Veritakの内部構成をしらないのですが、添付したファイルをloadしてみると、構文解析まですんなり通ってしまいます。
しかし、明らかなタイピングミス(不定義変数)があり、本来は、
これを検出してほしいのですが、されていません。 |
Veritakの場合、
1.構文解析、BISON/YACC
2.意味解析/Instance展開 Elaborationとも呼ばれています。
3.コードGenerate
の順で、デザイン全体をSCANしています。文法上の解析は、1でチェックされますが、変数の未定義等は、デザインのTOPを確定させて、TOPから再度SCANしていった時にチェックしています。(=>2.意味解析の部分です。)
したがって、デザインTOPが確定されないと2.のチェックに行かない仕様になっています。添付は、いい加減なTOPを擬似的に作ったもので、
この例のようにしていただけば幸いです。 |
78 |
QuartusWEB51のMegaWizardで非同期DPRAMを
作成しました。
これを使用すべく記述を開始し、Veritakでシミュレーションを
開始したところ
「lpm_ram_dp_componentモジュールが見つかりません。」
というメッセージが表示されました。 |
やってみましたが、次のようなモジュールが生成されました。ここで、grep すべきは、altdpram で、この場合altera_mf.v にありました。
altdpram altdpram_component (...
同様にして、220model.v の中を探してみてください。(古いのは、大抵220model.vです。) |
79 |
I'm having this problem again with version 204.A
------------Starting Verilog Build Process----------
Starting Verilog PreProcessor...
uart_command_parser.v(1):: Reading
Could not start Verilog PreProcessor.
finished with incompelte compilation
This was working fine until my computer crash overnight. Now I can't get it
to compile today.
I tried upgrading to version 2.05A, but in that simulation the clock does
not toggle.
initial begin
rx_clk = 1'b0;
end
always rx_clk = #5 ~rx_clk;
I had no problems with this before and nothing has changed since yesterday
when every thing was working fine.
|
Yes, this is famous race condition. #5 a=~a is preferred,
as you have already know.
This is due to change I actually made for thread seq.
I should have compatibility with previous release..
I changed thread seq. again from Version 2.06A.
This release will work even in your first attached code.
Software protection (built in by another company) sometimes causes unstable state of veritak. The patch is also applied from Version 2.06A.
Cause in 2.03/04 is still unknown. But recommendation is to use 2.06A. |
80 |
I am getting: memcd_strategy_trans_control.v(275)::Internal Error, Error
Code=796
the line is:
wire burst_p_cl_mwl = param_ddrii_sdram_mode ?
~(trans_count[bstLenCntfn(param_bstlen)+cl_rounded + 1'b1 - param_wrlat])
: ~(trans_count[bstLenCntfn(param_bstlen)+cl_rounded]);
what is wrong with this statement? |
It is related to maximum index and size of declared vector.
For Example,
reg [22:0] vector;
reg [3:0] index;
wire a=vector[index];
Please note 5bits will be required for full access in vector.
EC796 is such case of error.
From 2.07, warning is generated instead of error. |
81 |
force文にて、存在しない信号をドライブすると、明確なエラーメッセージを出
さずに終了してしまうようです。
具体的には、
force bench_main.main_mdl.xbkcs = 1'b1;
ここで、xbkcsは、存在しない信号です。
以下のようなエラーを出力し、
NULL FILE NAME :Error: bench_main Internal Error EC=758
Elaboration Phaseでエラーが発生しました。
"コンパイル未完了のまま終了しました。
と、終了してしまいます。 |
2.10で、適切なエラーメッセージが出るように改善しました。 |
82 |
$fgetsを以前、修正していただいたのですが、どのバージョンからかわかりませ
んが、元に戻っていないでしょうか?
|
1.92で、ESCAPEシーケンスの問題を対策した際のバグです。2.10で修正しました。 |
83 |
本日、save/restore(β機能)を使ってみようと
http://japanese.sugawara-systems.com/tutorial/tutorial/save_restore.htm
に沿って、動作を把握しようといたしましたが、
veritakwin210A\samples\savet_to_disk.v(15)::Info: シミュレーション時間更新
により一時停止しました。time=1000 ,インスタンス名:save_to_disk
veritakwin210A\samples\savet_to_disk.v(15)::Info: シミュレーション時間更新
により一時停止しました。time=2000 ,インスタンス名:save_to_disk
と「Go」ボタンを押すたびにブレークは入る動きとなり、少し困惑しました。
メニューの「シミュレーション」→「Run Length」が有効になっていたからでした
が、この件は説明に全くありません。
サンプルプロジェクトとして、何が起こったか解らない人も居るかも知れません。 |
ご指摘の通り、RunLengthがEnableになっておりました。
2.11で修正します。 |
84 |
どうも重箱の隅のようなバグらしきものが見つかったので報告です。
以下をcompileすると Parse error.yy=syntax errorで止まってしまいます。
modelsimでは問題ありません。
使用しているのは veritak 2.10A WindowsXP版です。
`timescale 1ns/1ps
`define test1 50e-2
module test();
real temp1;
initial
temp1 = 1/`test1;
endmodule |
プリプロセッサのバグのようです。プリプロセッサが通った後のファイルpreout.vで見ると次のようになっておりました。
したがってワークアランドとしては、マクロ定義しないことになります。
module test();
real temp1;
initial
temp1 = 1/ 50e - 2;
endmodule
次Version2.11AにてFIXいたします。 |
85 |
いいToolと思います、でも、I got some trouble. Sorry that my Japanese is not
good, I describe my problems in English as following:
Problem 1:
I download a “Divider” from
http://www.opencores.org/projects.cgi/web/divider/overview
<http://www.opencores.org/projects.cgi/web/divider/overview>
And I run the simulation with no change. It will run few minutes
and stop at:
Problem 2:
I write some codes, which can run very well. But if I miss one
“;” as you see in line 69 in the figure, the compiler will stop and cannot
show error line number.
If tools cannot show line number, it will be very hard to debug in bigger
design.
My Computer is:
VAIO NotePC with Intel Core Solo T1300 (1.66GHz) CPU, 1GB SDRAM, HDD free
space is about 10GB. |
Problem 1.
As for Problem1 , sorry, but this is the limitation of Veritak.
Waveform View is 32bit addressing restricted by 2GB(as user domain).
You can check GUI' memory consumption as Veritakwin.exe.
If you display long-long history of the signals, memory allocation error might occur.
From Version 2.11B, correct error message(memory allocation error) will be displayed. (2.11B also fixes integer array's signed operation.)
Memory increase of system memory will improve this situation, however
it is not enough for this project. (I checked without waveform display, compressed archive shows 1.2GB finally. Usually 3x-20X memory required for display if all signals are displayed.
Solution will be 64bit version next year.I apologize inconvenience.
Problem 2.
You need to make Compiler status pain to the front. (Sometimes it's behind
the view.)
Try following procedure.
Step1)Load Project
Step2)Menu => Window => Horizontal |
86 |
I'm having trouble with the scope tree viewer. I've tried to simplify the
case as much as possible.
1. I start VeritakWin
2. Verilog Project -> Load Verilog -> File name: tb_top.vtakprj -> Open
3. Go -> Pause
4. Push Waveform viewer to the front
5. Expand tb_top in the Scope Tree View
6. Expand u_module2 in the Scope Tree View
sync_2, sync_3, u_fifo[0], u_fifo[1], and u_fifo[2] are in the Scope Tree
View. However, I cannot see u_module1, sync_1, u_lmem, or u_pmem, in the
Scope Tree View. Therefore I cannot use the waveform viewer to debug what's
inside those modules. |
Yes, there is a bug regarding scope tree view for module array.
Try 2.11A |
87 |
Will veritak software work on AMD Athlon 64 X2 3800 "Dual Core" processor.
The operating system is Windows XP professional.
Please let me know. |
Sorry, no one in community have tried X2 processor.
A couple of persons have experience by P4 or Xeon with hyper-threading.
They told me there was no problem.
From design view, it should work. However please do not expect x2 gain of performance as well as other single threading software. |
88 |
HI
sugawra i am geting the results. but whenever i am compile and simulate
with veritak i am not unable to do gate level simulation. i am here with
attaching my project keep it is as confidencail and make sure that it to work
and give me any setting suggestions need to made to work
|
First thing for the problem is to resolve semantics errors.
This is not my work but your work. After resolving the issue,
I will look into further analysis.
For example, you define "mas2app_tagid_r" in mastop.v
this signal should be in ahbmas.vo. However, this signal could not be found in ahbmas.vo (mas2app_tagid_r0/r1 are there , but they are different signals.)
\\Athron\fa\vencat\may32006\veritak\tb\mastop.v(108)::
\\Athron\fa\vencat\may32006\veritak\netlist\ahbmas.vo(31)::Error: mas2app_tagid_r can not find destination.
\\Athron\fa\vencat\may32006\veritak\tb\mastop.v(108)::
\\Athron\fa\vencat\may32006\veritak\netlist\ahbmas.vo(31)::Error: mas2app_rdata_r can not find destination. |
89 |
On the fly を使用すると、不定期に波形が化ける |
GUIのバグです。2.11Cで修正しました。 |
90 |
HT で、on the fly を使用すると高い確率で、落ちる |
GUIとシミュレーションエンジンは、独立にマルチスレッドで動きますが、DUALもしくは、擬似DUALであるHTで問題が顕在化したようです。2.12BでFIXしました。
|
91 |
添付のFIFOのファイルをVeritakでコンパイルすると
Veritakがアプリケーションエラーを発生させます。
なお、このファイルは雑誌のサンプルHDLです。
記述に問題があるのでしょうか?
テストベンチと動作記述RTLをそれぞれ分けて(Projectを作成して)
コンパイルしたところ、テストベンチのみをコンパイルした場合
アプリケーションエラーが発生しました。 |
RST = 0'b0;//=>RST=1'b0 が適当
で落ちています。意味的には、0ビットというのは、ILLEGALで、何らかのエラー
にすべきところです。次リリースより、明示的にエラーとします。 |
92 |
Coding the attached behavioral program I found that I get xxxx when
displaying and empty values (it appears like all ones) in the result
file when processing the attached files. |
You need to use Blocking assignment instread of Non-Blocking assignment
in for loop if they do not have delay statement.
for (pixel=1;pixel<=640;pixel=pixel+2) //
$fread(a,ifp);
$fread(b,ifp);
$fread(c,ifp);
$fread(d,ifp);
green<=abc;// should be green=abc;
end
$fwrite(ofp,"%u",blue0[19:12]);
...
|
93 |
timeを%dで表示させると、10桁しか表示されません。
(桁あふれ表示になってしまいます) |
2.13AでFIXしました。 |
94 |
Win2000で vcdファイルに波形データを書き込むようにして "Go" させ、
途中で "Pause" させた後に、"ユーティリティー"→"VCDファイル読み込み"
させた場合、波形表示されている区間の一部の VCDデータしか読み込まれて
いないようです。
"Pause"させたまま、Veritakを終了させ、作成されたVCDファイルを
Veritakにドラッグ&ドロップして波形を表示させても同様です。
OSがXPの場合には上記現象が起きておりません。XPで出力したVCDファイルと
2000で出力したVCDファイルとのDiffをとると、2000のVCDファイルの方が
短く、最後の方が抜け落ちております。
上記現象はそもそもOSに依存したもので、対処のしようが無いのかも
知れませんが、もし、可能でしたらご対応下さい。
(例えば、"Pause"の状態で強制的にFinishさせ、VCDファイルに書き込まれ
てないバッファデーターを書き込んでからファイルクローズさせるなど。)
|
WIN2000日本語版でやってみたのですが、それらしい現象は再現できておりません。(DIFFまではやっていませんが、VeritakのWaveformとの視認で、最後まで書いているように思います。)
内部的には、Pauseまたは、$stop/$finishで、$dumpflushを呼び出しておりましてバッファはフラッシュされているのが設計仕様になっております。この点において、XP/2000の設計的な違いはありません。
Pauseは、同じ時刻で止めても同じソース行で止まらないように、再現性に難があります。
1)そこで、試しに$stopで止めて比較されてはいかがでしょうか?($stopでも$dumpflushは利きます。単に$stopでも、
$dumpflush;
$stop;//Veritak内部実装は、こうなっています。 |
| 95 |
コンパイル版、Ver 3.00リリース、お疲れさまです。 早速、新版の利用を開始いたしました。
本版で修正が入っている
`define 関連で コンパイルエラーが発生する構文がありました。
parameter STEP = 1000;
`define CYCLE STEP; `define SETUP 10;
always @(posedge CLK)
begin #(`CYCLE-`SETUP) ほにゃらら〜 end
このような構文例で
#(`CYCLE-`SETUP) の部分がコンパイルエラーとなります。 Parse Error.yy=syntax error
Ver 2.16Aまでは、この記述で通っておりました。 (Ver 2.16Aへ戻すとコンパイルが通ります)
まずはご連絡まで。 |
3.00A からプリプロセッサの不具合を修正しました。それは、2.16以下で、
`define CYCLE STEP; `define
SETUP 10; の";" を無視してしまう不具合を無視しないようにしました。
3.00Aでは、この不具合を修正したので、次のように置き換えられてしまいます。
(プロジェクトオプションでEnableすると、preout.v で処理結果が見れます。)
module define_test;
parameter STEP = 1000;
always @(posedge CLK) begin
#( STEP ;- 10 ;);
end endmodule
一方2.16以下は、";"を無視してしまっているので、動いてしまいます。大変に申し訳ありません。 |
96 |
ライセンスキーはどこに入れたら良いか、よろしかったら教えてください。 |
ライセンスキーは、Veritak起動->ヘルプ->ライセンスキー
でダイアログが出ますので、そこで、コピペすればOKです。一度入力して成功するとキーは催促されませんしキーの表示もされません。 |