Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

JJX

Becerikli
Katılım
10 Mart 2026
Mesajlar
120
Beğeniler
76

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
Temel amacım aşağıdaki zinciri çalıştırmak:

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​

  1. OpenLane 2 kurulurken en sağlıklı yöntem Docker mı, Nix mi yoksa manuel kurulum mu?
  2. OpenLane kendi araçlarını mı kullanmalı yoksa sistemde kurulu Yosys'i mi?
  3. SKY130 PDK kurulumu ve Volare yapılandırması için önerilen yöntem nedir?
  4. Pyosys desteği olmayan bir Yosys ile OpenLane 2 kullanılabilir mi?
  5. Benim yaşadığım hata bilinen bir OpenLane ↔ Yosys ↔ Pyosys entegrasyon problemi midir?
Teşekkürler.

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.conf

Nix hizmetini yeniden başlatın:​

sudo systemctl restart nix-daemon

Ortamı tekrar başlatın (Saniyeler içinde hazır paketler inecektir):​

nix --extra-experimental-features "nix-command flakes" develop

2. "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/pdks
export 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: