
2026/05/16 2:15
私は、科学計算機の実装のために、Verilog を用いてニブル指向型の CPU を設計しました。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
このプロジェクトは、FPGA を用いた完全機能の科学計算機をハードウェア上で実現したもので、カスタム製ソフト CPU および専門用途のマイクロコードファームウェアを搭載しています。クリエイティブ・コモンズ 4.0 ライセンス(帰属・非商業的・同一条件)の下で完全なオープンソースのエコシステムを提供し、エンジニアが単純なステートマシンからフルキーボードインターフェースの実装案まで、複雑な算術回路を探求することを促しています。システムはデバッグ器の必要なく、Web ブラウザまたはローカルのシミュレーション環境を通じてアクセス可能です。
開発では、論理設計には SystemVerilog、FPGA シンセシスには Intel Quartus を使用し、エミュレーションなどのために Verilator など堅牢なツールを併用します(ModelSim はオプション)。特定のツールのバージョンは重要であり、Desktop/Qt ビルドには Verilator 5.x が必要で、WebAssembly 向けシミュレーションにはスレッドサポートの制約から Verilator 4.228 が必須です。プロジェクトには
make コマンドをタスクごとに最適化した包括的なドキュメントが含まれており、Windows Subsystem for Linux 2 (WSL2) で Qt シミュレーターを構築 (make qt) や、フラッシュ可能な FPGA バイナリを生成 (make revB) などの作業に対応しています。詳細なビルド指示は verilog/、ucode/、quartus/、modelsim/、Qt/、および Pathfinding/ というサブフォルダー内に整理されており、後者は黄金参照、概念実証プロトタイプ、および非推奨の実装を含んでいます。本文
本プロジェクトでは、FPGA を用いた完全機能の科学電算機をハードウェアとして実装しています。これにはカスタムソフトウェア CPU、マイクロコードファームウェア、および関連ツールの構成が含まれます。詳細についてはブログをご参照ください。ブラウザでの動作確認は、デバッガーあり・なしのいずれかで可能です。
プロジェクト構造
| フォルダ | 説明 |
|---|---|
| CPU、ALU、I/O、およびテストベンチ用の SystemVerilog ソースファイル |
| ソフトウェア CPU 用のマイクロコード(ファームウェア) |
| FPGA コンパイル用 Quartus プロジェクトファイル |
| ModelSim 向けシミュレーションセットアップ |
| Verilator を使用して作成された Qt ベースのシミュレータおよびデバッガー |
| ハードウェア検証用のコマンドラインテストハーネス(Verilator 使用) |
| マイクロコード用アセンブラおよびスクリプトコンパイラ |
| アルゴリズムの研究および検証プロジェクト |
クイックスタート
電算機を素早く試すには、Qt シミュレータの構築が推奨されます。
WSL2(Windows Subsystem for Linux 2)から行う場合:
- Qt シミュレータを構築するために以下のコマンドを実行してください。
cd /mnt/c/Projects/FPGA-Calculator/verilog make qt - その後、Qt Creator で
を開き、「Desktop Qt MSVC2022 64 Bit」に対してビルドを実行してください。 詳細な手順については、Qt/Calculator.pro
およびverilog/
フォルダ内のファイルを参照してください。Qt/
必要なツール
ターゲット環境に応じて以下のツールをインストールしてください。
| ツール | 目的 | 備考 |
|---|---|---|
| Verilator | Verilog シミュレーション | Qt シミュレータに必須 |
| Qt | デスクトップ/WebAssembly/Android アプリケーション | バージョン 6.9 以降推奨 |
| Quartus | FPGA コンパイル | Cyclone II 向けバージョン 13.0 SP1 |
| ModelSim | 波形表示用シミュレーション | オプション |
| Visual Studio 2022 | Qt の C++ コンパイラ(Qt Creator 内蔵) | コミュニティエディションで OK |
| Python 3 | アセンブラおよびツールの使用 |
Verilator セットアップ
Verilator は WSL2 で動作します。プロジェクトのソースファイルは Windows パーティションに配置し、WSL2 からアクセスします。
| ターゲット環境 | Verilator バージョン | 備考 |
|---|---|---|
| デスクトップ (Qt/MSVC) | 5.x(最新版) | 推奨 |
| WebAssembly | 4.228 | スレッドサポートなしのため必須バージョン |
プリレンダライザのインストール
sudo apt-get install build-essential autoconf flex libfl-dev bison
Verilator のクローンとビルド
git clone https://github.com/verilator/verilator cd verilator git checkout v5.042 # デスクトップ用。WebAssembly 環境の場合は v4.228 を使用 autoconf ./configure make -j8 make test
環境変数の設定 (永続化のため
.bashrc に追加してください)
export VERILATOR_ROOT=$(pwd)
また、波形ビューアとして GtkWave もオプションでインストールできます。
ビルドターゲット
| ターゲット | コマンド | 説明 |
|---|---|---|
| Qt シミュレータ | 内で | Qt デスクトップアプリケーションのビルド |
| Calctest | 内で その後、 内で | コマンドライン用テストハーネス |
| ModelSim | 内で | ModelSim 向け CPU セルフテスト |
| FPGA ハードウェア | 内で | RevB ボード用のマイクロコードアセンブリ |
詳細なビルド手順については、各サブフォルダ内の README ファイルをご参照ください:
: Verilator シミュレーションおよびマイクロコードアセンブリの手順verilog/README.md
: ハードウェア検証のコマンドラインテストハーネスの説明calctest/README.md
: FPGA コンパイルおよびプログラミングの手順quartus/README.md
: マイクロコードのソースファイルucode/README.md
Pathfinding プロジェクト
独立した研究および検証プロジェクトです:
| フォルダ | 説明 |
|---|---|
| ハードウェア検証用の BCD 算術に対するゴールドスタンダード参照実装(サブルーム) |
| 基礎的な算術を使用した複雑な操作の概念実証ツール |
| 電算機アルゴリズムの C++ 実装(現在非推奨) |
| 数値入力状態機械のシミュレーション |
| キーボードレイアウト設計およびユーザーインタラクションテスト |
ライセンス
本プロジェクトは「Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License」の下でライセンスされています。以下の条件に従って利用可能です:
許可された行為:
- 再配布 (Share): マテリアルをあらゆる媒体または形式でコピーし、再配布することができます。
- 改変 (Adapt): マテリアルをリミックス、変換し、元となるマテリアルに基づいて新たな作品を作成することができます。
適用される条件:
- 表示 (Attribution): 適切なクレジットを表示し、原著者へのリンク、変更内容有りであることを明記する必要があります。
- 非商用 (NonCommercial): マテリアルの商業利用は固くお断りします。
- 同一条件の提供 (ShareAlike): 改変や二次創作された作品も、同じライセンスの下で配布する必要があります。