Skip to content

最適化チューニング

通常はデフォルトの最適化レベルを使ってください。コンパイル時間または実行速度が 実際のデザインでボトルネックになった場合だけ変更します。

最適化レベル

レベル適した用途トレードオフ
O0編集と実行の反復を優先するコンパイルは速いが実行は遅い
O1通常のテストデフォルトのバランス
O2トップレベルポートだけを観測する長時間テストデッドストア除去を有効にする
typescript
import { Simulator } from "@celox-sim/celox";

const normal = Simulator.create(module); // O1
const quickBuild = Simulator.create(module, { optLevel: "O0" });
const throughput = Simulator.create(module, { optLevel: "O2" });

O2 はトップレベルポートを保持しますが、ほかから観測されない内部状態や 子インスタンスの状態を除去することがあります。階層を参照するテストで使う前に、 デッドストア除去を確認してください。

選び方

実際に使うワークロード全体を測定します。

  1. シミュレータ作成時間とテスト実行時間を分けて測る。
  2. 各レベルで同じ設計、入力、サイクル数を使う。
  3. 実際のテストで使う階層参照や波形出力も含める。
  4. マシンの揺らぎと区別できる回数だけ繰り返す。

コンパイル時間の短縮が実行速度の低下を上回る場合だけ O0 を使います。 O2 は観測範囲がテストに合う場合だけ使い、それ以外は O1 を維持してください。

パス単位の上書きやバックエンド固有の設定は、Celox 自体の開発や性能調査向けです。 通常のユーザーワークフローからは外し、その構造は 最適化アーキテクチャにまとめています。