# Üretim, doğrulama ve routing akışı ## Gereksinimler - KiCad 10.x ve `kicad-cli`. - KiCad ile aynı sürümden `/usr/bin/python3` ve `pcbnew` modülü. - Python paketleri: `pip install -r requirements.txt`. - Yoğun sinyal routing aşaması için isteğe bağlı Freerouting 2.3.x. `pcbnew` kullanan scriptler sistem Python'u ile çalıştırılmalıdır. Normal Python ortamına yalnızca `pip install pcbnew` yapmak KiCad ABI uyumluluğunu garanti etmez. ## Dosya üretim sırası Repository kökünden: ```bash python3 scripts/generate_footprints.py python3 scripts/generate_kicad.py python3 scripts/generate_design_tables.py /usr/bin/python3 scripts/generate_pcb.py ``` Bu sıralama: 1. Özel footprintleri üretir. 2. `design_data.py` üzerinden şema hiyerarşisini ve BOM'u üretir. 3. Efinity C529 paket verisine karşı pin tablolarını doğrular ve üretir. 4. 8 katmanlı stackup, kurallar, zone'lar ve placement ile PCB'yi üretir. `design_data.py` çalıştırıldığında dahili bağlantı assertion'ları da yürütülür: ```bash python3 scripts/design_data.py ``` ## Şema ve placement doğrulaması ```bash kicad-cli sch erc --severity-all \ -o outputs/erc_final_reset.rpt hardware/board.kicad_sch kicad-cli pcb drc --severity-all \ -o outputs/drc_final_placement.rpt hardware/board.kicad_pcb ``` Unrouted placement aşamasında unconnected-pad ve isolated-zone kayıtları beklenir. Clearance, short, courtyard, solder-mask, edge ve footprint hataları beklenmez. ## Routing sırası ### 1. BGA escape ```bash /usr/bin/python3 scripts/preroute_bga.py \ hardware/board.kicad_pcb hardware/board_prerouted.kicad_pcb ``` Ti375'in bağlı ball'larına kilitli 0.8 mm pitch dogbone/via escape ekler. ### 2. Yerel plane bağlantıları ```bash /usr/bin/python3 scripts/stitch_plane_pads.py \ hardware/board_prerouted.kicad_pcb \ hardware/board_plane_stitched.kicad_pcb ``` Yalnızca altında gerçekten aynı nete ait dolu plane bulunan SMD güç/GND padlerini kısa dogbone ile bağlar. Bu işlem yüksek akım buck loop routinginin yerini tutmaz. ### 3. Güç katı KiCad içinde önce aşağıdaki hatlar elle route edilmelidir: - TPS6287B15 giriş kapasitörü, SW, indüktör, çıkış kapasitörü ve remote-sense. - TPS62867 1.8 V ve 3.3 V converter loopları. - SYS5 dağıtımı ve ana güç geçişleri. - LDO giriş/çıkış bypass bağlantıları. SW node bakırı küçük tutulmalı; feedback/sense hatları SW ve indüktörden uzak, Kelvin bağlantılı götürülmelidir. Autorouter bu kararları vermez. ### 4. Freerouting için sınıf bazlı DSN ```bash /usr/bin/python3 scripts/export_routing_stage.py \ hardware/board_plane_stitched.kicad_pcb outputs/signal_stage.dsn \ --classes "Default;BGA_ESCAPE;CLOCK" \ --preview outputs/signal_stage_preview.kicad_pcb python3 scripts/prepare_freerouting_dsn.py \ outputs/signal_stage.dsn outputs/signal_stage_freerouting.dsn ``` İkinci script Freerouting 2.3.0/KiCad 10 DSN clearance ölçek farkını düzeltir; koordinatlara, track genişliklerine, via veya keepoutlara dokunmaz. Freerouting arayüzünde düzeltilmiş DSN açılır, en fazla 8 thread kullanılır ve sonuç `.ses` olarak kaydedilir. RF, USB, güç converter loopları ve hassas clock kararları otomatik sonuca bırakılmamalıdır. `to route` sayısının uzun süre düşmemesi halinde aynı işlemi saatlerce sürdürmek yerine placement/escape/keepout çatışması incelenmelidir. ### 5. Kritik hatları kur ve session'ı sonlandır ```bash /usr/bin/python3 scripts/finalize_routing.py \ outputs/signal_stage.ses \ --output hardware/board_routed.kicad_pcb ``` Bu işlem Freerouter'ın RF ve USB üzerindeki copperını kaldırır, denetlenmiş RF/USB geometrisini ekler, RF GND via fence'i kurar ve zone'ları doldurur. ### 6. Final kontroller ```bash kicad-cli pcb drc --severity-all --schematic-parity --refill-zones \ --save-board -o outputs/drc_final_routed.rpt \ hardware/board_routed.kicad_pcb ``` Final kartta unconnected item, short, clearance, isolated copper veya schematic-parity hatası kabul edilmez. RF uzunlukları, USB eşleşmesi, güç loopları, return path ve test-point erişimi görsel olarak da incelenmelidir. ## Script özeti | Script | Görev | |---|---| | `design_data.py` | Tek kaynak komponent/net verisi ve bağlantı assertion'ları | | `generate_footprints.py` | Üretici land-patternlerinden özel footprint üretimi | | `generate_kicad.py` | Şema, sembol ve BOM üretimi | | `generate_design_tables.py` | Ti375 pinout/constraint ve MAX2771 tablo üretimi | | `generate_pcb.py` | Stackup, rule, zone ve deterministic placement üretimi | | `preroute_bga.py` | Kilitli Ti375 dogbone escape | | `stitch_plane_pads.py` | Yerel pad-to-plane bağlantıları | | `export_routing_stage.py` | Seçili net-class için DSN üretimi | | `prepare_freerouting_dsn.py` | Freerouting 2.3 clearance düzeltmesi | | `finalize_routing.py` | SES importu ve denetlenmiş RF/USB geometrisi |