<< 2026年02月
新着記事
最近のコメント
月別
カテゴリ
2025.10.06 08:08

interfaceと未接続信号の始末


・そんなところで、いろいろなinterfaceをmyinterfaces.svなんてファイルに全部まとめておこうとしたら、DSimは良いけどVerilatorは気に入らないらしい。
・結局全部バラバラなファイルにしないとだめなのか。1ファイル1インターフェース/1モジュールという制約か。まぁ、gitで管理する上ではその方がマージしたりなんなりでトラブルを起こしにくいとも言えるか。
・Cとかだと#includeできっちり取り込まないと文句言われるからincludeだらけになりそうだけどVerilog/SystemVerilogだといちいち`includeしなくてもいいしな。
・仕方ないのでバラしてやるけど、今度は未使用な信号(まだ接続先がないんだよ!)が気に入らないらしい。前回はトップモジュールのポートに出したけど、毎回やるのも面倒臭い。
・なにか手はないの?とお尋ねしたら--Wno-UNUSEDオプションつければ良いよということなので、やってみると確かに大丈夫。しかし波形をみたら、未使用の信号がバッサリ切り取られてしまっている。いや、動きだけは見たいんだけど・・・
・ということで更にお尋ねすると、--Wno-UNUSEDPARAMとすれば良いらしいのでやってみたら、うん、確かに未接続信号の波形も見られるようになった。よしよし。
・そしてVerilatorで-Wallにしても「使ってないparameterがあるよ」ということを言われる程度無事にパス。いいぞいいぞ。

2025.10.05 07:36

SystemVerilogコーディングステップバイステップ


・そんなこんなでスマホで国勢調査に協力しておく。昔は年収とか聞かれたような気がするけど、今はなんだかなな感じ。
・とりあえず、あれこれ下調べはできたのでザーッとSystemVerilogなソースを書きなぐってみる。
・思っていたよりストレスはないけど、テストベンチでちょっと手間取る。
sck = 1;
repeat(5) @(posedge CLK);
sck = 0;
とやって5クロック分1にするつもりなのに1クロックで戻ってしまう。いろいろ試したけど、結局
repeat(5) @(posedge CLK) begin
end
という具合にbegin〜endでくくってやるとうまくいった。
あとはverilatorだけど、こちらは相変わらずエラーの嵐。verilatorは構文チェックが厳しいな。


2025.10.04 20:44

波形表示は一体どうしたら


・GTKWaveのカーソルの挙動がおかしいのはvcdファイルサイズが大きいためではないことがわかる。
・vcdファイルが十分小さくてもカーソルを最初にクリックしたときはちゃんと指定したところに現れるけど、その後画面上の別の場所をクリックしても延々と動いてくれなくて、再描画すると移動するという具合。
・とりあえずいったんアンインストールして再インストールしてもだめ。
・原因が全くもって不明。これはVSCode上で見るしかないのか。それだとSurferの方が便利かなぁ。
・などと眺めていたら、△に!マークの注意記号。何かと思ったら「この拡張機能は、拡張機能マーケットプレースでは使用できなくなりました。」とある。ちなみにDSimにもついているし、Vaporviewにもついているというのに今頃気がついた。
・探すととりあえずVSCodeの拡張機能でWaveTraceというのがあったけど、なんだか美しくないなぁ。
・一周してvim+verilator+gtkwaveでゴニョゴニョとするしかないのだろうかなぁ。
・などと思っていたら、今までついていなかったWaveTraceにもついてしまった。ひょっとして一回「無効にする」を選ぶと(いろいろ動作を見るために無効にしたりしていた)こんなふうになるのか?と、試しにアンインストールしてから再インストールするとマークが消えた。何だこれは。
・まぁいいや、とりあえずVSCode上で波形表示環境は動いているしな。surferをイネーブルした状態にしておいて、シェル(コマンドライン)でvcdファイルのあるディレクトリで”code ."とすれば、カレントディレクトリが開いて、vcdファイルをダブルクリックで波形表示されるしな。
・さて、そんなところで、3ステートバッファのテストをDSimとVerilatorでやってみる。文法チェックの厳しさは、さすがにVerilatorで、<=と=の違いなどについても結構厳しい。
・結果はというと、DSimはちゃんとハイインピーダンスの時に”Z"になるけど、Verilatorは"0"になってしまったりするのだな。

2025.10.03 09:17

消えたKiCADとGIMPをインストール


・Ubuntu 24.04にアップデートした環境下で、ちょっとaptした後でそういえばとsudo apt autoremoveしたらkicad8のファイルが帰されているメッセージ。
・え?と思ってkicadを探したら確かに無くなっている。なんでだろうと思いながらちょっと別の用でGIMPを使おうとしたらこちらも見当たらない・・・・消えてる・・・
・どういう理由化知らないけどアップデートのときに消されたのか。
・synapticとubuntu softwareで比較すると後者の方が新しそうなので、インストールしておいてみる。
・kicadは9.0.1、GIMPは3.0.4になった。kicadの最新が9.0.5、GIMPは3.0.4みたいだからまずまず新しいものが入ったみたいだな。
・Kicadのライブラリ設定も初期化されたので、自前シンボルと自前フットプリントを設定。これで以前作った回路図とアートワークをそれぞれ開いてみたけど特に問題なく開けた模様。とりあえずこれで良いか。


2025.10.02 23:28

やっぱりトップモジュールの外部インターフェースにinterfaceは可?


・やっぱりinterfaceはトップモジュールに置きたいよねということで、「代わりになるものはないのか?」とGeminiに問い合わせ。
・すると、「いや、普通に使うし・・・」的なこと。「この前IEEEでは・・・とか言ってなかった?」というと「ごめん」と。
・でVerilatorのVersion5以降なら対応しているという話。
・うーん、また騙されたのかな?とりあえず4.038では対応していないことはわかっているけど、5では大丈夫なのかな?ちょっと試してみることにしよう。

2025.10.01 13:51

Verilator5.xならテストベンチもHDLで書けるのか


・そんなところで10月である。
・パッケージマネージャでインストールできるVerilatorが4.038。新しいのはtarしてインストールスクリプトでも動かしてできないのかなと思ったけど、ソースコードを持ってきてビルドしろということ。まぁ、やっても良いのだけどなぁと思いながら各ディストリビューションのバージョンごとのVerilatorのバージョンのリストがあった。Ubuntuだと、22.04だと4.038、24.04になると5.020という。
・としたら、24.04にアップデートすると良いのかな?ということでとりあえず今の22.04の仮想ディスクをコピー。Windowsと違ってライセンスの問題が無いから気楽で良い。これで「ソフトウェアの更新」をしたら「アップデートする?」というダイアログがでたので、やらせてみる。少々時間がかかったけど、なんとか終了。
・が、何故かアプリが全然動かない。ブラウザは平気だけど、Quartusもダメ出しパッケージマネージャすら動かない。psしてみるとプロセスは起きているのでなにかにブロックされているのかな。
・なんだかなと思いながらダメ元で再起動したら何も問題なく動くように。何だったのかよくわからないけどまぁいいか。
・あとはパッケージマネージャでアンインストールして再インストール。とりあえず4.038で動いていたものを動かしてみたらOK。
・しかし、テストベンチがC++だといろいろおまじないがいるんだなぁと思いながら検索していたら「Ver5以降はHDL(含SystemVerilog)でテストベンチが書けるようになったよ」という話を見かける。
・ならばということでお試ししてみる。
・が、そのままでは素直にいかないでWarningやらError。ただ、メッセージをよく眺めると対処方法がわかる感じ。
・とりあえず、
 ・"<=じゃないだろ”と言っていそうなところを"="にする
 ・テスト対象のファイル(”DUT”と呼ぶらしい)の頭にも"`timescale 1ns/1ps"を追加
 ・テストベンチで%5とかやっていたところで” /* verilator lint_off WIDTHTRUNC */を付けろ”と言っていたので、テストベンチの中に(このままコメントとして)追加。
 という3点を変更。
・これで
  verilator -Wall --trace --binary counter.v tb.v
 なんて具合にすれば実行ファイルがobj_dirディレクトリ(デフォルトで勝手に作られる)の下にできる。
  verilator -Wall --trace --binary counter.v tb.v -o ../test
 という具合に-oオプションをつけてみたら、カレントディレクトリと同じところにtestという実行ファイルができる。
・あとは、この実行ファイルを実行してやれば(IcarusVerilogのときのvvpみたいなものか)テストベンチの中に書いた$dumpfileで指定したvcdファイルが生成される。これをgtkwaveなりtwinwaveで表示すれば良い。
・そうなるとVSCodeと連携させてみたくもなるかな。まぁ、とりあえずVSCodeをVerilog対応させておこう。「Masahiro Hiramori」さん作成の「Verilog-HDL/SystemVerilog/Bluespec SystemVerilog」プラグインを入れておく。キーワード類が色分けされたり入力時に自動的にいろいろ補完されたりといろいろ便利そうだ。
・で、これのコンフィグレーションメニューを見ていたらVerilatorを使った構文チェック(linter)もできるようだ。単に降りて行ってプルダウンメニューからVerilatorを選ぶだけ。これで試しにSystemVerilogなソースを読ませて、わざとミスを作ってセーブするとエラー箇所に波線が引かれてマウスカーソルを当てるとどういうエラーなのか教えてくれる。いいじゃないかいいじゃないか。
・ということでDSimとVerilatorを比較してみたりしていたら、値が不定のときにDSimは”X"になってくれるけど、Verilatorでは0になっていたりする。このあたり、要注意だな。

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のエラー消滅。

2025.09.29 17:08

DSimのオプション

・そんなこんなで、VSCode上でDSimを使ってみている。
・シミュレーションのオプションで、前はーLオプションでテストベンチのトップモジュール名を指定するということだったのだけど、
-top work.tbench +acc+b -waves testsv.vcd
てな具合にーLオプションを外していても出てきたVCDファイルは同じだった。



2025.09.28 09:07

汎用人型・・・


・汎用人型ロボットの開発を支援するという。出所は経産省などでもなく「内閣府」。いわゆる「ムーンショット計画」の一つらしい。
・遅い・・・とは思うけど遅すぎるということはない。
・人口減少に伴う人で不足を移民で補うのではなく、技術革新で乗り切るというのはとりあえず正しい方向ではある。
・ついでにいえば、米づくりなどで「小規模が多いから集約・機械化はできない」と言っているけど、そちらも機械の側が対応するようにしていく手もある。
・「無理だ、不可能だ」「できるわけがない」という言葉は昔からいろいろな分野で聞いてきたけど、本当にできなかったものは(理論的に絶対無理な永久機関の・ようなもの以外)さほど無い。
・ところで汎用人型・・・と聞くと「決戦兵器」が後に続くのではないかと思ってしまうエヴァ世代だったりするけど、そちら方面が頭の中に無いと言えば嘘になるだろうな。もちろん「巨大」ではない。実際犬型のロボットはウクライナで活動しているようだし。
・などと書いていて様々な巨大ロボットたちが土木工事をしている姿をふと想像してしまったりするのだった。散らかしたら片付ける、壊したら直す・・・だな。

2025.09.27 20:38

2000円代のFPGAボードか


・タイミング制約のやりかたがわかってきたのでやってみたらホールド時間で文句を言われてしまった。これはどうやって制約決めるのかな。
・なんとなくFPGAボードを検索していたら、6000LEクラスのCycloneを使ったボードがAmazonで2300円程度であった。1LE=12ゲートとすると7万2千ゲートというところか。
・ちょっと食指が動きそうになるな。