145 lines
4.9 KiB
Markdown
145 lines
4.9 KiB
Markdown
# Ü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 |
|