Welcome to Our Company
Home
Tutorial
Download
Opencores
F.A.Q.
Support
Purchase
Links

Information

 
 
Question Answer
Verilogサブセットで、サポートしている仕様は?
Specify Section、PLI、IEEE1364-Verilog-2001主要構文をサポートします。


以下は、Version 1.45でのサポート構文リストです。
No.は、Stuart Sutherland氏の「Verilog2001: A Guide to The New Features of the Verilog Hardware Description Language」でのNo.です。

No Item Support
1 Combined port and data type declarations.
2 ANSI C style module declarations.
3 Module port parameter lists.
 4 ANSI C style UDP declarations.
 5 Variable initial value at declaration.
 6 ANSI C style task/function declarations.
 7 Automatic (re-entrant) tasks
 8 Automatic (recursive) functions.
 9 Constant functions
10 Comma separated sensitivity lists
11 Combinational logic sensitivity lists
12 Implicit nets for continuous assignments.
13 Disabling implicit net declarations.
14 Variable vector part selects.
15 Multidimensional arrays.
16 Arrays of net and real data types.
17 Array bit and part selects.
18 Signed reg, net and port declarations.
19 Signed based integer numbers.
20 Signed functions.
21 Sign conversion system functions.
22 Arithmetic shift operators.
23 Assignment width extension 32 past
24 Power operator
25 Attributes.
26 Sized and typed parameter constants
27 Explicit in-line parameter redefinition
28 Fixed local parameters.
29 Standard random number generator.
30 Extended number of open files
31 Enhanced file I/O.
32 String read and write system tasks.
33 Enhanced invocation option testing.
34 Enhanced conditional compilation.
35 Source file and line compiler directive
36 Generate blocks.
37 Configurations.
38 On-detect pulse error propagation
39 Negative pulse detection
40 Enhanced input timingchecks.
41 Negative input timing constraints.
42 Enhanced SDF file support.
43 Extended VCD files.
44 Enhanced PLA system tasks.
45 Enhanced Verilog PLI support.


VerilogからVHDLのトランスレータはないのですか? ありません。当面、開発予定もありません。
今後のVersionUp予定は?



verilog HDL 64ビットシミュレータについて比較、考察してみました。
最新のベンチマーク結果です。世界レベルのシミュレーション速度になりました。


プロ版のCPUID/MACアドレスライセンスドユーザは、α版が利用可能です。URLは、3.79E以降のHelpに記載しています。(α版及び、その後のβ版は、ライセンスのロックはありません。特に、波形付で長期のシミュレーションでは、パフォーマンス的に64ビット版をお勧めします。)

SV機能の実装については、個人的事情により開発を1年間ペンディングすることにしました。

 あるユーザ様が、MIXIで、コミュニティを立ち上げてくださいました。興味のある方は、 お気軽にご参加下さい。


VHDLから、Verilogへのトランスレータは、何でも変換できるのですか?  いいえ。対応不能な記述はあります。

 ・演算子定義
 ・IEEEライブラリ以外の記述
 ・Config文.
 ・Attribute
 ・VITAL 、PRIMITIVE定義、その他

 等です。 
 
特にハードウェアから遠い記述だと、ソース修正が必要となる確率が上がります。これは、トランスレータの問題というよりは、そもそも違う言語なので無理があるということかもしれません。Veritakでは拡張仕様でシミュレーションレベルでは、ソース修正ができるだけ少なくなるように配慮しています。
なお、System Verilogでは、VHDLからの変換負担がかなり軽減される見通しです。Vertak シミュレータ本体がSystem Verilogへ対応するに従い、VeritakトランスレータもSystem Verilogへの変換に切り替えて行きます。
トランスレータを通した後の著作権は? トランスレータは、著作権を主張しません。
原作者のCOPYRIGHT表示が残るようになっています。
Veritakの目指しているものは?
SystemVerilog
現在、Veritakは、Verilog2001準拠仕様ですが、プリプロセッサが、3K、GUIが40K,、コンパイラ・シミュレータが180K行になっています。
 
最終的にはSystemVerilogの実装を目指していますが、さらに30万行程度の記述が必要と思われます。これができると、クラス,struct,typedef,union,enum等のC/C++的記述もできるようになります。SystemVerilogは=Verilog2001 + C++みたい仕様で、かなり大規模な言語仕様です。
 

<シミュレータの開発言語について>
・PCのメモリとCPUが高性能になり、昔、数十分かかっていた数万ゲートのシミュレーションがVeritakで15SECで出来て満足していると、100万ゲートレベルのRTLシミュレーションでは「遅い」と言われてしまいます。また、最近のサポート事例ですが、32MBのSDRAMをモデリングしているユーザがいて、こちらが驚いてしまいました。(Verilogだと4値なのでこのObjectだけで64MB食ってしまう。VHDLでは128MB)これだけPCが高性能になっても、まだCPUとメモリは足りません、というよりこの関係は、当分変わることがない(真理に近い)ような気がします。VHDLとVerilogでは、単純に必要メモリは倍違うし(その結果シミュレーション速度もVerilogの方が速いです。(また、SystemVerilogでは、Speed Accelerate用に2値もあります。)高性能なCPU・ASIC分野でVerilogが好まれるのはここにあります。)開発言語は、今の時代、C++でなくてもいいような気がしますが、シミュレーション速度を考えると選択の余地はないのです。

WEB EDITION/WEB PACK+Veritak
フリーのWEB Editionでもゲート規模でいえば、搭載RAMも含めると100万ゲート規模の開発が可能な時代になってきました。設計ツールさえ整えれば、独自アーキテクチャでCPU・DSP等何でも設計できます。しかもバス幅は、16ビットとか32ビット等外部バス幅に制限されることはありませんし、PLLでCLOCK周波数も思いのままです。FPGAの能力は一昔前のそれとは比べ物にならないくらい大きなものになっています。特定計算分野では、ペンティアムを凌駕することも可能でしょう。このような潜在能力が高いFPGAのH/W資源を効率よくプロセシング(コーディング)するための設計ツールとなることを目指しています。

NYSL FPGA CPUコア
いまはもう、「ミニコンピュータ」が死語になっていますが、その昔、CPUは、ラックにはいっていました。フロッピーディスクや、ハードディスクのコントローラ周辺を「チャネル」と言って、各々、今のPCボード以上に大きい基板でTTL/ECL/ゲートアレーで設計されていました。レジスタ演算300nsを豪語した時代です。実験室のHP64000エミュレータや国産初の16ビットプロセッサを設計した優秀な人達を垣間見ながら、そんな人達を雲の上のような存在に感じていました。68000の設計に100人月かかったと言われた時代です。しばらくして私もゲートアレーを設計するようになりましたが、ゲートアレーの2Kゲートを設計するのに2ヶ月ではきつい、といった上司とのやりとりを覚えています。(あるVeritakユーザ(先端のシステムLSIデザイナー)によると最近は、100Kゲート/人の生産性だそうです。隔世の感がありますね。)

 時代は変わり、HDLと論理合成器で、誰でも(論理設計のエキスパートでなくとも)FPGAで、オリジナルCPUを設計できる時代になりました。今や、FPGAの片隅にCPUを忍ばせておくこともできる位にFPGAのリソースが豊富になりました。そう、自分仕様の自分のプロセッサ設計し、実際に走らせるできることができます。GCCのMDをいじれば、C/C++/Fortran/ADA/JAVAも走らせることが可能でしょう。Cが走れば、その上でOSも走らせることができます。

Veritak開発者自身、H/W技術者ですので、FPGA用CPUコアを設計してみたいと思っています。しかし、オープンコアの互換CPUコアでは、シミュレータで走らせるのは問題なくとも、実際にH/W化して世にだすとなると著作権、パテントの問題はついてまわります。また、パテントの問題をクリアしても、GPLではソース開示の義務が生じます。
ところでマイクロプロセッサが誕生して以来基本アーキテクチャは変わっていません。そこで、枯れた技術のみを使用するFPGA用CPUコア(GCCで動く)をNYSL(&パテントの縛りがない)を設計してみたいと考えています。いつか、LINUXやロボットを自分のCPUで走らせてみたいですね。これはH/W技術者としての夢です。0と1だけの閉じた世界から、技術の積み重ねによって壮大な世界に展開される不思議を体現してみたいと思います。
会社の手続き上、見積書、請求書が要るのですが。 メールでご指示下されば、対応します。決済方法、時期についてご指示いただければ、対応可能です。
XLやVCS等のプロテクトライブラりは? 対応していません。将来的にも対応できません。
どんな人がVeritakを使っていますか? Veritakは、高速なHDLシミュレータです。10GB以上の圧縮波形Save(VCDでは、100GB以上に相当)、さらに高速化したコンパイラVersion、64ビット環境対応、SystemVerilog対応等、機能強化にも取り組んでいます。
LSI開発作業の殆どの時間が、RTL記述と検証作業に費やされることに着目して、RTLのデバッグ効率アップにフォーカスしています。LSIエンジニアによるLSIエンジニアの為のシミュレータです。


LSIデザインエンジニア/Drが自宅で使うシミューレータとして、また、Verilogの言語習得用、自作ロボット等、知的な電子工作で使われる方、と様々のようです。理由は、よく分かりませんが、日本・海外共、研究者の方が多いような気がします。勿論、現役バリバリのLSIエンジニアの方も大勢いらっしゃいます。(おかげさまで、日本でLSIを設計されている主要な企業では、大体、お使いの方がいる筈です。)TODOLISTを見ていただければ、多くの改善提案は、実業務効率UPにフォーカスした提案であることがお分かりいただけることと思います。



ユーザの皆様からのご意見、ご要望をお聞きしてその機能の必要性に得心することも多いです。特に、日本のプロフェッショナルLSIデザイナの方々からは、多くのご示唆をいただき、急速に改善することができました。1Userとしても大変使い易くなったと思います。半年前のリリースとは、比べるべくもありません。ここで、会社名とお名前を挙げてお礼を申し上げることはできませんが、Userが最大のContributerです。
本当にありがとうございます。

Veritakを駆使して是非、日本からもオープンコアで世界に名を馳せる人が出てきてくれれば嬉しいです。
英語版が出るとのことで楽しみにしています。日本から、世界に向けて、こういうソフトウェアの貢献ができることはすばらしいことだと思います。英語版がでたら、一緒に仕事をしている海外の友人にプレゼントしたいと思っています。
・・・。
その際、私がライセンス料を支払い、彼に譲渡することは認めて頂けるでしょうか。
3.15Aよりノードロックになりました。
From the licensing it was not clear to me how many licenses are needed if one person runs the regressions over 5-10
machines. It is clear for interactive use as it is one license per person
using Veritak.
1 license /PC is required.
One question that the group manager at my client's company has is if he gets a lot of licenses of Veritak, what kind of support he should expect over the next few years.
Nothing special,same as your client were you.
学生が卒業した後、ライセンスを持って出る事が考えられます。
学生が研究室以外のPCの載せる場合には期限付きにするか
フローティング・ライセンスだと良いのですが、どうでしょうか。
3.15Aより、ライセンス方式をノードロックに変更しました。



 
Veritakの開発とサポートをお一人でやっているのでしょうか?もしそうなら凄い.. そうです。迅速なサポートを心がけています。

ライセンス
の形態がCPU IDによるノードライセンスへ移行した事を先ほど知りました。
会社と自宅でVeritakを愛用しているものとして、どのような対応を取るべきか考えてしまいます。
レジスト済みの旧ユーザーは、当面どのようにすればよろしいでしょうか?
ノードロックライセンスは、新たに購入される方に適用します。旧ライセンスユーザ(Veritak3.15A以前に購入された方は、自動的にPro版扱いになっております。現在のシェアウェア(Basic)版は、使用できません。今までどおり、ご自身でお使いになられる限り、自由にアップデートしたものを会社・自宅・学校・研究室・実験室を問わず、何台でもお使いください。

ライセンスを継続的に追加していこうと思うのですが,ノードロックですと
管理しきれないで困りますが,将来的にはフローティング・ライセンスにして頂
くと助かります.
将来的に検討したいと思いますが、当面現在のスタイルです。
シェアウェア版について.. Pro版とシェアウェア版について
  • 企業内で仕事に使う用途をPro用
  • 個人のHDL学習や電子工作用途に使う用途をシェアウェア用
  • 大学関連の研究用途/SDKキット類とのバンドル/教育関連をアカデミック用

として分けました。機能の違いについては、WEB tutorial 6章をご覧ください。


シェアウェア版のアップについては、WEBサイトでメジャー Versionアップ時にアップします。Vectorは、不定期に(数ヶ月に一回程度)安定版を追いかける形になります。なお、お仕事でお使いでしたら、迅速なサポートのPro版をご購入いただきたくお願いいたします。



項目 シェアウェア版(Basic版) Pro版 アカデミック
呼称 Veritak-Basic Veritak-Pro Veritak-Academic
用途 個人用途 お仕事用 大学関連での研究用途

Pro版の価格を半分にしたものです。
価格 4,830円(税込み)
27,000円/17,000円(税込み) 13,500円
取り扱い Vectorのみ(学生の方でVectorをご利用できないときは、サポートまでご相談ください。) 菅原システムズ 菅原システムズ
ノードロック ありません あります あります
期間制限 ありません あり/なし ありません
VersionUp Vectorサイトは、数ヶ月に一回、本サイトは、メジャーVersion up時 期間制限版は、期間内のみ使用可能です。 Pro版に同じ
書類他 発行できません。 請求書、見積書、納品書、ライセンス発効書、領収書の発行可能です。 Pro版に同じ
サポート あります 優先的にサポートを行います Pro版に同じ
機能の違い WEB tutorial 6章をご参照ください Pro版に同じ

現在VeritakホームページからダウンロードしたPro版を試用で使っていますが、Vectorで購入する場合は一度アンインストールしてインストールしなければだめでしょうか?
評価期間でVHDLのシミュレーションの評価をしたいのですが..
ModelSimのように複数バージョンをインストールできますでしょうか?
アンインストールする必要はないです。ただ試用期限は現在共通になっておりまして、アンインストール・インストールにかかわらず、16日で切れます。サイトでもメジャーリリース時にアップするようにしました。サイトにあるBasic版は、旧シェアウェア版とは、ライセンスを分けていますので、新しくご試用、ご評価が可能です。(旧シェアウェア版ライセンスでは動きません)


複数Versionインストールは対応していません(最後にインストールしたのが登録されます)が、インストールフォルダのVeritakWin.Exeがメインプログラムで、それを
アイコン化すれば、そのVersionが呼び出せます。(複数起動については、F.A.Q.345をご参照ください。)

VHDLトランスレータのことでしょうか?このツールは、現在サポートしていません。(事情と現状については、F.A.Q.238/242/312/317/181をご参照ください。)
ボリューム・ディスカウントは、もしあっても、百のオーダーでしょうか? ディスカウントは2007年内で終了いたしました。

既に購入済みで、ライセンスを請求されていないお客様は、なるべく一年以内に完了するようにお願いいたします。
PCのHOST IDの変更は
一度パスワードを発行した後でも無料で変更は可能でしょうか。
基本的にノードロックですので、インストールしたPCが故障等により使用不能になった場合に限らせていただいておりますが、Pro1については、3年間は、その旨お申し出いただければ、無料で再度ライセンスを送付しております。
アップグレートについて Pro−1ライセンスでご購入された方は、今後リリースされるすべてのUpgrade/Updateに対応します。
振込処理についてライセンス発行後
の振込でもよろしいでしょうか。
はい、事務処理に2-3ヶ月かかるのは、問題ありません。
Veritak-Pro1の購入を検討しております。
Veritak-Pro1のライセンスについて質問させて下さい。

> インストールしたPCが故障等により使用不能になった場合、期限内版は、
> 期限内の間、期限なし版は3年間、その旨お申し出いただければ、
> 再度ライセンスを送付いたします。

とありますが、3年間の意味について質問です。

例えば、
@ 2007/11に Veritak-Pro1を購入し、PCにインストール
A 2008/12 に PC買い替え。 新PCに Veritak-Pro1インストール(ライセンス再
発行)
B 2010/12 に PC買い替え
となった場合に、Bの時点で Veritak-Pro1 を使用する場合、
@の時点(初回インストール時(購入時))から3年経過しているため、ライセンス
再発行不可となるのでしょうか?
それとも、Aの時点(再インストール時)から3年以内なのでライセンス再発行可能
となるのでしょうか?
ご容赦ください。ご購入から3年間と解釈してください。例の場合、10年10月にPCを買い換えたとお申し出があれば、再度ライセンスを発行します。しかし、10年12月では、発行いたしません。なお、ライセンス自体は、そのPCに永続ですので、故障しない限り、Pro1の場合は、Update/Upgradeを適時行うことが出来ます。
アカデミック,個人使用の場合はライセンス価格半分.. アカデミックのご使用については、常にプロ版の半分の価格になります。(プロ版価格は今後の性能向上、機能拡張に伴い変動します。)個人使用については、Basic版をご利用ください。また、指定SDKキットのライセンス保持者についても、アカデミック価格を適用します。
ライセンスで、macライセンスを選択して、たとえばusbのlanアダプタのmacアドレスでライセンスしたときlanアダプタをドングルとして付け替えることで2台のパソコンで(一度には 1台しか動かなくてもよい)
使用することは可能でしょうか?
可搬のUSB−LANアダプタ等でも問題ありません。
Veritakを起動し、ヘルプー>HOSTIDで、いくつか、MAC ADDRESSが表示されるかと思います。たとえば、USB−LANアダプタが次のように表示されたとします。

MA: 0019DB63F0CA:: 869769907@Realtek RTL8168/8111 Family PCI-E Gigabit Ethernet NIC (NDIS 6.0)

念のための確認ですが、別のPCでも同じ数字MA: 0019DB63F0CA:: 869769907
が表示されれば、そのカードは、問題なくドングルとしてお使いになれます。
<MACアドレスについて>

送って頂いたパスワードですが、同じUSB-LANアダプタをつないでいても、
パソコンによってOKの場合と、パスワードが違うと表示されてしまう場合が
あります。
MACアドレス認証と聞いていましたが、MACアドレス以外の情報も何か参照
しているのでしょうか?

ちなみにLANアダプタのMACアドレスが同じ場合であっても、Windowsの種類が
変わるとHOST-IDの確認画面で表示される内容が変わるようです。
例えば、最初に連絡した

MA: xxx@xxx USB2.0 to Gigabit EthernetAdapter
というのはWindows Vista (64bit)のパソコンで確認したものですが、同じLANアダプタをWindows XP (32bit)のパソコンにつないで確認すると、↓このように表示されます。

MA: xxx@xxx Gigabit USB LAN Adapter - パケット スケジューラ ミニポート
使っているLANアダプタはxxx製ですが、64bit Vistaでは標準で付属してきたドライバが使えないため、別途ダウンロードしたドライバを使っています。

こういう場合は、どう対処したら良いでしょうか?
MACアドレス以外にLANカード付随情報を見てパスワードを生成しています。そのために、ドライバが変わるとパスワードが変わる可能性があります。(同一社のドライバであれば、その可能性は、低いと思われます。)

今後もドライバ毎にパスワードを入力する可能性がありますが、その場合も、同様にパスワードをご請求いただければ、対応いたします。
アカデミック価格は\13500(期間制限無し)とありますが、50台のPCで
使用する場合、トータル価格はx50になりますか? 
ボリュームディスカウントはありませんか?
そのオーダですと\10,000位です。詳細は、お見積もりを御指示ください。
ライセンスは各PCにくくりつけですか?
それともネットワーク経由のFloatingライセンスは可能ですか?

多数のPCの場合は、サイトライセンスの形態に近くなります。詳細は、salesまでお尋ねください。なお、ネットワークライセンスの導入予定は、ございません。
アカデミック版購入を検討しています。
アカデミック版を購入するには学生(現在:大学生)であるほかに
何か条件はありますか?
詳細説明をお願いします。

また、PCを買い換える際にはどうなってしまいますか?
大学または、公的研究機関向けですが購入は個人ベースでも可能です。ノードロックになってしまいます。この場合、PCを買い換えた場合、または、故障により使用できなくなった等に限り3年間の間は、ライセンスパスワードを再発行しておりますが、それ以降は、再発行してません。従いまして、個人的な使用でしたらそういった制限のないBasic版をお勧めしています。
ご住所が仙台とのことで、震災の影響で
購入のご対応が難しければ時期を改めます。
ご配慮、ありがとうございます。震災で10日程ネットに接続できませんでしたが、現在はライフラインを含め復旧しており平常業務中です。沿岸部は津波で壊滅的ですが、ここ内陸部(泉区)は、道路の陥没/がけ崩れ程度でした。すべてのお客様のライセンスデータ、過去のリリースの全てのソースコード、現在開発中のソースコード等のデータもすべて無事です。


Veritak使用方法について 

Question Answer
時間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としました。
Project OptionでSave All Sim DataにCheckをしないと波形がおかしい。Checkをすると遅くなる。 仕様です。波形をご覧になる場合は、Save All Sim DataをOnにしてください。Onにすると全波形を圧縮しながらシミュレーションを行うので遅くなります。
$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も対応しました。
信号処理の回路を検討しているので、波形をアナログで表示したいのですが、 どうすればいいのでしょうか? Tutorialに載せていませんでした。載せました。
ウィンドウズ2000で動かしたいのですが、可能でしょうか?
  また、2000に正式対応する予定はありますか?
Windows2000もXP系なので、何ら問題なく使用できます。Release時の検証環境としては、XPを使っているのでXPとしかしていませんが、サポートとしては、Windows2000も行いますのでご安心ください。
数々の改善のおかげで、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クロック分あり、ホールド時間は0という認識でいました。
ご存知のように高速ロジックではホールドタイム0での動作保証をしている
ものがありますが、それと同じような感覚でいました。
私の認識がおかしいのかもしれませんが教えていただければ幸いです。


シミュレーションする回路からの信号のレベルで入力する信号を
変化させたいときにどのように記述すればよいのか教えてください。
つまり、例えばシミュレーションベクタから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記述を使って、同時変化をさせないようにしてください。
 いずれにしても、
  • H/WのFFに相当する記述
  • 組み合わせ回路
の区別をしっかり意識できている必要があります。
 
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です。一度入力して成功するとキーは催促されませんしキーの表示もされません。






Veritak要望リストby users 
 


ご要望を頂いて4時間後にリリースしたものもありますし、4ヶ月お待ちいただいたのもあります。いままでの追加設計・コーディング作業で2万行位、書いたと思います。
 最近は、ご覧の通り、ご要求が高度になってきたせいもあり、滞りがちです。


(ところで、NC-Verilog,XL,VCS,MODELSIM,SignalScan,SpyGlass,Debussy、WZ Editor...
Veritakユーザは、そのInexpensiveな価格にもかかわらず、高度かつ高機能なツールをお使いの方が多いのはどういう訳でしょう?MODELSIM以外私は、触ったこともないので、ご要望される場合は、説明を忘れないでくださいね。)
 

Version 対応/コメント
VCD信号名の保存 1.01B 済み
信号並び順の規則が不明。
/信号名のソート機能追加
1.12D ScopeViewの信号リストをアルファベットオーダに改善済み
$fmonitor,$fscanfの実装 Ver1.19
Version 1.74のシステムタスクリストです。
  • $fmonitor
  • $fmonitorb
  • $fmonitoro
  • $fmonitorh
  • $fscanf
  • $fgets
  • $fgetc
  • $ungetc
  • $sformat($sprintf)
  • $printtimescale

実装済みシステムタスク(Verilog2001)は以下の通りです。
  • $display
  • $dsiplayb
  • $displayh
  • $displayo
  • $monitor
  • $minotorb
  • $monitorh
  • $monitoro
  • $monitoroff
  • $mointoron
  • $strobe
  • $strobeb
  • $strobeh
  • $strobeo
  • $write
  • $writeb
  • $writeh
  • $writeo
  • $fopen
  • $flcose
  • $fdisplay
  • $fdisplayb
  • $fdisplayo
  • $fdisplayh
  • $fwrite
  • $fwriteb
  • $fwriteo
  • $fwriteh
  • $stop
  • $finish
  • $realtime
  • $stime
  • $time
  • $random
  • $distuniform
  • $bitstoreal
  • $realtobits
  • $rtoi
  • $itor
  • $signed
  • $unsigned
  • $timeformat
  • $sdf_annotate(Altera,Xilinx)
  • $readmemb
  • $readmemh
  • $sreadmemb
  • $sreadmemh
  • $fread
  • $fwrite("%u",xx);
  • $fflush
  • $fseek
  • $ftell
  • $rewind
  • $dist_normal
  • $dist_exponential
  • $dist_poisson rtl_dist_poisson
  • $dist_chi_square
  • $dist_t
  • $dist_erlang
  • $sscanf
  • $test$plusarg
  • $value$plusarg
なお、Veritak独自の実装済みTask/Functionは、以下です。
  • $sprintf
  • $M_E
  • $M_LOG2E
  • $M_LOG10E
  • $M_LN2
  • $M_LN10
  • $M_PI
  • $M_PI_2
  • $M_PI_4
  • $M_1_PI
  • $M_2_PI
  • $M_2_SQRTPI
  • $M_SQRT2
  • $M_SQRT1_2
  • $acos
  • $asin
  • $atan
  • $cos
  • $cosh
  • $exp
  • $fabs
  • $log
  • $log10
  • $sin
  • $sinh
  • $tan
  • $tanh
  • $ceil
  • $floor
  • $sqrt
  • $fmod
  • $atan2
  • $pow
  • $runge_kutta
  • $conv_hex2ver
  • $writememh(これは、Stdな仕様ではありません)
  • $writememb(これは、Stdな仕様ではありません)
  • $normal_vtak($dist_normal のreal版)

4-1 1.バスや信号のエッジへの移動に矢印ボタンを使用しなくては
   なりませんが、できればマウスでエッジ近くをクリックした時に
   自動でエッジに移動するモードも是非用意していただきたい。
Ver1.19
Version1.19で実装しましました。
4-2 2.Scopeの位置はSignalの左側の列とし、スクロールバーを左に
   移動させることで階層がわかるようにしたほうが良いのでは。
   (現在のままだと深い階層の信号の構造を見る場合に画面サイズ
   を変更し、Scopeの列を広くするなどの工夫が必要)
Ver1.19

代替案で実装しました。
Ver1.19より、Scopeの列をクリックすることでTreeViewをWaveformViewの直下に出します。これで、階層とSignalの対応が改善されます。私的評価では、気に入っています。
4-3 3.任意の時刻にマーカーを挿入できるようにし、マーカーには任意の
   名前をつけることが出来ると便利。マーカーは2箇所は挿入できる
   ようにし、1箇所の場合は挿入箇所の時刻を表示し、かつ既に表示
   されているカーソルとの相対時刻の表示も欲しい。
   マーカーを2箇所入れた場合にはMarker2-Marker1の値もステータス
   バーに表示が欲しい。
Ver. 1.20A. マーカモードを追加しました。Markerをクリックするとマーカモード1,2,3,4、カーソルモード
(従来モード)と循環します。

4個/Viewまでマーカを定義できます。マーカの絶対時刻は、WaveformViewのStatus Barに表示されます。相対時間は、空行に表示されます。必要箇所に空行を挿入してください。
 マーカの名前は、時間目盛り上をクリックするとダイアログが出てきます。
4-4 4.FindPatternの機能をより拡張して、複数信号の条件でのSerch
   ができれば便利。
   例えば、「ADRS(アドレス)が8'h34でかつ、WENの立ち上がり」
   のようなAND条件でのサーチなどをサポートしてもらいたい。
Ver. 1.20A. YACCのデバッグしていて、こんなのが欲しい、と思っていました。

操作としては、左記のような場合、
  • WENのFIND PATTERNをPOSEDGEに設定
  • ADRSのFIND PATTERNを8'h34に設定
します。その後、黒カーソルをだしておき、LISTVIEW(左ペイン)上のWEN,とADRSの二つを選択します。
<− −>で、当該パターン箇所に移動します。
4-5 5.任意の複数信号のバス化をサポートし、MSB/LSBは入れ替え可能と
   していただきたい。バス化した場合の信号名は何らかの規則でデフォルトを決めて良いが、ユーザが自由に定義可能ともする


VCDファイルをVeritakに読み込ませ表示させているのですが
アドレスバス、データバスなどのバス記述ではなく1ピンずつ
バラバラの状態でVCDが作成されています。
この状態では31bitのデータバスなどでは可読性が悪いです。
Viewerの機能として信号をまとめる(グループ化)ことができるの
でしょうか?

Ex.
グループ化していない状態 -> グループ化した状態
Data0  -> Data[2:0]
Data1
Data2

Ver1.42A =>Pendingしていたのですが、VCDファイルでそのようなファイルを吐くツールがあるので、VCD Viewerにも適用できるように検討しました。

ついでに、波形フォーマットのCOPY&PASTE機能を実装してみました。
4-6 6.WaveformViewerの画面をユーザカスタマイズできればありがたい。
   背景色、波形色、文字サイズ/色。
Ver1.21 Ver1.21より適用済みです。
4-7  7.ScopeTreeViewerではTree表示にもかかわらず、深い階層の信号
   までTOPからのフルパスで表示される。折角の階層表示なので、フル
   パスではない表示モードも用意し、見やすくしていただきたい
Ver1.19 Ver1.19よりフルパスでない表示モードに変更しました。
4-8 8.下の方にT1,T2,T2-T2の値表示があるが、3桁毎にカンマをつける
   表示モードも選択できればありがたい。(桁を数えるのが面倒)
Ver1.19
Ver1.19よりカンマ付きに変更しました。
4-9 9.VeriPadでEOF、改行表示、行番号の有無、フォント/サイズの変更、
   背景、文字色変更など、要はユーザがカスタマイズできるように
   していただきたい(出来るのかも知れませんが。。)


エディタに、Verilogテンプレート機能を付加する予定はないでしょうか?
Ver1.28


VeriPadのオリジナルは、GreenPadで、NYSLライセンスで公開されています。 Veripadは、それに、Veritak GUI IF、ブレークポイント、ツールチップ等を付加しているだけです。

NYSLでは、ALPHAというEditorもあります。
また、NYSLではないものの、TeraPadは、ソースがDelphiで公開されています。


=>オリジナルGreenPadの仕様書を読むと、設定できるようです。設定方法をチュートリアルに追加しました。VeriPad VC7ソースも公開しました。Veritak GUIは、一般的なWindowsの通信方法を用いていますので、開発言語に限定されず、(その気になれば)ご自分のEditorからの操作も可能だと思います。Veritakユーザは、高機能なWZ Editorを常用されている方が多いようです。どなたかTRYしてみませんか?

確かに、(Viewerもそうでしたが)、背景が白だと目が疲れますよね。

テンプレート機能について、実装予定はありません。
$fopenのパラメータ変数対応に。 1.16A 済み
modelsimのように波形並びは、
別ファイルでテキストで編集できると、非常にありがたいです。
Interim Solution.
Ver1.19

Ver1.29

Waveviewをいじると、内部的には、Saveformatの変更になりますので、Waveviewの実装が落ち着いた後とさせてください。
(代替えにはなりませんが、)とりあえず、プロジェクトファイルの手動バックアップ用に「名前をつけて保存」をメニューに追加しました。

=>Ver.1.29で テキストでSaveする機能を実装しました。
プロジェクト全てのパラメータは実装できませんでしたが、波形の並び、Radix等は、大丈夫です。なお、生成したテキストファイルは、MODELSIM(b)でも読み込めるようにしたので、自宅でVeritak、会社でMODELSIMを使われる方には、便利だと思います。
右辺と左辺で、代入のビット数が違っ
たり、比較で、if( abc < xyz ) などとしたとき、abcとxyzのビット数が違った
場合、ワーニングが出るようにならないでしょうか。

Version1.19
lint機能みたいですね。「lint付きシミュレータ」、コンパイラの深いところなので、難しいところがありそうですが、実装してみました。(実験的機能です。)


VeritakのVerilogコンパイラ・実行エンジンは、
  • 字句解析
  • 構文解析(文法Check)
  • Elaboration(意味解析、インスタンス展開)
  • Code Genration(インタプリタコード生成)
  • RunTime Check(実行時)
となっています。このうち、Lint機能は、Elaborationフェーズに付加します。RunTimeでないと分からないもの(変数の配列のバウンダリアクセスCheck等)を除き、Bugの温床となリ得るビット幅の相違の検出が、コンパイル時に可能になると思われます。


仕様的には、以下の通りとしました。

Project OptionでLint機能Onとします。

NET系(WIREでのアサイン)とEXPR系のアサイン(BA(=)とNBA(<=))について、LHSとRHSのピン数(ビット幅)が異なるときに(Verilog言語仕様によるビット幅拡張の前に)Warning:Lint ..を出力します。

NET系とEXPR系のBinary表現でのコンペア(==、>=、<=,>、<、===、!==,!=)でビット幅が異なるときに(Verilog言語仕様によるビット幅拡張の前に)Warning:Lint ..を出力します。

NET系とEXPR系でのTernary表現(3項演算)で、True/Falseのビット幅が異なるときに(Verilog言語仕様によるビット幅拡張の前に)Warning:Lint ..を出力します

なお、Both定数(Ex.if(3'b000==4'b0000))等は、Warnig:Lintを出力しません。上記評価に行く前に、コンパイラの最適化フェーズで、if項が消えてしまう為です。

****出力例****

reg [3:0] a;
reg [2:0] b;
wire [3:0] aw=1;
wire c= (a<b);

--- Lint Option Enable時のコンパイラステータス画面

F:\regression_test\lint_test.v(4)::Warning:Lint  LHSとRHSでビット幅が異なります。LHS=4 RHS=32

F:\regression_test\lint_test.v(5)::Warning:Lint ビット幅が異なります。4ビット < 3ビット

-----------------------------
::の行をクリックすることで、当該箇所をVeripadが開くのは、今までと同じです。
波形ビューアーの機能で1つリクエストがあります。以下のような、ステートを組んだとき、v_stの表示を、数値ではなくvidle、
vvoidといった変数名を表示できないでしょうか?vhdlでは、表示はステート名
が表示され、非常に便利でしたので。

parameter vidle = 3'd0,vvoid = 3'd1,vwld = 3'd2,vsen = 3'd3
, vild = 3'd4,vinter = 3'd5;


case( v_st )
vidle:


vvoid:


vwld:

Version1.19
.
Verilog 3.1のenumを実装すればいいのですが、実装しても合成ツールのサポートは未だでしょうし...と思っていました。
これは、2001文法にも合致するのでとてもよいアイデアだと思います。structのサポートは、Verilog3.1からなので、VHDLには未だ及びませんが、これで、かなりViewerも見易くなったのではないでしょうか?

仕様としては、以下のようにしました。詳細は、チュートリアルをご参照ください。

parameter [msb:lsb] parameter vidle = 3'd0,vvoid = 3'd1,vwld = 3'd2,vsen = 3'd3, vild = 3'd4,vinter = 3'd5;

とリスト形式で記述したパラメータ(パラメータリスト)について適用します。

信号とパラメータリストのバインディングは、WaveformViewの中で以下のように操作します。

WaveformViewの信号右クリックで、
  • メニュー出力 =>表示の選択=>enum選択を選ぶ
  • ダイアログBOXが表示される
  • (複数の)パラメータリスト表示から、選択
Veritak固有の`defineの追加 1.11D 済み(Uniqueは、”Veritak"です。)
10 階層間での信号比較をする場合、下階層の信号を選択して
 から、上階層の信号を選択しようとすると下階層のTreeが閉じて
 しまうので、これは閉じないほうがより使い易いものになると思います。
1.21A 1.21Aより改善しました。
11 たとえば、WaveformView上で、xと表示されていても、誰が、ドライブした結果xになっているか、分かりませんが、その解析・表示機能の実装。また、WaveformView波形変化点からソース上の記述箇所へのジャンプ機能があると、さらに使い易いものになると思います。(By開発者) Ver1.24
Ver.1.24より次の実装を行いました。

トレースデバッグのオプションを追加します。

1)Waveform上変化点からソース上のドライバ部へのジャンプ機能。

2)xの解析表示機能
 xの発生原因は、初期化されない箇所のほかにドライバの衝突があります。この場合、xは、Resolverの演算結果出力です。Resolverの入力の値と、ソースエディタへのジャンプ機能を提供します。

3)全ゲートを追うことはできませんが(つまり、信号名のない信号のバックトレースはできません。)ソースエディタ上の任意信号に対して、任意時間の($strobe相当での)値表示(ツールチップ)することを考えています。)

実用的には、これで必要かつ十分でしょう。
12 1.拡大範囲の固定
 黒カーソル、赤カーソルで拡大したい範囲を選択し、
  範囲拡大ボタンを押すと、信号の状況により拡大範囲
  が変わってしまうようです(規則性が良くわかりませんが)。
  指定範囲を拡大したときに赤カーソルも黒カーソルのように
  常に画面の右端付近になるようにできないでしょうか?

2.初期状態の選択

  カーソルエッジモードやツールモードの初期値をユーザが
  指定できるように出来ないでしょうか?

3.プロジェクトのセーブに関して

 2.にも関連しますが、
    カーソルエッジモード:ON 
    ツールモード:OFF
 にした状態でProjectをセーブし、RTL変更後、Reloadすると、
    カーソルエッジモード:ON
    ツールモード:ON
 とツールモードの状態が変わってしまいます。
 Projectをセーブした状態のままでReloadできないでしょうか?

4.veritakwinキャンセルコマンド(?)の追加

 私の場合、RTL設計においては、最終的にはUNIXでVerilog-XLや NC-verilogで最終検証を実施します。
 その際にはテストベンチでveritakwinでは使用できないタスクも使用 します。
 veritakwin上で他のツールで使用するタスクも記述できるような工夫ができればありがたいです。
Ver.1.23A
1.拡大範囲の固定
ご要望の機能に変更しました。カーソルのアルゴリズムを若干変えました。

 
2.初期状態の選択 

どちらも、プロジェクトにSave可能に変更しました。プロジェクト設定Menuに追加しました。  

3.プロジェクトのセーブに関して
 Reloadで、ツールチップモード設定を残す仕様に変更ました。

4.veritakwinキャンセルコマンド
Unique Keyword Veritakは、Veritak内で、暗黙に宣言されています。他のシミュレータでは、当然宣言されておりませんから、これを利用して逃げてください。サンプルとしては、regression testフォルダに、fmonitor_test.vがありますので、それを参照してください。
13 memoryの内容は、シミュレーションエンジンが生きている間の現在値しかみれませんが、WaveformView上で見れるようになりませんか? Ver.1.25
VeritakのWaveformViewは、全波形を記録しているので、メモリの変化履歴を全て記録しておくとなると、いかに圧縮しても膨大なメモリが必要になります。従って、実用的には、キャッシュメモリ程度の宣言までだと思われますが、インプリメントしてみます。

=>実装してみましたが、やはり、実用的には、数KB程度までではないかと思います。オプションで32KBの宣言まで許すようにしましたが、それなりにメモリの増強が必要な場合が出てくると思います。Veritakは、後で「ここが見たかった。」という後戻りをしなくてよいように全波形を圧縮Saveする設計になっています。
その為に、どうしてもメモリに負担がきてしまいます。
14 エディタ上で、インスタンス化したモジュール上でのparameterの値も、バルーンで出せるようになったらよいと思います。 Ver1.24
YACCをデバッグしていて私もそう思いました。
トレースモードでインプリメントしてみました。
トレースモードでは、TREE SCOPEで選択したインスタンスでEditorは開いていると考えます。従って、値表示もインスタンス一種だけになります。
15  新規プロジェクトで自分の色設定で立ち上げるということはできないでしょうか? 3.28A 多少、面倒さはありますが、可能です。Tutorialに説明を追加しました。、もっとスマートにしたいところですが、当面ご容赦ください。

=>3.28Aで色の設定をレジストリにImport/Exportできるようにしました。
1)好みの設定をExportしておく
2)新規プロジェクトでは、Import
3)プロジェクトをSaveします。
16 あるSim結果を表示した時点でのWaveformでプロジェクトをセーブしRTL修正後、ReloadするとWaveformはSave時点の信号並びで再表示されますが、時間軸が異なってしまいます。
可能であれば、Save時の時間軸での再表示が出来ませんでしょうか?
Ver1.24
.
可能にしました。カーソルも保存しました。これで、作業環境を、ほぼ網羅したので、作業再開の手間が大分省けるはずです。
17 あるSim結果を表示した時点での階層構造表示させたScopeをプロジェクトにセーブし、RTL修正後、ReloadするとScopeが最上層表示に変わってしまいます。
   Save時のScope表示に出来ないでしょうか?
 (階層が深い場合、修正結果を確認するためにScopeで再度もぐっていくのが面倒という理由です)
Ver1.24
とりあえず、インプリメントしてみました。
18 Waveform、Scope共通事項
バス線の表記ですが、    [15:0]HBUSのような、 バス幅+信号名 よりも  HBUS[15:0] のような 信号名+バス幅 の方が良くはないでしょうか?
   理由はScopeの信号並びは基本的にアルファベット順のようなので、  信号名+バス幅の方が所望の信号を見つけやすいからです。   (好みの問題があるかも知れません。あくまでも希望です)
Ver1.24
私は、[15:0]HBUSの方が好みなのですが、、。ただし、ソートを考えると確かにその通りです。そこで、TreeViewだけ、そのようにしてみました。
19 信号を上下に移動させるとき、スクロールが自動で効くようになりませんか? Ver.125 Ver1.25で、LISTVIEW(WaveformViewの左ペイン)を操作しているときは、マウスホイールが垂直に効くようにしました。多少指先の器用さが求められますが、Drag&マウスホイールで、所望の場所に移動させてください。
20 トレース機能で、
VeriPad上で信号名を選択し、右クリックでSink先やSource元の
Verilog記述に飛べる機能があるとありがたいです。
(DebussyのnTrace機能)
Ver1.28
エディタ上でのトレース機能ですね。

Veritakのコードジェネレート後にコンパイラが持っている内部情報を一旦TEXTの形で吐き出させ、EDITOR機能でジャンプさせれば、実現できそうです。STATICなトレース機能と考えました。(ダイナミックには、Veritakのトレースモードで、時刻とSCOPE指定で、ドライバに飛ぶ機能は実装済みです。)仕様的には、以下のように考えています。

トレースモードのコンパイルが終了した時点で、構造ファイル(trace_file.txt)を出力します。お使いEDITORで階層名を検索し、タグジャンプで、左記機能のサブセットが実現できます。(場合によっては、この方が下より使い易い方がいるかもしれません。)


VeriPadのタグジャンプ機能は、Ver1.28から実装しました。これで、タグジャンプによる方法ではありますが、左記機能のフルセット装備になりました。

21 メモリの表示機能で、アドレス指定したら覚えていて欲しい。 Ver.1.26
全くその通りです。Ver1.26でGUI周りも修正しました。
22 プロジェクトをロードすることなく"ユーティリティ"
”VCDファイルの読み込み”をアクティブにして
いただきたいです。

VCDの波形フォーマットは現バージョンはプロジェクト
ファイルに書き込まれます。
プロジェクトファイルはバイナリファイルとして生成されているため通常のDOファイルと異なりユーザ側では編集を行うことができません。

要望事項)
VCDの波形保存ファイルをテキストベースで保存する機能
を(改めて)ご検討願います。
..VCD ViewerではプロジェクトファイルなしでVCDを表示する
ことになるという前提で書いています。
Ver.1.47/1.52. VCD Viewerですね。検討してみます。
=>
 2月中に実装します。

 テキストファイルについては、現行のDOファイルにプラスアルファする形を考えています。

=>
VCDの拡張子を持ったファイルをVeritakにDRAG&DROPまたは、関連付けしていただくと起動するようにしました。(ただし、Veritakが起動していないときに限ります。)
項34もご参照ください。
テキストファイルについては、1.52で対応しました。フォーマットとしては、do ファイルの形式を借ります。VCDが入っていなければ、いままでと変わりません。
23 veritakwinで、波形の印刷機能は無いのでしょうか?
 もし無い場合、今後のバージョンアップで対応することは可能でしょうか?
 理由:せっかくのシミュレーション結果なので、開発ドキュメント(設計書)と して残したり、コピー&ペーストでドキュメントに挿入したいと考えています。マーカや任意テキストが挿入出来ればなお良いです。
Pending 現在のところ、印刷機能実装の予定は、ございません。フリーのScreenCutter等の画像切り取りソフトで代用可能と考えております。また、マーカ、テキスト挿入は、WaveformView上で可能です。
=>81で実装しました。
24 ノード名先頭に出るバス幅表記をノード名の右側に移動もしは非表示化は出ないのでしょうか?
ノード名(シグナル名)選択時に波形一行分のハイライト(ダークライト)対応は>可能でしょうか?
1.47 バス幅表記の非表示化は、Project Optionで指定できるようにしました。
25 シミュレーションウィンドウのタイムスケールに加えて、グリッドを任意間隔 (指定間隔)で表示させることは出来ないのでしょうか?
1.47 グリッドを任意間隔とまでは、いきませんが、1,2,5のOderで指定できるようにします。目盛りをマウス中ボタンでクリックするとグリッド値が循環するように実装しました。
26 信号状態(H/Z/L)毎に色を変えたり太さを変えたりすることは出来ませんか? 1.47 1ビット幅H/L/Zについて1ドットと2ドットを選択できるようにしました。H/L/Z について色指定ができるようにしました。
27 シミュレーション波形のファイル保存は一時的なものだけでしょうか? 3.28A
一時的です。Saveの必要な場合は、VCD等のVerilog構文で選択的に行ってください。

Veritak上での波形ファイルは、共有メモリ上に
圧縮した独自形式になっており、物理ファイル上には落としていません。
 
=>
Vertaik1.41になり、速度アップしました。結果、最新のPCを使って、比較的規模の大きいプロジェクトの組み合わせですと、圧縮した1GBのDISKを食うのに、15分かからないと思います。
所望の波形をだした状態で、プロジェクトSaveしておけば、シミュレーション環境の保存でき、環境再現が可能で、解凍時間も待たなくてよいです。
(実装は特に難しくはないのですが)あまり必要性を感じませんが、いかがでしょうか?

=>Save/Restore 機能をお使いください。
32ビット環境下でも64ビットアドレスのファイルにSave/Restoreできます。
28 コンパイル終了後、信号ツリー、波形表示のウインドウの
 位置、サイズがデフォの状態になりせっかく見やすい位置に ウインドウの位置決めをおこなったのにそのつど再配置をおこなうのは つらい。そのままの位置、サイズをキープしてほしい.


Ver1.47
[Window] => WaveforViewerの整列で、整列します。大体は、これでいいかと思います。

=>メインウィンドウと子ウィンドウについて、前回リストア状態をキープする仕様に変更しました。(状態はレジストリに保存しました。)
29 プロジェクトに保存する情報を”既存のプロジェクトに上書き”
メニューを追加することは可能でしょうか?

コンパイル・エラー時の波形表示リストの全消去に対応するためプロジェクトの名前を付けて保存を結構煩雑に行います。 せっかく並べた信号リストがヤワになるのを防ぐため。
 そのためメイン・ツールバーにカレントプロジェクト保存ボタン機能がほしい。
Ver1.43 12月のどこかのリリースで対応します。

=>
実装してみました。
30 AカーソルとBカーソル間の任意の信号のパルス数を計測出来る機能がほしい。ロジアナなんかにあるやつ。 Ver1.43 仕様確認しました。

1ビット信号でよい。
POS/NEG 両方または、POS/NEG指定できた方がよい。

=>
実装してみました。
31 SWIFT IF の追加 Pending Feasibility Studyが必要です。
Long Termの検討課題とします。
=>旧PLIの実装を必要とします。VPI/とDPIの実装後に実装します。
32 SystemVerilogの実装 Pending Veritak Simulatorの最終目標です。Verilog2001構文と互換がありながら、大幅に構文追加がされており、別な言語と見た方が正しいような気がします。VHDLの要素もとりいれているのでVHDLユーザがVerilogに移行するのは、簡単だと思います。(これは、トランスレータにも言えます。SystemVerilogは、SystemVHDLだという人もいる位です。) 私見ですが、RTL記述の最終版は、SystemVerilogになると思います。interfaceによる圧倒的な記述量のすくなさ、2値化によるスピードアップ、テストアサーション機能、システム記述機能、等20年のRTL記述の歴史の反省にたった言語といえましょう。 キャッチフレーズは、「ホワイトボードからRTL記述へ」、 Synopsis社のHPにエッセンスがよくまとまっています
 将来的には、テクノロジの進歩によって、動作合成にシフトするでしょう。時間の概念がないアルゴリズムが、動作合成され時間の概念が付加されるようになるでしょう。その際のシミュレーション言語は、どうなるのでしょうか? 私は、Cコンパイラがアセンブルリストを吐き出すように、SystemVerilogソースリストを吐き出すようになるのではないかと思っています。 優秀なJAVAプログラマで、CPU動作を知らない人はいないようにSystemVerilogを知らないで質の高い動作合成はできないだろうと思うのです。
 


33 「Load Verilog」のつもりで「新しいプロジェクトの作成」を選んでしまい、 既存の*.prjファイルをクリックしたため、Saveしてあった表示設定等が全部飛んでしまったことが何回かありました。私のような慌て者のために、「既存だけど書き直す」と一度尋ねて欲しいです。 1.47 対応しました。
34 *.prjファイルのダブルクリックで、一気に「Load Verilog」にすることはできるでしょうか? 1.47 現在は、できません。拡張子がそのままでは、難しいと思います。実は、安易にプロジェクトの拡張子をprj.にした事に後悔しています。
このご要望を満たすには、プロジェクトの拡張子をなにかマイナーなものに変更しなければなりません。
=>
prjは、XILINXで使用してますので、、vtakprjに変更しました。拡張子vtakprjは、インストール時にVertakに関連付けるられます。(Ver1.47以降) *.vtakprjをダブルクリックすると、ご要求仕様になるようにします。(私的評価では、利便性が高く、気に入っています。Veritak User間でも便利だと思います。)
拡張子の変更は、[ツール」「フォルダオプション」[表示」=>「登録されている拡張子は表示しない」のチェック外して、拡張子が変更できるようにします。拡張子を変更します。「拡張子を変更すると、ファイルが使えなくなる恐れがある」等のメッセージが表示されますが、「はい」をクリックしてください。
vcd、v、vhdについては、Drap &Dropで、それぞれ、VCD Viewer, Single Verilog ファイルのコンパイル、Single VHDLファイルのVerilogへのトランスレーションとして機能するようにします。
35 波形表示ですが、HIGHレベルとLOWレベルの線幅を別々に
(例えば、HIGHを太く、LOWを細く)設定できるようになると見やすくなると思います。
1.47 実装しました。
36 マウス中ボタンでグリッド間隔を変更できますが、マウス中ボタン設定が 「既定(オートスクロール)」でなければ機能しません。
 通常、中ボタンには別機能(ダブルクリック)を指定しているため、グリッド を変更したい場合ちょっと大変です。
 例えば、ctrlキーを押しながらマウス左ボタンクリックで機能するとか。 いかがでしょうか?
1.49A ご要望通り実装しました。
37 edifの対応予定はありますか?
  (無敵のVeritakになること間違い無しです!?)
Pending 御免なさい。
近々の実装予定は、ございません。
38 WaveformViewの機能に、以下の機能を設けることは出来ますか?
  ・[ctrl]+Wheel-Up  →拡大
  ・[ctrl]+Wheel-Down →縮小
  ・[shift]+Wheel-Up  →上スクロール
  ・[shift]+Wheel-Down →下スクロール
 これらのキー設定があると操作性が更に向上すると思います。
1.49A 実装上の都合(MFCで書いているのですが、ShiftだとListViewがスクロールしてくれませんでした。)やむを得ず、ShiftではなくAltにしました。Altは、Windowsでトグルスイッチになってしまっています。ホイールが動かないときは、もう一度Altを押してください。
39 プロジェクト名の明示 1.50 実装しました。
40 トランスレータ $conv..等をださないOptionは、 1.51 実装しました。
41 トランスレータ translated.vを プロジェクト名.vに 1.51 実装しました。
42 トランスレータ
モジュール毎にモジュール名.vを出力するオプション
1.52 VHDLファイル毎の出力をOptionで実装します。
43 カーソルの単位ns/us/msec/sec可変に 1.52 WaveformViewタイトルバーを右ダブルクリックすると単位が循環するようにしました。
44 real 変数のアナログ表示サポート 1.52 1.52で実装しました。
45 VCD機能で、グループ表示できるように 1.52 1.52で実装しました。
46
I found your simulator easy to use and fast. In less the 2 minutes, I compiled a know working testbench, opened a waveform window, and simulated it. Very easy to use.

I design mostly Xilinx FPGAs so require to be able to:

1. compile encrypted verilog sources models from vendors
2. PLI interface. I have written many bus transactors in C++ using
PLI
3. Swift Models. Some vendors give me swift models. For instance
much of the Xilinx IP is in Swift models.
T.B.D. 1.XLやVCSのプロテクトライブラリは、将来的にも対応できません。(規格が公開されていません。)SystemVerilogでは、Encryptionの規格があるようなので、できるかもしれません。(ただし、まだ、LRMは公開されていません。)SystemVerilogの実装後(時期は未定)に検討します。
2.PLIは、Verilog2001 VPI/SystemVerilogのDPIの実装後に実装します。
3.SWIFTについては、項31をご参照ください。
47 組み込まれているエディタはなかなかの出来だと思いますが、等幅フォントが 扱えないようです。
  そこで、
(1)そのエディタで等幅フォントが扱えるように改善
(2)使用するエディタを指定できるようにする
 特に私は普段EMACSを使用しているので、出来ればveritakwinのエディタとして Win32で使用できるMeadowが使えれば非常にうれしいです。
Pending (2) Meadowについて、調べてみました。現時点での対応は、難しいという結論にいたりました。 ソースは公開されておりGPLの問題を除けば、技術的には、可能と思われましたが、ソースだけで18MBもあり、現Veripad程度にするには、それだけで1-2ヶ月かかりそうです。よって、現時点では、無理があると判断しました。また、単純にEditor.EXE + 行 で、当該箇所に飛ぶインターフェースだけに対応する次善の案も考えましたが、Meadowの場合、単純には、行かない事がわかりました。この案は比較的簡単ですが、emacs-veritak とのインターフェースを作る事から始めなくてはなりません。私は、emacsの経験が無く、どなたかこの辺が得意な有志の方がいればよいのですが...
(Veritakユーザで、meadowからWin32のメッセージを送り出せるスキルのある方は、是非開発にご協力ください。お願いします。)

(1) 等幅フォントは、フォント自体の選択の幅があまりありません。等幅フォントが可能な例として、Version1.59から(verilog_fixed_font_1/2/3/4)を添付していますので、お試しください。
Veripad=>表示=>選択
文書タイプ別設定でVerilogをクリック、レイアウト↓で選択します。
48 VeriPadで編集した場合、上書き保存出来ません。条件は、サーバー上にHDL及びProjectを置いている場合の様です。VeriPadで、ファイルを開いた場合、上に表示されるファイル名が変です T.B.D. サーバ上に置いたときの問題です。プロジェクトの保存形式が、首尾一貫していないことによるものです。対応を検討しますが、当面、ローカルドライブに移してお願いします。
49 Waveform ViewerではHi-Zの場合、点線で表示されます。
しかし、Hi-Zを代入する信号をwire ではなく tri0 や tri1で宣言するとHi-Z値の部分が通常の信号のHigh Lowと同じ状態で見分けられなくなってしまいます。
通常の表示と見分けるために該当部分のカラーを変更することは可能でしょうか?
Pending Strengthに関しては、内部で演算しておりますが、(tri0/tri1については、言語チュートリアル編7章をご覧ください。)陽な形でユーザは見ることができません。これは、当初からのVeritakの開発仕様です。遠い将来、対応することがあるかもしれませんが、現時点では、ご容赦いただきたいと思います。
50 Do you have a way of running veritak via command line? I'm interested in doing an article for one of the chip design magazines comparing Veritak to perhaps Icarus and ModelSim. Being able to run the jobs in batch would help considerably. It's also a very useful tool for running regression passes.
...
As an example I downloaded the ethernet controller from opencores.org and ran it against Icarus verilog and Veritak. I found that Veritak was MUCH faster than Icarus ...

Perhaps I can supply some simple example files. There are really only a few things that are really important. How you deal with defines, incdirs, lib directories, and the basic file list itself would handle 90 percent of the situation. I'll try to get you a simple description. The way that Icarus handles it with the -c option is equivalent (should be -f option for XL compatibility ..
1.64/Aug.17.2005 現在のVeritakは、GUIを必要とします。
1.64 Versionでは、現行のVeritak コンソールを使う方法を整備します。その後、Regression Test用にGUIを使用せず、単独で起動するOptionも整備します。この方法によれば、出力は、Standard Outputになりますので、RedirectできRegression Test等に好都合かと思います。

XLとのCompatibilityは考慮されません。ご了承ください。
51 私の個人的希望としては、ワーニングやエラーだけを集めたログファイルを出力して頂けると良いと思います。このエラーログファイルはデザインのリロードのたびにクリアして頂けるとなお良いと
思います。
T.B.D. 実装を検討します。
52 波形拡大、縮小時の中心位置を、マウスカーソル位置に出来るようにしてほし
い。 また、T2も中心に出来るようにしてほしい。他のマーカ(1〜4)は中心に出来るの
で。
1.64 マウスカーソル位置は、よいアイデアだと思いました。1.64で実装してみました。F1 KeyでモードT1,T2,Mouse,Markerが選択できますので、T2中心の拡大もできます。任意のマウスカーソル位置の拡大もできます。使ってみると強力な機能であることがお分かりいただけると思います。
53 「アナログパラメータ」で、表示するアナログ波形の色、線の太さを指定出来る ようにしてほしい。(各波形毎が希望なので、表示メニューの色設定では無理。) 1.65 アナログパラメータ ダイアログ中のColorで色、thickness で太さを指定します。

アナログ信号以外にも適用可能です。
Do File は、-TRGB 0xHHHHHHHH で、Thickness 1B,RGB 3Bを指定します。
54 パルスカウント数をステータスバーに表示出来るようにしてほしい。 Toolchipを表示しない場合でも見られると便利です。 1.65 パルスカウント機能は、某社の方のご要求によりつけたのですが、他の方も使っている人がいるとわかって嬉しいです。

ステータスバーの
P=xx N=xxは、Posedge=xx個、Negedge=xx個の意味。
55 アナログ波形表示中にReloadすると、アナログ波形が閉じた状態で再表示されるが、 開いたまま表示出来ませんか? T.B.D. これは、簡単なようで、とても難しいです。
56 グリッド表示の基準間隔を指定出来るようにしてほしい。 遅延シミュレーションする場合に、例えば1グリッドを17.4nsなどにしたいため。 その時、単位も指定出来ると良いです。(ps,ns,us,ms,s。選択でも手入力でも。) 1.68 実装しました。
57 信号名選択し、Ctrl+ダブルクリックで「空白行に名前を付ける」が出来るようにしてほしい。 1.65 よいアイデアです。実装しました。
58 信号名で並べ替えが出来るようにしてほしい。 関係する信号をTreeViewからWaveformにD&Dする際、1,2,3が3,2,1になってしまう。 1.64/3.11. とりあえず、1.64から、a,b,c は、a,b,c順に並ぶようにしました。(ただし、c,b,aとしてもa,b,cになってしまいます。)
並び替えは、選択信号のリーバス整列をメニューに加えます。(T.B.D.)
59 波形情報をなるべく保護して欲しい 現在コンパイルエラーが出ると波形情報が消去され、プロジェクトの再読み込み もしくはdoファイルロードをしなければなりません。
 入力パターンを修正しつつシミュレーションを行う場合に、1度でもエラーが 出ると再読み込みが必要なのは少々煩雑かと思います。
1.68 エラーしても、ソース修正後、元の波形が再現するようにしました。
60 シミュレーション期間を指定して実行できるようにして欲しい 例えば10ms期間シミュレーションしたい場合、テストパターンを修正せず10msで 終了するようにして欲しいです。
(MODELSIMのRUN-LENGTH)
1.68 実装しました。VeritakのRUN-LENGTHの使い方は、少し面倒ですが、使えると思います。
61 Scope Tree ViewからWaveform Viewerに信号を追加すると、何処に追加される
か 不明?
どうも、「最後にダブルクリックした信号の下」に追加されるようです。これよりも「アクティブになっている信号の下」に追加される方が自然に思えます。
1.64 1.64から実装しました。
62 アナログ波形表示を1行として扱って欲しい
 現在はアナログパラメータのHeightで指定された高さ分だけ、複数行を使って描画されています。この行のうち1行だけ移動、削除などの動作を行うと、信号名が化ける、アナログ表示の一部だけ残り続けるといった症状が出ます。 信号名がある行以外選択できないなど、1行として処理できないでしょうか。
 また、元の信号とアナログ信号の間に他の信号が割り込めます。この状態でアナログパラメータの表示を閉じると、割り込んだ信号が削除されてしまいます。
 他の信号が割り込めないように出来ないでしょうか。
1.68 とりあえず、アナログ展開した波形は、保護するようにしました。
63 アナログパラメータは、「Height」以外不要? b、aのパラメータは滅多に使われることがないですが、手計算で値を書き込まないと正常に描写されません。b、a指定はAdvancced Optionにするなどして、 通常動作ではビット幅から自動計算するように出来ないでしょうか。
 (自動計算させるためのチェックボックスを追加して頂くのが良い?)
T.B.D. 検討します。
64 波形表示で、キーボードの左右キーで左右スクロール、上下キーで1行毎の上下スクロール、PgUp/PgDnキーで波形の最上段/最下段移動が出来る ようにしてほしい。 1.65 実装しました。
仕様は、以下の通りです。操作は、少し違和感があるかもしれませんが、操作の組み合わせに慣れれば、そうでもないです。


HOME KEY:先頭行
END KEY:最終行
Page Up KEY:ページUp (垂直方向)
Page Down KEY:ページDown(垂直方向)
↑ KEY :1行 Up
↓ KEY :1行 Down
→ KEY :時間方向 ページSCROLL
← KEY :時間方向 ページSCROLL
65 メニューボタン(アイコン)について、Veritak特有で良いとは思いますが、 画面上に少しでも多くの信号を表示させたいため、標準的なアイコンサイズ (16x16)にならないでしょうか?
T.B.D. そのサイズだと、私の場合よく外してしまうのです。OPTION実装として搭載を考えたいと思います。アイコンを描いていただけるなら望外の喜びです。

=>私も知らなかったのですが、Entire-Wave の左脇に白い縦線が走っています。それをDrag&Dropするとアイコン郡を移動できます。
66 インストーラにおいて、インストール先フォルダがデフォルトではインストール ファイルを起動したディレクトリになっています。「C:\Program Files\veritakwin」にしていただけないでしょうか? アップデート時も既存のインストールフォルダにして頂きたいです。 T.B.D. 検討します。
67 Do File の上書き確認  1.64 実装しました。
68 Groupxx[15:8]表現も可能に
移動すると変?
 1.65/T.B.D. 実装しました。ただし、ビット展開では、従来どおりの表記とします。
Groupxx[7]
Croupxx[6]
..
になります。
69 52、マウスカーソル中心の拡大は非常にいい感じです!
 このMag_Modeですが、システムかプロジェクトに保存することは出来ない でしょうか?従来通りT1中心がいい方、Mouseをデフォルトにしたい方 共にいると思います。
1.66 プロジェクトオプションとして、Defaultを T1、オプションとしてMouse Cursorにしました。
70 信号をドラッグした時に「ここの信号間に挿入する」というのが解りやすいように挿入場所へ仮想ラインを表示して欲しい。
Pending これは、非常に難しいです。Pendingとさせてください。
71 信号をドラッグした時にESCによるキャンセルを効くようにして欲しい。 1.65 対応しました。
72 ホイールによる波形移動は加速スクロール対応して欲しい。 1.65 簡単にできる実装で書いてみました。
73 拡大縮小は倍々で構成されているが、拡大率を指定できるようにして欲しい。
 もしくは、メニューボタンによる拡大縮小率と"Ctrl+スクロール"による拡大率 を分離して欲しい。
 これは、メニューボタンで拡大・縮小をした時より"Ctrl+スクロール"で拡大・ 縮小を行った時の率を低くして微調整など出来ると便利かと思います。
 (メニューボタン以上に拡縮速度が速いので、x1.5やx1.25、x1.2と言った計算しやすい値でも良いと思います。)
1.68 現在は、10で割り切れるような拡大、縮小のアルゴリズムになっています。2,5,2,5、、

検討します。メニューボタンによる拡大縮小率と"Ctrl+スクロール"による拡大率 を分離する実装にしました。 Ctrl+の方は、FINE Tuning, ツールバーは、coarse Tuningとしてお使いいただくとよいかと思います。
これは、すごく使いやすいと思います。
74 メニューアイコンにラインON/OFFを設けて欲しい。
 現在印刷用などにPrintScreenをする時にラインを消したい時があります。
 ラインをダブルクリックすると表示がずれてしまうことが何度かあったので上のメニューバー等にラインON/OFFのアイコンがあれば助かります
1.66 マーカ(M)と、T1/T2(C)に、消すボタンを設けました。トグルSWになっています。
75 マーカーはまとめて消すことが出来なかったり使用マーカーの選択が面倒な面があるので、トグルスイッチ仕様ではなくプルダウンメニューによる選択 にすると良いと思います。ダブルクリックによるラインオフだけでは使い勝手が 悪いところがあります。
 マーカー全消しボタン(メニュー)を用意することも検討して頂きたいです。
1.66 マーカ(M)と、T1/T2(C)に、消すボタンを設けました。トグルSWになっています。
76 プロジェクト設定で-lib_dirを指定したが,dir内の.v拡張子以外のファイルも解析してしまう。cvs管理で更新するとxxx.v.1.1などのファイルが生成されるのですがveritakの解析対象になるのでこまる 1.66
".v"が文字列のなかに含まれるとコンパイルする仕様になっていました。
最後の2文字が、”.v”であるファイルのみコンパイルする仕様に変更しました。
77 前から少し気になっていたのですが
波形ファイルの表示で、添付ファイルの状態になった
場合一番下段の信号がツールバーによって波形が隠れて
しまいます。
これを波形が見える形にするようにご検討いただけない
でしょうか?
緊急度は低いです。回避策としては一番下段の信号の
さらに下に空白行を挿入すれば良いのですが。
T.B.D. 検討します。
78 現象は次のような手順の場合に起きます。

WaveViewerに信号線を追加する→WaveViewer上の信号線を選択(ハイライト)する
→TreeViewから右ボタンメニューで挿入→選択された信号線下に挿入される→
WaveViewerの適当な所をクリックして選択された信号名を非選択状態にする→
TreeViewのウィンドウを選択→完全に選択解除されたように見える→TreeViewか
ら右ボタンメニューで挿入→以前選択した信号下に挿入される。
1.68 修正しました。
79 弊社の開発課員の何人かはVerilog テストベンチを *.tf というファイル名で作成しますが、 Veritak ではこのファイルを読み込まないようです。今のところ、*.tf を *.v に変更していますが、他とのインタフェースなどもあり、*.tf が使えないものか考えます。 *.tf を読み込ませる方法またはVeritak での *.tf ファイルの読込機能の実装をご検討いただけますと幸いです。 1.69 実装しました。
80 Waveform Viewer内にマウスカーソルを持っていくと、カーソルのある
波形の情報が表示されます。
しかし、デバッグ時にこの表示が邪魔な場合があります。この表示は明示的に指示しなければ出ないように出来ないでしょうか?例えば、CTRL+マウス右クリック等。
1.70 プロジェクト設定のCtrl+Rbuttonのところを設定してみてください。トグルスイッチになっています。マウスを動かさないとスイッチは利きません。
81 Waveform Viewerについてですが、FAQには印刷のことがあり、
対応予定は無く、他のソフトでやって欲しいと言うことになっていました。
どうしても印刷したくなり、以下の方法で行いました。

(1)ALT+PrintScreenでキャプチャ
(2)GVで読み込みセーブ
(3)Gimpで不要な部分をカットし、印刷ところが、Gimpは印刷機能が貧弱なため、A4にうまくフィットできません。

要望としてはやはり印刷機能が欲しいのですが、・Viwer画面だけをbmpとして吐き出すというのは可能でしょうか?
また、簡単に印刷できるソフトウエアを紹介して頂けるとうれしいです。
1.70
設計ドキュメントとして、重要であるということでしょうか?

BMPで、Clipboardにコピーする機能と、WaveformViewの印刷機能を実装します。
ToolBarは目障りだと思いますので、どこかにやっておくとよいでしょう。(FAQ65)
マルチViewの場合、アイコン化していないWaveformViewだけ可能になっています。
82 veritakでは,エディタとしてveripadを利用していますが,現在主にverilogの編集に秀丸エディタを利用しています。

veripadは,他のエディタで更新したファイルを再読み込みしないため,veripadで開いている同じファイルを秀丸エディタで開いて編集・セーブ後,veripadを編集してセーブして終了すると以前の内容に書き換わってしまう問題があります。
...

上記解決方法としては,veripadが外部でのファイル変更に対応して自動的に再読込していただければ良いと思います。しかし,私の場合は秀丸を常用するので利用するエディタを選択できるようにしていただくと助かります。

秀丸では,起動時にライン番号を指定することができますのでエラー場所を開くことは簡単に実現できそうです。問題はveritak独自の機能の実装ですが,Windowsのメッセージを利用しているのであればマクロである程度実装することも出来そうな気がします。この点は,利用するエディタ毎に対応する必要があるためユーザサイドで対応で良いと思います。
まずは最低限行指定で外部エディタを開けるように,他のエディタを指定できるとうれしいです。
1.70
編集は、使い慣れたEditorがよいですね。
とりあえず、Editorを指定できるようにします。
=>
実装してみたのですが、同じファイルも開こうとするので、毎回聞かれてしまいあまり使い勝手がよくありません。(VeriPadの場合、Veritak-Veripad両者でプロセス管理ができますので意識する必要はありませんでした。)

個別のEditorについては、VeriPadソースを公開していますので、それを参照してユーザコミュニティSideで、マクロ等の開発ができればよいと思います。しかしながら、Veritakユーザは、未だそれほど多くはありませんし、なによりこの業界は、忙しい人が多いので、当分望めないかもしれません。
=>
秀丸の場合は、動作環境、上級者向け設定、
排他制御で、同じファイルを二つ開くことを禁止するで、とりあえず、聞かれなくなります。(ちらつきはでてしまいます。)
=>
「PeggyPad用でこの場合、「-L$L $F」と設定することで指定行ジャンプ出来ました。」とのことですが、やはり毎回聞かれてしまうみたいです。
Scriptの呼び出し形式が分かれば、個別の対応は可能と考えますので、調べてみてください。
83 構文解析時に定義したまま使用していないreg,wire信号や入力が浮いている信号に対するWarningは出すことが出来るのでしょうか。?

=>複数の人のモジュールを結合する場合や、ラッピングモジュールを作成するときに信号線の未接続状況が判ると楽なので、どうでしょうか?
1.71 VeritakのLint機能とは、また違うご要求ですね。論理合成で、無視してくれるからいいかな、とも思うのですが、考えてみます。

=>Lint Option2では、次のWarningを出力します。
  • Floating Net
  • Floating Variable
  • Missing Named Binding port
  • Missing Positional Binding port
=>これで、少し使えるLintになってくると思います。Option1では、Warningが出すぎるのが、難点ですが(Warningがない方がよいCodingであることは間違いないですが、)Option2は、実際的にLintできるのではないかと思います。Alteraや、XilinxのライブラリをLint Option2でチェックしてみると、VeritakのLint機能が良く分かります。(Lintを使っていないことがわかります。)

=>下記のFB をいただきました。良いご提案をいただき、本当にありがとうございました。


「最近組んだコードはwarning山盛りでした。
大概は使っていない信号なのでそのまま削除なのですが、なかには処理しなくてはいけない信号があったりして赤面物です。。」


84 印刷機能早速使用しております。いい感じですね。強いて言えば、ファイル保存が出来ればなお良いと思います。 1.71 実装しました。
85 シミュレーション波形を選択出来るようにして頂き、シミュレーション時間の短縮を図ることは出来ないでしょうか? 3.31
Veritakの場合、全波形Saveを前提に最適化設計していますので、仮にSaveを止めたとしてもそれほど速度向上は期待できません。部分的な波形Saveは、VCDを用いてください。また、Regression Test用で、長期に走らせる場合は、コマンドバージョンのVeritakで、必要な信号だけSaveした方が高速です。コマンドバージョンは、独自のSaveとGUIとの連携は一切ありませんので、オーバヘッドがなく、少しだけ速くなる筈です。コマンドバージョンは、Aug.17 リリースに添付します。(Item50関連)

=>シミュレータそのものを速くすべく検討します。Item100をご参照ください。

=>3.31で対応しました。
86 Ver1.70aですが、単純なカウンタ回路のシミュレーションを
行ったところ、Disk=129〜170MBとなる時間あたりで、必ずRuntime Errorが発生して止まって(落ちて)しまいます。
ダイアログの表示としては、Veritakのフルパスとexeファイル名、
「abnormal program termination」が表示されます。
ちなみに、ModelSimでこの倍ぐらいの時間分をシミュレーションしても、問題なく動作します。
3.09A VeritakのWaveformViewは次の構造体で管理しています。
//一信号の変化点構造体
 struct History {
__int64 gtime;//変化点の時刻
union { unsigned char val;//値1ビット
unsigned char *ptr;//値 多ビットの場合
} vp;
};

つまり信号の1変化で、時刻8Byte、1ビット信号でも4Byteアサインされますから、計12Byte必要になり、10Mパターンでは、それだけで120MByteもメモリを消費してしまうことになります。

1.71から、次のように構造体を変更し、メモリ使用効率を改善しました。

struct History {
public:
__int64 gtime;//8+4 =12byte
#ifdef REDUCED_TYPE_HISTORY
//unsigned index;//4+4 8bytes
union {

unsigned val;
unsigned char *ptr;
} vp;
#else
__int64 gtime;//8+4 =12byte
union {

unsigned char val;

unsigned char *ptr;
} vp;


#endif

さらに、WaveformViewのメモリ割り当て方法を改善し、仮想メモリの限界まで使えるようにしました。
<1.71での評価結果>
ご提供いただいたサンプルでは、1.70Aで、17MパターンでFailしていたのが30Mパターン(3千万パターン)に伸び、シミュレーション時間も向上しました。

1.70 1.71
時間 8min 3min
パターン数限界 17M 30M
時間/Mパターン 280sec/M 60sec/M
(Windows2000,2Gメモリ、Athlon3000)

VeritakのシミュレーションデータはDisk上にマップして書き出していませんので、Modelsimに比べ高速な反面、パターン数は、メモリ搭載量で制限され、特に簡単な回路での長パターンでは、すぐにメモリを使い切ってしまいます。長期的改善アイテムとします。

=>Version3.09からViewerが64ビットになりこの問題は、FIXしました。
87 。Veritakいつも便利に使っています。

ScopeTreeViewに、 I、O、W、Rでのソーティング、名前でのソーティングが
あればと思っています。入出力ポートだけまとめて選択するときに、便利だと思います。



1.73 Scope Tree Viewの信号リスト->右クリックで、ソート方式がトグルするようにしてみました。
88 WaveViewのカーソルをドラッグで移動できればと思っています。
(これは、個人的な操作感覚の問題だと思っていますが、Modelsimに慣れていたので
ついつい、ドラッグしてしまいます。)
 1.73 実装してみました。Windowの外に移動するには、マウスWheelと組み合わせで行ってください。

=>下記のFB をいただきました。良いご提案をいただき、本当にありがとうございました。

「かなり良い感じです。
操作感覚については、人それぞれの好みがあるのでリクエストするのに>躊躇していましたが、リクエストして良かったと思います。」
89 For one testbench I am writing my own Fast DDR model which uses a fileas the DDR and requires the $fseek Verilog 2001 file I/O function to run. Using this Fast DDR Model is xx faster than using a vendor...

When would you have support for the $fseek function?
1.74 I will implement $fseek Sep.12.2005(Japan Time).
New version will be 1.74A.

In addition of $fseek, I will implement following functions.
  • $ftell
  • $fread
  • $fwrite("%u") option
  • $flush
  • $frewind
See "/regression_test/fileio" in 1.74 for usage.
90 「データはsaveされていません」のメッセージに加え、
Project setting > Limit Memory Size > <=32kbyes
を設定してください。説明はチュートリアルは、2.4.9メモリです。
等のメッセージが出れば、迷わないと思いました。

他の、エラー等に関しても、関連するドキュメントにリンク
してあれば解決しやすいと思います。
T.B.D. おっしゃる通りです。とりあえず、ご指摘箇所については、追記しました。
91 。WaveformViewer要望があります。

1、ベクターをビットに展開し表示させた場合も、カーソル位置のビットのValueを表示して欲しい。
2、ビットに展開表示させ、表示の選択を変えた場合、波形側は変わるが、
  Valueは変わらないので、変わるようにして欲しい。
1.74 対応しました。
92 現バージョン(1.72A)で、パスの参照はプロジェクトファイルを
起点にしているため、プロジェクトファイルをソースファイルの
ディレクトリに作成しないと、メモリデータなどのファイル参照
に不具合が生じてしまい、不便です。

例えば、以下のようにプロジェクトファイルが存在する hoge
ディレクトリの下にverilog記述が保存されている src、その
下にメモリデータが格納してある mem が存在するような
ディレクトリ構成で

+ hoge hoge.vtakprj
|-+ src hoge.v hoge.h
|-mem hoge.mem

hoge.v の中で hoge.h hoge.mem を参照している場合、
当然ソースファイルから見た相対パスでファイルの参照
を記述するため、ソースの記述は

`include "./hoge.h"
readmemh(mem, "./mem/hoge.mem");

となります。

しかしながら、冒頭に記述したように、ソースに記述された
相対パスはプロジェクトファイルを起点にした相対パスと異なる
ため、正しくファイルをロードすることができません。

プロジェクトファイルをソースファイルのディレクトリ
に保存するようにすれば、問題は無いのですが、、、
私のように複数のマシン間でソースファイルだけやりとり
するような使用環境では、やはりvtakprjファイルは別
ディレクトリにあったほうが都合がよいです。
(マシン毎にツールが異なるため)

私しかこのような不具合を感じていないのかも知れませんが、、、
もし他からもこのようなご報告があった場合には、お忙しい
ところ大変恐縮ですが、是非上記不具合を修正して頂けると
1ユーザとして幸いです。
1.74 これについては、かなり検討が必要です。`ifdef Veritak と
VeritakプロジェクトのINCLUDE_DIR指定でも可能かと思われますが、
現ソースの書き換えが必要となってしまいます。何らかのOption指定で、
ソースベースのパス指定を考えたいと思います。

=>
以下のように内容的に二つの対応としたいと思います。


1) `include については、プリプロセッサで処理していますので、従来通り、Veritak Project設定でINCLUDE_DIRを設定してください。(呼び出される前にSetする必要がありますので冒頭にセットすることをお勧めします。)

2)VeritakProject設定Option(soure_relative pathオプション)を設けます。$readmemh等については、実行時フォルダがそのソースファイルのあるところを前提にしていると思います。
このオプションがOnのとき、ファイルを扱うシステムタスクについては、実行フォルダを、プロジェクトフォルダではなく、そのシステムタスクが書かれているソースファイルフォルダにすることにしました。

以上は、1.74からです。

=>この辺については、LRM上明確な規定がないのですが、どうもプロジェクト基準が一般的なようです。C言語では、確かにソース基準なのですが、Verilog HDLの世界は、Defact Simulatorがどのように実装しているかで、決まってしまう部分があります。その意味で、オプションはつけたのですが、元のままの方がよろしいかもしれません。
92 Veritak takes about 5 seconds to compile one of the designs. This is much faster than ModelSim 6.1a.
1)Can you provide some statistics of nets vs. memory
usage?
2)
Also, do you have a profiling feature to tell me in
which module and line the most CPU time is being
spent?
1.76 No, I don't have. But it is interesting for implementing the optional feature. Let me consider. Information will be ,not module
but process(always/initial/function/task) with file/lineno information.

=> Check "CPU Time Rerpot" in Project Setting
Please note this is not exact meaning of "CPU Time",but just the result of clock counts between start and finish..
93 One thing I see, though, is that if I do $stop in the test I get a bad VCD file, while if I press "Pause" in the GUI I get a good VCD. Is that what you expected? 1.76 In fact Yes, "Pause button" makes $dumpflush internally. That's why internal file buffer is flushed. However $stop makes no $dumpflush internally. So,
If you would like to look VCD in the way of test, please do;

$dumpflush;
$stop;

Maybe $stop would be better for including $dumpflush implicitly. I will do from next release.
94 What is the limit for VCD size? I am using
VCD since Veritak all-signal
2007/1.79A Currently VCD has limitation. Generally speaking, it seems around 50MB is maximum VCD size Veritak can handle. This is due to my inefficient design. 2 or 3x improvement is trivial ,but 10x or more is very difficult.
I must say I am so sorry for that, we have no choice other than to wait 64bit version about Veritak. Please use $dumpon/$dumpoff to limit the term of vcd.
=>Version 1.79A can handle maximum of 300MB VCD File Size for 2GB Memory possibly.
95 Also, are you planning to separate 32-bit and 64-bit versions? T.B.D. T.B.D.
96 do you have a Linux version of Veritak? The command-line version would be enough. 2007 No,I do not have the Linux version. It is true some customers request Linux environment. Only command version may be easy to port,while GUI is difficult to handle. I will port the command version to Linux when compiled version(generates c++ code on 32/64 platform as I explain before) is available.
97 ポートの接続で、信号名が同じなら、省略できたかと思いますがエラーになるようです。
サポートしていないのでしょうか?

aabl_ abc1(
.HRESETn,
.HCLK,
//
.HBUSREQ,
.HGRANT,
.HLOCK,

 ・・・・・
1.76
SystemVerilog では問題ない記述だと思いますが、Verilog 2001 のLRMを見る限りILLEGALな構文です。恐らく、 MODELSIMは、SVの流れでサポートしているのではないのでしょうか? とりあえずサポートすることにします。
98 コンパイル時のメッセージですが、ErrorとWariningとINFOの色わけしてほしい 1.76 エラーメッセージは、ピンクにしてみました!
99 たとえば、以下の操作はどうですか?

1.複数行選ぶ
2.選んだところ右クリック->メニュー->信号の非表示 を選ぶ
3.全部非表示にするわけわかんないので、複数行選んだ一番上の信号のみ残す(
一番上は空白行固定がいい??)。
  -->下にある信号が見えるようになる(上に上がってくるので)。
4.再表示したいときは、ダブルクリック(一番上の信号)
T.B.D. 折りたたむイメージですね。これは、便利そうな機能ですね。検討してみます。
100 I would be very interested in learning what other enhancements you will be doing to Veritak over time, I am specially interested in reducing main memory size and incrementing speed of simulation. I would also be interested in splitting simulation work between cores in dual-core processors and later on multi-processor systems T.B.D. Table below shows future release versions of Veritak..

item Version Release Description
Interpreter 1.76 Sep.30.2005 with cpu usage report option
A little bit faster than earlier version
Save/Resotre Funtion 2.03 Mar.2006
4x Compiler 32bit 3.0 Jun.2006

Using Direct Compiler Technology.
Subset SystemVerilog 4.0 Apr.2007
hopefully
Linux /64bit 5.0 2007 Using Direct Compiler Technology.
VHDL to SystemVerilog 6.0 2007 GPLed Open source

Compiled version may resolve memory size issue.

Splitting jobs(threads) in simulation is very difficult for event driven type of simulator,So may be applicable after 4x compiled versions.
101 modelsimとveritakの動作に差がありましたので確認させていただきます。
veritakでは,case1でも動作したのですが,modelsimでは"out"が'z'になり動作しません。case2に修正したところ,veritak,modelsim双方動作しました。
なにかオプションを設定すれば'z'状態も出力されるようになるのでしょうか。

verilog仕様的にはどちらが正しいのかわかりません。
もしveritakの動作が正しくなければ訂正できないか検討をお願いしたいと思い
ます。


module hiz_test;
integer i;
wire [31:0] wc1,wc2;
initial begin
i=0;
#10;
i=1;
end
case1 sub1(i,wc1);
case2 sub2(i,wc2);

endmodule

module case1(in, out);
input [31:0] in;
output [31:0] out;

wire [15:0] QH, QL;

assign QH = out[31:16];
assign QL = out[15:0];

assign QH = in[31:16];
assign QL = in[15:0];

endmodule

module case2(in, out);
input [31:0] in;
output [31:0] out;

wire [15:0] QH, QL;

assign out[31:16] = QH;
assign out[15:0] = QL;

assign QH = in[31:16];
assign QL = in[15:0];

endmodule
1.76 ModelSimが出力するように修正しました。(なお、左記の記述は、シミュレータ/論理合成ツールVendorで異なる解釈になる可能性が高いです。)
102 リストViewの階層名によるソート。
VCDとVeritakの結果の比較が便利になります。
1.76 実装しました。
103 テストベンチで、レース記述を指摘してくれる機能があると助かります。(VCSでは+raceオプションであります。) T.B.D. 難しいです。。。検討します。
104 (1)`defineの適用される範囲について
`defineはmoduleの外部で定義可能です。ですので、Verilogの文法上は一度定義すれば全てのモジュールに適用されると認識していますが、これは正しい認識でしょうか?

シミュレータによって解釈が異なるかもしれません。
少なくともNCとVCSは、1つのファイルでdefineされていれば他のファイルにも
影響するようです。
1.84 Veritakの場合の実装説明です。
 コンパイル順序によります。プロジェクトで設定される順にプリプロセッサが一旦`define マクロやIncludeを展開して一つのファイルにしています。これは、Project オプションで設定しますと、preout.v が生成されますので、プリプロセッサの解釈結果は、これで見ることができます。
Veritakの場合、プリプロセッサは、個別のファイル毎に読み出していますので、
一度定義しても、それ以降のファイルには、適用されない仕様にしています。

従って、マクロを参照するには、個別のファイル毎に
`include "define.h"
としていただきたいです。
他のシミュレータで問題になる場合は、
`ifdef Veritak
  `include "define.h"
`else

`endif
と言う風にしていると思います。

プリプロッセッサの構造追加変更が必要ですので、当面、上記の対応でお願いいたします。

なお、プロジェクト内の全ファイルを、一回でプリプロセスする方式も、Optionで実装いたします。

=>1.84にて実装しました。 Project設定で、Throughout Projectをチェックしてください。

105 他のシミュレーターの例で恐縮なのですが、"+define+...."というようにシミュレーション実行時に`defineの定義が可能なものがあります。
Veritakではこのような事は可能でしょうか?
1.85/1.87
+define は、NCですね。
複雑なマクロでは、無理ですが、シンボル定義で
`ifdef ABC
なら、プロジェクト編集Defineで、ABC を設定した後、Add Defineを行ってください。頭に追加されますので、全Moduleについて適用されます。
サンプルは、samples\alu_test_ifdef.vtakprj です。ご参照ください。

=>1.85 より$value$plus/$test$plusで、コマンドに与えた引数が、RunTimeで取り出せるようにしました。

=> プロジェクトのDefineは、`ifdefのみを想定していましたが、1.87からReplaceもサポートしました。 プロジェクトのDefで、例えばCYCLES=2000のように=でAdd Define定義しますと
 `define CYCLES 2000
と記述したようになります。
106 バッチファイル実行についてVeritakをバッチファイルで実行させることは可能でしょうか?

VeritakをインストールしたディレクトリにCommandというディレクトリがありますが、ここには"example.bat"というものがあり、バッチファイル実行が可能なようです。
また、シミュレーションを実行したディレクトリに、"veritak_command.txt"
というものができるのでこれを使って同様に実行したところ動作はしました。
T.B.D. ご推察通り、veritak_command.txt は、GUI(veritakwin.exe)が、実行エンジン(veritak2.exe)に渡している引数です。一部Command Versionでは、サポートしていないOption引数がありますので、release_note.txtをご参照ください。(まだマニュアル化しておりません。)
107 VCDインプット機能が
あると便利です。

この機能は、VCDファイルをテストパターンとしてデザイン
に読み込むことができます。即ち、$vcdinタスクファンクション
がインプリメントされ、SILOSに実装されています。
使い方としては、テストベンチに以下のような記述を追加
します:
module test;
......
$vcdin(done,1, in1, in2, in3,, ... out1, out2, out3.....);
endmodule

中に、doneは接続済みという、1が接地という意味です。
シミュレーション後、VCDファイルのデータを波形に表示
できますし、インプットの部分はテストパターンとしてデザイン
に入力されました。デザインの出力値が波形に表示され、
VCDの出力と比較することもできます。


VCD入力機能がデザインの検証には非常に便利となります。
よい機能です。
T.B.D. 場合によっては、便利ですね。当面、検討課題とします。
108 In Verilog 2001, $sscanf is a system function that I'm using. Do you plan to support it? 1.85 Done.
109 Verilog 2001 uses $value$plusargs to obtain a value passed to the simulator. Do you plan to support it? 1.85 Done.
110 When I add a library directory, Veritak appears to scan all the files in the library instead of simply looking for the missing modules.
Since I'm doing Xilinx development, this means that Veritak reads ALL the files from the unisim directory. This slows down the load time.

<Another Person wrote>

Parsing unrelated library primitives Why does Veritak parses into unrelated library primitives when the design being compiled doesn't use them.
1.84

Because Veritak is interpreter, not compiler unlike ModelSim.
Actually, preprocessing time is major concern when reading large number of files, such as unisim/simprims in current version.
I have an idea to shorten load time. From Nov.End this idea will be applied.

=>Check Throughout Project & Use "library_files.txt" in Project Settings.

=>Use save/resote function Ver2.03.
111 Since specify blocks are not supported, how are the Xilinx unisims files expected to work? 2007 Delay is just neglected if none-zero value is provided.
I am planning to support Specify Section at least for Xilinx .
112 * Text based project file (.vtakprj)

Shouldn't the .vtakprj file be in human readable format in case it needs to be edited by a text editor?
2.04 It is difficult to implement. Regarding file-path I would like to consider to call another text-file as an option for future release.

=>From ver 2.04 Veritak generates "veritak_src_files.txt" by EX
button. Edit it and take by IN button.
113 ModelSim's Wave window distinguishes between High ('1') signal that is driven by someone or is being pulled up by "tri1."
From what I can tell, Veritak doesn't seem to do that.
Pending. It is too big impact for Veritak. In early design stage,I decided "not supporting strength display". Speed issue was the biggest reason.
114 According to your FAQ, it sounds like other people are asking for this. It will be nice if Veritak can have ModelSim like command line features (i.e., vlog, vsim, vlib, vcom, etc.) so that I can distribute simulation
script file for customers
Feb.End/Pending Currently I am planning only XL-compatible command switch for future released version. This is for regression test only.Script will be pending item.
115 * Faster simulation time
I understand that everyone is asking for this, and I have to agree that it will be nicer if the simulator runs a little faster than where it is now.
Why are some versions of ModelSim (PE or SE) faster than Veritak?
Is it because it is compiler-based?
May.2006 Yes. Modelsim is using direct-compile technology.
Veritak also will use it.
116 Unlike ModelSim, waveforms don't seem to get updated on the fly when the
simulator is running.
To look at the waveform, the simulation needs to be stopped.
I prefer on the fly update of the waveform like in ModelSim even if it
means some performance hit.
1.84 In fact,Older version has on the fly view.But experienced a trouble with some high-end Graphic Cards. After stopping on the fly display, it worked. So it would be better as user option selected by project setting.. Let me consider.

=> Check On the fly update
117 Although it is not a big deal, every Veritak distribution has the same file name (http://www.sugawara-systems.com/veritakwin.exe).
Shouldn't it be different for every version? (Like veritakwin_179a.exe for
Ver. 1.79A release.)
1.82 I will apply it from next release.
118 * Installation directory
Shouldn't the default installation directory should be under d:\Program Files like other Windows programs?
T.B.D. Let me check it.
It is due to installer(another company)'s design.
119 I am just wondering how difficult to implement scrolling 1/8 of the waveform being displayed when a left of right arrow button is clicked or a left or right arrow key is pressed. 1.83 Done.
120 特に他人が開発した長文のmodule(それもincludeでファイルが複数に分割されていたり、includeの中にincludeがあったりするもの)を扱わなければならないようなとき、どのような変数が宣言されているのかを調べる際にソースコードを見るのは骨が折れるので、Scope Tree Viewでまとめて見られると便利です。
その際にOで宣言されていても、同時にRやWで宣言されているものはそのまま見えたほうが便利だと思っています。
1.83 Variable宣言されているものについては、I/O/IOを青色にしてみました。
121 プロジェクトのDefineは、`ifdef のみサポートしているようです。 187 1.87から対応しました。

Item105をご参照ください。
122 I would prefer that your front end tell me that I tried to reference a macro which was not defined.

In my case, I had to run cver to find the place where the macro was used
before it was defined.

Things like this:

`define FIRST 1

wire example_1 = `FIRST | `SECOND;
wire example_2 = `SECOND | `FIRST;

Should make 2 errors
In all cases, verilog-xl makes errors when you try to access an
undefined macro. Verilog-xl is the standard, not dreadful modelsim or even cver!
1.89A From 1.89A, I will follow XL for undefined macro.
123 I know that you have a plan to support Linux version next year. Meantime I am trying to use wine on linux but I had a problem with opening files. Any idea for the problem?

Another Person wrote:
I've tried once to install it under Wine but didn't have much success (yes I know that isn't a supported configuration ;-)
No Plan I have no plan to support wine Linux.
124 Veritak Version 1.89A に於いてコンパイラ指示子`resetall  がコンパイルエラーになってしまいます。
1.88Aまでは問題なかったのですが。
1.90A resetallは、サポートしておりませんでした。1.89Aから、マクロ定義されていないマクロをエラーとするように仕様変更(item 122)したので、そのようになったものと考えます。解決策としては、VeritakでRESETALLをサポートするのが、根本になります。
=> 1.90 より`resetallをサポートしました。
125 I continue to be very impressed by VeritakWin, especially the progress in sim speed! Something that would be interesting would be a release of the file set you are using to benchmark with WITH the VeritakWin files. Done. I added links to Veritak Project files in the report , except for user contributed IP cores that can not be opened in public.
126 既に信号リストのIO/名前ソート機能は実装されていますが、信号数が数百になるような場合に目的の信号を探すのが大変なので信号リストのワイルドカード指定によるマスク表示機能を追加していただけないでしょうか。

例えば波形表示したい信号を"*_req"や"*_r??"といった指定をすると
次のような感じでリスト表示を絞り込む機能です。

+------------------------+ +------------------------+
|Scope Tree View | |Scope Tree View |
+---+--------------------+ +---+--------------------+
| |aaa_ack bbb_sel | | |aaa_req |
| |aaa_sel bbb_set | ==> | |bbb_req |
| |aaa_set bbb_req | | |ddd_req |
| |aaa_req ccc_ack | | | |
| |bbb_ack : | | | |
+---+--------------------+ +---+--------------------+
   << マスク前 >>    << マスク後 >>

上記の機能で目的は達成されるのですが、さらに入出力ポート・FF等の
信号属性によるリストの絞込みができると便利かとおもいます。

1・階層移動時は常にマスク無効+同一マスク指定時には履歴を更新しない
2・階層移動してもマスク無効or有効の状態を保持+履歴実装は現状維持

のどちらかの組み合わせになっていたほうが、履歴機能がより便利になると思いますがいかがでしょう

逆に階層をまたいだ検索はdebussyで始めて見かけました。指定階層以下の検索結果として信号名をフルパスで表示するので専用のウインドウを用意して完全に別機能として実装されていました。
別の人が作成した大規模なRTLやネットリストを短期間で解析しなければならないときは便利でしたが、自分でコーディングしているものなどは手動で移動する案で充分と思います。
1.91/1.92 とりあえず、最初のご要望は実装してみました。
いくつかの例です。
aaa -> マッチしません
aaa* -> aaa_ack,aaa_sel,aaa_set,aaa_req がマッチします。
??????? ->bbb_ack がマッチします。
*ack ->ccc_ack,bbb_ackがマッチします。


1.92にて改善しました。ダイアログをモーダルからモードレスに変更しました。
・Enable/Disableでワイルドカードの有無を指定します。
・階層をまたいでもダイアログは生きています。
・履歴は、プロジェクトファイルに7つまで覚えています。
・Name Sort/IO Sortは、そのまま有効です。

=>これは、「使える」機能になったと思います。良いご提案をありがとうございました。
127 1.90A で`resetallは解決いたしましたが、
他のライブラリで 新たに下記のエラーが出てきました。
Error: Macro name=delay_mode_distributed is not defined.
Error: Macro name=suppress_faults is not defined.
Error: Macro name=enable_portfaults is not defined.
Error: Macro name=nosuppress_faults is not defined.
Error: Macro name=disable_portfaults is not defined.
1.91 delay_mode_distributedを除いては、LRMで定義されていないので、お使いのシミュレータ依存の構文だと思います。とりあえず、Define定義さえすれば、プリプロセス処理はエラーなく終了するはずです。チュートリアルは、2.4.14をごらんください。
 
XLで定義されているようなら、次Versionで暗黙に定義してエラーを防ぎたいと思います。その辺の事情がお分かりでしたらご教授いただきたいです。

=>追加情報をいただきました。
これらは、1.91より暗黙宣言としました。
128 [WaveformViewer]

・波形の見たいところの瞬時の拡大は、解析効率UPに非常に有効なのですが、
1. 拡大(Zoom)が赤⇔黒カーソル間拡大
2. マウスホイール拡大
等といった手段はあって確かに便利なのですが、
見たい部分の瞬時拡大と言う意味ではどうしてもステップ(時間)がかかってしまいます。

1. に関してはSignalscan動作とほぼ同じで自分も昔はこの方式が使いやすかったのですが、
Debussyを使い始めて慣れてしまうと明らかにDebussyの操作の方が瞬時動作に優れているように感じております。
Debussyの拡大動作は、拡大したい波形の範囲を、マウス左クリックでドラック(X方向に)して離すだけです。
それでそのドラックした区間の時間軸(X軸)範囲が拡大されます。ドラッグX範囲が少ないと拡大率が大きいと言うことです。
オプションによる切替えや、Shift等を押しながらドラックという方法でもかまいませんので、
もし実現していただければ非常に助かります。

=>、Debussy風の拡大機能なのですが、
マウス左ドラッグ中X方向をずらすのですが、
その間(範囲)は別の色(波形が消えない透過色)が付くとなお解り良いですよね?
ようは縦棒(Marker)の幅が伸びるイメージです。
Debussyはどうなっているか忘れてしまいましたが。

※以下は私個人の意見であり他のUserさんの使い勝手に影響しかねないのでそう言う意見もあると言うことで聞いてください。
・瞬時の拡大、縮小はデバックにとって不可欠ですので、欲を言うと、左クリックドラッグで拡大。
右クリックで縮小(縮小率はあまり一気に縮小されなければ問題ないと思います。)。
と言うようにマウスのみで操作できると、さっさっと見たいところに移れると思います。
Makerが必要なのは実際波形を確認したうえでの事なので、瞬時動作は必要無くそちらはキーボード+マウスクリックで発生・移動が行えたらなあと思います。

3.51A 難しいです。時間をかなりいただきますが、実装したいと思います。

=>3.51A で実装しました。
129 このWaveViewerは単品のみで非常に強力で気に入っていまして、VCDを直接読み込めるためVCDViewerとしても単品で充分役立つかと思いますが、
それ以外のデータ方式の読み込みも検討していただけたらなっと思います。

例えば単純に波形32bit分のバイナリデータ羅列ファイル(バイナリ形式、ASCII形式)の読み込み等。
しかもコマンドラインから、
veritak2.exe -??? [波形bit幅] -??? [入力Waveファイル]
みたいな感じでオプション指定でコマンドラインからViewerを直接起動できれば最高です。
波形の名前は後でツール上で決めるなり、あらかじめ決まった名前情報ファイル(ini等)を読み出したり。
いろんなロジアナツールの波形表示として使いたいなっと言う要望です。
実質的に、ロジアナ、パターンジェネレータ 等での場合、
波形ファイルとは別ファイルとしてそうう言う情報があった方が便利で分かり易いと思います。
別途専用の設定ファイル(iniファイル等)で信号の名前、時間の尺度が指定できればと思います。

例えば簡単なロジアナの場合(基本的に32(36)bit幅のSRAMを使用しているケースが多いです。)

・Winツール上でサンプリングレートを指定。

・Winツール上で取り込み実行スタート。

・外部ハードのSRAMに純粋にサンプリング。

・Winツール上でPC内メモリに外部SRAMのデータをそのまま読み込み。

・Winツール上でメモリ内容を波形表示。

と言う形になると思います。
つまり、サンプルレート情報等はWinツール側で持っている事になるので、
Winツール上からVeritak側Viewerを開くときに、VeritakViwer環境設定ファイルを変更後、
起動してやればいいことになります。

まあ上記はあくまで一例ですが。
以下のようなロジアナ波形表示ツール(Free)を使用した事があります。
http://www.psxpad.com/myla/
http://optimize.ath.cx/
http://optimize.ath.cx/cusb/logiana.html

単純な波形データの読み込みに対応できれば、
ロジアナのみにかかわらず、
パターンジェネレータや、その他もろもろ融通性があるかなっと思った次第です。
T.B.D. そういう使い方も考えられますね。問題は、形式上、時間という尺度がなくなってしまうので、そのままでは適用できないことです。なにか、ご提案のようにフォーマットを指示してあげる必要もありますね。

4x実装後に検討します。

=>F.A.Q.168をご覧ください。
130 [Simエンジン]
FAQにもあったと思いますが、 やはり、今年からはDualCore(CPU)が中心の時代となっていくかと思われますので、 是非、早急なDual対応を願っております。
最近自分もDualCoreに乗り換えたのですが、
自分の用途的にそれを生かせるアプリが皆無しで失望中の為、 特に期待してしまいます。

そうですね、Simエンジン自体を分散処理は難しいとは思いますが、 片方のCPUはSimエンジンメインで、もう一方は波形圧縮やその他の付随処理用にっと言った 感じでも、多少(1,2割?)は早くなりそう出はないですか?
T.B.D. 難しいです。というのは、シミュレーションの中身というのは、本質的にSingle Threadだからです。(H/Wが並列なのに不思議と思われるかもしれませんが)無理やりにThreadを分けるというのは、一つの技術で、そこまでのレベルにVeritakはありません。論文の収集とか、調査することは行っていますが、そういう感じですので、検討はまだまだ先になると思います。

Veritakの場合、GUIと圧縮ー実行エンジンは、別プロセスです。現状で、実際Dualコアをお使いのIP Vendorさんから、Modelsimより速いという情報もいただいていますが、現在の処理上は、待ちにしているので、それほどではないと思います。現状、大規模ソースでは、仮想メモリを使い切ってしまう場合がありますので、64ビット環境で効果がでるものと期待しています。
131 皆さん言っているように、コマンドラインベースの実行にも正式対応して欲しいです。 12/End アイテム106で、現在でも可能です。
現在のコマンドラインをXLと同じようにした後、正式にリリースします。
132 外部CプログラムVisualC++アプリ(Win)とうまく(簡単に)連携動作出来る仕組みが可能でしょうか?


=>
左記の記述例の場合、initial で定義されているため起動後初めの一回のみのユーザ入力ということでよろしでしょうか?
しかも$my_GUIの待ち中は、他の全ての動作(Sim)も止まった状態ですよね?
T.B.D. その際のIFは、SystemVerilogのDPIになります。SystemVerilogを実装するには、時間がかかりますが、DPIのIF定義だけを持ってくることは、現状のVerilog 2001でもアイデア的には可能のはずなので、それで当面対応しようと思っています。リンクは、DLLまたは、Staticに可能になると思います。
 また、現状のVeritakは、VPI IFを持っていませんが、システムタスクは、VPIで書いています。(公開していません。)
たとえば、
reg [31:0] a;
reg [31:0] mem [0:10];
 
 initial begin
  $my_GUI(a,mem);//MFCで書いたGUI を呼びユーザに入力を催促、結果をa regと mem に収納
 
 end

=>
たとえば、次のような感じでしょうか?
// a-l は、reg TYPEのVECTORまたはメモリ

always @(posedge clock) begin
$my_GUI1( a,b,c,d);// INPUT PATTERN の入力
$my_GUI2( e,f,g,h);// INPUT PATTERN の入力
$my_output( i,j,k,l);// OUTPUT PATTERN の出力
end

基本的には、シミュレータを中心において、周辺は、その僕と考えてください。
外部から、駆動されるイメージではなくて、テストパターンを1クロックづつ読み込むイメージです。テストベクタとDUTの関係そのものです。
確かに、制御という意味では、組み合わせ回路のファンクションCALLみたいに一瞬だけです。しかし、$rung_kuttaの例を見てもらうとお分かりのように、初回に動的メモリを確保、初期化してalways loopで、DLLを呼び出しDLL側で積算しています。つまり独立したメモリを持ったOjbect的な動作をDLLにさせることはできます。同様にして、GUIのダイアログをだしてユーザの入力やグラフ出力を生成することもできると思います。
 すこし、余裕のあるときに簡単な例を書いて見ます。
=>アイテム135をご参照ください。
133 VPI(Verilog programming interface)
PLI(programming language interface)
DPI(Direct Programming Interface)
と言う言葉が出てきますが、
全て外部Interfaceと言うことに変わり無いと思いますが、
具体的に使う側(User)としては機能、性能、記述で何がどう変るのでしょうか?
-  PLIは、ご存知の通りです。VPIは、Verilog 2001のPLIと解釈してください。RTL上のregのR/Wをするのに、Cから呼び出すにも手順が必要です。その手順が、PLIとVPIでは、違います。VPIの方は、より抽象的にエレガントに書けます。IFの手順とエラーチェックを厳密に行うためオーバヘッドが出ます。シミュレーション速度上のネックにもなりかねないため、SystemVerilogで考案されたのが、DPIです。これは、ほぼCのリンクと変わりありません。そのため、オーバヘッドはなく高速な反面、エラーチェックがないために、初期のデバッグが難しいという問題があります。(原則は、“What You Specify Is What You Get”:コンパイラは、定義されたようにつながっていると信じるしかない、です。)
また、万能なのは、VPIです。VPIの全てがDPIで、置き換え可能と言う訳ではなく、またDPIは、シミュレータ依存の部分も多くなると予想しています。
134 Simエンジンは一度流す環境が出来てしまえば、
速度、Bug、エラー解析と言った部分でしかUserの目には違いは見えなのですが、
デバッグツールはもろにUserの使い勝手・効率に影響する部分なので、
非常に重要な部分だと思っています。

その点Veritakは複数のUserの意見を取り入れようと日々機能拡張されているようで非常に好感が持てます。
ただ、何でもかんでも取り入れてしまうと機能が豊富すぎて、その機能が不要な人には逆に使い勝手が悪くなる場合もたたありますので、そこら辺の見極めも大事ですね。
- ご指摘の通り、NC/VCS使いの上級者から、初学者まで、Veritak ユーザの階層は、非常に深いので難しいところがあります。一つの目安は、自分の使いやすさにおいています。
135 最近バージョンアップが頻繁で,ほしいと思う機能が追加されており助かっています。
強いて言えば近々VPIなど使いたいと思うのですが,Veritakでは公開していないとのことで手軽に動作検証ができないので残念に思っています。CverではVPIサポートしているので余計に残念なのですが,やはり公開できないのでしょうか。
=>
システムタスクをVPIで実装していればと思ったのですが,思ったほどデフォルトのシステムタスクで使うAPIが多くないのでしょうか。
残念ですが,今後要望が多ければ将来実装を期待したいと思っています。
ただユーザ側も直ぐにフルスペックのVPIを使いこなすとも思えませんので,必要なところから段階的にサポートするVPIを増やしていっても良いと思いますが
いかがでしょうか。
=>
Visual Cが利用可能です。
ただコンパイラとしてはLinux対応とか考えるとgnuの方が良いと思います。
SystemCとかWindows環境で使うコンパイラはminGWが主流のようですね。こちらはminGW環境使うことに問題ありません。海外的にはVisualCよりgnuでサポートした方が良いのではという気もします。文法が大きく変わることでもないのでサポートしやすい方でかまいません。
1.93A 公開するレベルにない、というのが正直なところです。確かにシステムタスクは、VPIで書いていますが、その中で必要なCALLだけを実装するという方法でして、不足している実装の方が多いです。
現状では、4xの実装、DPIの実装を優先させていまして、VPIは、さらに、SystemVerilogの実装後になってしまいます。それまでの間、レジスタのR/Wレベルで済むレベルでしたら個別に限定的な対応をとさせていただきたくお願いします。

なおコンパイラは、サポートの都合上、当面Visual C++のみとさせてください。(なお、Item132もご覧ください。)
=>
リンクは、ヘッダファイルとインポートライブラリだけあればよいので簡単です。mingWやその他のコンパイラは、互換がないらしく、別な方法を採らないといけないらしいのですが、私自身よくわかっておりません。

現在、ヘッダファイルは、Privateなものまで入ってしまっているので、少し整理して、若干のサンプルを書いた後に、ご要望のユーザ様に公開したいと思います。
=>1.93で、サンプルを書いてみました。regression_test/vpiのフォルダで、プロジェクトファイル DBLCLICK起動で直接起動してみてください。
ヘッダファイル、インポートライブラリ、VPIのソース及びVisual C++7.0のプロジェクト環境は、インストールパッケージに含まれません。ユーザ様で、ご希望のあった方のみURLをご案内しますので、サポートまでお知らせください。
136 実はmos switchレベルで新たなgateを定義したいと思うのですが,veritakでmosswitchレベルでのシミュレーションは可能でしょうか。 3.26 trireg 以外は、mosの関係も、一応実装してはいるのですが、誰も使わないだろうということで、検証をしておりませんでした。申し訳ありません。使わない方が無難です。(Item139もご参照ください。)

=>3.26で実装しました。
137 要望128を拝見しました。
debussy 方式のドラッグ拡大があがっていますが、これは拡大には便利なのですがマウス操作では縮小ができないため一長一短だと感じています。debussyでは代替手段でキーボード・ショートカット(z:縮小,Shift+z:拡大)が用意されています。
瞬時動作という点ではショートカットでも充分早いので、私が debussy を使用する場合はキー操作ばかりを使用するようになりました。
=>
また波形の拡大縮小の件ですが veritakでの"Ctrl+マウスホイール"がショートカットキーになっているようなものです。正確にはdebussyの場合はT1カーソル位置を中央としてではく表示範囲の真ん中を中央にしての拡大なのでドラッグ拡大と併用します。
また最近のsignalscanでは"Shit(orCntl?)+左ボタンドラッグ"とした場合は同様のドラッグ拡大も行えるようになっていたと思います。

以上、ご参考まで
T.B.D. 情報ありがとうございます。これについては、要望88でModelsimと同じようにカーソルのドラッグ動作を入れたために、Debussy ライクに、そのままでは行きません。GUIは、各ユーザの使い慣れた背景が違うために、難しい部分があります。
=>
情報のご提供ありがとうございます。私は、DebussyもSignalsScanも触ったことがありませんので、参考になります。
138 VeriPadを使用して気づいたのですが、
サクラエディタのような、他エディターにある
選択文字部分をドラックアンドドロップで
移動する機能が無いようなのですが
追加していただくことは出来ませんでしょうか?
Pending Veripadは、すみません。オリジナルは東大の学生さんの作でして私も中身はよくわかっておりません。私に言えますことは、とても対応できるような簡単な構造でないことは確かです。申し訳ありません。
 代替案としてお使いのエディタを外部エディタとして呼び出す方をお試しいただきたいと思います。
139 ・FAQ136にもありましたが、
デジアナ混在の設計をしていますとやはり
tranif、
rtranif、
trireg、
の正式対応がうれしいですね。
=>
このtriregはデジアナ混在を強引にVerilogSimしようとすれば必須ですね。
例えばSRAMの場合、
リードの場合を考えると、CELLを開く前にセンスアンプ両脇D,DB配線(bit線)のプリチャージ動作が必要で、
そのプリチャージされた電荷をCELL内nchでD,DB側のどちらかの電荷を引き抜き、その微少な電位の違いをセンスアンプで振り切り上げるイメージなるのですが、センスアンプON寸前にはそのD,DB両配線はHiZ状態(CELLとセンスアンプがぶつからないため)にします。
これをVerilogSimで実現しようとすると、動作的にHiZになった瞬間にD,DB配線も論理的にHiZになり、センスアンプ両脇がHiZなので論理が固まらなくなりセンスアンプON後に不定Xが回ってしまいます。
そこでそのD,DB配線にtriregを指定しておくことで、CELLに引き抜かれた側は0ですが、引き抜かれない側は、D,DBが切り離されてHiZ状態になっても論理的には1が保ち続けられます。
そのため、センスアンプ両脇は、0,1となっており、出力は正常にされると言うことになります。
簡単に言うと、状態としてはHiZになるが、電位(電荷)を持つHiZ部分としてGATE入力に使用する部分に必要と言うことです。
ここでのSRAMの検証はあくまで、アナログ動作を見る物では無く、NETの配線接続と論理です。

rtranifはCELLやレベルシフタの様に入出力がぶつかっている構成では当然ぶつかってXになるのですが、
そこを通過するをrtranifで弱める事で信号がぶつかっても強いレベルに決定される正常動作すると言うことで使っています。
3.26 triregを使う人は初めてです。
=>
tran 系は、有名な本の執筆者(Mr. System Verilog)でも間違える位、理解している人は、少ないと思います。(実際、tran系の実装は、難しく時間がかかりました。)
なるほど、trireg は、その為に存在するのですね。明快な解説ありがとうございます。triregの実装は、その複雑な内部動作の為に、tranに輪をかけて頭の痛い問題です。時期は、言えませんが将来実装したいと思います。

=>3.26で実装しました。
140 Veritakについての希望なのですが、メインウインドウ内に複数のウインドウが存在する形式(Visual c++ ver6風に)を現在とっていらっしゃるわけですが、タブ機能を付けていただきたいのですが、一意見として受け止めていただければと思います
。私一人の意見で変更するのは無理だと思いますので、他にもタブ機能の要望が多くあるようでしたらお願いします。
済み
(確かに、VisualC++は、私の開発環境です。IDEは参考にしました。)
=>
CTRL-TAB で現在でもそれらしく動きますが、いかがでしょうか?
141 Can Veritak figure out timing loops and display a warning? Would be very helpful if possible. T.B.D. Without considering performance penalty,it is easy to implement.
I will consider this as a option at 4x compiled versions.
142 veritakを触っていてこういう機能がほしいな等が3点ほどあります。
バージョンアップ時に参考になればと・・・。

1:waveformをセーブせずに、ウィンドウをクローズしようとした場合
 ワーニングが出てくれるとありがたいです。
 「波形(waveform)がセーブされていないが本当に終わって良いか」 見たいなメッセージを表示してほしいな、と思います。
 最初の起動時はセーブしないで終わると、再度信号選択して波形を表示 しなければならない。時たま、セーブしないで終わってしまうことが あるんです。

2:画面のカラー表示を変更したら、該当する波形だけではなくその後に開くすべての画面の色をパーマネントに変更してほしいです。
 秀丸みたいに。(秀丸を使っていなかったらごめんなさい)

3:Veritakに付属のエディタのフォントを選択できるようにしてほしい。

T.B.D(3.11) 1.これは、そうしたくない人もいると思いますのでOptionになると思います。
=>3.11A Use WaveformViewManager をお使いいただくと特にSaveの必要はありません。
2.おっしゃる通りだと思います。プロジェクトプラスレジストリにしようと思います。

3.これは、現在可能です。Veriapadのカスタマイズ2.5.1の最後のNoteをご覧ください。
143 国産でここまでできる、というのは驚き..

あと、波形のフォーマット保存だけでなく、波形そのものの保存と、任意時点のシミュレータ状態の完全保存(save/restore)ができるとよいですね。XL,VCS,Modeslim-SEは出来ます。長期のシミュレーションを行う場合は有用です。
2.02 おっしゃる通りです。save/restoreは、内部的にはかなり大規模なコード追加になりますが、実装します。

=>2.02で実装しました。
144 次期4xバージョンは、Verilog→C++出力と言うことで、
非常に期待しています。
早速ですが同志向?の海外のFreeSoft:Verilator
http://www.veripool.com/verilator.html
を使用してみました。
使用されたことはありますでしょうか?
同じような感じになるんですかね?

使用した感想ですが、
cygwin上では、コンパイル、実行、Trace(VCDファイル出力)まで>もいとも簡単に実行でき、かなり強力なツールに感じました。ただ、自分がしたいのは、Winアプリ(VisualC++)との協調検証です..

=>
見てみました。
なるほど、イメージにかなり近いかもです。

.. Veritakに簡単な01形式ダンプファイルの波形出力ができる機能があると便利だなあと、つくづく思ったりしました。
3.0 これは、去年、研究していました。Cycle Baseエンジンの研究材料として、すごく勉強になりました。
 問題は、サイクルベースOnly&2値なので、通常のVerilogソースを走らせるためには、Event Drivenベースのアルゴリズムとの融合が必要なことです。4xでは、その辺の融合は、未だ考えていません。とにかく、Event Driven でコンパイラベースに載せる、ということが、当面の目標です。4xは、単純にインタープリタコードをコンパイラでRefineするだけですので、基本的にはいままでと同じです。コンパイルに手間がかかるという問題を除けば、GUIを含めて同じ操作性にしたいと思っています。

C++ベースという意味では、下のTRYされてはいかがでしょうか?

http://www.cvsdl.com/

これは、かなり繊細かつ真面目なパーサを書いておられます。4xのコンパイルドイメージは、これに近いです。




GUIとの協調アプリの例としてCommandフォルダにあるexample.batを行ってみてください。example.bat を走らせると、しばらくしてGUIが数秒現れると思います。

これは、VPIソース の次の中で、$system,$shell_execute,$my_gui を定義しているからです。(EXEもDLL中から呼び出しています。)

calltfが登録される飛び先になります。引数の取り出し方と返し方は、VPIの作法によります。共有FILEがGUIとのIFになっています。


extern "C" void sys_math_vpi_register()//VPI DLLロード時CALLされ、$Functionが登録される。
{
s_vpi_systf_data tf_data;

tf_data.type = vpiSysFunc;//
tf_data.subtype =vpiIntFunc;//
tf_data.tfname = "$system";
tf_data.user_data = "$system";
tf_data.calltf = sys_system_calltf;
tf_data.compiletf = 0;
tf_data.sizetf = sys_systems_size_tf;//
vpi_register_systf(&tf_data);

tf_data.type = vpiSysFunc;//Define as function
tf_data.subtype =vpiIntFunc;//return by integer
tf_data.tfname = "$shell_execute";
tf_data.user_data = "$shell_execute";
tf_data.calltf = sys_shell_execute_calltf;
tf_data.compiletf = 0;
tf_data.sizetf = sys_systems_size_tf;//func なので返す
vpi_register_systf(&tf_data);

tf_data.type = vpiSysTask;//Task
tf_data.tfname = "$my_gui";
tf_data.user_data = "$my_gui";
tf_data.calltf = sys_my_gui_calltf;
tf_data.compiletf = 0;
vpi_register_systf(&tf_data);
}

なお、VPIソースとVisual C++プロジェクトファイルは、ご要求のあったお客さまのみURLをご案内しています。

=>
ごめんなさい。当面VCD以外のサポートは考えていません。

=>
コンパイラ版のフレームワークのプロトを製作、評価してみましたが、根本的な問題にぶち当たってしまいました。それは、少し規模が大きくなると耐え難いコンパイル時間が必要になってしまうことです。これでは、C++コンパイラは使えません、という結論に至りました。代替として、ダイレクトコンパイル方式とすることにしました。
C++トランスレータは、開発を中止しダイレクトコンパイル方式に方針変更しました。
145 I have a signal called [6:0] SyncSig

If I add it to my Waveform Viewer and double click on it I can get the
following

[6:0] SyncSig
SyncSig[6]
SyncSig[5]
SyncSig[4]
SyncSig[3]
SyncSig[2]
SyncSig[1]
SyncSig[0]

Nice.
Now I delete all but #6 - the one I want to really see and I have

SyncSig[6]

Now I click SAVE. Next time I run the simulation, it will not bring back this signal. It would be nice if I can save this single signal
since I don't want to see the others
T.B.D. This item is not trivial.
However, someone also had this kind of requests. Let me consider this
in detail. Anyway I will add this item to TODO list.
146 現状、プロジェクトファイル内にWaveForm Viewer の表示状態
(Signal 順序・属性の保存)を保存していると思われますが、
WaveForm Viewer を閉じた状態でプロジェクトの「Save」を行うと
WaveForm Viewer の表示状態は、全て失われてしまうように思います。

このWaveForm Viewerの表示状態は、Model Sim同様、Do ファイルで読み出し/保存が
できますが、マーカー位置までは保存されない為、通常は保存しておりませんでした。


本日、ALTERAのゲート遅延シミュレーションを行う際、コンパイルしている最中に
「Kill Compile」ボタンを押し、
「プロジェクト」→「設定」の「Compile Mode」を「RTL」から「Altera SDF」へ
変更し「Save」ボタンを押した後、「Reload & Go」を押した所、
WaveForm Viewerの状態が失われている事に気がつきました。

「Kill Compile」ボタンを押した際、WaveForm Viewerが表示されない状態で
「Save」ボタンを押し、プロジェクトを保存したのが原因と思われますが
つい、うっかりが考えられます。


2.
また、現状、複数のWaveForm Viewerを表示した状態で、「Save」ボタンで
プロジェクトの保存をした際、一つ目のWaveForm Viewerの表示状態しか
保存されないように思います。
複数のWaveForm Viewer表示時の画面レイアウトなども保存されるようになると
使いやすいように思います。

#この際も、上の状態と一緒で、2つめのWaveForm Viewerを表示しないで
#「Save」ボタンを押すと、2つめのWaveForm Viewerの状態が失われます。


3.
ここで、もう1点、現状ではプロジェクトが、現在いくつのWaveForm Viewerの状態を
保持しているか解らないと思います。
例えば、2つのWaveForm Viewerを立ち上げて、「Save」ボタンでプロジェクトを
保存し、Veritakを終了。
その後、保存したプロジェクトを起動し、シミュレーション開始。
(ここでは1つ目のWaveForm Viewerが表示されているのみで、2つ目のWaveForm Viewer
が表示されていない)
シミュレーション終了後、「ウィンドウ」→「新しいWaveForm Viewerを開く」を
行うと2つ目のWaveForm Viewerが表示されますが、
その事は「新しいWaveForm Viewerを開く」を行って、はじめて解ります。


4.
また、ここで2つ目のWaveForm Viewerを「最小化」ではなく「閉じてしまう」と
再度、2つ目のWaveForm Viewerを表示できる方法がありません。
(プロジェクトを再読込し、再シミュレーションすれば可能ですが...)
「新しいWaveForm Viewerを開く」を行うと、3つ目のWaveForm Viewerが
立ち上がります。



ここで、提案(あくまで提案)なのですが、1. 2. 3. 4の項目についてですが
プロジェクトに保存されているWaveForm Viewerの一覧を表示できる
チェックボックス付きのリスト画面のようなものを表示できるように
なればと思います。
そうなれば、チェックボックスで表示・非表示をユーザーが
ダイレクトに切り替えられます。
(WaveForm Viewerが表示されない状態で「Save」ボタンを押し、
プロジェクトを保存した場合でも、プロジェクトからWaveForm Viewerの状態は
失われない。
このWaveForm Viewerの一覧から、ユーザーが削除や追加、表示/非表示を
任意に行うような仕様)

欲を言えば、各WaveForm Viewerの名前をつけられるようになれば・・・という
気もいたします。


幸いにして、現状、Vritakはシミュレーション結果をメモり上に全波形
保持している仕様だと思いますので、フレキシブルな実装が可能と思われます。
3.11A 現状、WaveformViewは、UserIFの要でして、これについては、各ユーザの使い慣れた背景を起因とする、様々なご提案を頂いて、滞っている状態でございます。

ご提案の内容についても、滞っている提案を含めてある時期にまとめて検討、実装したいと思います。具体的な検討段階になりましたら、(4月以降の予定です。)そのときにご相談させていただきたいと思います。
=>実装しました。
147 .. simulation stopped because it thought my disk was full. "Disk reached
maximum capacity. Please stop the simulation"

However, I have 67GB available out of 93GB on my computer. At the bottom
of the VeritakWin screen it displays

Time=29451873 Disk = 394.0MB

I have not reached the end of my simulation and would appreciate being able to use more hard drive space
2.03(beta) Actually,there is a restriction of capacity of virtual memory.
Maybe around 1-2GB may be max of capacity. This is due to not saving physical disk but virtual memory in current
implementation of Veritak. I am designing another option as save-
physical disk.(Beta release will at the end of next week.)
With this option you can save compressed waveform as physical archive without restriction of capacity. (For example,10GB archive will address to 100GB VCD..) This option will enable save/restore all the state of simulator at the same time. It means Restart will begin at not Time zero but the Time at saved Time, with restored waveform views.
148 I saw the following message while loading a project

"Generating Trace File. This may take some minues..."

A better form of English would be

"Generating Trace File. This may take several minutes..."
2.01 Thank you for your help.
149 I get the following problem after loading in a large project

...
...
Too Big Design. Scope Tree View is disabled..Debug Functions are
disabled.C:\projects\V520\Simulations\V520_Full_Simulation\glbl.v(3)::glbl
...
...


I believe my problem is due to a 3rd party module I am using. Is there a
way to not record all the information inside the module since I believe
it requires a lot of my disk space. All I need is to be able to debug
the signals at the modules ports and not inside the 3rd party module.
Any suggestions would be appreciated.
T.B.D. You could use veritak command line instead of GUI.
See example.bat in Command folder as well as release_note.txt
for usage.
In your project folder, you should see veritak_command.txt,which
is generated file from GUI(Veritakwin.exe) to Simulation Engine(veritak2.exe) By arranging veritak_command.txt, it will be easy to make your batch file. As you know, you can use VCD for specific instance on specific term.

From 2.03 maximum design size  becomes 4x.
Try 2.03 Version.
150 Does VeritakWin support EDIF netlists? In my design I use a third party
DDR controller which is in an EDIF netlist format. Xilinx ISE supports
using this with no problems. I am trying to eliminate using ModelSim to
simulate my Xilinx designs.
Pending Sorry, I have no plan to support EDIF.
151 I have created and attached a sample project to help illustrate a problem I am having and to see if you may be able to help. In this simple example you will see that the simulation gets stuck in an infinite loop in the last always block after just a few simulation steps. This can easily be seen by uncommenting the $write statement and clicking on the GO button after loading. In a large design, if there is a problem, such as a infinite loop condition at simulation time 0, finding the problem can be quite difficult. Currently I have a large design with a similar problem. Instead of clicking the GO button I can use the STEP button, but it may take 1000's or 10,000's of steps before all my code is initialized or at the condition where the infinite loop occurs. My suggestion is to allow a number of STEPS instead of only a single step. Maybe right clicking on the STEP button could pop up a window which would allow a number to be specified. Then I could say STEP 2000 my first time, maybe 1000 the next, etc.. until I can find where the problem is. Another solution might be to show the current execution position when the PAUSE button is clicked (by displaying a pointer in a module the way STEP does). In my current design problem, after I click GO, the GO and the STEP buttons are grayed out and PAUSE never appears. I'm not sure why this happens, but an improved STEP feature I think would help me find it. 2.03
Done.
152 I saw the following spelling errors during a compile

Info: Parse Analysing...
Parse Analysis Finshed.
Parsed Error Deteced in Parse Process.


Should be:
Parse Error Detected in Parse Process
2.03 Thanks a lot!
153 Verilog&CPU初心者です。

一人で勉強しているためなかなか思うように進みません。
VerilogHDLのRTLで書かれた4bitか8bitのCPUが
ないか探しています。
CPUを勉強しようと考えています。

何かありましたら御教授お願いします。
None PC8001で有名なページですが、ご覧になられましたでしょうか?
http://www.geocities.jp/kwhr0/hard/index.html
オープンコアのなかでも述べていますが、4ビットはともかく、8ビットCPUよりは、32ビットMIPSの方がよほど簡単なのですが。上記ページにもその事が述べられています。

勉強は、使い方F.A.Q.61番も参考にしてください。

下記に簡単なCPUを書いてみました。参考にしてください。

http://japanese.sugawara-systems.com/opencores/VPI/cpu.htm

154 I would like to make a request for waveform colors. I setup a black
background and WaveForm1 = Purple, WaveForm2 = Red, H color = Green and
L color = Green With these settings I notice that multibit signals use
the WaveForm1 color and also the rising/falling edges of single bit
signals use WaveForm1. With multibit signals, it would be nice if
another color could be used if the multibit signal is unknown (X). This
way I could set it to Red and easily notice unknown signals just like I
can for single bit signals that use WaveForm2. Just something to think
about. OR, maybe you could add a "X color" since you have H, L, and Z
colors.

OR...
Here's another idea for the Color Setting Dialog that would give a lot
of control over colors for the waveforms - i.e. No WaveForm1 or WaveForm2

Vector 'H' color
Vector 'L' color
Vector Rising edge color
Vector Falling edge color
Vector 'X' color
Vector 'Z' color

Scalar 'H' color
Scalar 'L' color
Scalar Rising edge color
Scalar Falling edge color
Scalar 'X' color
Scalar 'Z' color

I hope I am not being a nuisance. I do like this simulator.
2.03 The idea of " X color" seems to be easy to implement. 
155 現在、VHDL→Verilogトランスレータを用いておりますが
下記の質問がございます。
ご多忙の折恐縮ですがご対応頂ければ幸いです。


1.
Verilog変換にあたり、文中のコメント文がすべて削除されてしまうようですが
これを削除しないようにすることは可能ですか?


2.
Verilog変換にあたり、信号名がすべて小文字になってしまうようですが
これを大文字・小文字をそのまま移行することは可能ですか?


3.
プロジェクトの編集画面に使いにくさを感じます。特にVHDLファイル指定について…
・左下のファイル名指定画面を直接テキスト入力できないでしょうか?
・あるいはプロジェクトファイルを直接テキストエディタで修正する
 ことはできないでしょうか?
・左下のファイル名指定画面で、ファイルの複数指定は不可能でしょうか?
 (DeleteやMove Up/Downなど)

4.また、将来的にトランスレータのSystemVerilogのご対応もお考えのようですがそれはいつごろのご予定でしょうか?(ただ世の中のEDAツールのサポートがまだまだという状況ですのでさっそくSVに移行するかは未定ですが)
2.04/T.B.D. すみません。トランスレータは、
ここ一年以上更新しておりませんでした。今年度も、根源に係わる
改善については、予定しておりません。


1.申し訳ありません。これは、技術的に難しいです。

2.申し訳ありません。これは現在の構造上、難しいと思います。

3 プロジェクト編集画面にEXボタンとINボタンを追加しました。
EXボタンで"veritak_src_files.txt" を出力しますので、編集しINボタンで取り込んでください。

4 来年以降になります。Veritak本体は、SystemVerilogのサブセット(アサーション等SKIPしたサブセット)の実装を本年6月以降に順次進めて年末にリリースしたいと思っています。その後、トランスレータもSYSTEM VERILOGを出力するように対応したいと思います。(一から書き直しで、GPLオープンソースになると思います。)その際今回実現できなかったご要望案件も実装したいと思います。
156 I had opened Veripad by selecting "Verilog Project", then "Edit Verilog Project" then I highlighted the file and opened it in Veripad by pressing the "Editor" button. Opening the file in Veripad in this way doesn't allow me to set a breakpoint in Veripad. Should it? What is the difference? T.B.D. I confirmed that breakpoint could not be set per way you mentioned.
I should improve that in future versions. Difference comes from messy FilePath on Verilog project. You will notice the Filepath difference on Top Bar on Veripad in different opening ways. It is rather difficult to handle this dialog. So,How about making another dialog, such as "file list view" to Tree view?


Anyway,Thank you for your indication.
157 インストールと起動まで確認しました.

・・・のですが,一つ疑問がありまして.

AdministratorでいったんCドライブにインストールしたのちログオフし,
ユーザ名teramaeで再度ログインしたのですが,[スタート]メニューにもデスクトッ
プにも,veritakが現れません.

私のインストールのしかたに問題があるのでしょうか?
2.06 2.06よりインストーラの設定を共通項目に設定しました。
158 I saw your description of YACC on opencores, and noticed that you had
written a VHDL to VERILOG trasnlator. Is this translator available to public under GPL also?
T.B.D. YACC is independent design using Verilog HDL from the scratch.
Plasma is translated from VHDL to Verilog almost automatically.

Sorry, it is currently shareware. However, I am planning to change it GPLed open source next year regarding the translator. Target will be VHDL to SystemVerilog.
159 Thnaks for your info, and congretulation on the success for trasnlating
PRISM.Had you tried translating LEON2 before?
I did find your shareware-version of the translator, Veritakwin204A, and
give it a try.
I tried to trasnlate the LEON2 design from VHDL to VERILOG, but failed..
2007 Thank you for feedback of translator.
I had tried to translate LEON2, but I gave up.
LEON2 is using structure a a lot as you know. This is not easy work to translate to Verilog-2001. Complete structure supports are from SystemVerilog. That's why I am not focusing current translator this year.
After veritak verilog simulator implements subset of SystemVerilog (maybe next year), I will work on the translator.
160 ・RTLとGATEの非同期リセット処理

RTL記述での非同期リセット記述は以下のように(適当に書いてますが)
非同期リセットRESB自体もエッジ記述になると思うのですが、
純粋に記述のみ考えると、RTLSimの場合はRESBの立ち下がりイベントが発生しないと初期化(Q<=1'b1)されないと思うのですが、

always(posedge CLK or negedge RESB)
begin
if(RESB==1'b0)
begin
Q <=1'b1;
end
else if

end

例えば、Sim開始時からずっとRESB==0の場合は、
RTLSimの場合は 、初期値(Q<=1'b1)になるRESB↓イベントが発生しない?と思いますが、
GATESimの場合は、当然非同期リセットの為(この記述だとSetになるかと思いますが)Sim開始時に初期化(Q<=1'b1)されますよね。

このようなRTLSimのSim開始時リセットイベント条件はVerilogでは規定されているのでしょうか?
VerilogSimによって自由に処理を任せられるのでしょうか?(Simにより動作が異なる?)
それともGATE動作と同様になるようにイベント条件でなくともそのような場合は強制的に初期化するような規定があるのでしょうか
- 次のような記述をしてみました。
module edge_test;
reg CLK=0;//4
reg RESB=0;//1
reg Q;
always #10 CLK=~CLK;//3

always@(posedge CLK , negedge RESB)//2
begin
if(RESB==1'b0)//5
begin
Q <=1'b1;
end


end



endmodule

この場合、スレッドは、(1-4)の4個あります。VerilogHDLのLRM上は、これをどの順番から実行してもよいことになっております。
確かに
 1=>2 という順番でスレッドが実行されるすると2のセンスする文では、すでにRESB=0ですから、エッジセンスがされず、TIME=0では、Qは、1'bxのままです。
 
しかしながら、多分、全てのVerilog Simulatorは、alwaysのエッジセンスの文を先に実行します。これは、defact standard のXLの動きに合わせるという意味が大きいと思います。(その他、組み合わせ回路の初期化がうまくできない問題もありますが。)従って、
2=>1
という順番になります。ここで2のときは、RESB=1'bxです。その後、RESB=0;が実行されると 1'bx->1'b0という遷移を1の文は、センスしますから
4/3 =>5に来ます
従い、TIME=0でQ<=1が実行されます。この辺は、VeritakでSTEP動作をさせてツールチップを見ると、上述の動きがそのまま確かめられます。

ゲートレベルかRTLかという区別は、Verilog シミュレータ内ではありません。
ゲートレベルが上のように記述されていれば、同じような動作をします。

ただし、SystemVerilogでは、インラインの記述は、TIME=0の前に値が確定していることになっています。従ってSystemVerilog の場合には、
reg RESB;
initial RESB=0;
と記述しないと期待通りには行きません。
難しいですね。
161 ・VHDLを使った事がないので素朴な疑問ですが
Verilogだと1,0,Z,Xの4値(実際には信号強度も付加できますよね?)ですが、VHDLだと8値あると言うことですが、どのような値がありどういう時に用いるのでしょうか?
- 私も、VHDL使いではありませんので、良く分かりません。良く使われるIEEE STD_LOGICのライブラリが9値になっているだけで言語仕様上の規定は何値であってもよい、逆に、Verilogと同じように4値のライブラリを定義をすることもできる筈です。
(9値だとXの他に初期化されていないUnknownなどの状態も定義できるのがよいところでしょうか?)9値だと4ビットになりますから、Verilogの2ビットに比べ2倍のメモリが必要になってしまいます。関係ありませんが、スレッド実行順の曖昧な規定が、逆にシミュレータ内部でのキャッシュヒットの並び替えを自由にさせます。
このように、Verilog HDLは、ユーザの使い勝手を少し制限させていただいて、高速化に腐心した言語と言えるのではないでしょうか?
162 ・FAQの英語の質疑応答部分はできれば日本語訳もあると助かります。
英語全然わからないため、技術英語は翻訳ソフトではなかなかうまく翻訳されず困っています(まあ何となくは分かるのですが)。
簡単な要約だけでも日本で添えといていただけると助かります。
まあ開発優先していただいた方が良いので面倒で時間がかかりそうなら結構ですが。
- 私も英語はできるとは言えませんし拙文は、恥ずかしい限りです。
ただ、お客様は(お分かりのように)、必ずしもNativeばかりではありませんし、そのような状況下でもコミュニケーションはできるという例、ということで大目に見ていただきたいです。
基本的には、お名前や会社名等を伏せる編集をするだけでそのまま載せています。込み入った案件は、邦訳要約を載せるようにします。
163 Q1
チュートリアルにもありますが、VeritakーLite CQ版ですが、
トランジスタ技術4月号に入っているのでしょうか?

#付録が付く号は、大人買いされる人が多く、
#売り切れで入手できずにいます(^-^;)



Q2さて本題ですが、

http://japanese.sugawara-systems.com/faqs.htm

のFAQ 160についてですが、興味深く読ませていただきました。

1点ですが

2=>1
という順番になります。ここで2のときは、RESB=1'bxです。
その後、RESB=1;が実行されると 1'bx->1'b0という遷移を1の文は、
センスしますから

の解説で、
「RESB=1;が実行されると」

「RESB=0;が実行されると」
の間違いではないでしょうか?




Q3もう1点、こちらはしょうもない不具合連絡です。


シミュレーション状態をDISKへ書き出す機能が実装されましたが、
「Save to Physical Disk」をOFFの状態のプロジェクトを開き、
プロジェクトがロードされている状態で「Save to Physical Disk」をONにしようと
すると、出来ない趣旨のメッセージが表示されますが
「本設定の変更は、プロジェクトがロードされてときのみ可能です。。」
と、日本語が少しおかしいと思います。


Q4また、チュートリアル内の
http://japanese.sugawara-systems.com/tutorial/tutorial/save_restore.htm

の記述で

プロジェクト設定 Save to Physical Disk でオンしますが、
プロジェクトがロードされていないときのみオンオフを切り替えることが違います。
一つの動作モードと捉えてください。

とありますが「オンオフを切り替えることが違います。」の表現も同様です。
207 A1
Lite版は、トラ技5月号(2006)に収録されています。


A2
その通りです。修正しました。

A3
「オンオフを切り替えることができます。」
に修正しました。

A4
「本設定の変更は、プロジェクトがロードされていないときのみ可能です。」
に修正しました。

164 私の会社では、VHDLで設計を行うことが
ルールとなっています。
ですが、VHDLでは検証環境の構築が非常に面倒であるため
私は、Veritakを使用してRTL検証を行っています。

そこで、言語変換の際の毎回のクリック作業を減らせると
作業効率が非常にあがります。
もし可能であれば方法を教えていただければと思います。
また、現状の不可能であれば、実装して頂けると
助かります。

「example.bat」に言語変換のコマンドを記述することは
不可能ですか?
T.B.D. 実はFAQ155でコマンドラインから起動
することを検討したのですが、簡単にはできずに今日にいたっています。

GUI経由でコマンドスクリプトを解析し送り直す方が簡単な位です。来年度までお待ちいただければ、全面的に書き直しでGPLオープンソースにしたコマンドラインになります。

次善の策としてGUIにコマンドラインファイルを送るみたいな仕様の実装でもよろしいでしょうか?それでしたら、5月中にはできるとは思います。

=>
GUIがコマンドファイルを読みこんでなにかをするという仕様を考えたいと思います。問題は、バッチ的に、このシミュレーションが終わったら、次は自動的に別なシミュレーションということが出来ません。GUIなので、終わったかどうかは、人が判断してなにかメニューを押さないといけません。
現状トランスレータは、VERITAKと共有メモリを介してコマンドの受け渡し、出力は、DOSコンソールではなくVERITAKコンソール専用になってしまっています。この部分のIFは、正直あまりいじりたくありません。そういう訳ですみません上記のコマンドスクリプト版を待っていただきたいです。ご要求を満たすコマンドライン版は、来年になります。

165 Reloadした時も、run lengthが有効になるようにしてほしいと思います。
バージョンはV2.06Aです。

run lengthメニューのenableにチェックする。
Reloadすると、プルダウンメニュー「シミュレーション」のrun lengthのチェックが外れている。
もう一度run length のメニューを開くと、enableはチェックされている。
Reload毎にrun length のメニューを開かないと有効にならない。
これを、enableチェック中はRelodしても有効になるようにして頂きたいのですが。

=>
実装確認しました。

ちょっと細かい事ですが、Reload直後、メニュー「シミュレーション」を開いたときの

「チェックマーク」が消えています。気になったので、ご連絡します。
2.09
2.10
全くご指摘の通りです。できれば、次のリリースで改善したいと思います。

=>2.10にて修正します。
166 We have purchased the licence for u r veritak. under that we are unable to compile /simulate/etc., through this tool and also now here in detail
description is there to create the project and add the files and to compile then all we are facing many problems and we are unable to use it for our moderately big project in our company so in this regard if it is possible try to provide online support for the same if possible by a call or through any instant messanger available by skype or yahoo messanger I hope u hereby acknowledge the same and provide the assistance for the same through phone or instant messanger

結構でかいプロジェクトで、Veritakのプロジェクトを生成できなくて困っています。オンラインサポートはないのですか?メッセンジャが使えればよいのですが。
- I am afraid I can not have on-line support. Messenger might come with some virus.
My development platform must be clean from all possibility of virus.

If you have many problems,let's resolve one by one by your priority by E-mail.

167 SUNのUltraSPARC-T1 が公開されましたね。Pentium級のCPUソースが公開されるというのも凄い話ですが、残念なことにVeritakでは、走りません。なんとか走らせることは、できないでしょうか? T.B.D. オープンソースH/W、最大のトピックですね。
300k以上のソースですが、古典的な1995ベースで書かれています。規模的には、なんら問題ないのですが、古いPLIを使ってC/C++を呼び出している部分が障害になっています。これについては、使っているPLIの実装の優先度を上げて対応しようと思います。
日程については、別途報告します。
168 ...ViewerとしてのVeritakの機能を使いたくてVPIを利用しようと
思っていました。そうするといちいちVCDファイルを作らなくても直接Veritak
で表示できて便利だと思ったからです。

あとは長時間かかるシミュレーションの終了や途中経過をメールで送ったり
することができると便利かもしれないですね。

VPIのサンプルでは
always @(negedge clk) begin
$my_gui(start,reset,counter_set,counter);
end
となっているところで、単純にVPIアプリケーション側からデータを
引き渡す形にしておけば良いかなと思いましたがだめでしょうか。
T.B.D. F.AQ.129に関連していますね。

他プロセスと、いかにして同期を取るかというのは、アプリケーションを書く上で本質的な問題ですね。別プロセスでのVPIユーザが悩まれるのは、正にその点だと思います。

下図は、ブロック図と説明です。

ユーザアプリ<=DLL=>VPI-Veritak
   関数CALL−>(FIFO) <−関数CALL

ユーザアプリ、Veritak共DLLをロードします。DLLは、お互いのプロセスで、共通ですが、プロセスが異なるために、別なOBJになるはずです。そこで、DLL内では、一つの共有ファイルを所有し同期を取ります。各々のIFは、関数CALLのみとします。DLL内で共有ファイルアクセス(FIFO)はクローズし、ユーザからは隠蔽します。(勿論、ソースをいじるのは、自由です。)

サンプルとしてDLLを書いてみました。 VPIサポートページをご参照ください。

フロントエンドを書けば、F.A.Q.129も対応できそうですね。(別解として、VCDに変換する手もありますが、このDLLを使うと、VCDへの変換は不要になるので、楽できると思います。)

=>
ユーザ様のページです。
データロガーや、ロジアナの波形をViewerで表示したりVCDに変換したりすることができます
169 ..Veritak のキャプチャを使ってもよいでしょうか? - 書籍、雑誌記事、Web,等で、Veritakのキャプチャは、ご自由にお使いください。連絡は不要です。
170 ダイレクトコンパイル版、楽しみにしております。
実は、期待した性能が出るのか心配しております(^-^;
また実装面ではソフト屋さん的な視点からですと

SystemVerilogパーサ
Dual Processor対応
64ビット

といった拡張を考える上で、ダイレクトコンパイルを考えると
非常に複雑なものとなりそうですね。

先に考えられていたC++コンパイラの利用を考えれば、
このあたりの作業はコンパイラに一任できる部分もありそうです。
そして、何より高度な最適化の恩恵を受けられます。
最近のコンパイラは本当に優秀で、下手なアセンブラコードはC言語記述に
負けてしまいます。

=>
シミュレータを実装する上で、速度面でどこがボトルネックになっているので
しょうかね。
メモリ効率との兼ね合いもあり、最適化というのはなかなか難しいモノですよね。

私は、画像処理プログラミングをする際、SIMD系の命令でパラレル演算処理(最近は、VC++ .NETではSIMDもコンパイラの提供するマクロで記述できるのでアセンブラを意識しなくても実装できます)
をさせる事が多いです。メモリセグメントの境界を意識する必要はありますが、大容量のメモリコピー等も結構速くなります。
CPU依存の実装になりますので、環境が限定される弱点はありますが...。
- その通りなのですが、デザイン規模が大きくなると、やはりコンパイル時間の問題が大きいです。コンパイルしている最中に旧インタープリタ版のシミュレーションが終わっている、という笑えない事態もあり得るので、開発中止としました。

HDLシミュレータの場合は、高速化手法として、
  • ダイレクトコンパイル- Native Code による最適化
  • Cycle Base手法によるRTLの高速化
  • 複数スレッド(マルチコア対応)による高速化
があります。業界最高峰のNC/VCSというシミュレータでは、すでに上の二つは、クリアしていますが、Veritakダイレクトコンパイル版では、未だ、最初の段階です。

現在、少しづつ評価をしながら、実装をしている最中です。

=>貴重な情報提供ありがとうございます。速度改善の参考になります。
171  1.Veritakで、.vcd ファイルを出力する事は可能なのでしょうか? - initial begin
$dumpfile("vcd.vcd");
$dumpvars;
end

で全ノードの出力指示になります。ただし、task/function は、出力
していません。例としては、sample フォルダと、regression_test フォルダにありますので、vcdでGrepされればよろしいかと、思います。SCOPE指定や、オンオフ指定もできます。

ただし、全NODEをダンプするなら、Veritak標準のWaveformの方が圧倒的に速いです。VCDは、部分的ダンプに使われたらよろしいかと思います。
172 RTLシミュレーションと、ポストレイアウト・ゲートシミュレーション(遅延含)
結果との間に、回路動作的な差異がないかどうか、検証・確認する事が
あると思います。
現状、私は実装経験が浅く、比較的小規模な記述の検証しか行っておらず
二つのシミュレーション結果を人海戦術的に「自分の目」で見ております。
ある意味で人間が確認する事は「正確」なのだと思いますが、 比較的大規模となりますと、テストパターンも増加し、非常に困難な作業となると思われます。

このような作業は、どのように行われているのでしょうか?
→ そのような検証ツールがあるのでしょうか。
機械的に行えないか・・・とも考えてしまいます。

=>
例えば、簡単な順序回路の場合、クロックの立ち上がり・下がりのエッジで
フリップフロップのラッチ状態が確定・遷移すると思いますが、
任意の信号に対して、次のクロックまでの間にどう状態が変わったのかを
チェックしていき、

01010101
00010001

のような01値でシミュレーション結果をファイルへ出力できれば、RTLとゲート シミュレーション間での差異を、機械的にコンペアできるのでは・・・とも
考えてしまいます。

当然、下記 4bitのカウンタのように 1 から 2へ 値が変化する際には

0000 0000 : 0
0000 0001 : 1
0000 0011 : 3 ← 遷移過程で一時的に変化途中の値が出力される。
0000 0010 : 2

3といった出力がゲートシミュレーションではされるわけで、この辺りを
考慮する必要はあるように思いますが。

- 大規模ASICでは、検証パターン数の増大が問題になっていまして、そのようなNEEDS用にツールは存在します。[フォーマル検証]をキーワードに検索すれば、よろしいかと思います。

現時点でも多分そうだと思いますが、ご指摘の事項は、ASICサインオフの問題と等価です。ASICサインオフは、パターン承認になります。RTLとゲートで行ってパターンを承認する訳です。IFのパターンをダンプします。

このとき、パターンをストローブするのは、実際に動く周波数CLKで動かし、次のCLKの直前をサンプルします。これで、動作周波数でのパターンを保証する訳です。
`ifdef HDL_DUMP
always @(posedge SYSCLK or negedge SYSCLK) begin
#(`CYCLE-`SETUP)
work_reg=output_vector;
$fdisplay(fi,"%b",input_vector);
$fdisplay(fo,"%b",output_vector);
end


RTLで、Vectorを保存しておいて、ゲートレベルでは、それをコンペアします。
`ifdef HDL_COMPARE


initial
begin
time_up=0;
fixl=$fopen("xx.xli");
foxl=$fopen("xx.xlo");
#(`FINISH_TIME*`CYCLE)
$fclose(fixl);
$fclose(foxl);
time_up=1;
$readmemb("xx.dpi",INPUT_MEM);
$readmemb("xx.dpo",OUTPUT_MEM);
$readmemb("xx.xli",INPUT_MEM_XL);
$readmemb("xx.xlo",OUTPUT_MEM_XL);
address_integer=0;
$display("Compare Start");
repeat( `FINISH_TIME) begin
if ( INPUT_MEM[address_integer] !== INPUT_MEM_XL[address_integer] )

$display("INPUT COMPARE ERROR time=%d XL:%h Veritak:%h",address_integer,INPUT_MEM_XL[address_integer], INPUT_MEM[address_integer]);


if ( OUTPUT_MEM[address_integer] !== OUTPUT_MEM_XL[address_integer] ) begin
$display("OUTUT COMPARE ERROR time=%d XL:%h Veritak:%h",address_integer,OUTPUT_MEM_XL[address_integer], OUTPUT_MEM[address_integer]);

RTLのシミュレータ(たとえばVeritak)とASIC屋さんがもっているサインオフシミュレータ(たとえばXL)というのは、違うのが普通です。シミュレータによる相違がないことも同時に検証していることになります。

波形での確認ということは、デバッグの段階です。検証というのは、テストベンチのなかで、OK/NGを判断する部分を持っていないといけません。結果をコンソールにだすのがよろしいかと思います。

Opencoresのプロが書いたコアを見ていただくと、ちょっといじくると、すぐXX Errorとコンソールにだされます。常に結果の妥当性をチェックしているベンチになっているということです。

なお、ゲートレベル最初の数パターンは、違うのが普通(Veritakに限らず)ですので、支障ない範囲でドントケア(x)指定します。

なお、最近はやりのVerification Methologyというのは、この辺の手法の話ですが、昔からあった話です。

=>
考え方は、正しいです。ただし遷移の途中結果の検証は、意味を持ちません。(多分シミュレータによっても違いがあります。)動作保証周波数でのストロープポイントが、必要かつ十分です。

173 先日、ModelSimのシミュレーション結果をVCD保存し、
PC上のVeritakで確認をしておりました。


本来、シミュレータとしてのVeritakですが、強力なVCD Viewerとしても
利用できそうで、同じ操作系で扱える為、嬉しく思っています。

1点、VCD Viewerとして利用した場合に、機能提案がございます。
現在のVeritakの実装では、プロジェクトとして
ToolTipの表示状態や、Zoom in/outをマウスカーソルがある場所で
行う等のWaveForm Viewerの動作モードや、波形の配色等の
情報を保存していると思います。

DRAG&DROPで動作させVCD Viewerとして利用した場合、これらの設定が
反映されない(プロジェクトをリロードできない為)、
もしくは毎回設定する必要があるように思います。

これらの設定をVCD Viewer動作モードの設定として保存する事が
できれば、嬉しく思いました。


上記要望は、本来のVeritakとしての機能ではなく、
おまけ的要素の機能とは思っておりますので、
あくまでユーザー視点からの機能提案としてご連絡差し上げます。



WaveForm Viewerの動作モードや、波形の配色等は
本来はシミュレータの動作モードというより、Viewerの動作モードのように
感じます。
他シミュレータのように、シミュレータ機能部とViewer機能部の動作設定が
明確に分かれているような実装ですと、このような事は容易に行えると思いますが、
いつか機能整理をされる機会があれば、
シミュレーション動作モードの設定項目と
WaveForm Viewerの動作モード(波形の配色等を含む)の動作モードを
別々に保存できるようになれば、ユーザー側で多様な運用ができるように
なると感じました。
T.B.D. ご提案の通り、機能整理をする機会に実装したいと思います。

余談ですが、ModelsimのVCDは、なぜかwire信号のvectorがバラバラになってしまいます。そのようなときに、Viewerのグループ化機能をお使いになるとよろしいかと思います。
174 テストベンチで
while(TmpWork != RdData);

テストベンチの実行を期待値以外のときは
止めるつもりのこの記述に対して
Parse Error.yy=syntax error
というエラーが出ます。解決策は?
このような記述が大量にあるので
option設定などで対策可であれば良いのですが。

例:MODELSIMではエラーとなりませんでした。


また別の質問ですが、RTLコードカバレッジ
機能について対応していますでしょうか。
2.10A ご指摘の構文は、Verilog-2001 LRM では、INVALIDな記述になりますが、SystemVerilog(IEEE STD1800-2005)では、VALID な記述です。次のVersionよりパーサを変更し対応します。4月12日頃の予定です。
 ところで、この構文を許してしまうと、シミュレータは無限ループでハングしてしまうので、無限ループに入った時点で、(NULL ステートメントに来たときは、)$stop処理とし、Veritpadを呼び出す実装としました。

コードカバレッジ機能は装備しておりません。SystemVerilogの対応は、今年度末から、基本構文の実装を開始し、そのあとにアサーションやカバレッジの予定になっております。早くても来年末以降になってしまいます。
175 あるVHDLに対しトランスレータを実行したところ、以下のような記述が現れました。
----------------------------------------------------------
=======================================
変換前VHDL記述
=======================================
process(CLK1)
begin
if (CLK1'event and CLK1 = '1') then
if ( (AAA = '1') or
((BBB = '1') and (CCC = '0')) or
(((DDD = '1') or (EEE = '1')) and (FFF = '1') and (GGG(4) = '0'))
) then
ZZZ <= '1';
else
ZZZ <= '0';
end if;
end if;
end process;
----------------------------------------------------------
=======================================
変換後Verilog記述
=======================================
always @ (posedge clk1 ) begin // <= 1st "begin"
begin // <= 2nd "begin"
if ((((aaa === 1'b1) | ((bbb === 1'b1) & (ccc === 1'b0))) |
((((ddd === 1'b1) | (eee === 1'b1)) & (fff === 1'b1)) & (ggg[4] === 1'b0))))
zzz <= 1'b1;

else
zzz <= 1'b0;

end // <= corresponding to 2nd "begin"

end //always // <= corresponding to 1st "begin"
----------------------------------------------------------


そこで質問2点あります。


質問1
変換結果をみると、begin-endが2重になってしまっています。
この結果をSynopsys社のFormalityに入力するとErrorとなってしまい
等価検証という観点で不都合となっています。
(暫定的にbegin-endの1組を消去するとFormality入力OKです)

ただ、全部のF/F記述について2重になるわけでもなさそうです。
同じVHDL記述でも、1重になったり2重になったりしています。
(ファイルが大きいと2重になる????)

本件、ご対処の予定はありますか?



質問2
変換結果では、VHDLでの"="相当の記述が"==="となっています。
Verilog仕様上問題ないようですが、同じくFormalityではErrorとなってしまいます。
(暫定的に"==="を"=="に書き直すとOKになります)

"==="でなく"=="に変換することは可能でしょうか?




いずれの質問も「それはFormalityの仕様がおかしい」といわれれば
それまでですが、ご見解を頂ければ幸いです。
2.11A Q1. トライしてみますが、完全には、難しいです。
Q2. 対応可能です。
176 I have this message after 310 mega Bytes disk load.




is it normal ? I have still 42 Go in my disk...
- Yes, if you are using default project setting,400MB.
Please change 400MB on project setting.
(See tutorial section 2.10)
177 I have attached a waveform picture and my project file of a simulation
in which I get no color for some of the signals. I went through each of
the colors and changed them but couldn't get anything to appear. There
is a faint blue for those signals, but very difficult to see. I don't
know why. Maybe because I copied the project file from an older version
of Veritak and then modified it? I noticed you have H, L, Z colors but
no X color in the Color Setting Dialog. Will you be adding this in the
future? I am using version 2.09A
2.11A Let me check it.

=>
Actually I implemented X color on the dialog just after you suggested before. However I noticed English version does not have x color just now. This must be my failure. I will implement it next release.
178
1.
以下の非同期リセット付きF/Fを期待しているVHDL記述に対する変換結果が、
ラッチのようなものになってしまいます。
=======================================
(1)変換前VHDL記述
=======================================
A_process:
process(BCLK,RST)
begin
        if(RST = '1')then
                a <= '0';
        else
                if(BCLK'event and (BCLK = '1'))then
                        a <= nst;
                else
                        NULL ;
                end if ;
        end if ;
end process ;
=======================================
(2)変換後Verilog記述(一部空白行削除)
=======================================
   always @ (bclk or rst ) begin
           if ((rst === 1'b1)) 
               a <= 1'b0;
           else 
               begin 
                   if ((1 & (bclk === 1'b1))) 
                       a <= nst;
                   else 
                       ;//null
               end 
   end //always
=======================================
(3)正しいと思われるVerilog記述
=======================================
   always @ (posedge bclk or posedge rst ) begin
           if ((rst === 1'b1)) 
               a <= 1'b0;
           else 
                       a <= nst;
           end 
   end //always

ただ、(1)を下記(4)の通りVHDL記述を変更してみたところ、上記の正しいと
思われるVerilog記述となるようです。
=======================================
(4)変換前VHDL記述(修正)
=======================================
A_process:
process(BCLK,RST)
begin
        if(RST = '1')then
                a <= '0';
        elsif(BCLK'event and (BCLK = '1'))then
                a <= nst;
        else
                NULL ;
        end if ;
end process ;
このように変更することはやぶさかでないのですが
この修正前の記述方法が多いために変更が煩雑です。
上記(1)のような記述でも正しく変換できるようにすることは可能でしょうか?

2.
同じく、以下の非同期リセット付きF/Fを期待しているVHDL記述に対する変換結果が、
変な変換結果になっています。これは何とかならないでしょうか?
=======================================
(1)変換前VHDL記述
=======================================
process (BCK, PRST, b)
begin
        if (PRST = '1'or b = '1') then
                a(5 downto 1) <= "00000" ;
        elsif (BCK'event and BCK = '1') then
                a(5 downto 1) <= Ba(5 downto 1) ;
        end if ;
end process ;
=======================================
(2)変換後Verilog記述(一部空白行削除)
=======================================
    reg bck__old;
reg prst__old;
reg b__old;
always @ (bck or prst or b ) begin
        if (((prst === 1'b1) | (b === 1'b1))) 
                a[5:1] <= 5'b00000;
        else if ((1 & (bck === 1'b1))) 
                a[5:1] <= ba[5:1];
bck__old <=bck;
prst__old <=prst;
b__old <=b;
    end //always
=======================================
(3)正しいと思われるVerilog記述
=======================================
always @ (posedge bck or posedge prst or posedge b ) begin
        if (((prst === 1'b1) | (b === 1'b1))) 
                a[5:1] <= 5'b00000;
        else  
                a[5:1] <= ba[5:1];
   end //always

T.B.D. 論理的に深い部分で、難しいです。一週間程度検討してみます。変換では、最初に合成可能かどうかの判断を行っていまして、合成不能と判断したような場合に(2)のような変換になってしまいます。
=>
検討しました。2.の記述は、対応可能です。1.については、解析ルーチンの大幅な書き換えが必要であり、Pendingとさせてください。
179 半角スペースを含むパスから
VCDファイル及びVeritakプロジェクトファイルを
VeritakWin.exe 及び ショートカットアイコン へDRAG&DROP動作すると、
開けないないようです。

例:
C:\1 1\
というフォルダを作成し、その中にVCDファイル、プロジェクトファイルを配置し
DRAG&DROP動作を行う。
2.11A 2.08以降、問題のようです。次のリリースで修正します。
180 Right now i am working on gate level simulation for some small examples
like counter.i am unable to do gate level simulatiof for this .its giving like
this..

Starting Verilog Build Process----------
Starting Verilog PreProcessor...
counter5test.v(1):: Reading
counter5.vo(1):: Reading
Verilog Preprocessing Finished.
Starting Verilog Compile Process...
D:\sopctestexpmles\counter\counter5test.v(2)::
Info: Parse Analysing...
D:\sopctestexpmles\counter\counter5.vo(31)::
Info: Parse Analysing...
Parse Analysis Finshed.
Loading vpi
Generating Scope
Evaluating parameter..
Evaluating generate...
Evaluating reg/wire...
Evaluating module...
D:\sopctestexpmles\counter\counter5.vo(70)::Error: rst~I could not find the
module.
D:\sopctestexpmles\counter\counter5.vo(107)::Error: i~I could not find the
module.
D:\sopctestexpmles\counter\counter5.vo(144)::Error: next_state.s1~10_I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(180)::Error: present_state.s1~I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(216)::Error: next_state.s2~3_I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(252)::Error: present_state.s2~I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(288)::Error: next_state.s5~36_I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(324)::Error: present_state.s5~I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(360)::Error: next_state.s4~22_I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(396)::Error: present_state.s4~I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(432)::Error: next_state.s5~35_I
could not
find the module.
finished with incompelte compilation
D:\sopctestexpmles\counter\counter5.vo(468)::Error: next_state.s3~13_I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(504)::Error: present_state.s3~I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(540)::Error: next_state.s0~15_I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(576)::Error: present_state.s0~I
could not
find the module.
D:\sopctestexpmles\counter\counter5.vo(612)::Error: Select~4_I could not find
the module.
D:\sopctestexpmles\counter\counter5.vo(648)::Error: clk~I could not find the
module.
D:\sopctestexpmles\counter\counter5.vo(685)::Error: o~I could not find the
module.
Error Detected in Elaboration Process.



but same thing i did in modelsim. there its not giving error for counter.vo
file its complilig there.why here showimg errors like above.i am here
attaching
those all files(counter.vo,counter.sdo,counter test,stratix library files)
pls make sure to work .i and tel me .i follwed as per u r exmple for
gate level
simulation in tutorail.
- Please refer to Tutorial for settings of the project.
One note is to add timescale on the test bench module.
Without it, #50 means 50ps.
Another note is to add primitive library to the project.
Since you are using EP1S10B672C6,add  "stratix_atoms.v" in  your project.
BTW,I'll recommend using ModelSim regarding gate simulation if you have ModelSim.Because Veritak's gate simulation is slow.
The attached is the project I've just made.
181
早速最新のshow.exeを試してみたのですが、以下の記述で特にErrorメッセージもなく
「トランスレートできませんでした」とはじかれてしまいました。
=======================================
(1)変換前VHDL記述
=======================================
process (a, RRCLKI, b, PRST)
begin
    if ((a='0' and b = '0') or (PRST = '1' and b = '1')) then
        H <= '0' ;
    elsif (RRCLKI'event and RRCLKI = '1') then
        if (c='1' and b='0') then
              H <= '1' ;
        elsif (b='1') then
              H <= DE(0);
        end if ;
    end if ;
end process ;

おそらく、bという信号のセンシティビティリストについて
posedgeとnegedge両方に対応しなければならないためかなと推測します。

複雑であれば無理にとは申しませんが、できればご対応いただければと思います。
=>..
・派生開発が多いため、Verilogで`ifdef等によりファイル管理を容易にする
・将来的にSystemVerilogに移行する(主にSVAを使用したいため)
・他社IPがVerilogで供給されることが多く、VHDL/Verilog混在シミュレータを
 使わなくてもすむようにする

他社の変換ツールは、調査した限りでは無料でもいろいろ制限があったり、デモ版ライセンスを使った結果を見ると比較的良好な変換を行ってくれるものでもとても高価(100万円超え)だったり日本で購入できなかったりしています。
そこで現在Veritakを中心として変換作業を進めている次第です。

Veritakはあくまでシミュレータであり、Verilog変換はおまけ機能、という認識でいます。おそらく菅原さんも同様のお考えでしょう。また、とても安価なツールです。よって、あまり変換に関して多くを望んでおりません。ただ、せっかくのご縁のあるツールですので問題点をフィードバックさせていただいてよりよいツールになっていただければ幸いと思っています。
2.11A 改善後の変換後結果です。ご覧のように、ちょっと無理がありますが、これでよろしければ、アップいたします。

always @ (negedge a or posedge rrclki or posedge b or negedge b or posedge prst ) begin
if ((((a == 1'b0) & (b == 1'b0)) | ((prst == 1'b1) & (b == 1'b1))))
h <= 1'b0;

else

if (((c == 1'b1) & (b == 1'b0)))
h <= 1'b1;

else if ((b == 1'b1))
h <= de[0];





end// always

=>ところで、トランスレータに関しては、トラ技5月号で制限なく収録されております。(その意味では、殆どフリーに近いです。)
どのような用途があるのでしょうか?差し支えなければお教えください。

=>ありがとうございます。背景が良くわかりました。トランスレータは、正直、SystemVerilogにならないと、変換不能の部分も多く、F.A.Q.159のように考えています。構造体や、パッケージ、FUNCTION等、(現状の2001では、generateを使えるので少しは、増しなのですが、)変換自体が難しいです。(VHDLの書き方一つなのですが。)いたらないところが、多々あるツールでは、ありますが、今後も、最大限、改善したいと思います。
182 トランジスタ技術5月号拝読しました。
菅原さんのもとに問い合わせが増えたのではないでしょうか。私もこの機会に社内掲示板に記事の紹介をしました。

Veritakの高速化に期待しております。

P.S 新人の学習にぜひVeritak-CQ版を使ってみたいと思っております。
2.20A VeritakCQ版は、教育に最適です。どうぞ、ご活用ください。

6月号から、数ヶ月初心者向けに講座の記事を書いています。
合わせて教育等に、ご活用ください。(私の担当は、最初だけで後は、群馬高専の木村先生が担当されます。)VCD ViewerとVHDLトランスレータは、制限なく使えますのでこちらもどうぞご利用ください。


高速化は、順調に日進しています。RTLに関しては、SEに近いところまで、行けると思います(ゲートレベルは、変わりません)ベンチの結果は、5月第3週にアップします。
183 Why is it this verilog file cannot be compiled?
//-------------------------------------------------------------------
//
//   This file is automatically generated by VHDL to Verilog Translator.
//         Ver.1.24 beta for xx.I Build Apr.19.2006
//               www.sugawara-systems.com   
//                    tech-support@sugawara-systems.com
//        See Original Copyright Notice for property of the file .( somewhere in this file.)
//
//--------------------------------------------------------------------

module  full_adder ( in1, in2, c_in, sum, c_out );
    
    input in1;
    input in2;
    input c_in;
    output  [3:0] sum;
    output  [3:0] c_out;


    reg s1;
    reg s2;
    reg s3;
    parameter gate_delay = 5* `ns;//constant 
reg [3:0] sum;
reg [3:0] c_out;


    
   always #(gate_delay) {s1}<=(in1 ^ in2);
   
   always #(gate_delay) {s2}<=(c_in & s1);
   
   always #(gate_delay) {s3}<=(in1 & in2);
   
   always #(gate_delay) {sum}<=(s1 ^ c_in);
   
   always #(gate_delay) {c_out}<=(s2 | s3);
    

endmodule
- Veritak needs top level module.
Top level module should have no-port list,namely ,you need test bench.You can not simulate any hardware without test bench.

Just place attached files in your folder.
Dblclicking the project file(.vtakproj) will show you waveforms by the bench I've just written.

`timescale 1ns/1ns
`define ns 1
`define us (1000*`ns)
`define ms (1000*`us)
`define sec (1000*`ms)
module test_bench;
   reg in1=0;
   reg in2=0;
   reg c_in=0;
   wire  [3:0] sum;
   wire  [3:0] c_out;

        
        initial begin
                #100;
                in1=1;
                #100;
                in2=1;
                #100;
                c_in=1;
                #100;
                $finish;
        end

        full_adder   my_adder(in1,in2,c_in,sum,c_out);

endmodule
184 1.Veritakのシミュレーションは正常に実行され、
  結果も正常でした。
  しかし、下記エラーメッセージが出ました。
  このメッセージの内容と、どのようなケースのときに
  出力されるのかを教えていただけないでしようか。

  C:\My_Documents_Folder\A_Project\ram256.v(128)::
index=8: object_width=8time=5575000RunTime Error Attemped to Read
beyond Array Index

  また、エラーメッセージを纏めた物があれば
  いただくことはできませんでしょうか。

2.Veritakのシミュレータで、自動的に複数パターンを
  連続で実行したいときは、どのようにすればよろしい
  でしょうか。
  深夜、寝ている間に、シミュレーションを実行して、
  翌朝、結果の確認をしたいと考えています。
  バッチコマンドが組めれば良いと思いますが、
  如何でしょうか。
-  そのエラーは、次のソースのように、Procedual系の構文において、VectorのIndexが宣言範囲を超えてReadをしたときに発生します。読み出しとしては、Xになります。
Xilinxのライブラリでは、頻繁に発生しますが、ライブラリ内であれば、無視していただいて構いません。記述された部分で発生し、意図されていないようでしたら、チェックされることをお勧めします。

module index_test;
reg [7:0] a;
reg b;
integer i;
initial begin
for (i=0;i< 10;i=i+1) begin
b=a[i];//i==8,9 で発生します
end
end

endmodule


すべてソース中に記述しておりまして、お出しすることができません。申し訳ありませんが、そのつど、お問い合わせください。


 Dosコマンドライン版をお使いください。(GUIでは、バッチはできません。)マニュアルは整備しておりません。Commandフォルダにexample.bat がありますので、その例を参考にしてください。また、コマンドラインのoption については、同じフォルダのrelease_note.txt をご参照ください。GUIのプロジェクトで
コンパイルが成功しますと、veritak_command.txtが生成されます。これは、シミュレーションエンジンに渡しているパラメータをダンプしたものです。コマンドライン版のシミュレーションエンジンは、GUIとは異なりますが、このファイルからアレンジしてバッチファイルを作るのが早いと思います。
185 トレースバックで、Driverになっている信号のView追加を自動化(MIXI)
T.B.D. トレースモード プラスアルファが必要で、結構な作業が必要となりそうです。
GUI改善時に詳細検討します。
186 シミュレーションモデルによってタイムスケール設定が異なる
場合があります。
その場合、Veritakとしてはどのようなシミュレート動作に
なるのでしょうか?

考えられるケースとしては、

1) テストベンチおよびシミュレーションモデルの両者に
タイムスケール設定がありそれぞれ異なる。

2) シミュレーションモデルのみにタイムスケール設定がある。

3) シミュレーションモデルのみにタイムスケール設定があり
それぞれ異なる。
- LRMの仕様では、`timescale は、コンパイル順です。全モジュールで、つまり全ファイルの冒頭に定義されていれば、問題ありませんが、定義されていないファイルがある場合、前のファイルの定義を継承(ひきづります)します。
従って、定義されていないファイルがある場合は、当然コンパイルオーダ(Veritakでは、プロジェクトファイルの順番)により、たとえば、

#10の定義が
10nsになったり、10psになったりしてしまいます。こうしたLRM上の不具合のために問題が起きます。よくあるのは、Xilinxのglbl.v の中でその定義があるために、テストベンチの前にglbl.vを置くかどうかで、動かなくなってしまうことがあります。F.A.Q.使い方37番と52番をご参照ください。

なお、定義されていないときは、Veritakでは、1ns/1nsにしていますが、これについては、LRM定義はなく、実装依存(シミュレータによる)であることは言うまでもありません。

気をつけましょう。
187 Waveform Viewer でバス信号が表示されているときにバス成分の 1bit でも
不定値 "X" だった場合にはそのバス表示は色設定の色に表示できないで
しょうか?他の使用環境の兼ね合いもあるかと思いますが、当方の理解では
'X' 'Z' 'H' 'L' で色分けできる信号線とバス信号は共通でよいかと
思います。色設定のダイヤログの右側下部分に信号線とバス信号を
共通に扱いにするか?というオプションボタンがついても
よいかと思います。 F.A.Q. 154 にて同様の提案も
あるようですが、是非とも再度ご検討いただければと思います。
2.12A Defautlで、X カラー、太さになるように変更しました。
188 技術的な質問ではないので恐縮ですが、コンパイラ版のリリース予定は
6月末で変更ありませんでしょうか。

少し長めのシミュレーションがあり、高速化に期待しております。
3.00A 現在の予定はそうです。ただ、今までの経験から、
アーキテクチャの変更をすると、安定するまでに、数ヶ月程度かかってしまうのが、実情です。Opencoresや、IPベンダーさんから頂いているソース総計100万行位は通すのですが、やっぱりなにか出てきてしまいます。そういう実情ですので、しばらくは、旧版も並列してアップします。なお、コンパイルド版は、見かけ上、一つのProject Optionに過ぎません。オフにすると現行のインタープリタで動作します。

内部ベンチマーク結果からすると、現状の倍速プラスアルファになります。
従い、ベンチによるのですが、現状でもPEより速いと体感されているお客様では、SE程度、PEの1/2程度とおっしゃられているお客様では、PE程度の体感速度になると思います。

現在開発中のSnapshot評価結果です。
http://www.sugawara-systems.com/benchmark_comparison.htm

また、現状でも、Regression TEST等で、何本か並列して走らせる場合は、コマンドラインのバッチを使うと便利かと思います。F.A.Q.184をご覧ください。
189 最新版212Bにおいて確認して頂きたい現象があります。

VHDLからVerilogに変換する際に、
Veritakのショートカット機能を利用して、
コマンドプロンプトから以下のコマンドを実行しています。
VeritakWin.exe *****.vhd
(環境変数にパスは通してあります。)

Version 210Aでは問題なくできたのですが、
212Bに上げたら以下のエラーが表示され実行
    できなくなりました。

Error Phase : ****.vhd can not file File

可能であれば、実行できるよう対応して頂きたいのですが
ご検討の程宜しくお願い致します。
=>
動作確認しました。
問題ありません。

迅速な対応ありがとうございました。

コンパイラ版がんばってください。
2.13A 問題は、二つありました。
1)半角スペースを含むフォルダから起動しない問題
2)コマンドラインが起動しない問題(VHDLトランスレータ)
HOTFIXは済みで、次リリースで、マージします。
190 (1)`ifdef → `else → `endif でのコメントアウト
以下の例ように記載すると、//でコメントアウトしたつもりが
そのように認識されていないようです。
`ifdef 側に記載した場合はコメントアウトとして認識されている
ようです。ご確認いただけますでしょうか。

----------------------- 例 -----------------------
`define ACTIVE
module test;

`ifdef ACTIVE
wire test0;

`else
wire test1;
//`ifdef NON_ACTIVE

`endif
endmodule
-------------------- ここまで --------------------

(2)vcdファイルをドラッグ&ドロップして波形表示状態でReload
シミュレーションでvcdファイルを作成し、一旦veritakを終了させた
後に、作成したvcdファイルをドラッグ&ドロップして波形表示させる
ということをよく行っております。
その際、通常のシミュレーションモードと間違えて、[Reload]ボタン
を不注意にドラッグしてしまう事がございます。

特に大きいファイルの場合、一旦そうしてしまうと、veritakを終了
させてもプロセスが残ってしまうようでして、次回veritakを立上げて
シミュレーションした際に、速度が著しく低下してしまいます。

そもそも、vcdファイルを表示した状態では [Reload] する必要が
ないかと思いますので、このボタンを非アクティブにしていただくか、
万一押してしまっても、プロセスが残るようなことが無い様な仕様に
ご変更いただけると助かります。(スミマセン、おっちょこちょいなもので
何度もやってしまってます。。。)

以上、お忙しいところ恐れ入りますが、ご検討いただければ幸いです。
2.15 (1)(2)2.15で対応しました。
191 I like to have VPI support for Veritak. As mentioned in the FAQ, I am
sending the emal to tech-support.
2.16 Sorry,currently vpi support page is only written in Japanese.
I will translate to English and prepare some materials as tutorials.
192 My problem has not been solved. I still do not know how to specify memory ( ram -raom)
initialization file in the Altera environment. your help will be very much
appreciated.
3.00 I will add an example with momory initialization using hex file.
193 最新版を使い始めましたがバグが見つかりました。
always @ (posedge clk)
if (done_cnt == 7'b1100010)
if (result[34:31] == 4'b0000)
begin
muliin <= result[30:14];
iu4_0 <= 1'b1;
end
else
begin
muliin <= result[34:18];
iu4_0 <= 1'b0;
end
このようなstatementで本来iu4_0が0になるべき時にそうではなく1になるときが発生しています。もちろんmuliinも違う値が入っています。なおV3.00でもFastを選択しないと正しく動きます。
3.01 ご指摘の通り3.00 Fast Modeのバグです。3.01で修正しました。
194 I am trying to evaluate Veritak 3.01A and am not having any success.

I always get the following message no matter what I try:
finished with incompelte compilation

a) note that the proper spelling is "incomplete" Note the "el" swap

b) any idea why even simple programs cause this?

Is there a way to turn on longer error messages that would help
identify the source of a problem like this?
3.02 a)Thank you. I will fix it from next release.

b)I am not sure what is causing. Maybe Memory/OS/install issue related.

One idea is to start with samples. In installed folder there are samples. Double clicking any *.vtakprj will invoke veritak.Then compilation will begin and run automatically.
195 I originally installed Veritak many months ago and it lacked some
features I required. I installed it again today on a Microsoft Virtual PC
that is a Win2000 image.

I tried one of the samples and it also gives the same error message.
The message in the bottom right of the window is partially hidden,
what I can see is:
Finished with incomplete compilation, status=15x.. where the x..
is clipped text that I can't read.
- OK, I saw you have no Compiler Status Pain.
(In exact words, status pain is probably behind the view.)
Please Try Following Procedure.

Step1) Load Successful Project. (yes,, always unsuccessful.)
Step2) Menu =>Window =>Horizontal

Then you will see attached two separate pains.(Sorry in Japanese.
but should be identical position in English version.)

Next time you load project, the same view will be reappeared.

Then you should see compiler status progressing.
Could you send the display in status pain?

Maybe related to memory size issue (You need at least 500MB memory even on virtual PC. )
196 my design still does not completely
compile. This is a design I've simulated with ModelSim 5.5 and have
run through the Xilinx 8.1 tools without any problems. Here's some
info and part of the files....

Veritak is trying to compile all of the files in my LIB
directory even though some of them are header files intended to be `included into the >actual >design files
- Veritak parses all the files(.v) in library folder even if they are included header files. So if they are not module - endmodule files, parse error will occur.

Please move included files in library files to other directory.
Or, define header files as ".h" ,or at least not use ".v" extensions.

Once you can compile successfully, you can use "Use libary_files.txt" option. This makes faster compilation next time.
197 I believe I've found a problem.

I have a parameter defined:
parameter BUILD_EPOCH = 32'h1234_5678;

I then use it in two pieces:

reg [15:0] rd_data;

always @(posedge clk)

case (addr)
epoch_low: rd_data <= BUILD_EPOCH[15:0];
epoch_hi: rd_data <= BUILD_EPOCH[31:16];
endcase

The assignment using BUILD_EPOCH[31:16] does not work
correctly - it produces XXXX. If I change the code to be
epoch_hi: rd_data <= BUILD_EPOCHs>>16;
it works.
3.02 This should be fixed in released 3.02A


parameter BUILD_EPOCH = 32'h1234_5678;
Better coding style will be explicit range declaration as follows.

parameter [31:0] BUILD_EPOCH = 32'h1234_5678;

This is also workaround of 3.01A.
198 module test;
reg [1:0] busa;
reg [1:0] busb;
initial begin
#0
busa <= 2'hZ;
busb <= 2'hZ;
#10
$finish;
end
endmodule

これで見てみると busa busbともにXで指定された色で表示
されます。Xは赤色なのですべての信号が赤です。

この仕様ですと
"リセット中の過渡状態時に不定などが発生した場合、リセット解除後の
XとHiZが色による見分けができない"ことになります。

他の方のご意見もあると思いますができれば色分けをお願いしたい
です。
また、バス信号の中に不定(X)が発生した場合はバスとしては
Xの色にしていただくのがよいかなと思います。
3.03B バス信号で、
if(全部zなら)Zの色
else if (1bitでもZ/Xがあるなら) Xの色
に変更します。
199 I have a question on string printing.

With ModelSim, I have used:
reg [127:0] string;

string = "abc";
$display("%0s", string);

This usage of %0s displays the string with no leading whitespace.
According to the version of the Verilog spec I have and the Cadence
VerilogXL
manual, adding a 0 after the % should cause the value to be displayed in the
minimum sized field. Thus I would expect the $display to print 3
characters,
not 16.
3.03A Yes,I'll follow the spec from.3.03A.
200 I'm using $sscanf in my test code and I'm getting the following
warnings related to it:

------------Starting Verilog Build Process----------
Starting Verilog PreProcessor...
../testbed/testbed.v(1):: Reading
Verilog Preprocessing Finished.
Starting Verilog Compile Process...
C:\usr\JOHNP\digimarc\verilog\testbed\testbed.v(3)::
Info: Parse Analysing...
Parse Analysis Finshed.
Loading vpi
Generating Scope
Evaluating parameter..
Evaluating generate...
Evaluating reg/wire...
Evaluating module...
Reduction Phase:
Total 00hours 00mins 00secs for Compilation
Elaboration Process finished successfully. Code Generation Starts....
Generated param_list_structure...
VPI:Warning invalid system task call.
$sscanf
VPI:Warning invalid system task call.
$sscanf
VPI:Warning invalid system task call.
$sscanf
VPI:Warning invalid system task call.
$sscanf
VPI:Warning invalid system task call.
$sscanf
Optimizing Code...
Code Generation Complete.
Top Modules are
C:\usr\JOHNP\digimarc\verilog\testbed\testbed.v(3)::testbed
Scanning waveforms finished.
Code Optimizer Finished
Total 0Bytes returned to OS.
Verilog Simulation Ready.
Total 00hours 00mins 00secs for Simulation



My code seems to run OK, ie, sscanf seems to work, any idea why I get
the warning?
3.03A In conclusion,please ignore the message.VPI:Warning invalid system task call.
$sscanf returns integer like as
return_code=$sscanf..

Probably your code is missing return_code. But is still legal.
Yes, Message is not correct. I'll change it from next release.
201 I wanted to find out if there is a command line interface to running verilog simulator. Command line interface is simpler in doing regressions etc. Something like:

veritak -f verilog_file.list -M(vpi_modules)

I will appreciate your response. BTW how do I compile vpi modules in veritak.
Aug.Mid Current Development version has no command line interface.
By Mid. of Aug. Command version with vpi will be supported.
(Below version 2.16 has command line interface,but has no vpi interface.)
I'll inform you when the desired version will be released.
But please do not expect full support of VPI as Cver does. Very limited subset of VPI is supported in Veritak.

現在は、Fast Modeへの移行過渡期にあたりコマンドVersionは添付しておりません。8月中旬を目処に再開します。またSave/Restoreについては、再開予定はしばらくありません。
202 Below is some code that I believe should be legal Verilog.

The `define statement defines a macro with no parameters, bit
I believe Veritak is getting confused by it.

Below is the code and the status output.

Thanks!



-------------------------CODE-----------------------


`define DISPLAY if (verbose) $display

module z;

reg verbose =1 ;


initial
`DISPLAY("Hi John");

endmodule

--------------------------------Veritak Status---------------------------
Note the MACRO warning....


------------Starting Verilog Build Process----------
Starting Verilog PreProcessor...
c:\tmp\z.v(1):: Reading
c:\tmp\z.v(9):: Warning: Macro DISPLAY arguments not matched.
Verilog Preprocessing Finished.
Starting Verilog Compile Process...
c:\tmp\z.v(3)::
Info: Parse Analysing...
Parse Analysis Finshed.
Loading vpi
Generating Scope
Evaluating parameter..
Evaluating generate...
Evaluating reg/wire...
Evaluating module...
Reduction Phase:
Elaboration Process finished successfully. Code Generation Starts....
Generated param_list_structure...
Optimizing Code...
Code Generation Complete.
Top Modules are
c:\tmp\z.v(3)::z
Scanning waveforms finished.
Code Optimizer Finished
Total 0Bytes returned to OS.
Verilog Simulation Ready.
Total 00hours 00mins 00secs for Simulation
3.04 I'll fix it at version 3.04.
203 I have a question on the "Edit Verilog Project" menu.

If I 'add' something to the project, for example, a Plusarg,
I don't see a way to modify it later unless I 'delete' it and
then add it back in.

Is there any way to edit items in the box?
3.09A Unfortunately, no editing is supported unless deleting the line.
204 .vcd 拡張子以外のVCDファイルのサポート T.B.D.
205 vcd でportが入いると読めない 3.04 VCD 読み込みのバグです。3.04で修正しました。
206 I'm sending you some minor bugs not because I think
they're super-important, but so that you can fix them
if you wish. If no one tells you the problems, even
if they're minor, you'll never know about them to fix them.


I just noticed that in the waveform viewer, as I add signals
the "up/down" scroll bar does not appear at the proper time.

To see this...
Add some signals to the waveform viewer - I have about 15.
Grab the bottom edge of the waveform viewer and make the
window smaller. Now slowly make it bigger and you should
see that the scroll bar disappears before the last signal
is shown.

Likewise, as you make wthe window smaller, the last signal
disappears before the scroll bar is drawn.
T.B.D. Let me check it.
=>Unfortunately it was not repeatable on my site.
As an alternative way of scrolling vertical, please use ALT +mouse-wheel as well as  CTRL mouse wheel for Horizontal. 


207 "VCD file has different timescale from Veritak Project."
が出まくる
3.04C 信号を追加する度にでてしまうので、最初の一度だけに変更しました。
なお、VCDのDRAG&DROPでは、Verilog Projectがないので、この問題は発生しません。
208 Do you have a list of keyboard/mouse shortcuts?
- Note of Tutorial Section 1.3 (Scope viewer) shows all available KEY operations. Sorry, but that is all.
209 VPIのプログラムにおいてcbValueChangeにて信号線の変化時をモニタしているの
ですが,8bit入出力値の複数ビットが同一時刻で変化する時に,値の変化が見ら
れない点,変化するビット数に対してcallback数が異なる点が見られます。

本来ならば現象の発生するサンプルソースをお渡しすれば問題の解決が短いと思
いますが,どのような状況で発生するかつかめておらず,サンプルソフトが作れ
ない状況です。
とりあえずそちらで現象を把握していましたらご連絡いただきたいと思いますが
いかがでしょうか。
3.05
済み
210 【要望】
波形Viewerに関してですが、
ユニークな機能があり非常に便利だと思うのですが
実際に使用していて何点か不便に思うことがありました。

@WAVE上の信号を移動する時に、Modelsimのような
 下線表示があったほうが良いと思います。

 →現在、文字のフォントを最小にして、できるだけ多くの信
号を画面に表示させていますが
  その状態で、各信号を移動させると、思うように意図した
ところに移動させることができません。
  信号の移動先に下線を表示させる機能があると大変助かり
ます。

AWAVE上の信号操作をキーボードショートカットでできるよう

 してほしいです。

 →空白行に名前をつけたり、信号の削除、コピー&カット&
ペーストは
  実作業に頻繁に行います。現状は右クリックから選ぶ仕様
ですが、
  これをキーボードから、DELETE、CTL+C、CTL+V、CTL+X、
  信号名をダブルクリックで名称変更等ができると
  大変効率がよいと思います。

ですが、上記仕様は大分前に制定されたものであり、
同じ様な意見が他になければ却下して下さい。
3.06/T.B.D.
以下の実装としました。

INSERT/"E"->空白行挿入
DEL/"D"−>選択行削除
”C"−>コピー
”V"−>貼り付け


左ペイン内での動きが首尾一貫していないために、混乱してしまったかもしれません。(下のF.A.Q.でもご指摘を受けています。)これについても、3.06で修正しました。
下線については、ペンディングとさせてください。
211 It would be nice when I select a waveform signal if the delete key
would delete it, may insert could insert a new blank line?

Also -
I find that the drag & drop of signal names within the waveform viewer
to reposition them seems to never quite put then where I want. They
end up being above or below where I want, so it always takes 2 or 3
tries to get the signals vertically positioned where I want them.
3.06/T.B.D In fact I have the same kind of requests. I will implement them altogether in near future versions.



An idea of underline which indicates virtual insert position like Modelsim is requested by some other customers. This will be implemented in near future versions.
212 Here's an odd window behavior.

I run a simulation, and I have the "main dialog" window on top of the
waveform window. If I grab the right hand border of the main window
to resize it, the waveform window pops on top of the main window
while I resize, then the waveform window drops to the back again
when I'm done.


------------------------------------------------------
| main window |
| |
| |----------------
| | |
| | |
| | |
| | waveform |
| | |
| | |
| | |
| | |
| |----------------
| |
------------------------------------------------------


^


|
grab this edge to resize
------------------------------------

3.06A Done.
213 When I change the background color in the waveform window, it
does not immediately change. The color only changes as a repaint
happens, ie, minimize/restore window size or as the tool-tip moves
or when I scroll.
3.05 Thanks!
214 プロジェクト編集のOKボタンは、Saveボタンでは、なくてキャンセルの動きになる 3.05 キャプションを
OK->Exitに変更します。
215 波形の左右のスクロールは「←→」で出来ますが
拡大・縮小はキー操作ではできませんね。
プロジェクト設定の Zoom in/out at Mouse Cursor と
連動する形にして「CTRL + ↓↑」で拡大・縮小が出来たりすると
直感的かな...とも思ったりします(^-^;
拡大・縮小の仕方は、Zoom in/out at Mouse Cursor の
設定により変わるなんていうのも...
T.B.D. 検討中です。
216 Up until now, I've been using $finish to end my simulation.
I'm now using $stop and VeriPad opens when the $stop happens
and it pops to the front of the display.

Sometimes I can click on the title bar in the main dialog box and it
will 'pop' to the front of the display, other times I have to kill the
VeriPad window to see the main dialog box.
T.B.D. Let me consider.
217 VCDでファイルで、
$var port 1 <0 port [7] $end
が読めない
T.B.D. ExtendedVCDというVerilog 2001 の拡張仕様でportがキーワードになっています。$dumpportsとやると、Strengthと共に、指定ポートをダンプしてくれるのが、Verilog2001で拡張された部分です。これは、どちらも実装しておりません。VPI、VCD、StrengthつきViewerを実装しないといけないので、かなりお時間をいただきます。おそらく、来年になります。

218 I am using version 3.05A Build Jul.25.2006
How do you enable "save to physical disk"?
The option is always grayed-out in the project settings menu.
I've tried to select it before a project is open and after a project is
open, and it is never an option I can select.
3.34A Save to disk function has been disabled since version 3.00A due to the change of run-time library caused by Fast mode implementation.. Please be patient for a few months.
219 Ver3.0以降のコンパイラ版において
コマンドライン/Save/Restoreをサポートしない旨が
記載されていますが、
今後も、これらをサポートする予定はないのでしょうか?

もし技術的に可能であるならば、今後の予定に
入れていただきたい所存です。
現状、非常に大きなシミュレーションを実行しており
Save/RestoreをOnにしないと(Ver2.16でないと)
コンパイルが通らない状況です。
3.28A コマンドラインは、8月中に再開します。FastModeを実装したところ、内部オブジェクトのSave/Restoreメンテまで、手が回らなくなってしまいました。内部オブジェクト変更が落ち着くまで、可能であれば、2.16をお使いください。Viewerの64ビット化に着手してしまっており、再開は、10月以降になってしまいます。申し訳ありません。

3.28Aで再サポートしました。
220 「Vierwerの64bit化」というのはどのような機能なのですか? 3.09 Viewerとしてみるとユーザ空間は、2GBの空間がありますが、メモリの断片化により、実際は、1GBかそれ以下しか表示できません。この制約の為、

F.A.Q.使い方45,85
要望86
 の問題が発生しています。ある程度規模の大きい回路では、シミュレーションの方がボトルネックになり、そこまで行かないのが普通ですが、簡単な回路で長パターンをやられると(特に画像系のIP)、この問題が容易に発生してしまいます。
WINDOWSが64ビット化されれば、あまり手間をかけずに対応は可能ですが、必ずしも全部が64ビット化される訳でもなさそうなので、今回仮想的に(Diskを利用して)64ビット空間まで対応しようと思った訳です。これにより、viewerがメモリ足りずで落ちる、というVeritakの弱点を解消できます。

なお、Veritakに限らずEDA関係の、OSの64ビット化での恩恵は、マイナス面の方が多いと予想しています。速度変わらず、メモリ肥大、というのが、大方のEDAソフトの傾向になると思います。
221 I have a 16 bit bus in which each bit can be either a 1 or a Z.

In the waveform viewer, the text for the bus is correct, but the
color changes from the normal bus color to a red color depending
on the values on the bus. It looks like if any nibble has a vlue of 0xF,
the bus is red.

I suspect the bus should not be changing color in this case.

=>
If the value is Z, that means that some of the bits in the nibble are 1 or 0,
thus 4'bz10z would display as Z and would be in the Z color.

If I do 8'bz10z_1111, I get text ZF, but the color is the X color, but there
are no x values.

I think this is odd. the Z color handles a mix of 1/0/z, but the X color happens
if I have a nibble without X or z.

I would expect the X color only if there a x bit values
3.07A Done
222 VHDL to Verilog can not support follow syntax
STD_LOGIC_VECTOR(RESIZE(a,N)(N downto 10))
T.B.D. Translator improvement is being hold due to a lot of
restrictions of translation until veritak supports subset of system verilog.
223 I've started to take a look at your simulator, and found a code
construct that complies in the Cadence NC-Sim family but produces the error:

Error: MainTrans_q_r Not Supported LHS

The error construct is:

assign isAnyReportableMainTransaction[QueueEntry] =

(MainFSMStateAndStatus_n_r[QueueEntry][MainFSMState][MUST_FINISH_BIT] |
MainFSMStateAndStatus_n_r[QueueEntry][MainFSMState][CAN_FINISH_BIT])
&& (MainTrans_q_r[`AXI64ArgT_TransactionTypeCode_slice]
< AXI64_TRANSACTOR_unselected_CODE);

The relevant definitions are:

parameter MAX_Main_QUEUE_LENGTH = 5;

parameter AXI64ArgT_TransactionTypeCode = 0;
parameter AXI64ArgT_TransactionTypeCode_width = 3;
parameter AXI64ArgT_TransactionTypeCode_last =
AXI64ArgT_TransactionTypeCode+AXI64ArgT_TransactionTypeCode_width-1;
`define AXI64ArgT_TransactionTypeCode_slice
AXI64ArgT_TransactionTypeCode_last:AXI64ArgT_TransactionTypeCode

parameter AXI64ArgT_width = 1462;

parameter[AXI64ArgT_TransactionTypeCode_width-1:0]
AXI64_TRANSACTOR_unselected_CODE = 3;

reg[AXI64ArgT_width-1:0] MainTrans_q_r[((MAX_Main_QUEUE_LENGTH + 1)-1):0];

genvar QueueEntry;


Can you see the problem here?


Also, your applications seems to be consuming a *LOT* of memory - in
fact more than 300M bytes! This is almost 10 times greater than
NC-Sim. Is there a reason for this?
T.B.D. It seems MainTrans_q_r[a:b] is illegal syntax in verilog 2001,because
MainTrans_q_r is declared as 2 dimensional memory.

I confirmed that by Modelsim 6.0d using following example.
Of-course, it is legal in SystemVerilog. Since Veritak is based on Verilog 2001, it is not my intention to address this issue at this time.
Please understand the situation,and consider of changing coding style.

Actually 3-4 times memory will be required in run-time.
There are several reasons behind it. One reason is elaboration and
run-time is not separated in veritak, so you see memory consumption as elaboration plus run-time object memory. Memory for elaboration can be separated by using save-restore function in veritak. Unfortunately this feature is disabled for the time being due to new feature of fast mode. In Oct, save/restore with command line/with 64bit waveform viewer will be released. In this version, you see 3-4times memory required than NC-Verilog in run time.

NC-Verilog is much faster and smarter, I admit.
Please use NC-Verilog to ensure your design has no error, and use veritak for initial development of your codes, also for debugging complex errors,and regression tests in parallel on your plural machines.
224 1) Your tutorial states:
However please note Save Project saves waveform information and
compiler setting information as well as file information. This means, if
Save button is pressed without WaveformView, information of "no
WaveformView " is saved. In source development stage, many
compile/view/source modification will be performed. If compiler error
occurs, no WaveformView can be displayed, and if Save button is
mistakenly pressed, WaveformView information will be lost.
If I add a module to my Verilog code and forget to add it to my project and run the simulator,
I get an error. If I then edit the project and add the file and Save the project, I lose my
waveform settings. I wish there was a way to not lose the settings accidentally!

2) When I press the AddIncludeDir or AddLibDir, 2 lines are added to the project window.
If I change my mind, I need to delete 2 lines. It seems odd that they are not placed on
one line so that one delete would remove them. Also, the 2 lines make it harder to use the
MoveUp and MoveDown buttons!
3.09 a) Use do.file as alternative.
b) Applied.
225 Here's another minor issue I see with the waveform viewer...

If my simulation executes a $stop and I'm looking near the
end of display time in the waveform viewer, I see some wave
data on the left and black on the right. This is OK since there
is no simulation data to fill the right part of the screen yet.

If I hit "go" again, then $stop, then "go" again, then $stop, the
right part of the waveform window does not update completely.
If I scroll with the mouse wheel, a lot of data appears and fills
the right hand part of the wave window. So, it looks like the
wave window does not always repaint the data after a $stop.

Is this enough information?
3.09 3.09 has fixed the issue.
226 I'm starting to play with the Radix/Enum feature.

a) My design is fairly far down in the C: directory hierarchy. In
the Source File field, it shows the entire c:\asd\fghj\asewr\.... and
it takes up a LOT of the space. Would it make sense to show the
path relative to the project file?

b) Given the above comment, it would be nice to be able to resize the
Parameter Selection dialog box to take better advantage of the screen
space.

c) If there is no mnemonic to display, the waveform shows ???? as does
the tool tip. I suggest you show a hex value if there is no matching
string, otherwise it is hard to find out what is the missing string.

d) I see Param1 Param2 Param2 Param3... Note the duplicate Param2.

e) If I use separate parameter statements, Can I use them with the enum
feature? For example:
parameter STATE1 = 4'h1;
parameter STATE2 = 4'h2;
parameter STATE3 = 4'h3;
parameter STATE4 = 4'h4;
appears no to work, but
parameter STATE1 = 4'h1,
STATE2 = 4'h2,
STATE3 = 4'h3,
STATE4 = 4'h4;
is OK.


3.09A a) Applied. Changed from absolute path to Retative path.
b) I tried several PCs. Phenomenon has not been detected. This item will be Pending issue.
c)Applied.
d)Thanks!
e)Only parameter [a:b]  c=d,e=f....; style is possible as enum.
227 Attached is a file that might show you a nice feature for the waveform
viewer. Note the dim horizontal shading bars that alternate from
signal to signal. This makes it very easy to
a) see hi/lo for static signals or when you're zoomed in
b) visually connect the signal name with a trace as you look
across the screen.

Just an idea, I don't know if you like it or not.
3.11A Done
228 Two more comments on the Veritak GUI are below. Also -

I don't know if you read comp.lang.verilog, but someone
recently posted a complaint about how some other Verilog
vendors handled $sscanf improperly. I tried his tests with
Veritak and got the *correct* results. Nice work!

Now the comments:

a) When $stop is executed, a Veripad window is popped up. Is
there any way to prevent this? If I want to see the code, I can
double click on the stop message printed in the console.

b) As I control-tab, the operation is unlike most Windows applications.
What I don't like about the operation is that when the console window
is selected (the title bar is hi-lighted), it is not popped to the surface. I like
that the Waveform Viewer and Scope Tree are linked together, but I
don't like that I can't ctrl-tab to see the console messages.
3.09 Version 3.09A has project option "Inihibit open veripad by $stop/step". Please use the option.

Version 3.09A should work regarding Ctrl-TAB.
229 <F.A.Q.219 続き>
大変申し訳ないのですが、再度動作確認したところ(Ver3.08A)
問題なく動作しておりました。



使用していた時のPCの状態が不安定等の問題があったのかも
しれません。とりあえずコンパイルが通らなかった時の状況を以下に述べま
す。




@VHDL to Verilogに変換(行数 3万行程度)
Aコマンプロンプトよりショートカットモードで実行
 (****.vtakprj と打ち込む)

実行後、とくにワーニングもなく、コンパイル未完了のメッセ
ージが
表示されました。


回路規模ですが、以下の通りです。

Xilinx XC2VP30 CELL使用率 90%
乗算器使用数 76
BLOCK RAM使用数 50

通常のコンパイルとSave/Restoreモードの時のコンパイルで
ページファイル(PF)の使用量が4倍近く違います。

SDRAMシミュレーションモデル 256M x 4
現在私が設計していますデザインでSave/Restoreモードでコンパイルを行うとPFを約1GB使用しま
す。ところが、通常モードでコンパイルを行うとコンパイル時点で約4GB使用
しています。

私のイメージでは、どちらのモードでもコンパイル時点でのPF
使用量はほぼ同じで、通常モードのみ波形保存量に応じて増えていくの
ではと考えていました。

コンパイルモードの違いによるPF使用量の差はこのくらいつ
いてしまうもの
なのでしょうか?
もし設定等の間違いなどで起こる現象であり、
対策等があればご教授頂ければ幸いです。
T.B.D. コンパイル時においては、Save/Restoreで、メモリ所要量は、違いはないはずです。(むしろ、増える方向です。)
 違いは、Save後、Restoreした状態で初めて現れます。コンパイル時は、
 
・コンパイルに要するメモリ消費+RUNTIMEOBJのメモリ消費

の二つがあります。特に、Elaborationというインスタンス展開に起因する、消費は、Xilinxのライブラリで大きいと思います。

一方、Save後、Restoreした状態では、このElaborationPhaseは、必要がないために、純粋にRUN-TIME消費分のみの所要量となります。ここでみると、Elaboration分だけメモリ所要量が少なくなるはずです。(このメモリ消費は、コンパイラの内部構成の核心的な部分で、すぐには、改善できません。xx様の現在のデザインがほぼ、(32ビットの)現在のVeritakの規模的な上限と考えられます。)

将来的に、

1)FPGA Libraryに対するElaboration消費と、その他Elaboration、及び、RUN−TIMEの分離 (ライブラリ化、Modelsimスタイル)
2)コンパイラ64ビット化

を実装するつもりではおりますが、特に1)については、構造的な再構築の作業が必要です。半年以上1年位かかるかもしれません。

以上のような状況をご推察いただき、当面、使い分けをしていただかないといけない状況かもしれません。申し訳ありません。
230 I just installed the V3.09A release and I've seen a problem with the
"Edit Verilog Project" menu. After I deleted and added a couple
of +args, the lines with the -vlib became corrupted.

I have 2 lines:
-vlib chiptop/filter/src/verilog
-vlib v_lib

these became
-vlib hiptop/filter/src/verilog
-vlib _lib

Note how the leading character in the path was deleted!
3.10B Done
231 When I run the installer, it assumes I want to install in the current
directory by default.

It might be nicer to default to picking the last directory it was installed in.

T.B.D. Installer is another company's property, so, I'll ask your suggestion to them. Sorry,it must be taken long time even if the suggestion is applied.
232 In the Waveform Viewer, I have a number of signals displayed.

a) I don't see a way to add a blank line BELOW the bottom signal.

b) If I click on a signal, then right click and select "Make Name on Blank Line..."
it pops up a dialog box and renames the current signal, it does not make
a new name on a blank line.

=>
It looks like the code DOES allow me to-rename a signal by selecting it and then clicking
the "Make Name on Blank Line" command in the "right click menu". The "MN on BL"
command actually operates like a rename command. If you ALREADY have a blank
line, the "MN on BL" command allows you to change the name from blank to something
meaningful, or it allows you to change a pre-existing name on either a "blank" line OR
a signal line.

c) I find that drag & drop signals from the Scope Tree View to the
Waveform window seldom puts the signals where I want. A lot of
times the signals go near the bottom of the signals, other times the
signals drop nearby but not in the right spot. I find the drag & drop to
be hard to use because of this.
T.B.D./T.B.D./3.11A
233 In version 3.10A, the text output to the console window seems very
"bursty". I have a simulation that prints out a status message after
processing each data block. In the previous version, my status
messages came out at an even pace. In 3.10A I get nothing for
a while, then a burst of messages, then nothing, then a burst of
messages. It looks like the messages are being buffered and only
flushed to the console once in a while.

And now another suggestion....
In the Edit Verilog Project menu.... If I have added a complicated
PlusArg or Define, and then need to change it, I have to delete it
then tye it back in , then hit Add. Is there a way to add a 'Cut'
button that would allow me to select an item, Cut it into the clipboard
and simultaneously delete it? Or maybe the Cut command would delete
the item and paste it back into the Def/Plus box????
3.10B/3.11A Done
234 In 3.10B, I'm seeing a bug in the Waveform Viewer.

If I position the cursor on some signals, the data value for
busses is correct in the leftmost window, but the value
for single bit signals is always 0.
3.11A
This is a problem  from version 3.09
3.11A fixed it.
235 Is the command line version of Veritak functional? Any idea
when it will be available?
T.B.D. Currently I am focusing functionality of GUI as you know.
After that I will work on old PLI ,command -line, and save-restore
functions. These will be useful for complex debugging as well as on your regression tests in parallel on your plural machines.

Command-line will be re-supported at the end of Aug.
Save/Restore Function will be re-supported at the end of Oct.
236 モジュールの呼び出しにdefineによる定義を利用した場合、
以下のような記述の場合にエラーとなります。

`XILINX_PCI_EXP_EP `XILINX_PCI_EXP_EP(
^^^^
このような記述の場合にはエラーとなりません。

`XILINX_PCI_EXP_EP `XILINX_PCI_EXP_EP (
^^^^
文字列を切り出す際の終了判断のあたりでおかしいのかもしれません。

簡単ではありますが、動作のご確認をお願いします。
3.11A ご指摘の通り、プリプロセッサのパーサに不具合がありました。3.11Aにて修正しました。
237 During the development of a project I created a behavioral version of my
design and ran it on Veritak. I have successfully done that before and
very much thank you for your excellent product. I found some Verilog
syntax, which I think is valid syntax, that Veritak has a problem with.
I attach the confidential source code, input and expected output files,
please check for areas commented out and labeled:

// VERITAK 3.10b has a problem with this syntax

Please let me know if you agree that there is something to be fixed with
Veritak or if my syntax is in error.
- I think following two equation will make different results.

1)nb3 = ((b3<<2'd2 + b3<<2'd1) + b4<<2'd1)>>3;
2)nb3_n = ( (b3<<2'd2) + (b3<<2'd1) + (b4<<2'd1))>>3;

Please note operator "+" has higher priority than ">>", so 1) is equivalent to

nb3_a = ( ((b3<<(2'd2 + b3) <<2'd1) + b4) <<2'd1)>>3;

Verilog HDLでは、シフトオペレータよりも、+オペレータの方が優先度が高いので、上の1)と2)は、異なる結果になります。ご注意ください。
238 弊社にてVeritakの言語変換機能(VHDL→Verilog)を使用したところ
下記の現象が発生しています。
(使用したツールバージョン:Ver.3.11A)

ツールの仕様とも思われますが、可能でしたら改善をお願いしたいと思います。
ご検討の程よろしくお願い致します。

------------------------------------------------------------------

1、1Bitのstd_ulogicをVerilogに変換すると4Bitになる

 変換前VHDL:
H01 : in std_ulogic;
H02 : in std_ulogic;
N01 : out std_ulogic

 変換後Verilog:
input [3:0] h01;
input [3:0] h02;
output [3:0] n01;

 正しくは、下記の様になると思われます。
input h01;
input h02;
output n01;


2、遅延記述の誤変換

 以下のようなafterを使ったVHDLの遅延記述は
always #()に変換されますが、assign #()に変換するべきでは
ないでしょうか?

 変換前VHDL:
constant rxen_delay : time := 3 ns ;
RXEN <= RX_EN_OUT_i after rxen_delay;

 変換後Verilog:
always #(rxen_delay) {rxen}<=rx_en_out_i;

 上記の記述ですと、rxenはサンプリング周期がrxen_delayの
信号になってしまいます。
(例えば、rx_en_out_iが周期10nsのクロックであっても、rxen_delay(3ns)
毎に値が更新されるのでrxenは周期10nsのクロックにならない。)
正しくは、下記の様になると思われます。
assign #(rxen_delay) {rxen} =rx_en_out_i;


3、組み合わせ回路の変換

 Veritakではalways文による組み合わせ回路が全てノンブロッキング代入
で記述されてしまいます。
組み合わせ回路の場合はブロッキング代入に変換していただきたいです。
- VHDL トランスレータについては、最近、ソースを全て消失してまった為、サポートはできません。そのような事情なので、今後のVersionは、トランスレータなしとする予定です。
239 WavefomView Managerの実装、ありがとうございます。
確か、私が以前要望していた機能であったように思います。

Use WaveformViewManagerにチェックをすると、元に
戻せないのはどうしてなのでしょうか?
実装上の理由なのだと思いますが、少し驚きました。

また、チェックボックスで表示・非表示の切り替えの方が
Windowsアプリ的に直感的だったかと思います。


早速、使ってみて気がついた点がありました。
以下、ご参考意見までに。長文、走り書きになっています。
ごめんなさい。あくまで一つの意見です。

1.WavefomView Managerを「右上の×」で閉じてしまった場合
 プロジェクトを読み直さないと再び表示する事ができません。
 一時的に非表示にする事も考えられるので、
 Veritak本体の「ウィンドウ」メニューから
 WavefomView Managerを再表示させる事ができればと
 思います。
 → 私が気がついていないだけ??(^-^;

2.WavefomView Managerにフォーカスがある時に
 「ESC」「Enter」キーを押すと、WavefomView Managerが
 閉じてしまいます。
 afx_msg void OnOK();
 afx_msg void OnCancel();
 をトラップしてください(^-^;

3.Enable/Dislableは、トグルスイッチをカチカチ押していると
 DislableからEnableに変わる時に、WavefomViewの名前を
 変更する状態になってしまい、気になります。

4.Delete All ViewでWaveformViewを全て消去は
 可能のようですが、真ん中の一つだけ消去とかはできませんね。
 せっかく複数選択できるリストになっているので、
 例えば複数しておいて、
 右クリック→ポップアップメニュー→オブジェクト削除
 みたいな実装にしておくと、選択している任意の
 WavefomViewをユーザーが思いのままに管理できます。

 このような実装にしておけば、Delete All Viewボタンも
 不要になるような気もします。
 → 「ポップアップメニュー内に全選択」という項目を
   追加する等の案もあります。
 GUI的にDelete All Viewボタンの為にかなり場所を
 取っている気がしていて、スペース的にもったいない
 気がしています。
 また、Enable/Dislableのトグルと場所が近いので
 誤って押してしまう事がないか心配です。

5.Delete All Viewボタンを押した後、
 Veritak本体の「ウィンドウ」メニューから
 「新しいWaveformViewerを開く」を選択すると
 Delete All Viewボタンを押す前の状態に戻る動きをします。
 これは正しい動きなのでしょうか?
3.11B 済み
240 I have one comment so far regarding the new "shade"
feature and screen redraw.

I have "tool tip" turned on.

If I change the color of the "shade" it does not take effect,
but as I move the cursor and tool-tip around, the shading
on the screen slowly gets re-painted as the tool-tip moves
over the screen. If I center-click the mouse and turn off
the tool-tip, the screen repaints with the proper shade color.

Likewise, changes to the ListCtrl Text color value don't take
effect until I re-run the simulation OR minimize then restore the
waveform window.

Should you re-paint the waveform window whenever any color
is changed?
3.12A Done.
As for left pain,please reload the proeject.
241 実装・Fixいただいた Advanced Multi-Viewer ですが、
会社で利用している環境(デュアルモニター)では、非常に快適で
更に使いやすく感じました。本当にありがとうございました。


一点、Advanced Multi-Viewer について要望があります。

1.Advanced Multi-Viewer画面の大きさを可変できるようにしてほしい
(画面の大きさを変えると、リストの大きさが変わるようにしてほしい。)
→ 現状、Advanced Multi-Viewerに登録しているリストが5つ以上になると、
スクロールバーが表示されますが、2画面表示をしていると
大きく広げて表示できた方が作業性・視認性が良く、嬉しいからです。


現在、Advanced Multi-Viewer画面の表示位置は記憶されていますが、
合わせて画面の大きさ、Name・Viewのリストタブの幅を覚えておく
実装にしておくと、なお嬉しいです。
→ 環境のフォントの種類・大きさにより、リスト表示の見易さは異なると
思いますので、ユーザーが調整できるようにしておいた方が
好ましいとも思いました。
3.12A 実装しました。
242 下記FAQの回答に関して要望があります。

>VHDL トランスレータについては、最近、ソースを全て消失>
>してまった為、サポートはできません。そのような事情なので
>、今後のVersionは、トランスレータなしとする予定です。

VHDL to Verilog変換機能に関してですが、
サポートはなくてもよいので
機能削除はやめてもらえませんか?

上記機能を使用しているユーザーがどの程度いるのか
はわかりませんが、VHDL to Verilog変換機能があるから
Veritakを使用しているというユーザも少なからず
いると思います。

FAQをみているとVHDL変換において
小さな問題等があるようですが、
現状私が使用しているかぎりでは問題がありません。

問題がある場合は、使用上の制限ということで
断り書きを行う等して、
変換機能を残してもらえませんか?

ご検討の程お願い致します。
- 了解いたしました。現在の状態のままになりますが、そのまま残すことにいたします。ご迷惑をおかけして申し訳ありません。
243 最新バージョン、使ってみました。早速の対応、ありがとうございました。
現状で大きな問題が生じるわけではありませんが、
ウィンドウを広げていくと、ListCtlの表示全体が固定された大きさのままと
なってしまいますね。

#スクロールバーが表示される事に対する菅原さんの配慮なのだと思いますが。

イメージとしては、添付するプロジェクトのようなイメージでした。



大きな問題ではありませんが、メールさしあげました。
3.13A ご教授ありがとうございます。頂いたサンプルを参考にしまして、追加いたしました。
244 I get the following error while running a very large simulation that opens many files for output.

VPI ERROR: $fdisplay.. file descriptor is invalid.

However there is no indication as to which file descriptor has an issue.
3.14A Currently system task in Veritak has no information regarding file location.
I will consider this in detail, but it is not trivial task ,so it may take a couple of days to hot spot.
245 If a file does not exist Veritak exits with a run-time error:

Run-Time Error.Simulation Exits.Can not open the file?F e4-to-fpga-video.txt

Is it possible to instead return a 0 per the 1364-2001 spec page 288?
3.14A I'll fix it at 3.14A
246 "left"=dword:0000035a
"top"=dword:0000007e
"right"=dword:000004dd
"bottom"=dword:00000113
"show"=dword:00000001
"leftB"=dword:0000038c
"topB"=dword:0000008a
"rightB"=dword:000004cb
"bottomB"=dword:0000010b
"showB"=dword:00000001
"column0"=dword:000000a2
"column1"=dword:0000004a

のcolumn1の値が、Veritakを閉じた時は正しい値が保存されているようですが、
次回起動時、Advanced Multi-Viewerを開いた際に
うまく反映されない?場合があるようです。
(Advanced Multi-Viewer画面を、大きく横に広げて「Name」と「View」の幅を
均等ぐらいにしてから終了し、再びプロジェクトを開くと「Name」の幅は
正しく復元されていますが、「View」の幅が縮んでしまう事があるようです。)
3.14A 修正します。
247 Hello Sugawara-san,
How do I get the waveform window to look like the one you have on your
home page (Black & Grey background with green labels). I get the default
all white and sometimes, it makes problem to see the waveform correctly.

Also what flags in the project settings do you recommend for fastest:
A. Interactive (Debug) simulations
I am using (Optimize1 -> Level2; Optimize2 -> Fast)
B. Batch (Regression) simulations.

Thanks
- I'll prepare a sample project using openrisc, with multi-views on black and gray color.

http://www.sugawara-systems.com/benchmark_comparison.htm
.
248 I am not a registered user but I was evaluating using Veritak for my own
IP development company as a cost-effective development tool. However, it failed to pass my first
test case which is a PCI Master/Slave + surrounding verification environment & stimulus all written in Verilog.
I'm providing feedback in case it helps with your development as I support this type of project immensely.

I worked around several issues from my test cases which were coded for
NC-Verilog:
1. Include file processing is a bit weak in some areas.
2. Had to do a "hack" to use the current working directory as a library
directory.
I created an extra library directory where the string length matched my
current working directory
& then I edited the project file directly to change the name to be the
current working directory.
It's ok, but it should be supported out-of-the-box.
3. Does not support the $test$plusargs system task call. The FAQ page says
it is supported.
I tried $test$plusarg also (although it's really $test$plusargs per IEEE
Specification).
I didn't check the $value$plusargs system task call.
4. Having to delete the "prepre_processed.v" file every time you want to
recompile after a file edit.
Not a big deal but the tool should do this automatically since it's a
tool data-structure & not
a user-generated file.

Anyhow, I coded around them & went on.
I got to Code Generation & the following happened:

Elaboration Process finished successfully. Code Generation Starts....
Generated param_list_structure...
C:\tmp\lib\fifo.v(71):: Error: It seems two or more memory declared as the
same name.
C:\tmp\pci\pciapp.v(136):: Error: It seems two or more memory declared as
the same name.
C:\tmp\pci\pciapp.v(137):: Error: It seems two or more memory declared as
the same name.
...

Now my fifo.v has only 1 memory by the name referenced on line 71 & here's
that line:
reg[FIFOWIDTH-1:0] fifo[FIFODEPTH-1:0];
At first I thought the issue was a namespace conflict between the register
name & the design name.
I changed the register name & it still failed the same way even though there
is only 1 instantiation in
the design hierarchy. As you can see it's a parameterized design but I was
unable to workaround this issue.

In pciapp.v, lines 136 & 137 are as follows:
reg[63:00] d_ram[15:00];
reg[63:00] ram[15:00];

They definitely aren't the same name or the same memories & there's
definitely only 1 instance of each
in the design hierarchy. These are not parameterized so it's difficult to
see what the issue is off-hand.

I was able to compile both files using the "File(F)->Compile Single Verilog
Source.."

I can send you a test case if you're interested that has the entire fileset,
etc...
3.14A Thank you for sending confidential IP cores.
I'll send you suitable Veritak projects by return with fixed released version.
249 一点、Veritak 3.13を使っていて不具合?を見つけました。

Project Setting/WaveformView Mode の
Cursor Edge Mode の チェックが
記憶されない?ようです。(モードは切り替わる)
WaveformView画面でマウスのホイールボタンクリックで出てくる
メニューには正しくモードが反映されています。


また、Project Setting 画面の「ok」と「cancel」が
意味を成していないオプション項目があるように思います。
「ok」ボタンを押した時のみ、設定項目が反映され、
「cancel」時や「右上の×ボタン」時には、
変更した設定項目が反映されない
実装のほうが、より直感的かと思います。
この辺りは、いつか整理する機会があれば、検討をお願いします。
3.14/TBD GUIの設定については、整理する機会にしたいと思います。
250  私の場合,拙書も授業でもそうなのですが,同期回路のRTレベルでのシミュレーショ
ンを主に行なっており,テキストで結果を見ることが多い状況です.
 また,来年度からは授業でVeritak(CQ版)を使用させていただこうと考えているの
ですが,できましたら次の2点をご検討頂けると幸いです.

 @シミュレーション結果の等幅フォントでの表示
   シミュレーション結果を見る際に,文字が綺麗に並んでいる方が,
   確認作業のミス・勘違いを少なくできるため.
 Aシミュレーション結果のファイルへの保存機能
   学生にシミュレーション結果を印刷させて提出させているため,
   ファイル保存用のメニューかボタンがあると効率が良いので.

以上,勝手なお願いですが,お時間がありましたらよろしくお願いいたします.
 
 なお,授業では大量のシミュレーションはありませんので,テキスト出力のスピードが
問題になるようなことはないと思います.
3.16 実装します。
251 I'm back from a short vacation with some new comments for you for version 3.14C....

a) in the "Verilog Project" "Project Settings" menu, I can't "un-check"
the "Use WaveformViewManager" option.

b) When I use the "radix" "analog"...
- If I expand the waveform to see it as analog, then apply new "analog parameter" to the
expanded signal, they are not really applied or remembered. They need to be applied to
the original un-expanded signal!

- If I apply new "analog parameter", I need to shrink the analog signal, then re-expand it
for the change to take effect. It would be nice for the change to immediately be applied when
I click OK. It would also be nice to have an Apply button in the "analog parameter" menu so I
could "tweak" settings instead of having to keep opening the menu.

- I had a case where the A B and Height parameters for the analog parameter were garbage - this
caused Veritak to crash. It might be nice to do a sanity check to make sure the variables have reasonable
values before expanding a waveform to be analog.

- I wish there was an "auto" setting that would pick nice values for A and B to disaplsy the waveform
full scale.

c) There is a problem with > and < comparisons. Please try the following test:



=>
I am puzzled on item (a). Once I turn on the WaveformViewManager, there is no
way to turn it off? If so, why even have the check box to enable/disable this feature.
It seems like the check box is very misleading.
T.B.D./3.15 Thanks a lot!


=>
I agree the check box is very misleading.
What I would like to do is to check BEFORE loading the project,because
the change of this check causes crush in veritak. I will consider this later. Thank you.
252 function [15:0] DataSel;
input [2:0] sel;

case( sel )
0: DataSel = { WP, 7'h0, Year };
1: DataSel = { 5'h0, Day, 3'h0, Month };
2: DataSel = { 2'h0, Date, 2'h0, Hour };
3: DataSel = { 1'h0, Minutes, 1'h0, Seconds };
7: DataSel = { TCE, 13'h0, WriteFlag, ReadFlag };
default:
DataSel = 16'hx;
endcase
endfunction

assign Data = ( SelRT && !RD ) ? DataSel( Address[3:1] ) : 16'hz;

上のソースでAddress[3:1]=0で全く変化しない時、WPが変化してもDataSelが変
化しないのは仕様でしょうか?
Verilogに関してあまり詳しくないので教えてください。
- assign Data = ( SelRT && !RD ) ? DataSel( Address[3:1] ) : 16'hz;

上の記述の場合
always @(SelRT,RD,Address[3:1]) begin
DataR= ( SelRT && !RD ) ? DataSel( Address[3:1] ) : 16'hz;
end
に近い動作となります。functionのなかの入力ポートでない変数は、SensibityListには入いらないことに注意してください。したがって、WPの変化は、assign 文の再評価をトリガしません。組み合わせ回路を意図するのであれば、WPもFunctionの入力ポートに入れる必要があります。(ここで、DataRは、仮想的にassign Data=DataR;を意図しています。)

 SystemVerilogの always_comb を使えば、functionのなかの入力ポートにない変数まで、SensibityListに入ります。つまり、WPが変数であれば、
always_comb beginは、

always @(SelRT,RD,Address[3:1],WP) begin
Data= ( SelRT && !RD ) ? DataSel( Address[3:1] ) : 16'hz;//
end
と推定しれくれます。残念ながら、VeritakでのSystemVerilogサポートは、まだ大分先です。
253 I just ran into a problem with losing the Waveform Viewer setup.

I loaded a project and Veritak properly loaded the waveform
viewer with the signals from the last time I loaded the project.

I then used the 'File' option to run a test on a single file. At this point,
I created a new Waveform with the signals I was studying.

I then went back to load the original project and the signals in the original
project were lost.

I did not do a Save at any time.

It is very annoying to lose a project setup so easily.
3.15B Thank you for reporting bug.
I am very sorry for inconvenience.
This must be caused by implementing waveform-manager.
I will look into this issue, and fix  it soon.
254 Please try the simple test below.

The test does not initialize the signal 'enable' for several clock cycles. It
then sets it to a 0, then a while later sets it to a 1.

As I would expect, the bus 'addr' has a value of X until after the
signal 'enable' is assigned a legal value. BUT.... the signal 'rd'
gets an incorrect value at the 1st clock edge. I think it should
stay an X (like addr), but instead it goes to a 1.

Thanks!



module test;

reg clk = 0;

always
begin
#5;
clk <= ~clk;
end


task idle;
input [31:0] cnt;
begin
repeat(cnt)
@(posedge clk)
;
end
endtask


reg enable;
reg [15:0] addr;
reg rd;
reg stop;

always @(posedge clk)
if (~enable)
begin
addr <= 'b0;
rd <= 1'b0;
end
else if (stop)
rd <= 1'b0;
else
begin
rd <= 1'b1;
addr <= addr + 1'b1;
end


initial
begin
stop = 1'b0;

idle(10);
enable = 1'b0;
idle(10);


$finish;

end
endmodule
- It seems behavior is the same as Modelsim.



initial
begin
$monitor($time," enable=%b rd=%b",enable,rd);//patch applied
stop = 1'b0;
0 enable=x rd=x

Modelsim Result:
# 5 enable=x rd=1
# 95 enable=0 rd=1
# 105 enable=0 rd=0
# ** Note: $finish : F:/regression_test/task_test.v(52)
# Time: 195 ps Iteration: 0 Instance: /test

Veritak Result:
0 enable=x rd=x
5 enable=x rd=1
95 enable=0 rd=1
105 enable=0 rd=0
255  ダウンロードして実行してみました.フォントとサイズが選択できるようになり,また
ファイルへの保存も簡単にできるようになり,快適です.有難うございました.

 それでちょっと気付いたのですが,たまたま,シミュレーションしたテストベンチにあ
った$writeシステムタスクの中で,タブ(\t)を使っていました.
 シミュレーション結果を等幅フォント(MSゴシック)で表示してみると,タブの位置が
7文字単位になているようです.ファイルに保存してエディタで開いてみると8文字単位
になります.

 また,プロジェクトを開きなおした時に,日本語が横に寝てしまう(左90°回転)現
象が起きました.いろいろやっている内に(日本語を含まないフォントに設定しなおした
後だったような気がします)正常にもどりました.その後は発生していません.他のソフ
ト(プリント基板エディタ)でもこのようなことを経験しております.

 タブ文字を使う稀なので,問題になることはまずありません.また,日本語の回転も特
に問題はありませんが,お時間がありましたらご確認いただければと思います.また,こ
ちらで試したファイルを添付いたします.
3.16/3.28A ファイルについては、タブはタブのままになるように修正しました。
コンソールについては、等幅のときは、4文字になっているようです。可変にすることも可能ですが、とりあえず、固定のままといたします。
なお、右クリックメニューでの操作も追加しました。次の3.16から可能です。

縦書きになる現象は、こちらでも確認していますが、原因がよくわかっておりません。その様な場合、フォントを変更したりサイズを変更したりすると復帰するようです。大変申し訳ありませんが、そのような操作で逃げていただきたいと思います。

=>本現象については、3.28AでFIXしました。フォントの見本通りに出力します。
256 3.15のスナップショット中画面のa-b とか、a+bは、どうやってだしているのでしょう?
(enumの使い方は分かっております。)
-
次のソースを追加して、Viewerのフォーマット指定のところで、enumを指定します。\は、VerilogHDLのエスケーブ文字で、スペースが来るまで一つのトークンとみなされます。なお日本語も含められますが、エスケープが入る文字は駄目です。

parameter [3:0] Clear=3'b000,
\b-a =3'b001,
\a-b =3'b010,
\a+b =3'b011,
a_XOR_b =3'b100,
a_OR_b=3'b101,
a_AND_b=3'b110,
Preset=3'b111;
257 コンソール文字をCOPYするのにメニューー>レポート編集は面倒 3.16 右クリックメニューを追加します。
258 I'm seeing a problem with the `include command when compiling
a single file using the File(F) menu option.

To re-produce the problem, you may need to alternate compiling between a
project and a single file.

First, I have 2 files in /tmp
z.v and po_inc.v

The file z.v simply is:
module z;
`include "po_inc.v"
endmodule

I also have another project that compiles correctly.

To see the problem:

a) compile the project.
b) do a File(F)...Compile Single Verilog Source.... /tmp/z.v
c) compile the project again
d) in the File(F) menu, select the /tmp/z.v option. MAKE SURE
that the full path is in the File(F) shortcut. Sometimes the File(F)
just shows the filename, ie, z.v. You need to change between
compiling a project and compiling a single file until the File(F) menu
shows the file name path like /tmp/z.v. (I believe you need to use the
"VerilogProject" menu to start the project, NOT the File(F) shortcut
to the project.

At this point, I see the `include command fail and I get a
"Can not open include [a:file:po_inc.v]file:po_inc.v." message from Veritak.

Also - I tried hard coding the entire path like
`include "c:/tmp/inc_file.v" (and variations like using \ or leaving off c:)
and Veritak says "Can not open include [a:file:c:/tmp/inc_file.v]file:c:/tmp/inc_file.v

I believe that Verilog should accept a full path for an include file?

It looks like using the File(F) shortcut to compile a file may cause
`include to not work.
3.16 Thank you for reporting bug.
Your instruction reproduced the problem on my side.
Thank you very much for your cooperation.
259 I'm porting another project to Veritak and I'm seeing a problem
with an error that is/may be related to threads?

The project is not compiling completely, so Veritak prints
"finished with incomplete compilation"

The bug is that the message appears in random locations in the
output window. If I "Reload" many times in a row, sometimes
the message is the very last message on the screen, but many
times it is put someplace else in the messages. Here are
two examples (I've ADDED the ******* to show the 2 spots)
T.B.D. Yes, it is related to multi- threads as you indicated.
Basically regarding syntax error or related to verilog hdl things, simulation engine(veritak2.exe) issues the message, while GUI(veritakwin.exe) is monitoring status of the thread(veritak2.exe) ,and issues "incomplete.." when simulation thread is finished.

I am understanding this is a problem and should be fixed in long term.
260 Here's another potential problem, but I'm not sure. The code
works OK in ModelSim, but does not work in Veritak.

Run the test and notice that 'bug' prints as XX. It is never assigned.

Should the always block be triggered at the start of simulation?

Thanks!



module test;

wire [1:0] mode = 2'b0;

reg [1:0] bug;

always @(mode)
bug = mode;

initial
begin
#10;

$display("%b %b", mode, bug);
$finish;
end

endmodule
3.16 I think this is not bug on LRM, which states nothing about threading order.
However, I understand it is desirable to have compatible behavior with ModelSim on this issue. Let me consider this in detail.
261 期限切れで、CPU IDのダイアログが出てきません.. 3.16 キャンセルボタンでCPU IDが出てくるようにしました。
262 Xilinx のライブラリの設定方法がよく分かりません。特にタイミングシミュレーション.. 3.19 ISE8.x から添付してあるサンプルと不整合が生じています。チュートリアルを修正しますのでお待ちください

要点は、遅延シミュレーションを行う場合のVeritakプロジェクト作成場所についてです。

合成とPlace&Route後のシミュレーションモデルの作成を行うと、\netgen\parフォルダに*_time_sim.v と*time_sim.sdfファイルが出来上がります。
この*time_sim.vファイルを見ると、
initial $sdf_annotate("netgen/par/hardware_timesim.sdf");
と言う記述が見つかります。これが、SDFファイルを読み取る記述です。(ここでhardwave は、hardware.vを合成したものです。)
つまりVeritakプロジェクトは、netgenフォルダの上の階層に置くことが前提になります。(上のパスを書き換えればどこに置くのも自由です。)

263 I think there is still a problem with the `include processing, but the
new version is better than before. I don't yet have a 100% way
to reproduce the problem, but I'm playing with absolute paths
versus relative paths. Assume /tmp has z.v and po_inc.h....
If I try compiling z.v using
`include "po_inc.h"
or
`include "/tmp/po_inc.h"

Occasionally Veritak can't find the include file. Once it says
"Cannot open include [a:file:/tmp/po_inc.h]file:/tmp/po_inc.h", pressing the Reload
button won't fix it. If I go to File(F) c:/tmp/z.v, it won't won;t fix it
either. If I go to File(F), open another project, then go back to
File(F) c:/tmp/z.v, it is fixed.

Maybe you can re-produce it this way:
a) put a deliberate typo in the file: `include "/tmp/po_inc.X"
b) do a File(F) c:/tmp/z.v Veritak complains. Good!
c) fix the typo and save the file
d) Reload - Veritak still complains. Bad!
e) do a File(F) c:/tmp/z.v - Veritak complains. Bad!
f) load another project
g) do a File(F) c:/tmp/z.v - Veritak is OK.
3.16B I must say many thanks to you.
In this time, Thank you very much.

This was due to another cause.
It should be fixed in next release.
264 Below is some (awful) code from the Xilinx unisims directory. In my real
design, it does not work. The following lines fail:
always @(posedge C0)
if (CE == 1 || R == 1 || S == 1) begin
C0_tmp <= 1;
C0_tmp <= #100 0;
end

always @(posedge C1)
if (CE == 1 || R == 1 || S == 1) begin
C1_tmp <= 1;
C1_tmp <= #100 0;
end


If I add a #10 (in both blocks) like:
always @(posedge C0)
if (CE == 1 || R == 1 || S == 1) begin
C0_tmp <= 1;
#10;
C0_tmp <= #100 0;
end

The code starts to work. I can't yet reproduce this in a simple test case. In
my testbench, I have a `timescale 1 ns / 10 ps. Commenting out the
always @(GSR) and the initial blocks makes no difference.

In the waveform, C0_tmp and C1_tmp are always 0. If I had written this, I would
have used events. The Xilinx people write awful code!
- Please make sure "NBA" option is OFF in your project.
If "NBA" is ON, any constant delay in "<=" is neglected (menas zero);
265 However, I also see a problem when I kill Veritak, then restart it, the
Windows are not restored properly.

I've attached several files:

good.jpg is how I set up my windows after starting Veritak. I then
press "Save" then exit from Veritak.

I then do "Verilog Project", "Load Verilog..", then I select the last project.
The image bad.jpg shows how the windows are not restored as saved.
3.16B 3.16B Fixed it.
266 When using veritak as a vcd waveform viewer is it possible to have a reload vcd function. I am able to open a vcd file and a corresponding .do file in veritak. However, when the vcd changes I have to quit veritak and go theu the process again. It would be nice to have a reload feature that would allow me to keep all the windows in place and just re-read the vcd file. The vcd is getting generated by another simulator. 3.34A
267 モジュールのディレイを設定しましたが,次のようにエラーが出ます。
Error: ディレイは定数でなければなりません。

ソース例
------------------------------------------
reg [3:0] delay;
initial
begin
delay = $unsigned($random % 10);
end

not #(delay) A (B, C);
------------------------------------------

modelsimではエラーが出ないので
verilog仕様上veritakwinとどちらが正しい動作かわかりませんが
もし簡単に対応できればありがたいと思います。
ご検討を宜しくお願いいたします。
3.17A Verilog HDL仕様では、定数でない>DelayもOKです。Veritakでは、固定Delayしか現状サポートしておりません。
=>3.17A で変数Delayをサポートしました。
268 currently I face a problem with the Verilog 2001 "task" command. While it
works most times the routine below doesn't:

task automatic setup_testbench;
begin: get_setup_data
integer filehandle;
integer filehandle_value;

filehandle = \$fopen("setup.dat", "r");
// get testname
filehandle_value = \$fscanf(filehandle, "%s",testcase);
// get last cycle c_ref_model
filehandle_value = \$fscanf(filehandle, "%d",
emergency_break);
\$fclose(filehandle);

end
endtask // setup_testbench

BTW Modelsim had a problem too, but with the newest version it works fine. I
am still using Version 2.14, shall I migrate to a newer release?

We will move to SystemVerilog in the near future (next 4-8 weeks). How are
your plans to support it?
T.B.D. Verilog 2001 keyword "automatic" is not supported even in newer version.
So far I do not have a plan to implement "automatic", now I understand your requirement, I will implement it in future versions.

Sorry, subset of SystemVerilog implementation is even far away, maybe at least one year ahead.

Currently my efforts is focusing on VPI enhancements in order to co-sim to other tools.
269 modelsimで出力したVCDファイルをviewerで見ることがたびたびあるのですが,
グループがビット毎になってしまうためたびたびグループ化を行います。

この時見たい信号をTreeViewからドラッグしてViewerに表示しますが,信号の
ソート順が[0]から大きい順になります。この場合グループ化を行うと必ず逆順
になり,毎回逆順にして編集終了をする必要があります。さらにこの時グループ
化した信号も含めて選択しなおさなければなりません。

例えば逆順にグループ化か信号線のソートを逆にするなどは出来ないでしょうか。
3.17A 確かにModelsimの出力するVCDは、WIREがばらばらになってしまいます。数字をASCIIではなく、数字としてソートはしているのですが、ご指摘のような現象は私も承知しています。

=>3.17AからSCOPE TREEの方を逆順にしました。
270 $unsignedの動作ですが

例えば
reg [3:0] data;
として
data = $unsigned($random % 10);
とすると
veritakwinでは0〜9の値になります。

これではまったのですが

$random % 10
では-9〜9の値を取りますが
$unsignedはビットの並びを替えないので
そのままdataに格納するため
0〜15の値になるのが正しいようです。

modelsimと結果が違ったのでおかしいと気づきました。

$unsignedの動作の解釈の問題と思うのですがどうでしょうか。
3.17A ご指摘の通りです。3.17Aで修正しました。
271 Here is a potential (non-critical) bug???

I declared
reg [31:0] foo;

Later I used
if (foo[32])
stmnt;
etc

I would have hped that Veritak would have flagged the
foo[32] as using a subscript out of range.
3.17A Modelsim does not make error nor warning.
Veritak generates warning as follows.

Warning : Out of Range in [:]

You should see the text above in status window.

From next version, Veritak reports Error(actually warning ,because compiler never stops by this) in compiling, which
will make different color(pink), so you will be able to know it easily.
272 I believe the following code may show a problem in Veritak.

If you run it as it is, the line with the $display("bar..... will show
values of XX coming out.

If you change the line
parameter data = 3'b100;
to use another name, like:
parameter dta = 3'b100;

The code run correctly. I believe the line
parameter data = 3'b100;
causes a conflict in the set_mem task that uses a
input variable called "parameter".




module i2c_slave;


reg [7:0] mem [255:0];


parameter data = 3'b100;


// initialize the memory array
task set_mem;
input [7:0] addr;
input [31:0] data;
begin
$display("set_mem info: data = %x", data);
mem[addr*4 + 0] = data[7:0];
mem[addr*4 + 1] = data[15:8];
mem[addr*4 + 2] = data[23:16];
mem[addr*4 + 3] = data[31:24];
end
endtask

initial
begin
mem[0] = 0;
mem[1] = 0;
mem[2] = 0;
mem[3] = 0;
$display("foo: %x %x %x %x", mem[3], mem[2], mem[1], mem[0]);
set_mem(0, 32'h8642_7531); // reserved
$display("bar: %x %x %x %x", mem[3], mem[2], mem[1], mem[0]);
$finish;
end

endmodule
3.17A 3.17A fixed it.
273 ところでグループ化で気がついたのですが,
編集終了で再度グループを含めて選択せねばならず逆順で編集終了と手間がかか
らないように思いました。
自分としてはバスグループ化→そのまま編集完了と一回で済む方がうれしいです。
この辺はユーザインタフェースですので個々に利用方法は異なりますので,色々
な人の意見を聞いて改善できれば良いと思います。

また別件での要望ですが,
VCDファイルへの出力が現状,各scope毎全てのwireを出力しているように見受け
られます。そうしますと多段のモジュール構成で記述するとかなりファイル容量
を消費しますし,保存展開に時間がかかるようです。同一wireは,最下位の一つ
だけsaveできればコンパクトになると思います。viewer自体は対応しているよう
なので保存だけの問題と思いますが,将来対応可能でしょうか。
T.B.D. T.B.D.
274 This compiles but crashes when I try to simulate.

If line 39 in tb_afifo is changed from:
tb_afifo2 u_afifo[2:0] (
to:
tb_afifo2 u_afifo (
then it simulates.

Please help.
3.18 Here is a workaround. Your source is legal, however continous assign of variable of function/task has problem on current veritak.

function[ADDR_BITS:0] b2g;
input[ADDR_BITS:0] bin;

//TAK assign
b2g = (bin>>1) ^ bin;

endfunction
endmodule

It will be fixed from next version.
275 module and_a1 (A,B,Y);
input A,B;
output Y;
wire w;
// Two instantiations of the nand gate
nand n1(w,A,B),
n2(Y,w,w);
endmodule
module test_and_a1;
reg A1,B1;
wire Y1;
and_a1 A1 (A1,B1,Y1);
initial
begin
$monitor("time=%d A = %b,B = %b, Y = %b ",$time, A1,B1,Y1);//TAK Maybe this will be matched with your expectation.
A1=0;B1=0;
// $display("A = %b,B = %b, Y = %b", A1,B1,Y1);
#10 A1=0;B1=1;
// $display("A = %b,B = %b, Y = %b", A1,B1,Y1);
#10 A1=1;B1=0;
// $display("A = %b,B = %b, Y = %b", A1,B1,Y1);
#10 A1=1;B1=1;
// $display("A = %b,B = %b, Y = %b", A1,B1,Y1);
#10 A1=0;B1=0;
// $display("A = %b,B = %b, Y = %b", A1,B1,Y1);
//TAK Too late.. $monitor("A = %b,B = %b, Y = %b ", A1,B1,Y1);
end
//TAK This causes parse error, since $monitor is outside of begin -end block. $monitor("A = %b,B = %b, Y = %b ", A1,B1,Y1);
endmodule
//Info: Parse Analysing...
//E:\and_a2.v(26):: Parse Error.yy=syntax error
//Parse Analysis Finshed.
//Parse Error Detected in Parse Process.
//finished with incomplete compilation
- Please see attached file for corrections. (See //TAK comments..)


Sorry, VHDL translator is no loger supported due to loss of source files.
276 I suggest in the File(F) menu that you sort the recently used
files/projects by date. I'm probably most interested in things
I've done recently, so they should be by the top of the list.
T.B.D. Thank you for your suggestion.
I'll consider it in near future versions.
277 ViewerのScopeのパスをコピーして
テキスト等に貼り付けられる機能の追加検討をして
頂けませんか?

force文で深い階層の内部信号をアサートする際に
手入力でパスを記述すると間違える頻度が高いため
上記機能があると大変助かると思います。

ご検討の程、お願い致します。


3.18 実装します。
278 I am using Veritak since a while and like it since it is very easy to
use. I have some questions / suggestions to Veritak:

A) SPECIFY is currently not support, as stated at every compilation
process when this command is found. Do you intend to expand VERITAK by
this option for future support ?

B) The built-in editor is very useful for debugging and the command /
variables are color coded. The only option I am missing is the "print"
feature. Usually I open the file with another editor to that only
purpose. The built-in print feature would be just for convenience.

C) Is it possible during compilation to have more verbose error messages
? Sometimes it is trivial to see syntax problems, but for beginners it
take more time to find out what went wrong again. So, a more detail
debug information would be very helpful.

D) Is it possible to read VCD files in Veritak without starting a
project? There is no menu available for "Read VCD file.." at start up of
VERITAK.

Thanks for the good program and your support
T.B.D. A)Specify Section
Yes, I have a plan to support minimum subset of Specify Section for Xilinx/Altera. Implementation will be next year.

B)Editor Printing
Sorry, I have no plan to support Printing in Veripad.

C)Verbose Message
Sorry, I have no plan to support more detail debug message.


D)VCD
Drag & Drop *.vcd file to veritak icon. This operation is equal to
"veritakwin.exe *.vcd" Or, you can use Single Compilation Menu for reading *.vcd. (Yes, extension must be .vcd )
278 When I change projects, then do a 'Verilog Project' 'Edit Verilog Project'
the initial directory that is displayed in the "Look in:" box is the
directory
from the previous project.
3.19A ご提案通り実装しました。
279 いつも便利に使用させていただいてます。
altera SDFファイルにて最新バージョンにて以下エラーとなります。

v3.17A/v3.18A
C:\app2k\altera\quartus60\eda\sim_lib\cyclone_atoms.v(1863)::Error:
clear_asserted_during_write継続代入文の左値の[]は定数である必要があります。
C:\app2k\altera\quartus60\eda\sim_lib\cyclone_atoms.v(1863)::Error:
clear_asserted_during_write継続代入文の左値の[]は定数である必要があります。
Elaboration Phaseでエラーが発生しました。>以下構文
assign clear_asserted_during_write[primary_port_is_a] =
clear_asserted_during_write_a;
assign clear_asserted_during_write[primary_port_is_b] =
clear_asserted_during_write_b;

v3.08Aは、エラーにならない
v3.16Bは、エラーにならない

すみませんが、対応できないでしょうか。
3.19A FIXしました。
280 何も書いていないプレーンテキストファイルを読み込ませると
Syntax errorとなるようです。
VerilogのBNFでは何も書いていないテキストもVerilogの文法
としては正しいのではないでしょうか。
すみませんが、対応できないでしょうか。

背景はたいしたことないのですが、FAというファイルにMAというモジュ
ール、FBというファイルにMBというモジュールがあり、FA,FBともにプ
ロジェクトに追加したまま、モジュールMBをFAのファイルに移動しまし
た。SynopsysVCSシミュレータではそのまま動作しましたが、そのまま
ファイルをVeritakへもっていき起動したところ本現象が発覚した次第
です。
3.20A Fix しました。
281 Scope Tree Viewの信号ペイン(右側のウィンドウ)に event属性の信号
が表示されないようですが、表示できるようにしていただけないでしょ
うか。
3.20A 対応しました。
282 I am getting the following message from Veritak:
Disk reached maximum capacity. Please stop the simulation.

In the status bar, Veritak reports:
ArchiveDisk=314.7MB DispDisk=0.0MB

In the Project Setting menu, I have 'Max Archive Disk' set to 400MB.

If I increase the 'Max Archive Disk' to 800MB, the simulation succeeds.

Why is there the discrepancy between the status report and the Max Archive Disk
setting?

Note: I do not have the 'Use Disk' option selected.
3.20A Actually 100MB margin is assumed.
I'll change the mesaage.
283 I am getting the following message from Veritak:

Disk reached maximum capacity. Please stop the simulation.

Is there a Veritak system task I can call from within my testbench to enable/disable
capturing waveform data? I know there is the 'trigger' option, but it might be nice
to have a $capture(on/off) type task.
T.B.D. This is not trivial.
Please let me check this as long term items.
284 Here is a simple way to lose the signals selected for the
Waveform Viewer.

a) open a 'good' project
b) select 'Verilog Project' ... 'Edit Verilog Project'
c) select 'Save Project'
d) close Veritak
e) start Veritak, re-open the same project
f) run the simulation - the signals are gone.

Here's another way:
a) open a good project
b) hit the 'Save' button
c) run the simulation - the signals are gone.

I suspect any time you hit Save without the waveforms being
displayed, you will lose the signal information. I think this is
VERY bad!
3.20A Use waveform manager on 3.20A.
285 Once again, I lost the signal definitions for the viewer.

I wish there was an explicit button to save the signals to a file
that I specify and another to load the signals from a file.

I don't want to save the actual waveforms, I just want to save/restore
the signals I want to monitor. Maybe a feature to add to the waveform
manager?
T.B.D. T.B.D.
286 I have several suggestions for the Waveform Manager.

a) I don't like that it is always 'on top' with no way to hide it. It is
always blocking something I want to see. I suggest you either
1) allow it to act like a normal window (minimize, rotate to the
back, etc) OR (better)
2) have it be a drop down menu instead of a dedicated window.
I think a drop down window fits its function better, I see no
reason that it should be a window.

b) Unless you've read the tutorial (as opposed to just trying things out)
the check box in the Waveform Manager is misleading - it is not
obvious that this deletes a waveform! Maybe think about having
three columns:
Name Display Enable Delete on Exit
^ ^ ^
| | |
Text CheckBox CheckBox

c) It would be very nice to be able to rename the waveforms. Then
I could have one named "Bus Interface", another named "Processor", etc.

d) If I click the 'x' to kill the Waveform Manager, the only way to get it
back that I can see is to re-start the simulation.

e) It would be nice to have a way to have all waveforms display the same
time range with cursors in the same locations between the windows. Of,
course, you'd want to turn this on and off!
3.21A Partially, there are things I can answer immediately.

>a) I don't like that it is always 'on top' with no way to hide it. It is
>always blocking something I want to see.

The person suggested this feature has multiple-display(two monitor). Dedicated window is required for him.

> 1) allow it to act like a normal window (minimize, rotate to the
> back, etc) OR (better)
> 2) have it be a drop down menu instead of a dedicated window.
> I think a drop down window fits its function better, I see no
> reason that it should be a window.
>
Sorry, 1) is to be considered for that reason.

>b
> Name Display Enable Delete on Exit
> ^ ^ ^
> | | |
> Text CheckBox CheckBox
Check Box is allowed only one by technical reason of library I am using.
I will exchange the meaning in later version. BTW, some operation would pop-up disabled window, I know. But so far I have not found the solution technically.

>c) It would be very nice to be able to rename the waveforms. Then
>I could have one named "Bus Interface", another named "Processor", etc.

Click the name and wait about 1sec, you can edit the title of window
See "mul_div_test_w_manager.vtakprj on sample folder.

>d) If I click the 'x' to kill the Waveform Manager, the only way to get it> back that I can see is to re-start the simulation.
You can re-open by Menu (Windows->Open WaveformManager).

>e) It would be nice to have a way to have all waveforms display the same>time range with cursors in the same locations between the windows. Of,>course, you'd want to turn this on and off!
Super Idea! I consider it absolutely in later versions.
287 常にトップに表示されているのがうっとおしいについては、
私の場合、シングルディスプレイ時においても
Waveform Viewerを最大化すると右上にメニューもアイコンも
無いスペースができるので、そこに収まるように調整して
使っていたので、気になりませんでした。
ただ、これは気になる・ならないの話なので、気になる人には
気になるかも知れません。

彼が提案している「最小化できるようにする」については、
できても良いのですが、
彼は
「トップに表示され、しかもWaveformView Manegerを
 隠す方法がない」

「最小化できるようにする等はどうか」
「ドロップダウンメニューから操作できれば良いのではないか」
と提案しています。
最小化できなくても「WaveformView Maneger」を右上の「×」
で閉じて、見たいときに
「メニューのウィンドウ→WaveformView Manegerを開く」
とすれば良いような気もするのですが、どうなのでしょうかね。

ドロップダウンメニューから操作できれば...については、
切り替えだけならそれで良いのですが、削除の操作などは
少し面倒になりますね。
(コンボリストボックスのような実装にして、メニューアイコン
横に埋め込んでしまうような方法も無い訳ではありませんが)


b) Waveform マネージャーでのチェックボックスは紛らわしい

については、確かに紛らわしいと思います。
(以前、お話しましたが、直感的にはチェックボックスで
表示・非表示の操作をどうしても連想してしまいますし。)

チュートリアルを読んで理解できれば、今の動作・実装も
納得できますし、スペース効率にもチェックで済むのは
寄与するのですが(^-^;

より直感的なチェックボックスで表示・非表示を切り替えて
「View」の所を「Delete on Exit」みたいにする案も
ありますが、急に変わると混乱を招く恐れはあります。
彼の提案している3カラムにするのも一つの解だと思います。

#もし3カラムにするなら、彼の提案する
#Name, Display Enable, Delete on Exit
#の順が良いかな。
3.21A 実装しました。
288 ヘルプ -> バージョン情報ダイアログ上の、「チュートリアルは」のリンク先のローカルファイルですが、WindowsのデフォルトブラウザをFirefoxにしてあると開けないようです。

3.21A 修正しました。
289 pcke <= repeat (1) @(negedge pclk) cke;
で、パースエラーが発生する
3.21B repeat &&event expression 付きassignは、サポートしていません。
=>3.21Bにて実装しました。
290 I found an incompatibility between Veritak and one of the Xilinx
models. In the Xilinx 8.2 library, the file ISERDES.v has the following
code. Note in the 1st section the mix of blocking and non-blocking
assignments...


initial
begin
.....

case (DATA_RATE)
"SDR" : data_rate_int <= 1'b1;
"DDR" : data_rate_int <= 1'b0;
default : begin
$display("Attribute Syntax Error : The attribute DATA_RATE on ISERDES instance %m is set to %s. Legal values for this attribute are SDR or DDR", DATA_RATE);
$finish;
end
endcase // case(DATA_RATE)

......

case (DATA_WIDTH)

2, 3, 4, 5, 6, 7, 8, 10 : data_width_int = DATA_WIDTH[3:0]; // ************* BLOCKING
default : begin
$display("Attribute Syntax Error : The attribute DATA_WIDTH on ISERDES instance %m is set to %d. Legal values for this attribute are 2, 3, 4, 5, 6, 7, 8, or 10", DATA_WIDTH);
$finish;
end
endcase // case(DATA_WIDTH)

....

end


Because of the block/non-block, the following code later in the module gets an
error:

always @(data_rate_int or data_width_int) begin

casex ({data_rate_int, data_width_int})

5'b00100 : begin c23=1'b0; c45=1'b0; c67=1'b0; sel=2'b00; end
5'b00110 : begin c23=1'b1; c45=1'b0; c67=1'b0; sel=2'b00; end
5'b01000 : begin c23=1'b0; c45=1'b0; c67=1'b0; sel=2'b01; end
5'b01010 : begin c23=1'b0; c45=1'b1; c67=1'b0; sel=2'b01; end
5'b10010 : begin c23=1'b0; c45=1'b0; c67=1'b0; sel=2'b00; end
5'b10011 : begin c23=1'b1; c45=1'b0; c67=1'b0; sel=2'b00; end
5'b10100 : begin c23=1'b0; c45=1'b0; c67=1'b0; sel=2'b01; end
5'b10101 : begin c23=1'b0; c45=1'b1; c67=1'b0; sel=2'b01; end
5'b10110 : begin c23=1'b0; c45=1'b0; c67=1'b0; sel=2'b10; end
5'b10111 : begin c23=1'b0; c45=1'b0; c67=1'b1; sel=2'b10; end
5'b11000 : begin c23=1'b0; c45=1'b0; c67=1'b0; sel=2'b11; end
default : begin
$display("DATA_WIDTH %d and DATA_RATE %s at %t is an illegal value", DATA_WIDTH, DATA_RATE, $time);
$display("DATA_WIDTH %d and DATA_RATE %s at %t is an illegal value", data_width_int, data_rate_int, $time);
$finish;
end

endcase

end // always @ (data_rate_int or data_width_int)


I thought you'd like to know!
3.21C 3.21C fixed it.
291 I'm seeing a problem when using the force statement in a testbench.

For this test, I am 'reaching' into the chip hierarchy and forcing values into
a module that is currently a stub.

Here's code that shows the error. In looking at my (old) Verilog-XL manual,
the force statement allows the LHS to be a concatenation.

/* THIS IS LINE 1.....
Evaluating module...
c:\tmp\z.v(30)::Error: Invalid forced NET #_6
Error Detected in Elaboration Process.
*/


`timescale 1 ns / 10 ps

module top ();
reg clk;
wire x;
wire y;


target u_target (
.clk (clk),
.x (x),
.y (y)
);


initial
begin
// These are OK...
force u_target.x = 1'b1;
force u_target.y = 1'b1;

// This is bad...
force {u_target.x, u_target.y} = 2'b11;

end


endmodule


module target (
input clk,

output reg x,
output reg y
);

endmodule

=>
Although I did not mention it in my last email, the 'release' command
also has a error.
3.21D 3.21D fixed it.
292 Here's a minor comment on the GUI...

When I repeatedly hit the 'Entire Wave' button, the display seems to toggle
between two zooms, neither one is what I would consider to be the entire wave.

In one of the zooms, the entire wave is displayed, but it does not fill the entire window

The other is zoomed in from time 0 until about half of the total time.

Might I suggest....

I like the toggle idea, if you hit 'Entire Wave' show the entire wave zoomed to fill
the window. Then change the button to be named 'Last View'. If you hit the button
again, it zooms you back to the previous view and the button is renamed 'Entire Wave'
3.21D 3.21D applied it!.
293 There are funny interactions with the new 'Entire Wave' / 'Last View'
operation and the normal zoom buttons.

If I start and hit 'Entire Wave', everything is fine and the button changes to
'LV' (last view).

I position my cursors and hit the |+| (cursor zoom) button and I see the proper
view, BUT, I now can't go to the 'EW' zoom because the button has retained
the LV state. So...

a) Maybe having the button Entire Wave button change state is a bad idea -
maybe you should just add a Last View button instead?

OR....
b) Maybe the EW/LV button should not only toggle, but change back to EW
whenever another zoom button is hit?


I think option (a) is cleaner and probably less prone to bugs.
3.21E Yes, I know this phenomenon.

Current Code(3.21D) is as below.
3 variables are added.

In the implementation, the definition of "Last" is clear to user
because of visible mode of Entire/Last.

I prefer to the idea b) because "Last" is clear to me and users.




//Oct.19.2006
unsigned __int64 old_time_per_dot;
unsigned __int64 old_draw_start_time;
bool entire_view;

Hit Entire button
{//Oct.19.2006 TRY
entire_view=!entire_view;//change mode
if (entire_view){
old_draw_start_time=draw_start_time;//Oct.19.2006
old_time_per_dot=time_per_dot;
time_per_dot=(last_sim_time )/width;//
draw_start_time=0;
}else {
time_per_dot=old_time_per_dot;
draw_start_time=old_draw_start_time;

}
draw_toolbar();//Draw toolbar
CRect Client_rect; GetClientRect(Client_rect);
InvalidateRect(&Client_rect,TRUE);
UpdateWindow();//repaint window
}
293 SystemCという言語がありますが、これを扱われる予定はありますでしょうか?
- SystemCであれば、VPIといったインターフェイスなしに、シミュレーション時
間の短縮は可能なのでしょうか?
Veritak SV SystemC、Untimedでモデリングし、VerilogHDLとは、DPIでインターフェースする方法もあります。
294 Veritak (3.21E) にて、ゲートシミュレーション(Xilinx ISE(8.1.03i))を行った
ところ下記のエラーポップアップが表示されストップします。

---------------------------------------------------------------------
EC:2884 MapViewOfFile. Can not allocate. memory..
5 size=12816632low_address=406650880high_address=0hdiskpmap=00000264
---------------------------------------------------------------------

お手数ですが、どのようにすれば対処できるのかのご教示の程、宜しくお願い致します。
- Archive用のメモリが確保できなかったようです。このエラーは、
 
・PCの物理メモリ
・プロジェクトのMax Archive DISK(Default400MB)
・Disk残容量

に関係します。恐らくArchive Diskの設定を400MBより上げていらっしゃるのではないかと思います。

<YESの場合>
このArchive Diskは、UseDiskオプションを設定していないと仮想メモリを使いますのでPCの搭載物理メモリに関係します。1GBを超えると仮想メモリも苦しいと思います。その場合は、UseDiskオプションを選択Save後に再Loadしてください。

<NOの場合>
PCメモリ量または、OSの仮想メモリの設定を変える必要があると思います。

また、上記とは別件ですが、、ゲートSIMでは、波形Saveを使わずにハードTOPの信号だけをVCDで観察したほうがよいのでは?と思います。
295 Running the code of an experienced VLSI designer that simulates using ModelSim I found a potential bug in Veritak. I tried version 3.10b and then 3.21e. This is the construct that has a problem:

always @(*) begin //<- problem
//always @(posedge clk) begin // RL <- OK
case ({first_pixel_color,second_pixel_color})
4'b00_01: //GBG
first_center_code = 2'b01; //rb, rg
4'b00_10: //GRG
first_center_code = 2'b11; //rb, bg
4'b01_00: //BGB
first_center_code = 2'b00; //rg, rb
4'b10_00: //RGR
first_center_code = 2'b10; //bg, rb
default:
first_center_code = 2'bxx; // invalid color code
endcase
end

I think that the problem construct is legal, please let me know if this is a bug or not.
3.21F This is not Veritak-bug on LRM.
However synthesis behavior and Modelsim's may be different from the result of Veritak Simulation.


1)Modelsim triggers the always *,then,
first_center_code becomes 00.
2)Veritak does not trigger the always*,so,
first_center_code remains 2'bxx.

This is due to difference of scheduling seq. of thread and continuous assign statement.(port assignment) LRM states nothing about the seq.
Similar discussion can be found in comp.lang.verilog.

Anyway, 3.21F fixed this issue, for the reason of better compatibility.
296 The coding style below substitutes multiple levels of ternary expressions for assigns and is, for some people, easier to visualize and verify. For example, I have a script that automatically inserts an assertion on each "begin" "end" block and at the end of the Veritak simulation I can tell, from the assertions fired, which blocks were covered by the simulation. With assigns and ternary expressions I don't know how to easily do statement coverage without using a simulator like ModelSim or VCS that includes coverage support.
T.B.D. Sorry,supporting coverage is long way for veritak.
297 下記のようなテストmoduleを作成して
みましたところ、3.21Fで例外エラーが発生するようです。
(OSはWindows2000、なお3.21Dでも例外エラーが発生します。)


reg [1:0] first_pixel_color;
reg [1:0] second_pixel_color;
reg [1:0] first_center_code;

のコメントアウトを外せば、例外エラーは発生しません。
また、regがコメントアウトのままでも、

//always @(*) begin //<- problem
always @(posedge clk) begin // RL <- OK

としてやれば、

first_pixel_color 不明な識別子です。
...
と怒られるだけで、例外エラーは発生しません。

例外エラーメッセージボックスが表示されるだけで、
操作は継続できるので、実害は無いですので、
大きな問題ではありません。とりあえずご報告まで。


以下、テストmoduleです。
------------------------------------------------------
module test;

reg clk = 0;
always #50 clk=~clk;

/*
// 実害はないが、この reg をコメントにすると例外エラーが発生する
// ↓ always @(posedge clk) では例外エラーが発生しない
reg [1:0] first_pixel_color;
reg [1:0] second_pixel_color;
reg [1:0] first_center_code;
*/

always @(*) begin //<- problem
//always @(posedge clk) begin // RL <- OK
case ({first_pixel_color,second_pixel_color})
4'b00_01: //GBG
first_center_code = 2'b01; //rb, rg
4'b00_10: //GRG
first_center_code = 2'b11; //rb, bg
4'b01_00: //BGB
first_center_code = 2'b00; //rg, rb
4'b10_00: //RGR
first_center_code = 2'b10; //bg, rb
default:
first_center_code = 2'bxx; // invalid color code
endcase
end

initial begin
#5;
first_pixel_color = 2'b00;
#5;
second_pixel_color = 2'b10;
#10000;
$finish;
end

endmodule
3.21G 3.21GでFixしました。
298 FAQ297のベンチをロードすると
「構文解析エラー」で止まるのですが、
ここで「Reload」「Reload&Go」「Recompile」ボタンを
マウスで”連射”をすると、タイミング?により
「Internal Error 1040EOF」というダイアログボックスが
表示されて、以後おかしな動作をします。

ソフト的な同期の取り方で、タイミングの問題がある部分
なのかも知れませんね。
::PostMessage(veritakwin_handle,WM_COMMAND,153,(LPARAM)0); //reload & GO
Sleep(220);
のような記述でも再現しました。
T.B.D.
299 During the compile of the attached project, the bayeri.v file causes Veritak 3.21F to crash during compilation. If I comment out the second, third and fourth causes of the crash, the compile finishes but the simulation crashes. Please treat the code as confidential.

I believe that assigning elements of a 2D arrray to wires is legal Verilog 2001, please let me know if you agree.
3.22A 3.22A fixed it.
300 I am out of the office so it is difficult to send you an exact
eample of a simulation problem I found when reading a memory.

I declare a memory:

reg [31:0] mem [15:0];

If I try to read from the memory using code like:

always @(*)
rd_data = mem[addr];

I don't get the current value in the memory. It is as if the
a change to the memopry at location 'addr' does not properly
trigger the always statement.

If I use code like:

wire [31:0] mdata = mem[addr];
always @(*)
rd_data = mdata;
3.23A 3.23A fixed it
301 I believe your implementation of wire delays is wrong.

Unlike propagation/inertial delay, wire delays are
supposed to model transmission-lines. As such, narrow
pulses are NOT to be suppressed. My testing shows the
Veritak suppresses pulses that are shorted than the
specified wire delays ...??
3.23A 3.23A fixed it
302 In the Waveform window, if I expand a bus and then
try to drag and drop a signal directly above the
expanded bus, I get the error message:
"Source/Destination should not include analog type."

If the bus is not expanded, I can do the drag & drop OK.

Also -

If I expand a bus, I can drag and drop individual signals
from the bus to other lines (nice!), but if I Save and exit, the
individual signals are not restored the next time I start
Veritak.

T.B.D. T.B.D.
303 Quitting Veritak should call "End of Simualtion" Call back before exiting. 3.22A 3.22A implemented it.
304 一点、Waveform Viewerで不具合なのか仕様なのか
解らない現象がありましたので、ご報告いたします。

http://japanese.sugawara-systems.com/opencores/VPI/microcpu.ZIP

の micro_cpu.v コードで、まず

// ROM
rom rom(.rom_address(pc),.Data(rom_data));

の行を

rom rom2(.rom_address(pc),.Data(rom_data));

にして、インスタンス名を変更して保存。
プロジェクトを開いてシミュレーションします。
すると逆アセンブラ部などの波形は当然消えます。
一度、Veritakを終了し、

rom rom2(.rom_address(pc),.Data(rom_data));

を再び

rom rom(.rom_address(pc),.Data(rom_data));

に戻して保存し、再度シミュレーションすると、波形の色が
少し変わった色になります。
再現性はあるのですが、場合によっては、
波形の色が滅茶苦茶になったりする場合もあるようです。

何かカラー値を保持している変数が壊れている?か何か
しているような動作にも思えます。
3.23B ご指摘の現象は、一部仕様、一部バグです。

>すると逆アセンブラ部などの波形は当然消えます。
この時点で、内部的なオブジェクトはなくなり、フォーマット情報も蒸発します。これは仕様です。


>再度シミュレーションすると、波形の色が
>少し変わった色になります。
 フォーマット情報は消えていますので、Default色になるのが本来の仕様です。

>再現性はあるのですが、場合によっては、
>波形の色が滅茶苦茶になったりする場合もあるようです。
フォーマット情報を初期化していない場合がありました。
305
http://japanese.sugawara-systems.com/opencores/VPI/microcpuNov.11.ZIP

のアーカイブ内「simulation\custom\mcpu_gate.vtakprj」

を用いて、ゲートシミュレーションをする際、
当方の環境では添付する err.png のエラーが発生し、シミュレーションが
通りませんでした。

合成ツールのバージョンは
Quartus II 6.0sp1 Web Edition Fullです。
(現在、ALTERAからダウンロードできる最新のバージョン)

stratixii_atoms.v

をコンパイル中にハングアップするようです。
3.23C 6.0のstratixii_atoms.vライブラリで、Invalidな記述によりクラッシュしていました。これについては、3.23Cで改善しました。

たとえば、下で、datab_widthは、parameter定数1で、結果concatのrepeat項は、マイナスになってしまっています。

max[71:0] = {{(74 - datab_width){1'b1}},{(datab_width -2){1'b0}}};
min[71:0] = {{(74 - datab_width){1'b0}},{(datab_width-2){1'b1}}};

3.23Cでは、コンパイルエラーとしていますが、処理は、継続するようにしました。
306 現在DDRのコントローラを評価しており、Veritakでシミュレーションを
行っています。

コンパイルを実行したところ、下記のエラーが出て
シミュレーションできません。
mem_bCan not allocate memory.
mem_bCan not allocate memory. Exiting ..
finished with incomplete compilation

ちなみにmem_bというオブジェクトはDDRメモリのシミュレーション
モデルの中で使われています。

FAQの76項を参照しましたが、当方の環境では
物理メモリを3GB搭載しており他にメモリを消費する
アプリケーションはありませんので、十分であると
考えています。

プロジェクトの設定でエラー回避することができるでしょうか。
T.B.D. 当該エラーは、OSに要求したメモリが確保できなかったエラーです。そのために、特にプロジェクトの設定によるところは、ありません。

サムソンの1G DDRモデルでは、270MB程度消費していました。従いこれ単体ではなく、

1)何本かインスタンス化されている
2)メモリ以外のデザインが大きい

のいずれかの可能性が大きいと思います。
1)の場合は、他のシミュレータでも状況は、同じだと思います。
2)の場合は、コンパイルにかなり時間がかったった上で(数分)出てくるエラーのはずで、その場合は、Veritakの限界の可能性が高いです。

VISTAでは、メモリアロケーションの効率が高いようですので、VISTAで改善できる可能性もあります。
長期的なソリューションとしては、Elaborationで消費するメモリとRUN-TIMEで消費するメモリを分離しようと思います。ご迷惑をおかけし大変申し訳ありません。
307 the buttons at the waveviewer windows are perfectly organized to me,
for the main window i would like to propose to change the order of
the buttons in the (more common) way:

1) (re)open
2) (re)open and go
3) save

(most windows application use this order)

--- spacer ---

4) scope tree
5) wave viewer
6) new wave viewer

--- spacer ---

7) compile
8) stop compile

--- spacer --

9) go
10) step



i think this makes sense, because of the workflow:
open a file - compile - go


<Another person wrote:>


確かに一般的なアプリケーションでは、説明にある流れに
なるのが自然な気もします。

#まぁ、慣れの問題もありますが...。

ただ

1) (re)open
2) (re)open and go
3) save

が「Reload」「Reload & Go」の動作になるのか、
「既存プロジェクトを開く」や「Load Verilog」のような
動作になるのかによって、
全然意味が変わってくるような気もします。

Veritakの場合、プロジェクトをロード後、

シミュレーション

外部テキストエディタでソース編集

再シミュレーション(Reload & Go)

のような動作を繰り返す事が多い(RTL記述・デバッグ作業中等)
と思いますので、
仮にプロジェクト新規作成・オープン系のアイコンを
新設するにしても「Reload」「Reload & Go」「Recompile」
のアイコンは独立していた方が良いと思いますが、
いかがでしょうか?

使い勝手に繋がる部分ですので、
皆さんのご意見も是非よろしくお願いします。


ここで、実は私的には「Reload」と「Recompile」の違いが
よく解らずにいる(^-^; のですが... (ぇー

よくある統合開発環境系のIDEアプリケーションですと、
現状のメニューの「ファイル」の所で
「Verilogプロジェクト」メニュー内で行える
「新規プロジェクト作成」や「Load Verilog」等に
関係する部分が行えるのですが、この辺りも
「あれれ」と思う人も居るかも知れませんね。

#Quartus等のメニュー体系が参考になるかも知れません。


あと「Load Verilog」という名前も紛らわしいのですが
これは「プロジェクトをロード」ですよね。
少なくとも「Verilog」ではない気がします。

プロジェクトをロードとプロジェクトを開く動作の違いも
ありますので、なかなか難しいですね。

#私は既に今のメニューで慣れてしまっているのですが
#最初、実は戸惑いました。
T.B.D.
308  SpartanIIIを開発しています。

 ハード設計者がクリア信号を省いたため、シュミレーション時
予備ピンから強制的にリセットを入れる様にしました。FPGAの
プルアップ等ではノイズ的に不安なので、実動作時はレベルを
設定しています。
 このピンをforce文で設定した場合、上位モジュールに信号が
伝わりません。レベル設定を判定文にすると伝わります。
 この様なものなのでしょうか。

 ..大変便利なツールでとても助かっています。
3.2x Fix済です。
309 It's been a while since I've talked to you. I have a question/puzzle
on a Veritak performance issue.


I have a design that the pre-processor expands to over 13,000 lines. Of
course, many are blank since the preprocessor strips the comments out, but
there are a lot of active lines of code.

The simulation time seems very long, so I did some experiments. I have a
test that can take either 12 seconds or 3 seconds depending on the following
Verilog code. This code is not directly involved in the test, I think it merely
uses up simulation time.

In the following code, if I comment out the case statement, my test runs
quickly. If I leave the case statement in, the test is slow. Can you think
of any reason why the case statement would change the simulation time
so dramatically?
- シミュレータ上は、考えにくいです。Diskの消費を比較してみてください。駆動されているインスタンスが違うとDiskの消費にも現れます。
310 've made some changes to my design, and during the debug
process as I change the code I've seen the following error
message:

Info: Parse Analysing...
Parse Analysis Finshed.
Loading vpi
Generating Scope
Evaluating parameter..
Evaluating generate...
Evaluating reg/wire...
Evaluating module...
finished with incomplete compilation
NULL FILE NAME :Error: u_chiptop Internal Error EC=758
NULL FILE NAME :Error: u_chiptop Internal Error EC=758
NULL FILE NAME :Error: u_chiptop Internal Error EC=758
NULL FILE NAME :Error: u_chiptop Internal Error EC=758
NULL FILE NAME :Error: u_chiptop Internal Error EC=758
Error Detected in Elaboration Process.

I tracked the problem down to "reaching into the design" for non-existent signals, ie
release {u_chiptop.u_htp.u_not_a_signal1, u_chiptop.u_htp.u_not_a_signal12,
u_chiptop.u_htp.u_not_a_signal3};


Is there any way for Veritak to provide more data to help track down problems like
this in the future?
3.23D 3.23D Fixted it.
311 I am seeing a dialog box pop up with the message "Assert Error 348"

This happened after I dragged a 400 bit bus to the Waveform viewer window,
then expanded it to see all the bits, then tried to scroll down to see the lowest
bits in the waveform. It scrolled down to about bit 300 in the bus, then
started displaying the Assert Error 348
3.23E 3.23E Fixed it.
312 and have been very happy with the tool. I have been using it excusively instead of Modelsim ever since I bought it. I especially make use of the VHDL to Verilog translator. That feature has saved me countless hours of manually converting VHDL to Verilog.
I recently have a project that is about 40K gates and have found a limit to the time I can run a simulation. What appears to happen is that I run out of archive disk space when the project is set to the default 400MB. I get the message "Remaining Disk Capacity becomes less than 100MB Please stop the simulation" after running about 15mS (clock is 32MHz) and the simulation stops. At this time, the archive disk = about 314MB. If I change the archive disk limit to 500MB, the simulation can continue but then stops again at about archive disk=414MB. I get the message "EC:2884 MapViewOfFile. Can not allocate memory.. 5 size=5268632low_address=414253056high_address=0hdiskpmap=000001F4".
One of the nice features of Veritak is that it saves all the data in a simulation so that any signal can be displayed after the run is finished. However, this might be the reason I run out of memory space. Modelsim only keeps the signals that are in the wave view. If you need to display a signal that was not in the wave view at the end of the simulation, you need to start Modelsim again with that signal in the wave view. This same simulation runs to completion at 40mS in Modelsim.
Is there a way that I can save only the signals of interest to keep from filling up the archive disk allocation? I am only concerned with a small subset of the total number of signals and this would free up memory for more simulation time. Or, is there some setting that will alow me to go beyond the 414MB where the simulation stops? I have 2.4GB of virtual memory and 1.2GB of physical memory available. Processor is Intel Pentium M.
3.31 Sorry, there is no switch for that purpose in current release. I understand your requirement. So,suggestion should be implemented in future release.
=>3.31implemented it.

Yes, Check "use disk option " on the project setting.

.Check "use disk" on the project setting.
.Set ex. 1000MB archive 300MB display ..(change as you like..)
.Save the project.
.Restart the project.

This option enables using physical disk instead of virtual memory.
Default setting consumes about 1.5GB on your physical disk. (400MB+1GB+etc..)
Please make sure you have adequate disk space by for your desired setting.You can save beyond 4GB if your disk is formatted by NTFS.
313 generate ifのSCOPEラベルについて 3.23E Verilog 2001仕様で不明確になっていましたが、下記の通り2005仕様に準拠するのが推奨されています

.3.23Eよりラベル宣言がない場合、コンパイラ内部で暗黙ラベルを生成する仕様に変更しました。詳しくは、こちらのチュートリアルをご覧ください。
314 $fgetcについて
module test();

parameter filename = "data.bin";

initial begin
makefile();
#5;
readfile();
$finish;
end

task makefile();
integer fo;
reg [31:0] ad;
begin
ad = 32'b0;
$display("write start -> %x, %x, %x, %x", ad[24 +:8], ad[16 +:8] , ad[8 +:8], ad[0 +:8]);
fo=$fopen(filename, "wb");
for (ad=0;ad<= 32'h200;ad=ad+32'b1)
begin
$fwrite(fo,"%u", ad[0 +:8]);
$fwrite(fo,"%u", ad[8 +:8]);
$fwrite(fo,"%u", ad[16 +:8]);
$fwrite(fo,"%u", ad[24 +:8]);
end
$fclose(fo);
end
endtask


task readfile();
integer fi;
reg [31:0] ad;
reg [31:0] data;
reg [7:0] piyo;
integer I,J;
begin
data = 32'b0;
$display("read start -> %x, %x, %x, %x", data[24 +:8], data[16 +:8] , data[8 +:8], data[0 +:8]);
fi=$fopen(filename, "rb");
I=0;
for (ad=0;ad<=255;ad=ad+32'b1)
begin
data[0 +:8] = $fgetc(fi);

data[8 +:8] = $fgetc(fi);
data[16 +:8] = $fgetc(fi);
data[24 +:8] = $fgetc(fi);
$display("%x, %x, %x, %x", data[24 +:8], data[16 +:8] , data[8 +:8], data[0 +:8]);
`ifdef Veritak_use8 //Use command line Define
if (I !==data) $display("fail");

`else //LRM states 32bits as the unit of $write("%u");
if (I%2==0) begin
if ( J==data) $display("fail");
//else $display("checked");
J=J+1;
end
`endif
I=I+1;
end
$fclose(fi);

end
endtask

endmodule

0が出力されて欲しい所で 20 が出力されているような動きになりました。

=>VCSでは、
20, 20, 20, 20
20, 20, 20, 01
20, 20, 20, 02
20, 20, 20, 03
20, 20, 20, 04
20, 20, 20, 05
20, 20, 20, 06
となり、Veritak3.23Eと同じになってしまいました。
やはり、これが”業界標準”なのでしょうか?
3.23F
TIPS:
バイナリデータを読み書きするには、fopenのパラメータを”rb”、"wb"にします。(参考) テキストモードとバイナリモードについては、たとえば、こちら

%cについては、シミュレータの実装依存だと思います。ストリングの1文字として解釈すると00をPADされたもの解釈して空白文字にする実装もあるかと思います。(3.23E/VCS)。LRMには、ASCII Characterとしか書いておらず、ファイル出力の場合、RAW Binaryとするか、空白にするか実装に依存するところだと思います。

3.23Fから、RAW Binaryで書き込む処理に変更しました。

(本来RAW Binaryで書き込むのは、%uを使うのがよろしいかと思いますが、LRMで、その単位を32ビットと規定しているために、使いづらい場面も想定しました。下の回答もご覧ください)
315 VCSでは
"%u" の方は...

00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
01, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
02, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
03, 00, 00, 00
....

となりました。

$fwrite(fo,"%u", ad[7:0]);

で ad の8bitの値を 32bit整数型(予想ではunsigned : 符号なし)で
書き出しているようです。
3.24A %uは、8ビット単位で処理していました。LRMでは、32ビット単位と明記されておりバグです。

3.24AからDefault32ビット単位とするように変更しました。なお、いままでの仕様は、Veritak拡張オプションとして、プロジェクトオプションで指定可能です。また、3.24以前のプロジェクトを読み込んでも旧仕様で動作するようにしています。

これにより、
拡張仕様(旧仕様)

write start -> 00, 00, 00, 00
VPI Warning: You are using Veritak Extension for [u] in the unit of byte.
read start -> 00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 01
00, 00, 00, 02

3.24以降のDefault仕様
write start -> 00, 00, 00, 00
read start -> 00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 00
00, 00, 00, 01

になります。

なお、LSBから書き始めます。Endianの違いは、別にご注意ください。
316 One of my clients is using 'trireg' in his simulation
environment. Do you have any plans to support this?
3.26 Generally speaking,trireg is not trivial to implement.
That's why trireg is trireg!

Of course I would like to implement it.
=>3.26 implemented it.
317 質問、要望のメールではなく
お礼のメールです。

今年の初めからかなり大規模なFPGAの設計を
行なっておりましたが、(Xilinx XC2Vxx CELL使用率 ほぼ100%)
おかげさまで無事製品開発を終了させることができました。
現在InterBeeに開発製品を出展しており、好評を得ています。


弊社での設計ルールはVHDLとなっていますが、
メーカー提供のSDRAMシミュレーションモデルがVerilogしかな

なんとかならないかと検討していました。
そこで考えたのが
@VHDLでソースを記述(社内ルール、および資産保存用)
AVeritakでVHDL to Verilog変換 & シミュレーション
でした。
このようなやり方をしているのは社内でも私だけですが...

SDRAMを含むシミュレーションでかなりのRTLバグを見つけるこ
とができ、
本当に感謝しています。
また、他のシミュレータにくらべ、
シミュレーション速度もかなり速く、使い勝手も良く
Veritakが無ければ、開発完了までもっと時間がかかったと思
っております。

また、Veritakへの追加仕様の要望やバグFIXも迅速に対応して
頂き感謝しています。
ありがとうございました。
- 評価していただき光栄です。
ご提案、ご指摘ありがとうございました。今後もよろしくお願いします。
318 I just changed to the "medium" tool bar style in V 3.23E
and notice that when I push the -> (start simulation) button,
it turn blank instead of some pause icon appearing. The blank
button works as a pause, however.
Jan.2007 I didn't think you happend to see the under-developing icon by contributer. 3.24A should show better,but still underdeveloping version for this icon.
This should be fixed by Vista-addressed version Jan.first.2007.
319 In the waveform view, is there a way to set the number of hierarchy
levels to show in the scope column? A lot of time, I just want to
see the module name, not the whole hierarchy leading to it.
3.14B Let me consider this. It seems not too difficult to handle..
320 VCDファイルへのダンプと $fopen/$fdisplay 等のシステムタスクを使った
ファイル書き出しが別の階層に行われてしまいます。

例)
ある回路があり、
その回路のRTLシミュレーションを行う階層

./Sample/

があり、その中にRTLシミュレーション用のテストベンチ、
回路モジュールがあるとします。

./Sample/test_bench.v
./Sample/module1.v
./Sample/Project.vtakprj

その中に、合成用のフォルダ階層が

./Sample/Gate/

のようにあり、

./Sample/test_bench.v
./Sample/Gate/module1.v
./Sample/Gate/Project.vtakprj

のように、Gate回路用のモジュールのシミュレーションを
RTLシミュレーション時に使ったテストベンチを直接参照して
行う場合があると思います。

test_bench.v の中では、

1.VCDファイルへのダンプ
2.$fopen/$fdisplay 等のシステムタスクを使ったログのファイル書き出し

※ 両方ともファイル名にパスの指定はしない。
  $dumpfile ("vcd_test.vcd"); のようにファイル名のみ指定。

を行っているとします。その場合

./Sample/test_bench.v
./Sample/module1.v
./Sample/Project.vtakprj

の階層での VCDファイル/ログファイル の出力は両方とも

./Sample/

に行われます。しかし、

./Sample/test_bench.v
./Sample/Gate/module1.v
./Sample/Gate/Project.vtakprj

のセットのシミュレーションでは

VCD ファイル → プロジェクト のある ./Sample/Gate/
ログファイル → テストベンチ のある ./Sample/

へ、それぞれ保存される動作をします。
3.24D 3.24Aからのバグです。3.24DでFixしました。
321 プロジェクトを開いた際のカレントパス?の動きが不思議な動きをしています。
こちらは、先ほど別の階層のプロジェクトを再シミュレーションしてしまい
自爆してしまいました。

現在、プロジェクトを読み込む方法として
Veritakを起動しておいて、メニューから

「Veritakプロジェクト」→「Load Verilogプロジェクト」

とする方法と

「プロジェクトファイルをダブルクリック」
「Veritakショートカットへプロジェクトをドラッグ&ドロップ」

といった方法があると思います。

まず、
「Veritakプロジェクト」→「Load Verilogプロジェクト」
の方法で、プロジェクト1 を読み込みます。
その後、「Veritakプロジェクト」→「プロジェクトを編集」
とすると、コモンダイアログで開かれるパスは プロジェクト1 のパスになります。
これは期待した通りの動作です。

同様に、

「プロジェクトファイルをダブルクリック」
「Veritakショートカットへプロジェクトをドラッグ&ドロップ」

の方法でプロジェクトロード&シミュレーションを行った後
「Veritakプロジェクト」→「プロジェクトを編集」
とした場合も、コモンダイアログで開かれるパスは各プロジェクトの置いてある
階層パスになって欲しいものです。

しかし、以下のような手順をとると、別の階層が開かれてしまいます。

1.「Veritakプロジェクト」→「Load Verilogプロジェクト」
 の方法で、プロジェクト1 を読み込みます。
2.Veritakプログラムを終了します。
3.「プロジェクトファイルをダブルクリック」
 「Veritakショートカットへプロジェクトをドラッグ&ドロップ」
 のどちらかで、別のフォルダ階層にある プロジェクト2 を開きます。
4.「Veritakプロジェクト」→「プロジェクトを編集」とすると、
 開かれるパスは プロジェクト1 のフォルダ階層になります。
 同様に続けて「Load Verilogプロジェクト」としても
 プロジェクト1 のフォルダ階層 が開かれます。
3.24D 対応しました。
322 D&Drop、プロジェクトダブルクリックの方も
「Veritakプロジェクト」→「プロジェクトを編集」
について確認できました。
一点、仕様について質問させてください。

1.「Veritakプロジェクト」→「Load Verilogプロジェクト」
 の方法で、プロジェクト1 を読み込みます。
2.Veritakプログラムを終了します。
3.「プロジェクトファイルをダブルクリック」
 「Veritakショートカットへプロジェクトをドラッグ&ドロップ」
 のどちらかで、別のフォルダ階層にある プロジェクト2 を開きます。
4.「Veritakプロジェクト」→「Load Verilogプロジェクト」
 「Veritakプロジェクト」→「新しいプロジェクトを作成」
 「Veritakプロジェクト」→「既存のプロジェクトを開く」
 「Veritakプロジェクト」→「名前をつけて保存」

 のどれかを行うと プロジェクト1 のフォルダ階層 が開かれます。

これは、最後に「Load Verilogプロジェクト」をした階層を
記憶していて、それを開くようにするという
狙った動作仕様でしょうか?

私は、回路のバージョン管理をディレクトリ単位で行っており、
ディレクトリ内にプロジェクトやVerilog・テストベンチファイル
を作って、別の作業フォルダへコピーしてはそこで作業する
といった事を行っています。
このような場合、頻繁に「Load Verilogプロジェクト」や
「プロジェクトファイルをダブルクリック」
「Veritakショートカットへプロジェクトをドラッグ&ドロップ」
を繰り返す場合があるのですが、
昨日、「プロジェクトファイルをダブルクリック」 して
起動したプロジェクトをRTL記述を変更して、テストをした後、
「Load Verilogプロジェクト」して「VCDファイルを読み込み」
して「再シミュレーション」する際に、
RTL記述を変更したプロジェクトとは別のプロジェクトを
「Load Verilogプロジェクト」してしまい、
記述を変更したのにシミュレーション結果が
更新されていない事に気づき、悩んでしまいました。(^-^;

このような経験から、
「Load Verilogプロジェクト」
「プロジェクトファイルをダブルクリック」
「Veritakショートカットへプロジェクトをドラッグ&ドロップ」
を問わず、最後にプロジェクトを開いた階層を記憶しておき
コモンダイアログで開く・保存先を選択させるように
した方が良いように思いますが、いかがでしょうか?
3.24E 対応しました。
323 I ran my initial tests using the trireg and they passed! Nice work!

I'll do some more studying of the waveforms, but I believe Veritak
is now getting the same results as Modelsim.

FYI - the test code is modeling a semi-custom register file with
pre-charge then destructive read, so the logic is very odd. It's not
at all how I would have written the code. In spite of that, the test
passes OK.
- Thanks!
324 parameter LSB=0;
if(LSB > 0) // 下位の空きビットをチェーンで埋める・
CHO[LSB-1:0] = CHAIN_I[LSB-1:0];

で呼んでいるので第2パラメータLSB位置は0なので下記 if(LSB > 0) は偽であり、
その下を生成してはけないと思うのですが、なぜか真と解釈されているみたいです。

このようにパラメータによる合成の振り分けは、Verilog2001の genvarや generate
でやるべきなんでしょうが、どうもgenvarで定義できる変数はすぐ後のfor文用にしか使えないみたいで、いまい
ちエレガントに表現できないようなんですが、理解が間違っていますか?

Verilog2001はもう6年近くもたっているわりにはあまり浸透してない気がしますね。
個人的には信号処理を書く上で signed が使えることと、ANSI-C タイプの書き方が
非常に重宝しています。

日本では、シュミュレータのような本当に頭を使う仕事って一部の研究員の方以外は
あまりないですよね。その意味で菅原様は素晴らしいと思います。
どうぞ、さらに良いものにしてください。陰ながら応援しております。
3.26B ご指摘は、
if (0>0) {//TRUEになることはないので、
   ..CHANIN_I[-1:0];//INVALIDな記述でもよい?
}
というVerilog HDL Semanticsに関する問題ですが、当該箇所を見る限りエラーとするべき箇所と考えます。しかしながら、シミュレータのオプティマイズによりdefaultでノーエラーとしてしまうシミュレータ、合成器もあると思います。(ModelSimではエラーとなりました。)
3.26Bから、if文に関し定数評価の畳み込み手法を適用しますので、上のif 文以下は評価されません。

意図されているインスタンス化パラメータにより、別な回路を生成するのは、generate構文の方がSemanticsの意図に近いように思います。


ご支援ありがとうございます。
325 xilinxのDCMを使ったsimulationでModelsimと差が出ましたので
報告です。
DCMの記述は以下のとおり。

DCM_BASE DCM192_120 (
.CLK0 (clk2x_120d ),
.CLK180 ( ),
.CLK270 ( ),
.CLK2X ( ),
.CLK2X180 ( ),
.CLK90 ( ),
.CLKDV ( ),
.CLKFX ( ),
.CLKFX180 ( ),
.LOCKED (pll120locked),
.CLKFB (clk2x_120 ),
.CLKIN (clk0 ),
.RST (pll_reset2x));

// synthesis translate_off
defparam DCM192_120.CLK_FEEDBACK = "1X";
defparam DCM192_120.CLKIN_DIVIDE_BY_2 = "FALSE";
defparam DCM192_120.DFS_FREQUENCY_MODE = "LOW";
defparam DCM192_120.DLL_FREQUENCY_MODE = "LOW";
defparam DCM192_120.CLKOUT_PHASE_SHIFT = "FIXED";
defparam DCM192_120.PHASE_SHIFT = 85;
defparam DCM192_120.CLKIN_PERIOD = 7.8;

クロックを入れてリセット解除後120度位相のずれたクロックが出るはずですがVeritakでは入力と同じ位相となります。
原因はDCM_ADV.vの1063行目lock_period_pulseが出ないためです。
さらにその原因は1062行目の#(period/2)の値が0から別に変わるタイミングとlock_periodの変化するタイミングが同じとなっています。
このためsimulatorでどちらを先に実行するかでパルスが出るか出ないか決まっているのかなと思われます。

VeritakはVersion3.24Fです。
3.27A lock_period<=1;
period <=AA;
で、同時にlock_period とperiodが両方共、0から0でない値になります。
このとき、
assign #(period/2) lock_period_dly = lock_period;
によりlock_period_dlyは、遅延するでしょうか?しないでしょうか?という問題です。MODELSIMは、遅延しますが、Veritak3.24Fは遅延しません。このことは、気づいていたのですが、位相がずれまで考えが及ばず、(周波数は合っている)見過ごしていました。

もう少し厳密に言うと<=による評価順は同一プロセスのなかでは、LRMで保証されています。つまりlock_periodの変化が先で、periodの方は後になります。しかしながら、continous assignをいつ評価するかは規定がありません。シミュレータがどのTIMINGで評価するかで決まってしまいます。 (レース問題)

3.27Aで、 ModelSimの挙動と一致するようにしました。
326 Veritakを使っていて、気が付いた点がありましたので、
ご連絡さし上げます。
シミュレーション画面へシステムタスクで出力されるフォントが
適用されないタイミングがあるようです。
module piyo;
reg p;
wire q =~p;
initial begin
$monitor ("p=%b q=%b time=%t [monitor]",p,q,$time);
p = 1;
//#0;// コメント
p <= 0;
$display ("p=%b q=%b time=%t [display 1st]",p,q,$time);
#0;
$display ("p=%b q=%b time=%t [display 2nd]",p,q,$time);
$strobe ("p=%b q=%b time=%t [strobe]",p,q,$time);
#100;
$finish;
end
endmodule

テストケースとして、
上記のようなどこかのチュートリアルで見たことがある記述で
確認できます。
この状態でシミュレーションを行うと

p=1 q=x time= 0 [display 1st]
p=1 q=0 time= 0 [display 2nd]
p=0 q=1 time= 0 [monitor]
p=0 q=1 time= 0 [strobe]

と出力されます。
ここで、

p=1 q=x time= 0 [display 1st]

のフォントと

p=1 q=0 time= 0 [display 2nd]
p=0 q=1 time= 0 [monitor]
p=0 q=1 time= 0 [strobe]

のフォントが違う事に気が付きました。
Windows 2000/XP共、再現性があるようです。

ここで
//#0;// コメント
のコメントを外し、

module piyo;
reg p;
wire q =~p;
initial begin
$monitor ("p=%b q=%b time=%t [monitor]",p,q,$time);
p = 1;
#0;// コメントじゃない
p <= 0;
$display ("p=%b q=%b time=%t [display 1st]",p,q,$time);
#0;
$display ("p=%b q=%b time=%t [display 2nd]",p,q,$time);
$strobe ("p=%b q=%b time=%t [strobe]",p,q,$time);
#100;
$finish;
end
endmodule

とすると、

p=1 q=x time= 0 [display 1st]
p=1 q=0 time= 0 [display 2nd]
p=0 q=1 time= 0 [monitor]
p=0 q=1 time= 0 [strobe]

全て同じフォントになります。
3.28A 3.28AでFIXしました。
327 In the top level of my testbench, I have a "tri1" signal.

In the "Scope Tree View" window, it shows up with a white box,
I would have probably expected a W type box.
3.27A 3.27A Fixed it.
328 Here's another odd thing in the Scope Tree View window. When I first
start Veritak, long signal names in the STV window will look something
like:
long_signal_na...

If I click on another module in the left pane, then click back on the original
module, I get the full name displayed.

Do you also see this odd behavior?
3.28A 3.28A Fixed it..

329
always文内のノンブロッキング代入
a<=#1 b;
の #1 が定数0として扱われるとありますが、
これは、例えば
組み合わせ回路でalways文を用いて、伝搬遅延を
記述しているような例では、使えないと判断しました。

RTLシミュレーション時でも、デバイスベンダの
プリミティブライブラリやシミュレーションモデルを
使ってシミュレーションする場合、
注意が必要かも知れないと思ったのですが、
この一連の解釈は正しいでしょうか?
3.28A 正しいです。F.A.Q.264の通り、XilinxのコードでNGの場合がありました。ライブラリと指定したフォルダは、自動で効かないようにするべきですが、対応できていないので自分以外のコードが含まれる場合は、オフにしていただいた方が無難です。FASTをONにするとDefaultでONになってしまっているので、これはVersion3.28Aで修正しました。
330 ..causing a compile time crash of Veritak 3.24F.

#(
parameter NRAM=2,
parameter RAM_CS_LEN=clogb2(NRAM),


=>Wonderful job, you are running 33X faster than the ModelSim-Lattice
version that is included with Lattice ispLEVER 6.1. Great work!
!
3.28A Verilog 2001 インラインパラメータ中、constant functionのバグです。
3.28AでFixしました。
331 When I run the test code (below a little ways), Veritak
prints out the following, BUT, the waveform window does
not have all the information, it stops at about 58ns. If I push
the 'run' button again, the rest of the data appears.

**************************************************
Verilog Simulation Ready. Press Go button to start simulation.
------------- Simulation Starts.--------------------

0 test start
2000 set to 1
4000 set to 0
6000 release
8000 test done
c:\tmp\z.v(53):: paused by $stop time=80 ,instance name:top.u_driver


**************************************************
`timescale 1 ns / 10 ps

module top ();

tri1 w1;
tri0 w0;

driver u_driver (
.w1 (w1),
.w0 (w0)
);


endmodule


module driver (
output w1,
output w0
);

reg drive = 0;
reg value = 0;

assign w1 = drive ? value : 1'bz;
assign w0 = drive ? value : 1'bz;

initial
begin

$display("%t test start", $time);

#20;

$display("%t set to 1", $time);
drive = 1;
value = 1;
#20;

$display("%t set to 0", $time);
drive = 1;
value = 0;
#20;

$display("%t release", $time);
drive = 0;
value = 0;
#20;

$display("%t test done", $time);

$stop;
end


endmodule
- Sorroy,but this is not a bug but a feature.

Waveform viewer is designed to update only when the time slot become closed, which means just before next time or $finished. (Waveform viewer does not allow to alternate at the same time slot.) In this example there may be another event after $stop at time 80 (of course you know no event occur but simulator does not know yet), so time signal values at time 80 is not valid yet for the waveform viewer.
You can view current values by using Veripad.
332 WaveformViewerの「Find Pattern」
http://japanese.sugawara-systems.com/tutorial/tutorial/find.htm

にて、T1(黒)/T2(赤)カーソルがある所から
[←] [→] でパターンがマッチした箇所に移動します

と解説にありますが、
[→] については、期待した動作をしてくれるのですが
[←] について、どうにもうまく動かせません。

[→] でヒットする条件で
続けて [←] とすると、
「シミュレーション時間0まで検索しましたが、
パターンはマッチしませんでした」
と表示されてしまいます。

それとも、私の使い方に問題(勘違い)があるのでしょうか?
(もしかすると、[→]のみ動作するという仕様なのでは...
とも理解したのですが)
3.28C [←] [→]どちらでも動くのが本来の仕様です。
3.28CでFixしました。
333 Veritak終了処理について、気が付いた点がありましたので
連絡します。

シミュレーションを”実行中”(実際にシミュレーションしている最中)に、
アイコンでシミュレーションを「一時停止」せずに
直接Veritakを右上の「×」で終了させると、
比較的高い頻度で正常終了しないようです。
(必ず起こる訳ではない)
3.28C 3.28CでFixしました。
334 The compile phase "generated param_list_structure..." seems to
have started taking more time than I remembered.

This started multiple releases ago, it is NOT a new concern.

Has something changed in this area or is my code simply getting
more big & bloated?
- I have not noticed it.
Generally speaking, it is likely that compilation is getting slower when veritak is updated. I always check run-time speed in major update, but was not done for compilation time. I'll check it in next release.
335 verilogのソースファイルを、このツールでプロテクトを掛けることが
可能か教えていただきたく。

もし、プロテクトを掛けられない場合は、プロテクトを掛けたソースファイルでの
シミュレーションは可能でしょうか。可能な場合は何か条件はあるのでしょうか。
3.29 3.29からソースプロテクトをサポートします。当然ながら、プロテクトソース供給する側/される側双方でVeritak-Pro Versionを所持している必要があります。
プロジェクト設定encryptオプションを設定すると暗号化ソースファイル拡張子(.vpp)を生成します。このファイルは、プリプロセス処理後の暗号化したソースになります。Veritakシミュレータでのみ読み込めます。Veritak Versionの依存はありません。
336 marseeさんのSDRAMコアがシミュレーションできません。

http://marsee101.blog19.fc2.com/blog-date-20070210.html
T.B.D. パッチは以下です。
1)
controller.v 724行目 endcase;//構文エラー;は不要
2) always @*のセンス(veritakではセンスしてしまって二つのalways間で無限ループ)問題

二つのalways @* プロセス同士,時刻0で
変数jで無限ループになってしまっています。以下のifdefどちらでもOKですが、どちらかに変更します。なおこの問題は、Veritak固有かもしれません。もう少しインテレジェントにセンス(forループ内のjの変化を無視するようにセンス)しないといけないのかもしれませんが、今のところ良案がありません。(LRMに明記されていません。)動かしてみたい方は、とりあえずパッチを適用してください。設計意図的にはgenerate版の方がよろしいかもしれません。なお、実行時間は全波形Saveで3秒位でした。

`define GEN_ALWAYS
`ifdef GEN_ALWAYS
generate //
genvar gj;
for (gj= DDR_DATA_WIDTH-1; gj>=0; gj=gj-1) begin :loop1
always @ * begin
if (out_tri[gj] == 1'b1)
ddr_dq[gj] <= 1'bZ;
else
ddr_dq[gj] <= ddr_out[gj];
end
end //end for


// inferr the 3-State buffer
for (gj=DDR_DQS_DM_WIDTH-1; gj>=0; gj=gj-1) begin:loop2
always @ * begin
if (dqs_tri_enable_2dx[gj]==1'b1)
ddr_dqs[gj] <= 1'bZ;
else
ddr_dqs[gj] <= dqs_out[gj];
end
end // end for

endgenerate
`else
always @ * begin :loop1
integer j;//jが下のalwaysプロセスに対してセンスして無限ループになってしまうのでローカル変数にしてしまいこれを防ぐ
for (j=DDR_DATA_WIDTH-1; j>=0; j=j-1) begin
if (out_tri[j] == 1'b1)
ddr_dq[j] <= 1'bZ;
else
ddr_dq[j] <= ddr_out[j];
end
end
// inferr the 3-State buffer
always @ * begin :loop2
integer j;//jが上のalwaysプロセスに対してセンスして無限ループになってしまうのでローカル変数にしてしまいこれを防ぐ
for (j=DDR_DQS_DM_WIDTH-1; j>=0; j=j-1) begin
if (dqs_tri_enable_2dx[j]==1'b1)
ddr_dqs[j] <= 1'bZ;
else
ddr_dqs[j] <= dqs_out[j];
end
end
`endif


=>Modelsimは、@*センスについてループ変数(for ループの初期値で設定される変数については、"不感"とする実装にしているように思います。
特にLRMで言及されている訳でもなくやはりソースで避ける記述(generateを使い、実行時定数にしてセンスさせないことを明示する、あるいは、センスする変数を明示(1995スタイル))にするのがよろしいかと思います。なお、Modelsim以外の実装を見て今後の実装については、考えたいと思います。
337 Could you please look at how "event" signals are displayed in the
waveform viewer? They appear to display as XXXXX values.
Sorry,waveform on Event signals is not supported.
I think ModelSim is the same situation as Veritak.
338 I'm getting a "finished with incomplete compilation" message.
Any hints as to what might cause this?

=>
Ah - it shows me a bug in my testbench. So we both have a problem
we each get to solve!



3.29B
3.29B fixed it.
3.29B generates warning if following code is detected.

module infinate_loop;
wire a;
wire b;


assign b=a;
assign a=b;
339 機能提案です。そっと投げておきます。
Veritakで波形のenumを使う場合、
parameter 名で引き出すだけで表示できて便利なのですが、
ModelSimで enum を使う際、

http://japanese.sugawara-systems.com/opencores/VPI/microcpuDec.17.ZIP

のマイクロプログラム方式CPUを例に取ると、
下記の点線範囲内のように記述し、view.do 等の適当なファイル名のファイル
に記しておき、コンソールから「do view.do」のようにすると、

/test/cpu/command

の信号が enum で表示できるようになります。
------------------------------------------------------
virtual type { \
{5'b00000 Add} \
{5'b00001 Set} \
{5'b00010 Sub} \
{5'b00011 Shift_L} \
{5'b00100 Shift_R} \
{5'b00101 Jmp} \
{5'b00110 Sync} \
{5'b00111 And} \
{5'b01000 Or} \
{5'b01001 Xor} \
{5'b01010 Not} \
{5'b01011 Mul} \
{5'b01100 BShift_L} \
{5'b01101 BShift_R} \
} STATE_ALU
virtual function \
{(STATE_ALU)/test/cpu/command} mySTATE_ALU
add wave /test/cpu/mySTATE_ALU
-------------------------------------------------------

現在、ファイル信号名一覧の do ファイルの
書き出し・読み出しには対応していますが、
enum の上記のような書式での読み込み
ができるようになると、嬉しいかも知れません。
(書き出しも...できたらなお嬉しいかも知れません)
T.B.D. 大分先になります。
すみません。(SVの実装を優先させます。enumが言語でサポートされます。)
340 I'm getting the following error message:

...\xxx.v(204)::Error: can not evaluate the term of REPEAT

The design has a parameter file that is included in most files as:

`include "xxxv"

this file is located in the same directory as all other source files.
I also have another directory of other include files and have set
the include dir up in the project settings dialog.

So is veritak correctly reading an include if it is in the same directory as the main source files?

The dialog box for project settings will not allow me to set the source directory as an include directory!

This all works normally under VCS.

Many thanks,

=>


I am very impressed with Veritak. You should be very proud of your accomplishment. Keep up the good work. I've been using it at home for a couple of weeks now and like it very much. As I develop more experience I would be glad to provide you with more feedback.

Perhaps starting a Wiki page (on Wikipedia.com) for all your users to contribute to could extend your documentation with little effort from you.







3.29C Veritak assumes Path root is project file's location.
If an include file can not be open, veritak preprocessor will stop by the error message below.

xx.v(12):: Error: Can not open include file:xxx


=>
This was caused by long-standing bug in certain case.

3.29C fixed it.


=>Thank you for suggenstion on Wikipedia.
Let me consider it .
341 Tak-san,

In the project menu, I added a define statement at the
top of the list:
-Define HW_FLOW_CTL

In a "library module" for my design, I have:

module foo (
input clk,
input rst,
....
....
`ifdef HW_FLOW_CTL
input flag,
`endif
....
);

My top level complains that the port flag is not defined - it looks like
the define does not happen.

If I look in the preout.v file, I see no sign of the `ifdef code that should
have been included.
3.29D I recognized the problem. I'll fix the issue tonight Japan time.
Thank you for your cooperation as always.
342 I did a (dumb) experiment by accident. I did a
foo = {$random} % 0

Would you expect to generate a divide by 0 type error? I don't
get one, I wonder if it should issue a warning?
- Veritak does not generate any types of warning,such as divide by zero error. However, the result should be x. so it is easy to find what is happening. I think ModelSim and other simulators have the same implementation.
343 このvppファイルは、モジュール名、端子名もコード化されていますが、
シミュレーションを実行するとき、上位階層モジュールでモジュール名、
インスタンス名、接続信号等を記入して、上記の.vppファイルを
読み込むことでシミュレーションが可能と理解してよいでしょうか。
- はい、そうです。下記は、サンプルフォルダにあるalu_test_encrypt.vtakprj
のプロジェクトをExポートしたものです。

-include_dir
include
test bench/alu_bench.v
alu.vpp

この場合、alu.vppは、暗号化されて内容は見ることができません。しかしシミュレーションは可能です。これは、vppファイルのときは、自動的にシミュレータ内部で解凍して普通のソースに戻してあるからです。もちろん、aluのインターフェース,ここではテストベンチでの、

alu dut( a,b,
alu_out,
alu_func);



は、あらかじめ、プロテクトソース供給元に、教えていただく必要があります。

344 $fdisplay(file, "$%h/%h %h A:%h X:%h Y:%h P:%c%c%c%c%c%c%c%c%c",
%cで、 Internal Error EC=3410
というメッセージは変わらず出まくります

3.29E 3.23Fからのバグです。3.29Eで修正しました。
345 Veritak 複数起動について - GUIではできません。
コマンドライン(VeritakProのみ)では、複数起動できます。DualCPU以上の環境下でのRegression Testにご活用ください。
346 VCD support has been working on and off with Veritak over the last few
months and now Veritak 3.29d does not seem to produce valid VCD files
which I need to exchange with non-Veritak users for debugging. The
project is under source/formatter_top_disk.vtakprj

Can you please take a look at this project? I attach information about
the free viewer, Wave, that I use.

Look forward to hearing from you. In the past you have fixed this
problem for me but the problem re-appeared.
- Both Veritak and GtkWave read the generated waveform successfully, however,"Wave" finished with parse error.
Sorry, I'm not sure why "Wave" can not read the file.
347 以下のBlock RamをCore Generaterで生成して、Veritakでシミュレーションしてるのですが、ちょっといき詰まっています。RAMに書き込んでるはずなのですが、あとから読み出した時に0の値が出てきます。つまり、正しく書き込めてないようなのです。そこで、書き込む時に、ちゃんと書き込まれているか確かめるために、レジスタファイルの中身を見たいのですが、Veritakでは設定で、32KByteまでしか保存できないのでしょうか? T.B.D. そうです。現状のVeritak圧縮フォーマットでは、RAMの扱いが重いので、そのようにしています。将来的な課題とさせてください。

デバッグ方法としては、
XilinxRAMの値を保持している本体を見つけて、アドレス変換し、注目アドレスの値をモニタします。
たとえば、
initial begin
$monitor("inst ram[constant_address]=%h time=%d",inst.ram_temp[constant_address],$time);

end
で、コンソールに出すか、
或いは、
wire [15:0] ram_data=inst.ram_temp[constant_address];
で、Viewerに出すか、だと思います。
348 チュートリアルに書いてあるようにXilinxのライブラリunisimsやXilinxCoreLibをAdd Lib Dirでプロジェクトに追加すると、コンパイルごとにunisimsやXilinxCoreLibを再コンパイルしてしまうようです。これをModelSimのようにコンパイル済みライブラリを参照するようにするにはどうしたら良いでしょうか?

なお、私の環境でVeritakでシミュレーションすると22秒、ModelSim XE3 Starterでシミュレーションすると4分44秒でした。コンパイル時間は入っていません。
Veritakはコンパイルしている時間が長い気がします。

=>劇的に速くなりました。とてもいい感じです。
3.31
プロジェクト設定で、Use "library_files.txt"にチェックをいれてください。

Veritakは、基本的にはインタープリタで、Modelsimのような中間ファイルを持っていません。(FastModeではModelsimと同じようにJITコードで走ります。)言い換えると、コンパイル済みライブラリファイルという概念が存在しません。このために基本的にはソースからコンパイルというXLのようなつくりになっています。しかし、これでは、Xilinxのライブラリでは、たまらないので、前回コンパイルして実際に使ったファイルだけ使うというオプション設定になっています。


=>

3.31よりUse"library_files.txt"オプションは廃止とし、defaultでF.A.Q.350b)のご提案によるライブラリのコンパイル方法に改善しました。これにより、最初のコンパイルは、変わりませんが、次回コンパイルよりライブラリのコンパイル速度がSpeedUpしメモリ所要量も改善されます。(Xilinx unisim/coregenの例:2-3分ー>15sec程度)また、設計変更で、ライブラリ呼び出しファイルが変わっても、必要なファイルのみのコンパイルを行います。
349 bmpファイルのようにy_outは正しいのですが、y_out_refが1clkずれてます。
modelsim_wave.bmpのように、出来ないでしょうか。
3.30A 一般的には、本現象はレース問題と呼ばれ、同時刻にシミュレータが、どの記述から実行するかによって結果が異なることが原因です。ご存知の通り、VerilogHDLのLRMは、シミュレータの実行順は殆ど規定がなくシミュレータVendor間で結果が異なることがしばしばあります。SystemVerilogでは、実行順について、若干の規定の追加がされたので、多少見通しは良くなっていますが、拝見したところのレース記述は、SystemVerilogになっても解決されないと思います。

このレース記述は、シミュレータ間の差異のみならず、お使いのシミュレータの将来のVersionUpや、オプティマイズオプション等、でも結果が変わってくる可能性があるために、極力、ソースで修正していただきたいと考えております。

しかしながら、今回の現象については、オプションでの対応が可能です。プロジェクト設定の「 wire drived by buffer」をチェックしていただくと、Modelsimと同じ出力結果になります。
350 I also have 2 requests....

a) As a consultant, I'm typically dealing with 5 or 6 projects at a time. When
I click on the File(F) menu, the most recently used projects are listed, but
the names are shortened with \...\
I suspect most users have big enough screen that you could show the entire
pathname for the project.


b) Have you given any more thought to dealing with library directories better?
The last time I tried, it compiled all the files. Given the Xilinx library is big,
this is a bit painful. Could you compile all the specified files, see what's missing
then go find/compile them, then see what's missing, go find/compile them, etc.
You'll need to loop the find/compile process as library files invoke other library files.


Thanks for all the good work!
3.31. Let me consider.

3.31fixed it.
351 同じ回路でステップ数を多くしたところ、添付ファイルの様にエラーが発生しました。
解決できませんか。
3.30B
Veritakの不具合です。3.30BでFixしました。


(自動生成された)大量のテストベクタを読まれる場合、
 mem[0]<=16'hdead;
  mem[1]<=16'hbeaf;
...
で読むのは、文法上は問題ありませんが、シミュレータ製作者の立場からいうとメモリ使用効率の観点でつらいです。上の記述は、$readmemhで代替して読んでいただきたくお願いします。

上の記述は、代入というステートメントであり、コンパイラは、一行一行に対してコードや、デバッグのための(そこにブレークポイントが設定されてもよいように) 付加情報(ファイル名やLineno)を生成します。それが、何十万行もあるとコンパイル時のメモリ消費、コンパイル時間、RunTime メモリ消費となって現れます。さらに状況を悪くしているのは、<=です。<=は、一時的なキューに蓄えられるために、単純な代入=に対して、2倍以上のメモリ消費となります。

これに対して、$readmemhで読む場合は、
 reg [15:0] mem[0:mem_ma];
 initial $readmemh("ファイル名",mem);
という実体としてのメモリオブジェクトの消費しかありません。

比較結果です。
$readmemhなし: コンパイル時間 30sec メモリ消費 142MB
$readmemhあり:  コンパイル時間 1sec メモリ消費 6MB
352 動作モデルからHDLを自動で発生するものですから、Waveform Viewer
も重要なツールですが、任意の選択信号をHexdecimalか10進データで1行N列(clk分
だけ必要となります)
のテキストファイルに出来ないでしょうか?
T.B.D. 検討中です。
=>Pending
353 As I use the "ToolTip" feature on a variable that I have
set the radix to enum, it give me a shortened view of the value with .... at the end
even though there is a lot of room in the ToolTip window.
3.31 Let me check it.
=>3.31 fixed it.
354 <Use"library_files.txt"をチェックすると前回成功したコ ンパイルファイルのみを見にいくので早くなります。数秒程度、長くても30Sec 程度でコンパイルは、終わるはずです。>
この設定をすると vppファイルはNGになるようです。
また、この設定はロジック変更等があると使用できないのでしょうか。
3.31
3.31よりUse"library_files.txt"オプションは廃止とし、defaultでF.A.Q.350b)のご提案によるライブラリのコンパイル方法に改善しました。これにより、最初のコンパイルは、変わりませんが、次回コンパイルよりライブラリのコンパイル速度がSpeedUpします。(Xilinx unisim/coregenの例:2-3分ー>15sec程度)また、設計変更で、ライブラリ呼び出しファイルが変わっても、必要なファイルのみのコンパイルを行います。
なお、ソースプロテクトオプションでは、Define マクロをプロジェクト全般に伝播させるオプションは使用できない制限は変わりありません。ソースプロテクトオプションなしでは、この制限は撤廃されます。
355 I may have found an odd GUI bug.

I have a 2 bit vector, fifo_wr[1:0]. In the waveform viewer, if I
expand the vector so I can see the individual signals, I see a problem
with the "move black cursor to previous edge" button.
If I select wr_fifo[1], then click the button, the cursor moves to the
falling edge OK. If I click again, it moves to the rising edge OK. If
I click again, the cursor does NOT move, it stays stuck on the posedge.

wr_fifo[0] does not show this behavior.

Can you reproduce this?
3.31 Yes, 3.31 fiexed it.
356 gdi++との親和性がよければもっと使いやすくなりそうです。gdi++と併用するとVeriPadでの表示がおかしくなってしまい、いくつかの行がまるごと表示されなくなってしまうのです。
Dropped 調査中です。
=>
かなり難しいです。Dropとさせてください。
357 Fatal Errors:

- resizing "Waveform Viewer" window to no lines (i.e. no displayed lines, the bottom of the window is butted against toolbar) causes infinite loop - Veritak must be killed by Task Manager.


Suggestions:

- please, please, please, please... fixed font for editing. Or at least allow font to be selected.
- tab settings: 8 vs. 4 characters, or user specified
- (line/col) indicator in editor menu not accurate or updated
- Allow <control/A> to select all items (signals) in the Scope Tree View signal display per Windows GUI interface standard.


Comments:

web page, tutorial

(reference: http://www.sugawara-systems.com/tutorial/index.htm, 2007-Mar-14)

1) Tutorial: Suggest commonly-used window menu navigation example format of:


File | Compile Single Verilog Source

or

File => Compile Single Verilog Source

2) Tutorial: uses old Toolbar icons rather than the new icons;
3) Tutorial: Toolbar icon description says "...if you would like old style, see here...", it links to the new style icons rather than the old style(!).
4) Tutorial: Editor window does not get invoked or displayed if the 'Go' simulation button is used.
5) Tutorial: Editor window is displayed if the 'step' simulation button is used.
6) Tutorial: Editor window during simulation does not display line and column number.
7) Tutorial: suggest <NEXT> button/link at end of each tutorial page to take the reader to the next step/page in sequence.
8) The name "Veripad" is mentioned... but not defined.
9) Tutorial: "Reload" actually reloads the source file and compiles the source file, not just reload the source file.
10) Tutorial: Breakpoint, Double-Click actually means double left-click, and the double-click must be on the line number on the left side of the display, not on the text of the line itself.
11) Tutorial: Breakpoint, reference to double-click again to Reset the breakpoint may be more clear if the word "Clear" is used rather than "Reset".
12) Tutorial: Breakpoint, although intuitive, it may be mentioned that the green arrow will point to the line about to be executed.
13) Tutorial: ScopeViewer, pushing 'Scope Tree View' also displays new window called "Waveform Viewer 1".
14) Tutorial: ScopeViewer, "Select all signals..." is done using the standard Windows object selection constraint mouse/keyboard techniques: Shift + left-button selects a range of items, Control + left-button selects individual items, left-button + drag selects range of items. Right click brings up 'action' menu - what to do with objects.
15) Tutorial: ScopeViewer, 'cancel' misspelled.
16) Tutorial: ScopeViewer, "Clicking Column of Scope makes..." is unclear. What is 'column of scope' - signal column in Waveform Viewer window?
17) Tutorial: ScopeViewer, old time scale and manipulation icons are used in tutorial.
18) Tutorial: ScopeViewer, Left- and right-clicking for cursor placement must be done in the signal display area, not the timeline area. If done in the timeline area then another popup menu will be displayed (which is probably what you do not want).
19) Tutorial: ScopeViewer, T1 cursor is displayed in black, T2 cursor is displayed in red.
20) Tutorial: ScopeViewer, notes, "Right Double-click at Title Bar of Waveform View to change unit of T1/T2 cursor time." did not work for me. Probably my operator error.
21) Tutorial: Scopeviewer, <How to move from View to View>, what does "Clicking title-bar makes highlighting the view" mean?
22) Tutorial: Project, VCD, VCD Data viewer may not be activated until the previous simulation run is 'recompiled'.


User interface notes:

- Middle mouse button (or emulation thereof): steps through simulation.
- Left double-click of variable in editor during simulation displays current value and time.
- Control + Mouse wheel controls Waveform Viewer timescale.



=>
I used a sample Verilog program for this test, but any valid Verilog source
file may be used since this is not program-dependent. The Verilog1.v file
contains:

module hello_world();
initial
begin
$display("Hello World!");
end
endmodule

So to reproduce the problem:

1) double left-click on Vertiak icon on desktop
2) File | Compile Single Verilog Source
3) compile the file Verilog1.v (or any other valid Verilog file)
4) after the compile is finished, create and change focus to new Scope Tree
window by left-clicking the "Push Scope Tree Viewer to Front" button.
(shown in file 'veritak1.png)
5) Now move the bottom of the the Scope Tree viewer window as far to the top
of the window as it will go; (left-click and drag the resize bar to the top
of the wind);at about one (1) line from the top the system hangs.
(partially shown in file 'veritak2.png', but does not show the resize arrow
since the application hangs and does not honour prtscr requests)

Run Windows "Task Manager" and look at process 'VeritakWin.exe' that is
consuming 100% CPU utilization.

I hope this helps.
3.32/T.B.D. Yes, it reproduced on my site.
358 3.31A スナップショット版を利用してみました。

Use"library_files.txt"オプションが廃止になり、
同等の機能がリコンパイル・Reload&Goで
行えるようになりました。これは良い改善です。

そして、Saveするインスタンスの指定機能です。
これは他の商用シミュレータでは出来るものが多いのですが、
使ってみてメモリ使用量・シミュレーション速度とも
インスタンスをユーザが絞り込む事で、
劇的に改善される事を確認しました。
例えば、デバッグが進むにつれ、下位階層のチェックを
外していき、より上位階層の波形だけで確認する事も
可能になり、非常に嬉しいです。
Pro-VersionOnlyなのは残念ですが、この機能は
逆にそれだけの価値がありそうです。

一点疑問なのですが、
プロジェクト設定「Select Save Waveform」で
可能とありますが、これはオプションである必要があるのでしょうか?
プロジェクトのデフォルトでは全階層にチェックを入れておき、
必要であれば全階層にチェックを入れるメニューショートカット
があれば良いような気もしてしまいます。
もしかすると、「Select Save Waveform」を使わずに
従来通りの状態で内部的に全波形を保存すると、
「Select Save Waveform」で全階層にチェックを入れた状態では
全波形をシミュレーションする場合、前者の方が
シミュレーション速度が早かったりする
(判定が少なくて済む?)とか、あるのかも知れませんが。
3.32 All Checkメニューを追加します
359 I'm running the tutorial that was installed my disk by the
installation process.

If I click on the "tutorial top" link, it takes me to your web site,
not to the top of the tutorial on the disk.
3.32 I'll add the link.
360 ALSO - I wish there was a PDF version of the tutorial. Sometimes
having a paper copy to read is convenient. This is NOT a high
priority request!
T.B.D.
361 And very minor comment:

Clean up Total xxhours... line from

-----------Starting Verilog Build Process----------
Starting Verilog PreProcessor...
C:/tmp1/Verilog1.v(1):: Reading
Total 00hours 00mins 00secs for Compilation
Verilog Preprocessing Finished.
Starting Verilog Compile Process...



to:

------------Starting Verilog Build Process----------

Starting Verilog PreProcessor...
C:/tmp1/Verilog1.v(1):: Reading
Total 00 hours 00 mins 00 secs for Compilation
Verilog Preprocessing Finished.
Starting Verilog Compile Process...

or

------------Starting Verilog Build Process----------

Starting Verilog PreProcessor...
C:/tmp1/Verilog1.v(1):: Reading
Total 00:00:00 for Compilation
Verilog Preprocessing Finished.
Starting Verilog Compile Process...

to better see the hours:minutes:seconds for the compile; or just use
xxx,xxx,xxx for the number of seconds of the compile. This is a matter of
personal preference.
3.32
362 Note that the MS Windows GUI specification states that there should be
several fixed-pitch fonts available for all versions Windows, including
'fixedsys' or 'oem fixed'. We have found this true over the past several
decades of Windows development.

I do not believe that Courier is guaranteed to exist on a Windows system
although it usually does. Lucinda Console is another good fixed font that
usually exists on Windows systems.
T.B.D. Yes, I know there are several fixed fonts in windows. Almost of all showed no fixed font in Veripad, that's I meant. Sorry, I'm not sure of the reason behind. Veripad is originally written by a students( who has written c++ boost book!). BTW, veipad is open source. If you are interested in it, please look it.

http://japanese.sugawara-systems.com/veripad/veripad.ZIP
363 It appears that there is a problem with the way Veritak implements the $fscanf system function.

When reading in a binary value using $fscanf(fd, "%b", val), Veritak
interprets underscores as zeros. The data file uses underscores in binary
values as spaces (which is correct by the verilog spec).

Example -
00000000_00000000_011_000_010_000_000_0000


--

=>Thank you for the fast response. I only had some time to try the new
version today and it works very well.
3.32A 3.32A fixed it.
363 Here's a simple test of $fopen that produces a poorly formatted
error message. This is a MINOR problem.

Here's the log output....

C:\tmp\z.v(3)::z
Verilog Simulation Ready. Press Go button to start simulation.
------------- Simulation Starts.--------------------

Can not open the file?Fmissing_file.xyzIn module:z;
C:\tmp\z.v(9)::
C:\tmp\z.v(10):: paused by $stop time=0 ,instance name:z


Note the line
Can not open the file?Fmissing_file.xyzIn module:z;
has some problems with the report. The actual message is a bit
different, some letters got changed during my cut & paste.


Here's the test program:


`timescale 1 ns / 1 ps

module z ();

integer handle;

initial
begin
handle = $fopen("missing_file.xyz", "r");
$stop;
end

endmodule
3.32B 3.32B fixed it.
364 I've been trying the changes to the Veritak that affect the
library processing and I think there are some problems.

In my testbed directory, I have the top level module (testbed.v)
as well as other test modules. If I include the directory as a
library directory, Veritak does not pick up the other files.

If you want, I can try to create a dummy project with several
subdirectories, etc to try to show the problems, but I suspect
this is a obvious enough problem that you should be able to
re-create it without any problems.

=>
OK, I'm showing my age, but in looking at my Verilog-XL manuals,
section 25.1 says:
"Verilog-XL concatenates extensions to the end of names of instantiations
that lack matching definitions and searches for the files with the resulting names.
Each library directory file has either the same name as a UDP or a top-level
module it contains, or that name plus an extension."
Thus, if I use instantiate a module called "Foo", I'd expect Verilog to search the
library directories for filenames like "foo.v" or "FOO.v", etc. Thus, I'd do a
to_lower on the module name and then search library directories for files
with (to_lower()) matching names with appropriate extensions.

I would expect as you scan for unresolved modules, you would NOT actually
read the files and parse them, rather you would simply build up a list of
the files that will be needed. Once you have all the files, then you could
parse them, etc.

If I am dumb and have a design instantiating module "foo"... and I create
a library file named foo.v but actually defining module "bar", then an
elaboration error will happen. Too bad - the user should follow the
accepted naming rules!

Thus, I don't think you need to cache a list of library files - searching
the library directories using this module name to file name matching
only requires you to scan the library directories for matching names,
there is no need to read the library files until each required file is identified.

=>Every project I've worked on with a variety of customers
has followed this naming rule. So I think it is common practice.
The only trick is to ignore case (because of Windows/DOS)
for the file names. This aspect is not addressed by the Verilog-XL
manual.

>世の中にはお行儀の悪いライブラリ?は無いのでしょうか。
3.32B Thank you for very kind explanation. Now I fully understand what you mean. LRM says nothing about such a rule, however Xilinx library seems to follow the rule.
I think I will be able to implement it. Let me consider it in detail.

=>
LRMにない話ですのであると思います。とりあえず、ReCompileボタン押したときは、全ライブラリファイルの強制コンパイルという風にしてみました。
365 3.32Bで落ちてしまいます。 3.32C 3.32B固有のエラーです。3.32Cでfixしました。
366 久方ぶりのメールになります。前回から今日までの間に、着実
に機能が進化し、また高速になっており、本当に助かっています。
開発のご努力は如何ばかりかと拝察いたします。

実は、Veritakを使い始めて以来、「Step実行」を一度も使ったことが
なかったのですが、今回使う状況になり、1点質問(お願い)が
あります。

私は、ソースの管理を行いやすくするため、いくつかのサブディレクトに
ファイルを分散して配置しています。プロジェクトファイルの中でInclude
Directoryを指定することで(添付のJPGファイルのように)、コンパイラー
はちゃんとモジュールを探し出してくれるので、一気に最後までシミュレー
ションを流す使い方ではまったく問題を感じませんでした。

Step実行にして、信号を選択し、それが定義されているソースを
Veripadで開こうとすると、「ファイルが開けません」
というエラーになります。プロジェクトで使う全てのファイルを
テストベンチと同じディレクトリにコピーすると(フラットにすると)
正常に開け、ブレークポイントも効きます。

この件について、私の理解不足のため、使い方が正しくないという
ことはないでしょうか?

現状もし、ソースファイルが複数のサブディレクトリに分散している
場合、上記のような制約があるのであれば、『プロジェクトファイルの
Include DirectoryにあるディレクトリがVeripadのファイルサーチ・
パスに優先的に加わる』という機能を追加できないかご検討をお願いしたい
と思います。よろしくお願いします。
3.32D お世話になっております。


3.32Dでフィックスしました。
367 just downloaded the current Veritak that is supposed to be 3.32C.

When I run Veritak, it reports 3.32B in the Help About box
3.32D 3.32D fixed it.
368 I just tried the latest version of Veritak (332B) and the
lib_dir is much better. I've seen one thing that you may
or may not want to change.

I believe (???) that other simulators I have used do not
care about matching case for module name vs. filename.

Could I suggest...
If the module name exactly matches the filename, use the file.

Else if the to_lower(filename) matches to_lower(filename), use
the file.

I had a module with that had a slight case mismatch between
filename and module name (k vs K) that was hard to see, it
took me a second to figure out why the module was not being
found.

Thanks for the changes so far - it works much nicer!
3.32D 3.32D applied your suggestion.
369 I need a suggestion....

I'm doing a $fopen o f a file and I check the returned value to
see if the open succeeded. If not, I skip the tests that depend
on the fopen working. However, Veritak prints a message
Can not open the file: test.fx2_ep6 In module:testbed.u_fx2_slave.u_fx2_ep6;
C:\usr\JOHNP\hw\testbed\file_proc.v(75)::
Is there some way to not display the message? My code already checks the
value returned by $fopen, so the message is just clutter on the screen.

Suggestions?
3.33A Maybe I should add some switch to suppress warnings on run-time.
I'll add the feature at near future version.
370 Can you please run the following code? Why does Veritak stop?

module z ();

reg err_cnt;


initial
begin
err_cnt = 0;
#10;
wait (err_cnt != 0);

$display("about to stop, err_cnt=%x", err_cnt);
$stop;
end

endmodule
- Veritak finshes if there is no event left in event queue or $finish is executed.

There is no event at wait statement in this case. It means wait(expression) is never true forever in all design project.

To prevent the situation,

always #10 clock=~clock;

is enough.
371 通常は Fintronic の FinSim を使用しております。
しかし、10年程前の古いシミュレータですので、
メーカー提供のモジュール等でサポートされていない構文などが有り、
VeritakWin をサブのシミュレータとして利用しております。

ところで、添付のシミュレーション・テストベンチで
多分 fork --- join がらみではないかと思うのですが
FinSim と Veritak で動作が異なり困っております。


Veritak のシミュレーションですが、FinSim の約5倍、
程度の時間が掛かるようです。
また、シミュレーション時の消費メモリーも、
お送りしたテストベンチで 500MByte 以上食うようです。
これらに付いてもう少し改善されると嬉しいです。
- 添付のようにModelSimとVeritakの波形を見ますと違いがありませんでした。(見易さのために$writeを$displayに置換しています。)従いレース記述によるものと考えます。テストベンチ記述で避けていただきたくお願いいたします。

同時刻のfork join 内のスレッドは、どこから実行されるかは、実装依存です。下のAlwaysがどちらから実行されるかは、実装依存であるのと同様です。

always @(clock) a=b;
always @(clock) b=a;


>お送りしたテストベンチで 500MByte 以上食うようです。
頂いたシミュレーションベンチでのメモリ実使用量は、添付のように4MB足らずです。500MBというのは、通常のRTLソースですと数十万行のソースでないと考えにくいです。

Veritakでは、シミュレーションエンジンとは別に、全波形メモリ用にDefaultで400MBを予約取得していますが、これはプロジェクト設定で可変が可能で、デザイン規模に依存するものではありません。


>FinSim の約5倍、程度の時間が掛かるようです。
デバッグモード、高速オプションなしですと、それくらい差があるかもしれません。昨年以降、色々な高速化オプションを実装していますのでお試しください。また、VCDを出力しているとVeritakはかなり遅くなりますので、Veritak専用のViewerで見るようにしてください。

Veritakは、概ね、ModelSimPE並みとの評価を頂いております。NC/ModelSimSE/PE等の比較テストベンチマークについて、Mixiサイトにユーザさまが評価された結果が豊富にありますので一度ご覧になってください。勿論、さらなるSpeedUpするべく改善していきたいと思っております。
372
veritak を 2005/06/xx より使わせていただいております。

たいへん使いやすくて、かつ大きなトラブルもなく、
高頻度で利用させていただいていたのですが、
今回最新版にバージョンアップしたところ起動しなくなってしまいました。

アンインストールして再インストールしても、
バージョンをひとつ戻しても立ち上がりません。
PCの再起動やレジストリの消去など、いろいろ試してはみたものの
頑固にかたくなに veritak は起動してくれません。

"問題が発生したため、TODO:<ファイルの説明>を終了します。"
というダイアログを出して落ちてしまいます。
役に立つかどうかわかりませんが、一応メッセージのキャプチャを添付しておきます。

こうなってすでに三日目。
悲しいかな、どうやら自力解決が難しそうな気配です。

誰かがわたしと同じ状態に陥って泣きついてはいないかと、
しばらくHPを監視しておりましたが、
残念なことにそのような気配もないのでメールさせていただきました。

どうにかする方法をご存知ありませんか?

動作環境は以下のとおりです。
---------------------------------------------------
【動作環境】
veritak ver : Ver3.32D Build Apr.2.2007版

pc : IBM ThinkPad xx
1.13GHz, 640MB RAM
Pentium III Mobile CPU
Microsoft Windows XP
Professional
Version 2002
Service Pack 2
---------------------------------------------------

以上、よろしくお願いいたします。
3.32E 調査中です。同種報告は現在までありません。(3.32Dのダウンロード数は130位です。4/6現在)

=>3.31Aで、ファイル履歴をフルパス表示にしてからの不具合のようです。3.32EでFixしました。
373 ついでに波形表示に対する要望を一つ書かせて頂きます。
バス等多ビットの信号の変化点が X で表示されて場所を取っているため
表示される値の桁数が少なくなっていてもったいない(というか使いづらい)。
これを、なるべく場所をとらないように変更し ( | がベスト? )、
その値をなるべくたくさん表示するような表示モードを
追加して頂けると嬉しいです。
3.32E 3.32Eで変更しました。
374 Do you have information on which R.T. Warnings are suppressed by the
new option? It might be nice to add thin info to the Tutorial.
3.34A  
375 I've just run a simulation using 2 xilinx DCMs.

If I enable the Xilinx model, it takes 2.5 minutes to run. If
I stub the DCMs out, it take 0.5 minutes.

I've set 'normal, fast, Level2'

Any idea what is sooooo sssslllllooooowww about the DCM model?
T.B.D. Yes, Veritak is slower than ModelSim for the DCM.
My guess is that Veritak is not good at real(double/float) operations. However,I would like to forcus on new engine development regarding this issue rather than improving the current engine.
Sorry, but please be patient this year.
376 Veritak-Pro にて、VCDを読み込ませて、ビューアーとして使用しています。
 結構、使いやすく、重宝させていただいております。

 ここで、一つだけ、ご質問したいこがありまして、メールさせていただきました。
 
 通常、シュミレーション結果は、min, typ, max の条件を確認しますので、
 できれば、min とmaxの2つ、 あるいは3つとものVCDファイルを
 同時に並べて見たいのですが・・・、
 
 Veritak-Pro が多重起動できないので、今の所、これが出来ていません。
 これが出来ると、作業が効率的になるので、
 何か出来る方法はありますでしょうか?。

 あるいは、1つだけ起動したVeritak-Pro の操作で、
 これが、出来る使い方があれば、教えていただけないでしょうか?。
3.34A
Veritakは、一つしか起動できません。(これは将来も変わりません。)"できれば、min とmaxの2つ、 あるいは3つとものVCDファイルを> 同時に並べて見たい"について、なにか対応できないか策を考えてみたいと思います。

=>
VCDファイルをプロジェクトに入れられるようにし(最大3個)複数のViewとフォーマットのSaveを可能にします。VCDファイルだけのプロジェクト構成が可能です。なお、Min,TYP,Maxの場合、同一インスタンスが3個になりますが、問題はありません。
377 Ver 3.33Aでサポートされたメタコピーですが、
Visioへ貼り付け「図形」→「グループ化を解除」すると、
かなり良い感じにグループ化を解除できました。

少しレイアウトを整えたりすれば、これは検証報告書や
仕様書の波形を図示するのに十分使えます。

=>
WORD等、他のOFFICEソフトでも、分解はできるようですが、
かなり悲惨な状況?になります。
Visioでは、比較的マトモに分解してくれました。
でも、拡大縮小しながら貼り付けても体裁が崩れないのが、
一番嬉しいですね。

ここまでできると、現状のbmp出力のようにemfファイルへ
保存できるようになると、emfファイルを扱えるソフトで
再利用が可能になると思います。

=>Another person wrote:
One more comment, that meta paste to clipboard of waveforms works fine with Visio. This is awesome feature.
Thanks
3.34A 3.34Aで対応します。
378 バグ的な要素を見付けましたので、

 ご報告さし上げます。(今回の改善点に共通する事があるかもしれません)

  同一な、信号名がモジュールインスタンス違いで存在する場合に、
  貴社のVCDビューアで、そのVCDファイルを読み込み、
  波形表示させると、信号が1つの扱いにされていしまう様で、
  しかも、その信号は、原型をとどめない(変化しない)信号になってしまいます。


  これを、他のビューアでみると、問題なく、複数の別の信号として見る事ができます。
  例えば、フリーソフトの "GTKWave.win" ではきちんとします。
   (実際の信号は、クロック状をしています。)
   (因み、"GTKWave.win"は使いにくいので、私は使用しませんが)

  この事象を再現できる、小さなテスト用DUMPファイルを

  用意しました(ncsimの吐き出しファイルから判り易く信号を抜粋しました)ので添付します。

 こちらも改善できると、喜ぶユーザーが居ると思いますので、ご報告致します。
3.34A VCD Viewerのバグです。3.34AにてFIXしました。
379 VCDビューアーで吸い込めるVCDファイルの、
 最大サイズは、どれくらいでしょうか?
 今回の更新で、小さくなったりします?? 

=>
 3.34Aで複数のVCDに対応いただき、ありがとうございました。

 使って見ました。信号を並べて見れるので、効率が良くなり助かりました。
 ひとまず満足しています。

 今回は、すばやい対応をいただき、本当にありがとうございました。

 貴社のパワーとスピードには敬意を表明します。
 
 弊社は、この5月に行なわれるESECにも出展いたしますので、
 もし、この展示会へ来られる様でした、お声がけください。

=>Another person wrote:
I tried the new vcd functionality and it worked fine!

One more comment, that meta paste to clipboard of waveforms works fine with Visio. This is awesome feature.
Thanks
3.34A Use Diskオプションをオンしないと150MB以上でクラッシュしていました。3.34Aでは、250MB以上でUse Diskを暗黙的にオンします。

一概に言えません。VCDは、一種の圧縮圧縮フォーマットになっており、1倍ー7倍のメモリ所要量バラつきがあるからです。

Use Disk をオンにすれば、2GB程度(この場合少なくとも14GBの空きディスクが必要になります。)まで読み取れる可能性はありますが、そうするとDiskアクセス時間がネックになり実用上問題になります。従い、使い勝手がよいのは、(お使いのPCのRAM搭載量に依存しますが、)200MB程度までではないかと思います。

3.34Aでは、全体としては、変わりませんが、メモリ所要量は、読み込む本数分のtotalの大きさで効いてきます。
380 VHDL → verilog トランスレータの
サポート復活にヤル気を起こしていただけないですか?
トランスレータは veritak の強力な機能だと思います。
期待している難民たちも多いと思います。
T.B.D.
このご要望も多くて恐縮ですが、今年のサポートは悲観的です。
現在、高速化のご要望とSystemVerilog(サブセット)を最優先に考えていまして、
ある程度、それに目処をつけないと着手はできないです。現状その他のサポートで、それすらもままならないので、いつから再開というのも言えないです。すみません。
トランスレータの実装は、集中してやっても3-4ヶ月はかかってしまいますので、今度再開するときは、SVベースにしようと思っています。
381 I downloaded the program, it looks promising but does not seem to
support the coding style I (and others) use. I have a module which
compiles fine under Modelsim. However when I compile under your
program, I get an error. I have attached the error output and the top of
the module I compiled. Can you support this type of module?
I would like to purchase but I do need to be able to run existing
verilog... Thanks
T.B.D. You do not need to pre-compile on veritak.
(In fact there is no pre-compile stage in current veritak.)
This may be like XL style rather than NC/VCS/ModelSim style.
All you have to do is to add all defined modules (including all test bench modules).Thus the test bench w/o ports should be included in the project, such kind of error will be disappeared. (Top modules are inferred as no instantiated module w/o ports in Veritak.)


As for library/include examples, please see "Xilinx Gate Simulation" on tutorial as a example.
382 What I am trying to run consists of a directory which has the testbench. A sub-directory called library has all the library cell models and the module which calls the library cell models. The directory Library contains about 150 base library cells plus the module referenced by the test bench.
I open verilog project and select the testbench model and click the add button, it appears in the window on the lower right
I open the library directory and click the add lib dir button and it also appears in the window on the lower right.
I save the project and then click the compile and simulate button.
the compile is incomplete and appears to be failing due to multiple references to the same UDPs which are called in multiple base library cells.

This compiles and runs in both ModelSim and NCSim without a problem. There were also several cells (not needed for the module in question) which will compile in the above simulators but were flagged as incorrect in Veritak.
I can't send you the actual models above as they are marked as CONFIDENTIAL AND PROPRIETARY SOFTWARE OF xxx Physical IP, INC.
=>
The testbench and library compiled and simulated this time without error. I was able to display the results. Excellent, I am impressed with the speed of the fix, the program and price. While I have access to modelsim and ncsim through work, such an effort needs to be rewarded.
As you will shortly be aware, I purchased a license. I will provide feedback and suggestions as I notice things and thanks for the program.... I am truly impressed ...
3.34B This is a bug from 3.32B. 3.34B fixed it.
383 Attached (I hope) is a jpeg image that resulted from
using the Utility Wavform ClipboardCopy function.

Notice how the left edge is cropped - you don't see the
left edge of the signal names.
3.34D 3.34D improved it.
384 「Veritak」と
Xilinx消費電力解析ツール「ISE9.1 Xpower」の対応に関して
お伺いしたいことがあります。


【質問】
Veritakが生成するVCDファイルはXilinx省電力解析ツールXpower

対応していますか?


【質問の背景】
VHDLでデザインを作成し、ISE9.1にて論理合成/配置配線を行
い、
Verilog形式のネットリスト****_timesim.vを生成しました。
上記ネットリストを使用し、
Veritakで遅延シミュレーションを行いVCDファイルを作成しま
した。
このVCDファイルを使用し、Xpowerで消費電力解析を行なった
ところ
VCDファイルを読み込んだ時点で、延々とワーニングが表示さ

固まってしまいます。

色々調べたのですが、
下記Xilinxサポートページを見ると
http://toolbox.xilinx.com/docsan/xilinx9j/help/iseguide/mergedProjects/xpower/xpower.htm
Xpowerでサポート可能なシミュレータに「Veritak」がはいっ
ておりません。
T.B.D. Xpowerについては、私自身使ったことがなく対応していません。

 試しにどんな具合になるか、手持ちのプロジェクトでやってみたのですが、Warningは出ずにパースエラーがでてクラッシュしてしまいました。当該箇所は、VCDの文法的には問題なさそうでした。原因が良くわかりません。

以上より、Veritakが吐くVCDの問題か、Xpowerの解析の問題かは、区別ができませんでした。原理的には、VCDさえ読めれば、特にシミュレータに依存する用件はないように思いますがXpowerの内部動作は分からず、いずれにしてもすぐには解決できそうにない状況です。申し訳ありません。
385 I ran several more testbenches, large technology libraries,
program appears to only read in models which are referenced in the
module. so was as fast and easier than modelsim in that respect as I
did not have to pre-compile the libraries. One question is now I have
a project, I would like to edit and save under a new name but I can't
see a way to do so.... looks like I need to create from new each one ?
T.B.D. First, Save project by another name.[Menu->Verilog Project save project as..]. Then, "Open Verilog project" to edit for new configuration.

One limitation is you can not save the new project into another folder. Because project files are remembered as relative to path to project folder. To make another and similar project into another folder, please follow the instructions below.

On edit project ;
1) Press "Ex" button.
2) You should see veritak_src_files.txt in the same folder.

3) You can edit it by text editor.

4) Make another new project
On edit project ;
5) Press In button.

Using this Ex/In (Export/Import) , it may be easier to make another new project. One note is any settings of waveformview can not be moved..
386 1. I cannot seem to find any documentation on the Veritak Unique
functions ($sprintf, $M_E, $M_LOG2E, $M_LOG10E, $M_LN2, $M_LN10, $M_PI,
$M_PI_2, $M_PI_4, $M_1_PI, $M_2_PI, $M_2_SQRTPI, $M_SQRT2, $M_SQRT1_2,
$acos, $asin, $atan, $cos, $cosh, $exp, $fabs, $log, $log10, $sin,
$sinh, $tan, $tanh, $ceil, $floor, $sqrt, $fmod, $atan2, $pow,
$runge_kutta, $conv_hex2ver, $writememb, $writememh,
$normal_vtak($dist_normal with real parameter)) do you have any
information on how to use these? I would like to use some of these and
cannot find any information on how to use them.

I like your software so much, I am trying to get my boss to by a copy
for everyone. Great for beginners as well as use for products!
- Sorry, I've not written English documentation. However there are several codes are listed per link below.(Sorry all in Japanese.)

http://japanese.sugawara-systems.com/opencores/VPI/framepage1.htm

Basically $foo function is decsribed by VPI. VPI codes are listed per like below.

> $M_E, $M_LOG2E, $M_LOG10E, $M_LN2, $M_LN10, $M_PI,
>$M_PI_2, $M_PI_4, $M_1_PI, $M_2_PI, $M_2_SQRTPI, $M_SQRT2, $M_SQRT1_2,
>$acos, $asin, $atan, $cos, $cosh, $exp, $fabs, $log, $log10, $sin,
>$sinh, $tan, $tanh, $ceil, $floor, $sqrt, $fmod, $atan2, $pow,

Arithmatic functions. VPI calls just C-library.
http://japanese.sugawara-systems.com/opencores/VPI/newpage5.htm


>$runge_kutta,
http://japanese.sugawara-systems.com/opencores/VPI/newpage8.htm
When I simulate analog behavior with verilog logic, I use it.


A veritak user (Mixed Analog Engineer) wrote magazine a article regarding VCO. He wrote all code using Veritak w/o his own VPI.
I re-wrote his code using VPI.

http://japanese.sugawara-systems.com/opencores/VPI/vco.htm



>$normal_vtak($dist_normal with real parameter)
http://japanese.sugawara-systems.com/opencores.htm#R3
I applied magazine design contest. Unfortunately $dist_normal(Verilog2001) is not just my purpose. I made my own function.(C code of $dist_normal code is listed in verilog2001 LRM.)

$sprintf
All the same as $sformat (verilog2001)

$writememh/b
This is not standard function even in verilog2001, but is common in several simulators like Icarus.


Sorry in inconvenience, however they are basically just C-Call using VPI.
I think it is not too difficult for you to define your own $foo using free microsoft express edition C++. It's fun for mixed analog engineer.
387 これまでWindowsXPで問題なく使っていましたが、WindoewVistaに変えたところ、
「Load Verilogプロジェクト」 でプロジェクトを開こうとしても、「ファイル
オープンに失敗しました」というメッセージが現れて先へ進めません。Veritak
はVistaのもとでは使えないのでしょうか?
3.34E Veritak−Vista日本語フォルダ下での問題です。
3.34EでFixしました。
なお、本現象はファイルパスの書き込みミスなのでプロジェクトを作成しなおしてください。
388 The failure is present with
Fast + Level 2 + Normal
Fast + Level 1

The failure goes away with
~Fast, None
~Fast, Level 1
~Fast, Level 2


Try this code with Fast, Level 2, Normal
If the bug is active, bad will toggle at every clock edge.
If the bug is not present, bad will only toggle once in a
while.


module z ();
// `define GOOD

reg clk = 0;

initial
forever
begin
#10;
clk <= ~clk;
end


reg mode_micrel_loop = 1'b1;
reg str_rx_diag_req = 1'b0;
reg str_rx_rd = 1'b1;
reg rx_empty = 1'b1;


reg bad = 1'b0;
always @(posedge clk)
if (rx_empty)
bad <= 1'b0;
`ifdef GOOD
else if ( 1 == (mode_micrel_loop ? str_rx_diag_req : str_rx_rd) )
`else
else if (mode_micrel_loop ? str_rx_diag_req : str_rx_rd)
`endif
bad <= ~bad;


initial
begin
#100;

@(posedge clk)
rx_empty = 1'b0;

repeat (20)
begin
@(posedge clk)
str_rx_diag_req <= 1'b1;
@(posedge clk)
str_rx_diag_req <= 1'b0;
repeat (10)
@(posedge clk)
;
end


$stop;
end

endmodule
3.34F 3.34F fixed fast mode bug..
389 原因はわからないのですが大規模な回路でSimulationをしようとするとCompileのReduction Phaseで問題が発生します。

動きとして
1.veritak projectを作る そのままSimをすると動く
2.OptionでFast modeやSelect Waveformを設定しCompileをやりなおすと写真の状態になることがある。
3.一度この状態になるとOptionを元に戻しても同じエラーが出る。
4.Saveしたprojectを使ってsimulationしようとしても同じエラーが出る。

AppName: veritak2.exe Modname:veritak2.exe Offset:000950fd
Exception Information
Code: 0xc0000005 Flags :0x00000000
Record: 0x0000000000000000 Address: 0x00000000004950fd

3.34F NetOptimize2のバグです。3.34FにてFixしました。
390 i am trying to evaluate and use the simulation as
waveform viewer. however, i cannot load the do
file as shown in the example. is there something
that i did wrong.

......
Let's see a example. Drag & Drop "do_file_test.vcd" to Veritak icon.
Then ,
Utility => Read Do File... =>"do_file_test_vcd.do"
3.34F You are not wrong. Feature is disabled from 3.34B.
Since veritak project on VCD files became available, I'll recommend you use the project file. However,I'll plan to enable the feature next release for older version's compatibility.
390 I am showing it to my Uxxx students as part of a hardware/software co-simulation class.

Also, I have recommended it to several of my contracting clients. On a different front I would love to integrate it into a a software product my company is developing.
- Thank you!
391 Is there a way to change the font used by the program ? when I view
menus, compile, etc the backslash character (/) is shown as a yen
symbol (\).


=> downloaded 3.34H and this allows me to change the
font and fixes the issue for me, thanks.
3.34G/T.B.D. Thank you for information. I've investigated this issue, however I can not solve the issue so far. My program does/can not change the system font.I investigated to change system font, but was not successful. Yes,
I think Yen mark is related to the font, such as,

MS PMincho
MS Mincho
MS Gothic
Microsoft sans serif
MS UI Gothic、Tahoma
MS PGothic

You can change the font using MENU->Utility->Font of Document View,to the font not listed above regarding console display. By changing the font, you'll see "Back Slash" instead of "Yen mark". I think I can do the same thing to status display of compiler in near future versions, however I have no means to change history of file/project paths.. related to system font.
Sorry, but that's all I can say right now.
392 a) The waveform manager appears to always open the bottom wavform
in the list. Is there a way to re-order the waveforms so I can have a
different default waveform?

b) When I right click in the waveform window there are 2 related commands
called "Insert a Blank Line" and "Make a Name on Blank Line". The second
command should really be called "Change Name". It would be nice to have
a real command to "Make Name on Blank Line" - it would save a step.
It would also be nice to group the name & blank line commands together.
3.34G 3.34G applied your suggestion.
393 I am trying 3.34G and here are comments:

a) the first time I started it, it did not have the waveforms from my previous
runs. It looks like it lost them UNTIL I popped up a new waveform - then
the Waveform manager appeared along with the saved waveforms.

b) I like the "move up", but it may take a bunch of clicks to move a waveform
from the bottom to the top. Ideas:
- add a "move top" button OR
- don't display based on order in the manager list, add a field/radio button for "default wave"
3.34H 3.34H appliedt it.
394 Veritak について性能、機能的には、ほぼ満足しています。希望を言えば、
早期にspecifyのサポートを行って頂けることを期待しています。
T.B.D. Specify Sectionのサポートは、現状のコンパイラでは行わずに来年以降、SV対応のコンパイラで対応いたします。
395 a) I'm trying the command line mode and I'd like to know how to detect this
versus the GUI mode. If I execute $stop, it looks like the command line
version keeps running? I'll need to detect GUI vs command line so I
can issue a $finish.

b) I notice that occasionally Veritak creates a 0 length log file. In command
mode, it would be handy to have the $display output go to a log file.

c) Is there any way to have the command line version return a success or error
exit code that could be tested by my shell script? I'd like to detect any sort
of compile error and/or if my test code finds an error, it would be nice to
flag the error in the exit value. Maybe a $finish indicates normal exit, $stop
is an error in command line mode?

=>The return value works great, thanks. I now have a simple regression
suite running.
3.34H. 3.34H implemented "return value". See release_note.txt in "command folder.
396 Since, your parser seems to work so well I was wondering if we could license it for non-simulator applications and as a separate item offer Veritak with our product. T.B.D. I'm so sorry that I can't help it.
I do not want to support CURRENT parser.

BTW,my plan is to support Subest of SystemVerilog which can not be handled by flex/bison. So I'm writing completely new parser by using antlr.(At least parser will support all feature.) It should be open to registered user if he want. Though license/support is another issue, it will be free to see source code. By the end of this year, I'll finish new parser.
397 when I open a project using the Verilog
Project tab I get a " select files to compile " window. This window does
not show what project I am working with, It would be nice if the window
showed in title bar or somewhere what the project file name is that this
window is working with ..... Thanks
T.B.D.
398 I'm experiencing a couple of problems with the VCD project.



The tool has worked great for design and debug but now need to view VCD
files from another team's simulation.



The VCD file loads and the signals are displayed in the Scope window but
they are displayed as individual bits only. When using veritak as the
simulation the signals are displayed and can be handled as buses, i.e.
Address[15:0], Data[31:0] etc.. This makes it difficult to grab and see the
desired signals.



This leads to the second problem. When I grab all the Address signals and
group them with a name to see them as a bus, that's fine but I'd like to be
able to save and restore this format. Right clicking and selecting "Save
format on waveform view" creates a '.do' file but the buses are not
saved/restored.



Also since there are hundreds of buses to see I thought I should be able to
edit the .do file to display the required signals. This also fails and
usually crashes veritakwin. I'm quite certain the do file modification was
correct (added only one identical line with simple signal name change)



Are there known issues with vcd viewing?

Is there an option to display signals as busses?



My vcd project has exactly one file in it, the dump.vcd file. Do I need to
add the source files? If so how to I get them to NOT build when the project
is loaded or are they supposed to compile?
=>
The waveform project solved the saved format problem, thanks.

One last problem is getting the buses to display properly in the scope
window. I'm running modelsim to create the vcd. But the same problem
occurred when running veritak from command line.
=>
The problem isn't yours it's modelsim.

The veritak simulation creates the perfect vcd file with all buses as
expected (also much smaller file, thankyou).

Thanks for the quick support and I'll either figure out why modelsim creates
such foolish vcd file or continue to use veritak.

Please ignore my last email as I understand the bus issue now.
T.B.D. I recommend you make a vcd project with wavefomr manager,rather than using do file.( "do file" is just for older versions compatiblity only.)

If you have still problem, please send your vcd project and vcd files.
( I don't need source files for vcd project.)
By seeing the same waveform view between us, I think I can understand what is the problem clearly.

=>However,I think buses (actually individual bits) are displayed PROPERLY in Veritak. I'm sure any VCD viewer will show the same signal scope name. Because Modelsim generates so.

See VCD file description below. Note wire signal is declared as 1bit signal. (Variables are declared as bus,though in Modelsim.)


However, I understand your difficulty, I would like to consider a solution.
Current my idea is adding a command menu "automatic group all".
It may require two weeks to implement.

=>
Anyway, I'll implement "automatic grouping" in near future versions w/wo your interest. There has been same kind of requests.
393 I also noticed that if I have a register or similar item in MTI which is
declared but never defined, it shows up as blue in the waveform viewer
instead of an x,

In your simulator, it shows up as an x.

I have items I also define as an x, so I can't tell if it is an x
because something has not resolved or because it was not defined .... an
undefined item can occur during the verilog editing where a net name is
mangled, without the distinction , I cannot quickly see the problem....

Also in MTI, when a model is compiled and there are syntax errors, I can
get a list of all the errors with line numbers. depending on the error,
the first error may cause the rest or they may all be independent. Your
analysis appears to stop on the first error so it takes a bit longer to
find and fix the errors ... So if I have major problems with a model, I
kick off a MTI session and do the debug there .... Could be I am used to
MTI though ... There are features of your program which I am also not
using yet , so could be I don't know how to fully use your program ....

Anyway this is a great program, thanks .... I am using it when I am
waiting somewhere for my daughters at school events, etc. and as a
result I can't get to a MTI license server . This works great and as
well as MTI. , I am finding I am also using it even when I can get a MTI
license., Saving the waveform as an .emf file is useful as I can import
into powerpoint and ungroup which gives am an editable object to us to
document a behavior.....
T.B.D. ご指摘の通りパーサエラーでは、エラーリカバリ処理をしていません。将来のVersionで検討します。
394 なぜかDocument Viewが出なくなりました。
どの設定で出るのでしょうか?
ウインドウを重ねて表示するとしたら出ました。
なぜ消えたのでしょうか?
=>全く表示されませんでしたがコンパイルは出来ました。
最初に気づいたのは、コンパイルエラーでツールバーの表示が消えたからです。
Document Viewが出ないこと以外は正常でした。
ノートパソコンを使っているのですが、リモート接続しているので表示サイズ
を3種類使っています。
1.1024×768 2.1280×1024 3.1600×1200
3.35B 再現はできていないのですが、可能性として、表示サイズが変わったことに起因する問題が大きいと思います。(表示サイズのSanityCheckが入っていませんでした。)次回リリースから親Windowよりはみ出した場合は、親Window内に収めるようにします。これによりこの問題はFixできるものと考えます。
395 There may be a problem in the handling of library
directories. I have a local copy of a xilinx library
module called GT_CUSTOM.v in my local library directory
as well as the Xilinx version in the Xilinx library directory.

No matter how I arrange the order of the library
directives in the project, it looks like Veritak always
picks up the Xilinx version. Unfortunately, that version
tries to pick up GT.v which in turn tries to pick up a
swift model. This is not what I want.

I've tried different orders of the library commands in
the project, but nothing seems to help.

Any ideas?
=>My 1994 Verilog XL manual (I can't believe it's that old) has a command
line example:
verilog src1.v -y /usr/lib/nmos src2.v -y /usr/lib/ttl -y /usr/lib/cmos

In this case, I believe Verilog picks up both src1.v and src2.v regardless of
whether or not files with identical names exist in libraries. Thus, Verilog files
explicitly mentioned on the command line take precedence regardless of order
on the command line.

If src2.v instantiates module src3, Verilog scans the libraries from left-to-right,
thus it 1st looks in /usr/lib/nmos, then /usr/lib/ttl, and lastly in /usr/lib/cmos.

Next comes a slight twist... If Verilog uses a file from /usr/lib/ttl, and that file
instantiates inverter.v, Verilog first looks in /usr/lib/ttl, then in /usr/lib/cmos,
then it wraps around to try /usr/lib/nmos. Kind of a round-robin.

So, If I have the following hierarchy:
mod1
sub_mod2
sub_mod3

If the project says
mod1.v
-y dir1
-y dir2

It will compile mod1.v, then look 1st in dir1 for any modules it needs, then
look in dir2. If the two submodules exist in both dir1 and dir2, Verilog
will grab them from dir1

If I say
mod1.v
dir2/sub_mod2.v
-y dir1
It will take both the specified Verilog files, then look only in dir1

If I say
mod1.v
dir2/sub_mod2.v
-y dir1
-y dir2
It will take both the specified Verilog files, then look dir1, and if it
needs to, it will look in dir2.

Does this help?
3.35B It seems round-robin is too compliated to understand.

However, other implementation seems natural and understandable, so I will try to implement it from next release.
396 I think there is a bug during the first phase of 'Parse Analysing...'.
I'm using version 3.32B.

In the case where there is a syntax error in the verilog, the parser
quits out of that verilog module and continues with the next one.
However it starts to report 'Warning : Re-Definition of parameter'
for every parameter.

I include a common parameter file at the start of every module, with
this syntax -

module axis
#(
// PARAMETERS
`include "amba_parameters.vh"
)

(
// INPUT AND OUTPUTS
etc.


This bug is only that veritak prints out many extra warnings. In my
current project it prints several hundred every time I compile and it
really slows down the verilog code write-debug process.

I think the fix should be to tell the parser to logically close the
current module when it reaches a syntax bug, so it knows the parameters
in the next module are in
=>
Yes this definitely fixed the problem.
I tried the new version and the problem was gone and then I reinstalled
the old verson and ithe problem came back.
3.35C I deleted some code so that wrong messages don't come out.Though I could not simply reproduce the problem, I expect some improvement.. in 3.35C.
397 I've used your tool to create about 750kgates of a 1m gate ASIC but now we
must pass the design to the ASIC vendor and their IP is much more
complicated as they use primitives and a great deal of time delay syntax.
Veritak unfortunately cannot handle all of it and I think it is outside the
scope of your project. I don't own the files that fail so I cannot send you
examples even if you wanted them.

Because of this I must start using ModelSim (which is slower than Veritak)
to run the simulations. However I would still like to use Veritak to view
it's VCD files.

They are using a time reference of 100fs (to lock their PLL) and 100fs is
what shows up in the VCD file in the timescale field.
I get the following error when loading the VCD file.
"VCD file has different timescale from Veritak Project"

If this is difficult to fix, I can simply change the 100fs to 100ps in the
vcd and the file loads and displays. I think everything is accurate but just
scaled by 1000. Is my assumption true?
3.35D 3.35D addressed to 100fs.
398 It works without error.
One small thing I noticed is the times in the header fields are missing the
unit's.
3.35E 3.35E fixed it.
399 The units issue is obviously a very small issue. I just wanted to be
complete.
The Auto Grouping will be very helpful.
3.35E 3.35E implemented it.
400 久々にVeritakを触ってみたのですが、こんなウインドウが出てきました。最新版です。

プロジェクトの編集画面で、ファイルの場所でデスクトップとかのアイコンをクリックすると出てきます。

プロジェクトファイルを読み込まなければ(Veritakを単に起動するだけ)問題ありません。このウインドウは波形のメモリ不足で見たことがありますが、今はメモリが足りていないということはないです。
3.36A 3.34Eからのバグです。3.36AでFixしました。
401 遅ればせながら、波形コメント機能使ってみました。
これはメモとして使えそうですね。


操作感で気になる所がありました。

テキストを入力しておいて、オブジェクト選択で動かす際
思うように動かせない時があるようです。

左に動かしているのに、マウスのドラッグを離すと
右に移動している...等(^-^;

これに関連してテキスト周りの枠をマウスでドラッグ中(移動中)も
表示されていると、移動する先など解りやすいと思いました。
3.36A 3.36Aで改善しました。
402 Please find the enclosed preout.v.

It is causing Veritak2 to fail. After closing the "report problem to
Microsoft dialog" Veritak reports "finished with incomplete compilation".

I have just downloaded version 3.36A and it does the same thing. Can you
help?
3.36B I think COMMA should be deleted for proper compilaration.

uC3_ld_sop4reg,

}= uC[uCWW:0];//line337



Yes, veritak must report an error ,
I'll fix this issue in next release.
403 3.36Bでのバグ?報告です。

・新規プロジェクトの作成で、ファイルを選んで、Addボタンを押しても反応なし。

・同様に、Add Include Dirを押しても、追加されない時がある。何回か押していれば追加される。

・Add Include Dirでパスを指定しても、コンパイル時に----のインスタンスがありませんエラーがでる。なので、直接、そのインスタンスのファイルをAddしてやるとOK!

3.36C 申し訳ありません。3.36CでFixしました。
404 Veritak 3.36Bにおいて、
下記のように、宣言したビット幅より大きいビット幅を代入している箇所があると
アプリケーションエラーでコンパイルストップとなってしまうようです。

ご参考として、再現する環境を添付致しました。
特に、急いでおりませんので、お時間のある時に解析の程宜しくお願い致します。


reg in_fifo_empty;

always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
begin
in_fifo_empty <= 128'h1; // ng
// in_fifo_empty <= 1'h1; // ok
end
end
3.36D LHS幅がRHS幅より100倍以上大きいときかつ、LHSが定数のときに発生します。3.36DでFIXしました。
405 We are very interested in purchasing Veritak, but I have found a major
difference between an old version, 334H and the newest version 336B, that
makes me now not want to buy it.



In version 334H I could make a new project using "New Verilog Project", then
select a vcd file in the "Select Files to compile" and then add vcd and save
the project. Then when I exit and load Verilog project Veritak would read
the vcd file.



In version 336B I cannot add a vcd file in the "Select Files to compile"
dialog box. I can select the vcd file. But it will not let me add it. I have
tried many ways to do it but cannot. Is there another way to do it or has
this functionally been removed? I create the vcd in Modelsim, but would like
to view it in Veritak.
3.36C 3.36C fixed it.
406 さて、XilinxのPLL動作シミュレーションをしたいのですが
うまくできません。
多分、ライブラリの問題ではないかと思います。
HPのサンプルを見ていますが、lib_xilinx/という
ディレクトリは見当たりません。現在WEBpack9.1iを使用していますが
lib_xilinx/...に相当する部分が、どれなのかよく分からず
立ち往生中です。
- ライブラリの指定は、私の場合、以下のフォルダ下にありました。
E:\Xilinx 9.1i\verilog\src
添付プロジェクトにあるように構成してください。

PllTest_test.v
PllTest.v
Pll.v
-lib_dir
../lib_xilinx/XilinxCoreLib
-lib_dir
../lib_xilinx/unisims
../lib_xilinx/glbl.v
波形は添付のようになります。
407 1st: The following message suggests a problem with the 5th port. Also, you may want to
add spaces in the "are3" part of the message.
C:\usr\xxx\emu_fpga2\rtl_jrp\CabBridgeD.v(190)::Warning: Port5 RdPtrBin have different no of pins. parent module's ports are 4 instantiated module's pins are3
But, it looks to me like it is the 7th port. Here's the code:

`ifdef EMU_FPGA
AsyncFifoGeneric # (
.DEPTH (8),
.PTR_WIDTH (3),
.WIDTH (10)
) AsyncFifoResp
`else
AsyncFifo8x10b_3 AsyncFifoResp
`endif
(/*AUTOINST*/
// Outputs
.WrPtrGryOut (WrPtrGry), // Templated
.RdData (RdData[9:0]), // Templated
// Inputs
.WrData (CabReqIn), // Templated
.CLK_N_FifoWr (CabReqWriteEn), // Templated
.WrPtrGry (CabReqPtrIn), // Templated
.CLK_N_FifoWrPtr (CabReqWriteClk), // Templated
.RdPtrBin (RdPtrBin), // Templated
.L1ClkBypass (1'b0), // Templated
.CLK (clk)); // Templated


------------------------------------------
2nd - Where do you think the #_4d comes from in the following?

C:\usr\JOHNP\emu_fpga2\testbed\tb_cab.v(234)::Warning: Port93 #_4d have different no of pins. parent module's ports are 8 instantiated module's pins are4

Thanks!


=>I see the confusion, we're both correct. The message refers to the
port number in the instantiated file, NOT the port number in
the instantiation. The message is confusing because the filename and line
number lead you to a specific spot in the file. I then count down 5 ports
in the wrong file!

C:\usr\JOHNP\emu_fpga2\rtl_jrp\CabBridgeD.v(190)::Warning: Port5 RdPtrBin
have different no of pins. parent module's ports are 4 instantiated
module's pins are3
Could you print the ".port_name (signal_name)"? Now that I know the trick, it's
not a problem for me, but other people must have the same confusion.
3.36E 3.36E improved it.
408 Waveformに正しく表示できないバグを見つけました。
TBは
//veritak scope test
`timescale 1ns/10ps
module testb();
reg clock, reset;
wire out1, out2;

initial
begin
reset = 1;
clock = 0;
#100;
reset = 0;
#1000;
$stop;
end

always @ (clock)
#5 clock <= ~clock;

top top (
.clock (clock ),
.reset (reset ),
.out1 (out1 ),
.out2 (out2 ));
endmodule

Designは
//veritak scope test
`timescale 1ns/10ps
module top(clock, reset, out1, out2);
input clock, reset;
output out1, out2;

sub1 sub1(
.clock (clock ),
.reset (reset ),
.out1 (out1 ),
.out2 (out2 ));

endmodule
//veritak scope test
`timescale 1ns/10ps
module sub1(clock, reset, out1, out2);
input clock, reset;
output out1, out2;

reg out1;
reg [6:0] out2r;

always @ (posedge clock)
if (reset)
out1 <= 1'b0;
else
out1 <= ~out1;

always @ (posedge clock)
out2r <= {out2r[5:0], out1};

assign out2 = out2r[6];
endmodule
これでSelect waveform & fastにして testbの信号のみ残す
out2は常にXとなるがsub1まで選択すると正しい結果が表示される。
3.36E ご指摘のとおり、Selective
Waveformのバグです。現象は、
.指定したSCOPE上でwire &&
.信号元がRegVector &&
.Vector代入&&
.信号元のScopeが選択されていない
ときに発生します。
SelectiveOptionを使用していなければ、発生しません。
409 5月より導入させていただいており、非常に
便利に使わせていただいてます。
初歩的な質問かもしれませんが、例えば、

VHDL
===
process(CLK) begin
if(CLK = '1' and CLK'event) then
if(RESET = '1') then
BRINKCNT <= 0;
elsif(BRINKCNT = 0)then
BRINKCNT <= 7500000;
else
BRINKCNT <= BRINKCNT - 1;
end if;
end if;
end process;

変換後

VERILOG
=====
always @ (posedge clk ) // begin <---
if ((reset == 1'b1))
brinkcnt <= 0;
else if ((brinkcnt == 0))
brinkcnt <= 7500000;
else
brinkcnt <= (brinkcnt - 1);
// end always <---

となりますが <---の箇所であえてコメントでbeginとendをはずして
あるのはどのような理由からでしょうか。変換後の動作は問題なく
動作しているので...。
- Verilog文法的には、if statement自体は単文であり、複文のためのbegin-endで囲む必要はありません。視覚的には、begin-endで囲んだ方が見やすいのですが、F.A.Q.175のようにif文のネスティングがあった場合の変換では、等価検証ツールでエラーになるという報告をいただいております。このために、コメントにした経緯があります。

大変恐れ入りますが、VHDLトランスレータはF.A.Q.にもあります通り、現在サポートすることができません。(ご質問にはお答えできますが、改善改良することができません。)よろしくお願いいたします。
409

Verilogシミュレーションで、inout宣言されたポートへの
テストベンチでの入力は、どうすればよろしいでしょうか?

添付ファイルにあるように、d_busは、wire宣言しか出来ません。
この場合、値を代入する事は出来ないのでしょうか?

ちなみに、この回路は、以下のURLより参照しました。

http://plaza.rakuten.co.jp/CPU4Edu/13001

お忙しい所恐れ入ります。
時間のある時で構いませんので、回答の程、お願いします。
- inoutは、variable系(reg,integer..)は使えずNetwire系のみで駆動できます。
インスタンス化する側、される側の両ポートでvariableが入ってはいけません。これは、inoutに限らず、inputのポートSideでvariableが入ってはいけない理由と同じです。variableは、C言語と同じような手続き系での記述が可能ですが、一般には最後に書いた値のみが有効になります。しかし、これでは、複数の回路素子で駆動される3Stateバスなどでは、うまくモデリングすることができません。そのために言語上禁止になっています。SVでは、単一のドライバから駆動されるならば、variable系(reg,logic)もinputポートに置けますが、複数ドライバが自明となるinoutは、やはり言語的に禁止です。 複数ドライバを解決するには、NET系(wire系を使います。)

また、procedual系は、variable系のみ使用可能です。添付を参考にしてください。
410 a) In the code below, there is a missing semi-colon, but Veritak
still accepts the code without a complaint.

b) If you are interested in another product idea... How hard would it be
to convert you Veritak work into a low cost Verilog Lint product? Somehting
that simply reports port mismatches, non-driven signals, multiple drivers,
etc.

Here's the code in question for (a):

module bad;
reg PWROK;
reg LDTSTOPL;
reg RESETL;
reg CTLIN0P;
reg [15:0] CADINP;
wire CTLOUT0P;

reg clk;

task idle;
input [31:0] cnt;
begin
repeat(cnt)
@(posedge clk)
;
end
endtask

initial
begin
PWROK = 1'b1;
idle(100);
LDTSTOPL = 1'b1;
idle(100);
RESETL = 1'b1;
idle (4);
CTLIN0P = 1'b1;
$display("%t waiting for CTLOUT0P", $time);
wait(CTLOUT0P) // <<<< missing semi-colon!
idle (16);
CTLIN0P = 1'b0;
CADINP = 16'h00_00;
idle (512);
CADINP = 16'hff_ff;
end


endmodule

b)It is a legal statemnt at least verilog2001.

LRM states as follows.
wait_statement ::=
wait ( expression ) statement_or_null

ModelSim Also accepted this.

a)My current interest is subeset of SystemVerilog with half speed of NC/VCS. (means significantly faster than Modelsim SE.) Parser will be sold solely. BTW, after that, we can expect no more speed up with software technique. (Of course, muthithreading is in my mind.) HW accelarator using general FPGA(such as on PCI bus) is to be item for next generation.. Seamless interface is ideal.. 
411 I've been running regressions via a Perl script and the command
line (thanks again for setting the exit codes for success/fail!). Usually,
I kill the Gui version of Veritak, then run regressions, then, if needed,
I start the Gui version again.

I accidentally left the GUI running while running my regression. I was
surprised to see compilation warning messages appearing in the GUI
compile status box. Not a problem, just a surprise.
- Yes..
412 I face some problem when viewing some of the signals values in the waveform. I attach the waveform as jpeg file for your information. After 2000ns, all the signals values were not shown in the waveform. Do I have to do some setting in Veritak so that all the signals values can be shown or is it a bug in Veritak?

Please help me to investigate this problem.
- Thank you for sending the project.
I've never seen so many waveformview windows..


BTW, I commented in the attached waveform view of top.
Please see them.( You need latest version3.36E.)

I slightly changed two $finish to $stop to explain waveformview in Veritak. You need to press "Go" button a couple of times to see all the simulation result. I 've also attached VCD file generated by ModelSim.
You can see them in the same waveformview.
413 I have one silly question here. I find it is quite difficult for me to
rename the waveform name in the WaveformView Manager. Can you put the
'rename' option when I right-click at the waveform which I would like to
rename?
3.37A 3.36F(Your private version) applied your suggestion.
414 Waveform上で、SHIFT又はCTRL+マウスで、複数信号を選択します。
選択した状態で、右ボタン、「表示の選択」→「16進」や「enum選択」で表示を変更します。
この時、「enum選択」だけが、選択された最上位の信号しか変更出来ません。
「16進」等他は変更出来ます。
複数信号を一括で、同じ「enum」に変更できるのかと思いまして。
「16進」等の変更と動作が違っており、不自然さを感じたので質問しました。

一度波形フォーマットを保存して使えば良いので、出来なければ困る事は
全くありません。
- 現在、enumの場合複数選択はできません。確かに操作感の統一性を欠きますが、すみません、仕様ということにさせてください。
415 I wanted to let you you know I'm using Veritak on a medium large
project that is fairly poorly written. So far, Veritak is working
great on it. All the library processing code you added is wonderful.
- Thanks!
416 I've found a potential problem, could you please lool at
the following code? I t looks like "always @(*) doesn't
trigger when the memory address changes to X.

Thanks!



module z;

reg [7:0] mem[3:0];
reg [1:0] addr;
reg [7:0] rd_data;

always @(*)
rd_data = mem[addr];


initial
begin
addr = 0;
mem[0] = 'h10;
mem[1] = 'h11;
mem[2] = 'h12;
mem[3] = 'h13;

#10;
addr = 2'bx;
#5;
if (rd_data !== 8'bx)
$display("%t data not X", $time);
#10;
mem[0] = 'h20;
#5
if (rd_data !== 8'bx)
$display("%t data not X", $time);
#10;
addr = 1;
#10;
addr = 2;
#10;
addr = 2'bx;
#5;
if (rd_data !== 8'bx)
$display("%t data not X", $time);
#10;
addr = 3;
#10;
addr = 2'bx;
mem[3] = 'h13;
#5;
if (rd_data !== 8'bx)
$display("%t data not X", $time);
#10;
addr = 0;
#10;
$stop;
end

endmodule
=>
 thanks for the incredibly fast bug fix!
3.37A 3.37A fixed it
417 I may have another Veritak bug, but I can't yet reproduce it in a simple test
case. As I compile, I get the message

evaluating module...
common\mbist\BistPortSel.v(96)::Error: can not evaluate the term of REPEAT.


Here's the code from line 96:
assign last_port = ((nw_ports + nr_ports == ({{(LOG2NPORTS-2){1'b0}}, 2'b10})) | read_loc | write_loc | read_only
| write_only | bitmap) ? ~(|multi_port_sel_r):
(multi_port_sel_r == (nw_ports + nw_ports + nw_ports + nr_ports + nr_ports - 1));

However, the compilation finishes and appears to complete OK. It lets me run
the simulation.

Any ideas?
- :Error: can not evaluate the term of REPEAT.

This error occurs when REPEAT expression is zero or minus,
, {0{}} or -1 {}}, as a result of evaluation.

In Xilinx library, I remember there was a case above. In LRM it should be error, I believe, however Modelsim accepts this, and evaluation result of the CONCAT seems to be 1'b0, so I followed that. In this case Veritak shows error but continue to compile.

Could you please check that condition?
418 @
ビューアで、名前の行も含め、複数行をshift+クリックで選び、他の所へ移動させると、名前の行だけ消えてしまったり、ある名前だけが増えたりといった症状に出くわしました。移動する個数が多いときだけ?おかしくなるようです。

A
グループ化して、別の名前をつけ波形フォーマットを保存しても、それを再び読み出すときには、Groupなんちゃらになってしまっているのですが、グループ化した信号線に名前を付け替えて、保存することは出来ないのでしょうか?

B
信号のトリガ機能で、トリガのパターンを指定していない場合は、信号の変化箇所まで飛ぶと思うのですが、複数ビットの信号に対しても、これは出来るのですが、時折、複数の信号?なんちゃらというメッセージウインドウがでて、トリガが使えないことがあります。そのときは、1bitの信号でトリガを使い、また目的の複数bitの信号名でトリガを使うと、使えます。

C
名前の行で、たとえば、/* AAA */とし、波形フォーマットを保存します。次に、波形フォーマットを読み出すと、.* AAA *.となっています。
3.38A @ 名前行を含むとそのような現象になるようです。3.38AでFixしました。


A グループだけは、右クリックメニュー
 グループ化ー>名前をつける
のメニューで名前を変更してください。


B 現象から見て、「選択」が複数行になっていると思います。Viewの左下に1itemsとか書いてありますが、これは、現在選択されている行の数です。これが、2itemsになっていると2行が選択されていることになるので1itemsになるように選択しなおして見てください。


CDoファイルの読み込みでは、/を.DOTに置換しています。 完全には、対応できませんが、コメント等(/* */)には対応しました。
419 WaveformViewMangerを使い始めてみたのですが、すべてのビューアをdisenableにして、CTRL+Tabやクリックでコンソールウインドウをアクティブにすると、すべてのビューアが表示されるのですが、特定のビューアだけを表示させたままコンソールウインドウをアクティブにする方法はございますか?

また、色の設定で、Document View Colorの色を設定するとすぐに反映されるのですが、セーブ・色のエクスポート等をしても、Veritakを終了し、そのプロジェクトをダブルクリックで起動しなおした時には色が白に戻っています。設定画面では指定した色になっています。
3.38B 3.38Bにて改善しました。
Cntl-TabでWaveformView内だけの切り替え、Cntl-F6で、View全体の切り替えになっています。
420 WaveformViewManger有効時にWaveformViewのウィンドウを
「×」で閉じたときに「WaveformViewManger」の「View」が
「Enable」のままなのが気になってきてしまいます。

画面状態とCntl-Tabでの切り替え動作に不一致が
出てきてしまいます。
3.38C 3.38Cで改善しました。
421 もう一点、関連した動作で同じような内容で
画面状態とWaveformViewMangerの「View」の状態の
不一致が起こる条件があります。
重箱の隅をつつくような内容で恐縮です。
誰も、こんな所は気にしないと思いますが、気がついたので
報告だけはしておきます。

再現例:
1.WaveformViewMangerで複数のWaveformViewerを開き
 いくつかのウィンドウの「View」を「Disable」にする。
2.Veritak「ウィンドウ」メニューから
 「WaveformViewerの整列」
 「全てのWaveformViewの最小化」
 「WaveformViewを開く」
 のどれかを行うと、意図しないWaveformViewerが表示され、
 また、WaveformViewMangerの「View」の状態と不一致が
 起こります。
3.38D 3.38Dで改善しました。
422 WaveformViewMangerの「View」の状態である
「Enable」「Disable」が

1.Veritak終了時
2.コンパイル
3.コンパイル終了後シミュレーション開始
4.再コンパイル時

にリセットされます。これが保持されるようになると、
素晴らしくなりそうな気がしますので、機能提案しておきます。

今、「WaveformViewer Manager」で複数のWaveformViewerを
開いていて、その「View」の状態が再シミュレーション時に
毎回リセットされてしまうのが惜しいと思いました。
3.38E 3.38Eでご提案を実装しました。
423 This is xx from SF bay area, CALIFORNIA State USA !

I have been browsing your WEB SITE of sugawara-systems.com
and saw your VERITAK Tool,

i have a question.
Currently i am using ICARUS and it is having Simulation problems
with the MICRON DDR2 DRAM Memory verilog model.

Can your simulator run the MICRON DDR2 (DRAM) verilog memory
models without any problems,
- I haven't heard any problem from users regarding DDR2 simulation.
424 I have 512 MegaBytes SYSTEM MEMORY, is that enough.
I am only running pure verilog simulations, no gate level etc

I will upgrade my system to 1 GB Memory size (later).

Let me know if i need to upgrade right away or if 512 MB size is ok ?
- 512MB may be enough, depending on the size of your design.
If something is wrong,Veritak will issue warnings or error messages. Please try it anyway.
425 1. Waveformの波形だけ記録し、内部の情報を記録しない設定
(見たい信号だけに限定して、ハードディスク記録容量を少なくしたい)

 プロジェクトの設定で、できそうな感じ(わからずに操作していたら、
 このような状況になったことがある)ですが、教えて頂けないでしょうか?

2. ActelのFPGAにおける配置配線後シミュレーション
 実績はありますか?
 実績がある場合、参考にさせて頂くような資料的な物がありますか?
3.38H Tutorial 2.4.21をご参照ください。
(モジュール単位の設定になります。)


設定状態によってはそのように見えることもありますが、あまりお勧めしません。それは、シミュレーション状態を波形を含めてすべて保存しておく機能です。Version間の互換性がありません。また、PAUSEボタンを押すとその状態での保存が働いてしまい、以降ArichiveDiskを使用してしまいます。(具体的には、SaveRestore用のプロジェクトにしてDissableWaveformSaveUntill..をチェックします。またTriggerSourceを全部オフにして、再コンパイルボタン(歯車)を押します。見たい信号はあらかじめ出しておきます。)

上のように、面倒ですし、少数の特定信号を見るときは、SaveDiskをオフにして、VCDファイルを生成する方法の方がよいと思います。

お客さんで、54SXAというFamilyで対応したことがありますが、それは、2年位前で、フリーのライセンスも切れてしまいました。従い、現状サポートしていない、という回答になってしまいます。
アクテルのインストールは終わり、バックアノテートSDFを読んでみたのですが、やはり問題がありそうです。(Veritakの問題ではなさそうですが。)2週間程度お時間をいただき、対応の可否を判断したいと思います。申し訳ありません。
=>3.38Hで実装しました。
426 I have a ?small? request for the GUI interface. I have a lot of testbenches
written with code like:

if ($test$plusargs("spi") ) tests[TST_SPI] = 1'b1;
if ($test$plusargs("os_rio") ) tests[TST_OS_RIO] = 1'b1;
if ($test$plusargs("lpt_rio") ) tests[TST_USB_RIO] = 1'b1;
if ($test$plusargs("both") ) tests[TST_BOTH] = 1'b1;
if ($test$plusargs("regs") ) tests[TST_REGS] = 1'b1;
if ($test$plusargs("irq") ) tests[TST_IRQ] = 1'b1;
if ($test$plusargs("jpgm") ) tests[TST_JPGM] = 1'b1;
if ($test$plusargs("rly_timer") ) tests[TEST_RLY_TIMER] = 1'b1;

Currently, if I want to change a plusarg, I need to go the project menu, add it, save the
project, reload etc. Then to change it, I need to go back into the project menu, delete
the previous plusarg, add in the new one, etc. Lots of steps and menu items to go through.

I wish the main GUI window had another small text box for "quick plusargs". Just type something
in this box, and it will be passed on the "command line" to Verilog. I guess, if it really was an
easy path to the command line, I could also add a define command here.

Alternately, under the Simulation menu item, you could add a option to add a *temporary* plusarg
that would be forgotten when you quit Veritak.
3.38G Yes, Summer has come. Kids are enjoying a long vacation. However I must work hard..


Let me consider your suggestion. Before I implement it, I would like to you know there are some features not mentioned in tutorial.

Please see "regression_test\plusarg" in installed package. you should see some example projects on plusargs.. For example, Load the project of plusarg_test4.vtakprj.

you should see "veritak_command.txt" in the folder. this is a dump file from GUI to the compiler. You can easily know how veritak passes plusargs in command line by those examples(Yes, just direct passing.).

Another note is export/import feature in edit box.
In Project Edit dialog, please press "EX" button, then you will see "veritak_src_file.txt" in the project folder.

This is a text file you can edit.

+pattern=1011
++TEST23
+FREQ+12.4
plusarg_test3.v

So some changes can be made by text editor.
Next, press "IN" button. Now GUI dialog should update.(EX means export to the file. IN means Import from the text file.)

I feel complex test parameters may be prefered in command line batch mode.. I would like to hear if you have another idea or the same request about GUI..
427 $convert_hex2ver:ERROR Invalid INTEL HEX recordというメッセージがシミュレーション開始時に表示されます。mifで指定したROMを使用しているのですが、以下のmifはまずいでしょうか?16進はダメなのでしょうか?

WIDTH=128;
DEPTH=16;

ADDRESS_RADIX=UNS;
DATA_RADIX=HEX;

CONTENT BEGIN
0: 4d3935220a01010101010e3972a030de;
1: 564544330b242a292524074189e4e7e1;
2: 695f4a4e36393b3833312e448fd3e7ca;
3: 7376613c414344433f3d36316f97b4b5;
4: 9184454b4e4b47494746463f3c718178;
5: be945c5a5854525454564c4d4b606858;
6: ddbe6c6765635e5c61605f5a5659545b;
7: f7c27875787771766b6b6664685e4f51;
8: fac48a888c83817c83807a7a706f5b39;
9: f3c99b9c9895919aa1988d8f83724549;
10: cfa29ca8b2b5bfa7a7adaa9b92474742;
11: 9c819fbcd5e0d8cfcfd4beb49a373e42;
12: 7d6669bcdafbf4ebe7ecdec9883e3a3d;
13: 6a595d5ad3f2f6eeeaf0e8b22d313328;
14: 5b4c534e54d8efebe0d1b02d1a1d2826;
15: 5855383e52493133322a261e1d1a1c22;

END;
3.38F 3.38FからMIFファイルの読み込みに対応しました。altera_mf.vは、defaultでは、HEXファイルを読もうとするために、左記エラーになってしまいます。そこで、
プロジェクト設定のDefine設定で、
USE_RIFまたは、
NO_PLIを定義してください。こうするとMIFファイルを読むルーチンに分岐します。
428 I have encountered a problem with your product. It is not a serious problem
but it is very annoying. The problem I will describe by going through a few
steps to illustrate the problem. This uses the built in editor.
1. If you open a file in a project via the 'Verilog Project' / 'Edit Verilog
Project' menu it opens normally. OK so far.
2. If you edit the file and make an error. Then compile the project you get
an error message. OK so far.
3. If you double click on the error it opens another copy of the file. This
I think is incorrect behaviour.

I have made alterations in the original document and in the second copy and
when you save one version followed by the second version you loose some of
your work. I think when you open a document you should check to see if it is
already open. If it is not open then open it. I have noticed this problem
only occurs if you open a copy via the 'Edit Verilog Project' menu. Perhaps
exiting from that menu should save and close all open files.

I have tried your Xilinx examples and found that I cannot get them to
compile. I think Xilinx has changed many things since you wrote the example.
I do not like the Xilinx software anyway as it is slow and has lots of bugs.
Is it possible for you to check your example against the latest release of
Xilinx software and update the web page. The Altera example works great and
I have managed to compile and simulate a number of my own designs without
problem.

I would welcome your comments please. I think you have a good product please
keep up the hard work.
3.38F Thank you for your feedbacks.
3.38F fixed the issue.
429 $convert_hex2ver:ERROR Unknown record type. というエラーが出てしまい、MPLAB(7.6)のHEXファイルがうまく読めない..どうも、最初の行の「拡張リニアアドレス」(レコードタイプ04)レコードに対応していないようですね。 3.38G ご指摘の通りです。3.38Gで対応しました。
430 I created a new project using all the same files as the original design.

I turned on the optimizations, set Normal, turned off saving waveform data, etc.

I did not have any waveform windows to start.

The GUI simulation ran fast.

I then added a bunch (6 or 8) waveform windows with a bunch of signals and the
simulation slowed down even though I turned off saving data.

I then closed all the wavform windows using the "X" button in the upper right corner. The
simulation still ran slowly.

I then set the Wavform Manager to delete all the wavforms on exit. When I restarted,
the simulation once again ran quickly.

So... It looks like if I add a bunch of signals to waveforms, performance goes down
even though no data is being saved.

Can you see this behavior as well?
3.38G Yes,3.28G fixed it.
431 $convert_hex2verが期待値と異なる動きになる。
相違点は以下の2点
 1)16ビット(2バイト)データのLSB,MSBが逆
 2)アドレスが、$convert_hex2ver()の場合は、HEXファイルのアドレスと同じ。
3.38G DefaultではAlteraの変換ツールと同じ動きになります。(バイトオフセット、ビッグエンディアン)
アドレスがバイト単位で変化しない場合、期待と異なることになります。そこで、3.38Gでオプション引数を追加しました。

$convert_hex2ver(init_file, 16, ram_initf);//Default bytes_per_word=1, endian=big

3.38Gではさらに、
$convert_hex2ver(init_file, 16, ram_initf,2,"little");//bytes_per_word=2 endian=little
と指定することができます。regression_test フォルダのhex.vをご参照ください。
432 Thank you for correcting the problem with multiple copies of the editor
being open quickly it is much appreciated. Unfortunately it has highlighted
another problem. The problem is best illustrated by following the following
steps-
1. If you open the 'Verilog Project'/'Edit Verilog Project' dialogue
box and open a file for editing and close the dialogue leaving the file open
(The intention is to look at values of variables using the cursor).

2. Open a second file and place a breakpoint. Run the simulation until
you hit the breakpoint. Now if you look at the file that you first opened
you cannot see any variable values highlighted.

3. If you set a breakpoint in the file you first opened and continue to
run the simulation until you hit the new breakpoint, you still do not get
the values.

4. If you now close the file (with the breakpoint still in place) and
continue running the simulation, the file is opened when you hit the
breakpoint and the values appear as expected. It is true to say any file
that is opened for editing (or any other reason) cannot be used for
debugging (from the point of view of looking at values), where any file
opened by the system can be used for debugging.

It would also be nice to see the breakpoint colour in the margin remain
persistent after the green arrow has moved on during a debugging session.
There does not seem to be any easy way to describe the conditions where it
disappears (it still works as a breakpoint it just isn't visible).

Would it be possible to add some documentation to your web site describing
the function of many of the controls and check boxes in the properties and
edit dialogue boxes as they are not covered by the tutorial (not important
but useful). Another useful thing to add is reading memory files and file
types.
3.38H 3.38H fixed it.
433 現在、ザイリンクスのMPMC2というDDRのインタフェースを御社のシミュレーションツールで
シミュレーションを行おうとしているのですが、シミュレーションでエラーが発生しています。

@構文エラーのようですが、どのような構文エラーなのか分からない状態です。
表示は下記のように表示されています。
これ以上の詳しいエラー情報(どの行がエラーか?どのような構文エラーか?)は表示されないのでしょうか?

エラー情報:
xxx6_mt46v32m16_6t_v2_10_a\hdl\verilog\write_fifo_srl.v(12)::Info:

構文解析中です。
Error : Conflicting Scope name:gen_reorder_app_data_in_16bit

本箇所を見ると下記の記述となっています。

generate
if (C_WRITE_FIFO_MEMORY_WIDTH == 8)
★ begin : gen_reorder_app_data_in_16bit
assign app_data_in_tmp = ~initdone ? {app_data_in[63:8],app_data_in[35:32],app_data_in[3:0]} :
app_data_in;
end
else if (C_WRITE_FIFO_MEMORY_WIDTH == 16)
★ begin : gen_reorder_app_data_in_16bit
assign app_data_in_tmp = ~initdone ? {app_data_in[63:16],app_data_in[39:32],app_data_in[7:0]} :


Aまたシンタックスエラーでbegin endで何も記述されていない箇所がエラーとなっています。
 これは厳密にいうとVerilogでは記述していないとエラーが正しいという事でしょうか?

エラー情報:
xxt46v32m16_6t_v2_10_a\hdl\verilog\mpmc2_write_fifo.v(255)::

Parse Error.yy=syntax error

generate
if (C_WRITE_FIFO_BRAM_ASYNC)
★ begin: gen_async_fifo_logic
★ end
else
begin: gen_sync_fifo_logic
3.38H 1)エラーは、同じSCOPE名があるために起きています。この記述がLEGALな記述かどうかは微妙です。WORKAROUND(とりあえずの回避策)としては、たとえば、
if (C_WRITE_FIFO_MEMORY_WIDTH == 8)
>★ begin : gen_reorder_app_data_in_8bit
として同じSCOPE名を使わないようにすることです。恒久的には、通るように改善したいと思います。スケジュールについては検討中です。

=>3.38HでWarningに変更しました。
2)これは、Verilog2001ではillegalな記述だと思います。 WORKAROUNDとしては、;を追加してください。

=>3.38Hで変更しました。Verilog2001では、LRMに対しillegalになりますので、Veritak Extensionになります。
434 Yes I was asking about reading MIF and Hex files. I also was wondering about
the YACC program that you have a link to on your web site (& opencores). It
refers to the veritakwin format (in the code) and you have an intermediate
stage that seems to convert from hex format to some native format. This has
confused me. Also when reading a hex file, is it up to the verilog
programmer as to the data width in the target ROM/RAM.
I was also wondering if it is possible to add octel (base 8) to the radix
menu. I normally don't use octal but in looking at MIP's code it is easier
to break the 6 bit fields into two octets (just a thought!!!!).
3.38H/T.B.D. Sorry, Octel is not trivial work, so this is to be in my TODO list.
Other suggestions will be implemented in near future versions.
435 I'm running a regression suite of my current design using both
ModelSim 6.3 and Veritak. Of course, this is command line / Perl script driven.

ModelSim takes 106 seconds, Veritak takes 22 seconds.

I may not have all the best switches set for ModelSim, but still
it's nice to see Veritak perform so well.
- Thank you for informations. New compiler development is in progress, so I can make much faster next year..
436 下記のような構成でシミュレーションを行っているのですが
御社のHPのチュートリアルを見ますとザイリンクスのライブラリを使用する際
一度、コンパイルしてsdfファイルを生成しゲートSimを行う方法が書かれているのですが
ザイリンクスのライブラリを使用する際はsdfファイルの生成が必要という事でしょうか?

○Sim構成

DDRメモリ------MPMC2(DDRメモリコントローラ)---テストパターン
Verilogモデル unisim下のライブラリとglbl.vを使用

現在、sdfファイルを生成せずにlib指定のみ行い、
コンパイルしシミュレーションを開始したのですが
アプリケーションエラーが発生しシミュレーションが開始していないようです。
シミュレーションによるDiskの使用容量が増えていないようです。
これはsdfファイルを生成せずにシミュレーションを開始した為でしょうか?
-(解決済み)
SDFは、合成後、配置配線遅延をバックアノテートしたファイルです。RTLのシミュレーションでは、必要ありません。

=>
3.38H以降は、シミュレーションエラーなしに通るはずですが、確認は、手配中のEDKの到着後になります。
437 assign {AINC, EXT, FC0, FC1, FD0, FD1, ~STDBYX, FS} = R0;
でクラッシュする。(記述ミス)
3.38H 3.3XXからのバグです。3.38HでFixしました。
438 I hope you are enjoying the summer. Its beautiful here in Boston.

Now I am using Veritak a lot in command-line mode to run many simulations in batch.
I think I found a bug and I also want to request a new feature.


Bug:
Seems that I need a certain directory structure so that veritak2 can find all
the include files. The following directory structure works -
./base/sim
./base/rtl

- when I run veritak2.exe from the sim directory, with
veritak2 --W "../rtl" --i "../rtl" ../rtl/tb.v

But it does not work if I run veritak2 in the base directory or in the rtl
directory! I tried every other combination, and only the first one works.


Feature Request:
I would like to pass filenames into the simulation via defines,
e.g. --D MEM_FILE="mips.mem"

This is the way Cadence and Synopsys simulators work, and it is a very useful feature.
-
Yes, we can see a lot of fireworks in this season..


Thank you for feedbacks.


Let me look into this issue (directory problem) in detail.( Maybe a couple of days will be required.)
=>This is not a bug. Base folder is always assumed as root for the project. So please conisder relativ path to the root.

>I would like to pass filenames into the simulation via defines,
>e.g. --D MEM_FILE="mips.mem"

I think Veritak can do it as just you showed.

Please see examples in the folder of "regression_test\plusarg"
These are GUI examples, however,you will see how GUI passes parameters to command-line per Defines/Plusargs as "veritak_command.txt".
439 時間指定で、カーソルを移動させる事は可能でしょうか?

下記の様な機能があれば良いのですが、代替手段がありましたら
教えて頂けないでしょうか?もし、なければ実装を検討して頂けないでしょうか?

有る条件が成立したときに、$display+$time等でメッセージを出し、
その表示した時間をクリックすると、Waveformの表示が移動する。
3.39A 実装を検討します。
=>大変よいご提案をいただきました。ご提案の趣旨をを少し拡張して実装したいと思います。お時間をください。
=>3.39Aで実装しました。
440 Now I have this working. Thanks.

But the solution was very complex. The problem is that you cannot pass
'"' into veritak via dos command line. My solution is to convert the
file name to a hex number, and then set the --D define to the hex number.

Example:
File name is "pi.mem"
Hex value is 48'h70692e6d656d
(I use a little c program to convert.)

In the .bat file, I have
SET MEM_FILE=48'h70692e6d656d
veritak2 --D "MIPS_MEM=%MEM_FILE%" ...

And in the verilog, it is simply
$readmemh(`MIPS_MEM, mem);

Is there an easier way ?
3.38H Please use "" or \" instead of ". From 3.38H this solution works.
441 VeritakではEDKのIPまたはMicroBlazeのコードを含んだSimはできないでしょうか? T.B.D. RocketIO/PowerPC等のRTLは、ブラックボックス(ユーザからは不可視)であり、代わりにSmart model/Swift というインタフェースで行います。従い、SWIFTを持つシミュレータ(たとえば、ModelsimPE/SE)が必要になります。残念ながらVeritakでは、Smartmodel/Swiftをサポートできません。合成してゲートレベルで動かす手もありますが、実用的な速度は望めないと思います。
Swiftの実装も考えたのですが、インターフェースが公開されていないこともあり将来的にも難しいと思います。将来的な方向性としては、合成した上での協調SIM(Co-Simulation with HW)を考えたいと思います。
442

module literal_dsel(
    input  [(`Instruction_Len-1):0]   instruction_i,
    input [7:0] read_bus_i ,    // data from READ BUS
    output [7:0] b_o             // feeding data to b_bus
);

reg  [7:0] b_o ;
の記述が通ってしまいます。


3.38H 3.38Hで修正しました。
443 I have a question here. Does enum function works for 1-bit variable? It seems to me that it is not working. I attach one test project for your information. Or maybe I make a mistake there. T.B.D. Sorry, 1'bit enum is not supported in veritak.
I have no plan to implement it in near future, however I would like to implement it someday in future version..
444 A minor request/idea - It would be nice if I could assign a color
to the "name" lines in the Waveform Viewer.
3.39A It'll take a while to implement it.
=>3.39A fixed it.
445 xilinx IODELAY.vがDelayしない。
3.39 3.39AでFixしました。
446 カーソル移動に関して、下記ついて、ご検討頂けないでしょうか。

`timescale 1ns/10ps
$display ("%f", $time);

%t以外で、$timeを表示した場合も指定の時間に移動できないでしょうか?
数値だけで判別するのは困難と思われますが、プロジェクト内でタイムスケールと
%tか%fかの指定をする等で対応できないでしょうか。

先ほど送りました内容と共通するのが、既存のコードに対して
なるべく手を入れたくない点です。
新規に書くのであれば、3.39Aの仕様で全く問題ありません。
3.39C ご提案を検討しましたが、実装的に難しいと思います。
 
 現状の内部仕様は、単純に行バッファで"="を見つけたらその後の数値を読むだけです。(Document画面は、単にコンソールとして機能しており、シミュレータエンジンが$displayで出したものか、あるいは、単にTEXTをPasteしたものかは区別がありません。同様に%t/%d/%fで出力されたものかは、GUI側からは判断する機構がありません。なおtime=のtimeは、現状予約語の意味あいだけです)

 $displayのコンソール情報をSimulationEngineとリンクさせるのは、実装的に煩雑すぎるので避けたいです。

 以上の背景ですので、残念ながらご期待の動作は難しい状況です。

=>F.A.Q.452/453で改善しています。これに伴いtime=は、廃止しました。
447 I think I found the perfect solution for our simulation needs so I'm trying Veritak now.

However I discovered an issue (or an misuse from my side) about constant functions.

In the attached file, I have a small test that indicates the problem. I want to automatically calculate the number of bits needed for a certain operation. For example to determine the number of bits needed for a counter. In my case I want to calculate the number of parity bits needed for a hamming coder.

In the test I do both the number of bits for the counter (CLogB2) and the nr of hamming bits (NrHammingBits). It shows that the CLogB2 works fine, the NrHammingBits works only if it is called at simulation time, not at compilation time to assign the localparam HAMMINGBITS.

The output I produce with your most recent 3.39A version downloaded yesterday :

------------- Simulation Starts.--------------------

Calculate hammingbits : 10 --> 4

Hammingcoder : Hammingbits for 10 : 1 ( 4)

Calculate CLogB2 : 10 --> 4

Hammingcoder : Countbits for 10 : 4 ( 4)

Info: $finish command. time=1

I suppose that during initialisation (when determing the parameter settings needed for the bit width), the $display command is ignored, because it seems to enter the functions only once.
I tried the function NrHammingBits in ALtera Quartus project, and it compiles and generates the correct results (ie a register has the correct number of bits).

It should be really helpfull if I can use this function also for my simulations, this way I get rid of a lot of`ugly defines...

=>Excellent, never had such a fast and accurate response.
3.39B Your indication is completely right. Theere were some missing functions for current Veritak's implementation. (constant while statements and others..) I fixed this issue in 3.39B.
448 I met with our local Xxxxx FAE last week and complained about the
low quality of their s/w. I then said - look at Veritak - the designer
actually fixes bugs, listens to suggestions, and his product is constantly
getting better, unlike the Xxxxx s/w.
- Thank you for information.
I would be happy if Xxxxx people hired me!
449 Verilog HDL文法でalways文イベントリスト内で「or」ではなく「,」で
書かれた記述を見ました。

always @(posedge clk or negedge rstn)
always @(posedge clk, negedge rstn)

always @(a or b or c or d or e)
always @(a or b, c, d or e)

これらは構文的に同じと認識してよろしいのでしょうか?

- >always @(posedge clk or negedge rstn)
>always @(posedge clk, negedge rstn)
or と,は、下記LRM(Verilog2001)によると同じ意味です。従い、構文的にもSemantics的にも等価です。

event_control ::=
@ event_identifier
| @ ( event_expression )
| @*
| @ (*)
event_trigger ::=
-> hierarchical_event_identifier ;
event_expression ::=
expression
| hierarchical_identifier
| posedge expression
| negedge expression
| event_expression or event_expression
| event_expression , event_expression


>always @(a or b or c or d or e)
>always @(a or b, c, d or e)
上記BNFによれば、混在(,とor)も許されます。(あまりよいスタイルとは言えないと思います。)

以上、ご参考になったら幸いです。
450 I discovered that the runge-kutta function can be very usefull for me. But I have the following questions :

- is it possible to assign initial values to the system, and to change them on the run (x - values)?
- is it possible to switch between two sets of equations (matrixes) on the run? Fopr example for a digitally controlled dcdc converter, the state space model changes if the switch is open or closed. (I think I can solve this issue if I'm able to assign values for the x matrix, and then use a multiplexer according to the state of the switch for the output value).


339C I've made additional interface for X.
Here are snapshot.
451 、下記のコードで
期待と異なる結果を得ています(実際のコードから問題を絞り込
むために、小さなプログラムを作りました)。
$displayで表示している、zot()の最後の二つの結果は、6、12が期待
する値です。
(関数foo,barは無視してください。automaticをサポートして
いないことは、FAQでわかりました)
関数のパラメータへの代入(コピー)のタイミングの問題と思います。
一般的な言語では、パラメータリストの評価がすべて終了してから
代入をするようにも思うのですが、ご意見を賜りたくお願いいたし
ます。
(IEEE-1364-2001の仕様書もざっと眺めましたが、明確な記述は
見つけられませんでした)
ちなみに、zot2()は、強制的に評価後に代入が起きるようにした
ものです()。
以上、よろしくお願いいたします。

module top;

initial begin
$display("%d", foo(2));
$display("%d", bar(2));
$display("%d", zot(1,2));
$display("%d", zot(zot(1,2),3));
$display("%d", zot(1,zot(2,3)));
$display("%d", zot(zot(1,2),zot(4,5)));
$display(" ") ;
$display("%d", zot2({32'd1,32'd2}));
$display("%d", zot2({zot2({32'd1,32'd2}),32'd3}));
$display("%d", zot2( {32'd1,zot2({32'd2,32'd3} )}));
$display("%d", zot2( {zot2({32'd1,32'd2}),zot2({32'd4,32'd5})}));

end // initial

function integer foo ;
input integer k ;
begin
if ( k == 0 )
foo = 0 ;
else
foo = k + foo(k-1) ;
end
endfunction // foo

function integer bar ;
input integer k ;
begin
if ( k == 0 )
bar = 0 ;
else
bar = bar(k-1) + k ;
end
endfunction // bar

function integer zot ;
input integer i ;
input integer j ;
begin
zot = i + j ;
end
endfunction // zot

function integer zot2 ;
input [63:0]k ;
begin
zot2= k[63:32] + k[31:0] ;
end
endfunction // zot2

endmodule // top


=>
。LRMに関しては、私も2001/2005とも
見てみましたが、ご指摘のとおり、「起こりうる問題」と思います。
Automaticを使用できればこの問題が解決することもわかります。Verilog
は、「何でもかんでもstatic」ですね。
手元で使用できるVCSでは、期待通りの動作をすることも確認しました。
おそらく、NC-Verilogも同様と思います。
解決のためには、「automaticの実装が必須」とのことですが、vcsなどが
automaticを使わなくても、希望の動作をする理由を考えてみました。

Veritakでは、(今回のzot()を例にとれば)
1) 1番目の引数の評価
2) 1番目の仮引数への上記の代入
3) 2番目の引数の評価
4) 2番目の仮引数への上記の代入
5) 関数zotの実行
となっていると思います。

これに対して、vcsなどでは、
1) 1番目の引数の評価
2) 2番目の引数の評価
3) 1番目の仮引数への1)の結果の代入
4) 2番目の仮引数への2)の結果の代入
5) 関数zotの実行
となっているのだろうと思います。
これならば、必ずしもautomaticでなくても観測されているよ
うな動作はできると思います。

Verilogクローンの宿命としては、NC-Verilogと同じに動作する
ことが求められるため、つらいところですね。
今回の件に関しては、自分なりにコードの書き方を変えたため、
問題は既に解決しておりますので特に修正の必要はありません。
しかしながら、
>FUNCTION内パラメータに同名FUNCTIONを呼ぶことは、Automaticでない限り避け
>るべきと思います。
は非常に示唆に富んでいると思います。
「Verilogチュートリアル」にでも追加いただければ、悩む人も
(私は1〜2時間悩んでしまいました)減ると思います。
3.39D ご指摘の問題について考えてみました。大変微妙で悩ましい問題です。LRMに従えば、起こりうる問題と考えます。FUNCTION内パラメータに同名FUNCTIONを呼ぶことは、Automaticでない限り避けるべきと思います。

Verilog HDLのFUNCTION内変数は、LRM上STATICというところに起因します。

特に下記では、STATICを前提にすると、zot(1,2),zot(4,5)のどちらから評価しても期待値と異なる結果になると思います。
$display("%d", zot(zot(1,2),zot(4,5)));

Veritakの動きです。
zot= 3 i= 1 j= 2
zot= 9 i= 4 j= 5//iは、4を代入されたので4のまま
zot= 13 i= 4 j= 9
13

STATIC変数であるが故に、一度代入されれば、それまでの結果は上書きされてしまいます。これを避けるには、Automatic 変数が必須です。しかし、Automaticと明示されていないので、LRM上は、Staticと解釈するべきだと思います。


MODELSIMでの結果は、期待値と一致しますが、厳密にいうとSTATICという条件に反すると思います。(内部でAutomatic扱いにしているのだと思います。)

Veritakの動きは、CVER,ICARUSも同様です。恐らくMajorどころでは、MODELSIMと同じ動きになると思われますが、LRM上は、やはり記述で避けるべきと思います。


Veritakの場合は、Automaticをサポートしていないので、WORKAROUNDとしては、
同じ機能の別名FUNCTIONを作成するなどの姑息な手段に頼らざるを得ません。
申し訳ありません。(AutomaticのSuportは、難しく、現世代でのサポート予定はございません。)

=>ご提案ありがとうございます。少し検討させてください。

=>ご指摘の通り、FUNCTIONの引数をテンポラリにSaveし、全引数の評価後にAssignする方式に変更しました。適用Versionは、3.39Dです。ご指導ありがとうございました。
452 don't know what the best solution for this is. At a minimum, I suggest
you document the format required for the new function to work.

Might I suggest you change what you look for to be something like
<1234.00ns> or < 123> or < 123.45> or < 123.45 >
Where the < and > and mandatory as is the integer portion. So you need
to look for /< *\d\+\.*\d*[a-zA-Z]*>/

One problem will be different people use ns or nsec, us or usec.

I'd allow the <123> to be any where in the line. I like my numbers all on the left,
someone else may like them on the right.

I don't know if this helps or confuses!
3.39C 3.39C partially applied your suggestion.
453 I don't know if this is the best suggestion or not.

Here's an alternate, possibly tooooo hard/weird.

Make each $display message on the console a link. Or make it have an
invisible tag of some sort that records the simulation time & line
number of the actual $display message.

Just a thought.
Pending Thank you for suggestions. The last one seems rather complicated for me..

I've created new interface in 3.39C, with concept of minimum addition to existing codes and mixing of previously suggested idea.

Please see tutorial section 4.3.
454 トランスレートレベル(.vファイル)のシミュレーションはVeritakでシミュレーシ
ョン可能でしょうか?

↓↓↓

方法としましては、通常の、デザインをインプリメントする
フローとまったく同じで、それを使ってシミュレーションモデル
ができるというものです。

つまり、
1.EDKにてMPMCを含むデザインを作成
2.ISEにEDKプロジェクトを登録(通常のISEフロー)
3.Generate Post-Transrate Simulation Modelを実行

となります。
T.B.D. EDKの納入待ちになっています。確認までもうしばらくお待ちください。
455 Can a different editor be substituted for the Veripad? We are using the
Notepad++ editor for several projects and find it is a good open source
product:

http://notepad-plus.sourceforge.net/uk/site.htm

What functions or API does Veritak require the editor to support? I could
not decipher that from a quick review of the Veripad source code.

T.B.D. Thank you for introducing very powerful editor. I can invoke notepad++ instead of veripad..by folloing setting.

Program:"C:\Program Files\Notepad++\notepad++.exe"

Argrs:-n$L $F

Unfortunately there is no documented API regarding editor interface.
If you are interested in some features of Veripad, please let me know one by one. I'll explain or consider further interface per specific your requests by each.
456 The changed dll works, thank you for that. I can swap models now, as long as the internal state variables are used for the same thing of course.

I'm starting to get somewhere, but I'm stuck at the runge-kutta again.


Are there some limitation on the equations that your runge-kutta function can solve?
If I use a different state model for the same system, one works, the other not.


Just as an example :

for example : two rc filters (same R, same C) in series without any buffer :

H(s) = 1/(tau^2*s^2 + 3*tau*s + 1) (tau = R*C)

with mathlab : it generates something like

A = [-3/tau -1/(tau^2); 1 0];
B = [1 ; 0];
C = [0 1/(tau^2)];
D = 0
(wich is just the controller canonical form that can be derived from H(s))

This works fine.

If I however use the voltage on the two capacitors as state variables, I derive a model like this :

A = [-1/tau 1/tau; 1/tau -2/tau];
B = [0; 1/tau];
C = [1 0];
D = 0;

The output from simulation stays 0 all the time.
I verified with MatLab, and the two models seems to generate the same transfert function with ss2tf.

See also included files for a small test project.


The thing I'm after is that I use the current in the inductor and the voltage in the capacitor of a dcdc converter as state variables. With the models described like this, I can swap easily by copying the state variable from one model to an other.
- Please try following code.

read_array2[1] = V;// [0]->[1]


Also, I've attached main source code for your reference.(Sorry, Ignore some Japanese comments.)
=>continued to F.A.Q.462.
457 Two problem with the new "click in console" feature:

- It is hard/impossible to cut & paste text from the console window.
I don't see how I can "sweep over" an area to select it since when
I click the waveform window pops up.

- If I have 3 waveforms in the window manager, it always seems to pop
into the bottom waveform, not the top waveform on the screen.

I realize that the "link" idea may be hard to do, but it may let you do many
more flexible things in the future. For example, you could (eventually) have
a mode that when you click on a line in the console you have the option
of going to the source text, having it tell you what module/line printed the
text, or going to the position in the waveform.

I'm NOT saying to implement these different option, I AM saying that the link
idea may give you a flexible way to add new feature in the future.

Thanks!
3.39D/T.B.D. Thanks for feed-backs.
458 トランスレートレベルでのシミュレーションが、可能であればなにか設定などを行う必要があるでしょうか?インクルードの指定など...。

=>ご回答ありがとうございます。
通常通り、トランスレートレベルでシミュレーションができました。
- 文法的には、
特に問題ないと思います。

TOPで、インスタンス化している上位モジュールがないシミュレーションはできません。

その他のインスタンスについては、すべてSIMPRIMSにあるようですので、それをLIB_DIRで設定してください。例は、TutorialのXilinx ゲートシミュレーションにあるのでそちらをご参照ください。Inludeについては特に設定の必要はないと思います。
459 Indeed, this is a solution, and now I have the code, I can understand. The safest solution is to set read_array all to the input value, or... (see next line)

From the source code you send, I think the solver can handle only single input/single output systems (other wise the B and C matrices should be 2 dimentional too). So I don't think you need the read_array and write array. Just use something like output = $rungekutta("name", input) should do the job then.
- >I think the solver can handle only single >input/single output systems.

Yes, you are correct.
The routine was written about 3years ago. I've almost forgotten..Maybe you would like to write your own routine for your application.
460 I have a PLI third party file. the file name is "lp_pli.so". it has two tasks that I need
$toggle_count() and $toggle_count_report_hier()

my question is how would I include the pli file into my project so I can call the tasks above?
- Sorry,you can't do that. Veritak suports only very limitted VPI, not PLI.
Further worse, "lp_pli.so" is UNIX shared file, not windows.
461 Actually, what features do you require an editor to support to work with
Veritak? There is probably an informal API (Application Program Interface)
between Veritak and the editor. There is no additional feature of Notepad++
that I currently desire, but the source code is available or a "plugin" for
Notepad++ can be created, if needed, to handle any special Veritak needs.
- >what features do you require an editor to support to work with
Veritak?

Well, Major Features I require are,

1)Step
I press Middle(Mouse) botton to STEP program.
This can be done by notepad command line, but Notepad Response is not ideal as you can see. I think something another interface will be required for notepad.

2)Tool Tip
To see current value, Tool-Tip is must item.

3)Set/Reset Break Points

Please imagine environment when you debug C++ source on VC7/8. The same items are required for notepad as Veripad did.

>but the source code is available or a "plugin" for
>Notepad++ can be created, if needed, to handle any special Veritak needs.
>
I understand. The problem is I have not much time to implement it.
I've not seen the source. Do you have any idea how difficult to implemnt these features as plugin? Maybe someday in the future I'll try.

>informal API (Application Program Interface)
No, actually Veripad source is all information I have.( All I added portions are commented by //TAK. So grep TAK.
462 The vpi interface is nice, I didn't have any experiance with it, but it turns out to be interesting.

I did some software to make the linear system simulation easier, the only thin left is reading the file with the matrices.

I see you use these functions:

extern int reset_lexor(const char * path);
extern bool parse_mat_data();
extern vector< vector<double*> *> *doubles_types;

Is this a seperate piece of code in your project? If so, is it possible to send me? This way I don't have to write it a second time.

=>No sorry needed, this is exactly what I needed. Many thanks.
If you ever need an extention for your rungekutta function to do multiple inputs and outputs, let me know.


=>Because I think you made an excellent simulator for a very decent price, you can use.
3.41 Also, I've attached main source code for your reference.(Sorry, Ignore
some Japanese comments.)

=>
Here are old files. I don't know this helps you. (Please note Flex/Bison is used for generation of c++ source.)

Sorry,but please help yourself.

=>You are welcome.
Thank you for your kind offer.

=>Thank you for sending valuable project and an indication.

Indeed it is so cool! It is so smart coding.

BTW, I have encounterd crash with several samples. In Debug Mode on VC8 there is no problem. The crash was observed only in Release Mode.

It seems multiple file of parse causes the problem.
I patched as follows.(2 lines added. )

After applying patch, all samples worked well.

提供していただいたのは、より一般的な状態空間表現を可能にするシミュレーションコードです。現在、ビルトインファンクションとして搭載許可をお願い中です。

=>ご了解をいただきましたので、ビルトインFunctionにしました。
463 I found couple issues on Veritak. would you please take a look?

1]
wire signed [17:0] kfm_s3_lsb;
wire signed [13:0] kfm_s3;
assign kfm_s3_lsb = kfm_s3 <<< 3;

>> note: a 14 bit value is signed-shift left 3 to an 18 bit variable. the problem is the compiler does not sign extend. so if kfm_s3 is a negative number and sign shift left 3, the result should be negative but it is not.



2]

parameter VALUE_WIDTH = 22,
parameter VALUE_FRAC = 12,
parameter MAGN_WIDTH = 14,
parameter MAGN_FRAC = 12,
parameter EXP_WIDTH = 4,

wire signed [ VALUE_WIDTH-1:0] in_value = -56;
wire signed [ MAGN_WIDTH-1:0] in_magn = 4095;
wire signed [ EXP_WIDTH-1:0] in_exp = -1;

reg signed [VALUE_WIDTH+MAGN_WIDTH-1:0] shifted_1;

wire signed [VALUE_WIDTH+MAGN_WIDTH-1:0] shifted_0 = ( (in_value * in_magn) ) <<< (-in_exp);

always @* begin
if ( in_exp == 0 )
shifted_1 = in_value * in_magn;
else if (in_exp > 0)
shifted_1 = ( (in_value * in_magn) ) >>> (in_exp);
else
shifted_1 = ( (in_value * in_magn) ) <<< (-in_exp);
end

>> note: shifted_0 result is not equal to shifted_1. shifted_0 is the correct result.

let me know if you can not replicate the problem. I give you more detail.
3.40A
I fixed the indicated bugs in 3.40A. Please try it.

Followings are the correct interpretation of LRM I believe.


< assign kfm_s3_lsb = kfm_s3 <<< 3;>

LHS has 18bts, while kfm_s3 has 14bits bit width.
1) kfm_s3 is extend to 18bits by context determined. Since kfm_s3 is signed, MSB is copied to extended MSBs.
2) shift 1) by 3bit. ( So No different results as "<<". )
3) Assign RHS to LHS.

< (in_value * in_magn) ) <<< (-in_exp) >

1) LHS has VALUE_WIDTH+MAGN_WIDTH bit width. So,
in_value and in_magn is extented to VALUE_WIDTH+MAGN_WIDTH.
Both signals are sign extended.
2) Peform Multiply.
3) Calc (-in_exp), where in_expr's bit width is self-determined (not context determined).
4) Shift by (-in_exp).
5) Assign RHS to LHS.

That's are verilog HDL rules, which is all different from convetional C language. it is recommended the style of using the same bit width between LHS and RHS as you know.
464 構文解析のエラーが、初心者にはわかりずらい。 T.B.D. 将来のVersionでの検討課題とします。
465 Real表示のRADIXが欲しい。(VCDでは型が失われる。) 3.41 64bit 信号のみ対応しました。
VCDは、実装依存の可能性があります。
466 今回のご質問は簡単で恐縮ですが、たまに
エラーがなく正常終了しているにもかかわらず、waveform Viewerが
立ち上がらず終わってしまうときがあります。
プロジェクトファイルのサイズが小さくなっており、情報がなくなって
いるようなのですが、使い方が悪かったりするのでしょうか?

どういうときに起こるか、特徴はつかんでないのですが。

=>WaveformViewManagerはSaveファイルし指定するダイアログでチェックを
付けることがポイントなんですね。
(プロジェクトの設定ではチェックを付けられない)

WaveformViewManagerなら本当に消そうとする(右クリックメニューで)を
行わない限り、間違って"×"を押してもEnableにすれば再度現れるので
気分的にも安心です。
- 再現できていません。なにかあるとすれば、Saveボタンを押すタイミングとハイパースレッドの関係かもしれません。

WaveformViewManager付のプロジェクトを作成して様子を見ていただけるでしょうか?

波形がでた状態で、名前をつけて保存するで、チェックを入れて保存します。再度、ファイルダイアログからプロジェクトを読むとその以降そのプロジェクトは、WaveformViewManagerのダイアログが出てきます。

これですとSaveボタンを押す必要がありません。常に最後の状態で保存されます。
Saveボタンのタイミングの問題は排除できます。
467 Dear Sugawara-san,

I encountered the following error when compiling the sources in the
project I am working on. It finished parsing without errors or warnings

Parse Analysis Finshed.

Loading vpi

Generating Scope

Evaluating parameter..

Evaluating generate...

Evaluating reg/wire...

Evaluating module...

Reduction Phase:

Elaboration Process finished successfully. Code Generation Starts....

Generated param_list_structure...

Internal Error EC=1569

Internal Error EC=1569

Internal Error EC=1569

Internal Error EC=1569

Internal Error EC=1569

Internal Error EC=1569

Internal Error EC=1569

Internal Error EC=1569

Optimizing Code...

Complie Failed due to Code Generation error.

Code Generation Complete.

Compile Error during Code Generation

finished with incomplete compilation
3.41C It is related error to ">>" or ">>>" in continous assignment statement.
3.41C fixed EC1569/EC1541/EC1562/EC1547 error.
468 Thank you very much for your product, I like it very much.
I have dual boot system, XP and Vista. I run your program on both OS’s and found very small issue with font handling. Please see attached, circled by red line on the same window to compare.
Thanks again.

=>Right after I updated the font, the compiler status window redraws to the chosen font and color (all errors and messages) and problem disappears. But then, when I recompile the same again, the error messages appeared in the different color (pink) with the same characters as it is shown in the attachment.
3.41D I understood your point. Pink is my intention ,but font is not.
3.41D has fixed the issue.
Please try it.
469 I checked new version on both OS's and glad to tell you everything is fixed.
I have a couple of questions: When I have a message "Parse Error.yy-syntax error", this .yy really means something? On o both, Vista and XP attached earlier files you can see that.
Are you planning to create News Letter Mailing List so people can subscribe and know latest news about your great product?
T.B.D. <About yy-syntax error>
No special meaning. This makes me to understand the error occurs at parse stage. Compiler proceeds per following stages.


1)Pre-processor - operates define macro/include files..
2)Parse Analysis
3)Semantics Analysis/Elaboration
4)Code Generation

You may be heard of YACC/FLEX/BISON. I'm using the same kind automatic parser, which reports yy--xx--error conventionally, thus I'm using the same error message. Anyway, no special meaning for user..


<Are you planning to create News Letter Mailing List>

Sorry, not yet. Maybe future in next generation, I'm interested in Forum/WIKI/etc ...
470 欲を言えば、{64{1'bz}}は、radixでfloatを選択した場合に、「z」と表示された方が便利な気がします。このほうが、integerやhexと比べても一貫性があるように思いますが、いかがでしょうか? 3.41E 3.41Eでzxが含まれる場合は、Hex表示にしました。
471 In the structure browser, if I right click, I get options for "Clear all check box"
and "Check all check box"

It would be nice to have a "Clear all check boxes for lower levels of hierarchy"
and a "Set all Lower Level Hierarchy Check Boxes"
3.41E 3.41E implemented it.
472
I am trying to dump some memory contents to waveform but I got "Data is
not saved" message.



Is there a way to store and display mem contents on waveform?


- You can not view more than 32KB memory on waveform viewer.
If memory declaration is in 32KB, you can view by setting LIMIT of memory size on Project setting. Please note Larger size affects performance.

An example is memory_test.vtakprj on sample directory. Run the project,and DBL-Click the line, then you will see expanded view of memory contents.
473 Veritak basic版、V3.41Eで少しおかしなところがあるようです。
assign文の右辺式に$sin()を使用すると、

Z:\tomo\Project\ADcon\Study\SigmaDelta\testsin.v(11)::Error: $sin 
functionが見つかりません。
Elaboration Phaseでエラーが発生しました。

というエラーが起きるようです。回避策としては、alwaysブロックを用いて、一
度regに代入
してから、assign文を使えばよいことはわかりましたので、緊急度はありません
が、ご確認
願えれば幸いです。
( ここからは私の想像ですが、$sin()はVPIで実装されているのでないかと思い
ます。
VPI関数が、assign文の右辺式に使えないという制限は、LRMの中にはないと思う
のですが?)
T.B.D. ご指摘の通りです。$sinは、VPIを使っています。VPIについては、限定的なサポートしかしておらず、継続代入文から呼び出すことができません。これについては、現世代でのサポートは予定しておりません。申し訳ありませんが、手続き構文からご使用いただきたくお願いいたします。後でチュートリアルに追記します。

ご指摘の件については、次の世代で実装したいと思いますが、恐らく、VPIではなくDPIになります。リリースは、来年の今頃になると思います。お待たせして大変申し訳ありません。
474 全体回路のテストベクタの記述が良くないらしく、うまく動作しません。 - QuautusのSimulatorでは、Default Lowで初期化されていると思います。それを前提にしているSimulatorと一般のVerilog Simulatorとの初期値Xとの挙動の差が原因の一つだと思います。また、拝見したソースでは、そのほかにもGated Clock、レース問題があるように思います。
475 The enclosed file seems to illustrate a problem. The multi-dimensioned arrays seem to have been combined. Perhaps you do not support more than 2 dimensions?

The net declared as:

wire [21:0] sop_sum[0:3][0:3][0:3];

shows up in the Scope Tree View as:

sop_sum[0:3][0:15][21:0]

Also the assignment:

assign sop_sum [0][0][1] = 41;

Shows up in the waveform viewer as:

[21:0]sop_sum[0][1] with the value 22'hXxxxxx

This value passes to the output

Could you explain?
3.41F Yes, GUI(viewer) supports only 2dimensions. Let me consider in detail for 3 dimonsional array display.
Simulation Engine supports 3 dimensional array.
( Please note veritak combines multi-dimensional array as one internal array. So, you do not receive any warning if it is in the range of the array.

Ex.

wire [21:0] sop_cry [0:3][0:3][0:3];
[4] is out of range, but [4][0][0] is in the range of combined array.

$display(" TEST: %h + %h = %d ",sop_sum[4][0][0],sop_cry[4][0][0],(sop_sum[4][0][0]+sop_cry[4][0][0]));

)

=>I noticed that you are using only wired array. I've made trivial patch for wired 3 dimensional array for your convenience. (Sorry, currently only wired array applied.)
476 471=>

It looks like my last comment on a problem is slightly wrong. I do not
have to expand/collapse the instance - I need to click on it to hi-light it,
then the set/clear all works. If I simply point at it, right click, then
do the set/clear, it doesn't work.
3.41F. That's exactly I implemented. It must waste your time. I'm sorry.
I'll add "hi-light.." on menu.
477 Thank you as always for you prompt reply. We did find the errors and are now working through the LINT warnings. We're starting with just LINT bitwidths. There are lots of floats to deal with yet. Could you explain these:

D:\xxxx.v(103)::Warning:Lint LHS and RHS have different bit-width.1 < RHS=32
D:\xxxx.Customers\.v(104)::Warning:Lint LHS and RHS have different bit-width.1 == RHS=32
D:\xxxx.Customers\.v(123)::Warning:Lint LHS and RHS have different bit-width.1 == RHS=32

They seem to have to do with the genvar i?
3.41F 3.41F fixed it
478 Is there a limit on the bit width of data read using readmemh? I am
trying to write a testbench that uses readmemh to read in data that is
44 bits long but no waveform appears and no results appear but the
simulator displays Time = 0 and Finished Verilog Process.sta
- No specials. LRM states "at least 24bit". However, Veritak may handle larger size, depnding on virtual memory config.
479 Does it support 32 bit addressing or larger ? - Compiler/Simulator Engine is 32bit. WaveformViewer uses 64bit shared memory. In general available memory for user in windows is 2GB. This is not veritak limitation but windows limitation. Compiler/Simulator 64 bit
version is far-away for me, may be 2 years later.
480 would 4 Gbyte be the most that the simulator can take advantage of, or
larger?
- May be. Sorry,I do not have environment for checking.
481 XILINX ISE 9.2.03i のライブラリ(添付の LUT1.v)をコンパイルすると、
以下のようにエラーとなってしまいます。

C:\tmp\RTLs\ise9.2i_verilog_lib\unisims\LUT1.v(34)::Warning:Lint Full
Index range requirement is 2 Actual range is 1
Reduction Phase:
Elaboration Phaseでエラーはありませんでした。コード生成中です...
param_list_structureの生成が終了しました。
C:\tmp\RTLs\ise9.2i_verilog_lib\unisims\LUT1.v(34)::Internal Error,
Error Code=796
コンパイル未完了のまま終了しました。
3.41F 3.41FでFixしました。
482 現在、論理シミュレーションを行っておりまして
下記のメッセージがVeritakから出力されます。
対処方法をご教授願います。

//// Veritakのコメント
Block Memory Generator CORE Generator module loading initial data...
Can not open the file: xx.mif In module:xx_TOP.xx;
C:\Xilinx9_1i\verilog\src\XilinxCoreLib\BLK_MEM_GEN_V2_4.v(615)::
VPI ERROR: $fdisplay parameter is invalid.
In module:xx_TOP.llcnt_p7.dpram.inst;
C:\Xilinx9_1i\verilog\src\XilinxCoreLib\BLK_MEM_GEN_V2_4.v(617)::
Info: $finishコマンドを実行します。time=0
3.41G
MIFファイルが指定されていて、ファイルが存在しないときに発生します。3.41GでFixしました。
483 いつも使用させていただいてます。
今回今までにない大容量のシミュレーションファイルを実行したところ、
下記のようになり強制終了となってしまいます。
何か対応方法がございましたら教えて頂きたいです。

Verilog プリプロセッサを起動中です。
xxxtop.v(1):: Reading
xxmesim.v(1):: Reading <・・xilinxのはき出した配置配線後
のネット約72MBのファイル
Verilog プリプロセッシングを終了します。 <・・上記ファイル読み込み中に強制終了し
てしまいます。OS=WIN_XP
Verilog コンパイルを開始します。
コンパイル未完了のまま終了しました。
3.41H/T.B.D. プリプロセッサの制限を50MB->100MBにしましたが、現状では、現実的にコンパイル可能なのは、20-30MB程度ではないかと思います。
次世代での検討課題とします。

=>
プリプロセッサのタイムアウト時間を60secにしました。

484 Attached is a file that may show a problem with assigning a parameter
from a function. Can you please take a look at it to see if there is actually
a problem?
module ptest;



function [7:0] log2;
input [31:0] value;
begin
log2 = 0;
while (value[31:1] != 0)
begin
value = value >> 1;
log2 = log2 + 1;
end
end
endfunction

parameter DEPTH = 32;

parameter
A_WIDTH = log2(DEPTH)+1;


integer i;

initial
begin
i = log2(DEPTH) + 1;

if (i !== A_WIDTH)
$display("GACK! i=%0d A_WIDTH=%0d", i, A_WIDTH);
else
$display("OK");
end

endmodule
3.41I 3.41I fixed it.
485
現在、EDKが9.2となりMPMC3になったのですが、代理店からのアドバイスによりDQSにプルアップすれば不定とならない事が判明し修正したところ以前のデザイン(EDK8.2のMPMC2)で動作するようになりました。しかし、EDK9.2でデザインしたMPMC3では以前できていた書き込み動作がしなくなってしまいました。

EDKのバージョンを上げたことでISEのバージョンも上げたので、ライブラリのコンパイルが必要になった為、動作しなくなったのでしょうか?
ライブラリのコンパイルは通常のGoではコンパイルされないのでしょうか?

以上、宜しくお願い致します。

=>波形が正常に出力されている事を確認致しました。
早急な修正、ありがとうございました。


また、正常な場合も下記のワーニングが発生するのですが、本ワーニングは問題ないのでしょうか?
ワーニングが発生する原因をお教え頂けないでしょうか?
512Mb_ddr/ddr.v(1376):: Warning: 512Mb_ddr/ddr.v 1376 :Specify Section is ignored in Veritak.
C:\Xilinx92i\verilog\src\simprims\X_BUF.v(31):: Warning: C:\Xilinx92i\verilog\src\simprims\X_BUF.v
31 :Specify Section is ignored in Veritak.
3.41I
Veritakの側に問題があり、3.41Iで修正しました。

=>Veritakでは、specify sectionをサポートしていないので、厳密には、MODELSIMの結果と精度的な意味で一致しませんが、RTL的な評価が目的であれば、特に問題ないと思います。

このspecify sectionの趣旨は、セットアップや、ホールドタイムのチェック、及び遅延パスの提示です。Xilinxのライブラリの場合、その実質の殆どは、0になっており、その場合は、specify section自体がないことと等価です。問題は、遅延パスの記載があった場合ですが、この時間パス分は、Veritakの場合0として評価されますので、MODELSIMの結果と精度が異なる結果が生じます。DDR2波形、及び拡大波形
486 ModelSim で作成した VCD ファイルを読み込んだ後、
Waveform Viewer に信号を追加して表示するのは問題なく出来ました。
しかし、これを波形フォーマットとして do ファイルに保存後、
その doファイルを読み込んで表示させようとするとエラーが発生して
プログラムが強制終了してしまいます。
私の使用方法が悪いのではないかと思うのですが、
どうすれば do ファイルを使って波形表示出来るのか、
教えて頂けるとありがたいです。
- do fileについては、サポートしていないフォーマットもあり、同様の現象がF.A.Q.398でも報告されています。Doファイルの方法は使用せず、プロジェクト中にVCDファイルを入れ込む方法を行ってください。
たとえば、F.A.Q.485で行っていますが、

http://japanese.sugawara-systems.com/user_faq1.htm#R6

のようにModelSimVCD波形とVeritak波形を同時に表示することもできます。
WaveformViewManagerを使用すると、波形フォーマットをSaveするために、Saveボタンを押す必要はありません。VCD波形もVeritak波形と同じように扱えます。

Tutorial 2.4.12 WaveformViewManager を使う。
2.4.1.2 複数のVCDのプロジェクト

をご参照ください。特にModelSimVCDの場合、wire信号がばらばらに生成されてしまいますが、自動的にバス信号にしてくれる機能を使うと簡単にバス化できます。お試しください。
487 I am a licensed user of the Veritak software, and I am very satisfied from
it. Nice work!

I just have one question: Veritak does not support the compiler directive
"`include". This is a pitty, because I would like to use this directive in
order to include some function definitions is various modules. In the
current situation, I have to write these functions over and over again, in
each module that uses them.
Would it be possible to support this "include" directive in future releases
of the software?
- Veritak supports "include" directive. Actually it is operated by pre-processor in veritak. Please note Rootis assumed at project folder, Not source relative.

An example is shown in alu.vtakprj at example folder on installed package.
488 I tried to use Veritak to translate existing VHDL codes to verilog.
The following are the VHDL codes that causes translation error of not
finding library hw_lib:



In file clkzn_x_rtl.vhd



library hw_lib;



architecture rtl of clkzn_x_aac0 is

.......

zone_slice : entity hw_lib.clkzn_slice

.......

end rtl



Can you let me know how to define hw_lib and compile entities into the
library and get it recognized by VHDL to verilog translator to translate
the reference of the entity correctly?
- VHDL translator is not supported.
490
altera 社の MegaWizard で生成される DDR SDRAM Controller v7.1 のシミュレートが、
VeritakWin 3.41I で行ったものと ModelSim で行ったものとで結果が異なりました。
回避方法と原因を教えてください。

Quartus II Version 7.1
DDR-SDRAM マイクロン MT46V16M16 - 4 Meg x 16 x 4 Banks
- 原因は、IP内のレース記述によるものと推定します。IP内の0nsグリッチをセンスしないようにするには、たとえば、IP−>DDR ddr_dqs[1:0]に対して 慣性遅延を挿入します。
491 Hello Tak,

I'm trying some simulations with Altera provided functions for dual port RAM blocks inside an fpga.

I hava a problem with some paramter evaluation inside the altera.mf. (I used the file from 7.2). Anyway, where the file comes from does not matter, I included a cut version toghether with a detailed problem description.

Please have a look,
3.41J There was a bug regarding defparams in generate statement.
3.41J fixed it.
492 Mr. Sugawara,

I use veritak daily and I need to get a new, faster PC. Can you
please re recommend the minimum PC specs needed for me to get a
'very' good 'very' fast system?

Please also tell me, how does Veritak use the RAM and the Disk
together? If for example, I had 16 GB of RAM would it still use the
Disk? What are the rules that you've set up?

Thank you,
- Veritak has 32bit simulation engine and 64bit shared-file for waveform history.This means 4GB addressing limitation, however user memory has 2GB(maximum of 3GB on special setting.) limit on Windows. So I do not expect performace improvement more than 4GB RAM. Regarding Waveform history, veritak uses 64bit addressing as shared memory.(Size is set by project setting.) This is virtual memory, not specific disk/memory, maybe OS determines it depending on physical memory size. Sorry,I don't have much information.


I think larger L2 cache should show fast simulation, core2 duo/quad (larger L2 is better) with 4GB RAM(1GB is min.) is my recommendation.
493 I used veritakwin for a year. it is a very good software. I like it very much.
I try to buy a new PC with window vista. Could I still use veritakwin? How can I install it?
Would you please send me the instruction? Thanks.
- See the license agreement.
494 You mentioned that you will provide SystemVerilog subset support in 2008,
can you provide a more detail list of features/subset that you will provide
in SystemVerilog?
- This is completely new compiler under development. First version will be verilog-2001 grammers with a few of systemverilog features, such as hardware oriented grammers and DPI. I will not be able to implement assertion/clocking/coverage in 2009, maybe after for those items.
495 Does your Veritak simulator work with the Novas Debussy and Verdi
display/analysis tool?
If so, how what is needed to set it up?

Thanks,
- Veritak does not work with Debussy, sorry but I have no plan to support it.
496 How do you Output a vcd file??

I see by reading the Help screens how to 'read' one in - if you
already have one from some other tool - but I don't see how to
'write' one out after a sim from Veritak.

Sorry, but I just couldn't understand it or find it in the Help.
- It is not veritak specific. Please see some verilog language tutorial.
For example, you can dump by

initial $dumpvars;

Veritak dumps all signals as dumpfile.vcd.
Another example is shown as "vcd_test.vtakprj" in examples folder.
497 Could you please look at the sample code (below)? I get the following
syntax error msg from Veritak and I can't see what's wrong with the code.

Thanks!



------------Starting Verilog Build Process----------
Starting Verilog PreProcessor...
C:/tmp/y.v(1):: Reading
Verilog Preprocessing Finished.
Starting Verilog Compile Process...
C:\tmp\y.v(1)::
Info: Parse Analysing...
C:\tmp\y.v(24):: Parse Error.yy=syntax error
Parse Analysis Finshed.
Parse Error Detected in Parse Process.
finished with incomplete compilation


module tb;


// FIFO Count Management
reg [FIFO_TOP_ABIT:0] cs_fifo_wptr_x0;
reg [FIFO_TOP_ABIT:0] cs_fifo_wptr_x1;
wire [FIFO_TOP_ABIT:0] cs_fifo_wptr_bin;
wire [FIFO_TOP_ABIT:0] cs_fifo_cnt;
wire [FIFO_TOP_ABIT+1:0] cs_fifo_sub;

always @(posedge clk_rd)
begin
cs_fifo_wptr_x0 <= 'h123;
cs_fifo_wptr_x1 <= cs_fifo_wptr_x0;
end

// convert the write pointer back to binary
genvar idx;
generate
begin
assign cs_fifo_wptr_bin[FIFO_TOP_ABIT] = cs_fifo_wptr_x1[FIFO_TOP_ABIT];
for (idx=FIFO_TOP_ABIT-1; idx>=0; idx=idx-1)
begin
assign cs_fifo_wptr_bin[idx] = ^cs_fifo_wptr_x1[FIFO_TOP_ABIT:idx];
end
end
endgenerate


endmodule
- Verilog 2001 needs explicit label "for" generated scope in LRM.
Please add a label to "for" generated scope.

for (idx=FIFO_TOP_ABIT-1; idx>=0; idx=idx-1) begin :label //<--Please ADD
assign cs_fifo_wptr_bin[idx] = ^cs_fifo_wptr_x1[FIFO_TOP_ABIT:idx];
end

In SystemVerilog, the case above is no problem.Simulator generates implicit scope name (simulator dependent) for non-named "for generated scope. ModelSim seems to follow this rule in even Verilog 2001 source.
498 I notice in Veritak I can reference a register before I
declare it, but XST complains about it.
Which is the correct behavior?
- Yes, I know that. ModelSim also seems to follow that rule. However, LRM states nothing about the rule. It seems regular but conventional rule for me. Stephan-san(Icarus) also is indicating this behavior. Veritak Lint (Floating reg/wire )option should warn it if register is used before you declare.
499 いつもVeritakを使用しており,とても研究の手助けになっております.

Veritakを使用して問題が発生したため,ご質問させて頂きます.

contains infinate loopというメッセージが大量に出てきます.

エラー扱いではないのでシミュレーション自体は実行できるのですが,
回路中に所々不定値が出てきてしまい,正常に動作していません.

RTL記述は相当見づらいですが,何度も見直しても問題は見あたりませんでした.

またVCS-MX V-2007.06 を使用した場合
パラメータのDIGIT163の値によってエラーが出たり出なかったりということはなく,
どの値に設定しても正常にシミュレーションできました.そのためVeritak固有の問題かと思い,メール致しました.

ご対応のほどよろしくお願い致します.
3.41K いただいた回路では、組み合わせ回路のループ上限を超えておりました。
ネストループ数チェックが浅すぎたと考えます。3.41Kよりループ上限を10->1000に変更しました。
500 I've been using a script to run regression testing from the command line
but I noticed that on every run the source files are re-compiled.
Is there a way to run the simulation without the source re-compiling
every time?

Thank you very much.
- Sorry, there is no switch for that purpose in command line.
For my future improvement, could you tell how it takes to re-compile about your design?
I'll improve this in next generation.(Late this year scheduled.)

Maybe you are running many sims for regression.
For that purpuse, you can run your sims in parallel in your machine if it is invoked by command line. This will be benefit if your machine is dual/quad. Or you can use another machine.
501 Dear Tak san,

I found something strange. when multiply a negative and a positive values, I get a positive result. please check the code below:

wire signed [14-1:0] test1 = -2522;
wire [12-1:0] test2 = 168;
wire signed [23-1:0] bx_full4 = test1 * test2;

Veritak result is 2328816 but I am expecting -423696. please note if I defined test2 as signed, then it works but I wanted test2 to
be unsigned. there is something not right about a defined signed multiply by a defined unsigned number.
- Veritak result is identical as ModelSim's.
If you would like signed result, both operand should be signed.

So,I suggest using $signed as follows.

wire signed [14-1:0] test1 = -2522;
wire [12-1:0] test2 = 168;
wire signed [23-1:0] bx_full4 = test1 * $signed(test2);
502 Tak-san,

It's getting cold here! Yuck.

Here's a GUI request, low priority of course.

I usually have a bunch of waveform windows for a simulation. I wish there was a button
to make all waveforms have the same time range and cursor positions as the current top
window.

This way, if I'm looking at a bug in my JTAG interface window, I can make my USB interface
window go to the exact time range and cursor positioning.
3.42A I've implemented it in another way. Please check

.sync cursor
.sync waveforms (New!)

on the the menu by clicking middle mouse button on waveform view.

Then all waveforms should be synchronized with the forcused view.
503 Dear Tak san,

Enclosed is a file that runs in veritak but should have found an error!

Note in the code that there is a parameter "H" and a wire "H".
This is not detected and reported as an error!
3.42A 3.42A fixed it
504 ■質問内容
 下記のVHDL記述をVerilog-HDLに変換したところ、
 「●入力VHDL」中の^^^^^で示したBというバス信号が、
 if文で信号をビット指定して参照しているのにもかかわらず、
 Verilog-HDLに変換するとセンシティビティリストから削除されてしまいます。

 例えば変換する際こういった記述があった場合、勝手に信号を削除するのではなく、
 ログにエラーまたはワーニングを出力するようにはできないでしょうか。

 なお、ツールのバージョンは"3.24F"を使用しています。
 最新版では未確認です。

 
 ●入力VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity TEST is
port (
A : in std_logic ;
B : in std_logic_vector(3 downto 0) ;
C : in std_logic ;
D : in std_logic ;
Q : out std_logic
) ;
end TEST ;
architecture RTL of TEST is
begin

process (A, B, C) begin
-- ^^
if B(3) = '1' or C = '1' then
-- ^^^^^^^^^^
Q <= '0';
elsif A'event and A = '1' then
Q <= D;
end if;
end process;

end RTL ;

 ●変換後Verilog-HDL
module test ( a, b, c, d, q );
input a;
input [3:0] b ;
input c;
input d;
output q;

reg q;

always @ (posedge a or posedge c ) begin
if (((b[3] == 1'b1) | (c == 1'b1)))
q <= 1'b0;
else
q <= d;
end// always

endmodule
T.B.D. トランスレータは、現在サポートしておりません。(事情と現状については、F.A.Q.238/242/312/317/181/380をご参照ください。)

505 Pro1ユーザです。質問があります。
Veritakの使用バージョン:Version 3.41J Build Dec.19.2007
OS:WindowsXP-SP2
メモリ:1G

@ Cygwin上でshellスクリプトのバッチ処理をして使用しています。
define定義をバッチに折込み、テストベンチの中で`ifdefで分岐処理をしたいのですが、 


--D 定義変数
という記述を追加すればよいと思ったのですが、defineが有効になりません。
#!/usr/local/bin sh
DEF1=DCK37
...

バッチ処理でdefine定義を有効にするには、どのようにすればよいのでしょうか?

ちなみにGUIのダイアログから定義すると、正常に反映されます。
またncverilog, verilogXL等では実行されています。



=>実行したかったのは、ncverilog等では、シェルスクリプトにて、
DEF1="DUMP"
ncverilog ......... +define+${DEF1}
と記述して、下記のベンチを実行するとDUMP定義が有効となりダンプが実行されます。

つまりdefine+することで定義文の右辺値のDUMPが有効になります。

下記のように右辺値を与えることで、解決しました。
DUMP="DUMP"
VERITAK2 .... --D $DUMP ....


<ベンチ内記述>
`ifdef DUMP
integer mcd;
wire #(ORGCLK_RATE/2) dumpclock = DCK;
initial begin
$timeformat(-9,1,"ns",4);
mcd = $fopen( "dump.log" );
$fdisplay( mcd, "TIME: OUT_XVS, OUT_XHS, OUT_DT" );
end

always@( posedge dumpclock ) begin
if( OUT_STRB ) $fdisplay( mcd, "%t, %b %b %h", $time, OUT_XVS,
OUT_XHS, OUT_DT );
end
`endif

A veritakで有効なaurgumentの意味を知りたいのですが、参照ファイル等はありませんでしょうか?
--F --CO --MO --a --ST --W --i など。。。

B 質問ではありませんが、コマンドラインからveritak2 --help など未サポートのaurgument
を付加して実行すると、エラーメッセージのダイアログが出続けてしまい中断できません。

-/T.B.D. @ cygwinスクリプトの例として作成してみました。、
=>解決策のご教示ありがとうございました。

A Commandフォルダにあるrelease_note.txtに書いてあります。この辺は、コマンドラインでは、無意味なものもありまして、それについては書いておりません。使い方については、同フォルダ中のexample.bat中の例をご覧ください。

>B コマンドラインのエラーチェックが入っておりません。これについては、次世代VersionでHelp等と一緒に入れ込みたいと思います。
506 GUIで波形確認しながら、バッチファイルを実行する場合、
GUIでプロジェクトを開く→バッチファイル実行(コンパイル)→シミュレーション実行(Go)の手順でよろしいのでしょうか?

バッチファイルでコンパイルが実行されるのですが、シミュレーション実行(Go)前に、

Recompileを実行しないと、頻繁にVERITAKが落ちてしまうのですが。。。

- 現在のVeritakの場合、GUI/CUIともにEXEを生成しません。基本的には、どちらも、実行の度、ソースからコンパイルします。また、GUIとCUIは、全く独立したプログラムです。Commandフォルダあるveritak2.exeとGUIのveritak2.exeは、違うプログラムで混在した使い方は想定していません。(殆ど同じですが、GUIIFの部分を変えています。)また、CUIの方は、Command フォルダごとCOPYすれば、他のマシンでもスタンドアロンに実行可能です。

 
 注意として、CUIを実行する際は、GUIを止めておいてください。(GUIが起動していると、CUIの出力が、そちらに出てしまいます。)

 使い方としては、
1)GUI上のプロジェクトでデバッグ
2)出来上がったコマンドラインを編集して、RegressionTest用のバッチを作成
3)1)とは別環境(または、GUIを止めた環境)で、大量に2)を流す
 
 ということを想定しています。

=>NC-verilogのようにEXEを生成するイメージではなくXLのようにソースをコンパイル->メモリ上で実行なので戸惑れたかもしれません。(今年中には、EXE単独で走るようにしたいと思います。)
507 バージョンアップについてですが、新規バージョンをインストールする場合、旧バージョンをアンインストール
する必要はありますでしょうか?
- 別なフォルダにインストールすれば、特にアンインストールは必要ありません。デスクトップは、最後にインストールしたショートカットになりますが、旧フォルダでショートカットを引っ張れば旧Versionでも使えます。いずれにしても、GUIは、Singleです。CUIは、同時に複数起動できますので、DUAL/QUADのCPU上でしたら、より効率的にRegessionTestを流すことができるかと思います。
508 Thank you. Impressive product. Great job. -
509 I still lose all my waveform data; even immediately after a save, when I get a syntax error or I edit something in "Edit Verilog Project". This is very frustrating.

Is there something I can do or is ot something you must do?
- Please use waveform manager. Basically you do not press save button if you use it, because "save" is done automatically when waveforms disappear.

To move the mode of waveform manager, please see tutorial 2.4.12.
My recommendation is to use sync cursor and sync waveforms with muliple views. ( you can see waveform manager's display in my top home page.)
510 Attached is a file that shows a puzzle.

I've got an *almost* identical section of code repeated
three time that give 2 different results.

All three are varients of the following code:
always @(posedge clk_rd)
begin : packer2
integer src;

bad_data = 0;
for(src=NUM_REGS-1; src>=0; src=src-1)
begin : packer_loop
if (in_mask[src])
bad_data = {bad_data, in_data[src*32+:32]};
end
end

This block gives the wrong result.

You'll see a similar block that uses a non-blocking final
assignment - that one works.

You'll see the bad code in its own module - that one works.

I'd expect all 3 to work - what am I missing?
- Veritak results are identical to ModelSim6.3C's.

To avoid the race condition, one solution is to use non-blocking assignment ,or use delay for getting all settled result.
511 現在、御社のVeritakを使いザイリンクスのCoreGeneで作成したFIFOのモデルをシミュレーションしようと考え
ているのですが
CoreGeneで作成したFunctionモデルはVeritakでシミュレーション可能でしょうか?

Functionモデルは下記の手順で作成しました。
@CoreGeneでFIFOの.xcoファイルを作成。
AISEに.xcoファイルを作成して、ViewHDLFunctionModelにて.vファイルを作成。

以上、よろしくお願い致します。
- 特に問題ないと思います。
512 FIFOのファンクションモデルを指定しているのですが、モジュールが見つかりませんとのエラー
が発生しております。モジュールは指定しているつもりなのですが、原因がわかりません。
すみませんが、原因を教えていただけないでしょうか?
- モジュールが見つからないというエラーに関しては、次で解決すると思います。
 
1)インスタンス名とモジュール名が逆
//FB_FIFO FIFO64TO32(TAK
=>FIFO64TO32 FB_FIFO (//TAK

//MUL_R MUL8X8 ( TAK
MUL8X8 MUL_R ( //TAK

//MUL_G MUL8X8 ( TAK
MUL8X8 MUL_G ( //TAK

//MUL_B MUL8X8 (TAK
MUL8X8 MUL_B (//TAK


2)XILINXライブラリ指定追加
unisim/simprims/XilinxCoreLib
を追加します。

3)glbl.v追加
513 いつも研究開発にveritakを使わせていただいております.
研究開発に大変助かって降ります.

昨年 11月ごろから最新版までのものにヴァージョン・アップをしたところ,

Internal Exception EC1560 Broken formant on info-manager

のメッセージが出るようになり,

コンパイル・エラーが出て,エラー修正の後,再コンパイルをすると,

------------Starting Verilog Build Process...----------
Verilog プリプロセッサを起動中です。
Restoring "xxxx.vtaksave" complete state of Simulator
Can not read xxxx.vtaksave for restoring state of simulator
コンパイル未完了のまま終了しました。

のメッセージが出て,再コンパイルできません.
また,プロジェクトの再ロードからでないと,コンパイルが出来ない状態です.

ご指示の程,よろしくお願いします.
- 1)Save/Restore機能を意図してお使いだと思います。この機能は、MajorVersion間(たとえば、3.12Aと.3.13A間)では、互換性がありません。ReCompleボタン(歯車)で、そのVersionでのコンパイルを行い初期状態から開始するように意図していますが、現象からみてVeritakになんらか不具合がありそれが機能していないように思います。

2)状態をリセットするという意味で、次の手順を行ってみてください。
 @プロジェクトファイル以外のVeritakが生成したファイルの消去
  プロジェクト名.vtakmgr
  .vtakwave
  .vtakdispwave
  .vtakdisk
  .vtaksave
 AReCompileボタンを押す
 
3)2)でも駄目なときは、申し訳ありません。そのプロジェクトでSave/Restore機能は使えません。別名で、Saveなしプロジェクトを作成して(Save時にSavetoPhysicalDiskのチェックを外す)運用してください。
514 I've run into a very strange Veritak crash. I have a file that used to need a certain include
file. I've modified the file so that the include file is no longer needed.

If I leave the `include line in the file, everything runs fine, even thought the include file is
not needed.

If I take out or comment out the `include line, the project still compiles and simulation
proceeds, but if I pause the simulation or when it finishes, it crashes and I get the
Microsoft message asking if I want to send a report to Microsoft. Very Strange!

When I pause the simulation and the crash happens, the process Veritak2.exe is left
running.

If I replace the `include line with "parameter FOO = 123;" the problem goes away.

You can download a zip archive with a dump from xxxx.com. Use anonymous ftp to
get the file veritak_bug.zip.

I suspect I can't send any small sample that will re-create this.
3.43A 3.43A fixed it.
515
NotePad++を早速使用させていただいてます。
なかなか便利ですね。またまた新しい機能
ありがとうございます。

それでは本題なのですが、VeritakのTree表示の
信号名を選択し”エディタへ飛ぶ”を実行すると
NotePad++が起動するのですが初回に必ず

"Create New File?"とWindowが出てきます。

No を選択すればよいのですがこれはVeritak or
NotePad++の仕様なのでしょうか?

当方の環境は

WindowsXP

Veritak Ver 3.43A
NotePad++ Ver 4.8.1

緊急度は低いです。

=>失礼しました。Argumentsのミスでした。

-n$L $F とすべきところを
/n$L $F にして秀丸エディタの時の最初の/
だけ残っていました。
- VistaとXPでやってみましたが、
その現象はでていません。起動初回だけは、Editor設定で設定した起動パスで起>動し、Argumentsでファイル名と行番号を渡しているのですが、もしかしたらその関係かもしれません。(一度起動すると、別な通信方法を取っています。)

もしお試しいただけるなら、

Editor設定のArgumentsを空にしても同じでしょうか?
516
Notepad++対応に、今驚いているところです。

細かい事ですが、チュートリアルとNotepad++の表示が一致していないところがあります。
http://japanese.sugawara-systems.com/tutorial/tutorial/notepad.htm
の方には、

2.5.2.5 起動
Notepad++のメニュー: プラグインー>Veritak −>Display Dialog で現れます。
「Display Dialog」という表示になっていますが、Notepad++の方では、「Dialog Display」の順で
表示されています。

私の会社(と個人ブログ)では、Veritakは無くてはならないソフトウェアになっています。
今仕事ができるのも、ブログにVerilogの話がかけるのもVeritakのおかげです。
- 修正済みです。
517 Hi Tak,

Thank you for adding the Notpad++ interface. It's really usefull to me...
- Thanks!
518 Tak-san,

Here's another GUI request.... I hope it's easy...

In the waveform view, the time value reported at the top of the can have a number like 9128479ps.
No commas to help the eye parse the value. At the bottom of the window, the T1, T2 etc info
DOES have the commas in the number.

Any chance you could add commas to the top display?
3.43C 3.43C implemented it.
519 最新版(343A)に更新したところ下記となり終了してしまいます。

C:
コンパイル未完了のまま終了しました。

341iでは本現象起きません。
3.43D 3.43DでFixしました。
520 Does Veritak run on a 64 bit machine (what OS?). Can it use the larger address space of 64-bit processors so that big projects that run into memory problems on a 32-bit machine can run here? T.B.D. No, veritak has only 32bit addressing space. Only waveformview uses
64bit addressing. 64bit compiler will be 2010.
521 I would now like to use it with the cygwin from the commandline using a bash script. I edited the veritak_command.txt file and added the bash shell commands. The file then needed to be converted to a unix format due to the <cr>lf> problem. When I ran the veritak2 executable with the -h and -help switches, I noticed that none of the command line switches appeared. I am using the default switches from the .txt file. I have a number of questions:

1) Where are the command line switches documented?
2) Are their ways to run veritak2 which using verilog ifdefs?
3) How might one convert Modelsim do files to veritak2 command line?

Any other tips and tricks as it relates to command line usage would be appreciated.
T.B.D. >1) Where are the command line switches documented?
Please see release_note.txt in command folder.

>2) Are their ways to run veritak2 which using verilog ifdefs?
Yes, please see an example.bat in command folder.

>3) How might one convert Modelsim do files to veritak2 command line?
Sorry, I have no plan to convert it automatically.

I'll show you an example below.

#!/bin/sh

var3="Display_Epilog" # please enclose by " "
var4="DISPLAY_MESSAGE"
var5="MEM_FILE=\"write_random.txt\"" # if you use " in string use\ as escape.
./VERITAK2 --W "..\samples" "..\samples\sample2.v"
./VERITAK2 --W "..\samples" --D "Display_Epilog" --D "DISPLAY_MESSAGE" --i "include" "hardware/alu.v" "test bench/alu_bench.v" >log1.txt
./VERITAK2 --W "..\samples" --D $var3 --D $var4 --i "include" "hardware/alu.v" "test bench/alu_bench.v" >> log1.txt
./VERITAK2 --W "..\samples" --i "include" "hardware/alu.v" "test bench/alu_bench.v" >>log1.txt
./veritak2 --F --NS --NB --B --C0 --M0 --a --ST --W "..\regression_test\plusarg" --D "MEM_FILE=\"write_random.txt\"" "plusarg_test7.v" >> log1.txt
./veritak2 --F --NS --NB --B --C0 --M0 --a --ST --W "..\regression_test\plusarg" --D $var5 "plusarg_test7.v" >> log1.txt

1)One important note is to finish GUI program when you use CUI. Otherwise, unexpected result will occur.
2)Veritak2.exe in gui and Veritak2.exe in command folder is all different program. GUI is only one in your PC. However multiple programs can ben run in command line in parallel. This will be benefit if your PC has dual/quad CPU. If you copy command folder into another PC, you can run as many as you like w/o license checking.
3)Sorry, I've not implemented any help-text and sanity check of arguments ..
522 Have you tried Veritak with Cygwin? I'm trying to get command line mode
working and Veritak complains that it can't find the Xilinx library. My script
is derived from the veritak_command.txt, so I'm puzzled.

It works fine under DOS.
- Please use absolute path for library instead of relational path to project location. If your xilinx library is in another drive, you can use veritak_command.txt almost directly.

#!/bin/sh
./VERITAK2 --F --y --C0 --M0 --a --ST --W "C:\cygwin\home\tak.sugawara\veritakwin343DEnglish\samples\gate_sim\xilinx\coregen_rom" "coregen_dcm_test.v" "hardware/my_dcm.v" --L "D:/Xilinx92i/verilog/src/XilinxCoreLib" --L "D:/Xilinx92i/verilog/src/unisims"
523 I'm trying to use the Utility..Configuration menu it it looks like I can no
longer change between Small/Medium/Old Style.

I open a project, then try to change the setting and it does not take effect.
If I look at the Menu item again, there's no change to the setting.
3.43E 3.43E fixed it
524 The Xilinx code passes in a bunch of parameters for a DDR2 (MIG) core. One of the
params, SIM_ONLY does not appear to work properly in certain circumstances.
I ran across another section of code that shows similar parameter problems apparently
caused by the FAST optimization flag. With FAST enabled, the parameters do not
appear to pass into the block ram properly, with it disabled, it works.
3.43E 3.43E fixed it.
This is due to the same bug regarding logical-OR with constant on Fast mode
525 While playing around with a simple DCM experiment, I ran across a puzzle. I've
attached a sample file. Please run it and take a look at the main clock (clk) in the
top level. I would expect it should never get distorted, but it goes crazy!

I tried running with no optimizations and a lot of optimaztions selected, no change
in behavior.
3.43F 3.43F fixed it for negative scheduling.
526 RAMB16_S36_S36.vの1521行目の
tri0 GSR = glbl.GSR;
について以下のエラーがありました。

C:\Verin\0327\RAMB16_S36_S36.v(1521)::Error: glbl.GSR  宣言が見つかりません。
 
NULL FILE NAME :Error: glbl Internal Error EC=758

Modelsimではコンパイルが通りました。

どのようにしたら、コンパイルが通るでしょうか。
- トップモジュールで定義されているglblをコメントアウトしてみてください。たとえば、つぎのようにします。
`ifndef Veritak
glbl my_glbl();
`endif

Veritakでは、自動でトップモジュールを判定していますが、本来インスタンス化される必要のないモジュール(glbl) が上のようにインスタンス化されてしまうと、(自動で)トップモジュールとは見なさない仕様になっています。 上の記述は、全く不要ですので削除しても問題ないと思います。これにより、特にトップモジュールを指定しなくてもコンパイル可能になります。

また、ソースを上記のようにいじりたくない場合は、プロジェクト編集画面で、明示的にトップモジュールを指定すれば、コンパイル可能になります。具体的には、glblとユーザトップモジュール(テストベンチトップ)を指定してください。

-Top
test_ip
-Top
glbl
user_module_block.v
..
527 I am evaluating your software for possible use in our company.
Please send me a pdf or plain text format of the online tutorial.
- Sorry, there is no PDF/plain text.
You can see the tutorial by menu->help->tutorial.
528 Attached is a file that shows some waveform display that you may (or may not)
care about. It is a quick&dirty testbench I was playing with to test some
code.

Note the $finish and the $stop before it. If I run without the $stop, the end
of the
wave display appears to go some extra time, but clocks are stopped. If I
enable the
$stop, simulation time stops when I would expect.
3.43G Yes,that's what I implemented. At the end of simulation, I added 1000 extra time to flush data internally.
I understood your point. I'll abolish extra 1000 in next chance of release.
529 I have found an error, I believe, in either the simulator or the scope software.
Here is a bmp of the screen showing the error...
- Following log-text is generated by ModelSim6.3c, which seems identical to veritak's.
530 All of our group members have been getting this warning for a while.
There does not seem to be any bad effects.

Warning Excessive File Locations(Maximum of 5
Locations per SCOPE) WC=2869

No one can figure out "exactly" what it means.
Our design has files all over the place and lots of them, and that is
very common for larger verilog designs.

What do you think is wrong?
How is one supposed to figure out what WC=2869 means??
- There is a limitation of GUI for file locations memory per SCOPE.
Maximum of 5 locations per SCOPE is current limit. Usually module is defined per one file, there is no probelm,however if you are including parameters from other (5) files, this may occur. Inconvenience in this situation is you can not go to editor./enum feature in certain cases from GUI. But no affects actual compilation/warnings in sim engine/compiler. So I think you can ignore them most cases.
531 I'm seeing odd behavior in using $sscanf. I'm reading from a file and originally
use $fscanf and it worked fine. I then changed to using $gets followed by $sscanf
and my code broke. It looks like $fscanf parses the data differently from $sscanf.

Below is code that shows odd $sscanf behavior.

module z;
reg [1024:1] string;
reg [1024:1] ps;
integer p_cnt;
integer p0, p1, p2;

initial
begin
string = "123 456";

p_cnt = $sscanf(string, "%d %d", p0, p1);
if (p_cnt != 2)
$display("ERROR got %0d : p0=%0d p1=%0d",p_cnt, p0, p1);

string = "# john 123 456";
p_cnt = $sscanf(string, "# %s %d %d", ps, p0, p1);
if (p_cnt != 3)
$display("ERROR got %0d : ps=%0s p0=%0d p1=%0d", ps, p_cnt, p0, p1);


$finish;
end
endmodule
3.43G 3.43G fixed it
532 スクリーンショットにありますワンホットマシンの部分で、ステートのトリガとなる波形が入っていないにも
かかわらずステートがst_trs[2:0]=3'b001⇔3'b010を繰り返す現象がVeritak3.43Gにて波形観測されました。
他のシミュレータがない為、コンパイル不具合なのか、単なる記述ミスなのか判断できません。

すみませんが、なぜステートが不正な遷移を繰り返すのか教えていただけないでしょうか?

お手数をおかけしますが、よろしくお願い致します。
3.45C 設計上の中身は、分かっておりませんが、記述上問題があります。

言語仕様上、FUNCTION内のステートメントは、すべてブロッキング=のみ許されておりまして、ノンブロッキング文は許されておりません。従いまして、FUNCTION内で記述されている<=は、=に修正してください。


本来は、エラーにするべき箇所ですが、現在そのようになっておりません。(他のシミュレータ、論理合成で、はねられると思います)恐れいりますが、修正のほどよろしくお願いします。

なお、修正後のソースでMODELSIMと比較してみましたが、当該箇所は添付の波形のようになり、挙動的には一致していると思います。

よろしくお願いします。

=>3.45Cよりエラーとしました。
533 A request - could you add a flag/option for a "quiet compile"
mode that prevents the info messages from being displayed
(like info: parse analyzing... etc)?

When I run in command line mode, lots of my screen buffer
gets wasted on this info that I don't care about for a lot
of testing.

It would be nice if was a comand line option for the command version
and maybe a check-box in the gui version?
3.43H 3.43H implemented it.
534 I would like to use veritak2 from the command line and launch it from either a BAT script or a bash shell in cygwin. Can you post the command line switch list?
- See release_note.txt in command folder.
535 Bug that generates an exception in windows xp when using a static
function with an unexisting (wrong typed?) parameter.



It is rather difficult to detect a typing error when this happens.



See included file, the wrong parameter is on line 9.
3.43H 3.43H fixed it.
536 Now my question / request....
In GUI mode, it looks like there is a way to save/restore state. In command
line mode, is there a similar function? What I would like (for regression) is to
compile once, then re-run the same "simulation image" multiple times with
different source files feeding test vectors into the simulation for each regression
test.

Is this possible? I don't see anything about this in the command mode release file.
VeritakSV Sorry, there is no feature for save/restore on command line.
I know this is a fundamental request but I would like to implement it on new compiler uder developing.
537 Tak-san,

Remeber when I sent you the linear system simulations...

There is an error in my source code you published, included is a fixed version. (I changed the file from the samples directory of the veritak installation).

The problem is related to the use of following functions :


int units = vpi_get(vpiTimeUnit, get_module_handle(vpih_sys));

int precision = vpi_get(vpiTimePrecision, get_module_handle(vpih_sys));

These give me the settings of the simulator (timescale), right? But when I read the time with vpi_get_time with type vpiScaledRealTime, what time do I expect?

It seems the time is scaled against the TImePrecision, and not aginst the TImeUnit.

I changed the code to use TimePrecision now. Can you put this in the next release of Veritak?

3.43I Thank you for the patch. It works well even if 1ns/1ps is declared.

Simulator uses 64bit integer internally . (I think all other simulators have the same implementation.) This is scaled by using the minimum precision declaration throughout the project, so that integer operation can be maintained for performance and truncation issue. Thus results that vpisimtime and vpiScaledRealTime varies by the precision number.

I've released it as 3.43I.
538 Below is code that give me a Verilog error when compiling. I don't see anything
obviously wrong, can you please take a look?

Thanks!


/* Here's the error message....
c:\tmp\z.v(41)::Error: offset Out of Range in [ : ].
1sig name=offset
c:\tmp\z.v(40)::Error: offset Out of Range in [ : ].
1sig name=offset
Error Detected in Elaboration Process.
*/


module z;
parameter FLAT_EXTRA_BITS = 2;

reg [1:0] delay;
reg [5:0] bit_ptr_in;
reg [5:0] bit_ptr_out;
reg vc_bit_sel;
reg [3:0] msbbits;
reg flat_enable;
reg [3:0] lsbbits;


wire [3:0] nbits = vc_bit_sel ? 10 : 8;
wire [3:0] nbits_m1 = vc_bit_sel ? 9 : 7;
wire [3:0] nbits_m_lsbbits = msbbits;
wire [3:0] flat_lsbbits = (lsbbits > FLAT_EXTRA_BITS) ? (lsbbits - FLAT_EXTRA_BITS) : 0;
wire old_mode = !flat_enable || lsbbits == 0 || lsbbits == nbits_m1;
wire [3:0] nbits_m_flat_lsbbits = nbits - flat_lsbbits;

reg [5:0] mux_bitptr[3:0];

always @(*)
begin : calc_ptr
reg [5:0] nbits_m_lsbbits_x2, nbits_m_lsbbits_x3, nbits_m_lsbbits_x4;
reg [5:0] offset[3:0];

nbits_m_lsbbits_x2 = {nbits_m_lsbbits, 1'b0};
nbits_m_lsbbits_x3 = {nbits_m_lsbbits, 1'b0} + nbits_m_lsbbits;
nbits_m_lsbbits_x4 = {nbits_m_lsbbits, 2'b00};

offset[0] = (old_mode | delay != 0) ? nbits_m_lsbbits : nbits_m_flat_lsbbits;
offset[1] = (old_mode | delay != 1) ? nbits_m_lsbbits_x2 : nbits_m_lsbbits + nbits_m_flat_lsbbits;
offset[2] = (old_mode | delay != 2) ? nbits_m_lsbbits_x3 : nbits_m_lsbbits_x2 + nbits_m_flat_lsbbits;
offset[3] = (old_mode | delay != 3) ? nbits_m_lsbbits_x4 : nbits_m_lsbbits_x3 + nbits_m_flat_lsbbits;

bit_ptr_out = bit_ptr_in + offset[delay];

mux_bitptr[0] = bit_ptr_in; // delay = 0 (1)
mux_bitptr[1] = bit_ptr_in + offset[0]; // delay = 1 (2)
//#################### Vertiak hates the following 2 lines
mux_bitptr[2] = bit_ptr_in + offset[1]; // delay = 2 (3)
mux_bitptr[3] = bit_ptr_in + offset[2]; // delay = 3 (4)
end


endmodule
3.43I 3.43I fixed it.
539 In the code below, the function does not appear to operate properly. Compare
the signals max_min_lte1_1 and max_min_lte1_2.

Note that the function max_min_lte1_calc is connected to a wire. Should the function
re-evaluate if the prev_pix values change?

Thanks!


module z;
reg [9:0] pix_prev[3:0];
reg [2:0] lsbbits;
wire max_min_lte1_1;
reg max_min_lte1_2;


function max_min_lte1_calc;
input [3:0] shift;

reg [9:0] max_tmp, min_tmp;
reg [9:0] min3, max3;

begin
min_tmp = ( (pix_prev[0] >> shift) < (pix_prev[1] >> shift) ) ? pix_prev[0] >> shift : pix_prev[1] >> shift;
max_tmp = ( (pix_prev[0] >> shift) < (pix_prev[1] >> shift) ) ? pix_prev[1] >> shift : pix_prev[0] >> shift;

min3 = (min_tmp < pix_prev[2] >> shift) ? min_tmp : pix_prev[2] >> shift;
max3 = (max_tmp < pix_prev[2] >> shift) ? max_tmp : pix_prev[2] >> shift;
max_min_lte1_calc = (max3 - min3) <= 1;
end
endfunction

always @(*)
begin : lte1_calc
reg [3:0] shift;

reg [9:0] max_tmp, min_tmp;
reg [9:0] min3, max3;

shift = lsbbits;
min_tmp = ( (pix_prev[0] >> shift) < (pix_prev[1] >> shift) ) ? pix_prev[0] >> shift : pix_prev[1] >> shift;
max_tmp = ( (pix_prev[0] >> shift) < (pix_prev[1] >> shift) ) ? pix_prev[1] >> shift : pix_prev[0] >> shift;

min3 = (min_tmp < pix_prev[2] >> shift) ? min_tmp : pix_prev[2] >> shift;
max3 = (max_tmp < pix_prev[2] >> shift) ? max_tmp : pix_prev[2] >> shift;
max_min_lte1_2 = (max3 - min3) <= 1;
end


assign max_min_lte1_1 = max_min_lte1_calc(lsbbits);

initial
begin
#1;
lsbbits = 0;
#10;

pix_prev[0] = 1;
pix_prev[1] = 2;
pix_prev[2] = 3;
pix_prev[3] = 4;
#10;

pix_prev[0] = 8;
pix_prev[1] = 10;
pix_prev[2] = 12;
pix_prev[3] = 4;

#10;
lsbbits = 1;
#10;
$finish;
end


endmodule
- As for following code, I think identical result will show between ModelSim and Veritak.

assign max_min_lte1_1 = max_min_lte1_calc(lsbbits) reevaluates only when arguments of function are changed. In this case, only change of lsbbits triggers reevaluation of the function. This is also true even if the function is in always @*. If you use always_comb in SystemVerilog, you can expect true combination circuit's behavior.
540 I found some other problems with the linsys vpi. After all, it's a
wonder it worked so well.

There were some mistakes in the memory allocation, and release.

I included the full set of files, cleaned up with only the necessary
information, and a release build of the dll. The release build makes it
a lot faster.
3.43L Thank you for your cooperation. I confirmed this version was faster.
I've released it as 3.43L.
541 Hi,

I'm study pipeline, I'am write a little verilog code, but Veritak's
result not same the Modelsim, is it a bug?
- I think there are some race condition on your test bench.

I've corrected them as attached. The race means there are some dependency with simulator evaluation sequence. (The analogy is what happens if you have simultaneous transition for ,example Clk and Data on DFF. ) I would like to say the bench should be written with race-free.

To avoid the race, I used non-blocking assignment for a and b insead of blocking assignment. Please note clk is blocking assignment. So clk assignment is first, then a and b assignment occur next, thus ensures the sequence of event driven simulation with independency to any simulator.


As for waveforms you mentioned, I would like to recommend you to use waveform manager as attached.
In this mode, you do not have to press Save button, because the waveforms are saved automatically. If you still have problems, please let me know with full project files.
542 I have been trying to get started with your program, and have been running
into some difficulties. I have been trying to compile verilog files of my
own, and keep getting the following compile message.

------------Starting Verilog Build Process----------
Starting Verilog PreProcessor...
D:xx/312_Functional/pcm.v(1):: Reading
Verilog Preprocessing Finished.
Starting Verilog Compile Process...
D:\xxx\312_Functional\pcm.v(3)::
Info: Parse Analysing...
Parse Analysis Finshed.
Loading vpi
Generating Scope
finished with incomplete compilation
No Top Modules detected in Parse Process. Top module means module has no
port list and is not instantiated.

The following sample file is how all of my verilog files are constructed.
I have looked throughout the documentation, and cannot figure out why files
constructed like this will not compile, and run. I am sure I am missing
something fundamental, but cannot figure it out. I have found files in
your documentation that are constructed in a similar fashion, and they will
not compile either. Any suggestions you might have will be appreciated.
Thank you, Paul Sment.

`timescale 1 ns / 1 ns // all setup and hold times are in nanoseconds

module pcm_data_if_fub(pcm,
pocrt,
word_sync,
frame_sync,
tag_bit,
pcm_data,
pcm_bus_clock,
in_12mhz,
pcm_req,
pcm_req_ack,
fill_mode,
pcm_add,
ptr_data,
ptr_update);

input [7:0] pcm; //8-bit pcm data stream supplied by the format
controller.
input pocrt; //Power On Clear signal supplied by the format controller.
AL
input word_sync; //Signals start of each 8-bit pcm data word. AH
input frame_sync; //Signals start of each 1248 word pcm minor frame. AH
input tag_bit; //This bit selects which data to be stored in memory. AH
input pcm_bus_clock; //5 MHZ input clock from format controller used to
clock pcm
//data.
input in_12mhz; //Input 12 MHz clock signal.
input fill_mode; //Enable signal provide by exec_cntl_fub after
initialization
//sequence is complete. AH
input pcm_req_ack; //Acknowledge signal from rw_if_cntl_fub.

output pcm_req; //Write request to the memory controller. AH
output [17:0] pcm_add; //Address output to the memory controller.
output [15:0] pcm_data; //16 bit data bus.
//pcm_data[15:8] = ram_data_buffer;
//pcm_data[7:0] = ~ram_data_buffer;
output [15:0] ptr_data; //Output to ptr_update module for updating
transmit sub address
//data list pointer in descriptor space. This is location where
//pointer will be next.
output ptr_update; //Request pointer update at each new minor frame of
data. AH

endmodul
- You need top module to compile.
Top module means the module which has no ports and is not instantiated by any module.

Following is a simple example of Top module.
You can save the text as hello.v , and you can compile and run..

module hello;//No ports, no instantiated

initial $display(" Hello Paul-san");
endmodule


In the pcm_data_if_fub has ports , so it must be instantiated for compiling and running the hardware..

An example is shown below.


module pcm_top;//Top module


reg [7:0] pcm;//Define Some driving signals
//...


wire pcm_req;//and receiving signals...

initial begin
pcm=0;
//Define your test driving bench..
//....

end


pcm_data_if_fub DUT(.pcm,
.pocrt,
.word_sync,
.frame_sync,
.tag_bit,
.pcm_data,
.pcm_bus_clock,
.in_12mhz,
.pcm_req,
.pcm_req_ack,
.fill_mode,
.pcm_add,
.ptr_data,
.ptr_update);//instantiated module

endmodule


After parsing verilog HDL files, veritak scans again them from top module( called Elaboration Process) to compile. This is the reason why veritak needs Top module.
543 I notice when using $value$plusargs that it accepts %h but
not %x. I realize %x is not standard, but I think it is
an "underground" extension.
3.43M 3.43M applied the extesnsion.
544 Appears that there are no checks for invalid wire names as parameters on
the instantiation of modules.

For example:

cnt1 counter (clock1,reset)

a wire named clock is defined but not clock1 yet no error is generated.
Is there a configuration so that these errors are detected?
- I think this is not invalid. 1bit implicit wire is assumed by LRM.


To prevent/check these implicit net, I would like to suggest following ways.

1)Use `default_nettype none in Verilog2001

`default_nettype none //From Here
module hello;

cnt1 counter(clock1,reset);//implicit declaration clock1 becomes compile error.
endmodule
`default_nettype wire //To Here

2)Use Lint Warning
Veritak generates warnings for those implicit net at compilation.
Check Lint Floating Reg/Wire on project settings.(Compilation never stops by those warnings.)
545 添付ファイルのプロジェクトをシミュレーションしようとすると
コンパイルは終わりますがGOを行うと数分で
「ディスク残り容量が100M以下になりました。シミュレーションを中止して下さい」
(ちょっと字句が違うかもしれませんが)
というメッセージが出ましので、ストップさせました。

実行環境は
WindowsXP SP3, Intel Core2Quad Q9450 
メモリは 3Gbyte実装し、HDDは500Gbyteで実行したときのHDD残容量は361Gbyte
ありHDD容量の不足とは考えられません。
また対象FPGAがxilinx spartan3ですのでDCMなどはcoregenからはき出させて
います。使用しているISEはISE10.1 webpak です。
実行環境になにか問題があるのでしょうか?それとも添付のソースのように
未完成ではHDDを消費してしまうのでしょうか?
- プロジェクト設定のMaxArchiveDisk 400MBになっているところの数字を大きくしてプロジェクトをSave後に再度プロジェクトをLoadしてみてください。(そのままですと、300MB付近でそのメッセージが出てきてSimを進めることができません。)
ArichiveDiskとは、Veritakでは全波形を圧縮してSaveしていますが、その最大値を設定しておく項目です。プロジェクト毎にこの値は違うと思います。適宜あらかじめ設定してください。

なお、Archiveは、64ビットアドレスですので、4GB以上でも(VCDなら40GB相当)可能ですが、解凍に時間がかかってしまいますので、変化点が多い信号は予めDisplayされるとよいと思います。
546 We have an signal we use in the waveform view that represents an ASCII string.

We have a mnemonic "d&" that is 16'h6426.

In the Value column in the left hand side "d&" is correctly displayed when we set the radix to string
However in the waveform itself we get "d_"
3.44A I will fix this issue for waveform itself in a chance of next release. (Sorry, I can not find the fix for tooltip. )
548 I have a question on $sscanf usage. Is it legal to pass an array entry as a parameter?

I currently get the following error message from Veritak:
VPI ERROR: $sscanf 3th parameter should be vpiREG.


in the top level module testbed, I declare the following ints:
integer enc_dpcm_delay, enc_dpcm_max_bits, enc_dpmc_bit_len[9:0];


in a sub module:
else if (10 == $sscanf(in_buf,
"!dpcm_params: max=%d delay=%d 0:%d 1:%d 2:%d 3:%d 4:%d 5:%d 6:%d 7:%d 8:%d 9:%d\n",
testbed.enc_dpcm_max_bits,
testbed.enc_dpcm_delay,
testbed.enc_dpmc_bit_len[0],
testbed.enc_dpmc_bit_len[1],
testbed.enc_dpmc_bit_len[2],
testbed.enc_dpmc_bit_len[3],
testbed.enc_dpmc_bit_len[4],
testbed.enc_dpmc_bit_len[5],
testbed.enc_dpmc_bit_len[6],
testbed.enc_dpmc_bit_len[7],
testbed.enc_dpmc_bit_len[8],
testbed.enc_dpmc_bit_len[9]) )
begin
$display("got dpcm_params");
result = 0;
end

Thanks!
3.44A 3.44A fixed it.
549 Setting the initial value of the $random does not seem to work. I would
expect that once the random function is given an "repeated" seed value,
the random values should be reset.


Here's some sample code:


module z;

integer i;

initial
begin
$random(1);
$display("1: %x %x %x", $random, $random, $random);

$random(1);
$display("1: %x %x %x", $random, $random, $random);

$random(2);
$display("2: %x %x %x", $random, $random, $random);

i=1;
$random(i);
$display("%0d: %x %x %x", i, $random, $random, $random);

$stop;
end
endmodule
I guess my understanding of $random(seed) may be incorrect? The
LRM is not too clear.

This thread may help???
http://groups.google.com/group/comp.lang.verilog/browse_thread/thread/116f3190b903f86e/a0ca5a30e48f6a00?lnk=gst&q=random#a0ca5a30e48f6a00

An example from a Sutherland HDl paper shows usage like:

parameter seed = 1;
initial
for (i=0; i<=`num_tests; i=i+1)
@(posedge test_clk)
vector = $random(seed);

So, I believe if you want to use the seed mode, you initialize the
seed, then pass it to the $random function which updates it and also
produce a new value.

I suspect that $random(1) is illegal since the LRM states you need to pass
in a variable!

Here's some new code - the top section produces puzzling results, the lower
section matches my new understanding.
3.44A Thank you for great information.

550 OK, I'm probably doing this wrong, but here's a case that causes a Veritak crash when
I try to look at a VCD file

a) I created a new project with no files, just a empty project called vcd.vtakprj
b) I loaded the project using the File->(project name)
c) Utility->ReadVcdFile... (then clicked on the file name - the status pane said "finished reading VCD file."
d) added a new wave form window with the button. At this point, Veritak crashed.
3.44A 3.44A fixed it.
551 Here is a VCD comment - feel free to ignore!

In normal mode, the Scope Tree View shows signal names like foo[3:0]

In VCD, signals look like [3:0]foo. If I have a bunch of signals with a
common prefix, the VCD names look ugly:
dma_wr
dma_rd
[31:0] dma_data
[7:0] dma_addr
dma_valid

I (personally) prefer the "Veritak" fomat, ie, foo[3:0]
3.44B 3.44B applied it.
552 After I've opened a VCD file, I can look at signals just fine and the hierarchy appears in the
Scope Tree View window correctly.

Now, I open a new project using File->(some project name)
The VCD hierarchy *still* appears in the Scope Tree View even though I've opened a new project.
- This may be puzzling you. Sorry,but that's what I implemented.
553 When I bring up a VCD dump, I get the message "VCD file has a different timescale
from Veritak project"

It might be useful to display both values so the user know what to adjust. I realize
I can look into the VCD file to see what the timescale is, but if it's easy to print, it
might make the warning message "nicer"!
3.44C 3.44C applied it.
554 バグが見つかりました。
Veritakは3.43lです。
比較を行うと正しく動作しない場合があります。
assign ra_comp = p_ras_addr[8:0] == addr_in[19:11];
このような記述でp_ras_addrとaddr_inは同じ値なのに結果0が出ます。
今のところ8bitより多く比較するとミスします。
ただこの記述でうまく動いているものもありますので
それ以外に何か条件がありそうです。
Modelsimでは同じDesignで期待通り動いています。

追加情報
Optimize1 Level2 およびOptimize2 Fastの設定で問題がおこります。
NoneでFastも選択しないと正しく動きます。
なお単純に同じパターンを作ってこの比較をおこなっても
きちんと動いています。
またこの9bitの入力ですがデータの値を変えて動かすと正しく動いています。

3.44C FastModeでのバグです。
3.44C でFixしました。
555 I have a question. Can we execute Verilog simulation using command only
(without click the simulation button)?



I would like to run regression test so I need to know the command-line
execution of simulation. Thank you.
- Yes, you can. Please see "release_note.txt" for command line on command folder. Please see "example.bat" for examples.
556 1.未定義信号名(reg,wire宣言していない信号)を含むRTLをコンパイルしても
エラーやwarningが出ずに終了し、シミュレーションしても動作しないので「?」と
思って調べると、未定義ですから当然ScopeTreeビューリストにはリストされていません
でした。「あ〜、未定義だから動かないんだな」となります。
modelsimやISEのxsimなどではコンパイル時に未定義エラーとして「使ってるけど定義
していない」とか「定義してあるけど使ってない」などの警告がでますが、veritakの
コンパイルでは警告されません。
これはなぜこのようになっているのですか?
※じつはsimや合成ツールの警告を使って構文エラーや凡ミスを発見チェックしながら
RTLを作ることもしばしばで、このような使い方がveritakで出来ないかな?と思った
次第です。
=>
ご指示の「ProjectOptionのLintFloating..」をチェックしてコンパイルして
みました。warning がどど〜〜っとでますね。そのほとんどがxilinxのCoreLibや
unisim内のモジュールで、自分が書いたRTLのwarningが埋もれてしまって探すのが
大変。結局、エディタにコピペして「暗黙宣言」を検索して修正しました。
特定の階層やライブラリに対してこのようなwarningが出ない設定は無いのでしょうか?
3.45A >1.未定義信号名(reg,wire宣言していない信号)を含むRTLをコンパイルしても
>エラーやwarningが出ずに終了し

1) Veritakでは、ScopeTreeViewのリストには、暗黙宣言(reg,wire宣言していない信号)も□として、表示されている仕様になっています。

>veritakのコンパイルでは警告されません。
2) Project OptionのLintFloating..をチェックしていただくと、暗黙宣言について、Warningを出力します。

=>残念ながらございません。暗黙宣言については、Verilog2001ですが、

`default_nettype none
module



endmodule
`deffault_nettype wire

で挟むと、ライブラリに波及することなくコンパイルエラーにすることが出来ます。(ただし、Veritakが独自に検出しているFloatingNETの検出については、言語仕様でのサポートはありません。)

下記ページの下の方をご覧ください。
http://japanese.sugawara-systems.com/tutorial/veritak/newpage55.htm



ライブラリのLINTを除外するオプションを追加しました。
プロジェクト設定の rule out for Libsをチェックしてください。(ライブラリフォルダ下のファイルは、LINTされません。)
557 ライセンスの件です。
ライセンスの可搬を考え↓のようなものを買って用意しておりましたがいつの間にかライセンスがCPU-IDになっていて、「一人一本
ライセンス」ではなく「一台一本ライセンス」となってしまいました。MACアドレス
を使ったノードロックライセンスはこれからは行わないのでしょうか?
購入したUSB-LANアダプタ。
http://buffalo.jp/products/catalog/item/l/lua-ktx/
345A 345Aで、MAC アドレスに対応しました

既CPU-IDノードロックのお客様についても、移行をご希望されるお客様は、サポートまでご連絡いただければ、対応いたします。
558 a) when I print a waveform, the default paper alignment is portrait. I change it
to landscape and it works OK. If I print again, the default is back to portrait,
it doesn't remember the landscape setting.

3.45A ..In 345A;

1) Printer Dialog
I improved it though was is not so smart.
559 b) I wish there was a way to point into a vector display and copy the value to a
clipboard. I'm dealing with a 96 bit vector (hex format) and it's tedious to write
down value. I'd like to point the cursor at the spot I want and ctl-left click to
grab that value. Another extension of this idea might be to point to a vector
and a ctl-right click would grab all values between the two cursors. Just a thought,
this might simply be "creeping feature" and not useful for most people.
3.45A ..Only first idea is applied in 3.45A.
560 If we would like to simulate more than one verilog files using command
line, such as what we did in vcs as follow, could you let me know how to
do that?

vcs -o sim -f sim_files
- 1)First, I recommend you finish debug of the project by GUI.
2)If you load the project by GUI, then, "veritak_comman.txt" is generated under project folder. This is how GUI passes commands to the compiler/simulator.
3) Please edit the "veritak_comman.txt" to make your own test. I believe this is the easiest way for multiple files. Please ignore some option parameters not listed in release_note.txt.

Another F.A.Q.s are as follows.

>1) Where are the command line switches documented?
Please see release_note.txt in command folder.

>2) Are their ways to run veritak2 which using verilog ifdefs?
Yes, please see an example.bat in command folder.

>3) How might one convert Modelsim do files to veritak2 command line?
Sorry, I have no plan to convert it automatically.

Here are some examples for Defines examples for cygwin. However,I'll recommend DOS bat.

#!/bin/sh

var3="Display_Epilog" # please enclose by " "
var4="DISPLAY_MESSAGE"
var5="MEM_FILE=\"write_random.txt\"" # if you use " in string use\ as escape.
./VERITAK2 --W "..\samples" "..\samples\sample2.v"
./VERITAK2 --W "..\samples" --D "Display_Epilog" --D "DISPLAY_MESSAGE" --i "include" "hardware/alu.v" "test bench/alu_bench.v" >log1.txt
./VERITAK2 --W "..\samples" --D $var3 --D $var4 --i "include" "hardware/alu.v" "test bench/alu_bench.v" >> log1.txt
./VERITAK2 --W "..\samples" --i "include" "hardware/alu.v" "test bench/alu_bench.v" >>log1.txt
./veritak2 --F --NS --NB --B --C0 --M0 --a --ST --W "..\regression_test\plusarg" --D "MEM_FILE=\"write_random.txt\"" "plusarg_test7.v" >> log1.txt
./veritak2 --F --NS --NB --B --C0 --M0 --a --ST --W "..\regression_test\plusarg" --D $var5 "plusarg_test7.v" >> log1.txt

1)Important note is to finish GUI program when you use CUI. Otherwise, unexpected result will occur.
2)Veritak2.exe in gui and Veritak2.exe in command folder is all different program. GUI is only one in your PC. However multiple programs can ben run in command line in parallel. This will be benefit if your PC has dual/quad CPU.
3)Sorry, I've not implemented any help-text and sanity check of arguments.
4)If you do not want to see compling status, please see example_quiet.bat.
561 How to save the signals to be included in the waveform viewer?
I mean is there the similar feature as ".rc" file in Debussy?

In Debussy, we can save ".rc" file and the next time we open the
waveform viewer, we don't need to select the signals to be viewed. We
just need to reload ".rc" file.
- If you are asking waveform FORMAT, I suggest using Waveform manager ,described in tutorial 2.4.10. If you don't use it, Waveform Format is
saved only when you press Save button(FDD media Icon).

Veritak does not have method to record the waveform itself as standalone.
If you view a few signals , I'll recommend to use VCD.

If you have many signals to record, I suggest save/restore feature(2.14.17).However please note this is only applicable with the same Veritak Version.
562 clip-board copy may have several problems?

a) If the line has an enumerated parameter, like I use on state machines,
the hex value is clipped, not the text. It looks like it ignores the
radix - I always seem to get the hex value

b) I have a a waveform view that I need to scroll down through to see all the traces. It looks like when I do this, I don't get the proper value?
3.45B I've changed clip board copy implementation in 345B. It follows the radix spec.
As for scroll problem, I've added a warning to prevent more than one items selected. Enjoy it.
563 The latest version value Cut function seems much better AND I
have my name in a warning message!

The cut function now seems to work VERY well, my only complaint
is that the "you've selected more than one item" error is rather
easy to trigger:

a) have a waveform displayed that requires you to vertically scroll
through the signals

b) scroll to the top and put the cursor on one signal

c) scroll down and click another signal

At this point 2 signals are select - if you scroll back up, you'll
see that the 1st signals is still high-lighted

If the 2nd click was a shift-click, the error message is triggered.

If you click in the left pane (the signal names), the scrolled signals
are de-selected.
3.45C I understood very well.
Thank you very much, it helps me a lot.
It is too bad you will never see the enclosed message from 3.45C!
564 I don't know if this is a bug or not.

I declared a function, then had a statement like:
foo = #1 bar;
inside of it.


Since timing delays are illegal in a function, shouldn't this
have caused an error message?
3.45C I think notable compilers make this error.
I enclosed several error messages regarding LRM 10.3.4 in 3.45C.
565 I hear there was a large earthquake north of Tokyo. Are you
affected? Everything OK?
- Yes, we had a large earthquake this morning in northan part of Japan.
My family and PC are fine. However, my wife had a emergency call, and now working in hospital.

Thank you for your concern about me. Everything is all right!
566
設定でRun Lengthを100usに設定してenableをonしてシミュレーションしても
$finishまで行かないと停まりません。
RunLengthは何のためにあるのでしょうか?

実際のsim状況にでは、画像処理のsimを多用していますが、だいたい2〜5フレーム
時間程度シミュレーションしますので35ms〜100ms程度シミュレーションすることに
なります。またTBの記述では$finishを設けないでsimすることも多々あります。
modelsimでは run 100ms と言うようなコマンドやツールバーにsim時間を入力して
[↓]アイコンをクリックするなどで対応しています。
veritakでの操作方法が判りませんのでお教え下さい。
3.45D time precisionが、psの場合に動作しないバグがありました。3.45Dで修正しました。
567 チュートリアルに説明が見あたらなかったので質問します。
掲題のようなキーボードショートカットはどこかに説明されて
いますでしょうか?
波形ウィンドーをズーム、パンするのにいちいちマウスでアイコンを
クリックするのが面倒です。
ズーム・パンについてはctrl,altキーとマウスホイール操作を見つけましたが、
黒・赤カーソル間ズームが判りません。目的とする波形の上で左クリック・右クリック
して[アイコンクリック]ではなく、[キー操作]としたいのです。左手が空いています。

その他の操作ショートカットの説明もあれば、説明箇所をおしえて下さい。
3.45D 3.45Dでキーボードショートカットを挿入しました。対応キーについては、ツールチップ表示をご参照ください。
568 As you regularly release updates, do you have a preferred method of
installing updates ... should we uninstall the existing update, or can we
safely download and run the new install program and have it overwrite the
necessary files of our installation?

I've search your FAQs but did not see any specific suggestions for updating.
Perhaps on the download page you could include a brief instruction for the
preferred method for updating.
- You don't need to uninstall existing one anyway. It is up to you whether you overwrite it, or you make new folder for new one.
Basically there is no problem if you overwrite it. However some feature(ie: save/restore function) requires the same version, in that case you may still need existing one. DeskTop icon is replaced with new one by new installation, you can use older version if you replace it with older path.
569 ModelSimからの波形検証の流れで、Waveform Viewerにたくさん信号を入れてあ
ります。
自分の目的の信号がどこにあるのかわからなくなってしまうので、ModelSimでは
信号名で検索して、今回波形を観測する信号をマーキングして検証していました
ので、Veritakでもそのような機能があれば、と思って質問させていただきました。
3.45E 3.45Eで、実装しました。SCOPE TREE上のワイルドカードによる検索ダイアログを出して、Wave Next/Wave Previousにより検索してください。 Scopeの検索もNext/Prevで行うようにしました。VCD信号も検索できますが、検索範囲は、それぞれのTree ROOT下のみなっています。
570 以下の条件でsimが異常に遅くなり、さらにHDDを大量に消費します。
何処に問題があるのでしょうか?設定で解決出来るのでしょうか?
プロジェクト設定はデフォルトのままで、MaxArchiveDisk=2000Mbyteに設定し
UseDiskにしています。

参考までにsim回路規模は以下の通りです。
インプリメントデバイスはcycloneII EP2C20が対象です。、
内部ロジックの使用率は85%以上。
M4Kメモリブロックは105個のうち103個を使用しています。
PLLを一つ使用。80MHzを入力し、内部で160MHzを作っていますが160MHzは
回路の一部でしか使っていません。ほとんどの回路は80MHzで駆動されています。

この回路をsimすると非常に遅くなります。
VeritakSV PLL系が入ると遅くなるのは、承知しています。すみません。Veritakは、Real系の演算が苦手で、これがネックになり、PLL系のSIMは、遅くなります。下記に、いくつか思い当たることを書いてみました。

1)簡単には、PLLブロックをRTLで置き換えたモデルにすると、恐らくは、様子が異なると思います。

2)大量の波形で遅くなっているかどうかは、次の手順で雰囲気が掴めると思います。

SaveAllSimDataをオフ
Optimize Fastをオン
DebugModeを ノーマル


これで、波形オフで、最速に近い状態になります。これでも遅ければ、波形その他要因ではなく、VeritakのSIMエンジンの実力になります。

3)SelectiveSaveWaveformの使用
PLL系が入ると大量のイベントが発生するために、全波形は、恐らく無理だと思います。SelectiveSaveオプションを使用して選択的Save、あるいは、選択的にVCDを使う等の方法が次善の策になると思います。
571 I ran into an infinite loop in some code and found it hard to debug.

I looked at the tutorial, but the Simularion->Step_Setting is "grayed out".

In addition, the only way I can stop the simulation is to reload the project,
the "pause" button doesn't work.
VeritakSV STEP can pause procedural statements only.
Net structual events can not be stepped. This should be improved in next generation.
572 I see a problem trying to add a file to a project when the file name does not match
the module name. I know you made changes to scan libraries looking for missing
modules assuming that the module name would match the file name, ie, module foo
must be in file foo.v

But, it looks like if I have a file named foo.v with only module bar in it, even if I explicitly
add the file to the project list, Veritak does not include it.
T.B.D. Unfortunatelly, it is not reproduced in my site.
573 Attached is a file that shows a problem with "always @(*)"

Inside the block, the vector "delay" is used to compute some values, but
a change in its value does not re-trigger the always block.

The BUG_FIX parameter can be set to 0 to show the bug, 1 to show one "fix"
that shows me that my logic is correct, and 2 to show an alternate fix.

I believe it is legal for a vector to trigger an always @(*) block.

This happens regardless of the optimization settings, iw, normal/fast/ level1/2
3.46A 3.46A fixed it.
574 3.43Dから3.45Eに上書きインストールしたところ、Internal Error EC=854が出てしまいます。
Waveform Viewerでは問題なく波形が表示できますが、やはりInternal Errorと出ているのは気持ちがいいものではないので、調べていただけると助かります。
なお、マイクロン社のDDR2モデルがINFOを出すときに出ているような気がします。
ちなみに3.43DではInternal Errorは出ていませんでした。
3.46C 3.44A-からのバグです。
3.46CでFixしました。
575 いつもveritakwinをつかわさせていただいています。

FAQ515番とおなじような現象が生じました。


当方の環境は
XP SP2
Veritakwin345E
です。

簡単に再現させるために、veritakwinのチュートリアルの
Hellow worldを

E:\Documents and Settings\My Documents\workspace\test\test.v

に作成し、コンパイルを行い、レポートウインドウの

E:\Documents and Settings\My Documents\workspace\test\test.v(1)::hello

をダブルクリックすると、

『Create new file』

のウインドウが出ます。

エディタ環境設定でnotepad++の指定をやめて同じようにダブルクリックすると、

『ファイルを開くのを失敗しました』

というウインドウが3つできました。
3.47A 空白を含むフォルダは、notepad++でうまくいかないようです。空白を含まないフォルダ上にソースを置いてやってみると、こちらではnotepad++が指定のソースを開くようになりました。


レジストリに登録されている情報が、なんらかの原因で、壊れている可能性が考えられます。3.47Aから、アンインストールで、レジストリ情報を消すようにしました。
576 version 3.26より、全てのprimitiveをサポートされたとのことで、今まで使っ
ていたversion 2.16から最新版のversion 3.46Cにバージョンアップいたしました。

verilog 2001はよく分かっていないので、verilog 2001の仕様の理解不足な点も
あり、お忙しい中申し訳ありませんが質問させていただきます。

(1) 以下のような記述をすると、syntax errorになりますが、このような書き方
は間違いということでよろしいでしょうか?

module BHLD(inout trireg z);
endmodule

(2) 中途半端な書き方ですが、以下のように書いた場合、

module BHLD(inout z);
trireg z;
endmodule

次のようなエラーが出ますが、エラーで止まることはなくシミュレーションを開
始します。

C:\パス\pp.v(3)::Error: z宣言が下記宣言と衝突しています。
C:\パス\pp.v(1)::z

この場合、シミュレーションは正しく行われたと考えていいのでしょうか?
もちろん以下のように書くと問題なく実行できます。

module BHLD(z);
inout z;
trireg z;
endmodule

(3) ちょっと気になって、triregでなくregを使って以下のように書いた場合(2)
と同じ現象になりました。

module TT(output z);
reg z;
endmodule

(2)や(3)では、エラーメッセージは出ますがシミュレーションを開始してしまい
ます。verilog 2001では問題のある記述なのかどうかもよく分かりません。

この現象について教えていただけませんか。
- Verilog2001およびその拡張であるIEEE1364-2005では、構文エラーになります。Veritakは、2001準拠ですので、構文エラーになります。ただし、SystemVerilogでは、問題のない構文です。最終的に統一Versionの2009版でどうなるかは、まだ分かりません。(恐らくSystemVerilogの構文に統一されるものと思いますが、確信はありません。)SystemVerilogでも下位互換は保たれているので、triregを含む構文は、1995スタイルで書かれることをお勧めします。


この場合は、1995宣言と2001宣言が入り混じっており、意味解析ステージでエラーにしています。(コンパイルはストップさせていません。)Veritakでは、問題なく動いてしまいますが、他のツールでは通らないと思います。やはりtririgを含む構文は、1995スタイルに統一されることをお勧めします。
577 I wonder if Veritak has the design size or file number limit?

I have one veritak_src_files.txt attached here, it looks like if the line
number exceeds 534, then it failed.
The error message is:

Window02

Fail to invoke Veritak
3.47A Yes, there is a restriction.GUI passes the parameter to compiler/simulator.Win32 can handle max. of 32 KB. However, it fails if it execeeds.( your file is aroud 32KB..)

3.47A has beyond 32KB.
578 I now can compile and run simulations successfully after I removed some
useless files and lib dir in the veritak_src_files.txt. Thanks for your
help. Nevertheless, the 32 KB limit is too small, it is not convenient for
managing a big design.

I also encountered one issue with the simulation result correctness. Please
find the following codes (I also attached a test.v module for testing out
these codes):

$display ("4'b00xx == 4'b0000 : %b", (4'b00xx == 4'b0000));
$display ("4'b00xx == 4'b0100 : %b", (4'b00xx == 4'b0100));

What should be the correct answers?

The first question shows first two bits are matched (00 vs.. 00) while next
two bits are compared and checked (xx vs.. 00). The answer should be "x" (it
means either "0" or "1"). The second question shows first two bits are NOT
matched (00 vs.. 01), then no matter what next two bits are, the answer is
"0".

The above answers were also checked by running VCS.
However if I run Veritak, I got both answers "x".

I understand that some saying if any of the operands of logical equality
(==) has "x", the result should be "x". However, the actual logical equality
should work like, e.g. A == B should behave like &(A ~^ B). This kind of
behavior also matches with real hardware behavior.

I now modified my codes for "==" to &(A ~^ B) then the simulation passed
correctly.


The GUI interface and thus the veritak_src_files.txt makes porting the
designs from nc-verilog/VCS environment much troubles.
There are many modifications needed and many limitations existed.
3.47A 3.47A fixe it.
579 version 3.26より、全てのprimitiveをサポートされたとのことで、今まで使っ
ていたversion 2.16から最新版のversion 3.46Cにバージョンアップいたしました。

verilog 2001はよく分かっていないので、verilog 2001の仕様の理解不足な点も
あり、お忙しい中申し訳ありませんが質問させていただきます。

(1) 以下のような記述をすると、syntax errorになりますが、このような書き方
は間違いということでよろしいでしょうか?

module BHLD(inout trireg z);
endmodule

(2) 中途半端な書き方ですが、以下のように書いた場合、

module BHLD(inout z);
trireg z;
endmodule

次のようなエラーが出ますが、エラーで止まることはなくシミュレーションを開
始します。

C:\パス\pp.v(3)::Error: z宣言が下記宣言と衝突しています。
C:\パス\pp.v(1)::z

この場合、シミュレーションは正しく行われたと考えていいのでしょうか?
もちろん以下のように書くと問題なく実行できます。

module BHLD(z);
inout z;
trireg z;
endmodule

(3) ちょっと気になって、triregでなくregを使って以下のように書いた場合(2)
と同じ現象になりました。

module TT(output z);
reg z;
endmodule

(2)や(3)では、エラーメッセージは出ますがシミュレーションを開始してしまい
ます。verilog 2001では問題のある記述なのかどうかもよく分かりません。

この現象について教えていただけませんか。
- Verilog2001およびその拡張であるIEEE1364-2005では、構文エラーになります。Veritakは、2001準拠ですので、構文エラーになります。ただし、SystemVerilogでは、問題のない構文です。最終的に統一Versionの2009版でどうなるかは、まだ分かりません。(恐らくSystemVerilogの構文に統一されるものと思いますが、確信はありません。)SystemVerilogでも下位互換は保たれているので、triregを含む構文は、1995スタイルで書かれることをお勧めします。

この場合は、1995宣言と2001宣言が入り混じっており、意味解析ステージでエラーにしています。(コンパイルはストップさせていません。)Veritakでは、問題なく動いてしまいますが、他のツールでは通らないと思います。やはりtririgを含む構文は、1995スタイルに統一されることをお勧めします。
580 3.31あたりから久しぶりにバージョンアップデートさせたのですが、波形表示の、表
示の選択 -> enum選択ができなくなってしまいました。
パラメータは .v ではなく、別ファイルでveritakプロジェクトファイルと同じディ
レクトリにおいてあります。プロジェクトにも追加されているのですが、仕様等変更
がありましたでしょうか。確認ポイント等、アドバイスいただけないでしょうか。
- 手持ちのサンプルで見たのですが、特に問題なく表示されていると思います。プロジェクトにいれる拡張子は、.v(正確には、プロジェクト編集の画面で、ファイルの種類で表示される拡張子)である必要があります。
.v でない場合(.h等)は、`include構文で、明示的にソースで呼び出すようにしてください。
581 First let me say thank you for developing such a wonderful product!

Now my question: does Veritak have any pre-defined constants? For
instance does

'ifdef VERITAK
do something specific to VERITAK
'endif

work?
- "Veritak" is pre-defined in Veritak. Simple Sample is below.


initial begin
`ifndef Veritak
$fmonitor(fp,"//%t:SW_O=%d",$time,a);
`else
$display("Hello! Veritak.");
`endif
`ifdef Veritak
$display("Hello! Veritak again.");
`endif
end
582
VeritakのProjectを新規に作成する際に出てくるダイアログ
「コンパイルするファイルを選択します。」の時に
チュートリアルの説明写真では「OK」ボタンがあるのですが、
「Exit」となってProjectを作成できません。

- Save Projectボタンを押してください。
583 In the "project setting" menu, there is an option to "disable waveform save until trigger..."

One of the trigger sources is "time" - how do you enter the time value? I didn't see anything
in the tutorial.
- Sorry,Time check box seems meaningless..

Anyway,please use Run-Length(Simulation Menu) to enter the time value.
584 tried using the disable waveform save until stop/finish and it did not
appear to make a difference.

In my testbench, I put
initial
begin
#1000;
$stop;
#1000;
$stop;
end

The simulation stopped at time 1000, but it looks like it gathered waveform data from time 0
until then. I would have expected to see no data gathered.
- Please uncheck Compilation to avoid to trigger just after compilation.

Added waveforms are always gathered from time 0.
Only archived waveforms is gathered from the time triggered.
585 Does Veritak support the specify keyword? If so, are there any special
syntax differences from standard verilog?
T.B.D. No, Veritak does not support specify section. Veritak just ignore Specify Section by lexor-level, means does not read the section at all.

You can make sure pre-processed preout.v (by generating project option) does not include any specify sections.
586 have a simulation with UDP D Flip-Flops. I am trying to simulate a simple
divide by 2 and divide by 4 configuration with two DFF's in series. The UDP
looks like this:

primitive D_Edge_FF(Q, Clk, Data);
output Q;
reg Q;
input Data, Clk;

//initial Q=0;

table
// Clk Data Q(state) Q(next)
(01) 0: ?: 0;
(01) 1: ?: 1;
(0x) 1: 1: 1;
(0x) 0: 0: 0;
//Ignore negative edge of clock;
(?0) ?: ?: -;
// Ignore data changes on steady clock
? (??): ?: -;
endtable
endprimitive

Notice that the 'initial Q = 0;' is commented out. I've done this because I
get a Veritak crash error when it is not commented. In the commented format
the simulator works fine and finishes very quickly but when I try to view
the output of the flops I see only high impedance states (x).

First, is 'initial' not supported in this context? Second, could the reason
I am seeing 'x' at the output be that the state of Q is not initialized and
therefore can never be determined by the simulator (because QN is feed back
to D in the div-by-2 circuit)?

=>I have installed the latest version of Veritak and run the example you sent
along with the previous e-mail. It works perfectly for the case when
initial Q = 1'b0, but if I change it to initial Q = 1'b1 the Q2 signal goes
to an unknown state and Q3 stays at 1 for the entire simulation.

Do you have any idea why this might happen? Is there a gap in the logic
definition of the primitive that could cause this?
3.47C 3.47C fixed it.


=>I think if Q=0, all the simulator's result should be the same as 3.47B.
However if Q=1, it is not true. In fact, MedelSim's results were Q1=1,Q2=x, Q3=x at initial state.


I think this may be happen. Please note Q2' clk and !Q1(X or 0) may happen simultaneously. I would like to suggest using primitive with asynchronous set/reset to avoid initial state issue for asynchrous circuit.

587 elow is some code that *may* show a Veritak bug, but I'm not sure.

module testbed;

wire zz;

foo u_foo (
.bar (zz)
);

endmodule


module foo (
output bar
);

wire bar;

assign bar = 1;
endmodule

Veritak complains about the red line, but I think the error is not correct? From the
Verilog spec:
If a port declaration includes a net or variable type, then the port is considered completely declared and it is
an error for the port to be declared again as a variable or net data type declaration. Because of this, all other
aspects of the port shall be declared in such a port declaration, including the signed and range definitions if
needed.
If a port declaration does not include a net or variable type, then the port can be again declared in a net or
variable declaration. If the net or variable is declared as a vector, the range specification between the two
declarations of a port shall be identical. Once a name is used in a port declaration it shall not be declared
again in another port declaration or in a data type declaration.

What is your opinion?
- Actually ModelSim rejects this syntax. Your example style is mixing 1995 and ANSI-Port style. Once ANSI- port style is used, it may be illegal to declare the net in the ANSI style.

I noticed and changed it as error(but continus to compile) by some versions.
588 質問1:
scope tree viewの信号一覧に
"□#_数字[N:0]" が表示されていますが、これは何を表しているのでしょうか?


質問2:
Error: xxx Internal Error EC=93
と表示することがありました。(最近は出ない)
これはどのようなエラーでしょうか?RTLソースに問題があったのでしょうか?

質問3:
Waveform Viewerの信号名の上で右クリックし、“波形の色”をクリックすると
信号名も波形の色になりますが、信号名だけ元の色(黒?)に戻す方法が判りません。
どのようにすると元に戻りますでしょうか?

質問4:
再コンパイルしないで時刻0から再度simする方法はありますか?
コンパイル時間が短いのであまり苦にならないのですが、やはり規模が大きくなって
選択波形だけsaveし、表示するようになるとコンパイル時間が惜しいです。
3.48A 1) 内部信号です。3.48A で改善(ユーザ不可視)しました。

2) なんらかの記述エラーがあったと思います。そのエラーより前に、エラーメッセージがでているようであれば、それが直接的原因であり無視してよいと思います。しかし、単独で発生しているようであれば、Veritakの内部エラーですので、解析のためソースをご送付いただきたくお願いします。

3)3.48A で改善しました。表示->色設定->Force ListCtrl Text にチェックを入れてください。

4)Save/Restore 機能をお試しください。(Tutorial2.4.17)
Save/Restoreのプロジェクトを作成し、Trigger SourceをCompileにチェック、TimesをOnceだけにして再コンパイルをすると、時刻0時点での状態を保存します。次回のプロジェクトロードでは、状態保存したファイルからの復帰になります。

Save/Restore 機能をお試しください。(Tutorial2.4.17)
Save/Restoreのプロジェクトを作成し、Trigger SourceをCompileにチェック、TimesをOnceだけにして再コンパイルをすると、時刻0時点での状態を保存します。次回のプロジェクトロードでは、状態保存したファイルからの復帰になります。なお、この機能は、非常に大規模なデザイン(ファイル数が500以上)では、コンパイルできなかったという報告があります。将来的には、EXEを生成するようにしたいと思います。
589 何度かソース変更、simを繰り返しています。
この時の操作は「歯車ボタン」(と呼んでいます)をクリックして、再コンパイル実行。
さらに |> ボタンをクリックしてsim実行という手順です。

そこで歯車ボタンの左隣のボタンが「コンパイル実行後、sim実行」というボタンだと
いうことを思いだし、「歯車」+ |> より一つ手間が省けるということで件のボタン
をクリックしてsimしたところ、ソースの変更箇所が反映されず、変更前と同じsim結果
となってしまいました。
??と思って再び件のボタンをクリックしてsimしましたが、変化なし。
結局、歯車クリック + |>クリックでソースの変更が反映されたsim結果となりました。
歯車の左隣のボタンは「歯車 + |>」と同じだと思っていましたが結果は違うようです。

歯車ボタンとその隣のボタン、さらにその左のボタンのそれぞれの「コンパイル」には
どのような機能差違があるのでしょうか?


提案1:
操作していて気づきましたが、waveform viewerの信号リストの下に左右スライダーが
無いとき、一番下になった信号名の波形は波形窓の左右スライダに隠れてしまい見えません。
私は該当信号の波形が見えなくなるのを防ぐため、信号リストの一番したに空欄を入れています。

出来れば、空欄を入れなくとも波形が隠れるのを防ぐようにして欲しいところです。
具体的には信号名にスライダーを表示させないで済む時でもスライダーを表示させておけば
いいのではないかと思います。

提案2:
waveform viewerの信号名リストのところにその信号のinput/output/inout/wire/reg等の属性を
表示出来ませんか?scope tree viewのところを見れば判ることなのですが、階層が深いと面倒です。
最近、細かなモジュールの集合のようなRTLをsimしています。また他人が作ったRTLのsimだけ
やるということもあります。この様な場合、その信号がinなのかoutなのかソースかscope tree を見ないと
判らないときがあります。また似たような信号名でin/outの判別がつきにくいこともあります。
じつは信号名リストのscopは階層が深いと…ばかりでほとんど使えません。(私だけかもしれませんが)
in/out/wire/regなどは文字1,2字だけで意味が分かりますので実用性は高いと思っています。
3.48A 質問1)
ライブラリに対する扱いの違いです。歯車は、ライブラリフォルダの全ファイルについてコンパイルを行います。これに対してロード/リロードボタンは、ライブラリフォルダについては、呼び出されたときだけ(モジュール名=ファイル名の規則に従って必要に応じてインスタンス化されたモジュールを読み込む)コンパイルを行います。従って、どちらも同じ結果になることが設計意図です。


ソースの変更結果が反映されないのは、

1)ライブラリ下のフォルダで、呼び出されないソースの場合
2)モジュール名=ファイル名になっていないソース
3)ライブラリフォルダ下のモジュールがTOP階層になっている

の原因が考えられます。1)は結局SIM結果には関係ないので、2)3)の可能性が高いと思います。

提案1
 3.48Aで実装しました。
提案2
 SCOPEの列をクリックすると添付のようなツールチップがでます。(これは、WaveformViewのツールをEnableしていなとでません。) これで代用できないでしょうか?)
=> 3.48Aからツールチップ表示時間を30secとしました。
590 Anyway... I think there may be a bug in using a function
inside a wait statement.


Here's some sample code....
`define BUG

module z;

reg clk = 0;


foo u_foo (
.clk (clk)
);

initial
forever
begin
#5;
clk = ~clk;
end


initial
begin
repeat(3)
@(posedge clk)
;

`ifdef BUG
wait(u_foo.done(0) );
`else
wait(u_foo.cnt == 0);
`endif

$display("got %0d", u_foo.done(0));

@(posedge clk)
;
#1;
$display("got %0d", u_foo.done(0));

$finish;
end

endmodule


- I think I got the same results as ModelSim for both cases.

# 225 ERROR: sim didn't stop

Since u_foo.done(0) is called only once, and the result is staticl,and will never be changed after that. To sense the cnt change, One solution will be;
wait(u_foo.done(u_foo.cnt));
541 Probably my mistake, but I can't find it.
(Sorry, I bet you get this a lot.) running veritakwin
v 3.43A, Mar.1.2008.

D flip-flop made from nor gates is not deterministic?
Test bench:

D flip-flop:

test bench is ok, because behavioral model works ok.

ffdnor.v code is from Thomas & Moorby,
"The Verilog hardware Description Language," 2nd ed. example 1.7.
Same FF design is at
http://www.play-hookey.com/digital/d_nor_flip-flop.html
So, probably not a mistake in T & M.
- .. due to your Typo.
I'm not sure expected result.
But,

nor#10
a(q, qbar, r, reset);

may be qBar.
542 I am trying to reference some of the math functions that are built in to
Veritak like $sin, $exp, and others listed on the Veritak FAQ page, but I
can't seem find the include file needed to have them recognized by the
compiler. I receive an error when I try to load my file that says: $sin can
not find the function, or $exp can not find the function.

I tried running the do_file_test.v example in the samples directory and that
runs just fine (it has a $sin call in it). I also tried including all the
directories that the do_file_test project includes, but without success.

An example of the syntax I am using is:

assign sin = $sin(w); where sin is a real and w is real with w =
$realtime*3.14159265359/50.0;

Am I doing something wrong?
VeritakSV There is a limitation for $task/function in Veritak.
User task/function can be used only in procedural statements.
Veritak does not support $xx in structual statements.

So,
assign sin=$sin.. should be rewritten as follows.

real sin;
always @* begin
sin=$sin(W);...
end

You don't need any include files for $xx.
I've attached the source of VPI for your reference.
543 I have a question on expression width evaluation for the ? operator. Below
is example code.

According to the Verilog manual:
i ? j : k max(L(j),L(k)) i is self-determined
So, I have some code that does
reg [7:0] pix;
d0= ~sel1 ? 'bz : sel2 ? pix : pix>>2;

Since pix is 8 bits, the "sel2 ? pix : pix>>2" should have an expression
width of 8 bits. Thus, the part "~sel1 ? 'bz : " should also have a width of 8 bits.

But it looks like the the output of the expression depends on weather we assign
to a reg or a wire. In the sample code below, compare d0, d1, d2 to each other.

Also compare d3 and d4 to each other.
3.49A Yes, this is very serious bug regarding unsized constant for both procedural and net statements.
544 am finally working on the conclusion of one of our internal projects (that
uses an Altera fpga) and am having more fun with Veritak 3.48A. I have some
random questions and comments while working with Veritak again...


1) New NPPVeritakPlugin:

Is there a list of what has changed in the latest Notepad++/Veritak plugin?
I am using Notepad++ 5.0.2 with the latest download, but do not see the
Veritak sidebar pop up in Notepad++ like previous Veritak plugins had.
Is there a version number scheme used for the plugin? How about just naming
the pluging .dll file with a simple version number?

Perhaps a note could be placed on the download page, or a link on the
download page, to reference the separate NPPVeritakPlugin.DLL download
(since it does not seem to be included in the standard release).

2) I am using Notepad 5.0.2 with .48A without known problems.

4) <alt> keys do not work: <alt>F


Compiler syntax errors:

A) Text messages could be enhanced to indicate type of error, or expected
token rather than no hint. Several YACC / Bison books have chapters on how
to get better error messages from only small changes to parser definition
(and use the optional Bison-generated text for error messages or hints).


i) display

fflush(stdout) or fflush(stderr) before each error message?
or stream output interleaved with fd (file descriptor) output
(i.e. printf() or printf() used along with write())


Parse Analysis Finished.
Loading vpi
Generating Scope
Evaluating parameter...
Evaluation generate...
Evaluating reg/wire...
Evaluating module..fC:\tmp4\test.v(818)::
C:\tmp4\test.v(130)::Error: BUS_OUT_EBL can not find destination.
inished with incomplete compilation.

Error Detected in Elaboration Process.


ii) Duplicate module names not flagged as an error, or as a warning!

"
module duplicate
(
input wire dummy1
) ;

endmodule // duplicate



module duplicate
(
input wire dummy2
) ;

endmodule // duplicate
"

iii) parameter counts are not checked <sigh>

iv) module name and global signal name conflict not noted.

v) multiple case statement entries are not flagged as an error:

module duplicate
(
input wire dummy2
) ;

reg [1:0] state ;

parameter S_READ = 1
, S_WRITE = 2
;

case ( state )

S_READ:
state = S_WRITE ;

S_WRITE:
state = S_READ ;

S_READ:
state = S_WRITE ;

endcase

endmodule // duplicate



Questions

ii) Is it possible to exchange the 'Signal' and 'Scope' positions in the
Waveform Viewer window?


Veritak: A great product with great support. Thanks again for your efforts.
3.49A/VeritakSV 1) New NPPVeritakPlugin:
It seems plugin does not work at least v.5.03. I changed it to NPPVeritakPlugin102.DLL. Please try this one.

For other suggestions, they will help me a lot for future version's improvement or next generation's development. Thank you very much.
545 OK, the following code is bad, but it does show a Veritak crash. I get a Windows
crash screen saying the program needs to close, send a report to microsoft????

The bug in the code is that id does a $feof AFTER the file has been closed. I've seen
similar problems with other calls after a file has been closed.

I don't know if you want to fix this or leave thas as a "don't do that!"



module y;

integer fd;

initial
begin
fd = $fopen("y.v", "r");

$display("got fd=%0d", fd);

if (fd != 0)
begin
$display("eof flag=%0d", $feof(fd) );
$fclose(fd);
// This line causes a crash - file has been closed....
$display("eof flag=%0d", $feof(fd) );
end
else
$display("ERROR - didn't open file!");
end


endmodule
3.49A 3.49A Fixed it.
546 I believe the following code should fail for you! Remember to set
the "Project Settings" to Normal, Optimize1=None Optimize2=blank
Limit Memory Size to <=256bytes


Here's the code...

`define BUG_ON

module z;


reg [9:0] d1, d2, d3, d4;


test u_test (
.idata1_in (d1),
.idata2_in (d2),
.idata3_in (d3),
.idata4_in (d4),

.z ()
);


initial
begin
#100;
d1 = 0;
d2 = 0;
d3 = 0;
d4 = 0;
repeat(10)
begin
#10;
d1 = d1 + 3;
d2 = d2 + 3;
d3 = d3 + 3;
d4 = d4 + 3;
end
$finish;
end

endmodule


module test (
input [9:0] idata1_in,
input [9:0] idata2_in,
input [9:0] idata3_in,
input [9:0] idata4_in,

output z
);

reg [9:0] idata[3:0];

always @(*)
`ifdef BUG_ON
{idata[3], idata[2], idata[1], idata[0]} = {idata4_in, idata3_in, idata2_in, idata1_in};
`else
{idata[3], idata[2], idata[1], idata[0]} = {idata1_in};
`endif


assign z = ^idata[0] | ^idata[1] | ^idata[2] | ^idata[3];

endmodule
3.49B 3.49B fixed it.
547 Here is a simple suggestion for the GUI....

The compilation currently outputs a message like the following that is hard to read.
....
349C 349C fixed it.
548 最新のVeritak3.49Bを使用し、添付しましたシミュレーションでは
ISE10.1で生成しましたFIFOで構文エラーが発生しており
シミュレーションができません。

エラーとしては下記のエラーが発生しております。

これは、シミュレーションの問題でしょうか?
それともCoreGeneの生成が悪かったのでしょうか?

以上、よろしくお願い致します。

C:\Xilinx\10.1\ISE\verilog\src\XilinxCoreLib\FIFO_GENERATOR_V4_3.v(725)::Error: DATA_COUNT_FWFT [
]内が宣言でのレンジを超えています。
349C <原因>
当該構文で、Indexが負数になっており、これをコンパイルエラーとしていたためです。
(LRMの解釈としては微妙です。)
<対策>
しかし、この箇所は、定数評価(C_DATA_COUNT_WIDTH>C_RD_PNTR_WIDTH)を行うと実行されることのない文です。そこで、定数評価を行い、エラーとしないように修正しました。
549 a "null" initial element in a for loop gives compile error:

for ( ; datum != 0 ; datum = datum >> 1 )
begin
end

I understand this construct is legal... is this currect?
- BNF of LRM (Verilog-2001) says as follows;

for ( variable_assignment ; expression ; variable_assignment )
statement

variable_assignment ::= variable_lvalue = expression

So I think no null assignment is allowed in for loop initial statement.
550 ALTERAのmega functionで、作ったvelirog ファイルは、どのようにして、使いますか? - Tutorial5.1.3のように、altera_mf.vというファイルをプロジェクトに入れてみてください。altera_mf.vは、
Quartus8.0のeda\sim_libフォルダ下にあります。
551 Attached is a zip archive that should show the crash. The file
vld_flat.v has a `ifdef at the top to turn on/off the crash.

It looks like there has to be levels of hierarchy and maybe lib
directories to trigger this?

Note that the file dec_core.v needs to also instantiate the module
qrle_dec.v in order to show the problem.

So, to recap, the file vld_flat.v has a syntax error bracketed
with `ifdef CRASH statements. The parser finds the error, but later
on Veritak crashes and causes a Windows error dialog box.
3.49D 3.49D fixed it.
552 I have a testbench with the following define statements:

`define INPUT_FILE "testcase001.dat"
`define OUTPUT_FILE "bitsout001.dat"

I would like to over-ride these statements in the veritak project or command
line (to run other testcases without changing the testbench code), but it
does not seem to work. I am probably doing it incorrectly, can you suggest a
solution?
- Please look at a sample /regression_test/plusarg/plusarg_test7.v


In example.bat;

veritak2 --F --NS --NB --B --C0 --M0 --a --ST --W "..\regression_test\plusarg" --D "MEM_FILE=""write_random.txt""" "plusarg_test7.v" >> log1.txt

Please note MEM_FILE is overridden with "write_random.txt".

I hope this sample will help you.
553 For information purposes the following line writes all of rs_out to the
file, not just bit 1 as expected

$fwrite(fileout, "%d\n", rs_out[1]);
3.49D 3.49D fixed it.
554 I can not get a screen snapshot since any time I touch a key to capture the
pop-up window goes away before the screen or window capture. Do you have a
suggested way to get a screen snapshot to you.

But you are correct, I meant that <015> (or in U*IX parlance, \015) is 0x0d
(an ASCII "Carriage return") and <012> (U*IX \012) is 0x0a, an ASCII "line
feed". at the end of each line displayed in the pop-up window is a smal
square box that occupies one character position, which could mean that a
\0x0a \0x0d is terminating the line rather than a \0x0d \0x0a, or perhaps
just a \0x0d is terminating the line.

Windows XP, North America edition, US keyboard, SP2, Notepad 5.0.3 with US
keyboard (I think). By choice we only have one Vista machine in our stable
and I will try that sometime to see if Vista is different.
3.49D 3.49D fixed it.
555 Veritakでシミュレーションしようとしたところ下記の構文でエラーが発生しており、困っております。
下記の構文と似た構文では、Veritakで構文エラーとなっていない為、どこに違いがあって構文エラーとなって
いるのか分かりません。
単純なミスなのかも分かりませんが、なぜ構文エラーとなるのでしょうか?
- 構文エラーは、エラー表示の行または、それ以前に原因があります。その行から出発して、それ以前の行をチェックしてみてください。
556 Is there an option to override the checking of initializing a register? For
example, we have a binary counting register whose initial value is not
important since it is simply incremented every clock tick. To save space in
an FPGA we do not need to have reset or initialization control of this
binary counting register. But when we can not simulate this simple
construct presumably due to the register not being initialized to some
explicit value. This code that works is shown below first, then the simpler
code that we would like to for final synthesis.

Is there some way to override this behaviour so we can properly simulate the
simpler code that does not initizlize the register?
- My understanding is you don't want to change the description between sim. and synthesis.

Here is a example;

//test bench for sim,not synthesized
...
DFF dut(clk,D, Q);

initial dut.Q=0;//Verilog allows to write/read beyond hierarchy.

endmodule

//synthesis
module DFF(input clk,D,output reg Q);
always @(posedge clk) Q<=D;
endmodule


Or, initial statement in DFF module can make initialization though synthesizer will make some warnings. (In synthesis view point, initial statements are just neglected..)
557 まだ、作成途中のRTLなのですが、、、以下のとおり、コンパイルがとおりません。。


RTLの文法エラーはないようなのですが、
Complie Failed due to Code Generation error.になっているようです。。

また、「Internal Error2619」を出力しているようなのですが、
なにかわかりますでしょうか?
3.50A サポートしていない信号宣言です。(Verilog2001ではillegal な構文です。)
3.50Aでファイル名、ラインNoを追加しました。
558 I have a block of code I've changed, when I run it through the parser,
I get "Warning: Truncation Done".

Is it possible to add the line number in the file that caused the warning? I'll
track the problem down in my code, but this might be nice to add (if possible)
for other users.
3.49G 3.49G applied it.
559 Waveform viewer currently allows variables to be displayed in different
radixes, but only hex and decimal types are supported, not octal.
Some of us old folks still use octal, so could this be added in the future?
3.50A 3.50A applied it.
560 新規プロジェクトを作成してプロジェクトをロードするときVeritakが落ちるときがあるようだ。
その場合は、最初にThread generate Error. status_process というダイアログを表示する。
3.50A 3.50A fixed it.
561 Your simulator is now very much better than cver. Cver has problems
with nested modules and instance parameters.

Your UI is still not as good as Debussy. Would you be willing to have
me suggest a couple of things which I think would improve the waveform
window?
- Yes, I'm sure your suggestions will help me a lot. And that will be also true for most users.
562 Macro containing timescale should compile. Doesn't. All versions thru 3.50 3.50B 3.50B fixed it.
563 I am not getting Veritak to work at all now. Something must have changed
on my computer, but I cannot determine what. I have tried both the 3.49B
and 3.5 versions and I keep getting a Windows program crash notification
of the following error:









or I get a message: "finished with incomplete compilation"



I have also enclosed the log file from the command line by running:
veritak2.exe --W "..\samples" "..\samples\hello.v" 1>>test.txt



------------Starting Verilog Build Process----------

Starting Verilog PreProcessor...

..\samples\hello.v(1):: Reading

preprocessing finished with no errorsVerilog Preprocessing Finished.

compile startedStarting Verilog Compile Process...

C:\Program Files\veritakwin349\samples\hello.v

Info: Parse Analysing...

Parse Analysis Finshed.

Loading vpi

Generating Scope

Evaluating parameter..

Evaluating generate...

Evaluating reg/wire...

Evaluating module...

Reduction Phase:

Elaboration Process finished successfully. Code Generation Starts....

Generated param_list_structure...

Optimizing Code...

Code Generation Complete.

compile done with 0 errors.

compile complete with no errorsScanning waveforms finished.

Code Optimizer Finished

Total 0Bytes returned to OS.

simulation start readysim started------------- Simulation
Starts.--------------------



Welcome to Verilog world !



---------- Simulation finished. time=0----------



sim_finished



Whenever I try to run this through the Veritakwin GUI, I get this
message: "finished with incomplete compilation"



I have not run Veritakwin for some months now, but the last time I ran
it, it worked, now something has happened and I can't figure out why.
- The error message on GUI shows Veritak requested some memory (100MB) to OS ,but was not successful by the error. So please check the items below.

1) Phisical Memory (at least 1GB recommended)
2) Disk Drive remaining size (at least 1GB recommended)
3) Virtual Memory (System Setting at least 768MB recommended)
564 I wrote down the things I do at work with Debussy which I like so much.

I will send you the ideas in several mail messages.

Idea 1:

In the waveform window, when I am moving a signal up or down
(click-drag) I am never sure where it is going to end up when I drop it.

In Debussy, the drop point is shown in the leftmost waveform signal list
by a yellow line. If the signal will drop after signal 1, there will be
a yellow line between signal name 1 and signal name 2.

If it is desirable to not duplicate Debussy exactly, you might draw a
line in the waveform pane (or both in the waveform window and in the
signal name pane.
T.B.D.
565 When I drag a signal name from the scope tree window into the waveform
view window, I can't drop the signal unless I do so over the signal name
pane.

I should be able to drop the signal if I am over the waveform pane, too.
T.B.D.
566 In the waveform view window, I can right-click and "Save format on
waveform view"

To be consistent, I should be able to load things there, too.

I shouldn't need to go to utility to read a do file.

To be even more consistent with windows, the waveform view might have a
"file" button which lets the user save and restore the window do file.
T.B.D.
567 Debussy lets me zoom in and zoom out around the middle of the waveform
window.

Debussy lets me do "+" and "-" around the center of the waveform window,
and this is almost always what I want to do.
3.51A 3.51A implemented it. 
568 To be honest, I have never really understood the icons in the upper left
of the waveform window which manipulate the waveform pane.

I am not sure they are described in the online help file. In fact, I am
not sure they are shown correctly in the tutorial

Perhaps it would be nice if the icons put up a test message if you
hovered over them?

Debussy has "100%", "+", and "-"

From left to right, I see you have:
1) magnifying glass with "-"
2) magnifying glass with "+" and ">"
3) magnifying glass with "-" and "<"
4) magnifying glass with "+" and dangling line
5) magnifying glass with "-" and dangling line
6) magnifying glass with "+" with left and right bars
7) black pulse with "<"
8) black pulse with ">"
9) red pulse with "<"
10) red pulse with ">"

Lets see.
1) sometimes does "100%, but not always
2) zooms in, keeping left margin the same
3) zooms out, keeping left margin the same
4) zooms in around the left marker
5) zooms out around the left marker
6) zooms to between the markers
7, 8, 9, 10) move the cursors to signal edges.

7, 8, 9, 10 are fine (although not clear from the icons).
I really miss zoom in/out around the window center.
3.51A 3.51A applied it.
569 Debussy lets me zoom to a range of the waveform window by "wiping"

This means I push down a mouse button in the waveform pane, then hold it
down and move the mouse left or right.

When I let up the mouse button, the window zooms to the region where I
started and where I ended.

You might consider doing this using the "shift" button while mousing, or
by using the middle button on a 3-button mouse.

On a wheel mouse, you might let the user select a mode where the wheel
controls zoom around the window center.

Another Person Wrote:
質問なのですが、simvisonには『Ctrl+左クリック状態でマウスを左から右へ動かす』で選択範囲を表示するなどの機能があり、意外と使えます。少なくとも私は好きです。Veritakの波形ビューアにもそのような機能とかあるのでしょうか?
3.51A 3.51A applied it.
(F.A.Q.128 is also applied)
570 Debussy doesn't do this. I miss it.

Your help says I can do this, but I don't know how.

I would like to position the 2 cursors an learn the number of pulses (or
transitions) between the 2 points, end point inclusive.

It's almost like the "value" column in the signal name pane, but is a
count instead.
T.B.D.
571 Debussy lets me define signal groups. It's different than your way, so
lets not get confused by the name.

This is sort of related to you adding a "Name Line" in your waveform window.

When debussy makes one of these groups (corresponding to your Name Line
and all the following signal until the next Name Line), there is a
little icon to the left of the Name Line.

You can collapse or hide the entire group of signals by clicking on that
icon. When collapsed, only the group name shows in the waveform
window. Click again, and the signals come back at full size.

This lets one have a large set of signals defined in the .do file, but
only look at a few sets at a time.


To be different than Debussy, you might not make the signals co
completely away. Instead, each waveform might become 3 pixels high (H,
Z, L) with a 1-pixel border above and below. A bunch of signals (from
one Name Line to the next) would therefore take up little vertical space.
T.B.D.
572 When I do a $finish, it would be nice if veritak printed out which
$finish it was.

This might be a line number in a file.

You might also print out any comment on the line after the $finish;

By the way, you allow $finish (0); Is this correct?
3.51A 3.51A applied it.
573 When I do "new project" and save it, it should be auto-loaded. It
should be the active project automatically.

I shouldn't need to do "load verilog project". This is confusing to
beginners.
- Please use waveformview manager.
574 I included the attached module 2 times in a project. Both top-level,
and no other modules.

When I simulate, the waveform window and trace window shows that clk is
always 0.

I shouldn't be able to have 2 identical top-level modules with no
instance names, but if I do have them I would expect them to simulate
correctly as individual modules.

=>I will try to include 2 of the same module in the file list for VCS at work.

I think it will make a warning that I am including the file twice, and
only instantiate one at the top level. But I will see.
3.51A 3.51A applied it.
575 did not know about Ctrl + left mouse button. I did not know about F1.

My laptop does not have a wheel nor a middle button. I like to use it
without an external mouse when I am away from the docking station.

I notice that when I do F1, I can toggle through 3 modes:
1) Mag=T1
2) Mag=T2
3) Mag=Mouse.

I notice that (in the waveform browser) the 4th from the left Icon says
"Zoom In at T1 Cursor....."
when I hover over it. The 5th icon says "Zoom Out at T1 Cursor....."

These are only correct when I use F1 to get in mode 1) above.

The strings should change to indicate that the Zoom is at the T2 cursor
when I am in mode 2)

In mode 3), the wheel mouse does correctly zoom around the mouse location.

However, in a non-wheel-mouse environment, when I use the mouse to click
on Icon 4 (in mode 3), the cursor is not in the waveform pane. It can't
zoom around the mouse location.

If you would fix that case (waveform icons 4 and 5 in Mag=Mouse mode) to
zoom in and out around the location at the middle of the waveform pane,
I would be very happy.

In this case, the icon 4 should say "Zoom in around window center" or
just "zoom in"
3.51A 3.51A added CENTER mode.
576 I am running into an issue when I try to use a memeory module that I have
developed.

I get the following error when utilizing the "specparam" keyword.

The code example is:

specparam tACE = 20; // Chip Enable LOW to Data Valid.


=>The model itself is proprietary, so I cannot provide, but I can provide the
specify block that is being used. See below.

The specparam's that are used only within the specify block are not causing
the issue. Only the ones used without. I worked around it for now by
using the actual timing values in the model itself.
3.51A/T.B.D. 3.51A parses specparm, as just ignored.
577 Can you please try the following code? It looks like the 2nd $display does not
correctly print the 2nd parameter.

Thanks!

xxx

module z;

time start, finish, tmp;

initial
begin
#10;

start = $time;
#1000;
finish = $time;
tmp = $time - start;


$display("%t %t", start, finish);

$display("correct:%t error:%t", tmp, (finish-start));

$finish;
end

endmodule
3.51A 3.51A fixed it.
578 I am writing foremost to congratulate you on a superb product! Loads of
features. I was not expecting such a good simulator for so little cost. I
have demonstrated Veritak to three of my FPGA work colleagues who were also
astonished at the quality.

I have been designing FPGA's for almost two decades now using a variety of
simulation tools including Modelsim and Aldec and I thought you may
appreciate some constructive comments to enhance an already excellent piece
of software. Some of the features listed may already be implemented.

Whilst I appreciate that you probably receive a huge amount of emails of
this nature, I would also like to wish you every success in the continued
development of this product.

Yours Sincerely
xxxxx.
Digital Design Engineer.
xxxxx.co.uk

'Wish List' is as follows:-

1. Within the 'Scope' column - it would be desirable to have a 'depth'
control feature,
(global to all signals) where '0' displays the entire hierarchical path:-

FPGA_TOP_LEVEL_TESTBENCH.FPGA.CUBIC_INTERPOLATOR.MULTIPLIER1.PRODUCT

or alternatively a depth of '2' displays only

MULTIPLIER1.PRODUCT

This is useful very useful Modelsim feature.

2. In the scope tree view, in addition to the IO, wire and register displays
it would
be an enormous aid to debugging if the icon colour, reflected the state of
the signal
or port as 'X's which can ripple down through hierarchy would be easier to
find due to
poorly written testbenches or code! Even just implementing this feature at
module I/O
level would be a huge aid. If the scope tree view reflected the wire state
at the mouse
cursor within the wave window this would be fantastic!

3. An option to keep the current form layout when recompiling, as the
waveform and scope tree view
disappear. Clear the waveform though (obviously).

4. VHDL to Verilog, works extremely well! Whilst I appreciate that some
advanced text
editors are capable of indent reformatting they never seem to perform
particularly well.
Making the auto indent value user configurable at source, I feel would be a
nice feature also.

5. Analogue waveform view - please can the display be made 'thinner' in
pixel terms?

P.S. Hooray! Enum display - At last! Great for complex state machines!
T.B.D.
579 D&D拡大機能便利です。
気に入りました。
あとは何かで縮小ができれば完璧ですね。
3.51B 3.51Bで実装しました。
SHIFT+右クリックで縮小します。右ダブルクリックで2回縮小します。
580 There is a very minor typo on the web page: - Fixed!
581 Have you ever thought about what it would take to accelerate a verilog simulator
using the NVidia CUDA architecture?
- No,I haven't. Thank you for suggestions.
582 以下の記述で「不明な識別子です。」のエラーになります。

specparam tdevice_PU = 4000000;
initial
begin
#1 PoweredUp = 1'b0;
#tdevice_PU PoweredUp = 1'b1;
end
(これはあるメモリーのSimulation用ライブラリーの記述で多分他のSimulatorで動いていると思われます。)

=>ダウンロードして試しましたが同じエラーで止まっています。
3.52A 3.51Cでspecify section外のspecparmについてサポートしました。

3.52Aでspecify section内のspecparamについてサポートしました。
583 Do you see anything illegal with what I'm doing? I believe the basic structure
always @ *
begin
task_name(u_params)
end

always @ *
begin
task_name(v_params)
end
should be legal, correct?

If I put a #1; before one of the tasks, the problem is masked.

Any ideas/suggestions? Once again, I can't ship real source :(
3.52A 3.52A fixed it.
584 3.43Lの版まではシミュレーション出来るのですが、それ以後の版では無限ループに入
るのか長い時間がかかって、最後にメモリ書き換えの書き込み領域エラーで落ちてしまい
ます。
それ以後の版に変えることが出来ず、新機能を使うことが出来ずにいます。
3.52B always @* を含む大規模回路で発生します。
3.52BでFixしました。
585 waveformViewer のsignal ペインで名前のサーチが出来ると
助かります.
3.53A 3.53Aで適用しました。
586 waveformView ManagerではTopしか有りません.Bottomもあると整理が楽に
なり助かります.
waveformView Manager のポップアップメニュー内のコマンドですが,
Move Top, Move Up, Move Down がありますが, Move Bottom が有りません.
 クリックした行を好きな位置にドラッグ・ドロップ出来れば,それが一番です
3.53A 3.53Aで、D&DおよびMoveBottomを追加しました。
587 長期のシミュレーションをする時,途中からダンプを開始しないとDISK
があふれてしますので,テストベットで,ある時間にブレークポイントを入れて,そこか
らダンプ開始,中断,再開が出来ると助かります.
VeritakSV 長期の課題とさせてください。次の世代でVCDのダンプコマンド(dump on/off)ライクに制御可能にしたいと思います。
588 現在、Veitak-Basic Version 3.51C を使っています。
シミュレーション後のWaveform Viewerの信号をEnter Wildcard ダイアログで信号を検索して、Wave Nextボタンや、Wave Prev..ボタンで信号を検索しています。
検索するとWaveform ViewerのSignalは検索語を表示しますが、波形は検索する前の波形が表示されているようです。どこかをクリックするとWaveform Viewerの波形も再描画されるようで、Signal名と波形が一致します。
なにか、Wave Nextボタンや、Wave Prev..ボタンで信号を検索した後のWaveform Viewerの波形の再描画がされていないような気がします。
3.53A 3.53AでFixしました。
589 I think there is a bug in the waveform viewer concerning markers.
Once I place one or more markers in the viewer, even after I toggel
marker display OFF (click on the 'M' button), from then on, ~whenever~ I
resimulate or reload, the markers will display again -- very annoying.
3.53A 3.53AでFixしました。
590 Also, it'll be nice if the waveform viewer will remember the
Maginifcation Mode. Currently, it always reverts to Mag=T1 on
re-simulation, even when I previously switched it to Mag=Center.
3.53A 3.53AでFixしました。
591 There doesn't seem to be an easy way to add bit of a bus (bit-vector)
to the waveform-viewer. Eventually, I found a very roundabout way to do
it: I first add the bus to the viewer, then I expand the bus and I
select the bit I'm interested in, the COPY and then Insert it where I
want, and then the final step is to delete the bus from the viewer.
~However~, whenever I re-simulate, the viewer will either i. no longer
display that bit signal, or ii. it'll show it in the signal column, but
with no data, or iii. if the bus is also shown, it'll get confused and
replace the bus with the signal and no data will be shown -- very
frustrating!
3.53C. 3.53C で実装しました。
592 In Project Settings, Check "Disable display of range". Then, in the
waveform viewer, drag any bus signal to another position. After dropping
the bus in a different position, the viewer will revert to displaying
the range, despite the project setting.
3.53A 3.53AでFixしました。
593 The gridlines do not appear at intervals set using View->Grid.
e.g. 10ns = 10,000ps. But when I set "10"+"ns" in the Grid Dialog, I get
gridlines appearing every 10,000,000ps = 10us.
3.53B 3.53BでFixしました。
594 I've been having a problem - everytime I re-start Veritak and re-load a project, the main status
Window is full screen. I make it smaller, then quit, and sometimes when I re-start & re-load,
the windows are OK, sometimes it goes full screen again.

It looks like if I have the main window all the way to the left so it touches the left border of the
main Veritak window, the window gets re-sized when I re-start. If the main dialog/status window
has a small gap on the left, it restores to the proper size.
3.53B 3.53BでFixしました。
595 I set my "Gridline Color" to Green. However, note that the grid-line that is drawn is composed of green+white dashes. I think your s/w assumes that the background is white, which is not necessarily always the case. A better approach will be to use the user's configured "Background" color (in my case, black), along with the Gridline color.
3.53C 3.53CでFixしました。
596 I try to do some gate level simulations with Altera CycloneIII
components, but the result is not very good.

I did a simple 8-bit counter, but the outputs stay high-Z, and all
internal signals stay undefined. When I change the counter to be only
one bit, Veritak complains about a module not found (dffeas).

I tried the same with a first generation cyclone, and everything works
fine.

Did you do some tests already with cycloneIII?
- Please add "altera_primitives.v " to the project.
597 I think $random needs to be treated as a special case and not be optimized out. It is common to call "$random(<seed>);" by itself at the beginning of a test to initialized the pseudo-random number generator. But it doesn't work. Pls refer example below:

task test4; begin
$display("%h",$random(7)); // (workaround) works
$random(7); // should work but doesn't work!

repeat (5) begin
$display("%h", $random());
end
end endtask
-
http://groups.google.com/group/comp.lang.verilog/browse_thread/thread/116f3190b903f86e/a0ca5a30e48f6a00?lnk=gst&q=random#a0ca5a30e48f6a00

LRM2001:
The seed parameter controls the numbers that $random returns such that different seeds generate different
random streams. The seed parameter shall be either a reg, an integer, or a time variable. The seed value
should be assigned to this variable prior to calling $random.

I suspect that $random(7) is illegal since the LRM states you need to pass in a variable. (But both Modelsim/Veritak has no warning.)
598 Shift +Left Click makes clip-board copy of text on waveformview"

I don't know if the following is a bug, but the behavior I'm seeing is not exactly as you described above:
- this is not bug, but a feature.

In this feature, one selected signal is clipboard-ed. Please note the selected signal is stg2_code_coeff_shift.. which has 23. Please be sure only one item is selected in left pain, then SHIFT +LEFT button to be applied. I'll revise tutorial on next release.
599 s there some way to prevent $fwrite("%c", byte[7:0]) from outputting a
"... 0x0D 0x0A ..." whenever byte=0x0D ? I wish to write out a binary
(i.e. raw-binary, not ascii-binary) file ... just spent the last two
hours debugging a problem that was because of this unfortunate
'side-effect'.

I've tried "%c", "%C", "%0c", "%0C" -- they all do it.
- Please make sure you opened the file by binary mode not by text mode.

fi=$fopen("file","wb");
$fwrite(fi,"%c",byte);

References:

http://groups.google.com/group/comp.lang.verilog/browse_frm/thread/509805ccf704ea61/c2fffeb61fc2ae1c?lnk=gst&q=%24fwrite&rnum=1&hl=en#c2fffeb61fc2ae1c


http://groups.google.com/group/comp.lang.verilog/browse_thread/thread/817a994fab83615d/2d27ff9c25161f46?hl=en&lnk=gst&q=veritak#2d27ff9c25161f46

600 VHDLで書かれているソースががまともに動作しないのでVerilogで
シュミレーションしようと思っています。
VHDL to Verilog機能を使用していますが、変換できないのでアドバイスを
お願いします。
内部でPLLを使用しているので、unisim.vhdを指定しました。

エラーが無いのになぜ.vに変換されないのでしょうか?
- VHDL to Verilogは、サポートを中止しております。(事情に関しては、F.A.Q. 238/242をご覧ください)
601 mcron ddr2 モデル:どうもVeritakでは信号線同士の除算をサポートしていないような 3.54A Net Structure 構文でのreal 変数は3.54Aでサポートしました。
602 output [4:0] dout;
assign dout[4] = 1'b1;
assign dout[0:3] = din ? 4'hf : 4'h0;

この記述で dout[0:3]は本当はdout[3:0]なのですが
Veritakはコンパイル中に異常終了します。
syntax error とかのエラーメッセージ又はワーニングを出すようには
できないでしょうか?
3.54A 3.54Aでエラーとする処理にしました。
603 I encounter an exception when running included gate level simulation (it is located in sim/gate).

The problem starts when I include som DDR-io pads from altera (cycloneIII).

Since I can only see disassembled code in the debugger, I have no idea what is wrong.
3.54B 3.54B fixed the crash, but still has many run-time errors as follows.

SDF: no port ENA in scope test.top.the_ctrl.comb_666.altddio_bidir_component.auto_generated.ddio_outa[0].ddioreg_hi
SDF: no port D in scope test.top.the_ctrl.comb_666.altddio_bidir_component.auto_generated.ddio_outa[0].ddioreg_hi
SDF: no port ENA in scope test.top.the_ctrl.comb_666.altddio_bidir_component.auto_generated.ddio_outa[1].ddioreg_hi
....


Actually, the errors were caused by mismatch of library.
I confirmed the errors themselfs were correct, and library was changed between 7.2 and 8.1.

Please use cyclone3_atoms.v OF 8.1 to fix the run-time error if you synthesized by 8.1.
604 pro_name.vtakdisk

という名称の巨大なファイルができます。
このファイルは何でしょうか?
バックアップ等で残しておかなければならないファイルでしょうか?
そうでなければこのファイルができないように設定の仕方を教えてください。

また、シミュレーション中、添付のファイルのメッセージがでます。(..100MBを切りました。)
出ない設定方法を教えてください。
3.59A これは、波形のアーカイブです。Save/Resotore機能で使用します。機能についてはTutorial 2.4.17 をご参照ください。この機能は、通常は、使わないと思いますので、オフにしてご使用ください。オフにするには、添付のファイルダイアログのようにプロジェクト上書きまたは別な名前をつけて保存します。この際、ダイアログ中の SavetoPhysicalDiskのチェックをオフにしてSaveください。(添付図ではオンになっています。)Save後のプロジェクトをロードすると、巨大ファイルは生成されなくなります。なお、生成してしまった巨大ファイルは、(その機能を使用しなければ)不要ですので、消去して構いません。


プロジェクト中のアーカイブ容量を指定しなおしてください。MaxArchiveDiskは、Defaultで400MBになっていますが、恐らくこれが不足しています。添付の例では10GBにしています。波形を選択的にSaveする手段(tutorial 2.4.21)、あるいはVerilog標準のVCDを用いる方法等もありますので、適宜、目的に合った方法を選んでください。


=>3.59Aから不要なファイルは削除するようにしました。
605 I am running into problems with the 1G memory limit. Rather than increase
this I would like to limit waveform storage to a subset of signals, is
this possible
Oh, and happy Christmas :-)
- You can save more than 1GB. Default Setting is 400MB, but you can change
it, for example 4GB by project settings.

If you are interested in particular instanced module, please see
tutorial 2.4.21. If you are interested in particular signals, I'll
recommend to use VCD.
606 I cannot thank you enough for your work on Veritak.

It is by far the only simulator worth using. I respect
your dedication to Veritak and a more-than-fair price.
- Thank you!
607 日本語サイトと英語サイトでは
バージョンが違うようですが、日本語サイトでVER3.54Bをリリース
しない理由は何でしょうか?

- xxさま、あけましておめどうございます。本年もどうぞよろしくお願いします。


3.54Bは、海外の特定のお客様での問題をFIXするものです。特定のお客様の使い方の問題でもあり(Alteraで、古いライブラリを誤って使用してしまったときに起こる問題です。)、他のお客様では、影響はないものと考えています。
608 On the main web page, Altera is mis-spelled.
Simulation Waveforms of 400MHz DDR3 by Aletra MegaWizard Web Edition.

Thought you might like to know.
- Fixed it.
609 Before you release updates for Veritak, are there any test benches or
regression tests you run to check each release?

=>No, no problems. Because we are using the tool more regularly as part of
our design flow, I was just wondering how you manage your releases. I was
begining to wonder if we should build a test suite to verify each release
before using it. But, it sounds like your test suite will probably do just
fine for the momment and we can focus more on just using the tool in our
design work.

Thanks for the continued support and cost effective tool!
- Yes,
I run small and full regressition test for minor(ABC..) and major releases.
Small tests are attached as example.bat in Command folder.
Full regression tests are performed per major release including several IP
cores user contributed. These are internal use only since they are user's
property.

Are there any problems for the latest release?
610 I just wanted to give you my sincere thanks for creating such a
fantastic application. Not only is it very complete and very fast, it
also allows us to conveniently and easily observe waveforms not only in
binary form, but also in analog...
- Thank you!
640 一つ質問があります。
Veritakで大量のVerilogソースがあるVeritakプロジェクトを作成する場合、GUIで一つずつ追加されているのでしょうか?ファイルリストから一括でプロジェクトを作る方法があるのでしょうか。
- 「コンパイルするファイルを選択します」の画面で、Shiftまたは、Ctrlを押しながら一括で選択し、Addしていきます。

既存プロジェクトでExport ボタンを押すと、veritak_src_files.txtというテキストファイルがプロジェクトフォルダに出来ます。
これをImportすることで、ファイルの読み込みもできます。この例に倣ってテキストファイルで記述し空のプロジェクトにImportすることもできます。

TIPS:
1)
モジュール名=ファイル名のルールが保たれたフォルダについては、ライブラリフォルダの指定をするだけでOKです。

2)CUI版については、Commandフォルダのrelease_note.txtをご覧ください。

例)
s1_core でのプロジェクト例です。(ブートコードは正しくありません。プロジェクトファイルはhdl/behav/testbench)にあります。
641 遅延シミュレーションすると階層ビューアの左側ペイン(インスタンス名)の検索も欲しくなりますね。インスタンス名が沢山ありすぎてわからなくなります。 VeritakSV VeritakSV での対応になります。
Xilinx社のISEのXPowerを評価するためにVeritakでVCDを出力させながら、Place & Route後の遅延シミュレーションをしています。実装している回路はDDR SDRAMコントローラです。
その際に波形のアーカイブを保存するディスク容量がすぐに400MBを超えてしまって、リミットまで100MBを切りましたというダイアログが出てしまいます。
信号を選択的にアーカイブできるようなオプションはあるでしょうか?
- 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で、これは、サンプルに入っていたと思います。
642 今の状態でVeritakで吐いたVCDファイルの容量は380MB程度でした。これを10.1iのXPowerで読み込むと、Fatal ErrorでXPowerが落ちてしまいます。
VeriakSV XPowerには対応していません。VeritakSVでの対応を予定しています。
643 Xilinx10.1 sim_primes DCMが動かない 3.60A .3.60AでFixしました。
650 The inline parameters still show a possible improvement. If I instantiate a module like
xyz # (
.FOO (123)
) ......


but my module was defined as
module xyz # (
parameter F00 = 1 // note these are a typo - they're zeroes
).....

Veritak give me a warning "FOO could not find parameter." That's OK, (but I think it
should be an error), but if I have a lot of modules, the warning message can scroll off the
screen and I might not see it.

Could you add at status message at the end of the compile like:
2 errors, 15 warnings detected
3.54H 3.54H applied the suggestion.
651 How are things going? I hope all is well with you. Our weather is finally warming up
a little bit, spring may be coming!

Attached is a test file that may show a Veritak bug. It compiles with no error message, but the
port names for the parameters don't match. Should this be a bug?

Note the section

lm74_if_b # (
.MSTR_CLK_FREQ (100), // 100 MHz master clock
.MSTR_CLK_FREQ (6) // <<<<<<<<<---- should be SPI_CLK_FREQ
) u_lm74_if (
3.54H 3.54H fixed it.
652 xilinxmifファイルを読めずromを初期化出来ません、解決方法をご教示下さい。のCoreGenで作ったROMをシミュレーション出来ずに居ます。
- プロジェクトファイルがあるフォルダに、生成した*.mif ファイルをCOPYしてください。

Veritakは、ルートをプロジェクトフォルダしています。そのため、ファイルパスは、プロジェクトファイルパスに対する相対か、絶対パスにする必要があります。
653 I would appreciate some suggestion how to get the simulator to
retain the memory model data when setting up the project and
using waveforms. The reason I'm using display statements is that
the waveform viewer tells me the data has not been kept. This,
even though I select "retain all data" and change the memory default
to maximum when selecting project settings. The project settings do not
seem to "stick". How do I "lock in" the project settings ?
3.54H 3.54 H fixed the problem.
654 そこで、まだ決定されていないかも知れませんが
VeritakSVのリリース予定とライセンス形態はどのように
なるのかを教えていただけませんでしょうか。
- VeritakSVは、まだ予定をお話できる状態ではありません

すみません。ライセンスについても、未定です。xxさまをはじめ、お世話になっている方は、できるだけそのまま使えるようにしたいと思っていますが、まだ決定ではありません。決まっていることは、「現在MAC/CPU IDライセンスを所有している方は、そのまま使用できます。」ということだけです。
655 3.54Dにバージョンアップしたところ、動作しなくなり、困っております。
現状は下記の通りです、対処方法についてアドバイスお願いします。
- 3.54Dは、意図的にうまく動作しないようにしてあります。ブラウザのキャッシュを更新して、3.54H以降をインストールしてください。
656 The plug in does not work with the
current release of Notepad++. You get an error saying that it is not
compatible with the current version of Notepad++. I installed it on a
Windows Vista system.
DLL104 I'm afraid you are using DLL version1.02.
Current latest version is 1.03 below.

I updated the DLL to 104 for NPP5.3.

http://www.sugawara-systems.com/NppVeritakPlugin104.dll

Please use the dll for NPP5.3.
657 I have a simple question for you. When I start Veritak and load a new project,
the top dialog window shows data from a much older project. See the attached
photo. Why does it do this? And why this old, old, old project?

This is not an emergency!
3.59A 3.59A fixed it.
658 I've run into a problem which
seems like a bug. However, I cannot reproduce this bug in a small project,
only in my big project, so I'm sending you only the influential lines of
code (not the entire project).
3.55B 3.55B fixed it.
659 「ディスクの残りが100MBを切りました。シミュレーションを中止してください。」
と表示されてシミュレーションが止まってしまいます。

ところがディスクには空きが十分にあり、SWAPも十分です。
色々と設定を変えてやってみたのですが、このメッセージで止まってしまいます。

Q1:これは現在評価しているバージョン Veritak-Basic Version 3.53C build Dec.17.2008固有の問題でしょうか?
(とりあえず、Basic版でどの程度使えるのかを調べている段階です。)
また、回避策がありましたら教えてください。

Q2:Pro版は機能、規模制限はないとのことですが、Pro版でも同じメッセージがでる可能性がありますか?
- プロジェクトを構成して、プロジェクトの設定のMaxArchiveDiskが、Default400MBになっていると思いますが、その容量を増やしてください。(F.A.Q.s 545をご参照ください)

これは、Basic版/Pro版、には関係しません。また固有のVersionの問題でもありません。
660 Q1:VMWARE上のXP(2000)マシンにインストールすることは技術的に問題はありませんか?

Q2:VMWARE上のXPマシン(2000)にインストールすることはライセンス上問題ありませんか?

なお、補足ですが、同じハードウェアプロファイル(MACアドレス、CPUID)を持つ2つのVMを同時に起動すると、Windowsのライセンスに違反するのでそれは行いません。
また、起動しなければWinodwsではバックアップ扱いとなっています。
VMWAREを利用したいのは、VMごと実ハードを変えて、CPUを食う業務はは、速いマシンにVMを移動させて、
コーディングなど遅くてもいい業務はは、遅いマシンでのシミュレーションを想定しています。
実際の作業はノートPCからVMWAREコンソールで入って作業を行います。
ということで、VMWARE上のXPマシンにインストールできるのであればとても助かります。
USBネットワークカードをドングル代わりに使うのは色々とその他のセッティングに手間がかかるので、ハードウェアの移行(利用の最適化)はあまりやりたくありません。
3.59A VMWARE/VIRTUAL PCでは、動作しないようにしています。
3.59Aからオプションライセンスを附加しました。詳しくはサポートまでお問い合わせください。
661 PROでは落ちてしまいます。

Pro :3.55B Build Mar 29.2009
PRO版の方がメモリがたくさん必要になるのでしょうか?
3.59A single file で、プロジェクト設定ができないようにしました。
WaveformViewが大きいときは、Use Disk(Pro版のみ)をオンにしてみてください。
662 I think that another bug exists with the Veritak compiler - empty generate
blocks cause the compiler to crash.
3.59A 3.59A fixed it.
663 if you instantiate a module
within a generate loop having an unassigned port (I connected the ports by
position), then the program crashes.

So in the following lines of code (extracted from my project):

genvar gidx;
generate
for(gidx=0;gidx<4;gidx=gidx+1)
begin : g0
wire [1:0] dummy; // seems to be needed for generate
compilation not to crash in veritak
comp4 #(DB) c0
(d_in[gidx][0],d_in[gidx][1],d_in[gidx][2],d_in[gidx][3],d_marg_quad[gidx][`
REAL],/*dummy*/);
comp4 #(DB) c1
(d_in[0][gidx],d_in[1][gidx],d_in[2][gidx],d_in[3][gidx],d_marg_quad[gidx][`
IMAG],d_marg_quad_idx_imag[gidx]);
end
endgenerate

You must comment out dummy in c0 instantiation for Veritak not to crash. Of
course, this is not crucial for me that you solve it, because the
work-around is simple.
3.59A 3.59A fixed it.
664 I guess that my project is really big, so I can report another issue that
seems like a bug. In my project I experience that the behavior for "wire
signed" and arrays of "wire signed" is not the same; the signed-ness seems
to work to regular wires, but not to arrays, where I need to use $signed
directive in order to get appropriate sign extension.
3.59A 3.59A fixed it.
665 I noticed today that after I close Veritak, it does not delete its
temporary file *.vtakdisk
3.59A 3.59A fixed it.
666 3.59A で、コンパイルは、完了するのですが、SIMしないですぐ終了してしまいます。 3.59A 恐れ入ります。再ダウンロード、再インストールしてみてください。
667 your new version 3.59A does not work correctly under Windows XP Prof.
(German, 32Bit). Only compiling works, no zoomig out in waveform viewer
ispossible, no correct simulation, no synchronization with VeriPad (e.g.
$stop). So I have reinstalled 3.54G. This version works fine for me.

=>after deleting the old program folder and installing the new version
3.59A all works fine. Thank you for your help.
- So, Please reinstall it by OVERWRITE-ALL for older folder ,or install to another folder.
668 些細なことで恐縮ですが、気になっているのでご質問いたします。
ダウンロード画面に
「14日間の試用期間内では……」という表記と「試用期間は、16日に設定しています。」
という表記が混在しています。
当初はバージョンによって試用期間が別々に設定されているのかな?と
いう認識だったのですが、ずっと表記が変わらないので気になっていました。
前にも同じような質問をしたような・・・
14日と16日は何が違うのでしたでしょうか?
- 14日に修正しました。
669 最近会社で使用しているマシンを
CentOS+VMware player上のwindowsXPにいたしました。

その上にveritakwinを再インストールしようと、
私が2006年にベクターを通して購入した
旧ライセンスのIDを入れようとしたところ、

「パスワードが間違っています」

と出てきました。

FAQの660によると仮想マシン上では別ライセンスと
なっていますが、ある意味無敵(?)の旧ライセンスでも
VMware上ではだめなのでしょうか。
3.59A すみません。VMware上でのライセンスは、別ライセンスです。正確には、3.59Aから別ライセンスにしました。

評価版は、WEB上では、ご案内しておりません。サポートまで個別にお申し込みください。
670 xxram8Bx16.vをROMとしてXilinxツールで生成したのですが
ROMの初期コードが読み込まれていないようでVeritakのシミュレーションで
所定の出力が得られていないように見えます。

初期化コードのインクルードのパスは指定したつもりですが
何か原因があるのでしょうか?

初期化コードはxx_list.coeでxxram8Bx16.mifが生成されました。
3.59C 3.59CでFIXしました。
671 以下のような場合、elseが" 'else "でないことをエラーとして検出していません。
条件が偽の場合の構文解析(ここでは `ifdef A の `else処理部分)は、スキップしているような感じです。

`define A

`ifdef A

// 真なので評価する

`else

// 偽なので評価しない

`ifdef B
else // " 'else " が正しい
`endif

`endif

- スキップする仕様でよろしいかと思います。
Veritakの場合は、`ifdef周りはプリプロセッサで処理しており、プロジェクトを組んで、プロジェクトオプションのsave preprocess outputをオンにするとpreout.v として処理後のソースを見ることができます。
672 I hope things are going well for you. I may have found a GUI bug involving the the Radix
setting for displays and Parameters.

If I set a Radix for a signal to be a parameter, it is OK and I see the proper names on the
waveform. If I then change the source code and (I think) add or delete some other parameters,
the signal may display with the wrong parameter values, ie, the parameter strings come from the
wrong parameter statement.
VeritakSV Yes, you are right. Current Veritak needs re-setting the GUI parameter by manually if the parameter order has changed. Sorry, this should be long-term item until Veritak supports very basic subset of systemverilog which supports true enum in LRM. Current GUI binds the order of parameter of source code, not looking at the parameter itself, which causes the problem you showed.
673 It looks like Veritak allows a task to be enabled from within a function.

According to my Verilog-XL manual, this is not allowed.

Should this cause an error or warning message????
3.60B 3.60B applied it.
674 Tak,
This isn't a problem, but I throught I would just you know of it.

I have my Windows machine setup to use large fonts on the display, and this
can affect how text is displayed on some programs. These settings can be
found on a Windows machine here:

Desktop -> Properties.
Display Properties window.
Settings Tab.
Advanced Button (bottom right).
<display adapter> Properties window.
DPI setting: Large size (120 DPI).

Attached is an example of the Veritak Help/Version Information window with
this large font setting, some of the text gets cropped off.

Again, not a major problem, just thought you might like to know.
3.60B 3.60B fixed it.
675 Can I use UltraEdit to compose Verilog file? T.B.D. Currently,Veritak does not support UltraEdit.
676 Tak-san!
I cant compile attached file.
Please can you test what is wrong?
3.61A 3.61A fixed it.
677 defparamで気になった部分があったので要望です。

module dff1(....);
parameter init_dff = 1'b1;
......
endmodule

module top();
.....
defparam dff1.init_dffa = 1'b0;
dff1 dff1 (
.....);
このように下層に無いパラメーターをdefparamで指定しても
VeritakではWarningも出ません。
できればそんなパラメーターが適用できるところ無いという
エラーかワーニングを出したほうがいいのではと思いますが
いかがでしょうか?
3.61A 3.61Aで対応しました。
678 一部ファイル出力でフォーマットが反映されない現象がみられましたので、

報告致します。



実行文

$fdisplay( wr_fl, “x0=%04h x1=%04h x2=%04h x3=%04h”, x0, x1,x2, x3 );



結果

10A 80 3C 54

..



Veritakの結果をCでモデリングした出力とを単純にバイナリコンペアしたいのです
が、

データの加工が必要になってしまいます。



本来は’0’が頭にパディングされて

010A 0080 003C 0054

と出力されるはずですが(ちなみにNCVerilogではパディングされて出力されていま
す。



仕方ないので、文字列扱いでreg文で出力しましたが、こちらは0パディングされま
すが、

改行コードがUnix系と異なり、バイナリコンペアできません。


3.61B
3.61Bで修正しました。
なお、次のように0を除けば、以前のVersionでも0pad付で出力されます。
$fdisplay( wr_fl, “x0=%4h x1=%4h x2=%4h x3=%4h”, x0, x1,x2, x3 );
679 添付のファイルをシミュレーションするとクラッシュしてしまいます。
コンパイルは、問題ありませんでした。
3.63A 4KB以上のバッファをセンスするときの問題を3.63AでFixしました。
680 以前は、空白を含むフォルダーにファイルがあっても問題になっていなかったような気が
していたのですが、Veritak3.63A, notepad++5.3.1の組み合わせで、指定のファイルが
開けなくなってしまいました。
試しに、エディタの環境設定を

-n$L "$F"

にしたところ、空白を含むフォルダー内のファイルも開けました。

FAQ575以降に、関連する項目が見つけられなかったので
念のため、ご報告させていただきました。
- 空白を含むフォルダでも、ご提案通りにすると、確かに開けるようになりました。ありがとうございます。マニュアルにも追記します。
681 Vectorのダウンロードサイトでは対応OS
はWin2000とXPになっています。
御社で正式にサポートされているOSは上記2つでしょうか。

御社のWebサイトで対応OSの記載が見当たらなかったため
質問させていただきました。
記載箇所がありましたらご提示ください。
また、希望なのですができれば御社Webサイトの”Veritakとは”あたり
に記載していただければ一目瞭然かなと思います。
- WindowsXP/Windows2000/Vista(32ビット/64ビット)/Windows7(32ビット/64ビット)です。ダウンロードSECTIONの動作環境に記載しています。

ただし、Windows2000は、MSのサポートがなくなったために、近い将来サポートしなくなると思います。
682 Hi Sugawara-san,

As you're know, many digital designs work based on short (often single-cycle) control strobes. I've noticed that while the waveform viewer is very good at showing short high-going or low-going strobes at all magnifications, that same emphasis is not placed on short undefined-level strobes.

As the screenshots below show, the signals "vco_faster" and "vco_slower" have a short glitch at ~2700ns, as I zoom out, the glitch is no longer shown.
3.64A 3.64A fixed it.
683 BTW -- I think the button images on the toolbar for Push Waveform and
Push New Waveform are swapped. The tooltip for the buttons are correct,
but it seems to me that the button-image with the "+" ought to be
associated with Push NEW Waveform rather than Push (existing) Waveform.
3.65A 3.65A fixed it.
684 FAQ43 カーソルの単位ns/us/msec/sec可変に
を試しましたが、

msにすると、数値が消えます。上の、時間表示も、msの単位だけになってしまいます。
また、secにはなりませんでした。
3.66A 3.66A でFixしました。
685
Attached is a file that has produces "Internal Error EC=66". It was a cut & paste error
that caused it and it is not a major problem, but I thought you'd like to know about it.

The problem is caused by passing the parameter values on the INPUT port of the task.

3.66A 3.66A fixed it.
686 1) "null" statement generates parser error.

wire SIG_DATA ;
;
wire SIG_IN ;

generates error

<filename>(<line number>):: Parse Error.yy=syntax error

Is a null statement not allowed in the Verilog spec?


2) undefined variables used in module instantiation parameter list are not
flagged as errors.
sometimes give different size error (instantiation width is 8 bits, parent
is 1 bit).


3) Veriwell source: parser, interpreter
Parser error text handling and recovery shown and is a "classic" case of
using Bison or YACC plus Lex or Flex for parsing purposes, plus it uses
"standard" error recovery features of the parser generator. The full source
code for this Verilog simulator is found at:

http://sourceforge.net/projects/veriwell

in case you have not seen a recent release.


4) how can I save waveform setup when closing and reopening project?

5) add option to consider any variable used before it is defined as an error
or warning.

6) Blocking and non-blocking assignments within a module may not be
combined.

7) This error does not indicate which calling or caller parameter is
mismatched:

" Elaboration Process finished successfully. Code Generation Starts....
C:\current\tests.v(296)::Warning: Not consistent bit-width in parameter
list. Veritak unique function on viewer is disabled.
Generated param_list_structure..."

Could more information be displayed; even bit width values might be helpful.
T.B.D. 1) "null" statement generates parser error.

This is not allowed in Verilog 2001 LRM. In Systemverilog this rule is relaxed.

2)undefined variables used in module instantiation parameter list are not flagged as errors.

Could you produce a simple test case for reproduction of the error on my site?

3) Veriwell source: parser, interpreter


Thank you again. This should be considered in next generation.


4) how can I save waveform setup when closing and reopening project?
Please use waveform manager (tutorial 2.4.12.) In this mode, waveform format is automatically saved when closing.

5) add option to consider any variable used before it is defined as an error or warning.
Please check an Option "Floating reg/wire" in project setting.

6) Blocking and non-blocking assignments within a module may not be
>combined.
Sorry, I don't understand this. Generally speaking, synthesis and simulation is another problem..

7) This error does not indicate which calling or caller parameter is
>mismatched:
This can be neglectable for almost users. I'll delete it in next release.
687 This might seem like a strange question. I recently downloaded Veritak for
the two week evaluation period. I like it very much, but I have one problem.



The compiler status window disappeared, and I cannot figure out how to get
it back. I have tried loading various projects, including the samples that
came with the install.



I still see the document view, but the compiler status window is gone. This
makes it very difficult to find problems in the code!



Can you tell me how to get it back?
3.66A 3.66A added registory initialisation as an option menu.
688 I have a suggestion for the GUI. In the waveform signal name section, the right-click
menu has the options "Delete Selected Signals", Insert Blank Line", etc.

To move a set of signals, I need to select them, COPY them, Delete Selected Signals,
then Insert. I have 2 suggestions:
a) add a Cut Signals command
b) change the "Insert" to be called Paste Signals
This would match Windows Cut/Paste naming better and might be a slightly better
user interface.

I would also suggest possibly moving these commands to be grouped with the
Delete Selected Signals, Insert Blank Line, etc so that options related to insert/cut/paste
are all near each other.
3.66A 3.66A applied your suggestion.

BTW, it can also be done by just selecting the signals by (Shift/Ctrl+Left Mouse button) and drag& drop them to the destination. (No need COPY/Delete/Insert)
689 Veritakもできれば、ChipScopeのように階層が信号名の前に表示されて、信号名の右合わせで信号を表示できるオプションがあれば良いと思う T.B.D./3.66A 現在の信号名の列に階層名を出すオプションをプロジェクト設定に追加しました。
Shadeオプションと共用になります。
690 できれば、ChipScopeのVCDを取り込んで、時間軸をスライド表示する機能があれば、RTLと実波形を一緒の画面で信号を並べて比較できるので、便利かな、と思いました。
3.66A VCDのスタート時刻をスライドするオプションを追加しました。
691 ChipScopeから出力されたVCDをVeritakのプロジェクトに追加してやって
みたのですが、シミュレーションを開始する際に"VCD file has different
timescale (-9) from Vertak Project(-12) とウォーニングが出てしまいます。
また、シミュレーションの波形を見てもVeritakのシミュレーション波形より幅
が小さくなって、比較することが難しくなっています。
3.67A Warningは、VCDのtimescaleが1ns、RTLのtimescaleが1psであることを示しています。
(RTLのプロジェクトは、`timescale xx/1ps の記述がソース中のどこかにあるとおもいます。Sim内部は全て整数で動きます。この場合は、プロジェクトソース中の最小分解能の1psをスケールして動いています。) このWarning自体は、内部で自動補正されますが、問題は、ChiipScopeは、実駆動周波数での時刻値をVCD化したものではなく、サンプリング周期を正規化したような時刻になっていることです。(たとえば、6.6667nsが1ns という具合)そのため、RTLと表示を合わせるには、この辺をスケールする必要があります。3.67Aで、スケールの入力をオプションとしました。
692 出来ましたら階層の区切りの.を/に変えられるよう
にしていただけると、階層の視覚性が上がるのではないでしょうか?
T.B.D./3.67A Sim Engineのインパクトが大きいので、現世代では、難しいです。次世代での検討事項とします。
ChipScopeの VCDでの比較用のソートは、sort back by scope name オプションを追加しました。"." "/"は、同じものとしてソートされますのでこれをご利用いただければ、と思います。
693 ChipScopeのVCD波形とシミュレーション波形を
比較できて違っているところの色を変えられれば完璧ですね。ChipScopeの波
形、特にデータは途中でおかしな値がはいるので、そこは真っ赤(例えば赤にす
ると)だと思いますが制御信号などはどこが違っているかが一目でわかりそうです。
3.68A 3.68Aで対応しました。
694 I have a suggestion for an improvement:

A lot of people still only have a black-and-white laser-printer. When
printing, the colors that the user saves in "My Color", while it looks
nice on-screen, is often difficult to see when printed on a b/w-printer.

Would it be possible for the user to save TWO sets of color as "My
Color", one to be used for printing, and the other for display?
3.68A 3.68A applied you suggestion.
695 ->693
このWaveform Viewerの倍率ですと、文字のところの色を変えていないため、データそのものが違うか、境界
が違うかが分かりにくくなります。
3.68A 色設定ダイアログ中のforce_textout_transparentをオンにしてください。
696 某社のセルライブラリを使って、シミュレーションしたところ出力が不定になります。
調べたところ、"$recrem”に原因がある様です。

出来れば、$setupholdと同じように対応していただけると、助かります。
3.68B 3.68Bで対応しました。
670 考えてみればXilinxのglbl.vの階層や Xilinxのunisimの階
層が皆さん違うと思われます。その際にVeritakのプロジェクトをWaveform
Viewerが出ていない時点でセーブする必要がありますが、そこでプロジェクトを
セーブするとWaveform Viewerにどの信号を入れていたという情報までなくなる
ことはないでしょうか?その際に、doファイルを作ろうと思ったのですが、
Veritak 3.68Aにはその機能はなくなってしまったでしょうか?
3.69A tutorial 2.4.23.に波形フォーマット保持しながら、プロジェクト環境を移動する方法を載せました。が今まで、私がやっていた方法ですが、マニアックの色合いが濃いので、Xilinx専用として2.4.23.1のような方法を実装しました。
671 Waveform Viewrのsignalの表示を右寄せにした場合に、バスになっている信号を展開したときだけでも信号に番号が付
いていると助かります。一部だけ抜き出す時に、デフォルトの表示に戻してやっていますので、出来ましたら、番号が付いていると助かります。(バスにまと
まっている状態でも、私は今まで通りにバスの幅が表示したほうが良いと思います)
3.69B 3.69Bで対応しました。バス幅表示はプロジェクト設定でなくすこともできます。
672 I have managed to get veritak to hang. I'm guessing it is an infinite loop.
I first want to make it clear that this is a result of my RTL (actually the
result of some VHDL translated to Verilog). I've run it on ModelSim and I
get a warning about exceeding the iteration count limit. So there is
definitely a problem in my RTL. I suspect this is what is happening in
veritak also, except that perhaps veritak does not impose an iteration limit
and stop whenever that limit is exceeded.



The unpleasantness is that I can't seem to stop the simulation and be able
to look at the waveforms up to the point of the problem. So it is quite
difficult to get any idea about what is wrong. I just wanted to send you a
note about my experience using your very helpful tool.
Veritak_SV
673 2つのVCDの波形を表示して、1つの位置だけを変更
することもできますか?もしできれば、VHDLのModelSimの波形をVCD変換して、
ChipScopeの波形と比べようと思っています。
3.69C 3.69Cで対応しました。プロジェクト中の最初に定義されたほうのみ、シフト・スケールができます。
674 [2.9 プロジェクト設定] のところで、私の環境では図が邪魔して、下の文字が
読めません。 環境firefox3 文字サイズ=デフォルトです。文字サイズをいろ
いろいじってみましたがダメでした。
3.70B 3.70Bで修正しました。
675 3.69Cで、2つ以上のVCDファイルをロードするとエラーが出るときがあります。VCDファイルはModelSIM VHDLで生成したものです。 
3.71A 大規模なデザイン階層でのバグです。3.71AでFixしました。
676 バスのはずの信号が1本ずつになっているのが痛いです。面倒です 3.71A ModelSim生成のVCDの場合、wireバスは、1ビット毎に展開、定義された別信号になっています。
これは、Veritakに限らずどのViewerで見ても同じです。3.71Aでは、便利な機能を追加しました。
Tutorial2.4.1.3 をご参照ください。
677 h_addr_node[2:0]は本当はh_addr_node[10:0]です。しかし、 ChipScopeをかけるときに、
h_addr_node[2:0]以外は信号がなくなってしまいまいました。ChipScopeの波形
を最初に Waveformer Viewerに入れて、それから”比較用の信号をこの階層以下
から自動選択し追加する”を行うと、h_addr_node[10:0]全部が入ってしまいま
す。これが全部入るのは良いと思うのですが、Veritakのシミュレーションした
波形を入れるのと同様に[2:0]までを選択して、グループにしようとすると怒ら
れます。これが出来たほうが良いとは思いますが
3.71B グループ信号のグループ信号化、または、ビット・パートセレクトは、3.71Bで対応しました。
678 waveFormViewですが、時間軸方向で畳み込む事は出来ないでしょうか? Pending 実装を検討したのですが、根幹的な部分からの変更が必須となり、6週間もの作業が必要になるとの結論に達しました。残念ながら、実装することはできません。誠に申し訳ありません。

代替にはなりませんが、最近のVersionでは、VCDで波形を固めて波形全体のスライドを行い比較することができます。2行づつの比較になります。こちらですと、上下で相違点が赤で示されるので細かいタイミングの相違も一目瞭然です。
自動化できるところは、自動化してあるので、見かけほど手間はかかりません。下の手順で、お試しいただけいると幸いです。


<VCDファイルの生成>
VCDは、ご存知だと思いますが、ソース内にダンプする信号、スコープ、On/Off等をVerilogソース内で指定することになります。VCDファイルは、VerilogHDL規格の一部であり、他シミュレータと互換があります。エラーのあったときだけダンプするとか、フレキシブルにダンプできます。反面、

・SIMの途中で見ることはできない
・重い(速度的に現実的なのは、数十MB程度まで)

という側面があります。従い、信号指定/スコープ指定/ON/OFF指定で、これ以下になるようにターゲットを絞ることが必要です。プロジェクトのIFDEFで生成を切り替えするとよろしいかと思います。

//Ex.
`ifdef OUTPUT_VCD
initial begin
//VCDファイルの生成制御
//$dumpflushで、フラッシュしてください。
end

`endif

<プロジェクトに入れ込む>
http://japanese.sugawara-systems.com/tutorial/tutorial/vcd2.htm#R5

スコープ内の全信号を追加したい場合は、TREEのペインのツリーを選択し、左クリックでメニューを出して追加するのが便利です。メニュー内に波形比較の専用メニューがあるのでこれを行うと同名階層名を自動で選びだすので、ソートの手間はかかりません。

<比較>
これもTUTORIALをご参照ください。比較自体は、RTL/VCDソースを選ばないのですが、シフト/スケールできるのは、プロジェクト中、最初に定義したVCDファイルだけです。

もともとは、ChipScopeとRTL(外部VCD-RTL)の比較という意図だったのですが、

http://marsee101.blog19.fc2.com/blog-entry-1155.html

デザインの変更をチェックしたいという意味でVHDLでVCDを吐かせてVCD-VCD
比較でも使われています。

http://marsee101.blog19.fc2.com/blog-date-20090710.html
679 I may have found a Veritak bug - here is the code:


`timescale 1 ns / 10 ps


module z;

reg clk = 1'b0;
reg odd = 1'b0;

always @(posedge clk)
odd <= ~odd <= 'b0; // SYNTAX ERROR?????

initial
begin
repeat (20)
begin
#5;
clk <= ~clk;
end
$stop;
end
endmodule
>
- Actually, Modelsim does not issue SYNTAX ERROR.
I think It may be interpreted as "Less than" expression.
680 最新のveritak(3.71C)にて添付したファイルをシミュレーションしたところ Xilinx CoreGenで生成したFIFOの動作が変です。

sim_top/xx/fifoのrd信号を1'b1としていないにも関わらす、rd_data_count[8:0]
の値が(1326978000ps辺り
0x00→0x01→0x00と変化しています。

設計ミスかもしれないのですが、rd_enを立てていないので、原因が不明です。
すみませんが、ご確認願えないでしょうか?
- ModelSimと波形比較機能で、比較を行いましたが、違いは見出せませんでした。

添付は、トレースモードで内部ドライバノードを追跡解析したものですが、ユーザ入力のrd_enがアサートされていなくとも内部のRD_ENがアサートされているようです。内部的には、preloadstage1という信号がアサートされた結果ですが、その信号の持つ意味は把握していません。いずれにしても、こういう「仕様」と考えたほうがよいかもしません。
681 Xilinxで言うとUNISIMのような
論理シミュレーション用のライブラリが見つかりません。 Alteraのaltsyncram
のようなIPのVerilogライブラリはどこにあるか、ご存知でしたら、教えていた
だけないでしょうか?
3.72A C:\altera\81\quartus\eda\sim_lib
です。
この下に、
altera_mf.v
220model.v
..
があります。Xilinxと違うのは、ライブラリという概念が曖昧でVeritak上でライブラリを指定するところはありません。Xilinxの場合は、module名=ファイル名という規則が貫かれていますが、Alteraの場合は、そういうルールで書かれていません。

ですので、適宜、上記フォルダから*.v ファイルを探してソースファイルの扱いでプロジェクトに入れ込むことになります。MegaWizardで生成した場合は、上記二つのファイルを入れ込めば大抵の場合は、OKですが、sgate.v, altera_primitives.v が必要になる場合もあります。またGateSimでは、個別のデバイスファイル、例えば、cycloneii_atoms.vが必要になります。

プロジェクト編集画面で A を押すとアルテラのライブラリ指定ダイアログが出るのでこれで指定してください。
682 VSYNCが出るところまでシミュレーションをしようと思って、十数msシミュレーションすることになるので、Disk容量の関係で無理の
ようです。HSYNCが出ることころまでとしました。
3.72A プロ版でしたらSCOPEを限定してみることが可能です。

Basic版の場合、少数信号の観測&&長期SIMは、VCDをお勧めします。
例えば、プロジェクトでVCDを定義してIFDEFで切り替えるのが良いでしょう。
VCDを生成する信号は、WaveformView左ペインでCTRL+左クリックで選択します。(複数の信号も可)
次に左ペイン右クリックで、必要な信号クリップボードにコピーー>選択した信号を$dumpvarsにまとめるで、
クリップボートにコピーできるので、ソースに貼り付けます。
`ifdef VCD
$dumpvars(1,信号パス);//<−クリップボートからコピー

`endif
683 AlteraのSignalTapU生成のVCDファイルはビットの並びが逆順に
なっています。これをVeritakで逆順にする方法がありますか?
3.72A 3.72A以前では、一旦グループ化を行う必要があります。
3.72A以降は、信号を選択し(複数可)、グループ化ー>選択した信号のビットを逆順にするで、
逆になります。 なおビット幅の表示は、常に[MSB:LSB]に正規化した値になります。
684 双方向部の記述に信号強度を利用しようと考え、
 作成していますが、この記述あたりでエラーとなります。
 まだ、未完のてすとベンチですが、コンパイル少しずつ
 行って確認しており、この記述を書いた後に エラーに
 なるので、信号強度表現が問題化と思っています。
  veritakでは信号強度はサポート外なのでしょうか?
- 信号強度は、サポートしています。下記をご参照ください。

http://japanese.sugawara-systems.com/tutorial/verilog/gate.htm
685 I may have found a Veritak bug.

The line:
bad = gen_test[i].mem[0];
causes an error. If I change the "i" to be a number (as
in the line above it), it compiles OK. If I use a variable,
I get an error:
C:\tmp\z.v(27)::Error: gen_test.mem Invalid Identifier.



Here's the code:

`timescale 1 ns / 10 ps


module z;

genvar idx;

generate
for (idx=0; idx<10; idx=idx+1)
begin : gen_test
reg [31:0] mem [15 :0];
end
endgenerate


reg [31:0] good, bad;

integer i;

initial
begin

for(i=0; i<10; i=i+1)
begin
good = gen_test[0].mem[0];
bad = gen_test[i].mem[0]; // problem here with "i"
end
end

endmodule
- Actually ModelSim issues the following compile-error at

bad = gen_test[i].mem[0];

"Index value in hierarchical path is not constant."

I think LRM does not allow to be variable in generate index expression.
Please use genvar defined variable in generate [] expression;
686 First I just want to say how pleased I have been with your Veritak Simulator, thanks for the great product.

I have recently found a problem that is generating a false run time error. When you compile and simulate the attached test_case.v you will receive the following run time error:?

C:\projects\veritak_test_case\test_case.v(34)::
?index=63: object_width=32time=1000RunTime Error Attemped to Read beyond Array Index.
?
It is caused by the following assignment in line number 68:

s_out <= #Tp (tx_clk || !tip) ? data[tx_bit_pos[`SPI_CHAR_LEN_BITS-1:0]] : s_out;

This is probably because tx_bit_pos is defined as a vector of SPI_CHAR_LEN_BITS down to 0, or [6:0]. While data is defined as a 32b register, i.e. `SPI_MAX_CHAR-1 down to 0 or [31:0]. Shown below:

reg [`SPI_MAX_CHAR-1:0] data; // shift register
wire [`SPI_CHAR_LEN_BITS:0] tx_bit_pos;?? // next bit position

Then in line number 66 the data vector is indexed with tx_bit_pos which would cause the run time error if all 7 bits where used. But only bits 5:0 are used which would only index 0 to 31 and should not cause the run time error. Could you please look at what is happening in your simulator and correct if possible?

The attached code example which is causing this problem was taken from spi_flash_shift.v module from the SPI IP core project?at http://www.opencores.org/projects/spi/.

- I think nothing is wrong in this case.

fa.png shows no difference is detected between ModelSim 6.4b and Veritak.
z.vtakprj is the project enabled waveform comparison.
I added some signals to observe internal node and some description to avoid the race between ModelSim and Veritak.
687 This problem is not detected by iVerilog, which is why I prefer your product!
When will you have a Linux version available?
- Sorry, I can't say anything about it. It's far away.
Because my priority for linux became low since using VMware you can use windows software on linux easily.
688 Veritakを使ってシミュレーションを行った際、
WaveformViewerのタイムスケールをシミュレーション後に変更して
見ることはできましたでしょうか?

テストベンチの
`timescale

を変更して再シミュレーションしても良いのですが、
例えばシミュレーションは ps で行って表示しているものを、
都度「μ」 や「 ns」 に置き換えて「ざっくり」と
直感的に見たい・・・という感じです。
- タイムスケールの変更という意味ではないのですが、単位表示の変更はできます。
Waveform Viewerのタイトルバーを右ダブルクリックすると単位がトグルします。
689 I recently changed my computer
to have dual monitors. Now when I start Veritak, it resizes my windows. Attached is a
screen shot of how the windows have been re-arranged.


I've been putting Veritak on the right-hand screen, but when it starts up, it's on the left screen.
Could this have something to do with it?
3.73D 3.73D addressed to dual monitor.
700 One minor suggestion - instead of "cascade" maybe call it "stack"? "Cascade" and
"Tile" have specific meaning in Windows, I think Stack does not.
T.B.D. Thank you for English advise. I'll change it in next release.
701
A GUI suggestion.... I usually setup up my waveform windows to be exactly stacked
on top of each other, then use the WaveformView Manager to pop the desired one to the
surface. Would it be easy to add a button that to make all waveform window boundries
be exactly like the current top window?
3.73D 3.73D implemented the above. Main Menu -> Window -> Cascade Waveformviews enables this.
702 ・不具合状況
Veritak Ver3.73D を、Cドライブが暗号化されたノートPCに
インストールしました。インストールは正常に終了したのですが、
Veritakが起動しません。何のメッセージもでません。
Veritak3.54Dも同様です。
OS: WindowsXP professional Version 2002 Service Pack 2
暗号化ソフト: Pointsec AES256
暗号化したドライブにインストールするのは初めてです。
VeritakSV PointsecとVeritakで使用しているプロテクトソフトウェア(Execryptor)との相性問題と思われます。

ライセンスをお持ちで同様の症状の方は、サポートまでご連絡ください。Workaroundを施したVersionのURLをご案内します。

703 I'm porting some code from VHDL (yuck) to Verilog and I made an error that
Veritak accepted but XST rejected. I had code like:
foo = '0';
which should have been
foo = 1'b0;

Is the bad syntax actually acceptable Verilog?
T.B.D. I'll fix it in future versions.
704 WaveformViewerの波形並びを保存する方法はプロジェクト情報のSave
 以外では無いのかを確認させて下さい。

 以前はDoファイルで保存出来ましたが、使用している現在のバージョン(3.73D)
 では廃止されています。
 当方の操作ミスですが、WaveformViewerが空の状態で上書きSaveしてしまう
 事が多発しており、非常に困っております。

 不勉強で大変恐縮ですが、VCDファイルでも同様の動作(波形並びの
 バックアップ)をする事は可能なのでしょうか?
 また、難しい場合はDoファイルでの保存を復活させて頂く事は出来ません
 でしょうか?

- WaveformManagerを御使用ください。このモードを使うとSaveボタンを押す必要はありません。終了時の状態が保存されます。
このモードについては、tutorial 2.4.12 をご覧ください。


VCDファイルについてはTutorial 2.4.1.4のVCD波形とVeritak波形を一緒に表示する
をご覧ください。
705 ちょっと大きなネットリストをSimしているのですが
コンパイルで原因不明のエラーがでます。
これはどういう原因が考えられるでしょうか?

NULL FILE NAME :Error: xx_top Internal Error EC=758
NULL FILE NAME :Error: xx_top Internal Error EC=758
3.74 3.74でエラーメッセージを改善しました
706 BUGらしきものを見つけました。

assign clk = ex_mclk_p;

task IO_WR;
input[7:0] adr;
input[7:0] din;
begin
@(posedge clk) #1; ex_a = adr[1:0];
この前でclkをwireとして宣言していれば問題ないですが
wire宣言しないと@(posedge clk)に対して反応しません。
3.74 implicit NETでの問題です。3.74でFixしました。
707 I went through the tutorial easily. In the last section regarding the
VPI interface , I had an issue while trying to follow the same steps
for compliling and debugging mydll5.dll:

http://www.sugawara-systems.com/tutorial/vpi/vpi.htm#R4


1) Setup :

1-1 I am using veritak version 3.65A
1-2 running on Windows Vista.
1-3 Microsoft Visual Studio 2008
Version 9.0.30729.1 SP
Microsoft .NET Framework
Version 3.5 SP1

Installed Edition: VC Express

Microsoft Visual C++ 2008 91909-152-0000052-60047
Microsoft Visual C++ 2008



=====================================================


2) Description of problem



The compilation went ok with the below log :

1>------ Rebuild All started: Project: mydll5, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'mydll5', configuration 'Debug|Win32'
1>Compiling...
1>stdafx.cpp
1>Compiling...
1>sys_table.c
1>Compiling...
1>dllmain.cpp
1>math_vpi.cpp
1>c:\veritak\samples\vpi\vpi_source\math_vpi.cpp(816) : warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\string.h(207) : see declaration of 'strdup'
1>c:\veritak\samples\vpi\vpi_source\math_vpi.cpp(903) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(237) : see declaration of 'fopen'
1>c:\veritak\samples\vpi\vpi_source\math_vpi.cpp(916) : warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(324) : see declaration of 'sscanf'
1>c:\veritak\samples\vpi\vpi_source\math_vpi.cpp(1032) : warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(324) : see declaration of 'sscanf'
1>c:\veritak\samples\vpi\vpi_source\math_vpi.cpp(1153) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(237) : see declaration of 'fopen'
1>c:\veritak\samples\vpi\vpi_source\math_vpi.cpp(1080) : warning C4101: 'value' : unreferenced local variable
1>mydll5.cpp
1>Generating Code...
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>Linking...
1>LINK : C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\mydll5.dll not found or not built by the last incremental link; performing full link
1> Creating library C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\mydll5.lib and object C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\mydll5.exp
1>Embedding manifest...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>Build log was saved at "file://c:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\mydll5\Debug\BuildLog.htm"
1>mydll5 - 0 error(s), 6 warning(s)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========








I followed the steps to setup the debug options and commands

--F --y --C0 --M0 --w --a --ST --W "C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug" "print_nets.v" --d "mydll5.dll"


Along with the other options indicated by the tutorial.

When setting the breakpoint as in tutorial and starting the Debug run the debug execution exits
with the below prompt :

'veritak2.exe': Loaded 'C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\veritak2.exe'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\user32.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\secur32.dll'
'veritak2.exe': Loaded 'C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\vpi.dll'
'veritak2.exe': Loaded 'C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\msvcr71.dll'
'veritak2.exe': Loaded 'C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\msvcp71.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\apphelp.dll'
'veritak2.exe': Loaded 'C:\Users\User\Documents\Visual Studio 2008\Projects\mydll5\Debug\mydll5.dll', Symbols loaded.
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll'
'veritak2.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll'
'veritak2.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll'
'veritak2.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcp90d.dll'
'veritak2.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_5cdbaa5a083979cc\comctl32.dll'
The program '[3956] veritak2.exe: Native' has exited with code 0 (0x0).



I am not able to see the intermediate values of topModHandle and topModIterator as

illustrated in the tutorial.


The debug directory contains the necessary veritak2 executable and other necessary files as you
have illustrated in the tutorial. (those were copied from the veritak samples directory : see below ).

Let me know if there is something I am missing.
My understanding is

1)DLL compilation was successful using VC8 Express.
2)Veritak project-run was successful using 1) built DLL.
3)The VC8 did not stop at breakpoint.

If my understanding is wrong, please correct me.


Please try following things I can think of now.

1)associate.exe

If you move veritak2.exe to another place, please run associate.exe which should be in the same installed folder on THE folder you are debugging. (this updates the file date for secure reason.)

2)Try simpler way using VC++ "Attach" function to veritak2.exe, after loading a simple veritak project,and before pressing Run botton on veritak GUI.

Procedure
1) Make simple project using your build dll.

Mydll.png is just an example using mydll.dll on VC8 express edition on Windows7 64bit environment.

2) Load the project.
3) Set Breakpoint on VC8. (Eample shows vpi_printf..)
4) "Attach" to "veritak2.exe."
Sorry, for Japanese Environment, but you should see Debug menu and Attach the process..I assume.
5) Run the project.

You should see VC8 stops at the breakpoints.

Here is a link to screen snap shot.
708 I hope all is well with you. There is a interesting thread on comp.lang.verilog
called "Verilog-95 style question"

[a:http://groups.google.com/group/comp.lang.verilog/browse_thread/thread/538621df3ae8f5b5/bca846b1b47a377d#bca846b1b47a377d]http://groups.google.com/group/comp.lang.verilog/browse_thread/thread/538621df3ae8f5b5/bca846b1b47a377d#bca846b1b47a377d

Can you explain this or point me to a spot in a language manual that does? Or maybe comment
on it in the thread so that there is at least one intelligent comment? Veritak does what the original
poster sees.
- I've looked P1800/Draft 8(Latest release of SystemVerilog), but I could not find any explicit description regarding the issue. I hope Sharp-san
will help this issue.
709 I used Veritak a few years ago and very recently decided to start using it again. I installed the trial version on my laptop whereas
the previous version is on my old desktop.


Is my previous license still validat this point or do I need to repurchase xxxx..


I love this tool by the way. I think everyone who has worked on this has done a great job. It is the only simulator out there that a student
or hobbyist can afford. In my case I left engineering for a bit to start a business so for me this a great way to get the cobwebs out and
get up to speed coding again. Thank you!
-
710 I am using it at xxxx in my laptop, so much faster, very often, than accessing remote servers running VCS!

Look forward to learning about your roadmap for SystemVerilog if you have it.
- Sorry, I've been writing new compiler tageting Systemverilog for almost two years , but I still feel far away to support Systemverilog.

1Q.2010 : Verilog2001 with DPI Beta.
Beta release will be continued almost a year because new compiler generating native-code may have a lot of bugs.
Further detail descriptions will be announced later.

2010 4Q : Support Basic feature of SV.
2011 : OVM/VMM support w/o assertions/coverage.

So, further two years will be necessary even w/o assertions/coverage.
But my goal is that. Please understand SV is enormous language like C++, not like C.
711 実は、使用しているPCが遅くて使用に耐えられなくなってきたので、PC環境を
入れ替えて、新しくライセンスを購入しようかと考えています。
PCですが、少しでも速くしようかと思っていますが、32bit版と64bit版を比較した
場合、64bit版は速くなるであろうと思っているのですが、どのくらいの違いがある
のでしょうか?(あまり違いがないのでしたら、32bit版でいいかなと思っています)

あと、FAQにもありましたが、nVIDIAのCUDAに対応する予定があるようでしたら、
ビデオボードの購入も考えようかな、とも思っています。
VeritakSV/T.B.D. Veritakは、Native64ビットではなくWOW64上で走る32bitです。問題なく使用できますが、速くなることは、原理的になく、実際、ベンチ結果では有意な差は認められませんでした。(遅くなることもありませんでした。 波形は、既に64ビットアドレシングにしてあるのでこちらも恩恵はあまり考えられません。ただ、ユーザ空間が2GBから4GBに増えるので、非常に大規模なSIMには有利な方向です。)

SIMのマルチスレッド化については、新たなコンパイラで検討しましたが、現在のCPUではスレッドの切り替え時間がボトルネックになってしまい汎用的な思うような効果が上げられませんでした。(この辺の顛末はMIXIの方に書いてあります。)CUDAでは、HDL-SIMという整数演算を主体とするアーキテクチャに適用は難があると考えています。新しいコンパイラでも一応の実装は行っていますが、少なくともここ1,2年ではイネーブルしません。GPUとCPUが一体化するlarrabeeの動向に注目していますが、適用の可否は、この評価結果によると思います。なお、波形の圧縮展開については、イネーブルする予定ですので、それなりの効果が期待されます。その場合、2CPU よりは、4CPUが有利です。Corei7のハイパースレディングについては、事前評価結果から、特に有意な結果にはならないと思います。
712 The following simple sample module T assigns reg var OUT1 to either a 0 or
to the value of CLOCK, but it does one assignment as a blocking assignment
and another assignment as a non-blocking assignment. This is illegal by
various vendor synthesis tools and it would be nice to have an option to
flag this as a warning or error.

module T
(
input wire CLOCK
, input wire RESET
, output reg OUT1
) ;
always @(posedge CLOCK)
begin
if (RESET )
OUT1 = 0 ;
else
OUT1 <= CLOCK ;
end
endmodule // T


Also, is there any interest in releasing the Veritak interface in the future
for 3rd party modifications and preferences (even if under non-disclosure
agreement)?
VeritakSV/T.B.D Thank, I understand your suggestion fully. I'll consider this in future versions.


It means I've not received any serious bug reports..

Currently I'm working new compiler very hard.
You can see tutorial snapshot shot. (Sorry in only Japanese.)

http://japanese.sugawara-systems.com/systemverilog/SystemVerilog_Simulator.htm


Yes, in the future version above with NDA.
713 Can you please send me a copy of or a link to your Software User Agreement?
Our company purchased Veritak and I need a copy of the agreement for the
file.
- It is included in each release of the installed package.
714 DPI機能,楽しみにしています.
さらに将来のSystemVerilog, assersion, coverageのサポート,楽しみに待って
います.
VeritakSV 3月Endに現在のユーザさんのみに公開予定です。これは、β版で、1年程度、この状態が続きます。フレームワークは、SVですが、実装状態からして、DPI+2001と考えていただいた方がよろしいかと思います。
assertion/coverageまでは、考えていませんでした。(assertion/covarageなしのOVMサポートは、2012中を目標にしています。)

正直申し上げて、何年かかるか分かりませんが、検討したいと思います。
715 XilinxのCoreGenでSpartan-6用のMCBを作成し、
そのシミュレーションを行いたいと思っているのですが、
veritakで行うことは可能でしょうか?
-./VeritakSV PCI Expressもそうですが、ソースが公開されておりません。
Verilog2005のSecureIP対応のシミュレータならば可能だと思いますが、Veritakでは、SecureIP対応は、
恐らく将来的にもできません。次善の策として、シンセサイズ後の回路をデコンパイルしてシミュレーションする方式を計画中です。
716 primitiveはveritakできちんと動作するのでしょうか?
- 簡単なベンチを作成してModelSimと比較してみましたが、
違いはありませんでした。多分、インスタンス化によるのだと思います。こちらで再現できる方法はないでしょうか? 可能でしたらサポートまでお送り頂きたくお願いします。
717 3.74Aを使っていますが、波形表示で???となる現象を見つけましたのでご相談いたします。
ある信号をアナログ表示してアナログパラメータを変更したらその現象が出ます。
アナログパラメータのThicknessを”1”にすると信号名表示欄の文字が波形と同じ色になります。2以上の値ではこのような現象になりません。
Thicknessはアナログ波形の線幅を設定するものだと思っていたのですが、1にすると波形色になるのはなぜでしょうか?
3.74D 3.74Dで修正しました。
718 I am really enjoy using the Veritak simulator, it has certainly
saved me from catching mistakes too late in the design process. I am
actually using it as a key engineering tool to start my own company
and I look forward to growing my team to buy more licenses!

However, there is a current simulation that I am working on that is
getting into the "reset" state and hangs before the "clock" pulses
start. I have tried to debug the simulation with the single step mode,
but one of the challenges is that I am unable to know the value of
signals in the single step states, which is making debugging a big
challenge. Is there some way in Veritak that I can look at the signals
after each step, in particularly knowing which signals changed, i.e.
which signal in a sensitivity list caused the code section to be
called. I am currently running version 3.51A, but I reviewed ALL the
changes you have made to the latest versions and it is not clear that
updating the tool will help as none of the fixes were problems that I
was having. Can you help?


You should have a "tip jar" / donation option on your website,
because I REALLY appreciate your help with this matter! I will
certainly be buying more licenses! I also hope that this dialog has
been helpful for you in improving Veritak. I truly support the work
that you do and look forward to continuing to support you.
VeritakSV Sorry, I have not implemented such a function.

Yes, debugging structural nets(Gates/continous assignments) may be difficult in current Veritak because single step is enabled only in procedural statements, not in nets. This should be resolved in next generation (Mar.2010).

If you could send the whole project, I'll look into detail cause of the problem,ASAP.


Please see enclosed files.
The patched portions are shown by `ifdef Veritak or `ifndef Veritak.

Please note the value assign two different values which trigger another senseing always blocks in an example below. Please avoid following style.

Example:
always @* begin
value=0;//assign as initial/default value
case (xx):
xx:value=1;//0->1 trigger another block
.....

end

always @(value) begin
//same style above
end


If the always blocks are in the same module, infinate-loop should be observed even in big name simulators. However across module boudaries,
the problem will be disappeared in big name simulators. This is different behavior from current Veritak.
I recommend to use Exclusive statement using defalut, or if/else statements even after Veritak addresses the issue in future versions.

719 In September with release 3.73D we noticed the additional feature support
for dual monitor displays. We use dual displays in our environment and
we're wondering if there is any plan to allow the waveform viewer and scope
tree to be un-docked from the Veritak window. This is a feature we enjoy in
many of our other tools and it would allow much easier browsing and
displaying of some of our hierarchical signals.

A second point I've noticed is the timescale shown above the waveform viewer
always seems to be in picoseconds. Is there a way to adjust this scale so
that it reads microseconds or milliseconds?
- Thank you for suggestion. I will consider to implement the suggestion in next generation. I will update road-map early next year.

>Is there a way to adjust this scale so
>that it reads microseconds or milliseconds?

Yes, please right-double-click the title bar( mouse cursor position).
Then timescale unit should be toggled.
720 veritakのバグと思われる現象を1つ報告させていただきます。
version 3.74D です。

添付例 tmp.v のように
連接 { } の中の式の計算時に、オペランドのsigned符号拡張が必要な場合に
unsigned拡張されてしまうようです。

この現象で特に困っているわけではございません。
3.75A 3.75AでFixしました。
721 I'm having problems with one feature
in our code.

The code is 99.9% verilog but we do make use of one SystemVerilog feature:

typedef struct packed { // CIF_ram_bist_out_if
logic [BAYER_RAM_DATA_W-1:0] qb;
logic qm;
} CIF_ram_bist_out_if;

As a result your parser is failing:

Info: Parse Analysing...
C:\Documents and Settings\david\Desktop\Patent Review\Patents
2010\CMX\verilog\isaac_constants.inc(3499):: Parse Error.yy=syntax error
C:\Documents and Settings\david\Desktop\Patent Review\Patents
2010\CMX\verilog\cmx.v(14)::

Do you have plans to support this feature?
VeritakSV >typedef struct packed { // CIF_ram_bist_out_if
> logic [BAYER_RAM_DATA_W-1:0] qb;
> logic qm;
>} CIF_ram_bist_out_if;
>
needs SystemVerilog parsing. Current generation of Veritak will not support SystemVerilog. But,Next generation of Veritak will support Very basic feature of SystemVerilog, struct/typedef/DPI.. I'll plan to release it as Beta version April this year.You can check road map here.

http://www.sugawara-systems.com/faqs.htm#R4

Please note this is a plan, not commitment and is updated regularly.
722 Hope you have a good new year and I am looking forward to the updated web site! - Thank you,I hope you have a good new year too.
723 FirefoxとGoogle ChromeでWEBページが閲覧できない 1月28日にサーバー移転を行いましたが、サーバ設定に不具合がありました。1月31日に復旧しました。
なお、ブラウザのキャッシュはクリアして頂くようお願いします。
724 写真のようにWaveform Viewerの一番下の信号が表示されません。また、写真のようなメッセージがまれに表示されることもあります(再現できません。。。)。

さらに、CTRL+TABが以前(だいぶ昔)のように各ウインドウを遷移できません。あるウインドウからWaveform Viewerへの遷移は可能です。
3.76A >一番下
3.76Aで改善しました。

>メッセージ
左ペインのSCOPEの列をクリックすると信号のフルパス名、ファイル名、行NOがツールチップで表示される仕様です。表示が煩わしいときは、Disable Tool TIPで出なくなります。

>Cntrl-TAB
3.76Aで、SCOPE TREE VIEWも巡回するようにしました。
725 宣言順のソートがあるとよい 3.76A SCOPE TREE VIEWに追加しました。
726 Cyclone3のタイミングシミュレーションでパースエラーが発生する 3.76A 9.1でaltera_primitive.vの記述が変わりました。(generate statement下のUDP記述をサポートしていませんでした。)
3.76Aでサポートしました。 
727 1) A "*.vf" file is just like a normal "*.v" Verilog file. It is created
by XLINX ISE from
a Schematic Diagram file. I typically use the Schematic to
interconnect the Verilog
modules instead of a manual instantiation. So for you, the only thing
is to treat a "*.vf"
file just like a "*.v" file. Add it to the "Files of Type" list for
the "Select file for compile"
dialog. Currently all I do is change the "*.vf" to "*.v". This is not
hard if I remember to do
it after changing a schematic.

2) I don't know of another simulator that does this. You currently find
modules in a library
directory that are used by modules in the project. I was just
wondering if you could select
a file in the project directory that is the Top level module and from
it determine what other
files are needed from the same project directory just as is done when
you do a "Add Include
Dir" or "Add Lib Dir". I agree the task would be difficult except I
think you do something
similar when locating files in the "Include and Lib" directories.

3) This one is probably the one that is the most inconvenient for me.
Maybe I'm just doing something
wrong. Let's say you have a project that you are currently running.
You have many traces on
the Waveform Viewer. You then make a change to a module that requires
a new module file.
I forget to add it to the project. When I compile and run you get an
error because of the missing file.
This is normal. After you add the file to the project and re-compile
and run, all of the traces on the
Waveform Viewer you had previously are gone. I am currently running the
latest V3.75A.

4&5) What did you think about those suggestions? My favorite part of your
simulator is the Analog
Waveforms. I do mostly signal processing and use this feature all
of the time. I thought about
the details a little more. I would suggest the following
additions to the "Analog Input Parameter" dialog:

a. "Autoscale" checkbox (default enabled)
b. "Autoscale Range" radiobutton "Current View" or "Total
Simulation Time" (default Current View)
c. "Waveform Value Radix" radiobutton (Hex, unsigned Decimal,
signed Decimal, Floating Point, etc)
(default unsigned Decimal)

When "Radix - Analog xxxx" is selected, replace the Digital Trace
with an Analog Trace. When I
have an Analog Trace I have no need for the Digital Trace at the
same time. Perhaps a double-click
would toggle it between Analog and Digital using the "Waveform
Value Radix" in the "Analog Parameter"
dialog. Let the Autoscale just fill in the "a" and "b" parameters
in the "Analog Parameter" dialog. Then, if
necessary go to the "Analog Parameter" dialog to make changes.
Currently you don't save the fact that
an Analog Trace has been selected. The "Analog Parameters" appear
to be saved, but not the fact that
an Analog Trace is enabled. Please save the current view (Analog
or Digital) when project is saved.
Maybe an "Apply" button on the "Analog Parameter" dialog would be
helpful too. During an
"On the fly update" the previous "a" and "b" values could be used
until the simulation has stopped to
avoid the waveform from jumping all over the place. Then after
the simulation has stopped, just autoscale
as if you changed the "Analog Parameters" dialog for each of the
Analog Traces. When "Radix - Analog xxxx"
is selected or toggled it should autoscale as well (if enabled) to
ensure a current setting.

Once again thanks for your interest and for providing a great simulation
tool. I would be happy to Beta Test the changes
and give you feedback :-).
3.76A/T.B.D. 1) 3.76A supported your request.
2) This is to be pending item.
3) Please use waveform manager.
4) 3.76A applied your idea basically.For easier implementation,some of them are different from
your requests.
728 Cyclone3にて一部内部レジスタが動作しないようです。
試しに各種デバイスにてコンパイルしてみたところ
Cyclon2 :OK
Cyclone3:NG
Stratix2:OK
Stratix3:NG
となりました。
新しいデバイスの場合NGの用です。
OKデバイスとNGデバイスでは内部FFモジュールが異なるようです。
3.77A Altera 9.1 でのSDF FILEのバックアノテーションで不具合がありました。
3.77AでFixしました。
729
1) I don't see "*.vf" in "File Types" in the "Edit Verilog Project"
dialog.

2) When you change Radix between Analog and Digital Trace,
the "Row Lines" in "Analog Input Parameter" dialog
resets to 1 if I had a different value selected. Could
you make it restore that value just like "Thickness"?

3) Could you implement the Value Column for Analog
Trace? Without this it is hard to tell a change took place
after a re-compile. I think adding a Decimal Radix to the
"Value" column that is the same as for the Analog
Selection (signed, unsigned) would work well.

4) Once you add a "Blank Line" you cannot delete it. Same
thing for "Name Line". Also if you remove a wire or reg
from a module and you had a Trace of that wire or reg,
you can't delete that Trace. It also appears that you can't
move it either. It worked on previous version.

5) If you make a "Analog Trace" "Row Lines" anything but 1,
then if you try to Group Select Analog Traces and change the
Radix to Digital it doesn't change them correctly. They get
all mixed up. "Row Lines" of 1 works fine however.

6) Could you add the ability to Group Select Traces and set
"Analog Input Parameter" dialog for all selected? Maybe
adding a Menu Item back for "Analog Input Parameter".
Previously when you group selected Analog Traces you
cycled through dialog boxes for each trace. I would have
one dialog box apply to all selected Analog Traces. I would
also keep the double-click for individual Analog Traces,
this works well.
3.77B 3.77B fixed it.
730 1) You might want to update your Help File showing the 3.77B
"Analog Input Parameter" dialog which includes Radix. This
might be useful for others.

2) Could you explain the use of "Offset (=b) Static Dynamic"
Radio Button in the "Analog Input Parameter" dialog? Now
that I look at this more carefully, I think the ability to have
a "Auto Scale" checkbox for each parameter (a and b) would
work the best. Is this what you intended with this? I saw some
strange behavior with Auto Scale of the "b" parameter, but I
can't duplicated it. For some waveforms the "b" parameter could
be difficult to Auto Scale. This is why Manually setting "b" and
Auto Scale of "a" may be useful. Also would it be easy to add'
a "Apply" button to this dialog. This would be helpful in manual
settings to more easily adjust and see results.

3) When you group select Analog Traces and select "Analog Input
Parameter" from the Menu, then you hit "Cancel" it keeps bringing
up the "Analog Input Parameter" dialog for each that you selected.
3.77C  3.77C fixed it.
731 インスタンス化文

SystemVerilogでは、許されている様ですが、私は使っているつもりはなく



- SystemVerilogの、 インスタンス文では、インスタンス化ポートと親側のポートで同じ名前で、ビット幅が同じで同じであるときは、例えば、

.abc(abc),

のところを、単に

.abc,
のように省略することができます。ご指摘の通り、SystemVerilogでは、リーガルな構文ですが、Verilog2001上では、イリーガルな構文です。
ただし、XilinxのツールやModelSimがエラーを吐かないこともあり、(Verilog2001では、アンダーグランド仕様になりますが、) Veritakもそのようにしています。
732 -lib_dirについて -
1)Veritakのライブラリサーチは、基本的には、Verilog-XLのように動作します。-lib_dirでは、モジュール名とファイル名が一致していることが前提で、ある程度コンパイルが進んだ段階、Elaboration フェーズで、インタンスモジュールが見つからない場合に、ライブラリパスを探しに行きます。モジュール名=ファイル名を前提に、プリプロセッサ処理を行い、個別にファイルを取り込みコンパイルを行います。

2)ただし、歯車ボタンを押したときは、1)とは別に、最初に-lib_dirフォルダのなかのファイルを全部コンパイルします。歯車ボタンの左側のボタンを押したときは、1)のように動作します。
733 Veritakで新しいプロジェクトを作って、それを最初にLoadすると以下の様な
エラーメッセージBOXが表示されてから起動します。

このエラーメッセージBOXは最初の一回だけ表示して二回目以降は出ません。
とりあえずsimは問題なく動くようですが、原因はどこにあるのでしょう?

使用しているバージョンは3.74D です。

表示内容
------------------------------------------------------------
Windows02
------------------------------------------------------------
! Internal Exception EC1560 Brocken format on info-manager


・チェックしておかないとプロジェクト自体がDISKにSAVEされず、起動
する度にProjectを作らないとならない。 

という認識でした。
それは違うということでしょうか?

このチェックの目的はWAVEのDISK格納?と言うことでしょうか。
とすると”無し”で使うとするとWAVE格納がメモリを圧迫しませんか?

"SavetoPhysical Disk"はどのような使い方が正しいのでしょうか?
- プロジェクトを作成する際に、
「コンパイルするファイルを選択します」

の画面で、SavetoPhysical Disk のチェックがオンだと発生する可能性がありま
す。通常は、オフ(チェックしない)で御使用いただけますでしょうか?

Save/Restore機能のためにあります。Save/Restore機能とは、シミュレータの内部状態を保存する機能です。この機能は、Version間の互換性はありませんし、正直、あまり使い使い勝手はよくありません。(次世代では、設計を見直す予定です。)使い方の詳細は、Tutorial2.4.17をご覧ください。

チェックは、Save/Restore機能だけのためにありますので、使用されていなければ不要です。
734 以下のような内容のエラーメッセー
ジが出てしまいます。
「Memory Allocated Failure in wave_shared_file_class.」

設定等に問題があるのでしょうか。
ご教示頂けませんでしょうか。
プロジェクト設定は添付ファイルの通りです。

あと、シミュレーション結果波形を保存し、後で見ることは出来ないのでしょ
うか。
- 可能性として高いのは、Archiveの容量設定のところです。ボトムのツールバーのところで、ArchiveDiskとDispDiskがSIM進行に連れて増加していくと思います。

プロジェクトで設定する値は、これよりも大きい値にする必要があります。少し走らせてみて、消費具合を換算しながら、十分大きな値に設定してみてください。

VCDとVeritak固有の方法と二つありますが、それぞれ、得意不得意があります。

VCDの場合は、プローブポイントや、時刻、時間、信号名等、VerilogHDLの構文を使って、トリガを記述できるので、長期間のシミュレーションで、Archive容量が数GBを越える場合には、こちらでのデバッグもご検討ください。

Veritak固有の場合は、基本は、全波形SAVEですので、初期デバッグで、問題箇所を探す場合に有用かと思います。
Simulatorの状態SAVE機能をお試しください。また、SCOPEごとに観測信号を絞る場合は、こちらをご覧ください。
735 Getting close to working perfect. The Apply button
is very helpful. I noticed a few things with this dialog.

1) On the previous version the "a" and "b" parameters
updated with Auto Scale, but on this version they stay
at b=0 and a=1. Now if you turn Auto Scale OFF
then hit Apply you rescale to b=0 and a=1. The values
on the dialog should reflect the Auto Scale values.
This way you can turn OFF Auto Scale and adjust
them slightly if you want. Also after re-compile the
"a" and "b" values in the dialog are lost if manually
set.

2) After a re-compile, if you go back to this dialog the
"ListView Column Display" selection reverts back
to Hex (I selected Unsigned Dec). Also the "Row
Lines" and "Thickness" reverts back to 1. This is
for the individual Trace selection. For the Group
selection this is not needed because each trace
may be different. I think you may have said
before recalling these values is difficult for you.
Without recalling these values (for individual
selection) it makes it difficult to change just one
thing for that trace. Can you load the values for
the individually selected trace when you open
the dialog? Hopefully you can find a easy
solution to this.
3.77D 3.77D fixed it.
736 プロジェクト設定について教えてください。
各項目の詳細情報が分かる資料はありますでしょうか。
(チュートリアルは見ておりますが、分からなかったので。)
あと、Optimize1の設定でLevel2のボタンを設定することが出来ないのですが、
他の設定の絡みがあるのでしょうか。
- Tutorialがすべてです。個別にお尋ねいただけますでしょうか?

Optimize2は、廃止しました。
737 コードカバレッジ機能 VeritakSV/T.B.D. 現在は、SV用のコンパイラ(といってもサブセット)の開発に注力しています。ご存知の通り、言語仕様でアサーションやカバレッジについて
定義されていますが、とてつもなく巨大な言語であり、フルセットをここ1/2年で実装できるようなものではありません。簡易なラインカバレッジ等は、そこそこ要求もあり、実装しようかなとおぼろげに思っておりますが、現在、詳細を詰める段階にはありません。
738 ポストレイアウトの高速化 VeritakSV そのものズバリでは、ありませんが、別要件(F.A.Q. 715)で、合成後のネットリスト(FPGA Vendorライブラリ専用)は、
高速化することを計画中です。
http://japanese.sugawara-systems.com/systemverilog/benchmark_report.htm
739 OVLのシミュレーションをしようとしています。
その際に、Veritakの下のマニュアルにあるAdd Lib Ext
3.77E 3.77Eからの適用です。(Basic/Pro共)
サンプルプロジェクト(simフォルダに置いてダブルクリックしてください。)
スナップショットです。
740 Add PlusargボタンとDef Mod Topボタンはどのようなとき
に使うのでしょうか?
- Def Mod Topは、トップモジュールを強制するときに使いますが、私自身使ったことがなく、忘れてもらってよいと思います。
(VPIでCoSimulationするときに、お客様の要求で、入れたのですが、コンパイルをソースから行うVeritakでは、それ以外では、あまり意味がありません。)

AddPlusargボタンは、インストールフォルダ/regression_test/plusargに入って
いるプロジェクトplusarg_test1-5のプロジェクトとRUN結果、ソースを見比べる
と理解できると思います。

いわば、プロジェクト(主にテストベンチ)に対する引数です。
テストベンチで機能SIMを作り上げて行くと、同じテストベンチだけれでも、ちょっとづつパラメータが違うテストベンチが沢山できます。
各テストベンチは、攻めどころ/鍛えどころが違うので、機能の確認をするには欠かせません。しかし、似たようなテストベンチを沢山書くのは、スマートではありませんし、まとめて一つのベンチとした方が、ソース行数増加を防ぐごとができ、なにより管理し易くなると思います。そこで、パラメータを引数で吸収してやります。
具体的には、引数を、$value$plusargsや、 $test$plusargsで読み取ります。

最終的には、このような網羅テストをRegressionTestとしてまとめてコマンドラインで呼んで、バッチを組んで、設計変更した部分が他に悪影響を及ぼしていないかをチェックするという具合にメンテナンスを行います。(エラーがひとつでもあったらFaildとかだすようにしてお きます。これも一種のアサーションですね。)
741 発生事象:
シミュレーションの実行中、VeritakWinのウインドウ下部の
ArchiveDiskの表示が314.7MBに達すると、

Window02
ディスクの残りが100MBを切りました。シミュレーションを
中止してください。
の警告が発生します。

実際のディスク空き容量は44.7GBであり、十分な空き容量がございます。

この現象は、実行しているシミュレーションを変更しても発生しており
実行内容に依存はないようです。

使用しているバージョンならびにOSは下記のとおりです。
バージョン:veritakwin377E.exe
Version 3.77E Build Mar.10.2010

OS:Windows XP
- プロジェクトを作成してください。
作成しましたら、

1)プロジェクト設定のところで、MaxArchiveDiskのところを大きな値にしてください。添付の例では8.4GBにしています。(Defaultは、400MBです)
2)プロジェクトをSaveしてください
3)再ロードしてください。

してください。SIM進行に応じて、VeritakWinのウインドウ下部のArchiveDiskは、
大きくなりますが、1)で設定した値に近くなると警告がでますので、1)では、十分大きな値にしてください。


742 Xilinx Mig 3.3 のシミュレーションの仕方 - ModelSimのコンパイルスクリプト sim.do ファイルを手動で、Veritakのプロジェクトファイルに変換する必要があります。
  1. コンパイルスクリプトsim.do ファイルがあるフォルダ上でVeritakプロジェクトファイルを作成します。
以下は、翻訳の例です。
  1. vlog ../rtl/* => rtlフォルダにある全てのVerilogファイルをプロジェクトファイルに追加します。
  2. vlog ../sim/*.v => simフォルダにある全てのVerilogファイルをプロジェクトファイルに追加します。
  3. vlog +incdir+. +define+x2Gb +define+sg3 +define+x8 ddr2_model.v =>Add Defineを追加します。
  4. vsim -t ps -novopt +notimingchecks -L unisims_ver work.sim_tb_top glbl =>x ボタンを押してunisimをプロジェクトに追加します。
ISE11.5 MIG3.3でのプロジェクトスナップショットと、プロジェクトファイルの構成例です。

コンパイルは、歯車ボタンではなく歯車ボタンの左を押してください。そうすると必要なファイルだけライブラリから探し出してコンパイルします。歯車ボタンを押すとライブラリ全部のコンパイルになってしまうので、時間がかかります。押してしまったときは、赤いKillボタンで停止させ、やり直してください。


なお、do ファイルのプロジェクトファイルへの変換ユーティリティを6月に実装します。
743 このときWaveform Viewer左ペイン右クリックで
「波形フォーマットの保存」が表示されません.
何かの設定のせいでしょうか?
それともこの機能は削除されたのでしょうか?
-/VeritakSV 波形FORMATの保存は、昨年6月、Version3.66で廃止しました。WaveformViewManagerを使えば、その必要性は薄いと判断したためです。

VeritakSVでは、WaveformViewの内部フォーマットを一新する関係もあり、
設計時に、再考したいと思います。
744 5月の公開楽しみにしています VeritakSV お待たせして申し訳ありません。VeritakSVのβ版は、当面、α版に格下げしてのCPUID/MACADDRESS版ライセンス保持者向けの限定公開になります。今後のフレームワークであることには違いないのですが、色々な意味で未だ十分なレベルではありません。

α版のURLは、3.79E以降のヘルプに記載しています。
745 3.77Eでサポートされたアナログ波形表示の自動スケーリングに
ついて確認させて下さい.
2の補数表現のデータを“表示の選択”→“アナログ符号あり”で表示させる際に“アナログパラメータ”ウィンドウにて“Automatic Scale”をチェックする
と添付ファイルのように表示されます.これは2の補数表現の24ビットデータを,  上“Automatic Scale”をチェック  下“Automatic Scale”のチェックを消してマニュアルでパラメータを設定
で表示させたものです.“Automatic Scale”にすると“符号なし”として扱われるようですが,回避方法がありましたらお教え下さい.
3.79B 3.79Bで改善しました。
・表示の選択”→“アナログ符号ありで、符号あり表示になります。
・左ペイン信号のダブルクリックでダイアログがでますが、Signed Scaleにチェクして、Applyボタンを押しても符号付き表示になります。
746 P_RW/8の値というのはLRMとして決まっているのでしょうか?
つまり、合成後の結果とveritakでシミュレーションした結果では異なってくる可能性はありますでしょうか?

ex.P_RW=15の場合、P_RW/8=1又はP_RW/8=2のどちらになるかは決まっていますでしょうか?
- LRMで厳密に決まっており、シミュレータ・合成のいずれのVendorによらず切り捨てになります。
747 2次元を超える多次元配列で、動作がうまくいかなくなるようです。
Veritak Version 3.79B Build Apr.6.2010
-------------------------------------------------------------------


HP の OpenCores にある "Verilog で画像処理?(Version 1.74A/3.24A)" の
<fileio.ZIP> をダウンロードして <bmp_test.v> をシミュレートすると
<after_abc1.bmp>, <after_abc2.bmp>, <after_abc3.bmp>
がすべて真っ白な絵になります。
3.79D 3.79DでFixしました。
748 連続した矩形波として観測出来るのにsim_topのwireで
見ると途中波形が欠けているところがあります。
「???何かの波形描画の不具合か?」と思ってsim_top側の信号をリストから一度削除して
再度リストに挿入しましたが、波形の欠けた部分がそのまま再表示されました。

操作で一つ心当たりが。。。
シミュレーション実行中に『あ、この二つの波形も
topで見たいな。』と思ってScopeTreeViewからドラッグしたものです。シミュレーション
実行中にそのような操作はやってはいけないのでしょうか?
3.79E 3.59Eで、Sim中の波形追加を禁止にしました。
(Sim中は、Drag&Drop操作が出来ないようにしました。)
749 DRAMインターフェースの回路なのですが、DRAMをデバッグモードにしてメッセージを大量に出すとコンソール表示が間に合わないらしくシミュレーションが終わっても
延々と表示を続けています。多分表示に5倍ぐらい時間を掛けていてシミュレーション時間も2倍ぐらいに足を引っ張っているようです。
3.79F 3.79Fで改善しました。
750 Micron提供のDDR3 のモデルと,付属のテストベンチで走らない
http://www.micron.com/products/ProductDetails.html?product=products/dram/ddr3_sdram//MT41J64M16LA-187E&df=Presentation
T.B.D./VeritakSVα0.33 いくつか問題があり、ソースの修正をお願いします。

問題の種類としては、以下の3点です。

1)Veritak Internal Errorの修正

C:\Users\tak.sugawara\fa\1024Mb_ddr3\1024Mb_ddr3_orig\subtest.vh(34)::Error: Internal Error EC=558

ビット幅のあるparameterに浮動小数点入っているのを修正します。

`ifdef Veritak
parameter [31:0] REP = DQ_BITS/8;
`else
parameter [31:0] REP = DQ_BITS/8.0;
`endif

2)ビットセレクト/パートセレクトが宣言から逸脱している箇所の修正(Veritakでは、コンパイルエラーとなります。)
C:\Users\tak.sugawara\fa\1024Mb_ddr3\1024Mb_ddr3_orig\ddr3.v(1063)::Error: addr [ ]内が宣言でのレンジを超えています。
C:\Users\tak.sugawara\fa\1024Mb_ddr3\1024Mb_ddr3_orig\ddr3.v(1152)::Error: addr [ ]内が宣言でのレンジを超えています。
C:\Users\tak.sugawara\fa\1024Mb_ddr3\1024Mb_ddr3_orig\ddr3.v(1223)::Error: addr [ ]内が宣言でのレンジを超えています。
C:\Users\tak.sugawara\fa\1024Mb_ddr3\1024Mb_ddr3_orig\ddr3.v(1245)::Error: addr [ ]内が宣言でのレンジを超えています。

`ifdef Veritak
if (ADDR_BITS>13 /*&& addr[13] !== 0*/ && check_strict_mrbits) begin //addr[12:0]
`else
if (ADDR_BITS>13 && addr[13] !== 0 && check_strict_mrbits) begin
`endif

`ifdef Veritak
if (ADDR_BITS>13 /*&& addr[13] !== 0 */&& check_strict_mrbits) begin
`else
if (ADDR_BITS>13 && addr[13] !== 0 && check_strict_mrbits) begin
`endif

`ifdef Veritak
if (ADDR_BITS>13 /*&& addr[13:11] !== 0*/ && check_strict_mrbits) begin
`else
if (ADDR_BITS>13 && addr[13:11] !== 0 && check_strict_mrbits) begin
`endif

`ifdef Veritak
if (ADDR_BITS>13 /*&& addr[13:3] !== 0*/ && check_strict_mrbits) begin
`else
if (ADDR_BITS>13 && addr[13:3] !== 0 && check_strict_mrbits) begin
`endif


3)Race記述の修正
同時刻内の評価順序で、結果が異なる(シミュレータに依存)記述をRace記述といいます。以下は、現在のVeritakに対するworkaroundになります。

task read;
input [BA_BITS-1:0] bank;
input [COL_BITS-1:0] col;
input ap; //Auto Precharge
input bc; //Burst Chop
reg [ADDR_BITS-1:0] atemp [2:0];
integer i;
begin
cke <= 1'b1;
cs_n <= 1'b0;
ras_n <= 1'b1;
cas_n <= 1'b0;
we_n <= 1'b1;
ba <= bank;
atemp[0] = col & 10'h3ff; //a[ 9: 0] = COL[ 9: 0]
atemp[1] = ((col>>10) & 1'h1)<<11;//a[ 11] = COL[ 10]
atemp[2] = (col>>11)<<13; //a[ N:13] = COL[ N:11]
a <= atemp[0] | atemp[1] | atemp[2] | (ap<<10) | (bc<<12);

casex ({bc, mode_reg0[1:0]})
3'bx00, 3'b101:bl=8;
3'bx1x, 3'b001:bl=4;
endcase
`ifdef Veritak
#0;//
`endif

for (i=0; i<(bl/2 + 2); i=i+1) begin
odt_fifo[rl-wl + i] = 1'b1;
end

@(negedge ck);
`ifdef Veritak
#0;
`endif

end
endtask

以上の修正後でのRUNした結果です。
このプロジェクトでのコンパイルするファイルです。

1)については、Veritakの不具合であり、将来のリリースで修正します。
お手数をおかけして申し訳ありません。DefactのVerilogXLとの互換性向上に努めておりますが、
現世代Versionでは、上のworkaroundの適用をお願いします。
VeritakSV α0.33では、ソースの修正は必要ありません。
751 I hope all is well with you. Here is a minor Veritak problem. Note the error
message prints some garbage (the color red is mine!)

As always, many thanks!

`timescale 1 ns / 10 ps

module z;

wire [15:0] foo;
assign foo = {'b0};

endmodule

C:\tmp\z.v(5)::
Info: Parse Analysing...
Parse Analysis Finshed.
Loading vpi
Generating Scope
Evaluating parameter..
Evaluating generate...
Evaluating reg/wire...
Evaluating module...
finished with incomplete compilation
C:\tmp\z.v(10)::Error: can not evaluate ?@{?@}.
Error Detected in Elaboration Process.
3.80A 3.80A fixed a typo.
752 We have recently ported some of our code developed under Veritak to a customer running ModelSim and Synopsys DC.
Both tools reported errors on generate statements.? We had nested some generate statements, primarily to make it more readable and Veritak was happy.?
It seems it would be better for you to not allow nested generate statements and force an error
- T.B.D.
753 Xilinx mig33 ddr3のシミュレーションの仕方 - こちらをご参照ください。
754 The following is an extract

genvar i,j;

generate begin

:
wire [width:0] g [depth:0]; // Generate
wire [width:1] p [depth:0]; // Propagate (Alive)
:

for (i=0; i<depth; i=i+1) begin : row
:
if (i>=2) for (j=0; j<width+1; j=j+1) begin : BA
if (((j%4)!=3) || (j < (2**(i+1))))
/* line 137 */ assign p[i+1][j] = p[i][j];
else if (i%2 == 0) a2_nor2 u(.z(p[i+1][j]), .a(p[i][j]), .b(p[i][j-(2**i)]));
else a2_nand2 u(.z(p[i+1][j]), .a(p[i][j]), .b(p[i][j-(2**i)]));
end
:
:

The inner for loop using genvar j. Starts at zero. The assign statement is executed even though first element of p[i][j] is p[0][1] and the loop specifies p[0][0]. The code works in Veritak even with an illegal assignment but an error is signaled in Modelsim:

# ** Fatal: (vsim-3356) C:xxx_add.v(137): Index into 'net' is out of bounds.

Just thought I'd let you know!
VeritakSV VeritakSVα0.34でFixしました。
755 Virtexを使うことになってゲートレベルシミュレーションを試みています。
ISE12.1で使い方がまずいのか、生成されるSDFにはtyp値(?)しか入ってい
ないみたいで、veritakでmin/maxを指定しても遅延時間が変わりません。
このあたり、何かご存知でしたら教えて頂けませんか?
- Xilinxのツールは、昔から標準では、最大遅延値のみ記されたSDFファイルのみ生成するようです。

http://japan.xilinx.com/support/answers/4422.htm
756 I have been using the Veritak tool for compiling and running. I would
like to set up a regression using command line. Although I have been able to
use command line to run multiple tests, is there a way to fork of all these
tests in parallel, instead of running them in serial?

Thanks for the quick response. My purpose is to run, as an example, 20 or
even more tests at the same time. I have created a batch file to fire off
these 20 tests. However, I see that they run serially, one after the other.
Can these 20 tests in the batch file be fired off in parallel, so that all
of them complete at nearly the same time, instead of all of them running
serially?
Actually we are a two man team, trying to come out with a design IP as a
startup idea. We are quite heavily reliant on your simulator
- You can invoke multiple command line in prallel.
(CUI can do it. GUI cannot do it.)

So if your purpose is to run those tests quickly in multiple cpu-machines,that should be a solution by invoking from multiple Dos windows.


How about using "start" command in batch file?

Here is an example.

example_p.bat:

start /B example_p1.bat
start /B example_p2.bat


example_p1.bat :

VERITAK2 --W "..\samples" "..\samples\hello.v" >p1.txt


example_p2.bat :

VERITAK2 --W "..\samples" "..\samples\hello.v" >p2.txt
757 veritakwinを ver3.53A→ver3.80A にUPしたところ
ツールバーのアイコンが古いままになっています。
最新のツールバーアイコンに変更するにはどうしたらよいでしょうか?

チュートリアルをみてもよくわかりませんでした。

ユーティリティー→設定→Toolbar Configを変更しても
変化ありませんでした。


周りに、最近購入しインストールした者がいますが
新しいアイコンになっているようです。
3.80C
Toolbar Config.で設定しても、設定はその場では変りません。
次回Veritak起動時に作用しますので、OKを押したら
一旦Veritakを終了し再度立ち上げてください。

それでも正常に復帰しない場合は、レジストリの異常が考えられます。
以下の手順で、レジストリをリセットしてみてください。

1)3.80Cをダウンロード・インストールします
2)なんらかのプロジェクトをロードします
3)メインメニューのウィンドウ->レジストリ情報をリセット->はい
4)Veritakを一旦終了します。
5)再度Veritakを立ち上げます。
758 k2eEditorの件解決しました。

Veritakの
エディタ--エディタ環境設定で

Arguments欄に
 チュートリアルのとおりに /j$L $F と入れましたが
 ファイルパス空白を認識できませんでした。

 /j$L "$F" のようにすると正しく開きました。
 ファイル名を表す所に""が必用なみたいですね。
- 情報ありがとうございます。
チュートリアルに追記しました。
759 Tak-san -

below is some cod that *may* show a Veritak bug. Veritak handles
dve*16+offset differently from (dev<<4)+offset

What does ModelSim do? Should the << operator expand the size of
the calculation to beyond 4 bits?


`timescale 1 ns / 10 ps


module z;


reg [15:0] mem [255:0];

reg [3:0] offset, dev;






integer i;
initial
begin
$display("init memory...");
for (i=0; i<256; i=i+1)
mem[i] = i;


#5;
offset = 2;
dev = 2;
$display("good1=%h bad2=%h good3=%h",
mem[dev*16+offset], mem[(dev<<4) + offset], mem[ {dev, offset} ] );

#5;
#100;
$finish;
end

endmodule
- >What does ModelSim do?

Here is a ModelSim's result.

Case(1):original z1
run -all
# init memory...
# good1=0022 bad2=0002 good3=0022
# ** Note: $finish : C:/Users/tak.sugawara/fa/johnp/Jun72010/modulez.v(29)
# Time: 110 ps Iteration: 0 Instance: /z
# 1
# Break in Module z at C:/Users/tak.sugawara/fa/johnp/Jun72010/modulez.v line 29

>Should the << operator expand the size of
>the calculation to beyond 4 bits?

I think strict 4bits should be applied in this case.
If you declare "integer offset" instead of "reg [3:0] offset",
ModelSim showed,

Case(2) :
#good1=0022 bad2=0022 good3=0022

Verilog rule for implicit bit expansion is so complicated..
760 (1)御社のVerilogソフト(いくつかタイプがあるかと思いますが)には、回路図エ
ディタ上は付属しておりますでしょうか? それとも、テキストベースで回路をシ
ミュレーションするのでしょうか?

以下の(2)(3)の質問は、(1)の質問にて回路図エディタが付属する場合にのみ、
お答え頂ければ幸いです。

(2)要素回路(例えば論理ゲート等)について、verilog動作記述ファイルとシンボ
ルとをあらかじめ作成してセルライブラリのようなものとして用意しておき、回
路図エディタ上で要素回路のシンボルを組み合わせてより大きな全体回路を構成
し、そのあとで個々の要素回路の動作記述を呼び出して全体回路に対して
verilogシミュレーションをすることは可能なのでしょうか?

(3)回路図エディタ上でスクリプトを実行する機能はありますか? 例えば、各要
素回路がエディタ上にインスタンスとして配置されている情報(座標、回転角度、
XY軸に対する折り返しの有無等)を読み取るためのスクリプトを作成し実行する
ことはできますか?
- 回路図エディタは、付属しておりません。Veritakは、テキストベースの言語VerilogHDLで記述した回路をシミュレーションするシミュレータです。
2)については、私自身は、経験がないのですが、以下のようにすれば可能だと思います。

1)回路図Editorで回路を書く
2)回路図Editorに搭載されている機能で回路をVerilogHDLに変換する
3)VerilogHDLのテストベンチを書く
4)2)+3)をVerilogHDLシミュレータでシミュレーションする

ここで、4)が、Veritakが担当できる部分です。1)2)は、他のツールになります。
761 回路規模が大きい(ボード全体、waveformviewを100近く作り、いくつかをenableにしています)
のが影響しているかもしれませんが、10回程度実行すると、クラッシュします。 
- waveformview については、10個程度をMax想定していま したので、メモリが苦しい状態になっているのではないかと思います。

->
使用しているGUIライブラリMFCの下層からエラーで、原因が分かりませんでした。大変申し訳ありません。現象としては、DATAの有無に関係なくトータルで1000View近くにになると、このような状態になるようです。当面の回避策としては、一旦Veritakを終了することになります。
762 秀丸でステップ - 以下は、こちらので評価結果です。(秀丸8.0/Veritak3.80D)

1)Veritakメニュー->エディタ設定で、

"C:\Program Files\Hidemaru\Hidemaru.exe"
/j$L "$F"

外部エディタを起動しました。

2)秀丸の場合、
動作環境->ファイル->排他制御で、
同じファイルを二つ開くことを禁止する

にチェックすることで、動きました。しかしながら、画面のちらつきが煩わしいので、

3)ウィンドゥ、->タブモードにチェックしました。

この状態で、ゆっくりステップボタンを押す分には問題ないようですが、高速で打鍵すると、秀丸の反応が遅くなりハングする現象が見られました。これについては、秀丸側の問題と判断しております。こちらは、版も新しいので、今後のVersionアップに期待したいと思います。

なお、ツールチップ、ブレークポイント等のステップ以外の機能については、秀丸とのプロセス間通信が必要になり、マクロだけでは実現ができません。秀丸は、私もC++開発で愛着があり、できれば実現したいのですが、NotePad++のようなプラグイン開発環境が整備されていないので、難しいです。
763 Veritakでシミュレーションをしようとコンパイルをしたら、 VERITAK2.exeが落ちてしまいました。
3.80G 3.80Gで修正しました。
764 Altera 10.1 Altpllのシミュレーションが進まない 3.83A <解析>
$displayを下記のように追加しました。
for (i = 0; i <= 7; i=i+1)
begin
for (j = 0; j <= last_phase_shift[i] + 1; j=j+1) begin
vco_out[i] <= #(j) 1'b0;
end
$display("i=%d last_phase_shift[%3d]=%d j=%d",i,i,last_phase_shift[i],j);//<<追加
phase_shift[i] = 0;
last_phase_shift[i] = 0;
end

<結果、考察>
Note : Cyclone III PLL was reset
Time: 0.0 ns Instance: SDR_burst_test_tb.SDR_burst_test_inst.CamDispPLL_inst.altpll_component.pll3
i= 0 last_phase_shift[ 0]= 0 j= 2
i= 1 last_phase_shift[ 1]= 78125 j= 78127
i= 2 last_phase_shift[ 2]= 156250 j= 156252
i= 3 last_phase_shift[ 3]= 234375 j= 234377

シミュレーションは進んではいますが、非常に時間がかかっていることが原因です。

9.1SP2では、これが、
i= 0 last_phase_shift[ 0]= 0 j= 2
i= 1 last_phase_shift[ 1]= 78 j= 80
i= 2 last_phase_shift[ 2]= 156 j= 158
i= 3 last_phase_shift[ 3]= 234 j= 236
i= 4 last_phase_shift[ 4]= 312 j= 314
i= 5 last_phase_shift[ 5]= 390 j= 392
i= 6 last_phase_shift[ 6]= 468 j= 470
i= 7 last_phase_shift[ 7]= 546 j= 548

となっており、ループ数が少ないために時間がかかりません。この部分は、DLLのTAPに関係していると思われるので、どちらかというとReasonableなのは、9.1SP2の方であると思います。
実際、ここで、ModelSimでも500MB位食っており、シミュレータにとっては大きな負荷がかかっている状態です。問題は、ModelSimでは、殆ど時間を食わないのに対し、Veritakは、時間がかかることです。従って、Veritakのスケジュールアルゴリズムに問題があると言わざるをえません。(同じくRTL指向のVeritakSVでも同じく進みません。)

なにが引き金になって10.1だとこのような状態になるかは、不明ですが、多分意図した状態ではないと思います。

<Workaround>
9.1Sp1かSp2をお使いください。
=>
3.83Aで、対応しましたが、波形については、以下の問題があります。10.1のMF_cycloneiiigl_pllモジュールは、分解能が1fsで宣言されているために、
大変Diskを食います。波形を観測する場合は、Pro版では、波形選択、Basic版ではVCDで波形を観測してください。なお、VeritakSV版ではDiskは食いません。
765 現在、VeritakでVCDファイルのみ読み込んで波形観測しています。

その際、Scopeから見たい信号名をWaveFormViewerに追加した信号名を
保存するやり方が、チュートリアルを見ても良く分かりませんでした。

「2.4.10 波形フォーマットの保存」を見ましたが、
Veritak Ver3.80では、「Save format on waveform view」が見当たりませんでした。


どうすれば良いのでしょうか?
- Save format on waveform viewについては、廃止しました。

WaveformManagerを使うと特にSaveボタンを押さなくてもフォーマットは保存されるので、WaveformManagerをお使いください。WaveformManagerについては、2.4.12をご参照ください。また、2.4.1.2に、VCDのみのプロジェクトの例があります。samples/vcd/vcd_only.vtakprj をロードしてみてください。
766 I use the $system to invoke a system program and then get an input for
random number. sample code below works for Modelsim, won't work for
veritak. Is there a veritak alternative for the $system ? Thanks

`timescale 1 ns / 1 ns

module random_1;

integer FP;
integer fgetsResult;
integer sscanfResult;
integer NowInSeconds;
reg [8*10:1] str;
reg [31:0] rnd;

initial begin
// call "date" and put out time in seconds since Jan 1, 1970 (when time
began, no doubt)
// and put the results in a file called "now_in_seconds"
// for Linux
// $system("date +%s> now_in_seconds");
// for Windows requires realdate.com be in c:/windows/system32
// see http://www.huweb.hu/maques/realdate.htm#variable
$system("realdate /t> now_in_seconds");
// open the file for reading
FP = $fopen("now_in_seconds","r");
// get a string from the open file - "fgetsResult" should be a 1 - you
can test
// that for completeness if you'd like
fgetsResult = $fgets(str,FP);
// convert the string to an integer - "sscanfResult" should also be a 1, and
// you can test that, too,
sscanfResult = $sscanf(str,"%d",NowInSeconds);
// close the file...
$fclose(FP); // closes the file
// use the number as a seed...
// process::self.srandom(NowInSeconds);
// random number seed
rnd = $random(NowInSeconds) ;
$display("");
$display("str = %h",str );
$display("initial seed = %h",rnd);
$display("");
end
endmodule
- I attached a sample project using $system.

To use $system in Veritak, please define my_vpi5.dll in your project file. my_vpi5.dll is located in samples/vpi. This is DLL compiled by VC++, using by VPI. Please see 7 VPI regarding VPI.
767 添付のプロジェクト16行目のintegerとintegerの
比較でLHS側が1bit幅と認識されWarningが発生します。
使用Veritakのバージョンは3.83Aです。
3.83B 原因は、constant function (コンパイル時のfunction)での不具合です。3.83Bで、constant function 時のLINT評価を禁止することで対応しました。
768 Windows7-64ビット環境下、
COMODOの最近のアップデートでVeritakが起動不能となってしまいました。
アンチウィルス機能やファイアウォール機能をすべて無効化し、サービスを
停止させてもVeritakを起動させることができませんでした。
COMODOをアンインストールすることでやっと起動するようになりました。
VeritakSV Windows7-64ビット環境での同種問題は、現世代では、回避できません。
代替をご案内しますのでtech-supportまで、ご連絡ください。
769 ご無事でお過ごしでしょうか?
心配しております。
- ご配慮、ありがとうございます。震災で10日程ネットに接続できませんでしたが、現在はライフラインを含め復旧しており平常業務中です。沿岸部は津波で壊滅的ですが、ここ内陸部(仙台市泉区)は、道路の陥没/がけ崩れ程度でした。すべてのお客様のライセンスデータ、過去のリリースの全てのソースコード、現在開発中のソースコード等のデータもすべて無事です。

ライフライン復旧までの間、多くを考えさせられ、学びました。

Reality and unreality are always side by side.

これは、DMATで派遣された人がレポートの最後の方でおっしゃっている言葉ですが、私自身の今回の経験を通しての実感でもあります。

http://blog.goo.ne.jp/flower-wing

英語版は、
http://jkts-english.blogspot.com/
770 function動作でご相談させていただきたい症状があります。

添付のプロジェクトにおいて同じfunctionに同じ固定値を
引数とした場合、constant functionとして使用した場合と
通常のfunctionとして使用した場合の動作が異なることがあります。

症状を見るとconstant functionが正しく計算されないようです。
このconstant functionの使用方法は仕様的に誤りなのでしょうか。
3.84B 3.84Bで修正しました。
771 表記に関して、

case文内で次のように、十進数(基数/ビット幅指定なし)による分岐を行いますが、
16bit境界(65536)以上はマスクされているような動作を行います。

case (sel)
0: 式0
1: 式1
.
.
65535: 式65535
65536: 式65536 ←式0を実施
65537: 式65537 ←式1を実施
.
.
endcase

環境はVeritak 3.83B、WindowsXP(32bit)、3GB実装です。

実は、上記の数字を基数とビット長を指定して、例えば32'd65536等にすれば問題なく
動作します。ただ、散らばった過去の資産に対する変更を避けたく相談させて
頂きました。ちなみに、vcsやnc、finsimなどではOKでした。
3.84B 3.84Bで修正しました。
772 Veritak
Ver3.83B Build Jan.26.2011版

を使用させていただいておりますが1点お願いがあります。

次の例のように

----
`ifndef INC_PARAM_PATH
`define INC_PARAM_PATH "./inc/param.vh"
`endif // INC_PARAM_PATH
`include `INC_PARAM_PATH
----

includeするファイルのパス指定をdefineで指定したいのですが、
veritakではこの記述はエラーとなってしまいます。
----
Error: Macro name=include is not defined.
----

NC,VCS等で確認したところエラーにならずにincludeできますのでverilog
の文法上は問題ない記述かと思います。

この記述の用途は複数のモジュールで使用する共通のparameterやfunction等を
別ファイルで用意しておいて、ソースには手を加えずにsim時にdefineして読み
込みファイルのパスを変更するという使い方を想定しています。

上記のような記述をveritakで動作させる方法はありますでしょうか。

動作確認に使用したソースファイルのサンプルを添付いたします。

プリプロセッサ処理に依存する問題かもしれませんが、現在の版で無理
な場合は対応をご検討いただけると助かります。

=>動作確認したソースとプロジェクトファイルを添付いたします。

以下の内容で確認しましたが、(1),(3),(4)はあるべき動作にはなって
いないのではないでしょうか。
3.84C 3.84Cで修正しました。
773 veritakの最新バージョンで、generate if がうまく動作していないようでです。

下記のようにif文は真のはずですが、信号が現れません。
if文を外せば、問題ないです。

parameter SIM = 1;
generate
if(SIM == 1) begin
wire [DEPTH:0] sub = (full_o) ? 5'd16: {1'b0, wp0 - w_clk_rp0};
end
endgenerate


それと、ついでに質問させてください。
途中で、ちょっと信号名や、インスタンス名を変えると、GUIから信号を選び直さ
ないといけませんよね。
Modelsimのように選択信号の情報をテキストファイルで保存するようにできませ んで
しょうか?
T.B.D. if以下は、スコープ名が別名になっており、ImplicitScopexx以下に信号subがあ
るはずです。これを明示的にするには、例えば、
if (SIM==1) begin : if_block

とするとif_blockというスコープ名になります。(こちらはシミュレータに依存
しません。)


>
こちらは、度々、ご要望を頂いていますが、追加、変更量が大きく、今のところ
対応は難しいです。
774 普段使用している、windows7pro 64ビットの環境で

veritakで添付のような、プロジェクトを作成しようとしていますが、
add_lib_dirで ..../ise/verilog/srcまでしか指定できません、
この状態で、saveしプロジェクトをloadすると、
エラーが発生して、core_generatorで作成した
ものが、ないとのメッセージが表示されます。

何か設定もれが考えられるでしょうか?
試しに以前使用していたマシン(osはxp32ビット)
でためしたところ、 
src以下のディレクトリまで、指定できるようです。
(シミュレーションもできます。)
3.84D 3.84DでFixしました。(Windows7-64ビット固有の問題と考えています。)

なお、別な指定方法として、Xボタンを使用する方法もあります。Xボタンを使用する場合は、ISEのパスが環境変数で設定されている必要があります。(Xilinxツールのインストール時に普通は設定されるようですが、なぜか、設定されない場合もあるようです。)