1 poin oleh GN⁺ 2024-04-29 | 1 komentar | Bagikan ke WhatsApp
  • Setelah Zilog mengumumkan End-of-Life untuk Z80 pada 15 April 2024, proyek ini menargetkan implementasi Free and Open Source Silicon(FOSSi) sebagai pengganti Z80
  • Tujuannya adalah mengembangkan pengganti drop-in yang kompatibel pin untuk komputer 8-bit dan kit DIY seperti ZX Spectrum dan RC2014
  • Implementasinya berbasis inti Verilog TV80 karya Guy Hutchison, lalu disintesis menjadi silikon nyata menggunakan OpenROAD dan PDK terbuka seperti SKY130, SG13, dan GF180
  • Pada 2025, dua chip tapeout pertama telah dikirim, silikon SKY130 Tiny Tapeout 7 pertama berstatus FUNCTIONAL, dan versi exposed 40-pin QFN64 juga sudah dikirim dan sedang diuji
  • Dalam pengujian, Z80 berkomunikasi dengan memakai RP2040/RP2350 seperti RAM, bug instruksi DAA telah diperbaiki, tetapi dua pengujian flag tak terdokumentasi di ZEXALL masih gagal

Tujuan proyek dan status saat ini

  • rejunity/z80-open-silicon adalah proyek untuk membuat klon silikon modern, gratis, dan open source dari Zilog Z80
  • Zilog mengumumkan End-of-Life untuk Z80 pada 15 April 2024
  • Proyek ini bertujuan agar komunitas open source dan pelestarian hardware menyediakan pengganti FOSSi untuk Z80
  • Pada 2025, dua chip tapeout pertama telah dikirim, chip berada dalam kondisi berfungsi dan saat ini sedang diuji
  • Saat ini versi DIP40 untuk GF180MCU sedang dikerjakan

Metode implementasi silikon

  • Hardware yang dituju adalah chip yang digunakan sebagai pengganti drop-in Z80 pada komputer rumahan 8-bit dan kit komputer DIY modern
  • Implementasi ini mensintesis silikon yang dapat diproduksi menggunakan alur OpenROAD dan PDK open source
  • Infrastruktur Tiny Tapeout digunakan untuk menggabungkan beberapa desain sekaligus agar biaya pembuatan chip nyata di Skywater Foundries menjadi lebih rendah
  • Inti CPU yang dipakai adalah inti Verilog TV80 karya Guy Hutchison

PDK yang didukung dan tapeout

  • Ada 3 PDK terbuka yang didukung
    • SKY130: node 130nm milik SkyWater Technology Foundry
    • SG13: node BiCMOS 130nm milik IHP Foundry
    • GF180: node 180nm milik Global Foundry
  • Status kemajuan tapeout
    • FUNCTIONAL: tapeout silikon SKY130 130nm pertama melalui Tiny Tapeout 7
    • DELIVERED/TESTING: paket QFN64 dengan semua pin terekspos 40-pin melalui shuttle eFabless CI2406 shuttle, proses SKY130 130nm
    • Versi multipleks 24-pin SG13g2 memiliki entri shuttle eksperimen IHP 2024, dan versi IHP 2025a shuttle telah dikirim
    • WIP: form factor DIP40 klasik berbasis COB melalui GF180MCU Run 1 dari Wafer.Space

Silikon FOSSi Z80 pertama

  • Versi iterasi pertama dikembangkan dengan infrastruktur Tiny Tapeout dan proses 130nm, serta muat dalam luas die 0.064mm²
  • Tapeout pertama diajukan ke eFabless ChipIgnite CI2406 Shuttle pada Juni 2024
  • Layout sirkuit terintegrasi GDSII adalah hasil dari alur penempatan dan perutean otomatis OpenROAD, menggunakan elemen logika gerbang 130nm

Pengujian dan pekerjaan yang tersisa

  • Rencana yang telah selesai
    • Tapeout revisi 24-pin node 130nm melalui Tiny Tapeout 07
    • Tapeout QFN64 dengan semua pin terekspos 40-pin melalui eFabless ChipIgnite
    • Tapeout SKY130 dan SG13 selesai, GF180 masih dikerjakan
    • Melakukan pengujian chip
  • Ringkasan pengujian
    • Z80 berkomunikasi dengan menggunakan RP2040/RP2350 seperti RAM
    • Bug instruksi DAA yang tertangkap oleh suite uji ZEXDOC/ZEXALL telah diperbaiki
    • Dua pengujian ZEXALL terkait flag tak terdokumentasi masih gagal
  • Pekerjaan yang sedang berlangsung atau tersisa
    • Membuat adaptor PCB untuk konversi dari QFN64 ke DIP40
    • Membuat PCB COB DIP40
    • Pengujian timing sinyal input/output dibandingkan Z80 asli
    • Memperkuat testbench termasuk semua instruksi Z80 dan instruksi ‘illegal’
    • Membandingkan dengan implementasi lain seperti inti Verilog A-Z80 dan Z80Explorer berbasis netlist
    • Membuat layout level gerbang yang tampak seperti layout Z80 asli
    • Paket DIP40 keramik serta logo proyek/chip art

Kode dan menjalankan secara lokal

  • Disediakan slide deck sebagai materi gambaran proyek dan video diskusi dengan Matthew Venn
  • Lokasi kode utama
  • Artefak layout yang dihasilkan ada di folder gds dan dapat diperiksa dengan KLayout
    • File GDSII inti Z80
    • File OASIS chip Tiny Tapeout 07
  • Untuk pengujian lokal, ikuti panduan pengujian Tiny Tapeout, lalu instal iverilog, verilator, cocotb, pytest dan jalankan make di src

Perangkat Z80 yang dijadikan target pengujian

  • Komputer dan konsol klasik dicantumkan sebagai kasus uji untuk pengganti hardware Z80
    • ZX Spectrum 48K: Z80 3.5MHz
    • ZX Spectrum 128K: Z80 3.54690MHz
    • Amstrad CPC: Z80 4MHz
    • Keluarga MSX: 3.579MHz
    • SG-1000, Sega Master System, ColecoVision, TRS-80, Sinclair ZX80/ZX81, dan lainnya
  • Kit komputer DIY modern juga diajukan sebagai kasus uji

Kumpulan referensi

  • Dokumen terkait Z80
    • Z80 Datasheet
    • Zilog Users Manual, Mostek Users Manual, Zilog Data Book
    • Instruksi tak terdokumentasi, opcode table, dokumen timing
  • Sejarah dan paten Z80
    • Materi panel sejarah lisan pengembangan Z80
    • Materi desain mikroprosesor oleh M. Shima
    • Paten terkait Z80 yang telah kedaluwarsa seperti perlindungan lonjakan tegangan input dan rangkaian reset
  • Materi die shot dan reverse engineering
    • Die shot Zilog Z8400, Z84C00, SGB-CPU 01 milik Nintendo Super Game Boy, Mostek MK3880, dan lainnya
    • Materi reverse engineering tentang register instruksi Z80, bus gate, PLA, implementasi register, ALU 4-bit, dan lainnya
  • Implementasi yang sudah ada
    • Implementasi Verilog TV80
    • A-Z80
    • Z80Explorer
    • Emulator netlist Z80 online dari Visual6502.org

1 komentar

 
GN⁺ 2024-04-29
Komentar Hacker News
  • Apa yang dilakukan Tiny Tapeout itu luar biasa. Siapa sangka maker dan mahasiswa bisa benar-benar membuat desain chip mereka sendiri dengan biaya sekecil ini
    Tool-nya juga terlihat hebat. Memang kita tidak akan mendesain CPU Intel berikutnya dengan proses 130nm, tetapi fakta bahwa Z80 bisa masuk dalam 0,064 mm² itu mengejutkan
    Bagus juga bahwa masih ada alternatif ketika chip resminya sudah tidak diproduksi lagi. Sekarang jadi ingin punya paket keramik ungu keren itu dengan penutup berlapis emas di atas chip
    https://twitter.com/l_vanek/status/1783557817133039738/photo...
    https://tinytapeout.com/

    • Proses 130nm kira-kira bisa dianggap setara era Pentium III. Tidak buruk
    • Untuk menghemat klik: harga standar tile 160 x 100 µm + ASIC + board demo adalah US$300 belum termasuk ongkir, dan Efabless mensponsori diskon early bird US$150 belum termasuk ongkir, dibatasi 1 pesanan per orang
      Tile tambahan mulai dari US$50 per buah, pin analog tambahan mulai dari US$40 per pin. Kalau saya tidak keliru besar, 160 x 100 µm adalah 0,16 x 0,1 mm, jadi satu tile berukuran 0,016 mm², dan die 0,064 mm² berarti memakai 4 slot
  • Bagi yang penasaran, 6502 dan beberapa turunannya masih diproduksi oleh salah satu pengembang aslinya. Jadi sepertinya hal serupa tidak akan segera terjadi di pihak musuh bebuyutan Z80
    [0] https://www.westerndesigncenter.com/wdc/chips.php

  • Z80 adalah CPU ZX Spectrum. Membawa kembali kenangan
    https://en.wikipedia.org/wiki/ZX_Spectrum

    • Ada banyak sekali mesin bagus. Lini Amstrad CPC, beberapa konsol Sega, perangkat MSX awal, dan tentu saja Tatung Einstein. Bersatulah, mesin-mesin disk 3 inci
    • Ada juga TRS-80 dan klon-klonnya, serta Dick Smith System-80 di Australia dan Selandia Baru. Banyak kenangan indah memprogram dengan EDTASM
      Karena hanya punya drive kaset, kalau kodenya salah biasanya harus menekan reset lalu memuat ulang EDTASM dan kode saya dari tape
    • Saya kira itu juga dipakai di Game Boy, tetapi meski banyak kemiripan, tampaknya pada dasarnya tidak kompatibel[0]
      0. https://forums.nesdev.org/viewtopic.php?t=18335
    • Itu juga CPU yang ada di Coleco ADAM, komputer pertama saya
      https://en.wikipedia.org/wiki/Coleco_Adam
      Saya juga masih punya buku Programming the Z80 yang saya beli saat kecil
      https://en.wikipedia.org/wiki/Programming_the_Z80
    • Banyak juga dipakai di pemutar MP3/"MP4" tanpa merek yang tersebar luas pada pertengahan hingga akhir 2000-an: https://en.wikipedia.org/wiki/S1_MP3_player
  • Menurut saya, kenikmatan sejati dari CPU 8-bit tua seperti ini adalah kesederhanaannya, dan fakta bahwa satu orang bisa merangkai komputer dengan tangan
    Di kelas mikroprosesor di universitas, saya membuat board 8088; itu kelas terbaik yang pernah saya ikuti dan menghilangkan aura misterius seputar driver dan hardware. Belakangan saya mencoba mendesain ulangnya dengan KiCAD, menambahkan port ekspansi IO, tata letak yang lebih baik, dan port LCD untuk LCD karakter 2x16
    Saya membuat prototipe di Futurlec, tetapi melakukan kesalahan besar pada penentuan footprint sehingga perlu interposer. Saya sempat sampai menyolder 8284 dan soket IC, lalu kehidupan menyela, dan sampai sekarang masih ada di dalam kotak
    Microcontroller memang hebat karena semuanya ada dalam satu paket, tetapi ada kepuasan luar biasa dalam bisa merancang dan membuat komputer dengan tangan. FPGA sedikit banyak menghidupkan kembali rasa itu, tetapi ekosistem tool-nya sangat mengerikan dan Bizantium

    • Tool open-source memang belum sempurna, tetapi berkembang cepat. Saya bekerja di bidang ini, dan merekomendasikan proyek OpenROAD[1], yang mendukung sintesis penuh serta place-and-route untuk beberapa FPGA
      [1] https://theopenroadproject.org/
  • Setelah saya cari tahu, ternyata Z80 sekarang sudah menjadi CPU berusia 50 tahun; mengejutkan

  • Tata letak rangkaiannya menarik perhatian saya karena terlihat lebih seperti array gerbang yang seragam daripada tata letak kustom yang biasanya terlihat di foto die

    • Ini adalah implementasi Verilog, jadi jauh lebih dekat ke emulator CPU berbasis software daripada chip aslinya. Misalnya, ini tidak terkait dengan tata letak transistor Z80 asli
      Contohnya, “payload instruksi” LD A,(DE) ada di sini
      https://github.com/rejunity/z80-open-silicon/blob/974c7711b2...
      Dan bagian yang mengimplementasikan machine cycle yang sama di emulator software saya ada di sini
      https://github.com/floooh/chips/blob/bd1ecff58337574bb46eba5...
      Keduanya harus mengatur address bus ke isi register DE, dan pada saat yang sama entah di mana mengaktifkan pin MREQ|RD untuk memberi tahu dunia luar bahwa ada pembacaan memori. Di emulator saya, ini terjadi di makro _mread, lalu pada clock cycle berikutnya data bus dibaca masuk ke register A
      Hal yang menarik adalah implementasi Verilog ini tampaknya tidak memperbarui register internal WZ menjadi DE+1. Jadi saya penasaran apakah perilaku yang tidak terdokumentasi sudah diimplementasikan dengan tepat, meskipun pembaruan WZ mungkin ditangani di tempat lain
      Pada akhirnya, jika dari luar terlihat dan berperilaku seperti Z80—yakni pin yang benar aktif pada waktu yang benar—maka implementasi internalnya tidak penting
  • Saya penasaran sejauh mana kompatibilitas dengan Z80 asli. Versi asli punya banyak instruksi yang tidak terdokumentasi, dan juga “trap gate” yang terkenal buruk yang mungkin memengaruhi urutan instruksi langka tertentu
    Jika melihat “Oral History Panel on the Founding of the Company and the Development of the Z80 Microprocessor” yang ditautkan di halaman tersebut, mungkin memang ada desain untuk membedakan versi asli dari clone

  • Terlihat keren. Saya dulu ada di tim awal efabless.com, di sisi EDA open-source

  • Saya pernah mendengar cerita tentang ALU 4-bit pada Z80. Setahu saya strukturnya dipakai dua kali untuk operasi 8-bit, dan saya penasaran apakah ini dianggap bottleneck besar
    Saya juga penasaran apakah belakangan ada ekstensi yang menambahkan operasi integer dengan lebar bit lebih besar. Saya ingin tahu apakah versi open-source dari chip ini bisa memungkinkan fitur dan varian baru

    • Bukan bottleneck besar. Instruksi ALU yang memakai register sebagai sumber sudah berjalan secepat mungkin, yaitu dalam 4 clock cycle. Durasi ini sama dengan panjang “machine cycle” untuk mengambil instruksi
      Dari sudut pandang lain, adanya ALU 8-bit tidak akan membuat instruksi aritmetika menjadi lebih cepat, tetapi akan membutuhkan transistor dua kali lebih banyak
      ALU 4-bit hanyalah detail implementasi internal yang tidak terlihat dari luar. Bisa dibilang begitu, kecuali keberadaan flag half-carry yang menunjukkan carry dari nibble rendah ke nibble tinggi
      Jika menginginkan pengganti CPU yang bisa langsung dipasang ke komputer rumahan lama, timing instruksi asli harus dipertahankan. Jika tidak, software yang bergantung pada cycle counting tidak akan berjalan. Namun pada ZX Spectrum, masalah ini mungkin lebih ringan karena tidak memiliki hardware video programmable seperti perangkat semacam Amstrad CPC
      eZ80 adalah desain yang lebih modern dan efisien, termasuk ALU yang lebih lebar: https://en.wikipedia.org/wiki/Zilog_eZ80. Tetapi untuk menghidupkan kembali komputer rumahan lama, itu bukan opsi; yang dibutuhkan adalah clone Z80 yang akurat, yang menyamai timing asli hingga perilaku yang tidak terdokumentasi
    • Netburst P4 juga menjalankan ALU 16-bit selebar setengah pada 2x frekuensi clock. Dalam praktiknya, seperti DDR RAM, clock diberikan pada kedua edge, sehingga operasi ALU yang memiliki carry/borrow di antara kedua separuh membutuhkan satu cycle tambahan: https://www.realworldtech.com/isscc-2001/7/
  • Saya penasaran apakah ada yang tahu kira-kira kecepatan clock seperti apa yang bisa diharapkan dari ini

    • Di halaman ini tertulis 50 MHz
      https://github.com/rejunity/z80-open-silicon/blob/main/docs/...
    • Jika merancang prosesor kompatibel baru untuk sistem lama, faktor pembatasnya kemungkinan adalah bus memori. Untuk mencapai kecepatan tinggi, cache diperlukan
      Cache harus mengetahui semua perpindahan bank yang dilakukan sistem, dan juga memahami bagaimana bank memori dipetakan ke ruang memori
      Memori read-only biasa dapat di-cache. RAM biasa yang tidak dibagi dengan perangkat lain juga dapat di-cache. I/O yang dipetakan ke memori tidak boleh di-cache
      RAM yang dibagi dengan perangkat lain tetapi tidak ditulis oleh perangkat tersebut, seperti memori video, bisa menggunakan cache write-through dan cache baca penuh. RAM bersama yang dapat ditulis oleh perangkat lain tidak boleh di-cache