Skip to content

Derleme ve Otomasyon Sistemi

Bu proje, donanım geliştirme yaşam döngüsünü otomatikleştirmek için kordineli bir yapı kullanır. Bu belge, otomasyon altyapımızın mantığını açıklamaktadır.


Merkezi Otomasyon Aracı: tar32.py

Projenin tüm derleme, simülasyon ve analiz işlemleri Python tabanlı tar32.py aracı üzerinden yürütülür. Bu araç, scripts/py/ altındaki modülleri kullanarak işlemleri gerçekleştirir.

Temel Komutlar

  • Modül Ekleme: Yeni bir çevre birimi (peripheral) altyapısını oluşturur.

    python3 tar32.py add-module spi
    

  • Simülasyon: Birim (unit) veya SoC seviyesinde simülasyon başlatır.

    python3 tar32.py sim unit --module tar32_gpio_core
    python3 tar32.py sim soc
    

  • Statik Analiz (Linting): RTL kodunu Verilator ile inceler.

    python3 tar32.py lint --module tar32_periph_subsystem
    python3 tar32.py lint --all
    

  • CI Pipeline: Tüm simülasyon ve sentez süreçlerini çalıştırır.

    python3 tar32.py pipeline
    

  • Temizlik: Derleme ve simülasyon çıktılarını siler.

    python3 tar32.py clean all
    


Çevre Başlatma (setup.sh)

setup.sh betiği, çalışma ortamının yapılandırılması için kullanılır. Her geliştiricinin belirlenmiş toolchain ortamında çalışmasını sağlar.

İşleyişi

  1. Docker İmajı: ap0le/riscv-cv32-env:v3 imajının varlığını kontrol eder, yoksa indirir veya derler.
  2. Yetki Eşleme: Kullanıcı kimliklerini (UID/GID) konteyner ortamına aktarır.
  3. Birim Bağlama: Proje kök dizinini, konteyner içinde /work olarak bağlar.

Hibrit Pipeline Mimarisi (tar32.py pipeline)

Proje, iki farklı teknik ortamda koordineli olarak çalışır.

İzole Simülasyon Ortamı (Docker)

Kapsamlı RTL doğrulaması ve linting işlemleri konteyner içinde yapılır. SystemVerilog simülatörleri (Verilator) ve RISC-V araç zinciri (GCC) gibi araçların kurulum karmaşıklığını ortadan kaldırır.

Yerel Sentez Ortamı (Host)

Fiziksel donanım sentezi (Vivado gibi araçlar) doğrudan ana işletim sistemi üzerinde yapılır. Nedeni: FPGA araçları büyük disk alanı ve özel sürücüler gerektirir, bu nedenle ana makinede (host) çalıştırılmaları daha verimlidir.