1 पॉइंट द्वारा GN⁺ 2024-04-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Zilog द्वारा 15 अप्रैल 2024 को Z80 के End-of-Life की घोषणा के बाद, इस project का लक्ष्य Z80 का विकल्प बनने वाला Free and Open Source Silicon(FOSSi) implementation बनाना है
  • लक्ष्य ऐसा pin-compatible drop-in replacement विकसित करना है, जिसे ZX Spectrum, RC2014 जैसे 8-bit computers और DIY kits में इस्तेमाल किया जा सके
  • implementation Guy Hutchison के TV80 Verilog core पर आधारित है, और OpenROAD व SKY130·SG13·GF180 जैसे open PDK का उपयोग करके वास्तविक सिलिकॉन में synthesize किया जाता है
  • 2025 में पहले दो tapeout chips deliver हुए, पहला SKY130 Tiny Tapeout 7 सिलिकॉन FUNCTIONAL स्थिति में है और QFN64 40-pin exposed version भी delivery के बाद testing में है
  • testing में Z80, RP2040/RP2350 को RAM की तरह इस्तेमाल करके communicate करता है, DAA instruction bug ठीक किया गया है, लेकिन ZEXALL के 2 undocumented flag tests अभी भी fail हो रहे हैं

Project का लक्ष्य और मौजूदा स्थिति

  • rejunity/z80-open-silicon Zilog Z80 का आधुनिक, मुफ़्त open source silicon clone बनाने वाला project है
  • Zilog ने 15 अप्रैल 2024 को Z80 के End-of-Life की घोषणा की
  • project का लक्ष्य है कि open source और hardware preservation community Z80 का FOSSi replacement उपलब्ध कराए
  • 2025 में पहले दो tapeout chips deliver हुए, chips काम कर रहे हैं और अभी testing में हैं
  • फिलहाल GF180MCU के लिए DIP40 version पर काम चल रहा है

Silicon implementation का तरीका

  • target hardware एक ऐसा chip है जिसे 8-bit home computers और हाल के DIY computer kits में drop-in Z80 replacement के रूप में इस्तेमाल किया जा सके
    • उदाहरण के तौर पर ZX Spectrum और RC2014 दिए गए हैं
  • implementation OpenROAD flow और open source PDK का उपयोग करके production-ready silicon synthesize करता है
  • Tiny Tapeout infrastructure का उपयोग कई designs को साथ bundle कर Skywater Foundries में वास्तविक chip manufacturing cost घटाने के लिए किया जाता है
  • आधार CPU core Guy Hutchison का TV80 Verilog core है

Supported PDK और tapeout

  • supported open PDK 3 हैं
    • SKY130: SkyWater Technology Foundry का 130nm node
    • SG13: IHP Foundry का BiCMOS 130nm node
    • GF180: Global Foundry का 180nm node
  • tapeout status
    • FUNCTIONAL: Tiny Tapeout 7 के जरिए 130nm SKY130 का पहला silicon tapeout
    • DELIVERED/TESTING: eFabless CI2406 shuttle के जरिए 40-pin fully exposed QFN64 package, 130nm SKY130 process
    • SG13g2 24-pin multiplexed version के लिए IHP 2024 experimental shuttle entry है, और IHP 2025a shuttle version deliver हो चुका है
    • WIP: Wafer.Space GF180MCU Run 1 के जरिए COB-based classic DIP40 form factor

पहला FOSSi Z80 silicon

  • पहला iteration Tiny Tapeout infrastructure और 130nm process से विकसित किया गया और 0.064mm² die area में फिट हुआ
  • पहला tapeout जून 2024 में eFabless ChipIgnite CI2406 Shuttle में submit किया गया
  • GDSII integrated circuit layout OpenROAD के automated place-and-route flow का result है, और 130nm gate logic elements का उपयोग करता है

Testing और बाकी काम

  • पूरे हो चुके plans
    • Tiny Tapeout 07 के जरिए 130nm node 24-pin revision tapeout
    • eFabless ChipIgnite के जरिए 40-pin fully exposed QFN64 tapeout
    • SKY130 और SG13 tapeout पूरे, GF180 पर काम जारी
    • chip testing की गई
  • testing summary
    • Z80, RP2040/RP2350 को RAM की तरह इस्तेमाल करके communicate करता है
    • ZEXDOC/ZEXALL test suite द्वारा पकड़ा गया DAA instruction bug ठीक किया गया
    • undocumented flags से जुड़े ZEXALL के 2 tests अभी भी fail हो रहे हैं
  • चल रहे या बाकी काम
    • QFN64 से DIP40 में convert करने वाला PCB adapter बनाना
    • COB DIP40 PCB बनाना
    • original Z80 से तुलना करते हुए input/output signal timing test
    • सभी Z80 instructions और ‘illegal’ instructions शामिल करने वाला testbench मजबूत करना
    • Verilog core A-Z80, netlist-based Z80Explorer जैसी दूसरी implementations से comparison
    • original Z80 layout जैसा दिखने वाला gate-level layout बनाना
    • ceramic DIP40 package और project logo/chip art

Code और local execution

  • project overview material के रूप में slide deck और Matthew Venn के साथ चर्चा का video उपलब्ध है
  • मुख्य code locations
    • src/tt_um_rejunity_z80.v: top-level module है, Tiny Tapeout constraints का पालन करता है और output pins को Tiny Tapeout chip के 8 pins पर multiplex करता है
    • src/tv80: core Verilog Z80 implementation
    • src/config.tcl: OpenROAD synthesis और place-and-route settings
    • src/test/test.py: testbench
  • generated layout artifacts gds folder में हैं और KLayout से inspect किए जा सकते हैं
    • Z80 core की GDSII file
    • Tiny Tapeout 07 chip की OASIS file
  • local testing के लिए Tiny Tapeout की test guide follow करने के बाद iverilog, verilator, cocotb, pytest install करें और src में make run करें

Testing target के रूप में देखे जा रहे Z80 devices

  • classic computers और consoles को hardware Z80 replacement के test cases के रूप में सूचीबद्ध किया गया है
    • ZX Spectrum 48K: 3.5MHz Z80
    • ZX Spectrum 128K: 3.54690MHz Z80
    • Amstrad CPC: 4MHz Z80
    • MSX series: 3.579MHz
    • SG-1000, Sega Master System, ColecoVision, TRS-80, Sinclair ZX80/ZX81 आदि
  • हाल के DIY computer kits भी test cases के रूप में दिए गए हैं

References collection

  • Z80 related documents
    • Z80 Datasheet
    • Zilog Users Manual, Mostek Users Manual, Zilog Data Book
    • undocumented instructions, opcode table, timing documents
  • Z80 history और patents
    • Z80 development oral history panel materials
    • M. Shima के microprocessor design materials
    • input voltage spike protection, reset circuit आदि Z80-related expired patents
  • die shots और reverse engineering materials
    • Zilog Z8400, Z84C00, Nintendo Super Game Boy के SGB-CPU 01, Mostek MK3880 आदि die shots
    • Z80 instruction register, bus gates, PLA, register implementation, 4-bit ALU आदि reverse engineering materials
  • existing implementations
    • TV80 Verilog implementation
    • A-Z80
    • Z80Explorer
    • Visual6502.org का online Z80 netlist emulator

1 टिप्पणियां

 
GN⁺ 2024-04-29
Hacker News की टिप्पणियाँ
  • Tiny Tapeout जो कर रहा है, वह शानदार है। किसने सोचा होगा कि makers और students इतने कम पैसे में अपने chip design को सचमुच बनवा पाएँगे
    tools भी बेहतरीन दिखते हैं। 130nm process पर आप अगला Intel CPU तो design नहीं करेंगे, लेकिन Z80 का 0.064 mm² में फिट हो जाना हैरान करने वाला है
    यह भी अच्छी बात है कि official chip अब production में नहीं है, फिर भी एक alternative बचा हुआ है। अब तो chip के ऊपर gold-plated cover वाला वह शानदार purple ceramic package रखने का मन हो रहा है
    https://twitter.com/l_vanek/status/1783557817133039738/photo...
    https://tinytapeout.com/

    • 130nm process को मोटे तौर पर Pentium III era के आसपास माना जा सकता है। बुरा नहीं है
    • clicks बचाने के लिए बता दें, 160 x 100 µm tile + ASIC + demo board की standard कीमत shipping छोड़कर $300 है, और Efabless प्रति व्यक्ति एक order तक shipping छोड़कर $150 की early discount sponsor कर रहा है
      extra tiles $50 प्रति tile से शुरू होते हैं, और extra analog pins $40 प्रति pin से। अगर मैं बहुत गलत नहीं हूँ, तो 160 x 100 µm यानी 0.16 x 0.1 mm है, इसलिए एक tile 0.016 mm² का हुआ, और 0.064 mm² die का मतलब 4 slots इस्तेमाल करना है
  • जिन लोगों को जिज्ञासा हो, उनके लिए: 6502 और उसके कई derivatives अभी भी original developers में से एक द्वारा बनाए जा रहे हैं। इसलिए Z80 के पुराने rival वाली तरफ वैसी चीज़ जल्द होने की संभावना नहीं लगती
    [0] https://www.westerndesigncenter.com/wdc/chips.php

    • दिलचस्प बात यह है कि classic Z80 को सिर्फ 2 हफ्ते पहले discontinue किया गया था
      https://hackaday.com/2024/04/19/end-of-life-for-z80-cpu-and-...
    • 65C02 fail हो सकता है अगर 6502 code undocumented instructions, accidental memory access, BCD operations की cycle timing, BCD operation flags, या interrupt routine में decimal mode set होने पर निर्भर करता हो
    • 65C02 के साथ भी कभी भी यही हो सकता है। Z80 कुछ हफ्ते पहले इसलिए discontinue हुआ क्योंकि fab से अब wafers नहीं मिल पा रहे थे। पुराने process पर बने सभी chips में यह risk है
    • PDIP version discontinue हो रहा है, लेकिन eZ80 अभी भी production में है
      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 सालों में discrete Z80 sales कैसी रही होंगी, यह जानने की जिज्ञासा है। वे किस काम के लिए खरीदे गए, और DIP/PLCC/flatpack का ratio कैसा था, यह भी जानना चाहूँगा
      कहीं न कहीं लाखों pieces घूम रहे होंगे, लेकिन अगर वे Mouser या Farnell जैसे distributors से गायब हो जाएँ, तो जिन्हें जरूरत है उनके पास eBay जैसी जगहें ही बचती हैं, और वह काफी hit-or-miss हो जाता है
  • Z80 ZX Spectrum का CPU था। यादें ताजा हो गईं
    https://en.wikipedia.org/wiki/ZX_Spectrum

    • सच में कई अच्छी machines थीं। Amstrad CPC series, कई Sega consoles, शुरुआती MSX machines, और बेशक Tatung Einstein भी। 3-inch disk machines, एक हो जाओ
    • TRS-80 और उसके clones भी थे, और Australia और New Zealand में Dick Smith System-80 था। EDTASM में programming करने की बहुत अच्छी यादें हैं
      सिर्फ cassette drive था, इसलिए अगर code गलत हो जाता तो आम तौर पर reset दबाकर tape से EDTASM और अपना code फिर से load करना पड़ता था
    • मुझे लगा था कि Game Boy में भी यही इस्तेमाल हुआ था, लेकिन लगता है कि कई similarities के बावजूद वह मूल रूप से compatible नहीं है[0]
      0. https://forums.nesdev.org/viewtopic.php?t=18335
    • यह CPU मेरे पहले computer Coleco ADAM में भी था
      https://en.wikipedia.org/wiki/Coleco_Adam
      बचपन में खरीदी गई Programming the Z80 किताब भी अभी तक मेरे पास है
      https://en.wikipedia.org/wiki/Programming_the_Z80
    • 2000s के mid-late दौर में व्यापक रूप से फैले बिना नाम वाले MP3/"MP4" players में भी यह काफी इस्तेमाल हुआ था: https://en.wikipedia.org/wiki/S1_MP3_player
  • ऐसे पुराने 8-bit CPU की असली खुशी उसकी सरलता में है, और इस बात में कि एक व्यक्ति अपने हाथों से wiring करके कंप्यूटर बना सकता है
    यूनिवर्सिटी के microprocessor class में मैंने 8088 board बनाया था; वह मेरे लिए लिए गए courses में सबसे अच्छा था और उसने drivers और hardware को लेकर रहस्य जैसा भाव हटा दिया। बाद में मैंने KiCAD में इसे फिर से design करने की कोशिश की, IO expansion port, बेहतर layout, और 2x16 character LCD के लिए LCD port जोड़ा
    Futurlec से prototype बनवाया, लेकिन footprint तय करने में बड़ी गलती कर दी, इसलिए interposer की जरूरत पड़ गई। 8284 और IC socket solder करने तक पहुँचा था, फिर जिंदगी बीच में आ गई और वह आज भी डिब्बे में पड़ा है
    Microcontroller शानदार हैं क्योंकि सब कुछ एक package में आ जाता है, लेकिन अपने हाथों से computer design और build कर पाने में जबरदस्त संतोष है। FPGA कुछ हद तक वह एहसास वापस लाते हैं, लेकिन उनका toolchain Byzantine ढंग से भयानक है

    • Open source tools परफेक्ट नहीं हैं, लेकिन तेजी से बढ़ रहे हैं। मैं इसी क्षेत्र में काम करता हूँ, और कुछ FPGA के लिए पूरी synthesis और place-and-route support देने वाले OpenROAD[1] project की सिफारिश करूँगा
      [1] https://theopenroadproject.org/
  • देखकर हैरानी हुई कि Z80 अब 50 साल पुराना CPU है

  • Circuit layout इसलिए ध्यान खींचता है क्योंकि यह die photos में दिखने वाले custom layout की बजाय uniform gate array जैसा दिखता है

    • यह Verilog implementation है, इसलिए असली chip की तुलना में software CPU emulator के कहीं ज्यादा करीब है। उदाहरण के लिए, इसका original Z80 के transistor layout से कोई संबंध नहीं है
      जैसे LD A,(DE) “instruction payload” यहाँ है
      https://github.com/rejunity/z80-open-silicon/blob/974c7711b2...
      और उसी machine cycle को मेरे software emulator में implement किया गया हिस्सा यहाँ है
      https://github.com/floooh/chips/blob/bd1ecff58337574bb46eba5...
      दोनों में address bus को DE register की contents पर set किया जाता है, और साथ ही बाहर memory read बताने के लिए MREQ|RD pins को कहीं set करना पड़ता है। मेरे emulator में यह _mread macro में होता है, और अगले clock cycle में data bus को A register में read कर लिया जाता है
      दिलचस्प बात यह है कि Verilog implementation internal WZ register को DE+1 पर update करता हुआ नहीं दिखता। इसलिए मुझे आश्चर्य है कि undocumented behavior सही से implement हुआ है या नहीं, हालांकि WZ update कहीं और handle हो सकता है
      आखिर में, अगर बाहर से यह Z80 जैसा दिखता और behave करता है—यानी सही pins सही समय पर active होते हैं—तो अंदरूनी implementation मायने नहीं रखता
  • सोच रहा हूँ कि original Z80 compatibility कितनी होगी। मूल chip में बहुत से undocumented instructions थे, और एक कुख्यात “trap gate” भी था, जिसका असर कुछ rare instruction sequences पर पड़ा होगा
    Page पर linked “Oral History Panel on the Founding of the Company and the Development of the Z80 Microprocessor” देखें तो लगता है कि यह original और clones में फर्क करने के लिए design किया गया हो सकता है

  • अच्छा लग रहा है। मैं शुरुआती efabless.com team में था, और open source EDA side पर काम करता था

  • Z80 के 4-bit ALU की बात सुनी है। मेरी समझ है कि 8-bit operations के लिए इसे दो बार इस्तेमाल किया जाता था; सोच रहा हूँ कि क्या इसे बड़ा bottleneck माना जाता था
    यह भी जानना चाहूँगा कि बाद में बड़े bit-width integer operations जोड़ने वाले extensions आए थे या नहीं। और क्या chip का open source version नए features और variants को संभव बना सकता है

    • बड़ा bottleneck नहीं है। Register को source के रूप में इस्तेमाल करने वाले ALU instructions पहले से ही जितनी तेजी से हो सकते हैं, यानी 4 clock cycles में execute होते हैं। यह समय instruction fetch “machine cycle” की लंबाई के बराबर है
      दूसरे नजरिए से देखें तो 8-bit ALU होने से arithmetic instructions तेज नहीं होते, बल्कि transistors दोगुने लगते
      4-bit ALU सिर्फ internal implementation detail है, जो बाहर से दिखाई नहीं देता। बस lower nibble से upper nibble में carry जाने को दिखाने वाले half-carry flag की मौजूदगी को छोड़ दें तो ऐसा कह सकते हैं
      अगर पुराने home computer में सीधे plug-in CPU replacement चाहिए, तो original instruction timing बनाए रखनी होगी। वरना cycle counting पर निर्भर software काम नहीं करेगा। हालांकि ZX Spectrum में Amstrad CPC जैसे devices की तरह programmable video hardware नहीं है, इसलिए यह समस्या कम हो सकती है
      eZ80 ज्यादा modern और efficient design है, और इसमें wider ALU भी शामिल है: https://en.wikipedia.org/wiki/Zilog_eZ80। लेकिन पुराने home computers को revive करने के लिए यह विकल्प नहीं है; वहाँ original timing और undocumented behavior तक match करने वाला accurate Z80 clone चाहिए
    • Netburst P4 ने भी आधी width वाला 16-bit ALU clock frequency के 2x पर चलाया था। असल में यह DDR RAM की तरह दोनों edges पर clocked था, इसलिए जिन ALU operations में दोनों halves के बीच carry/borrow होता था, उनमें एक cycle ज्यादा लगता था: https://www.realworldtech.com/isscc-2001/7/
  • सोच रहा हूँ कि क्या किसी को पता है कि इससे कितनी clock speed की उम्मीद की जा सकती है

    • इस पेज पर 50 MHz लिखा है
      https://github.com/rejunity/z80-open-silicon/blob/main/docs/...
    • अगर पुराने systems के लिए नया compatible processor design किया जाए, तो limiting factor memory bus होगा। ज़्यादा speed चाहिए तो cache की ज़रूरत होगी
      cache को system द्वारा किए जाने वाले हर bank switching का पता होना चाहिए, और यह भी समझना चाहिए कि memory banks memory space में कैसे mapped हैं
      सामान्य read-only memory cache की जा सकती है। सामान्य RAM जो दूसरे devices के साथ shared नहीं है, उसे भी cache किया जा सकता है। memory-mapped IO को cache नहीं करना चाहिए
      video memory जैसी RAM, जो दूसरे device के साथ shared तो है लेकिन वह device उसमें write नहीं करता, उसके लिए write-through cache और full read cache संभव है। shared RAM जिसमें दूसरा device write कर सकता है, उसे cache नहीं करना चाहिए