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予定は?



2001系RTLベンチマーク系について、評価してみました。ベンチマーク結果について報告します。

現在は、TLM2/AMSを除くSystemCとのシングルカーネル化作業が終了しマルチスレッド化GUI /SystemC Viewerの設計を行っています。こちらは、新規設計になり1ヶ月程度かかる見込みです。その後にSDF周りの実装を予定しています。

プロ版のCPUID/MACアドレスライセンスドユーザは、α版が利用可能です。URLは、3.79E以降のHelpに記載しています。(α版及び、その後のβ版は、ライセンスのロックはありません。)


    
マルチスレッドGUI +SystemC Viewer αリリース   :9月 

SVサブセットリリース   :1/End 2011
OVMサポート(w/o assertion/code coverage):2011/End


現世代とSV Versionは、併載します。(SVの内部実装は、引き続きSVフレームワーク上で進めていきます。)

 あるユーザ様が、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版をお勧めしています。


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
libra