Zilog Z80 CPU - आधुनिक, मुफ़्त और open source सिलिकॉन clone
(github.com/rejunity)- 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 हैं
- 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
gdsfolder में हैं और KLayout से inspect किए जा सकते हैं- Z80 core की GDSII file
- Tiny Tapeout 07 chip की OASIS file
- local testing के लिए Tiny Tapeout की test guide follow करने के बाद
iverilog,verilator,cocotb,pytestinstall करें औरsrcमेंmakerun करें
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 के रूप में दिए गए हैं
- RC2014 modular computer: 8K ROM, 32K RAM, 7.3728MHz
- Zeal 8-bit Computer: 32K ROM, 128KB~512KB RAM, 10MHz
- LiNC80 microcomputer kit: 16K/64K ROM, 64K RAM, 7.3728MHz
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 टिप्पणियां
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/
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
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
कहीं न कहीं लाखों pieces घूम रहे होंगे, लेकिन अगर वे Mouser या Farnell जैसे distributors से गायब हो जाएँ, तो जिन्हें जरूरत है उनके पास eBay जैसी जगहें ही बचती हैं, और वह काफी hit-or-miss हो जाता है
Z80 ZX Spectrum का CPU था। यादें ताजा हो गईं
https://en.wikipedia.org/wiki/ZX_Spectrum
सिर्फ cassette drive था, इसलिए अगर code गलत हो जाता तो आम तौर पर reset दबाकर tape से EDTASM और अपना code फिर से load करना पड़ता था
0. https://forums.nesdev.org/viewtopic.php?t=18335
https://en.wikipedia.org/wiki/Coleco_Adam
बचपन में खरीदी गई Programming the Z80 किताब भी अभी तक मेरे पास है
https://en.wikipedia.org/wiki/Programming_the_Z80
ऐसे पुराने 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 ढंग से भयानक है
[1] https://theopenroadproject.org/
देखकर हैरानी हुई कि Z80 अब 50 साल पुराना CPU है
Circuit layout इसलिए ध्यान खींचता है क्योंकि यह die photos में दिखने वाले custom layout की बजाय uniform gate array जैसा दिखता है
जैसे 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 को संभव बना सकता है
दूसरे नजरिए से देखें तो 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 चाहिए
सोच रहा हूँ कि क्या किसी को पता है कि इससे कितनी clock speed की उम्मीद की जा सकती है
https://github.com/rejunity/z80-open-silicon/blob/main/docs/...
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 नहीं करना चाहिए