CPU Zilog Z80 - Klon silikon modern, gratis, dan open source
(github.com/rejunity)- 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
- Contohnya adalah ZX Spectrum dan RC2014
- 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
- 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
- src/tt_um_rejunity_z80.v: modul tingkat atas, mengikuti batasan Tiny Tapeout dan memultipleks pin output ke 8 pin chip Tiny Tapeout
- src/tv80: implementasi inti Verilog Z80
- src/config.tcl: konfigurasi sintesis serta placement-and-routing OpenROAD
- src/test/test.py: testbench
- Artefak layout yang dihasilkan ada di folder
gdsdan 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,pytestdan jalankanmakedisrc
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
- RC2014 modular computer: ROM 8K, RAM 32K, 7.3728MHz
- Zeal 8-bit Computer: ROM 32K, RAM 128KB~512KB, 10MHz
- LiNC80 microcomputer kit: ROM 16K/64K, RAM 64K, 7.3728MHz
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
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/
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
https://hackaday.com/2024/04/19/end-of-life-for-z80-cpu-and-...
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
Pasti ada jutaan unit beredar di suatu tempat, tetapi kalau sudah menghilang dari distributor seperti Mouser atau Farnell, bagi yang membutuhkannya tinggal opsi semacam eBay, dan hasilnya cukup untung-untungan
Z80 adalah CPU ZX Spectrum. Membawa kembali kenangan
https://en.wikipedia.org/wiki/ZX_Spectrum
Karena hanya punya drive kaset, kalau kodenya salah biasanya harus menekan reset lalu memuat ulang EDTASM dan kode saya dari tape
0. https://forums.nesdev.org/viewtopic.php?t=18335
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
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
[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
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
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
Saya penasaran apakah ada yang tahu kira-kira kecepatan clock seperti apa yang bisa diharapkan dari ini
https://github.com/rejunity/z80-open-silicon/blob/main/docs/...
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