0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

EDA工具里的功耗是怎么計(jì)算出來(lái)的?

sanyue7758 ? 來(lái)源:艾思后端實(shí)現(xiàn) ? 2023-04-15 09:30 ? 次閱讀
在當(dāng)下的芯片設(shè)計(jì)中,工藝越先進(jìn),芯片規(guī)模越大,功耗就越發(fā)敏感,降低功耗的訴求越來(lái)越緊迫。 功耗優(yōu)化一定是建立在計(jì)算和數(shù)據(jù)的基礎(chǔ)上的。那么對(duì)于EDA而言,功耗是怎么算出來(lái)的呢?今天,就讓小編帶領(lǐng)大家一起從EDA的視角,來(lái)洞察功耗計(jì)算的零零總總。 開(kāi)篇之前,先復(fù)習(xí)一下功耗的計(jì)算公式:b61c7418-daf9-11ed-bfe3-dac502259ad0.png注解b632e194-daf9-11ed-bfe3-dac502259ad0.png

EDA對(duì)功耗評(píng)估的分類(lèi)

基于上述功耗的計(jì)算理論,為了方便計(jì)算,EDA工具對(duì)功耗的評(píng)估分為如下幾類(lèi)

基于library非功耗的信息,計(jì)算功耗

b640f1da-daf9-11ed-bfe3-dac502259ad0.pngb6590fae-daf9-11ed-bfe3-dac502259ad0.png

基于SDPD的功耗查看

leakage power可以基于SDPD,直接查看library獲取功耗
  • 基于器件輸入狀態(tài)進(jìn)行功耗查看:器件狀態(tài)決斷SDPD (Status Dependency Path Dependency)
  • library同時(shí)提供默認(rèn)的leakage power的功耗信息
b66f723a-daf9-11ed-bfe3-dac502259ad0.png

基于SDPD和pin的屬性查找表

internal power可以基于SDPD和input/outputl 的RC屬性查找表來(lái)獲取
  • 基于SDPD的數(shù)據(jù)查詢
  • input pin:基于input transiton的查找表
  • output pin:基于input transiton和output cap的查找表
  • cel的internal power是所有pin在SDPD下的總和
b6931762-daf9-11ed-bfe3-dac502259ad0.pngb6a79bba-daf9-11ed-bfe3-dac502259ad0.png注釋?zhuān)篠DPD是一種瞬態(tài)值。在芯片常規(guī)的工作中,某一時(shí)刻,芯片是某一種固定的SDPD,所以一個(gè)芯片的實(shí)際工作狀態(tài)(功耗)是由各種SDPD按照出現(xiàn)的比率描述的一個(gè)完備值(各種SDPD出現(xiàn)概率總和是100%)
據(jù)上,器件的功耗的相關(guān)性可以用如下的表格來(lái)歸類(lèi)b6cd3956-daf9-11ed-bfe3-dac502259ad0.png

EDA的功耗計(jì)算示例

EDA工具提供了相應(yīng)的信息和抽取方式來(lái)擬合library的描述。以常用的DC工具里的report_power命令為例,工具會(huì)羅列出下面的功耗信息:

b6e33710-daf9-11ed-bfe3-dac502259ad0.png

表頭解析:b6f0fae4-daf9-11ed-bfe3-dac502259ad0.png ? DC也會(huì)把器件分類(lèi)進(jìn)行功耗報(bào)告打?。?img src="https://file1.elecfans.com//web2/M00/9A/7B/wKgaomTnjEKAB4YcAAJN-awWtKY407.png" alt="b707b1c6-daf9-11ed-bfe3-dac502259ad0.png" />
對(duì)于器件的分類(lèi)方法見(jiàn)下表:
b71e903a-daf9-11ed-bfe3-dac502259ad0.png 通常,report_power默認(rèn)行為是打印類(lèi)似上述的芯片功耗的總和結(jié)果,這些都是每一個(gè)器件單獨(dú)功耗的合計(jì)值,當(dāng)然,也可以使用一些選項(xiàng)打印出某一個(gè)cell或者net或的功耗細(xì)節(jié)。
但是通常不太會(huì)這么做,因?yàn)槿タ疵恳粋€(gè)cell或者net的功耗意義并不很大,反而是找到芯片里邊的最差功耗的cell或者net會(huì)比較有趣(設(shè)計(jì)里的功耗大戶)。
譬如關(guān)心cell的動(dòng)態(tài)功耗,這時(shí)可以使用下列命令來(lái)羅列:
b730831c-daf9-11ed-bfe3-dac502259ad0.png
如果用戶對(duì)功耗最大的cell比較感興趣,可以使用-verbose的選項(xiàng)
羅列出更多的細(xì)節(jié):
b747b118-daf9-11ed-bfe3-dac502259ad0.png
類(lèi)似的也可以針對(duì)net類(lèi)型進(jìn)行sort、verbose的報(bào)告。b76a388c-daf9-11ed-bfe3-dac502259ad0.pngb77b2d86-daf9-11ed-bfe3-dac502259ad0.png

cell、net和pin的功耗歸一化

從上文描述中可以看到,net會(huì)描述switching power,cell對(duì)標(biāo)的則是internla power和leakage power。但是工具在產(chǎn)生報(bào)告的時(shí)候,無(wú)論是net還是cell都會(huì)把三類(lèi)功耗打印完全,這里是使用output pin對(duì)應(yīng)的net來(lái)做的cell、net歸一化處理b797e7a0-daf9-11ed-bfe3-dac502259ad0.png
對(duì)于internal power,其在在library里的描述是pin based的
b7a92844-daf9-11ed-bfe3-dac502259ad0.png ? 在report_power命令里邊,internal power被整合為cell類(lèi)型,但是本質(zhì)上就是所有pin在SDPD下的總和表達(dá)。 為了方便表達(dá),工具使用了上述三種對(duì)象對(duì)功耗進(jìn)行了分拆,總結(jié)如下b7b9a9e4-daf9-11ed-bfe3-dac502259ad0.png 可以看出,EDA工具為了簡(jiǎn)化對(duì)功耗的核算,使用了歸一化的操作,這樣可以大大減少報(bào)告數(shù)量和歧義,這個(gè)對(duì)library的訴求也是得到了一致。 在上文提到一個(gè)更為精準(zhǔn)化的描述方式,SDPD (Status Dependency Path Dependency),這個(gè)對(duì)于功耗計(jì)算有實(shí)際的影響。那么為何在功耗的計(jì)算里邊會(huì)有這個(gè)SDPD呢?SDPD又是通過(guò)怎么樣的方式影響功耗計(jì)算呢?一起打開(kāi)工藝庫(kù)的信息一探究竟吧!

工藝庫(kù)的功耗描述

工藝庫(kù)里的漏電功耗(leakage power)描述

打開(kāi)一個(gè)MUX2 cell的lib描述,看看和leakage power相關(guān)的的信息

	
		cell ("SEL_MUX2_4") { cell_footprint : "DST_MUX2"; # default leakage power= default_VBP_leak + default_VDD_leak cell_leakage_power : 0.021083775; # 偏置電壓對(duì)應(yīng)的功耗 leakage_power () { related_pg_pin : "VBP"; value : "1.37375e-05"; # common-power leakage  leakage_power () { related_pg_pin : "VDD"; value : "0.0210700375"; # SDPD !D0&!D1&!S leakage power @ VBP leakage_power () { related_pg_pin : "VBP"; when : "!D0&!D1&!S"; value : "5.57835028e-06"; # SDPD !D0&!D1&!S leakage power @ VDD leakage_power () { related_pg_pin : "VDD"; when : "!D0&!D1&!S"; value : "0.0183689763";
  • 漏電電壓是由所有的power rail 所構(gòu)成:譬如這里就有bias和common的區(qū)分
  • SDPD是所有輸入可能的描述 可以使用腳本快速進(jìn)行抓取轉(zhuǎn)成列表。 b7ce6762-daf9-11ed-bfe3-dac502259ad0.png 可以看到,這是一個(gè)三輸入的器件,那么總計(jì)會(huì)有8中輸入可能,lib的leakage的信息基于輸入可能性的全完備羅列。 對(duì)于一個(gè)包含SI和SE的DFF,這里有CLK的器件,對(duì)于不同Q的輸出,器件的狀態(tài)也不一樣,會(huì)導(dǎo)致漏電的不同,所以可以看到FF的漏電信息,包含的輸出口Q的影響,這樣總共就有4+1=5個(gè)管件的組合方式,亦即32中可能,加上默認(rèn),全備的漏電信息表格如下: b7e782e2-daf9-11ed-bfe3-dac502259ad0.png 至于為何會(huì)有Q輸出管教的信息來(lái)組合成為leakage power tabel,一起回顧一下大學(xué)課本里的下圖就可以領(lǐng)略到其中的原理了:Q和!Q都會(huì)反接回來(lái)構(gòu)成類(lèi)似鎖存的結(jié)構(gòu)體: b7fceda8-daf9-11ed-bfe3-dac502259ad0.png圖片來(lái)自網(wǎng)絡(luò),侵刪
還有一個(gè)細(xì)節(jié)可以通過(guò)此表了解到,bias電源導(dǎo)致的漏電比主電源(VDD)要來(lái)的小的多。這也是吻合偏置電壓的原理的。

工藝庫(kù)里的內(nèi)部功耗(internal power)描述

以MUX2 為例,一起看一下interenal power的描述:

	
		cell ("SEL_MUX2_4") { ...... pin (S) { capacitance : 0.002820029; direction : "input"; fall_capacitance : 0.002761232; max_transition : 4.308; related_ground_pin : VSS; related_power_pin : VDD; rise_capacitance : 0.002878826; internal_power () { # bias PG related internal_power description related_pg_pin : "VBP"; # condition when : "!D0&!D1"; fall_power ("pwr_tin_8") { index_1 ("0.009266, 0.0222816, 0.0535798, 0.1288418, 0.309822, 0.745016, 1.791516, 4.308"); values ("-5.63411e-05, -5.540512e-05, -6.377697e-05, -4.595821e-05, -6.756144e-05, -6.15605e-05, -6.171516e-05, -6.163207e-05"); } rise_power ("pwr_tin_8") { index_1 ("0.009266, 0.0222816, 0.0535798, 0.1288418, 0.309822, 0.745016, 1.791516, 4.308"); values ("8.111282e-05, 7.08698e-05, 5.968669e-05, 5.155256e-05, 5.807869e-05, 6.204414e-05, 6.182517e-05, 6.175735e-05"); } } internal_power () { # common PG related internal_power description related_pg_pin : "VDD"; # condition when : "!D0&!D1"; # the internal_power during pin S falling edge fall_power ("pwr_tin_8") { index_1 ("0.009266, 0.0222816, 0.0535798, 0.1288418, 0.309822, 0.745016, 1.791516, 4.308"); values ("0.002097898, 0.00210684, 0.001989685, 0.002036636, 0.001995899, 0.001987284, 0.001991492, 0.002053458"); } # the internal_power during pin S rising edge rise_power ("pwr_tin_8") { index_1 ("0.009266, 0.0222816, 0.0535798, 0.1288418, 0.309822, 0.745016, 1.791516, 4.308"); values ("-0.0001334809, -6.114718e-05, -0.000153519, -0.0001819992, -0.0002029397, -0.0002175415, -0.0002181976, } } } ...... pin (X) { direction : "output"; function : "((D0&!S)|(D1&S)|(D0&D1))"; max_capacitance : 0.8309614; max_transition : 4.308; min_capacitance : 6.155e-05; related_ground_pin : VSS; related_power_pin : VDD; power_down_function : "!VDD+!VBP+VSS+VBN"; internal_power () { related_pg_pin : "VBP"; # Path Dependency related_pin : "D0"; # Status Dependency when : "!D1&!S"; # X: falling edge power due to related D0 change. positive unate fall_power ("pwr_tin_oload_8x7") { index_1 ("0.009266, 0.0222816, 0.0535798, 0.1288418, 0.309822, 0.745016, 1.791516, 4.308"); index_2 ("6.155e-05, 0.000300464, 0.00146675, 0.00716013, 0.0349531, 0.170628, 0.832941"); values ("-0.0003287909, -0.0003265358, -0.0003263012, -0.0003258171, -0.0003259071, -0.0003233576, -0.0003219219", ...... "-0.0003294999, -0.0003285813, -0.0003292956, -0.0003293134, -0.0003286557, -0.0003291086, -0.0003283838"); } # X: rising edge power due to related D0 change. positive unate rise_power ("pwr_tin_oload_8x7") { index_1 ("0.009266, 0.0222816, 0.0535798, 0.1288418, 0.309822, 0.745016, 1.791516, 4.308"); index_2 ("6.155e-05, 0.000300464, 0.00146675, 0.00716013, 0.0349531, 0.170628, 0.832941"); values ("0.000327204, 0.000329085, 0.0003304601, 0.0003274369, 0.0003265309, 0.0003275536, 0.0003209762", ...... "0.0003299443, 0.000328975, 0.0003286823, 0.0003299806, 0.0003291929, 0.0003285925, 0.0003283199"); } } } ...... }
		可以看到,internal power除過(guò)是status dependency,同時(shí)也是path dependency?;趇nternal power的特性,這里也同時(shí)需要考慮 input tran和output_cap的狀態(tài)。
		通過(guò)腳本抽取,可以看到如下特性:
  • 輸入pin:會(huì)對(duì)應(yīng)一個(gè)rise和fall的internal power per rail。對(duì)應(yīng)的,每一個(gè)input的internal power也是被其他輸入pin的狀態(tài)所影響。
  • 輸出pin:在一個(gè)input pin的path dependency的情況下,在其他的input pin的status dependency,這個(gè)唯一變化的輸入pin的變化,會(huì)帶來(lái)相應(yīng)的rise和fall的internal power
b80d7a42-daf9-11ed-bfe3-dac502259ad0.png

工藝庫(kù)里的功耗描述小結(jié)

上面的闡述比較多,為了方便大家閱讀,以下面的表格做一個(gè)相關(guān)的小結(jié): b824af78-daf9-11ed-bfe3-dac502259ad0.png 花了一些時(shí)間一起學(xué)習(xí)了一下lib,看到這里,大家應(yīng)該可以理解為什么工具需要使用SDPD的方式來(lái)核算internal和leakage的power了吧:所有的計(jì)算都是基于基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和類(lèi)型

SDPD對(duì)于功耗計(jì)算的影響

在實(shí)際的芯片當(dāng)中,一個(gè)器件在不同時(shí)間的表現(xiàn)狀態(tài)可以不同,這里就像一個(gè)真值表,假定設(shè)計(jì)里邊有如下一個(gè)inverter器件的工作狀態(tài)。b8363ae0-daf9-11ed-bfe3-dac502259ad0.png 所以,在對(duì)功耗的核算中,工具引入了下面兩個(gè)重要的參數(shù)
  • Status Possibility (SP): 各種狀態(tài)的出現(xiàn)比率,通常以一個(gè)周期的高電平所占比率來(lái)體現(xiàn),譬如一個(gè)占空比50%的時(shí)鐘,那么他的SP就是0.5。這個(gè)參數(shù)會(huì)直接影響leakage pwoer,間接影響internal power
  • toggle rate (TR):反轉(zhuǎn)率,通常指一個(gè)單位時(shí)間(time unit)內(nèi)信號(hào)的反轉(zhuǎn)次數(shù),包含上升沿和下加沿,譬如在一個(gè)以ns為單位時(shí)間的工藝?yán)铮?GHz的信號(hào)對(duì)應(yīng)的toggle rate就是2。這個(gè)參數(shù)會(huì)直接影響internal power
b8436512-daf9-11ed-bfe3-dac502259ad0.png

SP和TR計(jì)算示例

目前為止,有了TR和SP就可以展開(kāi)對(duì)leakage_power和internal_power的計(jì)算。在實(shí)際的芯片里邊,可以使用一些手段來(lái)計(jì)算器件的TR和SP,為此,筆者使用python完成了一個(gè)這樣的一個(gè)功能:基于輸入管腳對(duì)簡(jiǎn)單組合邏輯進(jìn)行輸出管腳的TR和SP的計(jì)算:b855d436-daf9-11ed-bfe3-dac502259ad0.png

擁有了計(jì)算功耗計(jì)算的公式,以及自研程序,功耗計(jì)算的大門(mén)也就向大家徹底打開(kāi)了。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片設(shè)計(jì)
    +關(guān)注

    關(guān)注

    15

    文章

    980

    瀏覽量

    54620
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2654

    瀏覽量

    172165
  • 功耗
    +關(guān)注

    關(guān)注

    1

    文章

    761

    瀏覽量

    31787
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    658

    瀏覽量

    21929
  • Library
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    10031

原文標(biāo)題:EDA工具里的功耗是怎么計(jì)算出來(lái)的?

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IcalibrationFSP 0.0002這個(gè)值是怎么計(jì)算出來(lái)的?

    如上述截圖(UG-1098 51頁(yè)),有以下幾點(diǎn)不明白: 1)IcalibrationFSP 0.0002這個(gè)值是怎么計(jì)算出來(lái)的,最好說(shuō)明下推導(dǎo)過(guò)程,這個(gè)值和ADE9000的動(dòng)態(tài)范圍及互感器的比值
    發(fā)表于 12-25 08:14

    LTSR 25-NP計(jì)算出來(lái)的電流誤差特別大,為什么?

    大家好,我現(xiàn)在使用的電流傳感器是lem的LTSR 25-NP,其中電流和輸出電壓關(guān)系是:v=2.5+0.025*I,現(xiàn)在的AD采樣輸入范圍是0-3V,中間有一個(gè)放大倍數(shù),但是即使這樣,電壓稍微波動(dòng)一些,計(jì)算出來(lái)的電流誤差就特別大,請(qǐng)大家支招,謝謝!
    發(fā)表于 09-03 08:18

    請(qǐng)老師指點(diǎn)我,附圖中C點(diǎn)電壓,A點(diǎn)電壓是如何計(jì)算出來(lái)

    ,我不知道是如何計(jì)算出來(lái)的?是用基爾霍夫第二定律計(jì)算出來(lái)的嗎?計(jì)算的公式是怎么樣呢?特來(lái)向各位老師請(qǐng)教!想得到各位老師的指點(diǎn)!謝謝!
    發(fā)表于 10-10 23:09

    使用ADISIMPLL設(shè)計(jì)環(huán)路濾波器時(shí)計(jì)算出來(lái)的電容值太大如何解決?

    在使用ADISIMPLL時(shí)遇到一個(gè)問(wèn)題,由于選用OCXO, Kv很小1E-7左右,設(shè)計(jì)環(huán)路濾波器時(shí)計(jì)算出來(lái)的電容值太大,請(qǐng)問(wèn)如何解決?
    發(fā)表于 09-13 11:02

    請(qǐng)問(wèn)信噪比是怎么計(jì)算出來(lái)

    我看到《ADI模數(shù)轉(zhuǎn)換器應(yīng)用筆記》中第137頁(yè)中說(shuō) 這個(gè)信噪比是怎么計(jì)算出來(lái)的呢?
    發(fā)表于 09-13 10:54

    這個(gè)電阻2.2如何計(jì)算出來(lái)的,oa ob 的最大電流是多少?

    這個(gè)電阻2.2如何計(jì)算出來(lái)的,oa ob 的最大電流是多少》
    發(fā)表于 10-14 00:32

    最后一個(gè)字節(jié)的校驗(yàn)碼是怎么計(jì)算出來(lái)的?

    串口通信數(shù)據(jù)數(shù)據(jù)1:C0 10 20 F5數(shù)據(jù)2:C0 03 02 31數(shù)據(jù)3:C0 C0 01 EA這個(gè)F5 31 EA 是怎么計(jì)算出來(lái)的???
    發(fā)表于 03-07 10:29

    直流無(wú)刷電機(jī)的定子繞組繞多少匝是用什么公式計(jì)算出來(lái)的?

    請(qǐng)問(wèn)哪位大神知道直流無(wú)刷電機(jī)的定子繞組繞多少匝?是用什么公式計(jì)算出來(lái)的呢?分享一下!
    發(fā)表于 04-21 14:47

    PWM的占空比是怎么計(jì)算出來(lái)的?

    逆變器要使用PWM來(lái)控制IGBT生成交流。其他PWM的占空比是怎么計(jì)算出來(lái)的。
    發(fā)表于 08-04 06:53

    請(qǐng)問(wèn)Calibre電路版圖W L是怎么各自計(jì)算出來(lái)的?

    請(qǐng)問(wèn)Calibre電路版圖W L是怎么各自計(jì)算出來(lái)的?
    發(fā)表于 06-23 08:03

    求累加器B的結(jié)果是怎么計(jì)算出來(lái)的?

    各位大佬,請(qǐng)問(wèn)圖中兩個(gè)列子中累加器B的結(jié)果是怎么計(jì)算出來(lái)的?
    發(fā)表于 10-22 22:35

    op1177運(yùn)放輸入阻抗是怎么計(jì)算出來(lái)的啊?

    上面的電路中,反相輸入阻抗為100K,而同相輸入阻抗為200K,是怎么計(jì)算出來(lái)的啊?
    發(fā)表于 11-28 06:58

    電路是計(jì)算出來(lái)

    電路教程相關(guān)知識(shí)的資料,關(guān)于電路是計(jì)算出來(lái)
    發(fā)表于 10-10 14:17 ?0次下載

    Apollo的三個(gè)問(wèn)題和解答控制命令計(jì)算出來(lái)是發(fā)布給誰(shuí)呢?

    控制命令計(jì)算出來(lái)是發(fā)布給誰(shuí)呢?ROS嗎? 很好的問(wèn)題,Control_command經(jīng)過(guò)控制模塊輸出為車(chē)輛的控制信息之后,作為與車(chē)輛交互的指令,傳遞給CANBUS模塊,由該模塊解析為CAN協(xié)議報(bào)文
    的頭像 發(fā)表于 07-15 09:54 ?4238次閱讀

    dd馬達(dá)偏差量怎么計(jì)算出來(lái)

    反映了電機(jī)的實(shí)際位置與期望位置之間的差異。 計(jì)算DD馬達(dá)偏差量的基本步驟如下: 確定期望位置:期望位置是系統(tǒng)希望電機(jī)達(dá)到的目標(biāo)位置。這可以是用戶輸入的值,也可以是系統(tǒng)根據(jù)某種算法計(jì)算出來(lái)的值。 獲取實(shí)際位置:實(shí)際位置是電機(jī)當(dāng)前的實(shí)際位置。這可
    的頭像 發(fā)表于 07-11 15:05 ?341次閱讀