Geliştirme İş Akışı
Stabil bir SoC mimarisi sürdürmek için projeye katkı sağlayan herkesin belirlenen geliştirme döngüsüne uyması zorunludur. Bu süreç, yeni donanım mantığının ana sisteme dahil edilmeden önce bağımsız olarak doğrulanmasını sağlar.
Git Stratejisi
Özellik odaklı dallanma modeli kullanıyoruz. Doğrudan main veya develop dallarına işleme (commit) yapmak yasaktır.
main: Üretime hazır, tam doğrulanmış donanım kodu.develop: Onaylanan tüm yeni özelliklerin birleştirildiği (entegre edildiği) dal.feat/<ozellik-adi>: Yeni donanım modülleri veya sürücülerin geliştirildiği dal.
Modül Geliştirme Döngüsü
Yeni bir RTL modülü , örneğin bir zamanlayıcı veya çevre birimi eklerken bu adımları sırasıyla uygulayın. Bu sıralama, hataları olabilecek en temelde seviyede farkedebilmek için tasarlanmıştır.
1. Aşama: Tanımlama
Kod yazmaya başlamadan önce modülün sistem içindeki yerini belirleyin.
- Modülü oluşturmak için otomasyon aracını kullanın:
python3 tar32.py add-module <isim> - Dosyanızı
Bender.ymliçine ekleyin.
2. Aşama: Statik Analiz (Linting)
SystemVerilog standartlarına uygunluğu denetlemek için analizi çalıştırın:
python3 tar32.py lint --all
3. Aşama: Bağımsız Doğrulama (Birim Testi)
Modülü sistemin geri kalanından bağımsız olarak test edin:
python3 tar32.py sim unit --module <modul_adi>
4. Aşama: Sistem Entegrasyonu (SoC Simülasyonu)
Modülünüzü top_soc.sv içerisine entegre edin ve yazılım tabanlı testlerle çalıştırın:
python3 tar32.py sim soc
5. Aşama: Sentez Doğrulaması (Pipeline)
Tasarladığınız mantığın fiziksel donanıma çevrilebilirliğini ölçün:
python3 tar32.py pipeline
İşleme (Commit) Kuralları
Anlaşılır bir proje geçmişi için Geleneksel Commit (Conventional Commits) yapısını kullanıyoruz ve altyapıda ingilizce commit geçmiş yapısını tercih ediyoruz:
| Tür | Hedef |
|---|---|
| rtl | Donanım (RTL) mantığı ve ayarları. |
| sw | Sürücüler, yazılımlar ve başlatma kodları. |
| feat | Yeni mimari özellikler. |
| fix | Hata düzeltmeleri. |
| ci | Otomasyon scriptleri ve Docker ayarları. |
Örnek: rtl: MAC unit stages have optimized for timing
Kod Birleştirme (Pull Request) Şartları
Bir değişikliğin (PR) develop dalına eklenebilmesi için şu şartları sağlaması gerekir:
- Test Başarısı:
python3 tar32.py pipelinekomutunun hiç hata vermeden tamamlanması. - Sentez Verisi: Yeni modülün LUT/FF donanım kullanım limitlerini aşmadığını gösteren bir rapor.
- Ekip Onayı: En az bir takım arkadaşının kod yapısını (RTL stili) onaylaması.