2025年09月
新着記事
最近のコメント
月別
カテゴリ
2025.09.30 17:30

Verilatorをお試し(まずはlint-only)


・いろいろやっていくと、DSimの甘さが気になってきた。存在しない信号に接続してもだんまりというのが一番大きい。
・更に、これは自分の問題かもしれないけど、ハンドシェークを書いていて相手からのACKを受けたポートを内部信号にalways_combで非同期で取り込んでいるはずなのに1クロックディレイがある。この1クロック分というのがステートマシンの動作クロックで、確かにこの中でACKを見ているけど、そのせいでラッチが生成されるのだろうかな。
・ということで、他のシミュレーション環境は?と思っていてVerilatorに手を出してみることにした。
・VerilatorはVerilogからC++やSystemCに変換してシミュレーションするという代物。今までIcarusで別段不自由無いくらいだったけど良い機会だから試してみよう。
・インストールはSynapticパッケージマネージャを開いたらVersion4.038があったからとりあえずこれで良いかな。
・サラッと終わったので、今までDSimしていたもので
 verrrilator -lint-only testsv.sv
 てな具合でlintしてみたら、いきなり
 Unsupported: Interfaced port on top level module
 と叱られた。トップモジュールでinterfaceを使うのはご法度なのか。
・ということでGeminiに問い合わせ(最近依存しているな)てみると、IEEE 1800-2017などを厳密に解釈するとinterfaceは「どこかとつながっている」ことを前提とした仕様だというお話。なるほどね。なんとなくすっきりした。
・ということで、一枚皮をかぶせることに。今までのトップモジュールを下位に追いやって、テストベンチで接続していたinterfaceをトップモジュールで接続。どうせ下位モジュールの信号も全部見られるのだからこれで問題ない。
・ということで書き換えてみたらverilatorのエラー消滅。

この記事へのコメント
コメントを書く
名前

タイトル

ホームページ

コメント

パスワード(削除用)
クッキー