1 ポイント 投稿者 GN⁺ 2024-04-29 | 1件のコメント | WhatsAppで共有
  • Zilogが2024年4月15日にZ80のEnd-of-Lifeを発表した後、このプロジェクトはZ80を置き換える**Free and Open Source Silicon(FOSSi)**実装を目標としている
  • 目標は、ZX SpectrumやRC2014のような8ビットコンピュータやDIYキットで使えるピン互換のドロップイン代替品を開発すること
  • 実装はGuy HutchisonのTV80 Verilogコアをベースにしており、OpenROADとSKY130・SG13・GF180のようなオープンPDKを使って実際のシリコンへ合成している
  • 2025年に最初の2回のテープアウトチップが納品され、最初のSKY130 Tiny Tapeout 7シリコンはFUNCTIONAL状態で、QFN64 40ピン全露出版も納品後にテスト中
  • テストでは、Z80がRP2040/RP2350をRAMのように使って通信し、DAA命令のバグを修正したが、ZEXALLの未文書フラグ2件のテストはまだ失敗している

プロジェクトの目標と現状

  • rejunity/z80-open-siliconは、Zilog Z80の現代的で無料のオープンソースなシリコンクローンを作るプロジェクト
  • Zilogは2024年4月15日にZ80のEnd-of-Lifeを発表した
  • プロジェクトは、オープンソースとハードウェア保存コミュニティがZ80のFOSSi代替品を提供すべきだという目標を持つ
  • 2025年に最初の2回のテープアウトチップが納品され、チップは動作する状態で、現在テスト
  • 現在、GF180MCU向けのDIP40版を作業中

シリコン実装の方式

  • 目標ハードウェアは、8ビットのホームコンピュータや最近のDIYコンピュータキットでドロップインZ80代替品として使われるチップ
  • 実装はOpenROADフローとオープンソースPDKを使い、生産可能なシリコンを合成している
  • Tiny Tapeoutインフラは、複数の設計をまとめてSkywater Foundriesで実際のチップ製造コストを下げるために使われている
  • ベースとなるCPUコアは、Guy HutchisonのTV80Verilogコア

対応PDKとテープアウト

  • 対応するオープンPDKは3種類
    • SKY130: SkyWater Technology Foundryの130nmノード
    • SG13: IHP FoundryのBiCMOS 130nmノード
    • GF180: Global Foundryの180nmノード
  • テープアウトの進捗状況
    • FUNCTIONAL: Tiny Tapeout 7による130nm SKY130の最初のシリコンテープアウト
    • DELIVERED/TESTING: eFabless CI2406 shuttleによる40ピン全露出QFN64パッケージ、130nm SKY130プロセス
    • SG13g2の24ピン多重化版にはIHP 2024実験シャトルの項目があり、IHP 2025a shuttle版は納品済み
    • WIP: Wafer.Space GF180MCU Run 1によるCOBベースのクラシックDIP40フォームファクタ

最初のFOSSi Z80シリコン

  • 最初の反復版はTiny Tapeoutインフラと130nmプロセスで開発され、0.064mm²のダイ面積に収まっている
  • 最初のテープアウトは2024年6月のeFabless ChipIgnite CI2406 Shuttleに提出された
  • GDSII集積回路レイアウトはOpenROADの自動配置配線フローの結果であり、130nmゲート論理要素を使っている

テストと残作業

  • 完了した計画
    • Tiny Tapeout 07による130nmノードの24ピン改訂版テープアウト
    • eFabless ChipIgniteによる40ピン全露出QFN64テープアウト
    • SKY130とSG13のテープアウト完了、GF180は作業中
    • チップテストを実施
  • テスト概要
    • Z80はRP2040/RP2350をRAMのように使って通信する
    • ZEXDOC/ZEXALLテストスイートが検出したDAA命令バグを修正した
    • 未文書フラグに関連するZEXALLのテスト2件はまだ失敗している
  • 進行中または残っている作業
    • QFN64からDIP40へ変換するPCBアダプタの作成
    • COB DIP40 PCBの作成
    • 元のZ80との比較による入出力信号のタイミングテスト
    • すべてのZ80命令とillegal命令を含むテストベンチの強化
    • VerilogコアA-Z80、ネットリストベースのZ80Explorerなど他の実装との比較
    • 元のZ80レイアウトのように見えるゲートレベルレイアウトの作成
    • セラミックDIP40パッケージとプロジェクトロゴ/チップアート

コードとローカル実行

  • プロジェクト概要資料としてスライドデッキとMatthew Vennとの議論動画が提供されている
  • 主なコードの場所
    • src/tt_um_rejunity_z80.v: 最上位モジュールであり、Tiny Tapeoutの制約に従い、出力ピンをTiny Tapeoutチップの8本のピンへ多重化している
    • src/tv80: 中核となるVerilog Z80実装
    • src/config.tcl: OpenROADの合成および配置配線設定
    • src/test/test.py: テストベンチ
  • 生成されたレイアウト成果物はgdsフォルダにあり、KLayoutで確認できる
    • Z80コアのGDSIIファイル
    • Tiny Tapeout 07チップのOASISファイル
  • ローカルテストはTiny Tapeoutのテストガイドに従った後、iverilogverilatorcocotbpytestをインストールし、srcmakeを実行する

テスト対象として見ているZ80機器

  • クラシックコンピュータとコンソールがハードウェアZ80代替品のテストケースとして列挙されている
    • ZX Spectrum 48K: 3.5MHz Z80
    • ZX Spectrum 128K: 3.54690MHz Z80
    • Amstrad CPC: 4MHz Z80
    • MSX系: 3.579MHz
    • SG-1000、Sega Master System、ColecoVision、TRS-80、Sinclair ZX80/ZX81など
  • 最近のDIYコンピュータキットもテストケースとして示されている

参考資料集

  • Z80関連文書
    • Z80 Datasheet
    • Zilog Users Manual、Mostek Users Manual、Zilog Data Book
    • 未文書命令、opcode table、タイミング文書
  • Z80の歴史と特許
    • Z80開発オーラルヒストリーパネル資料
    • M. Shimaのマイクロプロセッサ設計資料
    • 入力電圧スパイク保護、リセット回路など期限切れとなったZ80関連特許
  • ダイショットとリバースエンジニアリング資料
    • Zilog Z8400、Z84C00、Nintendo Super Game BoyのSGB-CPU 01、Mostek MK3880などのダイショット
    • Z80命令レジスタ、バスゲート、PLA、レジスタ実装、4ビットALUなどのリバースエンジニアリング資料
  • 既存実装
    • TV80 Verilog実装
    • A-Z80
    • Z80Explorer
    • Visual6502.orgのオンラインZ80ネットリストエミュレータ

1件のコメント

 
GN⁺ 2024-04-29
Hacker News の意見
  • Tiny Tapeout がやっていることはすごい。メイカーや学生が、こんなに少ない費用で自分のチップ設計を実際に作れるようになるなんて、誰が想像しただろうか
    ツールも素晴らしそうだ。130nm プロセスで次の Intel CPU を設計することはできないだろうが、Z80 が 0.064 mm² に収まるというのは驚きだ
    公式チップがもう生産されない状況で、代替が残っているのも良い。今となっては、チップの上に金メッキのふたが載った、あの格好いい紫色のセラミックパッケージが欲しくなってきた
    https://twitter.com/l_vanek/status/1783557817133039738/photo...
    https://tinytapeout.com/

    • 130nm プロセスなら、おおよそ Pentium III 時代あたりと見てよい。悪くない
    • クリック数を減らすために書いておくと、160 x 100 µm タイル + ASIC + デモボードの標準価格は送料別で 300 ドルで、Efabless が 1 人 1 注文限定で送料別 150 ドルの早期割引をスポンサーしている
      追加タイルは 1 個 50 ドル、追加アナログピンは 1 ピン 40 ドルから。私が大きく間違っていなければ、160 x 100 µm は 0.16 x 0.1 mm なので、タイル 1 枚が 0.016 mm²、0.064 mm² のダイはスロット 4 つを使う計算になる
  • 気になる人のために言うと、6502 とその複数の派生型は、元の開発者の一社によってまだ生産されている。なので、Z80 の宿敵側で同じようなことがすぐ起きることはなさそうだ
    [0] https://www.westerndesigncenter.com/wdc/chips.php

    • 興味深いことに、古典的な Z80 はわずか 2 週間前に生産終了扱いになった
      https://hackaday.com/2024/04/19/end-of-life-for-z80-cpu-and-...
    • 65C02 は、6502 のコードが非公式命令、偶発的なメモリアクセス、BCD 演算のサイクルタイミング、BCD 演算のフラグ、あるいは割り込みルーチンで 10 進モードが設定された状態に依存している場合、失敗する可能性がある
    • 65C02 にもいつ同じことが起きてもおかしくない。Z80 が数週間前に生産終了になったのも、ファブからもうウェハーを入手できなくなったためだ。古いプロセスのチップはすべてこうしたリスクがある
    • PDIP 版は生産終了になるが、eZ80 はまだ生産中だ
      https://arstechnica.com/gadgets/2024/04/after-48-years-zilog...
      https://en.wikipedia.org/wiki/Zilog_eZ80
      http://www.zilog.com/docs/um0077.pdf
      https://www.zilog.com/docs/ez80acclaim/ps0153.pdf
    • ここ 10 年ほどの 単体 Z80 の販売数がどんなものだったのか気になる。どんな用途で買われていたのか、DIP/PLCC/フラットパックの比率がどうだったのかも知りたい
      どこかに何百万個も出回っているはずだが、Mouser や Farnell のような流通業者から姿を消すと、必要な人に残るのは eBay 系くらいになり、かなり運任せになる
  • Z80 は ZX Spectrum の CPU だった。懐かしい
    https://en.wikipedia.org/wiki/ZX_Spectrum

    • 良いマシンが本当にたくさんあった。Amstrad CPC 系列、いくつかの Sega コンソール、初期の MSX 機、そしてもちろん Tatung Einstein まで。3 インチディスク機よ、団結せよ
    • TRS-80 とそのクローンもあったし、オーストラリアとニュージーランドには Dick Smith System-80 があった。EDTASM でプログラミングしていた良い思い出がたくさんある
      カセットドライブしかなかったので、コードが間違っていると、たいていリセットを押して、テープから EDTASM と自分のコードを読み込み直さなければならなかった
    • Game Boy にも使われていたと思っていたが、似ている点は多くても基本的には互換性がないようだ[0]
      0. https://forums.nesdev.org/viewtopic.php?t=18335
    • 私の最初のコンピューターだった Coleco ADAM にも入っていた CPU だった
      https://en.wikipedia.org/wiki/Coleco_Adam
      子どもの頃に買った Programming the Z80 の本もまだ持っている
      https://en.wikipedia.org/wiki/Programming_the_Z80
    • 2000 年代中盤から後半にかけて広く出回っていた無名の MP3/"MP4" プレーヤーにも多く使われていた: https://en.wikipedia.org/wiki/S1_MP3_player
  • こうした古い 8ビットCPU の本当の楽しさはシンプルさにあり、1人で手配線してコンピュータを作れるところにあると思う
    大学のマイクロプロセッサの授業で8088ボードを作ったが、受けた授業の中で最高で、ドライバやハードウェアに対する神秘性を取り払ってくれた。後にKiCADで再設計を試み、IO拡張ポート、よりよいレイアウト、2x16文字LCD用のLCDポートを追加した
    Futurlecで試作したが、フットプリント指定で大きなミスをしてインターポーザが必要になり、8284とICソケットをはんだ付けしたところまで進んだ後、生活に追われて今も箱の中に入ったままだ
    マイクロコントローラはすべてが1つのパッケージに入っていて素晴らしいが、自分の手でコンピュータを設計し、作れることには大きな満足感がある。FPGAはその感覚をある程度取り戻してくれるが、ツール体系はビザンチン式にひどい

    • オープンソースツール は完璧ではないが、急速に成長している。この分野で働いており、一部のFPGAについて合成から配置・配線まで全体をサポートする OpenROAD[1] プロジェクトを勧めたい
      [1] https://theopenroadproject.org/
  • 調べてみると、Z80 がもう50年ものCPUだというのは驚き

  • 回路配置が、通常ダイ写真で見るようなカスタム配置というより、均一なゲートアレイ のように見えるのが目についた

    • これはVerilog実装なので、実際のチップというより ソフトウェアCPUエミュレータ にずっと近い。たとえば元のZ80のトランジスタ配置とは関係ない
      たとえば LD A,(DE) の「命令ペイロード」はここにある
      https://github.com/rejunity/z80-open-silicon/blob/974c7711b2...
      そして同じマシンサイクルを私のソフトウェアエミュレータで実装した部分はここにある
      https://github.com/floooh/chips/blob/bd1ecff58337574bb46eba5...
      どちらもアドレスバスをDEレジスタの内容に設定し、同時に外部へメモリ読み出しを知らせるため、MREQ|RDピンをどこかで設定する必要がある。私のエミュレータではこれは _mread マクロで行われ、次のクロックサイクルでデータバスをAレジスタへ読み込む
      興味深いのは、Verilog実装が内部WZレジスタをDE+1に更新していないように見える点だ。そのため、文書化されていない動作が正確に実装されているのか気になるが、WZ更新は別の場所で処理されているのかもしれない
      結局、外からZ80のように見えて動作するなら、つまり正しいピンが正しいタイミングでアクティブになるなら、内部実装は重要ではない
  • 元の Z80との互換性 がどの程度なのか気になる。オリジナルには文書化されていない命令も多かったし、特定の珍しい命令シーケンスに影響した可能性のある、悪名高い「トラップゲート」もあった
    ページにリンクされている “Oral History Panel on the Founding of the Company and the Development of the Z80 Microprocessor” を見ると、オリジナルとクローンを区別しようとする設計だった可能性がある

  • かっこよく見える。初期の efabless.com チームにいて、オープンソースEDA側だった

  • Z80の 4ビットALU の話を聞いたことがある。8ビット演算では2回使う構造だったと理解しているが、これが大きなボトルネックと見なされていたのか気になる
    後により大きなビット幅の整数演算を追加した拡張があったのかも気になる。チップのオープンソース版が新機能や派生版を可能にするのかも知りたい

    • 大きなボトルネックではない。レジスタをソースに使うALU命令は、すでに可能な限り速く、つまり 4クロックサイクル で実行されるからだ。この時間は命令フェッチの「マシンサイクル」の長さと同じ
      別の見方をすれば、8ビットALUがあったとしても算術命令は速くならず、代わりにトランジスタが2倍必要になったはずだ
      4ビットALUは、外部からは見えない内部実装の詳細にすぎない。下位ニブルから上位ニブルへ移るキャリーを表すhalf-carryフラグの存在くらいを除けば、そう言える
      古いホームコンピュータにそのまま差して使うCPU代替品が欲しいなら、元の命令タイミングを維持しなければならない。そうでないと サイクルカウンティング に依存するソフトウェアが動作しない。ただしZX SpectrumはAmstrad CPCのような機器と違ってプログラマブルなビデオハードウェアがないため、この問題は少ないかもしれない
      eZ80はより現代的で効率的な設計で、より幅広いALUを含む: https://en.wikipedia.org/wiki/Zilog_eZ80。しかし古いホームコンピュータを蘇らせる用途なら選択肢にはならず、元のタイミングと文書化されていない動作まで合わせた正確なZ80クローンが必要になる
    • Netburst P4 も半分幅の16ビットALUをクロック周波数の2倍で動かしていた。実際にはDDR RAMのように両エッジでクロックをかけており、そのため2つの半分の間にキャリー/ボローがあるALU演算は1サイクル余計にかかった: https://www.realworldtech.com/isscc-2001/7/
  • これでどの程度のクロック速度が期待できるのか、分かる人がいるのか気になる

    • このページには 50 MHz と書かれている
      https://github.com/rejunity/z80-open-silicon/blob/main/docs/...
    • 古いシステム向けに新しい互換プロセッサを設計するなら、制約要因はメモリバスになるはず。高速化するにはキャッシュが必要
      キャッシュは、システムが行うすべてのバンク切り替えを把握し、メモリバンクがメモリ空間にどうマッピングされるかも理解している必要がある
      通常の読み取り専用メモリはキャッシュ可能。他のデバイスと共有しない通常の RAM もキャッシュ可能。メモリマップド IO はキャッシュしてはいけない
      ビデオメモリのように他のデバイスと共有するが、そのデバイスが書き込まない RAM は、ライトスルーキャッシュと完全な読み取りキャッシュが可能。他のデバイスが書き込める共有 RAM はキャッシュしてはいけない