世界を動かす技術を、日本語で。

Minecraft HDL、レッドストーン用のHDL

概要

MinecraftHDL は、Minecraftの レッドストーン回路 を業界標準の設計手法で合成する 教育用ツール。 Verilog記述から デジタル回路 を自動生成し、 回路設計の学習 やデモに最適。 複雑な回路順序回路 には未対応で、一部制限あり。 導入・利用方法理論背景 も公開されている。 学生プロジェクト として開発され、初心者や教育現場向けに設計。

MinecraftHDLとは

  • MinecraftHDL :Minecraftのレッドストーン回路向けデジタル合成フロー
  • Verilog 等の業界標準設計ツール・手法を利用した回路生成
  • 教育用 ・デモ用としての用途
  • 手作業設計 に比べ回路品質は劣る傾向
  • McGill University の学生による卒業プロジェクト

使い方と特徴

  • Verilog記述 からレッドストーン回路を自動生成
  • 例: multiplexer4_1.v
    • 6入力(a, b, c, d, x, y)、1出力(dout)の多重器
    • Verilog例:
      • assign dout = (a & (~x) & (~y)) | (b & (~x) & (y)) | (c & x & (~y)) | (d & x & y);
  • 合成結果 :右側に6入力・左側に1出力の回路
  • 簡単な回路 ならMinecraft内でテスト可能
  • 複雑な回路 はワールド内のチャンク制限で動作不可の場合あり

制限事項

  • 順序回路 (フィードバック・メモリ・カウンタ等)の合成は未対応
  • 中規模以上の回路 はブロック数制限で実用不可
  • バグ や未完成部分あり

教育的価値

  • デジタル回路設計 の全体像をマクロスケールで体験可能
  • 若年層 や初学者向けのデジタル設計入門教材
  • ソフトウェア設計ハードウェア設計 の違いの可視化
  • RTL設計 初学者向けの教材としての活用

開発チームとサポート

  • Supervisor :Brett H. Meyer
  • 開発学生 :Francis O'Brien, Omar Ba Mashmos, Andrew Penhale
  • オープンソース :フォークやコントリビュートも歓迎

デモ・サンプル

  • 2ビット7セグメントデコーダ2ビット加算器 などのサンプル回路
  • 回路作成からMinecraft生成まで を1分以内で実演するGIF
  • 出力例 :2ビット加算器で入力「11」+「11」→出力「110」(6を表現)

関連リンク

  • スクリーンショット・サンプル回路
  • 導入・利用方法ガイド
  • 背景理論・Verilog設計解説
  • 技術論文
  • 開発者向け情報
  • 概要ポスター

まとめ

  • MinecraftHDL は、 教育デモ 用途に特化した レッドストーン回路自動生成ツール
  • Verilog ベースのデジタル回路設計をMinecraft上で体験可能
  • 制限未対応機能 に注意しつつ、 学習教材 として活用推奨

Hackerたちの意見

関連: VerilogからMinecraftのレッドストーンシンセサイザーへ - https://news.ycombinator.com/item?id=25195802 - 2020年11月(12件のコメント)(再投稿は1年後くらいからOKだよ! https://news.ycombinator.com/newsfaq.html)

超クールなプロジェクトだね :) 客観的には無駄だけど、めっちゃ楽しい!

これの最適化パスを考えるのは面白そう。フリップフロップを村人のマインカートといくつかのNaNマインカートで表現するのは、いつ使うかを選ぶのが難しそうだね。銅のバルブと比べて。

すごいプロジェクトだね!!

これは素晴らしいタイムラインだ。レッドストーンがMinecraftに追加された日を今でも覚えてるよ。夕方からずっとフォーラムでいろんな実装方法を考えてた。確か、最初のTフリップフロップの一つを作ったと思うけど、それは「部屋一つ分の大きさ」で、遅かったな。コンパクトになっていく様子や、リピーター、ピストン、コンパレーターが追加されるのを見るのは本当に面白かった。BUDが発見された時や、最終的にブロックとして追加された時も覚えてる。今ではHDL全体があるんだもんね。正直、2012年頃からは追いかけるのをやめちゃったから、現代のレッドストーン装置を見ると完全に迷子になってるよ。*8年前の話。

これはクールなツールだけど、現代のレッドストーン装置と比べると、アップグレードじゃなくてサイドグレードだね。トーチとダストのロジックがそのままで、トーチはノーゲート、ダストはワイヤーって感じ。タイミングも全く考慮されてないし。これ、レッドストーンが追加された週に作れたはず(リピーターがないようにちょっと調整すれば)、新しい洞察は全然必要なかったと思う。

レッドストーンが大好きだった。ある時、フォークされて「レッドパワー」って名前がついたと思う。いい感じだったよ。他にも素晴らしいMODがあった(名前忘れちゃったけど、亀に関係するやつ?)し、Luaでシェルを実装したこともあったな。

誰かが65行のVerilogでミニマルなCPU実装が必要な場合はここをどうぞ: https://people.csail.mit.edu/ebakke/fic/ https://people.csail.mit.edu/ebakke/fic/code/Fic.v (これがレッドストーン回路にきれいに変換できるか気になるな…)

このコンパイラは順次ロジックをサポートしていないので、フリップフロップやレジスタは使えないよ。

これって、レッドストーンの特性や準接続性を考慮してるのかな?Mumbo Jumboが最近、計算レッドストーンについてのレッスンを受けて、その動画を作ってたよ。すごいビルドがたくさんあった(MSペイントみたいなやつ)。主要な設計制約の一つはティックやラグだね。最近追加された銅の電球で、tフリップフロップが一つのブロックで解決できるようになったみたい。https://www.youtube.com/watch?v=jTZaUz8bYW8

これって、レッドストーンダスト、リピーター、トーチだけを使ってるみたいだから、準接続性は影響しないだろうね。

Verilogを再学習する理由を探してたんだけど、これが最初のアイデアになるかも。めっちゃクールなアイデアだね。ありがとう!

16歳の時に、ある夜8ビットのリップル加算器を書いたことがあるんだけど、その時にこのアイデアを考えたんだ。でも、すごく大変そうに思えた。今は追加されたレッドストーンのアイテムや機能もあるから、ほとんどの回路がもっとコンパクトになるんじゃないかな。全体的に、ほんとにクールだね。

大学で電子工学を選んだ理由、そして最終的にFPGAエンジニアになったのは、ティーンエイジャーの頃にMinecraftでレッドストーンをいじりすぎたからなんだ。MinecraftのためのVerilogコンパイラを見るのは、自分のキャリアが一周したような感じ。