Kaynak: EETOP BBS Yazar: yaya126
Orijinal:
Görünüşe göre forumda düşük güçlü RTL ön uç tasarımını tartışan çok fazla gönderi yok.Pek çok büyük Niu'nun kitabı süreç ve yarı iletken yapı hakkında konuşuyor, bu da beni hayran bırakıyor, ama ben sadece bunun için can atabilirim (gerçekten anlamıyorum).
Sürecin iyileştirilmesinin getirdiği faydalar, TSMC 40LP ile TSMC 28HPC + gibi RTL'nin derin optimizasyonundan çok daha yüksek olabilir, ikincisi temelde öncekinden yarı daha küçüktür, hız iki kat daha hızlıdır ve dinamik güç% 40 ~ 50 daha küçüktür.
Fiyat 3 ~ 4 kat daha fazla sızıntıdır. Eski teknolojide tasarımın nasıl optimize edileceği konusunda bu etkiyi elde etmek zor olabilir.
Ancak bir ön uç RTL tasarımcısı olarak, süreç bir kez seçildikten sonra, elimizden gelenin en iyisini yalnızca kendi dörtte üçlük arazimizde yapabiliriz.Bu gönderi bize iyi bir fikir verecek ve iş tecrübemize dayalı düşük güçlü RTL tasarımını tartışacak ve bir çukur kazacak Umarım kavanozdaki büyük inek deliği birlikte doldurmaya yardımcı olur.
Tasarıma ilk başladığımda Alan ve hız konusunu düşündüm Son yıllarda güç gitgide daha önemli göstergeler haline geldi.Bazen gücün faydaları karşılığında alan ve hız feda ediliyor, sonuçta bazı bölgelerde pil kapasitesi çok yüksek. Arttırmak zor.
Bazı insanlar genel istatistikler yaptılar.Güç tüketimini azaltmanın yöntemleri ve faydaları kabaca aşağıdaki gibidir. Ön uç RTL tasarımı için saat geçitleme en iyi seçenektir. Faydalar en önemli ve maliyet en azdır.Diğer yöntemlerin de önemli faydaları olabilir. Belirli uygulama senaryolarının analizi.
Güç esas olarak şu yerlerde tüketilir:
1) kombinasyonel mantık
2) sıralı mantık
3) hafıza
4) saat ağı
Aşağıda aşağıdaki hususları tartışacağım:
1. Saat geçit verimliliğini artırın.
a. Blok seviyesi saat geçişi.
b. RTL saat geçidi. (vurgu)
2. Veri geçiş oranını azaltın.
a. FIFO - BORU
b. FSM kodlama stili
c. Gereksiz sıfırlama.
3. Bellek Seçimini İyileştirin.
a. Alan güç dengesi
b. I / F bit genişliği seçimi.
c. Derinlik seçimi.
4. hafıza erişimini azaltın
a.Adres önbelleğe alma.
5. Mantık boyutunu azaltın
a. Mantık paylaşımı.
b. Mantıksal dengeleme
c. Bölücü optimizasyonu.
d. Boru hattı uzunluğunu azaltın
e. Hardmacro vs Register
f. Bit genişliğini azaltın
g. Eşzamansız sıfırlama ve eşzamansız sıfırlama.
6. Yanlış anlama
1. saat geçit verimliliğini artırın
a. blok seviyesi saat geçitleme
Bir modül veya işlev açılıp kapatılabiliyorsa ve mantık nispeten bağımsızsa, mantık saatinin bu kısmına manuel olarak bir ICG ekleyebilirsiniz Modül, geçit verimliliğini en üst düzeye çıkarabilen ICG'yi kontrol edebilen anahtardır.
1. ICG, yeterli DFF sağlamak için daha büyük bir sürücü kapasitesi seçmek en iyisidir.
2. ICG bir sarmalayıcı eklemenizi önerir, bu nedenle diğer işlemleri değiştirmeniz gerektiğinde yalnızca sarmalayıcıdaki örneği değiştirmeniz gerekir.
3. Sentez sırasında bu tür ICG için dokunmayın ayarlayın
b. RTL saat geçişi.
Lowpower RTL sentezinin özü, D ucunda CLK ucuna sentezlenmiş olması gereken etkinleştirme sinyalini entegre etmektir, böylece yalnızca etkinleştirmenin etkili olması bir clk'yi serbest bırakabilir, böylece D uç verileri Q ucuna iletilir. D belirli bir bit sayısını aştığında, genellikle varsayılır > = 4bit güç tasarrufu sağlayabilir.Bu etkiyi elde etmek için kayıt ataması koşullu atama olmalıdır.Röstasyon kodu ve devre aşağıdaki gibidir,
Mentor, RTL'yi analiz etmeye, etkin etkinleştirmeyi çıkarmaya ve kod optimizasyonunu tamamlamaya yardımcı olabilecek power_pro'ya sahiptir, ancak görebildiğim kadarıyla, optimize edilmiş kodu çok okunabilir ve koşullar bazen gereksizdir, bu da aşırı ICG etkinleştirmesine neden olur , Ve gelecekte ECO'ya ihtiyacınız varsa, onun resmi araçlarını da satın almanız gerekir, aksi takdirde kodunu değiştirmek zor olacaktır.
Burada, düşük güçlü RTL kod spesifikasyonunu karşılamayan tüm kodları kontrol etmek için kullanılabilecek, kod analizi için kendim yazdığım bir perl betiği sağlıyorum.Tasarımcı, raporuna göre atama etkinleştirme koşullarını optimize edebilir ve gerçek projelerde test edilmiştir.
Herkes kullanabilir ve yorum yapabilir. (Daha sonra Mao'nun 2d arry, başlangıç ve çarpanı kontrol etmesi gerektiği açıklanacaktır)
power_check.pl v f d -filter b 2d init -mul
-v veya --verbose: hata ayıklama için ayrıntılı günlük yazdırın.
-f veya --file: girdi dosyası listesi.
-d veya --dir: arama dizinini ayarlar, komut dosyası bu dizin altındaVerilog dosyasını bulur.
-b veya bak: önceki sonucu yedekleyin.
-filtre: filtre < = N bit kayıt hatası.
-2d veya 2d_array: rapor2D kayıt dizisi.
-initial veya init: ilk bloğu bildir
-mul: çarpan bilgisini bildir
Verfilog dosyası: giriş Verilog dosyası
Sonuç dosyasını oluşturun, en önemli power_check.v.
Çalışma zamanı raporu:
power check perl script: (indirmek için foruma giriş yapın)
power_check.rar (7,87 KB)
Düşük güçlü RTL ideal kod yapısı:
1 her zaman @ (posedge clk veya negedge rstn) başla
2 eğer (! Rstn) başlarsa
3 Q < = 'h0;
4 uç
5, aksi takdirde (koşul_1) başlar
6 Q < = D_1;
7 // diğer koşul 2, 3, 4
8 başka başlar
9 Q < = Q; // bu atamayı kaldırmak daha iyidir, o zaman veriler tutulacaktır.
10 uç
11 uç
Bir hata kodu örneği, herhangi bir koşulda, her zaman Q'ya vurulması gereken bir D değeri vardır, böylece ICG entegre olsa bile, ICG kapatılamaz. Hatalar aşağıdakilerden çok daha fazladır, if / else if / else, case / default, vb.
1. Atama koşulu yok
1 always @ (posedge clk) begin // "if-else" hiyerarşi 0, varsayılan "else" bloktur
2 Q < = D; // Hata: Veri Atama için koşul yok.
3 uç
2. Başka ödev
1 her zaman @ (posedge clk veya negedge rstn) başla // hier0
2 If (! Rstn) başlar // hier1 "if" bloğu
3 Q < = H0;
4 end else start // hier1 "else" bloğu
5 Q < = D; // Hata: Veri Atama için koşul yok.
6 uç
7 uç
3. Çok seviyeli koşullarda başka
1 her zaman @ (posedge clk veya negedge rstn) başla // hier0
2 If (! Rstn) başlar // hier1 "if" bloğu
3 Q < = H0;
4 else end else if (koşul1) başlar // hier1 "else if" bloğu
5 If (koşul1_1) başlar // hier2 "if" bloğu
6 Q < = D1_1;
7 end else start // hier2 "else" bloğu
8 Q < = D1_2; // "else if" bloğunda olduğu gibi hata bildirilmez.
9 uç
10 end else start // hier1 "else" bloğu
11 If (koşul2_1) başlar // hier2 "if" bloğu
12 Q < = D2_1;
13 end else begin // hier2 "else" bloğu, hier1 "else" bloğunda
14 Q < = D2_2; // Hata: Veri ataması için koşul yok.
15 uç
16 uç
17 uç
4. Aşağıdaki örnek bir hata bildirmeyecektir.
1 her zaman @ (posedge clk veya negedge rstn) başla // hier0
2 If (! Rstn) başlar // hier1 "if" bloğu
3 Q < = H0;
4 else end else if (koşul1) başlar // kiralama1 "else if" bloğu
5 Q < = Q; // "Q < = Q ICG eklemeyi sağlar
6 end else start // hier1 "else" bloğu
7 Q < = D; // HATA "Q < = Q "in" else if ".
8 uç
9 uç
2. Veri geçiş oranını azaltın
a. FIFO - PIPE
Verinin N-atım gecikmesinden geçmesi ve sonra onu kullanması gerektiğinde, bunu başarmak için genellikle iki yöntemimiz vardır: 1, veri için N-seviyeli boruyu kullanmak ve bunu seviye seviye aktarmaktır. 2, verileri FIFO'da saklamak ve daha sonraki aşamada gerektiğinde doğrudan okumaktır. Her iki VLD yönteminin de ayrı olarak teslim edilmesi gerekir.
PIPE yöntemiyle karşılaştırıldığında, FIFO yönteminde ek adres hesaplama ve karşılaştırma ek yükü vardır, ancak her verinin yalnızca bir kez okunması ve yazılması gerekir.PIPE'den farklı olarak, verilerin tüm PIPE'de kaydırılması gerekir. FIFO yöntemindeki her kaydın geçiş hızı önemli ölçüde düşüş. Verinin geçiş hızının Tr olduğunu varsayarsak, N-seviyeli borunun geçişi N * Tr ve FIFO da Tr'dir.
FIFO çıktı verileri + sonraki hesaplama zamanlaması karşılanmazsa, FIFO'nun ilk düzeyini kısaltmayı düşünün ve son düzey yine de PIPE tarafından çıkarılır.
TSMC 40nm ve 28nm altında PTPX simülasyon sonuçları analizime göre. (Belirli veriler için lütfen benimle ayrıca iletişime geçin)
sonuç olarak:
Güç azaltımı için FIFOreplace BORU:
ne zaman ADDR > = 2 bit, DATA olmalıdır > = 4 bit, DATA ne kadar genişse, kademe sayısı o kadar derin, FIFO güç kazanımı o kadar yüksek olur, ancak ek alan yükü vardır.
Yukarıdaki komut dosyası power_check.pl -2d -d komutunu sağlar. Koddaki tüm 2D dizileri bulmak için. Bazı öğrenciler PIPE atamalarını aşağıdaki gibi yazmayı sever
için (i = 1; i < N; i ++) başlar
eğer (VLD)
Dizi < = Dizi; // Bu kod koşullu bir atama olmasına rağmen, yukarıdaki koşulları karşılıyorsa, onu FIFO ile değiştirmeyi düşünebilirsiniz.
son
b. FSM kod stili:
Durum makineleri için yaygın olarak kullanılan 3 kod vardır:
1. tek sıcak: 3'b001- gibi > 3'b010- > 3'h100, durum sayısı = aynı bit genişliği, durum her değiştiğinde, en fazla sadece iki bit değişir.
2. İkili kodlama, örneğin 3'b000- > 3'b001- > 3'b010- > ..., Nbit 2exp (N) durumlarını destekleyebilir.
3. Gri kod, 3'b000- > 3b001- > 3'b011- > 3'b010- > ... Sırayla değişirse, her seferinde yalnızca bir bit atlar.
Genel olarak, tek sıcak daha fazla bit kullanır ve en kötü güce sahiptir.Belirli bir durum geçişleri dizisi varsa, gri kod kodlaması geçiş oranını azaltabilir.
40LP altında 4 bit FSM, 16 durum, 4'h0'dan 4'hf '' durum makinesine, güç tüketim alanı karşılaştırma sonucu aşağıdaki gibidir.
Durum makinesi tamamen Gray koduna göre kodlanamasa ve sıklıkla atlanan durum Gray kod ile kodlansa bile basit bir çaba ile güç faydaları elde edebilirsiniz. Mümkün olduğunca az tek sıcak kodlama kullanın.
FSM
güç
alan
Gri kod
8.697e-06
110.95 (en iyi)
Tek sıcak
1.023e-05
166.69
ikili
9.984e-06
108.48
c. Gereksiz sıfırlama:
Kontrol kaydı için, çoğu durumda artık durumu temizlemek gerekir, ancak veri kaydı için, veri kalıntısının sıfırlanması gerekmez.
Read_en koşulu altında rdata'ya sadece geçerli veriler yazılırsa, buna hiç gerek yoktur! Read_en sırasında kaydı sıfırlayın Bu sadece geçiş oranını boşuna artırmak içindir.
Eğer (read_en) rdata < = read_data
Diğer (! Read_en) rdata < = H0; // rdatayı sıfırlamayın.
Bu tür bir ifadeyi yazarsanız, güç optimizasyon aracını veya yukarıdaki komut dosyasını kullansanız bile, onu optimize etmenin bir yolu yoktur.Genel olarak, kayıt ayarı ne kadar doğru olursa (ICG'yi açma olasılığı o kadar düşükse), güç için o kadar faydalı olur. optimizasyon.
3. Hafıza Seçimi
SRAM seçiminde birçok özellik vardır. 1p, 2p, spra ve 1prf'yi seçip seçmemeye karar vermek için verime, boyuta ve genişliğe bakmamız gerekir. Genellikle hız gereksinimleri karşılandığında küçük alan seçilir. Burada yeni bir seçim yöntemi öneriyorum, yani hızın gereksinimleri karşılaması temelinde en uygun maliyetli gücü ve alanı seçin.
Karşılaştırma ölçütü olarak en küçük alanı seçtiğimizde, alandaki artış yüzdesi ile güçteki yüzde düşüşü arasındaki farka bakın. Bu alanın ve gücün, maliyet etkinliği değerlendirmesinin% 50'sini oluşturduğunu varsayın. Örneğin, alan% 10 artar, ancak güç 20 azalır. %, fiyat / performans oranının daha iyi olduğu kabul edilir ve değişimde gücün sadece% 5'i düşerse, fiyat / performans oranının daha kötü olduğu kabul edilir.
Elbette, seçim kurallarını değiştirmek için alan / güç ağırlığını ayarlayabiliriz. Aşırı durumlarda, alan ağırlığını% 100'e ayarlamak genellikle en küçük alanı seçen yöntemdir.
Daha sonra, farklı rf / sram segment_option, MUX, Width ve Bits'e göre boyutu karşılayan sram'ı oluşturmak için yalnızca bellek oluşturma aracını kullanmamız gerekir. Bunu tekrar oluşturmak için komut dosyasını kullanın. En iyisini seçmek için yukarıdaki kuralları kullanın. Alan açısından çok az farklılık olan bazı sramlar. Güç farkı% 20 ~ 30'dur.
Aynı depolama boyutuna sahip srama ek olarak, bit genişliği iki katına çıkar ve derinlik yarıya indirilir. Örneğin, 256x10, 128x20 oluşturmayı düşünebilirsiniz. Bit genişliği iki katına çıkar. Bu, her okuma ve yazma gücünün iki katına çıktığı anlamına gelmez, ancak okuma ve yazma Sıklık yarıya indirilirse, bu da önemli faydalar sağlayabilir.
Ek olarak, aynı bit genişliği için derinlik yarıya indirilebilir. (Yaptığım deneyden, fayda çift bit genişliği kadar iyi değil)
Kısacası, sram'ı seçmek yalnızca alanı dikkate almaz, aynı zamanda farklı seçenekleri deneyebilir ve daha çok maliyet performansını da dikkate alabilir.
Sram alanı doğrudan oluşturulan dosyadan okunabilir, ancak gücün manuel olarak hesaplanması gerekir: bekleme gücünün dikkate alınmadığını varsayarak, yalnızca okuma / yazma gücü dikkate alınır, gücü alabiliriz, Pwr, Prd, Daha sonra, kullanılan sramın özelliklerine göre, örneğin belirli bir süre içinde (belirli bir süre içinde) kaç tane yazma ve okuma yapıldığına göre, tek bir okuma ve yazmanın karşılık gelen gücünü çarparak, sramın gücünü kabaca tahmin edebilirsiniz.
Ek olarak, oluşturulan sramın dışına bir sarmalayıcı eklemeniz ve bir ICG'yi manuel olarak yerleştirmeniz şiddetle önerilir. ICG'yi yalnızca RD veya WR olduğunda açın. Normalde, sram saati kapıyı kapatır.
4. Hafıza Adresini Önbelleğe Alma
Adres önbelleğe alma:
Sram kullanım senaryosunun aynı adres için tabloya birden çok kez bakması gerektiğinde, son okunan adresi kaydetmeyi ve yeni adresle karşılaştırmayı düşünün.Son okumadan sonra adrese yazma işlemi yoksa ve yeni adres kayıtlı adrese eşitse Adres, yuvarlak okuma erişimini atlayabilirsiniz.
5. Mantık boyutunu azaltın
Geniş bir alan genellikle büyük bir güç anlamına gelir.Enerji tasarrufu açısından, alanı küçültmek ve mantık birimini azaltmak, güç tüketimini azaltma yönüyle aynıdır.
Mantık paylaşımı:
Bazı mantıkların düşük verim gereksinimleri vardır. Mantıksal bir zaman paylaşımı hesaplaması, belirli bir zamanda bir kez N mantık hesaplamasına eşdeğer olan N kez gerçekleştirilir. Çoklamadan sonra, toplam hesaplama aynıdır, ancak statik güç tüketimi azalacaktır. Elbette, bir mantık N hesaplamasının yan etkilerini göz önünde bulundurmanız ve gecikmedeki artışın kabul edilebilir olup olmadığını hesaplamanız gerekir.
Çarpan:
Buradaki çarpan, özellikle değişkeni çarpan değişkeni ifade eder.Değişken sabit ile çarpılırsa, sentez aracı dikkate alınmayan bir toplayıcıya entegre edilir.
Aynı sayıda bit için, çarpan toplayıcıdan çok daha büyüktür. Her çarpan için,
1) Kullanımının gerekli olup olmadığını dikkatlice gözden geçirme ihtiyacı,
2) Kullanılırken bit genişliği azaltılabilir mi Çarpan bit genişliği kapsamlı alanı ve zamanlamayı ciddi şekilde etkiler Hesaplanırken, işaretli sayılar için bile en yüksek bit N bitini (işaret biti) kolayca eklemeyin. Verilog kullanılması önerilir 2001 sözdizimi, $ işaretli (A) * $ işaretli (B) kullanın, çıktı bit genişliğine rağmen {{(dw) {A}}, A) * {{(dw) {B}}, B) yazmayın 2dw'dir. Power_check.pl mul -d komut dosyası yukarıda sağlanmıştır. İncelemeye odaklanmak için koddaki tüm çarpanları yakalayabilirsiniz)
3) Çarpanın öncesinde ve sonrasında çok sayıda kombinasyon mantığı var mı, bu da sentez aracının zamanlamayı karşılamak için süper paralel (devasa) bir kombinasyonel mantık oluşturmasına neden oluyor mu (bu aynı zamanda mantık dengesinde de bahsedilmektedir),
4) "Çarpma ve toplama" mantığı, "çarp ve topla", çarpma ve kaydetme ve sonra ekleme veya (A + B) * mul sonrası A * mul ve B * mul anlamına gelen "ekle ve çarp" mantığına dönüştürülebilir mi? Tekrar kaydedin, aynı çekimde ise, A * mul + B * mul olarak yazılsa bile, sentez aracı (A + B) * mul olarak optimize edilecektir, ancak önce eklenip sonra kodda çarpılması önerilir.
Aşağıdaki 4bit ve 15bbit "çarp ve ekle", "ekle ve çarp" alanı neredeyse iki katına çıktı
ADD_before_Mul veya Mul_before_ADD
Alan (um2)
Çarpan numarası
ADD_MUL = bit4 * (bit15 + bit15)
543
1
MUL_ADD = bit4 * bit15 + bit4 * bit15
919
2
Bölücü optimizasyonu (N / M):
Çarpanlar genellikle tek vuruşta tamamlanır, ancak bölücüler nadiren tek vuruşta tamamlanabilir. Çarpma için doğrudan koda "*" yazabiliriz. Sentez araçları genellikle bize tatmin edici sonuçlar verir, ancak bölücüler için, nadir durumlarda doğrudan "/" yazarız. Çoğu durumda, ayrı bir inst bölme modülüne ihtiyacımız vardır.
Standart bölücü (N ve M her ikisi de değişkendir):
Temel tasarım fikri kaydırmak ve çıkarmaktır.Her döngü 1bit, N / M temettü hesaplarsa, N vuruşa ihtiyacımız var, her döngü 2bit ise (N + 1) / 2 vuruşa ihtiyacımız var, bu yüzden bölücünün alanı büyük değil. , Ancak hesaplama gecikmesi uzun. Aynı zamanda, EDA tarafından sağlanan tasarım ürünü bölücü daha hızlıdır ve daha geniş bir alana sahiptir. Elbette LUT tablosuna bakmak için bir bölücü de var, ancak daha önce kullanmadım, bu yüzden iyi değil
Özel bölücü:
1) Bölen 2'nin kuvveti, örneğin 2, 4, 8 ve birçok kişi doğrudan kaydırmayı düşünüyor. Temettü pozitif olması için, kayma kesinlikle doğrudur, ancak temettü negatifse, bölme sonucu 0'a yakınlaşır ve kayma sonucu -1'e yakınsar,
Örneğin, -5 / 64 = 0, -5 == 5B'1-1011, sağa kaydırıldıktan sonra 5b'1-1111, = -1 olur, ikisinin sonuçları farklıdır.
A gibi yüksek bitlerin hepsinin 1 olup olmadığını belirleyin > > n, A'nın durumunu onaylamanız gerekiyor
| A! = 1'b0 A + 1'b1: A;
2) Bölen bir sabittir, tercihen (2 +/- 1'in kuvveti), 5,, 7 gibi. Taylor genişlemesini düşünebilir ve yaklaşık olarak 2'nin gücünü kullanabilirsiniz.
Bölmeyi aşağıdaki gibi yaklaşık olarak tahmin etmek için 2'nin en yakın kuvvetini kullanın ve kalanı ve bölümü, toplam bölenden küçük olana kadar yineleyin. Div / (2 ^ X-K)
adım1 Div / 2 ^ X = M0 ... R0, eğer K * M0 + R0 > = 2 ^ X-K, 2. adıma, aksi takdirde M = M0, R = R0 + K * M0
adım 2 (K * M0 + R0) / 2
aşağıdaki gibi
100/7 = 14 ... 2
adım 1100/8 = 12 .. 4 eğer (12 + 4) > = 7, 2. adıma
Adım 2 (12 + 4) / 8 = 2 ... 0 eğer (2 +0) < 7. Sonuç = 12 +2 ... 2.
3) Bölen bir sabittir, yaklaşık çarpma ile değiştirilebilir, örneğin, önce X = 1024 / M'yi hesaplayın, sonra kullanın
N / M'ye geri yüklemek için X * N / 1024.Elbette, bu bölümün dikkate alınması gereken doğruluk kaybı olacaktır.
İnternette özel bölücülerin optimizasyonu için ilgili belgeler de vardır.Bu, belirli uygulamaların özel analizini gerektirir.
Kesin olarak, bölücü alan ve gecikme açısından çok büyük bir farka sahip olduğu için, özellikle uzun gecikme bölücü, hesaplama mantığında bir darboğaz haline gelmek kolaydır ve diğer mantık, sonuçlarının sonraki hesaplamaları başlatmak için beklemesidir. Bu nedenle, farklı bölücüler seçerken, tüm veri yolunun ek yükünü göz önünde bulundurmanız ve 1 çevrimlik bölme hesaplamasını azaltmanız gerekir.Tüm yolu 1 vuruşla kısaltabilir misiniz ve kaç yazmaç kaydedilebilir?
Veri yolu bölme gecikmesini önemsemediğinde, sonuç daha iyi bir mantık çoğullama etkisi ise, 1 bitlik kayma ve çıkarma ile bölücünün alanı ve gücü doğrudan seçilir.
Mentor düşük güçlü RTL tasarımı ve HLS seminerine katılın
Sabah, PowerPro'nun AE'si güçten nasıl tasarruf edileceğinden ve gücün nasıl değerlendirileceğinden bahsetti, daha sonra sizinle paylaşacağım.
Bence:
Otomatik güç azaltma: RTL'nin modifikasyondan sonra anlaşılması çok zordur.
güç tahmini: gerçek verileri elde etmek için, fsdb ile PTPX'i tercih edin (saif, özellikle belleği tahmin ederken doğru değildir)
Guilded Power tahmini: Temel olarak brüt tahmin.
Ama bu benim önyargım olabilir, bakın bu yıl ne gibi güncellemeler var.
hls_bluebook.pdf (14.29 MB)
mentorpaper_98423.pdf (2.42 MB)
mentorpaper_102112.pdf (1.35 MB)
mentorpaper_94085.pdf (589.09 KB)
(İndirmek için foruma giriş yapın)
Bugün mentor semineri tarafından paylaşılan materyallerden bazıları henüz alınmadı. Düşük güçlü RTL tasarım aracı öğrenmenize yardımcı olsa da, güç tasarrufu hala kendi temel anlayışına sahiptir ve tasarımda esnek bir şekilde kullanılabilir.Kod iyi yazılmışsa , Kodunuzu optimize edecek bir düzeyi yoktur.
Powerpro güçlü olmasına ve üç ana işlevi olmasına rağmen, bence,
1. Güç tahmini PTPX kadar iyi değildir, güç kapatması yine de ptpx gerektirir, belki daha ucuzdur. Kısacası, güç bu şeyi tahmin ediyor, çöpte çöp, doğru olmak istiyorsa, girdi doğrudur, brüt ön tahmin ve nihai sonuç rastgele% 30'dur.
2. otomatik RTL güç optimizasyonu: Kodumu değiştirmesine izin vermeyeceğim. Değiştirirsem anlayamayacağım. ECO yaptıktan sonra, onun resmi araç bölümünü satın alacağım.
3. Guiilded RTL güç optimizasyonu: Kılavuzuna, teknik incelemesine bakabilir ve kavramları öğrenebilirsiniz. Bahsettiği "shift register vs dairesel tampon" kavramı benim "boruya karşı FIFO" ile örtüşüyor. Spesifik operasyonda herkes Veya fifo'nun hangi derinlikte ve veri genişliğinde yararlanabileceğini görmek için kendi işinizin altındaki komut dosyalarıyla bir karşılaştırma yapın. Genel uygulamalar için, yukarıda verdiğim komut dosyası problemlerin çoğunu çözebilir.
HLS: Düşük güçlü RTL tasarımı ise kullanılmaması tavsiye edilir.Bu yazılım personelinin donanım kodu yazması içindir.Çoğu durumda temel uygulamanın ne olduğunu bilmeyeceğiniz tahmin edilmektedir. Onun örneği de nv'nin tergrası 1. Bu, o zamanlar yüksek güç tüketiminin bir temsilcisi değil miydi?
Risk sermayesini çekmek, demolar yapmak ve ürünleri hızlıca üretmek amacındaysa, kod yazmaktan çok daha hızlı olan HLS'yi düşünün.
Boru hattı uzunluğunu azaltın:
RTL yazmadan önce, en temel hesaplama birimini bilmeliyiz (*, +, > = Vb.) Gecikme ve alan Bu veriler, SDC'deki temel hesaplama biriminin sıkı ve gevşek kısıtlamaları birleştirilerek elde edilebilir. Sıkı durumda, sentez aracının mantığı paralel olarak genişlettiğini ve alanın çok büyük olduğunu ve zamanlamayı karşılayamayabileceğini görebiliriz. Gevşek, mantıksal seri, zamanlama gereksinimlerini karşılayabilir. İki alan arasındaki fark 3-6 kattır.
Boru hattını azaltın, temel kombinatoryal mantık gecikmesinin temel bir anlayışını gerektirir, boru hatlarını rasyonel olarak düzenleyin ve veri yolu yakınsama noktalarına dikkat edin, hangi dalın veri yolu uzunluğunun darboğazı olduğunu görün, anahtar dalları sıkıştırın Tüm yolun kısaltılmasını ve getirdiği faydaları sağlayabilir mi?
Tabii ki, gecikmenin etkisini ve veri yolunun alanını tahmin etmek için bu gereksinim çok yüksek ve bunu çok iyi yapmak benim için çok zor.Genel olarak, zamanlama için karşılanması kolay ve herkes tasarımda yeterli marj bırakarak yolun ideal durumdan daha uzun olmasına neden olabilir. Çok. Ama bir fikrim var, belki en makul boru hattı uzunluğunu bulmanıza yardımcı olabilirim, bu işlevi gerçekleştirmenize yardımcı olmak için tüm senaryoyu hazırlarım. (Yalnızca algoritma modülleri, daha az kontrol ve daha fazla hesaplama için)
1. Önce zamanlamayı dikkate almadan C kodunu doğrudan kopyalayın, ara hesaplama mantığı RTL'yi yazın ve son olarak çıktı için kaydı kullanın.Parametrelendirme yönteminin ve ardından yeniden zamanlamanın yazılması önerilir.
2. Kombinatoryal mantığın maksimum alanını (minimum gecikme) ve minimum alanını (maksimum gecikme) elde etmek için iki tur sıkı / gevşek sentez gerçekleştirin.
3. Maksimum gecikme / saat_dönemi boyunca en küçük boru hattı uzunluğunu elde edin. Minimum gecikme / clock_peroid ile maksimum boru hattı uzunluğunu elde edin
4. Yeniden zamanlama yöntemini kullanarak, minimum boru hattı uzunluğundan başlayın, yeniden sentezlemek için boru hattını ayarlayın ve alanın bükülme noktasını aramaya devam edin. Görmeyi umduğum şey, ortada en küçük alana sahip bir bükülme noktası olduğu veya boruya kadar - Çizgi uzunluğu en büyüğüdür ve alan monoton olarak azalır.
5. En küçük alana sahip boru uzunluğu ideal sonuçtur.
Yukarıdaki şekilde gösterildiği gibi, dikey eksen Z alandır, X ekseni frekanstır ve Y ekseni PIPE uzunluğudur.Farklı frekanslarda (farklı kesitler), farklı boru alanı eğrileri grafikte ayrık noktalardır.Aradığımız en küçük yüzey seviyesidir. çözüm.
Bu sonucu, RTL tasarım uygulamasına rehberlik etmek için kullanabiliriz.En iyisi değilse, en iyisi ikinci olabilir, ancak hazırlık yapmadan başlamaktan daha iyidir. Senaryo düzgün hazırlanmışsa ve sadece birkaç tur sentez alıyorsa, bence uygulanabilir, neyse, makine çalışıyor.Aksi takdirde, bu tasarım deneyime dayanıyor ve kaliteyi kontrol edecek bir ölçüt yok.
Ayrıca, HLS'nin kapsamlı sonuçlarını bir kıyaslama olarak kullanmaya devam edip edemeyeceğimi ve sentezlemek için c algoritmasını kullanıp kullanamayacağımı ve katapüllerin hangi düzeyde öneriler verdiğini ve yukarıda açıklanan yeniden zamanlama döngüsü sentezinin optimal sonucuyla karşılaştırıldığında ne kadar kötü olduğunu merak ediyorum. , Eğer ikisi birbirine yakınsa, HLS teklifinin
Bit genişliğini azaltın:
En basit yol 410 bit eklemektir, belki birisi 13 bit gerektiği sonucuna varabilir.
C kodu: F = A + B + C + D
Tel F_pre1 = A + B;
Tel F_pre2 = F_pre1 + C;
Wire F = F_pre2 + D; // dört10bit'in toplamı yalnızca 12bit sonuca ihtiyaç duyar.
Özellikle bazı hesaplamalar için, basit türetme veya birleştirme ile bit genişliği azaltılabiliyorsa, hem alandan hem de güçten tasarruf sağlayacaktır.
Hardmacrovs Kaydı:
Tsmc 40 nm işleminin altında, tek bir yazmaç ve sramın boyutunu karşılaştırın,
SDFCNQD1BWP 5.2u2 (Minimum boyut)
SDFCNQD2BWP 5,9 u2
1prf128x36 = 5458u2 için her bit 1.18u2'dir
Forsparm576x32 = 12884, her bit 0.69u2'dir
Forspram 896x48 = 23515u2, her bit 0.546u2'dir
Kılavuzu kontrol ederek, tek bir okuma ve yazmanın gücünü biliyorum, böylece büyük miktarda veri depolanması gerektiğinde, hardmaco veya DFF kullanılıp kullanılmayacağını analiz edin.
Mantıksal dengeleme: Sentez aracı, zamanlama sıkı olduğunda hesaplama gecikmesini azaltmak için paralel mantık kullanır ve zamanlama gevşek olduğunda alanı azaltmak için seri mantık kullanır.Kodu yazarken kritik yolda olmayan bazı mantığı bozabilirsek Bu, alanı optimize edebilir ve gücü azaltabilir Aşağıdaki şekilde gösterildiği gibi, kritik olmayan yolun ilk vuruşta daha fazla mantığı ve ikinci vuruşta daha az mantığı vardır.
Denge sonrası yapı şu şekildedir:
Spesifik bir örnek şu şekildedir: iki toplayıcının sıkı zamanlama ile dengelenmesinden sonra alan gücünün dönüşümü. alan gücü azaldı
Tarzı
Güç
alan
Denge yok
6.491e-06
729.06
Denge
5.618e-06
373.08
Elbette, denge mantığı için çok sayıda ara sonuç kaydetmeniz gerekiyorsa, bu da uygun değildir. Yukarıdaki güç, kayıt tutmanın ara sonuçları arttığı için çok düşmedi. Optimizasyon ipuçları sağlayacak araçlara sahip olmak en iyisidir.
EETOP'u takip edin, anahtar kelimelere cevap verin Çip Koleksiyonu İlgili makaleleri görüntüleyin:
Mükemmel kurs: Gelişmiş proses teknolojisi entegre devre ESD devresi nasıl tasarlanır?
Mükemmel kurs: entegre devre mandalı etkisi ve mühendislik uygulaması
7nm: TSMC VS Samsung
GF'nin Chengdu fabrikası neden kapandı?
Yarı iletkenlerin geçmişi, bugünü ve geleceği
Yapı taşları gibi yeni bir çip üretim-inşa çip modeli
Büyük bir IC tasarım merkezinin BT ortamı
Çip tasarımında elektromigrasyon ve IR düşüşü ile ilgili zorluklar ve teknolojiler
Çip alanı çok büyük! Samsung Exynos 9820 çekirdek fotoğrafları ortaya çıktı
Kirin 980 kernel fotoğrafı: NPU nerede?
Altı 5G temel bant yongasının tanıtımı ve pazar analizi
SoC ve 5G temel bant ayrıldı Neden?
IC Daniel'in 10 yılı aşkın süredir tasarım paylaşımı: dijital tipik devre bilgi yapısı haritası ve kod uygulaması
Huawei HiSilicon hakkında bu makale okumaya değer
Rusya'nın yüksek kaliteli çipleri yok, neden birinci sınıf silahlar yapabiliyor?
Beni durdurma, çip yapacağım!
Chip İlkbahar ve Sonbahar · ARM Biyografisi
Çin'in çekirdek asit geçmişi
Hindistan'ın Geçmişi
Savunma endüstrisi çip endüstrisi hakkında derinlemesine rapor
Bir Amerikan çip şirketinin Çinli bir yöneticisi, Çin'in çip endüstrisi hakkında düşünüyor
IC tasarım ustalarının büyüme yolunu öğrenmek, biriktirmek, iletmek
Kızların mikroelektroniği öğrenmesi nasıl bir deneyimdir?
MIPS mimarisi açık. 10 günde tamamen ücretsiz bir MIPS işlemci tasarlayın (kaynak koduyla)
Performans: von Neumann'ın darboğazından
AI çip tasarımına ve geliştirmesine genel bakış
AI çipleri ile geleneksel çipler arasındaki fark nedir?
Kıdemli bir mühendis Lao Wang'ın yapay zeka çipleri hakkındaki teknik bilgileri
Yan taraftaki Lao Wang: AI çipi ve onu nasıl seçmeli?
Birisi sonunda bulut bilişimi, büyük veriyi ve yapay zekayı anladı!
Boyutu yarıya indirin ve gücü ikiye katlayın! GaN teknolojisinin bugünü ve geleceği
Mantık Sentez Tasarım Derleyici Veri Kitabı
Entegre devre üretim teknolojisinin kısa bir tarihi
Yarı iletken bilimi: IC yonga tasarımı ve üretim süreci
Dökümhane savaşının dört bölümü (her fabrikanın geçmişini ve bugününü anlamak için, çok ayrıntılı!)
Yarı iletken proses akışının çok ayrıntılı açıklaması
RF Yarı İletken Sürecine Giriş
Düzen çizgisi genişliği seçiminde metal konu
Yalnızca IC mühendislerinin alabileceği saplar var mı?
7nm işlemi neden bu kadar zor? 7nm'den yonga endüstrisindeki "zengin ve yoksul arasındaki uçurum" a bakıldığında
TSMCnin SoICi nedir?
Ana pazara giren RISC-V'nin birçok sorunu
RISC-V mimarisinin avantajları nelerdir?
Birisi sonunda RISC-V hakkında netleşti!
RISC-V soft core + FPGA havacılık askeri ürün tasarımı yeni fırsatlar
ASIC düşük güçlü tasarım örneği analizi ve kitap önerisi
ASIC tasarım çalışması özeti (dahil: araç ve kitap belgesi önerisi, yazılım ortamı oluşturma, RTL tasarımı, doğrulama, süreç kitaplığı açıklaması, resmi doğrulama, sentez vb., Toplam 12 bölüm)
ASIC tasarım çalışması özetinin test edilebilirlik tasarımı ve kitap önerisi
Statik zamanlama analizi özeti ve ASIC tasarım çalışması özeti için kitap önerileri
ASIC tasarım çalışması özet araçları ve kitapları ve belgeleri
Küçük çiplerin değeri büyüktür | ASIC mühendisleri neden bu kadar değerlidir?
Talaş alanı tahmin yöntemine giriş
Bağımsız olarak iletişim çipleri geliştirmek ne kadar zor? İletişim endüstrisinin bir gazisi size söylüyor, bu o kadar basit değil!
RISC-V ne ölçüde geliştirildi? Kaydedilebilenler kaydedilir!
Çok çekirdekli CPU tasarımı ve RISC-V ile ilgili bilgiler
Zamanlama tasarımının ve kısıtlama verilerinin özeti
Analog düzenin bildirileri
GDSII'den DEF'e akışa giriş
Makine öğrenimi, FPGA'lara ve SoC'lere giderek daha fazla güvenecek
Verilog temel becerileri: Ardışık Düzen Tasarımı
Gelişmiş ambalaj geliştirme trend analizi PPT
Gelişmiş ambalaj geliştirme durum analizi PPT
Test edilebilirlik ve ATPG için tasarım
Kirin 980 nasıl doğdu? Başarısız olmaya cesaret edin, denemeye cesaret edin! (Ekli: Huawei'nin erken model işlemci geliştirme süreci)
IC Analog Yerleşim Tasarımı Üzerine Ders Notları
Verilog CPU tasarım örneği
CPU, GPU ve TPU nasıl çalışır? Fark ne? TPU neden GPU'yu ezebilir?
Yıllardır popüler olan ana akım yonga mimarisi sessizce değişiyor
IC tasarım endüstrisi ile karşılaştırıldığında, EDA endüstrisinin gelişimindeki zorluklar nelerdir?
Gigabit Ethernet TCP, UDP protokolü, FPGA uygulaması
SoC işlevsel simülasyon doğrulama teknolojisi paylaşımı
Biraz doğrulama anlayışı
IC Layout komut dosyası paylaşımı
Yarı iletkenlerin bir sonraki anahtarı olan heterojen entegrasyon
Python'da FPGA Ethernet MAC yazın (kaynak kodu indirme yöntemiyle)
Python ile makine öğrenimi
Doğrudan verilog'un testbench python betiğini oluşturun
Kuru ürünler! ASIC ustasının klasik özeti
ASIC ön ve arka tasarımının klasik detayları
Veri Paylaşımı | Zaman Serisi Analizi
Verilog temel devre tasarımı (dahil: saat alanı senkronizasyonu, kesintisiz anahtarlama, asenkron FIFO, debounce filtreleme)
128 puan FFT verilog kod paylaşımı
"Mutlu Çin Yeni Yılı" kod paylaşımının hardcore gerçekleştirilmesi
Yapay zeka çağında FPGA'nın benzersiz avantajları
FPGA mühendislerinin temel yetkinliği nedir
Çipten sisteme: FPGA hızlandırıcı kartın geliştirme kursu ve beklentisi
FPGA tabanlı derin öğrenme hızlandırıcıların zorlukları ve fırsatları
FPGA giderek daha çok SoC gibi bir "İsviçre Çakısı" haline geliyor
Dijital ön uç ve FPGA tasarımıyla ilgili kitaplar hakkında kapsamlı okuma ve yorumlar
Dijital IC tasarım öğrenme süreci
Burr'u Önlemek İçin Saat Anahtarlama Devresinin Tasarım Fikri
Fonksiyon üreteci gerçekleştirme yönteminin kısa tanıtımı
Basit UDP / IP iletişimini gerçekleştirmek için FPGA kullanın (yumuşak çekirdek değil, salt donanım dili kullanarak)
Dijital Tümleşik Devre Tasarımına Giriş - HDL'den Düzene
Senkronizatörün tasarımı
Dijital IC Mühendisinin Beceri Ağacı
Mikroelektronik ağaç
IC tasarım tam süreci ve araçlarının kısa açıklaması
IC çip tasarımı ve üretim süreci
IC yongalarının maliyeti nereden geliyor?
Çip tasarımı hakkında konuşun
IC tasarımı üzerine düşünceler
Dijital IC tasarımının eksiksiz süreci (çok detaylı!)
Dijital IC Tasarım teknolojisinin genel görünümü (110 sayfalık PPT!)
ASIC tasarımının her aşamasında dikkat edilmesi gereken konular
Kurulum ve Bekletme hakkında basit bir şekilde konuşun
Kurulum süresi ve bekleme süresi hakkında büyük konuşma
Statik zamanlama analizindeki kurulum ve tutmanın negatif değerleri var
Statik zamanlama analizi STA'nın giriş noktası ve yöntemi
Statik zamanlama analizi (STA) temeli ve uygulaması
Kombinatoryal mantık tasarımında aksaklık fenomeni
Dijital IC tasarım mühendislerinin geliştirme beklentileri nelerdir?
Nitelikli bir dijital IC tasarım mühendisinin bilgi yapısı
RS codec bileşeni Verilog kodu RS (255,247)
RS (255,239) kodlama ve kod çözme algoritması, verilog kodu ve ayrıntılı açıklama
Çok detaylı Verilog ders notları, 472 sayfa
Basit bir 8-bit işlemci eksiksiz tasarım süreci ve verilog kodu
Netizenlerin deneyim paylaşımı: Verilog tasarım ilgisi
Eşzamanlı ve eşzamansız zamanlama hakkında bir Verilog örneği
Yarıiletkenler ve Mikroelektronik için Mesleki İngilizce Kelime Özeti
SpectreVerilog dijital-analog karma devre simülasyon yöntemini tanıtmak için DAC'yi örnek olarak alın
IC tasarım ve doğrulama mühendisleri arasındaki dostluk gemisi dönüyor
Dijital IC tasarımının temel süreci ve kullanılan araçlar
Yabancı dijital IC mülakat soruları (çok detaylı, cevaplarla birlikte)
Zamanlamayı iyi anlayın ve kullanın
Eşzamansız FIFO tasarımı (çok detaylı, resimler ve metinler, bir göz atmaya değer!)
Paralel Evrenin Peşinde - Asenkron FIFO Denetleyicinin Tasarımı
Eşzamansız FIFO neden Gray kodunu kullanıyor?
Dijital IC Tasarım Mühendisleri için 100 Klasik Yazılı Mülakat Sorusu (1 ~ 50)
Dijital IC Tasarım Mühendisleri için 100 Klasik Yazılı Mülakat Sorusu (51 ~ 100)
Senkron / asenkron tasarım ve metastabilite
Dünyanın en iyi çip uzmanları [düşük güçlü çip tasarımı] hakkındaki gerçeği ortaya koyuyor
Düşük güç tüketimi ve düşük voltajlı bant aralığı devresi hakkında
RF PA üzerine iki doktora tezi
PLL klasik ders notları
Sihirli çalışma: bant genişliği!
Güç Spektral Yoğunluğu
SerDes'e genel bakış
Jitter hakkında basit bir şekilde konuşun (Jitter)
Dinamik ofset eliminasyon yöntemi (analog IC tasarımı siyah teknolojisi!)
Gelişmiş proses entegre devre ESD devresi nasıl tasarlanır?
ESD bildirisi
Kıdemli bir Analog / RF IC Tasarımcısı olmak için ne tür bir deneyim gerekiyor?
Güç yarı iletkenleri (VDMOS, IGBT, TVS) ders notları
CPU'larla karşılaştırıldığında, yüksek performanslı analog cihazlar ambargolu olma konusunda daha endişelidir, öyleyse araştırma ve geliştirmedeki zorluk nedir?
RF PA bu şeyler
AACD 2017 Hibrit ADC'ler Veri Kitabı
Razawi tarafından 16 yılda yazılmıştır-TSPC Logic
Güç Yarı İletken Cihazlarının Temelleri (Baliga) (sayfa 1085)
Analog dijital ürün geliştirme süreci
SPICE'ın kısa tarihi
Kuru gıda paylaşımı: kendi EKG'nizi ölçme (teoriden devreye)
İyi bir analog IC mühendisinin kalitesi
Analog IC tasarımı alanında bir klasik
Simülasyon sonrası simülasyona ihtiyacınız var mı?
Aşırı sıfır hakkındaki fikrim
Altı klasik analog IC kitabının harika incelemeleri ve özeti
Analog Tasarım 100 İncil
Analog devre öğrenmeye başlamak için öneriler
Analog IC bant çıkışı deneyimi paylaşımı
Analog IC'nin birkaç yüz bin yaşlı yıllık maaşı
Lisans dersinde analog ic tasarımcı olmak ister misiniz, hangi hazırlıklar yapılmalıdır?
Analog devre tasarımının dokuz adımı
AnalogIC, yapı hakkında bu kadar zor olan nedir? parametre? bölge? sistemi?
Analog Tümleşik Devre Tasarımı Ders 2: Transfer Fonksiyonu, Sıfır ve Kutup Oluşumu ve Zaman Alanı Yanıtı
Simülasyon tasarımı okumaya devam etmeli miyim - bankalar arası yüksek lisans derecesi hakkında bir soru
Analog tümdevre tasarımı nasıl öğrenilir
Analog Daniel, analog mühendislerin değerinden ve gelişim yönünden bahsediyor
Analog devre 200 soru bilmeli
Simülasyondan sonra simülasyonun çeşitli yöntemleri ve avantajları ve dezavantajları
Analog zemin ve dijital zemin hakkında çok ilginç bir açıklama
Kuru ürünler! RF analog devre tasarımı üzerine klasik ders notları
Analog Devreyi Volt Modu Öğrenme ve Anlama Yolu
Analog IC tasarımını öğrenmek gerçekten zor mu?
Analog IC İleri Tasarım Sürecinin Özeti
Taklit ve öğrenmenin özeti
Analog Filtreleme Tasarımı Üzerine Ders Notları
Razawi Analog CMOS Tümleşik Devre Tasarımı Dersi Bölüm 3
Razawi Analog CMOS Tümleşik Devre Tasarımı Dersi Bölüm 2
Taklit ve öğrenmenin özeti
Orijinal metni okumak için tıklayın ve daha fazla tartışma görmek için foruma gidin