Verilator v5.046にContributeしたお話
Verilator v5.046にContributeしたお話

Verilator v5.046にContributeしたお話

Verilator v5.046にContributeしたお話 Thought there was a way to get more information, but looks like not. Might you prepare a pull to make this the permanent (don't think need option) behavior?

Thought there was a way to get more information, but looks like not.

Might you prepare a pull to make this the permanent (don't think need option) behavior? Thanks.

該当部分を探す 見つけた! 意外と多い変更点 その他にも・・・ そしてリリース 感想

「Questa-Altera FPGA Starter Editionで始めるRTL検証」を公開しました

Verilator v5.046にContributeしたお話 Thought there was a way to get more information, but looks like not. Might you prepare a pull to make this the permanent (don't think need option) behavior?

本記事はQiitaのHardware Description Language Advent Calenderの参加記事になります。

掲題の通り、「Questa-Altera FPGA Starter Editionで始めるRTL検証」を公開しました。

経緯

きっかけとしては、Altera FPGA開発ソフトウェアであるQuartus Primeに付属するRTLシミュレータがModelSimからQuestaに変更になったことです。

GUIでは使いにくい 少数精鋭(笑)だからこそ検証は慎重に!

で、まぁなぜ筆者がまとめたかと言いますと、 「筆者の本職のFPGA開発担当が少数精鋭(笑)だから」 です。 ※「少数精鋭(笑)」・・・本来はメンバーが足りておらず行き当たりばったりなのに管理職や経営陣が認めたくなくて虚勢を張っているさま。

  1. RTLの仕様書がない(回路やシステム全体の仕様書はあるのに)
  2. RTLの事前検証の形跡がない(回路やシステムの検証はちゃんと記録・保管されるのに)
  3. RTLの事前検証なく実機ぶち込み
  4. 適切に処理されていない非同期設計のオンパレード

まぁ趣味でFPGA使って何か開発しているような人たちは少数精鋭(笑)ではなく(真の)少数精鋭だと思いますが、他に検証してくれる人がいない以上慎重に目を光らせて検証すべきであることには変わりありません。

構成 サンプルプロジェクト 表紙について

報酬については私自身相場が判然としていない部分もあるので相談させていただければと思います。 https://t.co/avsRsjwSWT

— AUDIY (@AUDIY14) November 3, 2025

引き続き報酬付きで募集していますので、「われこそは!」という方はぜひAUDIYにご連絡いただければと思います。

PDF & 紙書籍での販売について

以上、「Questa-Altera FPGA Starter Editionで始めるRTL検証」(通称Questa本)の公開報告でした。

RTLを語る会(18)に参加してきました

Verilator v5.046にContributeしたお話 Thought there was a way to get more information, but looks like not. Might you prepare a pull to make this the permanent (don't think need option) behavior?

今回のテーマについて
  1. IntelのPSG部門(旧Altera)の売却→社名が「Altera」に戻る。
  2. Sipeed製のGowin FPGAボードが異常に安く、Hobbyistの間で人気になっている

という2大イベントがあり、これを仮テーマにした会ということになります。(ちなみに、小テーマは毎回ありますが発表内容がこれに沿ったものである必要は無い、という認識です。ゆるさが良いのだ。

(さらに言えば、私の発表は「RTLを語る」内容かどうかすら怪しいです。 この会はゆるさが良いのだ。

参加人数について

そして参加者の面々が強い方々!中にはDesign Solution ForumやDVCon等で発表実績のある方々もいます。まぁ緊張しますね。

発表内容

Questa - Altera FPGA Starter Editionでアサーション検証を実践してみた、という報告です。

補足事項 Questa FSEのライセンス Verilatorで実行するアサーションについて

「Verilatorでも実行可能」と伝えましたが、現状は 同一クロックサイクル内で監視が完了するアサーションのみ実行可能」 という制限があります。

学生の特権シミュレータ 「仕様」と「アサーション」

「仕様からアサーションを書き起こしていく」という手順について話しましたが、ここで伝え損ねたことは 「仕様書の記述を盲信しない」 ということです。

そういう意味では、 「アサーションを記述する」ということは、「仕様書の内容を見直す」ということにもつながります。

SVAか、PSLか、OVLか Verylがアツいらしい
  • SystemVerilogは論理合成向け記述のベンダーの対応状況がまばら
  • 単純にVerilogに慣れている
  • でもSystemVerilogの検証機能が使えるように準備はしておきたい
翌日

秋葉原でTang Nano 4K + カメラを買いました。映像処理にも手を出してみようと思った次第です。

え?「Tang Mega 138Kシバかないのか」ですって?

最後に

オーバーサンプリングデジタルフィルタモジュール"FIR_x2"をバージョンアップしました

Verilator v5.046にContributeしたお話 Thought there was a way to get more information, but looks like not. Might you prepare a pull to make this the permanent (don't think need option) behavior?

FIR_x2について 変更内容
  1. データの取り込みや出力で非同期設計(立ち上がりで取り込み、たち下がりで出力)をなくしました
  2. カスタムFIRフィルタ係数の生成法について記載しました FIR_x2(2倍オーバーサンプリングデジタルフィルター)の係数生成サンプルを作ってみた - 電子回路わからん日記 参照
  3. 非同期リセットに対応しました
  4. サンプルプロジェクトの非同期リセット周りのケアを見直しました(リセットシンクロナイザ挿入)
動作確認済デバイス
  1. Altera Cyclone10 LP 10CL025YU256I7G
  2. Altera CycloneIV E EP4CE22F17C6N
  3. Altera MAX10 10M50DAF484C7G
  4. Efinix Trion T20F256I4
  5. AMD Artix-7 XC7A35T-1CPG236C
  6. AMD Spartan-7 XC7S25-1CSGA225C
  7. Gowin Arora GW2A-LV18PG256C8/I7

個人的にはGowinのLittleBeeシリーズへの組み込みはやってみたいです。Tang Nano 9K買って組み込んでみますかね。

今後の展望について

ラズピコでPIOをパタパタしてみる~まずはLチカ~

Verilator v5.046にContributeしたお話 Thought there was a way to get more information, but looks like not. Might you prepare a pull to make this the permanent (don't think need option) behavior?

ということで、Raspberry Pi Pico (RP2040)を使ってPIOで遊んでみました。

Programmable IOとは PIOのプログラム

で、ここからPIOならではの難しさというか奥深さに触れていくことになるのですが、なんとPIO自体のプログラムは最大32命令のアセンブリ言語(C/C++で開発する場合)になります。

とりあえずLチカさせてみる

stdio supportはRaspberry Pi Pico単体でも見ることができるように「Console over USB」にしておきます。

  1. TX FIFO上の32bitデータを出力シフトレジスタに格納
  2. スクラッチレジスタYに出力シフトレジスタ上の32bitのデータを格納
  3. スクラッチレジスタXにスクラッチレジスタYの値を代入
  4. 設定したGPIO(今回はLEDにつながるGPIO25)の論理を1に設定
  5. (ここからlp1)スクラッチレジスタXの値を1減らし、スクラッチレジスタの値が0でなければlp1冒頭に移動
  6. スクラッチレジスタXの値が0になったら再びスクラッチレジスタXにスクラッチレジスタYの値を代入
  7. 設定したGPIO(今回はLEDにつながるGPIO25)の論理を1に設定(lp1ここまで)
  8. (ここからlp2)スクラッチレジスタXの値を1減らし、スクラッチレジスタの値が0でなければlp2冒頭に移動
  9. スクラッチレジスタXの値が0になったら3番に戻る
Cプログラムを覗く いちから書いてみる

FIR_x2(2倍オーバーサンプリングデジタルフィルター)の係数生成サンプルを作ってみた

Verilator v5.046にContributeしたお話 Thought there was a way to get more information, but looks like not. Might you prepare a pull to make this the permanent (don't think need option) behavior?

その中で 「公開したのは良いけど、これ自分の設計したFIRフィルタの組み込み方法書いてないな」 ということに気づいたので、FIR_x2に組み込む形式のFIRフィルタ係数データを生成するサンプルプログラムを追加しました。

生成AIすげぇな 生成手順
  1. 浮動小数のフィルタを生成
  2. 浮動小数→整数に量子化
  3. 不足分のデータを先頭で0埋め
  4. データを16進数(2の補数)に変換
浮動小数のフィルタを生成 フィルタ係数の量子化 先頭データの0埋め 符号付き16進数への変換 awk - v width = 4 - v out = "output.data" - f dec2hex.awk input.txt

新卒入社して5年が経ったらしいので改めて感想を

Verilator v5.046にContributeしたお話 Thought there was a way to get more information, but looks like not. Might you prepare a pull to make this the permanent (don't think need option) behavior?

もう2年経ったのか 4年目開始早々組織再編 担当の設計を通じて
  1. 「こうしようと思うんですが・・・」と自信のない提案でも正しければ「よしそれでいこう!」と即決してくれて余計な時間を割かない。
  2. 他の上司から降りてくる重大な事項に対しても自分がハンドルするのに困る場合は先んじて返答する(自身の成長のためには本来コレでは良くないんですけどね・・・)
  3. これらによって回路設計や検証に業務の比重を割くことができる
とはいえ設計リーダーというものは・・・
  1. 関係部署との交渉ごとが多く回路設計等を他メンバーに割り振らないといけないことが多い
  2. 「設計リーダーでしょ?何やってるの?」「設計リーダーなのにどうして〇〇しないの?」など、 暗黙の了解で設計リーダーがやってきた仕事がされないと他部署のマネージャーが不満を爆発させてくる
  3. とりあえず会議・資料作成が増える。設計業務を遂行できている感覚が皆無

サンドバッグ 状態になるので、鋼のメンタルと鋼の体力の持ち主でもない限り身体か心のどちらかを壊します。

見違えるほど円滑に進む

コロナ禍に伴う部品の置き換え等で設計に2年半を費やした炎上案件に対し、4年目の担当案件は1年で済みました。しかも部品も好きなように選べましたから完成度も高い。

マジでコロナ許さねぇ。w

FPGA設計のヘルプ 5年目も半年

あと組織再編多すぎませんかね・・・?

次の技術者像は・・・? 転職は・・・?

私もまたメンタルやられたら考え直すことにします・・・

後輩は増えるが・・・

とりあえずは「5年」という節目で改めて書いてみましたが、次書くとしたら10年ですかね?その間に転職・リストラなどに巻き込まれていたらそれはそれで面白い記事が書けそうです。