1 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan İkili Karar Diyagramı (Binary Decision Diagram : BDD) Boole fonksiyonlarının bir gösterilim şekli: Lee , Akers , Bryant BDD, çevre içermeyen köklü-yönlü graftır Her düğüm n değişkenden birisine karşı düşer Her düğümden 2 dal çıkar Tek bir kök düğüm, 2 farklı uç düğüm uç düğümlerin değeri = Boole fonksiyonunun değeri x1x1 x2x2 x3x3 10 v1v1 v2v2 v3v3 f = x 1 x 3 +x 2 x 3 fonksiyonunun BDD grafı
2 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan BDD Yol: kök düğümden uç düğüme kadar tüm düğüm ve elemanların kümesi Bir OBDD’de tanımlı bir yoldaki düğümlerde değişkenler sıralıdır Tüm yollarda değişken sırası aynıdır Değişken sıralaması : x 1 < x 2 <... < x n x1x1 x2x2 x3x3 10 v1v1 v2v2 v3v3 f = x 1 x 3 +x 2 x 3 fonksiyonunun değişken sıralaması: π: x 1 < x 2 < x 3
3 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan BDD’nin öteki gösterilimlerle kıyaslanması Sonuç: Temel işlemlerde BDD daha hızlı
4 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan BDD’lerde yapılan öteki temel işlemler BDD’deki algoritmaların karmaşıklığı BDD büyüklüğüne polinomsal bağlı BDD grafları nasıl küçültülebilir?
5 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Değişken Sıralama (Variable Ordering) f(x 1, x 2, x 3 ) = x 1 x 2 +x 3 x 4 +x 5 x 6 Değişken sıralaması π a : x 1 < x 2 < x 3 < x 4 < x 5 < x 6
6 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Değişken Sıralama (Variable Ordering) f(x 1, x 2, x 3 ) = x 1 x 2 +x 3 x 4 +x 5 x 6 Değişken sıralaması π b : x 1 < x 3 < x 5 < x 2 < x 4 < x 6
7 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Değişken Sıralama (Variable Ordering) Bir BDD düğümünün bellekte kapladığı yer: 20 bayt 2 farklı değişken sıralaması için gereken bellek: Sonuç: Değişken sıralaması işlem hızını etkiler
8 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan BDD Uygulamaları İki Seviyeli İndirgeme - Asal bileşenleri üretme( bu çalışmanın konusu) - Minimal örtü (tek koşullu örtü problemi) Kısmen Belirli Ardışıl Makineleri İndirgeme - Uyumlular ve asal uyumlular sınıflarını üretme - Minimal kapalı örtü (çift koşullu örtü problemi) Ayrıştırma - Ashenhurst Ayrıştırması - Roth-Karp Ayrıştırması
9 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Asal Bileşenleri BDD Yardımıyla Üretme Boole fonksiyonunun asal bileşenleri, kofaktörlerindeki asal bileşenleri cinsinden ifade edilebilir Boole fonksiyonu f’in 1 noktalarını gösteren küplerin kümesi P P 1k : x k değişkeni içermeyen küplerin kümesi P x’k : x k değişkeninin tümleyenini içeren küplerin kümesi P xk : x k değişkeninin kendisini içeren küplerin kümesi P = P 1k ({x’ k } P x’k ) ({x k } P xk )
10 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Boole fonksiyonunun asal bileşen kümesi AB 3 alt kümeyle ifade edilir: - x k değişkenini içermeyen asal bileşenlerin kümesi - x k değişkenini içeren asal bileşenlerin kümesi - x k değişkenini içeren asal bileşenlerini kümesi Asal Bileşenleri BDD Yardımıyla Üretme xkxk Herhangi bir BDD grafının kök düğümü Boole fonksiyonunu temsil eder okok sksk Herhangi bir AB BDD’sinin kök düğümü, Boole fonksiyonunun tüm AB’lerini gösterir
11 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Asal Bileşenleri BDD Yardımıyla Üretme f(x 1, x 2 ) = x 1 x 2 f(o 1, s 1, o 2, s 2 ) = o 1 s 1 o 2 s 2 Asal Bileşen Üretme
12 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Asal Bileşenleri BDD Yardımıyla Üretme ya da gereksiz düğüm
13 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Asal Bileşenleri BDD Yardımıyla Üretme IPCP, Implicit Prime Computation Program (Kapalı Yöntemle Asal Bileşen Hesaplama Programı) IPCP optimal çözümü vermektedir 3000 satır C kodu BDD yapıları için BuDDy yazılım paketi kullanılmıştır BuDDy, Kopenhag Enformasyon Teknolojisi Enstitüsü’nden Jørn Lind-Nielsen’in doktora çalışmasında geliştirilmiştir Sun Solaris 2.6 altında GCC C derleyicisi ile derlenmiştir Sun UltraSPARC 80 iş istasyonu 2 x 450 MHz UltraSPARC II CPU, 2 GB RAM
14 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Asal Bileşenleri BDD Yardımıyla Üretme ipcp -i or2.pla -f 0 -d -p gen_dnf_array.i 2.o 1.p e gen_bool_to_bddcoudert_prime bdd_fnprintdotgen_bdd_pla.i 2.o 1.p e gen_bdd_pla.i 2.o 1.p e bdd_fnprintdot or2.pla
15 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan IPCP’nin Değişik Bençmarklarla Testi Zor bençmarklar I/O: I: Giriş değişken sayısı, O: çıkış fonksiyon sayısı NMI: Minterm sayısı NPI: Eerçekteki asal bileşen sayısı RNPI: BDD yardımıyla hesaplanan asal bileşen sayısı ENPI: Eleme sonucunda elde edilen asal bileşen sayısı T BDD : BDD graflarını oluşturma süresi [saniye] T PIBDD : Asal bileşenleri gösteren BDD graflarını oluşturma ve tüm asal bileşenleri elde süresi [saniye] T ELIM : gereksiz asal bileşenleri eleme süresi [saniye] S BDD : BDD grafının bellekte kapladığı alan [bayt, megabayt] S RED : elenmemiş asal bileşenlerin karakter formatında bellekte kapladığı alan [bayt, megabayt] S IRR : elenmemiş asal bileşenlerin bit formatında bellekte kapladığı alan [bayt, megabayt]
16 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Diğer bençmarklar
17 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan Diğer bençmarklar
18 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan IPCP Sonuçları 9 tek çıkışlı, 81 çok çıkışlı toplam 90 PLA bençmarkında test yapıldı Gereksiz Düğümler (Redundant Vertices) Gereksiz düğümler nedeniyle asal bileşen listesi, fazla küpler içermekte Fazla küpler, gerçek asal bileşenler tarafından kapsanmakta Fazla küp oranı %0 ile % (1000 kat) arasında değişmekte Simetrik fonksiyonlarda fazla küp yok Çoğu bençmarkta fazla küp, asal bileşen sayısının yaklaşık 10 katı Bellek Fazla küp nedeniyle bellek kullanımı çoğu bençmarkta gereğinden 10 kat daha büyük Her bir asal bileşen biti bir char ile gösterildi Asal bileşenler için long long int kullanıldığında bellek yarıya düşüyor İşlem Zamanı Fazla küp nedeniyle aşırı büyük bellek yüzünden işlem süresi çok yüksek m fonksiyonun tüm kombinezonlarının asal bileşenlerini hesaplama uzun zaman alıyor
19 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan IPCP Sonuçları 9 tek çıkışlı, 81 çok çıkışlı toplam 90 PLA bençmarkında test yapıldı BDD gösterilimi Boole fonksiyonlarının BDD grafı bellekte az yer tutuyor Örnek: sym10, 10 değişkenli simetrik fonksiyon. Minterm sayısı: 837, açık (explicit) yöntemde kullanılan bellek: 3348 bayt asal bileşen sayısı 3150, açık (explicit) yöntemde kullanılan bellek: 12.6K BDD grafı belleği: 760 bayt fonksiyonların çarpımlarını hesaplamak hızlı: Uygula (Apply) algoritması
20 İkili Karar Diyagramları Yardımıyla Lojik Devre Tasarımı Utku Özcan SONUÇ BDD’lerle ilgili Türkçe bir çalışmaya rastlanmamıştır Literatürde herhangi bir BDD paketi için PLA arayüzüne rastlanmamıştır BDD’lerle ilgili Türkçe bir uygulamaya rastlanmamıştır Literatürde BuDDy paketinde asal bileşen bulma uygulamasına rastlanmamıştır BDD’lerle Ardışıl Makinelerin İndirgenmesi uygulaması yapılabilir BDD’lerle Roth-Karp Ayrıştırması uygulaması yapılabilir