ENARM
Power Integrity · Power Intent & Power Data

UPF & IPF

Երկու ֆայլային ձևաչափ, երկու շատ տարբեր աշխատանք, մեկ տառ իրարից հեռու։ UPF-ը (Unified Power Format, IEEE 1801) արդյունաբերական-ստանդարտ լեզուն է power intent-ը նկարագրելու համար — ինչ սնման տիրույթներ կան, ինչ լարումներով են աշխատում, և ինչպես են դրանք gate, isolate և retain արվում — գրվում է վաղ և տարվում մոդելավորման, սինթեզի և place-and-route-ի միջով։ IPF-ը (Instance Power File) RedHawk-SC/PrimePower-ին հատուկ տվյալների ձևաչափ է, որը իրական per-instance power թվերը — power analysis գործիքի չափված կամ գնահատված output-ը — տանում է static IR-drop-ի և electromigration-ի signoff։ Այս էջը երկուսն էլ ծածկում է խորությամբ՝ իրական syntax-ով և իրական օրինակ տվյալներով յուրաքանչյուրի համար։

Ներածություն

UPF-ն ընդդեմ IPF-ի հպանցիկ

Երկու ձևաչափերն էլ Tcl-ի վրա հիմնված են, երկուսն էլ power-ի մասին են, և երկուսն էլ սնուցում են նույն ավելի լայն power-integrity signoff գործընթացը, որ այս փաստաթղթային հավաքածուն արդեն ծածկում է — բայց դրանք գործում են design հոսքի հակառակ ծայրերում և պատասխանում են բոլորովին տարբեր հարցերի։

Որտեղ են նստած UPF-ն և IPF-ը հոսքում Architecture domain-ներ & լարումներ RTL Design power code չկա → բացել էջը UPF-ը գրվում է այստեղ սնման տիրույթներ, սնուցումներ, isolation, retention, level shifter-ներ, power state-եր IEEE 1801 ստանդարտ Մոդելավորում + Սինթեզ UPF-ը drive է անում բջիջների insertion-ը → բացել էջը Physical Design domain-ներ, switch-եր տեղադրված → բացել էջը Power Analysis (PrimePower և այլն) հաշվում է իրական instance power IPF-ը գեներացվում է այստեղ per-instance power թվեր, .ipf ֆայլ RedHawk-SC / PrimePower IPF-ը ուղղակիորեն սնուցում է static IR-drop & EM signoff-ը UPF-ը գրվում է մեկ անգամ, վաղ, architect-ների/power lead-երի կողմից — նկարագրում է intent և սպառվում է ամեն downstream գործիքի կողմից։ IPF-ը գեներացվում է ուշ, ամեն run-ի համար, power estimation գործիքով — դա տվյալ է, վերաստեղծվում ամեն analysis iteration-ում։

Սեղմեք փուլի վրա՝ դրա էջը կամ բաժինը բացելու համար։ UPF-ը պատասխանում է «ինչ power architecture պիտի ունենա այս chip-ը» հարցին և գրվում է ձեռքով հոսքի վաղ փուլում։ IPF-ը պատասխանում է «որքան power է այս կոնկրետ instance-ը իրականում քաշում հենց հիմա» հարցին և machine-generated է հոսքի ուշ փուլում՝ ուղղակիորեն սնուցելով Static Analysis signoff փուլը։

UPFIPF
Ամբողջական անվանումUnified Power FormatInstance Power File
Ստանդա՞րտ էԱյո — IEEE 1801, vendor-neutralՈչ — գործիք-specific (Synopsys PrimePower / Ansys RedHawk-SC էկոհամակարգ)
Ինչ է նկարագրումPower intent. domain-ներ, լարումներ, gating, isolation, retentionPower տվյալ. չափված/գնահատված watt կամ amper ամեն instance-ի, ամեն pin-ի համար
Ով է գրումPower architect / RTL թիմ, ձեռքով, վաղԳեներացվում է ավտոմատ power analysis գործիքով, ուշ
Սպառվում էSimulator-ներ, սինթեզ, place-and-route, formal գործիքներRedHawk-SC-ի PowerView, static IR-drop/EM analysis-ի համար
UPF հիմունքներ

Սնման տիրույթներ & Սնուցման հավաքածուներ

Ամեն ինչ UPF-ում կառուցվում է երկու primitive-ի վրա. սնման տիրույթ-ը խմբավորում է logic-ը, որ կիսում է ընդհանուր power control, իսկ սնուցման հավաքածու-ը խմբավորում է իրական power/ground հանգույցները, որոնք սնուցում են domain-ը։ UPF-ը շերտավորվում է RTL-ի վրայից՝ առանց դրան դիպչելու — նույն Verilog-ը ստանում է տարբեր power վարքագիծ՝ կախված միայն նրանից, թե որ UPF ֆայլն է դրա կողքին բեռնվում։

⤢ Սեղմեք խոշորացնելու համար Երկու սնման տիրույթ. always-on վերևում, gated GPU PD_TOP — always-on (create_power_domain PD_TOP -include_scope) SS_TOP: power=VDD_TOP (1.2V), ground=VSS PD_GPU (elements: gpu_inst) SS_GPU: power=VDD_GPU, ground=VSS add_power_state VDD_GPU -state {ACTIVE 0.9} -state {OFF off} gpu_inst logic Chip-ի մնացած մասը (PD_TOP scope-ում) CPU / always-on logic I/O / control logic associate_supply_set-ը սնուցման հավաքածուն կապում է domain-ի հետ. switch չունեցող սնման տիրույթը implicitly always-on է։

PD_GPU-ն chip-ի ենթա-տիրույթ է, որ կարող է gate արվել PD_TOP-ից անկախ — իր սեփական սնուցման հանգույցով, իր սեփական սնուցման հավաքածուով, իր սեփական power state-երով։

Կառուցելով քայլ առ քայլ, հրաման առ հրաման

# Create the top-level power domain (always-on context)
create_power_domain PD_TOP -include_scope

# Create a power domain scoped to just the GPU instance
create_power_domain PD_GPU -elements {gpu_inst}

# Define supply nets (the actual power/ground rails)
create_supply_net VDD_TOP -domain PD_TOP      # 1.2V supply for top
create_supply_net VDD_GPU -domain PD_GPU      # switchable supply for GPU
create_supply_net VSS     -domain PD_TOP      # common ground

# Group related supplies into a named supply set
create_supply_set SS_TOP -function {power VDD_TOP} -function {ground VSS}
create_supply_set SS_GPU -function {power VDD_GPU} -function {ground VSS}

# Attach each supply set to its domain
associate_supply_set SS_TOP -handle PD_TOP
associate_supply_set SS_GPU -handle PD_GPU
ՀրամանԻնչ է անում
create_power_domain-include_scope-ը ծածկում է ընթացիկ ամբողջ hierarchy scope-ը (տիպիկ վերին domain-ի համար). -elements {...}-ը թվարկում է ներառելիք կոնկրետ instance-ները (տիպիկ ենթա-block domain-ի համար)
create_supply_netՀայտարարում է մեկ ֆիզիկական power կամ ground հանգույց և թե որ domain-ին է պատկանում
create_supply_setԽմբավորում է power հանգույցը և ground հանգույցը մեկ անվանված handle-ի տակ՝ -function {power ...} / -function {ground ...}-ի միջոցով, որպեսզի հետագա հրամանները (isolation, retention, level shifter-ներ) կարողանան հղում անել «այս domain-ի սնուցմանը» մեկ արգումենտում՝ երկուսի փոխարեն
associate_supply_setԿապում է սնուցման հավաքածուն domain-ի հիմնական power handle-ին — առանց սրա domain-ը սահմանված power source չունի
UPF հիմունքներ

Power State-եր & Power Switch-եր

Power state-ը անվանված, օրինական լարման արժեք է, որ սնուցման հանգույցը կարող է ընդունել (add_power_state). power switch-ը UPF օբյեկտն է, որ մոդելավորում է իրական header/footer switch cell-ը, որ վերահսկում է՝ արդյոք domain-ի սնուցումը միացած է upstream always-on rail-ին (create_power_switch)։ Միասին դրանք այն են, ինչ domain-ը դարձնում է «power-gateable», այլ ոչ միայն multi-voltage։

# Power states: legal voltage values for each supply
add_power_state VDD_TOP -state {ON 1.2}
add_power_state VDD_GPU -state {ACTIVE 0.9} -state {OFF off}

# Power switch: models the physical header/footer switch cell
create_power_switch PSW_GPU -domain PD_GPU \
  -input_supply_port  {vin  VDD_TOP} \
  -output_supply_port {vout VDD_GPU} \
  -control_port       {ctrl gpu_power_enable} \
  -on_state            {on vin {ctrl}}

Switch-ը կարդալով. vin-ը always-on input rail-ն է, vout-ը switched output-ն է, որ իրականում սնուցում է PD_GPU-ն, և ctrl-ը enable signal-ն է։ -on_state {on vin {ctrl}} clause-ը ասում է «output-ը 'on' state-ում է, drive արված vin-ից, երբ control condition-ը ճշմարիտ է» — երբ gpu_power_enable-ը deassert է անում, vout-ը (և հետևաբար VDD_GPU-ն) չունի վավեր on-state, և domain-ը off է։

Որտեղ է սա միանում. ֆիզիկական header/footer switch cell-երը, որ այս UPF-ը նկարագրում է, հենց այն power-gating hardware-ն են, որ քննարկվում է Floorplanning-ի ներքո և պլանավորվում power delivery network-ի մեջ հիմնական Power Integrity էջում — UPF-ը specification-ն է, physical design-ը՝ իրականացումը։
Power Management ռազմավարություն

Isolation ռազմավարություններ

Երբ սնման տիրույթը gate արվում է off, դրա output-ները float են անում դեպի undefined արժեք։ Եթե այդ undefined signal-ը հասնում է always-on logic-ին, այն կարող է աղավաղել հաշվարկը, առաջացնել shoot-through հոսանք (թե՛ PMOS-ը, թե՛ NMOS-ը միջանկյալ լարումում conducting), կամ receiving flip-flop-ը դարձնել metastable։ Isolation cell-երը նստում են սահմանին և clamp են անում domain-ի output-ները հայտնի-ապահով արժեքի (0 կամ 1), երբ domain-ը off է — և կրիտիկական, isolation cell-երն իրենք սնուցվում են always-on սնուցումով, ոչ թե gate արվող domain-ով, ուստի դրանք շարունակում են գործել այն բանից հետո, երբ իրենց isolate արվող domain-ը կորցրել է power-ը։

⤢ Սեղմեք խոշորացնելու համար Առանց isolation-ի Gated domain VDD = OFF X Always-on logic աղավաղված / shoot-through Float անող output-ը undefined արժեք է տարածում կենդանի logic-ի մեջ Isolation-ով Gated domain VDD = OFF ISO clamp→0 սնուցվում է VDD_TOP-ով Isolation cell-ը (always-on) clamp է անում output-ը ապահով, հայտնի արժեքի Power-down հաջորդականություն 1. Assert isolation (clamp-ը միանում է) → 2. Սպասել isolation-ի settle-ին → 3. De-assert power enable → 4. Domain off, output-ը ապահով clamp արված Power-up-ը հակառակում է կարգը. power on → սպասել VDD stable-ին → բաց թողնել reset-ը → ԱՊԱ de-assert isolation։ Երբեք isolation-ը մի՛ անջատեք, նախքան power/reset-ը stable լինելը։

Isolation-ը պիտի assert արվի power-down-ից առաջ և բաց թողնվի միայն power-ի ու reset-ի stable լինելուց հետո՝ վերադարձի ճանապարհին — այս հաջորդականությունը հակառակ անելը ամենատարածված իրական UPF bug-երից մեկն է։

set_isolation ISO_GPU -domain PD_GPU \
  -isolation_supply_set SS_TOP \
  -clamp_value 0 \
  -isolation_signal gpu_iso_enable \
  -isolation_sense high \
  -location parent
ՊարամետրԻմաստ
-isolation_supply_setՊիտի always-on սնուցման հավաքածու լինի (օր. SS_TOP) — այստեղ gate արվող domain-ի սեփական սնուցումը օգտագործելը ամենատարածված սկսնակի սխալն է, քանի որ isolation cell-ը power կկորցներ հենց այն պահին, երբ պետք է
-clamp_value0 կամ 1 — ապահով արժեքը, որ drive արվի isolate արվելիս։ Active-high enable-երը սովորաբար clamp են 0-ի (անջատված). active-low signal-երը, ինչպիսին է reset_n-ը, սովորաբար clamp են 1-ի (մնում է reset-ից դուրս)
-isolation_signal / -isolation_senseControl signal-ը և դրա active polarity-ն (high կամ low), որ trigger է անում clamping-ը
-locationparent-ը (ամենատարածված) բջիջը տեղադրում է always-on domain-ում՝ սահմանից անմիջապես դուրս. self-ը տեղադրում է gate արվող domain-ի ներսում. fanout-ը տեղադրում է մեկ receiving instance-ի համար
Տարածված սխալ. -isolation_supply_set SS_GPU՝ SS_TOP-ի փոխարեն — isolation cell-ը կսնուցվեր հենց այն domain-ով, որ պիտի isolate աներ, ուստի ոչինչ չի clamp անում հենց այն պահին, երբ իրականում պետք է։ Միշտ isolation supply-ն ուղղեք դեպի parent/always-on domain-ը։
Power Management ռազմավարություն

Retention ռազմավարություններ

Domain-ի power gating-ը սովորաբար կորցնում է ամեն flip-flop-ի state-ը՝ ստիպելով դանդաղ software re-initialization արթնանալիս (միլիվայրկյաններ)։ Retention-ը ավելացնում է երկրորդ, always-on, low-voltage supply (սովորաբար 0.6–0.8V) հատուկ կառուցված retention flip-flop-երին, որպեսզի state-ը պահպանվի power-down ցիկլի ընթացքում գրեթե-զրո արտահոսքով և վերականգնվի միկրովայրկյաններում՝ միլիվայրկյանների փոխարեն — հեռախոսի ակնթարթորեն արթնանալու (հպումով) և տեսանելիորեն հետ մնալու տարբերությունը։

⤢ Սեղմեք խոշորացնելու համար Retention flip-flop. dual supply VDD_CPU (1.0V) switchable, նորմալ աշխատանք Retention FF 1.3–1.5× area՝ ստանդարտ flip-flop-ի VDD_RET (0.6V, always-on) Power-down / power-up հաջորդականություն 1. Assert save/retention signal → FF-ը անցնում է VDD_CPU-ից VDD_RET 2. Power switch-ը բացվում է → VDD_CPU off, combinational logic-ի արտահոսք ≈ զրո 3. Retention cell-ը պահում է state-ը 0.6V-ում (հենց data-loss threshold-ից վերև) 4. Wake: VDD_CPU վերականգնված → սպասել stable → de-assert retention → FF-ը վերսկսում է Ընդհանուր wake ժամանակ. միկրովայրկյաններ (ընդդեմ միլիվայրկյանների առանց retention-ի) Cost: 30–50% area overhead ամեն retained FF-ի համար — օգտագործեք -elements միայն կրիտիկական state-ը retain անելու համար

Retention-ը պահպանում է միայն flip-flop-ի state-ը, ոչ combinational logic-ը — domain-ը դեռ կարող է լիովին power off արվել արտահոսքի առավելագույն խնայողության համար ամենուր, բացի միտումնավոր retain արված register-ներից։

# Retention supply: a second, always-on, low-voltage net
create_supply_net VDD_RET -domain PD_CPU
create_supply_set  SS_CPU_RET -function {power VDD_RET} -function {ground VSS}
add_power_state    VDD_RET -state {RETENTION 0.6}

# Basic retention: every flip-flop in the domain
set_retention RET_CPU -domain PD_CPU \
  -retention_supply_set SS_CPU_RET \
  -retention_condition {cpu_retention_enable}

# Selective retention: only the state actually worth saving
set_retention RET_CRITICAL -domain PD_CPU \
  -retention_supply_set SS_CPU_RET \
  -retention_condition {retention_enable} \
  -elements {
    cpu_inst/control_unit/config_regs
    cpu_inst/control_unit/status_regs
    cpu_inst/mmu/tlb_state
  }

Selective retention-ը (-elements-ի միջոցով) գործնական default-ն է իրական design-ներում. ամեն flip-flop retain անելն արժենում է 30–50% լրացուցիչ area յուրաքանչյուրի վրա, ուստի թիմերը սովորաբար retain են անում միայն control/status register-ները և re-initialize են անում bulk datapath state-ը (ALU operand-ներ, ժամանակավոր buffer-ներ) արթնանալիս, քանի որ այդ state-ն ամեն դեպքում էժան է վերահաշվարկել։

Տարածված սխալ. -retention_supply_set-ը ուղղել domain-ի սեփական switchable supply-ին՝ հատուկ always-on retention net-ի փոխարեն — եթե retention cell-ի power-ը գալիս է հենց այն rail-ից, որ շուտով անջատվելու է, ապա ոչինչ չի մնա state-ը պահելու համար։
Power Management ռազմավարություն

Level Shifter-ներ

Երբ signal-ը մեկ լարման domain-ից անցնում է մյուսը, receiving domain-ի gate-երը կարող են ճիշտ չմեկնաբանել sender-ի լարման swing-ը։ 0.9V-ով drive արված signal-ը, որ հասնում է 1.2V domain-ի input-ին, կարող է չգրանցվել որպես մաքուր logic-1 (low-to-high crossing). 1.2V signal-ը, որ ուղղակիորեն drive է անում 0.6V gate-երի մեջ, կարող է overstress անել ավելի փոքր-լարման տրանզիստորների բարակ oxide-ը (high-to-low crossing)։ Level shifter cell-երը նստում են այս domain սահմաններին և թարգմանում լարման swing-ը, որպեսզի receiving domain-ը տեսնի մաքուր, full-rail signal։

⤢ Սեղմեք խոշորացնելու համար Level shifting լարման domain crossing-ի վրայով PD_LOW (0.9V) signal-ը swing է անում 0 ↔ 0.9V Level Shifter L→H (up-shift) PD_HIGH (1.2V) մաքուր signal-ը swing է անում 0 ↔ 1.2V High-to-low crossing-երին նույնպես պետք են level shifter-ներ — առանց դրա չափազանց մեծ swing-ը կարող է overstress անել receiving domain-ի ավելի բարակ gate oxide-ը

Level shifting-ը ուղղահայաց է isolation-ին. isolation-ը գործ ունի domain-ի off լինելու հետ, level shifting-ը գործ ունի երկու domain-ի հետ, որ երկուսն էլ on են, բայց տարբեր voltage-ներում։

set_level_shifter LS_LOW_TO_HIGH -domain PD_LOW \
  -applies_to outputs \
  -rule low_to_high \
  -location parent

Isolation-ի նման, -location parent-ը տիպիկ ընտրությունն է՝ level shifter cell-ը տեղադրելով source domain-ից անմիջապես դուրս, որպեսզի այն drive արվի երաշխավորված հասանելի supply-ով։ Շատ իրական design-ների պետք են level shifter-ներ երկու ուղղություններով միաժամանակ, եթե domain-ը թե՛ signal-ներ է ուղարկում ավելի-բարձր-voltage հարևանին, թե՛ ստանում է signal-ներ դրանից — -rule-ը կարող է դրվել low_to_high, high_to_low, կամ both՝ կախված crossing-ից։

Մեթոդաբանություն

UPF-ը design հոսքում

UPF-ը գրվում է վաղ և վերաօգտագործվում, անփոփոխ, ամեն downstream գործիքի կողմից — այդ հետևողականությունն է դրա ստանդարտացման ամբողջ իմաստը։

Հոսքի փուլԻնչպես է UPF-ը օգտագործվում
ArchitectureՍնման տիրույթները, լարման level-երը և power state-երը որոշվում են նախքան RTL-ը նույնիսկ ավարտված լինելը
RTL designՖունկցիոնալ Verilog/SystemVerilog-ը գրվում է առանց power-specific կոդի — UPF-ը մնում է առանձին ֆայլ
ՄոդելավորումPower-aware մոդելավորումը verify է անում power state-ի անցումները, X-propagation վարքագիծը և retention save/restore-ը UPF model-ի դեմ
ՍինթեզԳործիքը insert է անում իրական isolation, level-shifter և retention գրադարանի բջիջներ, որտեղ UPF ռազմավարությունները ասում են, որ պետք են — տես Logic Synthesis
Physical designՍնման տիրույթները պլանավորվում են հատակագծի մեջ, power switch-երը տեղադրվում են, և power grid-ը route արվում է համապատասխանաբար — տես Floorplanning
Power analysisPer-domain, per-state power-ը գնահատվում է — այստեղ է, որ IPF տվյալները սկսում են հայտնվել՝ սնուցելով IR-drop/EM signoff-ը
SignoffPower management-ի ճշտությունը (isolation/retention/level-shifter-ի առկայությունն ու հաջորդականությունը) formal կերպով ստուգվում է հենց այն նույն UPF-ի դեմ, որ օգտագործվել է առաջին օրվանից
Ինչու է կարևոր այս անջատումը. նույնական UPF ֆայլն օգտագործելը մոդելավորման, սինթեզի և physical design-ի ընդմիջով վերացնում է synthesis-simulation-ի անհամապատասխանությունները, որ տանջում էին ստանդարտացումից առաջվա հոսքերը, երբ Cadence-ի Common Power Format-ը (CPF), Synopsys-ի սեփականատիրական Power Compiler հրամանները և Mentor-ի Tcl specification-ները յուրաքանչյուրը նույն intent-ը մի փոքր տարբեր էին նկարագրում։
RedHawk-SC / PrimePower

IPF. Instance Power File

Այնտեղ, որտեղ UPF-ը նկարագրում է intent, IPF-ը տանում է տվյալ. հարթ տեքստային ֆայլ, որ թվարկում է, թե որքան power (կամ հոսանք) է design-ի ամեն instance-ն իրականում քաշում, գեներացված power-estimation գործիքով — սովորաբար Synopsys PrimePower-ով — և սպառված RedHawk-SC-ի PowerView օբյեկտի կողմից static IR-drop-ի և electromigration-ի signoff-ի համար (տես Static Analysis)։ RedHawk-SC-ն աջակցում է երկու IPF layout, մանրամասն 9-column ձևին և ավելի պարզ 3-column ձևին։

⤢ Սեղմեք խոշորացնելու համար Երկու աջակցվող IPF layout 9-column ձևաչափ # instance_name power_pin voltage # toggle_rate frequency total_power # switching_power internal_power leakage_power inst_129902 VDD 1.2000 0.2000 781249984.0 0.005 0.0 0.005 0.0 inst_129995 VDD 1.2000 0.5835 390624992.0 3.37e-5 1.08e-5 2.29e-5 6.46e-9 inst_130106 VDD 1.2000 0.0584 390624992.0 1.66e-6 1.44e-6 2.20e-7 1.65e-9 Ամբողջական breakdown ամեն pin-ի. առանձնացնում է switching, internal և leakage power բաղադրիչները 3-column ձևաչափ # instance_name pin_power_W Vdd_pin_name # instance_name pin_current_A Vss_pin_name U1/U1 8e-8 VDD U1/U2 1e-8 VDD Ընդամենը total power (կամ հոսանք) ամեն pin-ի — ավելի պարզ, օգտակար, երբ միայն aggregate power-ն է հայտնի, օր. ներմուծված 3rd-party power գնահատականից

Իրական օրինակ տողեր, վերարտադրված Synopsys/Ansys RedHawk-SC application-note փաստաթղթից։ IPF ֆայլում գրառում չունեցող instance-ներին լուռ վերագրվում է զրո power — ծածկույթի բացերը իրական, տարածված signoff ռիսկ են։

Column (9-column ձևաչափ)Իմաստ
instance_nameHierarchical path դեպի բջջի instance
power_pin_nameԹե որ supply pin-ին է վերաբերում այս power թիվը (օր. VDD)
voltageOperating լարում այդ pin-ում (V)
toggle_rateSwitching activity factor, որ օգտագործվում է dynamic power-ը ստանալու համար
frequencyՏակտային ազդանշանի հաճախություն, որին հղում է toggle rate-ը (Hz)
total_powerswitching + internal + leakage power-ի գումարը (W)
switching_powerPower հանգույցի load capacitance-ը charge/discharge անելուց
internal_powerPower, որ ցրվում է բջիջի ներսում switching-ի ընթացքում (short-circuit հոսանք, internal node charging)
leakage_powerStatic power, որ քաշվում է նույնիսկ երբ բջիջը switch չի անում

IPF-ը static power հոսքում

RedHawk-SC-ի PowerView-ն, ըստ էության, ամբողջական scenario view-ի թեթև տարբերակ է, որ միայն instance power է հետևում — այն կարող է ուղղակիորեն import անել hand-off IPF ֆայլ, ինքը հաշվել power-ը SwitchingActivityView-ի toggle rate-երից, կամ convert անել հոսանքները առկա analysis-ից։ Երբ այն import է անում IPF, ծածկույթը կարևոր է. appnote-ը հստակ ասում է, որ ֆայլից բացակայող instance-ները ստանում են զրո վերագրված power, ուստի թերի IPF-ը լուռ under-count է անում իրական էներգասպառումը, եթե չծածկված instance-ների համար վերևից չշերտավորվի fallback switching-activity-driven հոսք։

# Load a design's IPF file into a PowerView for static analysis
pwr = db.create_power_view(dv=dv, power_file_names='power.ipf.gz', tag='pwr')

# Use that PowerView in a static scenario for IR-drop / EM signoff
scn = db.create_scenario_view(power_view=pwr, scenario_type='Static',
                                options=options, voltage_levels=voltage_levels, tag='scn')

# ...later, export an IPF back out of a PowerView (e.g. after adjustment)
# PowerView.write_instance_power_file(file_name, comment=None)

Մի քանի IPF ֆայլ կարող են համակցվել մեկ power_files ցուցակում, յուրաքանչյուրը scoped լինելով կոնկրետ instance_name-ի, cell_name-ի, կամ scaling_factors dict-ով՝ կոնկրետ սնուցման հանգույցի ներդրումը վերասանդղակելու համար — և ցուցակում ուղիղ մեկ ֆայլ կարող է նշվել 'override': True՝ առաջնություն ստանալու համար, եթե նույն instance-ը հայտնվի մեկից ավելի source ֆայլում։

Որտեղ է սա միանում. IPF-based static power-ը այն չորս եղանակներից մեկն է, որով RedHawk-SC-ն կարող է source անել instance power-ը Static Analysis փուլի համար — մյուսներն են՝ toggle-rate-driven SwitchingActivityView-ը, SAIF-based-ը և VCD/FSDB-based հոսքերը։ IPF-ը այն ուղին է, որ օգտագործվում է, երբ առանձին power-signoff գործիք (PrimePower) արդեն upstream հաշվել է հեղինակավոր per-instance թվերը։
Ամփոփում

UPF-ն ընդդեմ IPF-ի, կողք-կողքի

ՀարցUPF-ը պատասխանում էIPF-ը պատասխանում է
Ինչ լարումով է աշխատում այս domain-ըԱյո — add_power_stateՈչ
Կարո՞ղ է այս domain-ը off արվելԱյո — create_power_switchՈչ
Ինչ է լինում այս domain-ի output-ների հետ, երբ այն off էԱյո — set_isolationՈչ
Այս domain-ը հիշո՞ւմ է իր state-ը power-down-ի ընթացքումԱյո — set_retentionՈչ
Որքան watt է այս կոնկրետ instance-ը քաշում հենց հիմաՈչԱյո — per-instance power/հոսանք արժեքներ
Design-ի որ մասում է IR drop-ը կամ EM ռիսկը ամենաբարձրըՈչ (անուղղակի, domain structure-ի միջոցով)Այո — ուղղակիորեն սնուցում է static IR-drop/EM signoff-ը
Հանրային ստանդա՞րտ էԱյո — IEEE 1801Ոչ — Synopsys/Ansys գործիքի էկոհամակարգի ձևաչափ

Կարճ ասած. առանց UPF-ի chip-ի power architecture-ն ընդհանրապես չունի formal, գործիք-անկախ նկարագրություն։ Առանց IPF-ի (կամ RedHawk-SC-ի power-sourcing այլ մեթոդներից մեկի) EMIR Analysis էջում գտնվող static IR-drop-ի և EM analysis-ը ընդհանրապես չունի per-instance power թվեր, որոնցից աշխատել։ Դրանք մրցակից ձևաչափեր չեն — դրանք հաջորդական կախվածություններ են նույն signoff շղթայում։

Աղբյուրներ