1 puan yazan GN⁺ 2024-04-29 | 1 yorum | WhatsApp'ta paylaş
  • Zilog’un 15 Nisan 2024’te Z80 için End-of-Life duyurusu yapmasının ardından bu proje, Z80’in yerini alacak bir Free and Open Source Silicon (FOSSi) uygulaması geliştirmeyi hedefliyor
  • Amaç, ZX Spectrum ve RC2014 gibi 8 bit bilgisayarlarda ve DIY kitlerde kullanılabilecek pin uyumlu, tak-çalıştır bir yedek geliştirmek
  • Uygulama, Guy Hutchison’ın TV80 Verilog çekirdeğini temel alıyor; OpenROAD ile SKY130, SG13 ve GF180 gibi açık PDK’ler kullanılarak gerçek silikona sentezleniyor
  • 2025’te ilk iki tapeout çipi teslim edildi; ilk SKY130 Tiny Tapeout 7 silikonu FUNCTIONAL durumda, QFN64 40 pin tamamen dışa açılmış sürümü de teslimat sonrası test ediliyor
  • Testlerde Z80, RP2040/RP2350’yi RAM gibi kullanarak iletişim kuruyor; DAA komutu hatası düzeltildi ancak ZEXALL’ın belgelenmemiş 2 bayrak testi hâlâ başarısız oluyor

Proje hedefi ve mevcut durum

  • rejunity/z80-open-silicon, Zilog Z80’in modern, ücretsiz ve açık kaynaklı bir silikon klonunu oluşturma projesidir
  • Zilog, 15 Nisan 2024’te Z80 için End-of-Life duyurusu yaptı
  • Proje, açık kaynak ve donanım koruma topluluklarının Z80 için bir FOSSi alternatifi sunması gerektiği hedefini taşıyor
  • 2025’te ilk iki tapeout çipi teslim edildi; çipler çalışır durumda ve şu anda test ediliyor
  • Şu anda GF180MCU için DIP40 sürümü üzerinde çalışılıyor

Silikon uygulama yöntemi

  • Hedef donanım, 8 bit ev bilgisayarlarında ve yeni DIY bilgisayar kitlerinde tak-çalıştır Z80 yedeği olarak kullanılan bir çip
  • Uygulama, üretilebilir silikon sentezlemek için OpenROAD akışını ve açık kaynak PDK’leri kullanıyor
  • Tiny Tapeout altyapısı, birden fazla tasarımı birlikte paketleyerek Skywater Foundries’de gerçek çip üretim maliyetini düşürmek için kullanılıyor
  • Temel CPU çekirdeği, Guy Hutchison’ın TV80 Verilog çekirdeği

Desteklenen PDK’ler ve tapeout’lar

  • Desteklenen 3 açık PDK var
    • SKY130: SkyWater Technology Foundry’nin 130 nm düğümü
    • SG13: IHP Foundry’nin BiCMOS 130 nm düğümü
    • GF180: Global Foundry’nin 180 nm düğümü
  • Tapeout ilerleme durumu
    • FUNCTIONAL: Tiny Tapeout 7 üzerinden 130 nm SKY130 ilk silikon tapeout’u
    • DELIVERED/TESTING: eFabless CI2406 shuttle üzerinden 40 pin tamamen dışa açılmış QFN64 paket, 130 nm SKY130 süreci
    • SG13g2 24 pin çoklamalı sürüm için IHP 2024 deneysel shuttle girdisi var; IHP 2025a shuttle sürümü teslim edildi
    • WIP: Wafer.Space GF180MCU Run 1 üzerinden COB tabanlı klasik DIP40 form faktörü

İlk FOSSi Z80 silikonu

  • İlk iterasyon, Tiny Tapeout altyapısı ve 130 nm süreç ile geliştirildi; 0,064 mm² kalıp alanına sığıyor
  • İlk tapeout, Haziran 2024’te eFabless ChipIgnite CI2406 Shuttle’a gönderildi
  • GDSII entegre devre yerleşimi, OpenROAD’un otomatik yerleştirme-yönlendirme akışının sonucu; 130 nm kapı mantık öğelerini kullanıyor

Testler ve kalan işler

  • Tamamlanan planlar
    • Tiny Tapeout 07 üzerinden 130 nm düğüm 24 pin revizyon tapeout’u
    • eFabless ChipIgnite üzerinden 40 pin tamamen dışa açılmış QFN64 tapeout’u
    • SKY130 ve SG13 tapeout’ları tamamlandı, GF180 üzerinde çalışılıyor
    • Çip testi yapıldı
  • Test özeti
    • Z80, RP2040/RP2350’yi RAM gibi kullanarak iletişim kuruyor
    • ZEXDOC/ZEXALL test paketinin yakaladığı DAA komutu hatası düzeltildi
    • Belgelenmemiş bayraklarla ilgili 2 ZEXALL testi hâlâ başarısız oluyor
  • Devam eden veya kalan işler
    • QFN64’ü DIP40’a dönüştüren PCB adaptörü üretimi
    • COB DIP40 PCB üretimi
    • Orijinal Z80 ile karşılaştırmalı giriş/çıkış sinyali zamanlama testi
    • Tüm Z80 komutlarını ve “illegal” komutları içeren testbench’in güçlendirilmesi
    • Verilog çekirdeği A-Z80, netlist tabanlı Z80Explorer gibi diğer uygulamalarla karşılaştırma
    • Orijinal Z80 yerleşimine benzeyen kapı seviyesi yerleşim oluşturma
    • Seramik DIP40 paket ve proje logosu/çip sanatı

Kod ve yerel çalıştırma

  • Proje genel bakışı materyali olarak bir slayt destesi ve Matthew Venn ile yapılan görüşmenin videosu sunuluyor
  • Başlıca kod konumları
  • Oluşturulan yerleşim çıktıları gds klasöründe yer alıyor ve KLayout ile incelenebilir
    • Z80 çekirdeğinin GDSII dosyası
    • Tiny Tapeout 07 çipinin OASIS dosyası
  • Yerel testler, Tiny Tapeout’un test kılavuzu izlendikten sonra iverilog, verilator, cocotb, pytest kurulup src içinde make çalıştırılarak yapılır

Test hedefi olarak görülen Z80 cihazları

  • Klasik bilgisayarlar ve konsollar, donanımsal Z80 yedeği için test senaryoları olarak listeleniyor
    • ZX Spectrum 48K: 3.5 MHz Z80
    • ZX Spectrum 128K: 3.54690 MHz Z80
    • Amstrad CPC: 4 MHz Z80
    • MSX serisi: 3.579 MHz
    • SG-1000, Sega Master System, ColecoVision, TRS-80, Sinclair ZX80/ZX81 vb.
  • Yeni DIY bilgisayar kitleri de test senaryosu olarak gösteriliyor

Kaynak derlemesi

  • Z80 ile ilgili belgeler
    • Z80 Datasheet
    • Zilog Users Manual, Mostek Users Manual, Zilog Data Book
    • Belgelenmemiş komutlar, opcode tablosu, zamanlama belgeleri
  • Z80 tarihi ve patentleri
    • Z80 geliştirme sözlü tarih paneli materyalleri
    • M. Shima’nın mikroişlemci tasarım materyalleri
    • Giriş voltajı sıçraması koruması, reset devresi gibi süresi dolmuş Z80 ile ilgili patentler
  • Kalıp görüntüleri ve tersine mühendislik materyalleri
    • Zilog Z8400, Z84C00, Nintendo Super Game Boy’un SGB-CPU 01’i, Mostek MK3880 vb. kalıp görüntüleri
    • Z80 komut yazmacı, veri yolu kapıları, PLA, yazmaç uygulaması, 4 bit ALU vb. tersine mühendislik materyalleri
  • Mevcut uygulamalar
    • TV80 Verilog uygulaması
    • A-Z80
    • Z80Explorer
    • Visual6502.org’un çevrimiçi Z80 netlist emülatörü

1 yorum

 
GN⁺ 2024-04-29
Hacker News yorumları
  • Tiny Tapeout'un yaptığı iş harika. Maker'ların ve öğrencilerin bu kadar az parayla kendi çip tasarımlarını gerçekten üretebileceğini kim düşünürdü?
    Araçlar da çok iyi görünüyor. 130nm süreç ile bir sonraki Intel CPU'sunu tasarlayamazsınız, ama Z80'in 0,064 mm²'ye sığması şaşırtıcı
    Resmî çip artık üretilmiyorken bir alternatifin kalması da güzel. Şimdi üstünde altın kaplama kapak olan o havalı mor seramik paketten istiyorum
    https://twitter.com/l_vanek/status/1783557817133039738/photo...
    https://tinytapeout.com/

    • 130nm süreç kabaca Pentium III dönemi gibi düşünülebilir. Fena değil
    • Tıklama zahmetini azaltmak gerekirse, 160 x 100 µm tile + ASIC + demo board için standart fiyat, kargo hariç 300 dolar; Efabless da kişi başı bir siparişle sınırlı olmak üzere kargo hariç 150 dolarlık erken dönem indirimini destekliyor
      Ek tile'lar adet başına 50 dolardan, ek analog pinler pin başına 40 dolardan başlıyor. Çok yanılmıyorsam 160 x 100 µm, 0,16 x 0,1 mm demek; yani bir tile 0,016 mm² ve 0,064 mm²'lik die 4 slot kullanıyor
  • Merak edenler için, 6502 ve çeşitli türevleri hâlâ ilk geliştiricilerinden biri tarafından üretiliyor. Bu yüzden Z80'in ezelî rakibi tarafında benzer bir şeyin yakında yaşanacağını sanmıyorum
    [0] https://www.westerndesigncenter.com/wdc/chips.php

  • Z80, ZX Spectrum'un CPU'suydu. Anılar canlandı
    https://en.wikipedia.org/wiki/ZX_Spectrum

    • Gerçekten çok sayıda iyi makine vardı. Amstrad CPC serisi, çeşitli Sega konsolları, ilk MSX cihazları ve elbette Tatung Einstein. 3 inç diskli makineler, birleşin
    • TRS-80 ve klonları da vardı; Avustralya ve Yeni Zelanda'da Dick Smith System-80 vardı. EDTASM ile programlama konusunda çok güzel anılarım var
      Sadece kaset sürücüm olduğu için kod yanlışsa genelde reset'e basıp EDTASM'i ve kendi kodumu teypten yeniden yüklemem gerekirdi
    • Game Boy'da da kullanıldığını sanıyordum, ama pek çok benzerlik olsa da temelde uyumlu değil gibi görünüyor[0]
      0. https://forums.nesdev.org/viewtopic.php?t=18335
    • İlk bilgisayarım olan Coleco ADAM'daki CPU da buydu
      https://en.wikipedia.org/wiki/Coleco_Adam
      Çocukken aldığım Programming the Z80 kitabı hâlâ duruyor
      https://en.wikipedia.org/wiki/Programming_the_Z80
    • 2000'lerin ortalarından sonlarına doğru yaygın olan isimsiz MP3/"MP4" player'larda da sıkça yer aldı: https://en.wikipedia.org/wiki/S1_MP3_player
  • Bu eski 8 bit CPU’ların asıl keyfinin basitlikte ve tek bir kişinin bir bilgisayarı elle kablolayarak yapabilmesinde olduğunu düşünüyorum
    Üniversitedeki mikroişlemci dersinde bir 8088 kartı yapmıştım; aldığım en iyi derslerden biriydi ve sürücüler ile donanımın etrafındaki gizem perdesini kaldırmıştı. Daha sonra KiCAD ile yeniden tasarlamayı denedim; IO genişletme portları, daha iyi bir yerleşim ve 2x16 karakter LCD için bir LCD portu ekledim
    Futurlec’te prototip ürettirdim ama footprint atamasında büyük bir hata yaptığım için interposer gerekti; 8284’ü ve IC soketlerini lehimleme aşamasına kadar geldikten sonra hayat araya girdi ve hâlâ bir kutunun içinde duruyor
    Mikrodenetleyiciler her şeyin tek bir pakette olması nedeniyle harika, ama bir bilgisayarı elle tasarlayıp yapabilmenin verdiği muazzam bir tatmin var. FPGA’lar bu hissi bir ölçüde geri getiriyor, fakat araç ekosistemi Bizans usulü korkunç derecede karmaşık

    • Açık kaynak araçlar mükemmel değil ama hızla gelişiyor. Bu alanda çalışıyorum ve bazı FPGA’lar için uçtan uca sentez ile yerleştirme-yönlendirme desteği sunan OpenROAD[1] projesini öneririm
      [1] https://theopenroadproject.org/
  • Bakınca Z80’in artık 50 yıllık bir CPU olduğunu görmek şaşırtıcı

  • Devre yerleşimi, genelde die fotoğraflarında görülen özel yerleşimden çok tekdüze bir gate array gibi göründüğü için dikkatimi çekti

    • Bu bir Verilog uygulaması olduğu için gerçek bir çipten çok yazılım CPU emülatörüne çok daha yakın. Örneğin özgün Z80’in transistör yerleşimiyle bir ilgisi yok
      Örneğin LD A,(DE) “komut payload”u burada
      https://github.com/rejunity/z80-open-silicon/blob/974c7711b2...
      Aynı makine çevrimini kendi yazılım emülatörümde uyguladığım kısım da burada
      https://github.com/floooh/chips/blob/bd1ecff58337574bb46eba5...
      İkisi de adres veriyolunu DE yazmacının içeriğine ayarlıyor ve aynı anda dışarıya bellek okumasını bildirmek için MREQ|RD pinlerini bir yerlerde ayarlamak zorunda. Benim emülatörümde bu _mread makrosunda oluyor; sonraki clock çevriminde de veri veriyolu A yazmacına okunuyor
      İlginç olan, Verilog uygulamasının iç WZ yazmacını DE+1 olarak güncellemiyor gibi görünmesi. Bu yüzden belgelenmemiş davranışın doğru uygulanıp uygulanmadığını merak ediyorum; gerçi WZ güncellemesi başka bir yerde ele alınıyor olabilir
      Sonuçta dışarıdan Z80 gibi görünüyor ve davranıyorsa, yani doğru pinler doğru zamanda etkinleşiyorsa, iç uygulama önemli değil
  • Özgün Z80 ile uyumluluğunun ne düzeyde olacağını merak ediyorum. Orijinalinde belgelenmemiş çok sayıda komut vardı ve belirli nadir komut dizilerini etkilemiş olabilecek kötü şöhretli bir “trap gate” de bulunuyordu
    Sayfada bağlantısı verilen “Oral History Panel on the Founding of the Company and the Development of the Z80 Microprocessor”a bakınca, bunun orijinal ile klonları ayırt etmeye yönelik bir tasarım olmuş olabileceği anlaşılıyor

  • Harika görünüyor. İlk efabless.com ekibindeydim ve açık kaynak EDA tarafındaydım

  • Z80’in 4 bit ALU’su hakkında bir şeyler duymuştum. 8 bit işlemler için iki kez kullanılan bir yapı olduğunu biliyorum; bunun büyük bir darboğaz sayılıp sayılmadığını merak ediyorum
    Daha sonra daha büyük bit genişliğinde tamsayı işlemleri ekleyen uzantılar olup olmadığını da merak ediyorum. Çipin açık kaynak sürümünün yeni özellikleri ve varyantları mümkün kılıp kılmayacağını da bilmek isterim

    • Büyük bir darboğaz değil. Kaynak olarak yazmaç kullanan ALU komutları zaten mümkün olan en hızlı şekilde, yani 4 clock çevriminde çalışıyor. Bu süre, komut getirme “makine çevrimi”nin uzunluğuyla aynı
      Başka bir açıdan bakarsak, 8 bit ALU olsaydı aritmetik komutları daha hızlı yapmazdı; bunun yerine iki kat transistör gerektirirdi
      4 bit ALU, dışarıdan görünmeyen bir iç uygulama ayrıntısından ibaret. Düşük nibble’dan yüksek nibble’a geçen carry’yi gösteren half-carry bayrağının varlığı dışında böyle denebilir
      Eski ev bilgisayarlarına doğrudan takılacak bir CPU yedeği istiyorsanız özgün komut zamanlamasını korumanız gerekir. Aksi halde cycle countinge dayanan yazılımlar çalışmaz. Ancak ZX Spectrum’da Amstrad CPC gibi cihazlardaki türden programlanabilir video donanımı olmadığından bu sorun daha az olabilir
      eZ80 daha modern ve verimli bir tasarım; daha geniş bir ALU da içeriyor: https://en.wikipedia.org/wiki/Zilog_eZ80. Ama eski ev bilgisayarlarını yaşatmak için bir seçenek değil; özgün zamanlamaya ve belgelenmemiş davranışlara kadar uyan, doğru bir Z80 klonu gerekir
    • Netburst P4 de yarı genişlikte, 16 bit ALU’yu clock frekansının 2 katında çalıştırıyordu. Aslında DDR RAM gibi iki kenarda da clock uygulanıyordu; bu yüzden iki yarı arasında carry/borrow olan ALU işlemleri bir çevrim daha uzun sürüyordu: https://www.realworldtech.com/isscc-2001/7/
  • Bununla ne kadar saat hızı beklenebileceğini bilen var mı merak ediyorum

    • Bu sayfada 50 MHz yazıyor
      https://github.com/rejunity/z80-open-silicon/blob/main/docs/...
    • Eski sistemler için yeni ve uyumlu bir işlemci tasarlıyorsanız sınırlayıcı faktör bellek veri yolu olacaktır. Yüksek hızlara çıkmak için önbellek gerekir
      Önbelleğin, sistemin yaptığı tüm banka geçişlerinden haberdar olması ve bellek bankalarının bellek alanına nasıl eşlendiğini de anlaması gerekir
      Normal salt okunur bellek önbelleğe alınabilir. Başka cihazlarla paylaşılmayan normal RAM de önbelleğe alınabilir. Bellek eşlemeli G/Ç önbelleğe alınmamalıdır
      Video belleği gibi başka bir cihazla paylaşılan ama o cihazın yazmadığı RAM için write-through önbellek ve tam okuma önbelleği kullanılabilir. Başka bir cihazın yazabildiği paylaşılan RAM önbelleğe alınmamalıdır