0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Verilatorはまりどころ

Posted at

はじめに

Verilator 5.006においてはまって憤怒した箇所です。憤怒するたびに記述が増えます。未サポート、と書いたものは、明示的にエラーで「未サポートです」と表示されたものです。そう書いてないものは「未サポートです」とは表示されないものの、なんかうまく動かなかったものです。

functionにおいて64bitより大きい返り値は未サポート

taskでoutputを使えということらしい。class functionうっきうきで書いてたらこれのせいで冷水ぶっかけられてtaskに記述かえという寂しい作業が残りました。

再帰functionは未サポート

手がありません。試してないがtaskでも無理でしょう。もちろんautomatic指定済み。

shortrealは未サポート

realを使えと言われます。float演算おさぼりしようと思ったがこれもあって挫折。

unpackのstructは未サポート

packedにしろと言われます。unpackedの配列を動的に確保してstructに入れたかったのですが、そういうことはできないようです。それならclassで、と思ったのですが、それもなんか失敗した記憶があります。どうして失敗したのかはもう怒りのあまり忘れた...

functionのoutputの挙動がどうも怪しい

ちゃんとoutputしてくれていない気がします。taskに記述を移行しました。

unpack配列のアドレッシングに配列サイズに適したbit幅のアドレスでないと正しく読み書きできない場合がある、ような気がする

アドレッシングは32bitあれば十分やろ!がははははは!みたいなやり方は、大体においてうまく動いていたのですが、たまになんか読み書きに失敗することがあるっぽい?ので?ちゃんと配列長に合わせてアドレス幅を変えてあります。

classのメンバ変数?がクラス外から読み書きできない

型がわからん、みたいなエラーが出ます。getter/setter用意して対応しました。

stringのportをTOPに指定することができない

systemc使っている場合、なんかintに化けます。引数を設定したい場合はおとなしく\$values\$plusargsで。

おまけ:呪文

nix-shell起動呪文です。linux kernelをビルドしたりverilator+gtkwaveでverilog開発したりするときに使っています。

nix-shell -p git gcc flex bison bc ncurses openssl verilator systemc gtkwave spike dtc vim glibcLocales
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?