最適化チューニング
通常はデフォルトの最適化レベルを使ってください。コンパイル時間または実行速度が 実際のデザインでボトルネックになった場合だけ変更します。
最適化レベル
| レベル | 適した用途 | トレードオフ |
|---|---|---|
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 はトップレベルポートを保持しますが、ほかから観測されない内部状態や 子インスタンスの状態を除去することがあります。階層を参照するテストで使う前に、 デッドストア除去を確認してください。
選び方
実際に使うワークロード全体を測定します。
- シミュレータ作成時間とテスト実行時間を分けて測る。
- 各レベルで同じ設計、入力、サイクル数を使う。
- 実際のテストで使う階層参照や波形出力も含める。
- マシンの揺らぎと区別できる回数だけ繰り返す。
コンパイル時間の短縮が実行速度の低下を上回る場合だけ O0 を使います。 O2 は観測範囲がテストに合う場合だけ使い、それ以外は O1 を維持してください。
パス単位の上書きやバックエンド固有の設定は、Celox 自体の開発や性能調査向けです。 通常のユーザーワークフローからは外し、その構造は 最適化アーキテクチャにまとめています。