Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

シンセサイザ

veryl synth はプロジェクトに対して簡易的な論理合成を行い、概算の面積・タイミング・電力を報告します。これは設計検討中に素早くフィードバックを得るためのツールであり、本格的な合成フローの代替を意図したものではありません。設計は選択したライブラリ内の代表的なセル群へマッピングされますが、配置配線・負荷容量・駆動能力・Vth の選択は考慮されません。

$ veryl synth

トップモジュールは以下の優先順位で選択されます。

  1. 指定されている場合、CLI の --top <name>
  2. 設定されている場合、Veryl.tomlsynth.top
  3. プロジェクト内で最初に見つかったユーザーモジュール

セルライブラリ、クロック周波数、トグル率といった設定項目については [synth] を参照してください。

出力

デフォルトでは、veryl synth は1行のサマリと、面積/タイミング/電力の詳細ブロックを出力します。

synth: TopModule — 123 gates, 17 FFs
library: sky130_fd_sc_hd ...

summary:
  area:        1234.56 um²  (comb 1000.00, seq 134.56, mem 100.00)
  timing:        2.345 ns      8 levels  in_dat → out_dat
  power:        0.1234 mW   (leak 0.0123 mW, dyn 0.1111 mW)
                            @ f_clk = 100 MHz, activity = 0.10

area:
  ...
timing:
  ...
power:
  ...

RAM 推論

大きな配列は、depth × width 個のフリップフロップとアドレスデコード/マルチプレクサツリーではなく、SRAM マクロにマッピングされます。ビット配列マクロははるかに高密度かつ高速なため、直接モデル化することで、キャッシュやレジスタファイルといったメモリ主体の設計でも面積・タイミング・電力の見積もりが現実的に保たれます。

配列は、以下のすべてを満たす場合に RAM ブロックとして推論されます。

  • ストアドビットが 1024 ビット以上で、depth が 2 以上である
  • リセットなしで、全ワードの動的アドレス書き込み(mem[addr] = data)により書き込まれ、書き込み箇所が最大 8 個である
  • 全ワードの動的アドレス(mem[addr])で読み出され、読み出しアドレスが最大 16 個である

if_reset の下で書き込まれる配列はフリップフロップのまま残ります。実際の SRAM にはリセットがないため、SRAM にしたい配列は RTL 上でリセットなしで書きます。部分書き込みやサブワード書き込みの場合も、配列はフリップフロップのまま残ります。

推論されたメモリの面積は面積サマリの mem 項目として報告され、--dump-area は各ブロックを形状(depth × width)とポート数でグループ化して一覧表示します。

ram: 2 blocks
    1024×32   1R1W  ×1       32768 bits       189.40 um²
     512×64   2R1W  ×1       32768 bits       189.40 um²

オプション

オプション説明
--top <name>トップモジュール名。Veryl.tomlsynth.top を上書きします。
--timing-paths <n>タイミングダンプで報告する最悪遅延エンドポイントの数。synth.timing_paths を上書きします。
--dump-irゲートレベル IR(ゲートとフリップフロップのネットリスト)をダンプします。
--dump-area推論された RAM ブロックを含む、セル種別ごとの面積内訳をダンプします。
--dump-timingクリティカルパスのトレースをダンプします。
--dump-power電力見積もり(漏れ電力+動的電力の内訳)をダンプします。

--dump-* フラグが何も指定されない場合、面積/タイミング/電力の3つすべてがダンプされます。