Altifigence Academy

35 / 37 · 概念

コンパイル・lint・合成:診断が示す範囲

ソース一覧・top・言語モードを固定し、構文・幅・ラッチと機能検証を区別します。

ツールへ何を検査させたか固定します

ソース一覧・top・パラメータ・言語モード・バージョンが結果の前提です。DUTと依存関係をコンパイルし、テストベンチを別のシミュレーションtopにします。クロック生成器を合成したり未インスタンス化モジュールを検査対象と誤認したりしないでください。本教材は実用的な合成可能SystemVerilog部分集合です。.sv拡張子だけで全機能対応を仮定せず、実際のfront endと診断を確認します。

コンパイルとシミュレーションの範囲

コンパイルは構文・欠落モジュール・不正参照を拒否できますが算術やreset優先順位を証明しません。テストベンチのPASSはそのソース・ツール・シナリオでの比較を支えます。

text
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvp

両方の終了状態を記録します。コンパイル失敗後に古いsim.vvpを動かすと誤解を招くPASSになります。設定ごとに新規出力を作り、コンパイル失敗時は止めます。

原因ごとに診断を確認します

診断確認事項
欠落モジュール定義ファイルと名前は正しいか
幅切捨て失う上位ビット、キャリー、符号は必要か
ラッチ推論どの組合せ経路に代入がないか
多重駆動所有する手続き・子出力は何か
未使用信号意図的か、接続漏れか
組合せループレジスタなしで入力へ戻るか

全警告を隠さず原因を修正するか、狭い意図的例外を検査付きで文書化します。分類と重大度はバージョンで変わり得ます。Verilatorの公式警告文書はWIDTHやLATCHを説明します。導入済みなら追加lintに次を使えます。

text
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.sv

これは追加経路の提案であり実行済みの主張ではありません。実行命令と提案命令を区別します。

合成は別の境界です

text
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'

このYosys検査はfront endと一般的な回路構造を確認します。対象FPGAの資源・配置・配線・タイミングclosure・製造受入れではありません。技術マッピングと制約フローは追加作業です。

実習・失敗例を納品DUTから分離する

使い捨てコピーで子名を誤記し、9ビット和を8ビットへ切り捨て、組合せ分岐の代入を省きます。どのツールが検出し何に機能検査が必要か調べます。幅警告は意図的な場合もあり、ラッチでもコンパイルは成功し得ます。要求と動作を比較し、正常ソースに関連する意図的失敗ログを保持してください。説明できない診断は未解決として記録します。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。