はじめに
Celox は Veryl HDL 向けの JIT(Just-In-Time)シミュレータです。Cranelift を使用して Veryl 設計をネイティブマシンコードにコンパイルし、高速な RTL シミュレーションを実現します。
主な特徴
- JIT コンパイル -- Veryl 設計は多段パイプライン(Veryl → SLT → SIR → ネイティブコード)を通じてコンパイルされ、ネイティブに近い実行速度を実現します。
- イベント駆動スケジューリング -- マルチクロックドメイン対応のイベント駆動スケジューラが、複雑なタイミングインタラクションを処理します。
- 4 値シミュレーション -- IEEE 1800 準拠の 4 値表現と適切な X 伝搬をサポートします。
- TypeScript テストベンチ -- 型安全なシグナルアクセスとモダンな開発ツールを使用して、TypeScript でテストベンチを記述できます。
- VCD 波形出力 -- 標準的なビューアで波形を確認するための VCD ファイルを生成します。
プロジェクト構成
Celox は Rust + TypeScript のワークスペースとして構成されています:
| クレート / パッケージ | 説明 |
|---|---|
crates/celox | コアシミュレータ(IR、JIT コンパイル、ランタイム) |
crates/celox-macros | 手続きマクロ |
crates/celox-napi | Node.js 向け N-API バインディング |
crates/celox-ts-gen | TypeScript 型生成 CLI ツール |
packages/celox | TypeScript ランタイムパッケージ |
packages/vite-plugin | 開発統合用 Vite プラグイン |
動作の仕組み
- フロントエンド -- Veryl ソースコードは Veryl アナライザを使用して解析されます。モジュール階層、シグナル、組み合わせ回路/順序回路ブロックが抽出されます。
- ミドルエンド -- 組み合わせ回路ブロックはシンボリック論理木(SLT)にシンボリック評価され、さらにシミュレータ中間表現(SIR)に変換されます。
- バックエンド -- SIR 命令は Cranelift によってネイティブマシンコードにコンパイルされ、直接実行されます。
アーキテクチャの詳細については、アーキテクチャの内部ドキュメントを参照してください。