Skip to content

はじめに

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-napiNode.js 向け N-API バインディング
crates/celox-ts-genTypeScript 型生成 CLI ツール
packages/celoxTypeScript ランタイムパッケージ
packages/vite-plugin開発統合用 Vite プラグイン

動作の仕組み

  1. フロントエンド -- Veryl ソースコードは Veryl アナライザを使用して解析されます。モジュール階層、シグナル、組み合わせ回路/順序回路ブロックが抽出されます。
  2. ミドルエンド -- 組み合わせ回路ブロックはシンボリック論理木(SLT)にシンボリック評価され、さらにシミュレータ中間表現(SIR)に変換されます。
  3. バックエンド -- SIR 命令は Cranelift によってネイティブマシンコードにコンパイルされ、直接実行されます。

アーキテクチャの詳細については、アーキテクチャの内部ドキュメントを参照してください。