Konu Başlıkları Gizle
- 1 Yaşadığım Problemler
- 2 Aldığım Kritik Hata
- 3 Sormak İstediğim Konular
- 4 OpenLane Docker / İzin Sorunlarına Kesin Çözüm: Nix Ortamı ve "Not Found" Hatalarının Giderilmesi
- 5 Terminalde şu komutla kendinizi güvenilir yapın:
- 6 Nix hizmetini yeniden başlatın:
- 7 Ortamı tekrar başlatın (Saniyeler içinde hazır paketler inecektir):
- 8 PDK_ROOT'u OpenLane'in pdks klasörüne sabitleyin
- 9 Volare'yi çalıştırıp dosyaları (inmiş olsa bile) o dizine linkleyin:
Lütfen yapay zekâ tarafından üretilmiş veya AI ile oluşturulmuş çözüm önerileri paylaşmayın.
Bu sorunu çözmek için daha önce farklı AI araçlarından birçok öneri denedim. Bazı öneriler belirli problemleri çözerken çalışan kısımları bozdu veya eksik yönlendirmelerde bulundu.
Bu nedenle mümkünse OpenLane, Yosys, SKY130 PDK ve ASIC tasarım akışı konusunda doğrudan deneyimi olan kişilerin yorumlarını almak istiyorum.
Merhaba,
SkyWater SKY130 teknolojisini hedefleyen deneysel ve özgün bir CPU tasarımı geliştiriyorum. RTL tarafında ilerleme kaydettim ancak fiziksel tasarım aşamasına geçerken araçların kurulumu ve birbirleriyle entegrasyonu konusunda ciddi sorunlar yaşıyorum.
Kullandığım araçlar:
- Docker
- OpenLane 2
- Yosys
- SkyWater SKY130 PDK
- Python 3
- pip
- pipx
- CMake
- Git
CPU RTL (Verilog)
↓
Yosys (Sentez)
↓
OpenLane
↓
OpenROAD
↓
SKY130 PDK
↓
Place & Route
↓
GDSII
OpenLane dokümantasyonuna göre OpenLane; Yosys, OpenROAD, Magic, Netgen ve KLayout gibi araçları bir araya getirerek RTL'den GDSII üretmektedir.
Yaşadığım Problemler
Sorun CPU kodundan çok araçların kurulumu ve birbirleriyle bağlantılarında ortaya çıkıyor.Karşılaştığım başlıca problemler:
- OpenLane ile Yosys arasında sürüm uyumsuzluğu
- Yosys'in Pyosys/Python desteğinin eksik veya yanlış yapılandırılmış olması
- Docker içindeki araçlarla sistemde kurulu araçların birbirine karışması
- SKY130 PDK'nin doğru algılanıp algılanmadığından emin olamamam
- Python, pip ve pipx üzerinden kurulan bileşenlerin hangi ortamda çalıştığını takip etmekte zorlanmam
- Kaynaktan derlenen Yosys ile OpenLane'in kullandığı Yosys'in aynı sürüm olmaması
- CMake ile yapılan derlemelerde eksik bağımlılık problemleri
- PATH değişkeni nedeniyle farklı Yosys sürümlerinin çalışması
Aldığım Kritik Hata
OpenLane çalışırken aşağıdaki aşamada duruyor:Stage 5 - Generate JSON Header
Log:
Error parsing options: Option 'y' does not exist
Araştırdığım kadarıyla bu aşama OpenLane'in Pyosys tabanlı Yosys adımlarından biridir.
Bu nedenle OpenLane, Yosys ve Python entegrasyonunda bir uyuşmazlık olduğunu düşünüyorum.
Sormak İstediğim Konular
- OpenLane 2 kurulurken en sağlıklı yöntem Docker mı, Nix mi yoksa manuel kurulum mu?
- OpenLane kendi araçlarını mı kullanmalı yoksa sistemde kurulu Yosys'i mi?
- SKY130 PDK kurulumu ve Volare yapılandırması için önerilen yöntem nedir?
- Pyosys desteği olmayan bir Yosys ile OpenLane 2 kullanılabilir mi?
- Benim yaşadığım hata bilinen bir OpenLane ↔ Yosys ↔ Pyosys entegrasyon problemi midir?
OpenLane Docker / İzin Sorunlarına Kesin Çözüm: Nix Ortamı ve "Not Found" Hatalarının Giderilmesi
OpenLane kurulumunda sürekli docker.sock (permission denied) hataları, yetki sorunları veya Python paket çakışmaları (PEP-668) yaşıyorsanız, Docker bırakmanın vakti geldi. OpenLane 2.x sürümleri için artık en stabil ve resmi olarak önerilen yol Nix kullanmaktır.Docker'ı tamamen devreden çıkarıp, çip tasarımımı sıfır hata ile fiziksel GDSII dosyasına ulaştıran çözüm adımlarım şu şekildedir:
1. Docker Yerine Nix Flakes Kullanımı ve "Cachix" Sorunu
Nix'i kurup OpenLane klasöründe ortamı başlatmak istediğinizde (nix develop veya nix-shell), sistemin saatlerce her şeyi sıfırdan derlemeye çalıştığını görebilirsiniz. Bunun sebebi ignoring untrusted substituter 'Cachix - Nix binary cache hosting' uyarısıdır. Nix, güvenlik nedeniyle hazır önbelleklenmiş (cache) EDA araçlarını indirmenize izin vermez.Çözüm: Kendi kullanıcınızı "Güvenilir Kullanıcı" (Trusted User) olarak eklemelisiniz.
Terminalde şu komutla kendinizi güvenilir yapın:
echo "trusted-users = root $USER" | sudo tee -a /etc/nix/nix.confNix hizmetini yeniden başlatın:
sudo systemctl restart nix-daemonOrtamı tekrar başlatın (Saniyeler içinde hazır paketler inecektir):
nix --extra-experimental-features "nix-command flakes" develop2. "PDK not found" ve Volare Yol (Path) Karmaşası
Nix ortamına girdikten sonra flow.tcl veya openlane komutunu çalıştırdığınızda, kütüphaneyi indirmiş olsanız bile sky130A not found hatası alabilirsiniz. Bunun sebebi Volare'nin dosyaları gizli bir dizine (~/.volare) indirmesi veya PDK_ROOT değişkeninizin o an OpenLane'in baktığı yeri göstermemesidir.Çözüm: PDK_ROOT dizinini elinizle sabitleyin ve Volare'ye kısayolları o dizine kurmasını söyleyin:
PDK_ROOT'u OpenLane'in pdks klasörüne sabitleyin
export PDK_ROOT=/tam/yol/openlane/pdksexport PDK=sky130A
Volare'yi çalıştırıp dosyaları (inmiş olsa bile) o dizine linkleyin:
./venv/bin/volare enable --pdk sky130 <İSTENEN_HASH_KODU>3. Sentez (Yosys) Aşamasında Verilog
Akış başladığı an Yosys adımında ERROR: Can not open file '../firmware.hex' for $readmemb. hatası alıp sentez çökebilir.Nedeni: OpenLane, işlemleri arka planda geçici bir runs/RUN_... klasöründe yürütür. Bu yüzden Verilog dosyanızın içindeki göreceli (relative) yollar (../ gibi) bu geçici klasörde geçerliliğini yitirir.
Çözüm: Verilog dosyanızdaki dışarıdan dosya okuma yollarını daima Mutlak Yol (Absolute Path) olarak değiştirin.
Verilog
// YANLIŞ: $readmemb("../software/machine_code.hex", mem);
// DOĞRU:
$readmemb("/home/kullanici/proje_klasoru/software/machine_code.hex", mem);
Sonuç:
Bu 3 adımı uyguladıktan sonra, Nix shell içindeyken ./flow.tcl -design /tasarim/klasoru komutu hiçbir yetki, Docker veya soket hatası vermeden doğrudan çalıştı ve DRC ihlali olmadan GDSII (fabrikasyon) dosyasını başarıyla üretti. Docker izinleriyle boğuşan herkese bu temiz "Nix" akışını tavsiye ederim.
Son düzenleyen: Moderatör: