ENARM
VLSI · Փուլ 10 · Ժամանակային Signoff

Static Timing Analysis

Static timing analysis-ը (STA) ստուգում է design-ի յուրաքանչյուր ժամանակային path-ը իր տակտային ազդանշանի պահանջների նկատմամբ՝ առանց որևէ input vector սիմուլյացնելու։ Հանգույցների ցանկի միջով stimulus drive անելու և waveform-երի կայունանալուն հետևելու փոխարեն, STA-ն անցնում է design-ի ժամանակային graph-ի յուրաքանչյուր հնարավոր startpoint-ից-endpoint path-ով և յուրաքանչյուրի մոտ տալիս ավելի պարզ հարց. արդյո՞ք տվյալը երաշխավորված է, որ ժամանակին կհասնի, և արդյո՞ք երաշխավորված է, որ չափազանց վաղ չի հասնի։ Քանի որ այն սպառիչ է և vector-free, STA-ն scale է անում միլիարդավոր տրանզիստորներով design-երի վրա այնպես, ինչպես dynamic մոդելավորումը երբեք չէր կարող — և այն վերջին gate-ն է, որով անցնում է ամեն չիպ նախքան tapeout-ը։

Հիմք

Ինչ է ստուգում STA-ն

STA-ն design-ը բաժանում է ժամանակային arc-երի graph-ի. յուրաքանչյուր register տակտային ազդանշանի pin և յուրաքանչյուր primary input հնարավոր startpoint է. յուրաքանչյուր register data pin և յուրաքանչյուր primary output հնարավոր endpoint է։ Ցանկացած startpoint-ի և endpoint-ի միջև կա combinational path, և STA-ն յուրաքանչյուրի համար հաշվում է երկու թիվ. arrival time-ը (որքան ժամանակ է իրականում պահանջվում ազդանշանին այնտեղ հասնելու համար՝ worst-case) և required time-ը (deadline-ը, որ պարտադրում են տակտային ազդանշանը և հաջորդ register-ի setup/hold պահանջները)։ Տարբերությունը ժամանակային պահուստն է — դրական ժամանակային պահուստը նշանակում է, որ path-ը բավարարում է ժամանակայինը մարժայով, բացասական ժամանակային պահուստը՝ խախտում, որը պիտի ուղղվի նախքան signoff-ը։

Ինչու static, ոչ թե մոդելավորում

Dynamic մոդելավորումը քեզ ասում է միայն այն կոնկրետ input vector-ների մասին, որ պատահաբար կիրառել ես։ STA-ն վերլուծում է design-ի ամեն structural path միաժամանակ՝ երաշխավորելով, որ ոչ մի ժամանակային path բաց չի թողնվում — այն գնով, որ pessimistic է այն path-երի նկատմամբ, որ իրականում երբեք չեն կարող exercise արվել իրական ֆունկցիոնալ վարքագծով (տես Ժամանակային Exceptions)։

Path-based ընդդեմ graph-based

Signoff STA-ի մեծ մասը graph-based է (GBA)՝ արագության համար — worst-case arrival time-երը propagate անելով ժամանակային graph-ի միջով node առ node։ Path-based analysis-ը (PBA) ճշգրիտ վերահաշվում է կոնկրետ report արված path-ի իրական հապաղումը՝ վերականգնելով pessimism-ը, որ GBA-ն ներմուծում է, երբ տարբեր path-երը կիսում են logic-ի մասեր. կիրառվում է ընտրովի ամենավատ report արված խախտումների վրա։

Որտեղ է այն նստում հոսքում

STA-ն աշխատում է շարունակաբար սինթեզից սկսած — որպես օպտիմալացման ուղեցույց place-and-route-ի ներսում — և մեկ վերջին անգամ signoff-ի ժամանակ, DRC/LVS/IR-EM ստուգումների կողքին, որ ընդգրկված են Tapeout / GDSII էջում, օգտագործելով post-route parasitic-ներ՝ ամենաճշգրիտ հապաղման թվերի համար, որ հասանելի են նախքան design-ը ֆոտոդիմակի հանձնվելը։

Path-ի Դասակարգում

Ժամանակային Path-երի Տեսակներ

Յուրաքանչյուր path, որ STA-ն վերլուծում է, ընկնում է չորս կատեգորիաներից մեկի մեջ՝ ելնելով նրանից, թե ինչ կա ամեն ծայրում։

Ժամանակային path-երի չորս տեսակները reg2reg FF FF register → register ↓ setup/hold մեխանիկա in2reg PI FF input port → register → Physical Design reg2out FF PO register → output port → Physical Design in2out PI PO input port → output port → Physical Design reg2reg path-երը գերիշխում են տիպիկ design-ում (path-երի ճնշող մեծամասնությունը) և timed են զուտ on-chip տակտային ազդանշանի նկատմամբ։ in2reg / reg2out / in2out path-երին պետք են I/O ժամանակային budget-ներ չիպից դուրս — տես Physical Design → Interface Paths & Virtual Clocks (set_input_delay / set_output_delay ընդդեմ virtual տակտային ազդանշանի, քանի որ drive անող/ընդունող չիպն բյուրեղիկից դուրս է)

Կտտացրեք path-ի տեսակի վրա՝ ավելի մանրամասն անցնելու համար։ reg2reg, in2reg, reg2out և in2out-ը այն չորս structural path կատեգորիաներն են, որոնց մեջ STA-ն դասակարգում է ամեն path։ Յուրաքանչյուրն ունի իր required-time deadline-ի տարբեր աղբյուրները։

Cross-link. in2reg/reg2out/in2out ժամանակային budget-ները (virtual տակտային ազդանշաններ, set_input_delay/set_output_delay) ամբողջությամբ ընդգրկված են իրական SDC օրինակներով Physical Design → Interface Paths էջում։ Այս էջը կենտրոնանում է reg2reg setup/hold մեխանիկայի վրա, որը կիրառվում է ամեն path-ի տեսակի համար։
Հիմնական Մեխանիկա

Setup և Hold Վերլուծություն

Յուրաքանչյուր flip-flop ունի երկու ժամանակային պահանջ իր տակտային ազդանշանի edge-ի շուրջ. տվյալը պիտի կայուն լինի setup time-ի (Tsu) ընթացքում edge-ից առաջ և կայուն մնա hold time-ի (Thd) ընթացքում դրանից հետո։ STA-ն ստուգում է երկուսն էլ, բայց ընդդեմ path-ի հակադիր արագությունների — setup-ը ստուգում է, որ ամենադանդաղ path-ը դեռ կարող է ժամանակին հասնել. hold-ը ստուգում է, որ ամենաարագ path-ը չի հասնում չափազանց վաղ և չի վնասում այն արժեքը, որը setup ստուգումը պաշտպանում էր։

⤢ Սեղմեք խոշորացնելու համար Data-valid պատուհանը capture տակտային ազդանշանի edge-ի շուրջ capture տակտային ազդանշանի edge Tₛ₡ setup window Tₕₑ hold window տվյալը պիտի հասնի, նախքան setup window-ը բացվի տվյալը պիտի կայուն մնա, մինչև hold window-ը փակվի Setup-ը ուղղվում է launch-side path-ը դանդաղեցնելով (կամ տակտային ազդանշանի period-ը մեծացնելով). hold-ը ուղղվում է launch-side path-ը նույնպես դանդաղեցնելով — երկու ստուգումները հակառակ ուղղություններ են քաշում նույն path-ի վրա։

Setup window-ը նստում է հենց տակտային ազդանշանի edge-ից առաջ, hold window-ը՝ հենց դրանից հետո — միասին դրանք սահմանում են edge-ի շուրջ ժամանակի այն նեղ հատվածը, որտեղ data input-ը չպիտի փոխվի։

Setup ստուգումը

Setup-ը հարցնում է. արդյո՞ք capture flop-ի data pin-ի ամենադանդաղ հնարավոր arrival-ը դեռ վայրէջք է կատարում նախքան setup window-ի բացվելը։ Launch edge-ը սկսում է launch անող flop-ի clock-to-Q հապաղումը, ապա combinational logic-ի worst-case (max) հապաղումը. capture edge-ը՝ մեկ տակտային ազդանշանի period անց, հանած setup time-ը և տակտային ազդանշանի uncertainty budget-ը, սահմանում է deadline-ը։

Setup ժամանակային պահուստ Ժամանակային պահուստsetup = (Tclk + Skewuseful) − (Tcq + Tcomb,max + Tsu + Uncertainty)

Դրական արդյունքը նշանակում է, որ path-ը բավարարում է setup-ը մարժայով. բացասականը՝ խախտում։ Uncertainty-ն ընդգրկում է տակտային ազդանշանի jitter-ը և (pre-CTS) գնահատված skew մարժա — տես Physical Design → SDC Clock Uncertainty՝ թե ինչպես է այդ թիվը դուրս բերվում և ինչպես է փոքրանում, երբ իրական տակտային ազդանշանի ծառ գոյություն ունի։

Hold ստուգումը

Hold-ը հակառակ հարցն է տալիս հակառակ edge-ի մոտ. արդյո՞ք ամենաարագ հնարավոր arrival-ը դրանից հետո բավական երկար հեռու է մնում նույն տակտային ազդանշանի edge-ից։ Այստեղ launch անող path-ի minimum հապաղումը համեմատվում է hold-time deadline-ի հետ հենց հաջորդ տակտային ազդանշանի edge-ի մոտ, ոչ թե մեկ period անց — ահա թե ինչու hold-ի խախտումները, ի տարբերություն setup-ի խախտումների, չեն կարող ուղղվել պարզապես տակտային ազդանշանն ավելի դանդաղ աշխատեցնելով։

Hold ժամանակային պահուստ Ժամանակային պահուստhold = (Tcq + Tcomb,min) − (Thd + Skewuseful,hold)

Hold-ի խախտումները սովորաբար ուղղվում են խնդրահարույց path-ի մեջ հապաղման buffer-ներ ներդնելով (այն բավական դանդաղեցնելով), քանի որ ոչ տակտային ազդանշանի period-ը, ոչ լարման/temperature-ի փոփոխությունները չեն օգնում — hold-ի խախտումը գոյություն ունի ամեն operating point-ում։

Ինչու են hold-ի խախտումներն ավելի սարսափելի սիլիկոնում. setup-ի խախտումը պարզապես նշանակում է, որ չիպը որոշ operating point-ում աշխատում է նախատեսվածից դանդաղ — հաճախ վերականգնելի ավելի ցածր հաճախության binning-ով։ Hold-ի խախտումը ֆունկցիոնալ ձախողում է ամեն հաճախության վրա, ներառյալ DC, քանի որ դա path-ին ներհատուկ race condition է, ոչ թե արագության սահման։

Ինչ են setup-ը և hold-ը իրականում պաշտպանում

Վերևի path-level բանաձևերը Tsu-ն և Thd-ն դիտարկում են որպես գրադարանից քաշված ֆիքսված թվեր, բայց դրանք բխում են ինչ-որ ֆիզիկականից. յուրաքանչյուր flip-flop (գրեթե միշտ) կառուցված է երկու back-to-back latch-երից — master latch, որ թափանցիկ է, երբ տակտային ազդանշանը ցածր է, և slave latch, որ թափանցիկ է, երբ տակտային ազդանշանը բարձր է։ Տվյալն իրականում «captured» է լինում միայն մեկ կոնկրետ ակնթարթում. այն պահին, երբ master latch-ը փակվում է և դադարում է թափանցիկ լինելուց, ինչը տեղի է ունենում որոշ քանակի gate-հապաղում հետո այն բանի, երբ տակտային ազդանշանը հատում է flop-ի արտաքին տակտային ազդանշանի pin-ը։ Setup-ը և hold-ը իրականում ամենևին արտաքին pin-ի edge-ի մասին չեն — դրանք երաշխավորելու մասին են, որ տվյալը կայուն է այդ ներքին փակման ակնթարթին, հղված դեպի արտաքին pin-երը, որ design engineer-ներն իրականում տեսնում են SDC-ում և ժամանակային report-երում։

⤢ Սեղմեք խոշորացնելու համար Master-slave flip-flop-ի ներսում D pin Master latch թափանցիկ, երբ CP-ն ցածր է ներքին node X իրական capture-ի ակնթարթը տեղի է ունենում այստեղ Slave latch թափանցիկ, երբ CP-ն բարձր է Q pin CP pin արտաքին տակտային ազդանշանի edge տակտային ազդանշանի buffer / inverter chain ներքուստ գեներացնում է true և complement CP Արտաքին CP pin-ի edge-ը և իրական ներքին capture-ի ակնթարթը երկու տարբեր պահեր են ժամանակի մեջ, առանձնացված նրանով, ինչ որ պատահի, որ լինի տակտային ազդանշանի buffer chain-ի հապաղումը — setup/hold-ը սահմանված են այս ամենը designer-ից թաքցնելու համար։

Setup և hold time-ը նշված են արտաքին CP pin-ի նկատմամբ զուտ հարմարության համար — իրական ֆիզիկան տեղի է ունենում ներքին node X-ի մոտ, երբ master latch-ի transmission gate-ը փակվում է։

Ինչպես են setup-ը և hold-ը իրականում չափվում

Ոչ մի թիվ չի կարելի կարդալ մեկ հապաղման չափումից այնպես, ինչպես clock-to-Q հապաղումը։ Փոխարենը գրադարանի characterization-ը sweep է անում data transition-ը հետ ու առաջ տակտային ազդանշանի edge-ի նկատմամբ բազմաթիվ փորձնական մոդելավորումների ընթացքում և հետևում է, թե ինչ է լինում ստացվող clock-to-Q հապաղման (Tcq) հետ output-ի մոտ։

⤢ Սեղմեք խոշորացնելու համար Characterization sweep. clock-to-Q հապաղում ընդդեմ data-to-clock offset-ի data transition-ի ժամանակը տակտային ազդանշանի edge-ի նկատմամբ (Tₑ₊) → clock-to-Q հապաղում (Tₛₜ) 1.10 × Tₛₜ,min (10% degradation գիծ) Tₛₜ,min (հարթ ասիմպտոտիկ մինիմում) նոմինալ տակտային ազդանշանի edge (Tₑ₊ = 0) Tₑ₊ = −Tₛ₡ (setup սահման) Tₑ₊ = +Tₕₑ (hold սահման) metastability region — Tₛₜ-ն բարձրանում է դեպի ասիմպտոտ, երբ տվյալը մոտենում է edge-ին

Սա «bathtub curve»-ն է։ Tcq-ն մնում է հարթ իր մինիմումի վրա sweep-ի մեծ մասի ընթացքում, ապա կտրուկ թեքվում է վերև, երբ data transition-ը մոտենում է տակտային ազդանշանի edge-ի ցանկացած կողմին։ Արդյունաբերության ստանդարտ սահմանումը Tsu-ն և Thd-ն դնում է այն offset-ի վրա, որտեղ Tcq-ն degrade է եղել ֆիքսված 10%-ով իր մինիմումից բարձր — ոչ թե իրական ասիմպտոտի վրա, ինչը տեխնիկապես կպահանջեր, որ data offset-ը հասնի անվերջության։

Degradation criterion (արդյունաբերական default) Tcq(Tdc) = 1.10 × Tcq,min

Tdc-ն data-transition-ի ժամանակն է տակտային ազդանշանի edge-ի նկատմամբ։ Այն երկու offset-ները, որտեղ curve-ը հատում է այս 10%-degradation գիծը, edge-ի ամեն կողմում մեկ, հենց −Tsu-ի և +Thd-ի սահմանումներն են։ Ավելի խիստ կամ ավելի ազատ տոկոսը երկու թվերն էլ միասին տեղաշարժում է. որոշ հոսքեր փոխարենը օգտագործում են ֆիքսված բացարձակ հապաղման adder (օր. +10ps մինիմումից բարձր) տոկոսի փոխարեն, հատկապես ցածր լարման ժամանակ, երբ curve-ի մինիմումի region-ը բավական հարթ չէ, որ տոկոսային չափանիշը լավ պահվի։

ՉափանիշՍահմանումՈրտեղ է կիրառվում
Հարաբերական degradation (10%)Tcq-ին թույլատրվում է բարձրանալ 10% իր մինիմումից բարձրԱմենատարածված default-ը ստանդարտ բջիջների characterization գործիքների միջև
Ֆիքսված բացարձակ adderTcq-ին թույլատրվում է բարձրանալ ֆիքսված հապաղումով (օր. 5–10ps) մինիմումից բարձրNear-threshold / ցածր լարման գրադարաններ, որտեղ Tcq curve-ը չափազանց ոչ-գծային է մաքուր տոկոսային կետի համար
Pass/fail (ֆունկցիոնալ)Edge-ին ամենամոտ offset-ը, որ դեռ ընդհանրապես տալիս է տրամաբանորեն ճիշտ, ոչ-metastable outputՊահպանողական հղման կետ. հազվադեպ է ուղղակի օգտագործվում signoff-ի համար, քանի որ նստում է հենց metastability cliff-ի եզրին
Ինչու է սա կարևոր STA-ի համար. քանի որ Tsu-ն և Thd-ն իրենք սահմանված են կամայական (թեկուզ ստանդարտացված) degradation շեմով, ոչ թե կոշտ ֆիզիկական սահմանով, տակտային ազդանշանի edge-ի շուրջ իրական «keep-out window»-ն իրականում մի փոքր ավելի փափուկ է, քան գրադարանի երկու թվերն են ենթադրում — պատճառներից մեկը, որ signoff-ի մարժաներ գոյություն ունեն նոմինալ setup/hold թվերի վրա, ոչ միայն interconnect-ի և process variation-ի վրա։

Կարո՞ղ է setup-ը կամ hold-ը բացասական լինել։ Այո — և ահա մեխանիզմը

Երկու թիվն էլ բացարձակապես կարող են բացասական լինել իրական բջիջների գրադարանում, և դա տվյալի սխալ չէ, երբ ժամանակային report-ը ցույց է տալիս մեկը։ Բացասական Tsu նշանակում է, որ տվյալը դեռ ապահով captured է, նույնիսկ եթե այն հասնում է մի փոքր հետո արտաքին տակտային ազդանշանի edge-ի. բացասական Thd նշանակում է, որ տվյալին թույլատրվում է փոխվել մի փոքր առաջ արտաքին տակտային ազդանշանի edge-ից, և flop-ը դեռ հուսալիորեն capture է անում հին արժեքը։ Երկուսն էլ բխում են ճիշտ նույն աղբյուրից. ներքին race-ը, flip-flop բջիջի ներսում, տակտային ազդանշանի buffer chain-ի հապաղման և D-pin-ից-master-latch data path-ի հապաղման միջև — վերևի master-slave դիագրամում ընդգծված երկու path-երը։

⤢ Սեղմեք խոշորացնելու համար Ներքին տակտային ազդանշանի path-ն ավելի դանդաղ → setup-ը կարող է բացասական դառնալ data path (D pin → master latch) τₑ կարճ տակտային ազդանշանի path (CP pin → internal edge) τ₊₡ երկար (հավելյալ buffering / երկար տակտային ազդանշանի route) Արդյունք. իրական ներքին sampling-ի ակնթարթը վայրէջք է կատարում արտաքին CP edge-ից բավական հետո — ուստի արտաքին edge-ից մի փոքր հետո հասնող տվյալը դեռ հասցնում է (հետաձգված) իրական deadline-ին։ Tₛ₡,ext-ը դառնում է բացասական։ Ներքին data path-ն ավելի դանդաղ → hold-ը կարող է բացասական դառնալ data path (D pin → master latch) τₑ երկար (հավելյալ input buffering / mux stage D-ի վրա) տակտային ազդանշանի path (CP pin → internal edge) τ₊₡ կարճ Արդյունք. արտաքին տվյալի փոփոխությունը, նույնիսկ CP edge-ից մի փոքր առաջ, դեռ այնքան երկար է հասնում ներքին node-ին, որ հին արժեքն ապահով վաղուց ռիսկից դուրս է։ Tₕₑ,ext-ը դառնում է բացասական։

Նույն մեխանիզմ, հակառակ ռեժիմ. որ ներքին path-ն էլ (տակտային ազդանշան թե data) հարաբերականորեն ավելի դանդաղ է, «նվիրում» է մարժա մյուս ստուգմանը։ Բջիջը չի կարող այս էֆեկտից միաժամանակ ունենալ բացասական setup և բացասական hold — դա փոխանակություն է, ոչ թե անվճար նվեր երկու կողմերում։

Սա գրելով. թող τclk-ն լինի ներքին հապաղումը CP pin-ից մինչև իրական ներքին sampling-ի ակնթարթը, և τd-ն՝ ներքին հապաղումը D pin-ից մինչև master latch-ի input-ը։ Արտաքին setup/hold պահանջը ներքիններից բխեցնելը՝ պարզապես այս երկու հապաղումների համար տեղաշարժ անելով, տալիս է.

Արտաքին setup և hold, հղված ներքին ժամանակայինին Tsu,ext = Tsu,int + τd − τclk
Thd,ext = Thd,int + τclk − τd

Երկու հավասարումները կիսում են նույն (τclk − τd) անդամը հակառակ նշանով — ինչ որ այս ներքին race-ն ավելացնում է մեկ ստուգմանը, հանում է մյուսից։ Երբ տակտային ազդանշանի path-ը գերիշխում է (τclk մեծ), Tsu,ext-ն կարող է ընկնել զրոից ցածր։ Երբ data path-ը գերիշխում է (τd մեծ), փոխարենը Thd,ext-ն կարող է ընկնել զրոից ցածր։

Աշխատած օրինակ

Ենթադրենք flop-ի ներքին setup պահանջը Tsu,int = 50ps է, նրա տակտային ազդանշանի buffer chain-ն ավելացնում է τclk = 180ps, և նրա D-to-master-latch route-ն ավելացնում է ընդամենը τd = 60ps։ Ապա Tsu,ext = 50 + 60 − 180 = −70ps — datasheet-ը և .lib model-ը երկուսն էլ report են անում −70ps setup time, ինչը նշանակում է, որ տվյալը դեռ ապահով captured է նույնիսկ արտաքին տակտային ազդանշանի edge-ի արդեն թվացյալ անցնելուց 70ps հետո։

Սա ուղղակիորեն երևում է signoff-ում. Liberty (.lib) ժամանակային arc-երն իրենց setup_rising/hold_rising աղյուսակներում կրում են բացասական թվեր ճիշտ այսպես, և STA գործիքները սպառում են դրանք առանց հատուկ մշակման — այս բաժնի սկզբի ժամանակային պահուստի բանաձևերն աշխատում են ճիշտ՝ անկախ նրանից, թե Tsu/Thd-ն դրական են, թե բացասական, քանի որ ժամանակային պահուստը դեռ ընդամենը required-time հանած arrival-time է։ Գրադարանի flop-ի բացասական hold time-ը այն լուռ պատճառներից մեկն է, որ որոշ design-եր hold-ը փակում են ավելի քիչ buffer insertion-ներով, քան միամիտ ձեռքով գնահատականը կկանխատեսեր։
Բացասականը մի դիտարկեք որպես «ստուգում պետք չէ». բացասական hold constraint-ը դեռ իրական, ակտիվորեն կիրառվող ստուգում է — պարզապես պատահում է, որ ավելի ներողամիտ է, քան «տվյալը չպիտի փոխվի edge-ից առաջ»-ը։ STA-ն դեռ նշում է խախտում, եթե path-ի ամենաարագ arrival-ն ավելի արագ է, քան նույնիսկ այդ թուլացած, բացասական deadline-ը. բացասականը պարզապես տեղափոխում է դարպասաձողը, չի հեռացնում այն։
Ճշգրտության Կատարելագործում

Տակտային ազդանշանի Uncertainty և Reconvergence Pessimism

reg2reg path-ի և՛ launch, և՛ capture flip-flop-երն իրենց տակտային ազդանշանը ստանում են նույն տակտային ազդանշանի ծառից, ինչը սովորաբար նշանակում է, որ երկու տակտային ազդանշանի path-երը կիսում են ընդհանուր trunk՝ նախքան իրենց համապատասխան leaf flop-երի ուղղությամբ ճյուղավորվելը։ Միամիտ STA գործիքը launch path-ին կկիրառեր տակտային ազդանշանի ծառի ամենաուշ հնարավոր հապաղումը, իսկ capture path-ին՝ նրա ամենավաղ հնարավոր հապաղումը (կամ հակառակը, որն էլ pessimistic է) — ներառյալ այն հատվածի երկայնքով, որ երկու path-երը ֆիզիկապես կիսում են, ինչը իրական սիլիկոնում չի կարող միանգամից երկու տարբեր հապաղում ունենալ։

⤢ Սեղմեք խոշորացնելու համար Common տակտային ազդանշանի path-ի pessimism տակտային ազդանշանի root common trunk (կիսվում է երկու path-երի կողմից) launch FF capture FF միամիտ STA. ենթադրում է, որ այս հատվածն արագ է launch-ի համար, դանդաղ capture-ի համար — անհնար իրական սիլիկոնում CRPR-ը հեռացնում է այն Ընդհանուր trunk-ի հապաղումը նույնական է երկու path-երի համար ֆիզիկական անհրաժեշտությամբ — ինչ pessimism որ ավելացվել էր այդ հատվածի համար, հանվում է հետ ժամանակային պահուստի հաշվարկից՝ վերականգնելով ժամանակային մարժա, որ երբեք իրականում ռիսկ չէր։

Clock reconvergence pessimism removal-ը (CRPR), որ նաև կոչվում է common clock path pessimism removal (CCPP removal), գտնում է launch և capture path-ի միջև ընդհանուր տակտային ազդանշանի ծառի հատվածը և չեղարկում է դրան կիրառված արհեստական early/late split-ը։

CRPR-ն ամենակարևորն է այն path-երի վրա, որտեղ launch և capture flop-երը ֆիզիկապես մոտ են իրար և կիսում են իրենց տակտային ազդանշանի path-ի մեծ մասը — հենց այն տեսակի path, որը տակտային ազդանշանի mesh կամ H-tree topology-ն (տես Physical Design → CTS) նախատեսված է առատ քանակով արտադրելու։ Առանց CRPR-ի, signoff-ը կreport աներ կեղծ խախտումներ այն path-երի վրա, որ իրականում ապահով են՝ ստիպելով անհարկի և ծախսատար ուղղումներ։

Uncertainty բաղադրիչԱռկա՞ է pre-CTSԱռկա՞ է post-CTS
Տակտային ազդանշանի jitterԱյո (գնահատված)Այո (տակտային ազդանշանի source / PLL spec-ից)
Skew մարժա (ընդհանուր guardband)Այո — մեծ, քանի որ դեռ իրական tree գոյություն չունիՈչ — փոխարինված է իրական propagated skew-ով
Reconvergence pessimismN/A — path-եր կիսելու իրական տակտային ազդանշանի topology չկաԱռկա է, հեռացվում է CRPR-ով
Constraint-ի Կատարելագործում

Ժամանակային Exceptions

Հանգույցների ցանկի ոչ ամեն structural path է ներկայացնում մի բան, որ իրականում կարող է ֆունկցիոնալ կերպով տեղի ունենալ, և ոչ ամեն path-ի պետք է փակվել մեկ տակտային ազդանշանի cycle-ում։ SDC ժամանակային exception-ները STA-ին ասում են՝ թուլացնել կամ բաց թողնել կոնկրետ path-եր — կիրառվում են զգուշորեն, քանի որ սխալ exception-ը լուռ կերպով անջատում է ստուգումն այն path-ի վրա, որ իրականում կարող է կարևոր լինել։

False path-եր

Path, որ structural կերպով գոյություն ունի հանգույցների ցանկում, բայց երբեք չի կարող sensitized լինել իրական ֆունկցիոնալ վարքագծով — օրինակ, երկու փոխադարձ բացառող control path, որ logic-ը երաշխավորում է, որ երբեք միաժամանակ ակտիվ չեն լինի, կամ synchronizer-ի միջով անցնող path-եր, որտեղ միայն metastability settling time-ն է կարևոր, ոչ թե կոնկրետ հապաղման թիվ։

set_false_path -from [get_pins CTRL/mux_sel_reg/Q] \
               -to   [get_pins DATAPATH/mode_reg/D]

Multicycle path-եր

Path, որին թույլատրվում է կայունանալու համար մեկից ավելի տակտային ազդանշանի cycle — տարածված լայն, դանդաղ datapath-երի վրա (մեծ multiplier-ներ, խորը adder chain-եր), որտեղ single-cycle closure-ը ստիպելը կարժենար անթույլատրելի area կամ էներգասպառում՝ առանց իրական օգուտի, քանի դեռ ընդունող logic-ը գիտի սպասել լրացուցիչ cycle(ներ)ը՝ նախքան sampling-ը։

set_multicycle_path 2 -setup \
    -from [get_pins MUL/a_reg/CP] \
    -to   [get_pins MUL/result_reg/D]
set_multicycle_path 1 -hold \
    -from [get_pins MUL/a_reg/CP] \
    -to   [get_pins MUL/result_reg/D]
Տարածված սխալ. multicycle setup exception-ը գրեթե միշտ պահանջում է համապատասխան hold exception default-ից մեկ cycle շուտ, այլապես hold ստուգումն ի վերջո ստուգում է ամբողջովին սխալ edge-ի նկատմամբ և կամ քողարկում է իրական խախտում, կամ report անում կեղծ մեկը։ Չափազանց լայն հայտարարված false path-երը (օր. wildcard անելով bus, որ միայն երբեմն է կրում don't-care տվյալ) սիլիկոնի ժամանակային escape-ների ամենատարածված աղբյուրներից են — ամեն exception պիտի հետագծելի լինի կոնկրետ, ապացուցելի ֆունկցիոնալ պատճառին։
Exception-ների formal ստուգում. քանի որ սխալ exception-ը կարող է քողարկել իրական bug, որ երևում է միայն սիլիկոնում, շատ signoff հոսքեր հատուկ formal գործիք են աշխատեցնում՝ ապացուցելու, որ հայտարարված false path-երն իրականում անհասանելի են և որ multicycle path-երն իրականում ստանում են այն լրացուցիչ cycle-ները, որ design-ը ենթադրում է — SDC exception ցուցակը ինքնին դիտարկելով որպես մի բան, որ պահանջում է ստուգում, ոչ միայն այն design-ը, որ այն constrain է անում։
Signoff-ի Մասշտաբ

Corner-ներ և MCMM Signoff

Չիպը պիտի ճիշտ աշխատի արտադրական variation-ի, սնուցման լարման, temperature-ի և ֆունկցիոնալ operating mode-ի ամեն զուգակցման վրա, որ երբևէ կարող է հանդիպել — ոչ միայն մեկի։ Multi-corner multi-mode (MCMM) վերլուծությունը, երբեմն կոչվում MMMC, աշխատեցնում է ամբողջ STA path վերլուծությունը ամեն զուգակցման վրա միաժամանակ, ոչ թե մեկ առ մեկ, քանի որ worst-case path-ը հազվադեպ է լինում նույն path-ը ամեն scenario-ում։

⤢ Սեղմեք խոշորացնելու համար MCMM scenario matrix (պատկերավոր) mode-եր → Functional Sleep Scan shift JTAG corner-ներ → WCS (worst-case slow) BCF (best-case fast) WCL (worst-case leakage) setup setup setup setup setup setup setup setup hold hold hold hold 4 mode × 3 PVT corner × parasitic corner-ներ → տասնյակ scenario, յուրաքանչյուրն անկախ ստուգված design-ը signs off է միայն, երբ ամեն path անցնում է ամեն scenario-ում — ամեն path-ի ամենավատ scenario-ն, ոչ թե ամեն design-ի, սահմանում է շեմը

Setup-ը սովորաբար գերիշխում է slow/worst-case corner-ում (WCS), hold-ը՝ fast/best-case corner-ում (BCF) — հենց այդ պատճառով մեկ տեսակի խախտումն ուղղելը corner ենթադրությունները փոխելով չի աշխատում. երկու corner-ներն էլ պիտի անցնեն միաժամանակ։

ՉափումԻնչ է այն variation է անումՏիպիկ signoff-ի մտահոգություն
PVT cornerProcess (TT/FF/SS/…), լարում, temperature — տես Fabrication → Process CornersSetup գերիշխող slow corner-ներում, hold գերիշխող fast corner-ներում
Parasitic (RC) cornerInterconnect-ի resistance/capacitance extraction-ի ծայրահեղություններCmax/Cmin extraction corner-ները setup-ն ընդդեմ hold-ի սթրեսավորում են այլ կերպ, քան միայն device corner-ները
Ֆունկցիոնալ modeՆորմալ աշխատանք, ցածր էներգասպառման/sleep վիճակներ, DFT scan-shift, JTAG/debugScan-shift mode-ը մասնավորապես հաճախ ունի ամբողջովին տարբեր critical path-եր, քան functional mode-ը
On-chip variationբյուրեղիկի ներսում statistical spread — տես Fabrication → On-Chip Variation & SigmaԿիրառվում է որպես derate կամ POCV distribution ամեն corner/mode զուգակցման վրա
Cross-link. հիմքում ընկած process corner-ի մեխանիկան (TT/FF/SS/FS/SF, ինչպես է fab-ն իրականում որոշում բյուրեղիկի corner-ը) և POCV/AOCV on-chip variation modeling-ը մանրամասն ընդգրկված են Fabrication էջում, ոչ թե կրկնված այստեղ — MCMM-ն այն է, ինչ դասավորում է այդ per-corner թվերը մեկ signoff որոշման մեջ ամեն mode-ի համար, որում չիպը կարող է լինել։
Statistical Հիմքեր

Sigma և Statistical Guardbanding

«3-sigma»-ն և «2-sigma»-ն անընդհատ երևում են ժամանակային signoff-ի զրույցներում, և դրանք նշանակում են ճիշտ այն, ինչ նշանակում են ցանկացած այլ statistical համատեքստում. process պարամետրը, ինչպիսին տրանզիստորի gate length-ն է կամ threshold լարումը, պատահականորեն variation է անում device-ից device, այդ variation-ը լավ մոտարկվում է Gaussian (normal) distribution-ով, և σ-ն այդ distribution-ի standard deviation-ն է։ Բջիջի հապաղումը ժառանգում է նույն պատահականությունը — ամեն գրադարանի arc ունի միջին հապաղում μ և characterized spread σ դրա շուրջ, և «3σ-ով signing off»-ը նշանակում է, որ design-ը պիտի բավարարի ժամանակայինը, նույնիսկ եթե տվյալ path-ի հապաղումը վայրէջք է կատարում այդ distribution-ի անբարենպաստ tail-ի մեջ 3 standard deviation, ոչ միայն միջինի վրա։

⤢ Սեղմեք խոշորացնելու համար Gaussian հապաղման distribution և միակողմանի sigma guardband-ներ μ (միջին հապաղում) +1σ +2σ +3σ դանդաղ tail — setup ռիսկ ամենահավանական հապաղում արագ tail — hold ռիսկ

Setup-ին հետաքրքրում է հապաղման distribution-ի դանդաղ (աջ) tail-ը. hold-ին հետաքրքրում է արագ (ձախ) tail-ը։ «3σ setup guardband»-ը ավելացնում է 3× characterized σ μ-ի վրա, երբ հաշվում է setup ստուգման մեջ օգտագործվող arrival time-ը։

Sigma մակարդակ (N)Միակողմանի ծածկույթՄոտավոր մասնաբաժինը, որ մնում է tail-ում
1σ84.13%≈158,700 ppm (1-ը 6-ից)
2σ97.72%≈22,750 ppm (1-ը 44-ից)
3σ99.87%≈1,350 ppm (1-ը 741-ից) — տարածված signoff default
4σ99.9968%≈31.7 ppm
5σ99.99997%≈0.29 ppm
6σ99.9999999%≈0.001 ppm — automotive/safety-critical տիրույթ

N-ի ընտրությունը ուղղակի փոխանակություն է design-ի մարժայի և մնացորդային ռիսկի միջև, և դա նույն փոխանակությունն է, որ Fabrication → Yield էջի պիտանի ելքի model-ն անում է defect density-ի համար — ավելի բարձր sigma target-ը ծածկում է population-ի ավելի մեծ մասը, բայց արժենում է ավելի շատ area, էներգասպառում կամ հաճախություն՝ երաշխավորելու համար, քանի որ ամեն path-ը փաստորեն պիտի կառուցվի, որ գոյատևի իր ավելի հազվադեպ, ավելի pessimistic տարբերակը։ Consumer design-երը սովորաբար signs off են 3σ շուրջ. automotive և infrastructure մասերը, որտեղ field failure-ը շատ ավելի ծախսատար է, հաճախ հասնում են 4.5–6σ ամենա safety-relevant path-երի համար։

Sigma-ի համակցումը path-ի երկայնքով

Իրական ժամանակային path-ն անցնում է բազմաթիվ gate-երի և wire-երի միջով, յուրաքանչյուրն իր սեփական անկախ պատահական variation-ով։ Ամեն stage-ի Nσ guardband-ը միամտորեն միասին գումարելը (հին flat-AOCV մոտեցումը) չափազանց pessimistic է, քանի որ այն ենթադրում է, որ path-ի ամեն gate միաժամանակ իր worst case-ում է — աստղաբաշխականորեն անհավանական իսկապես անկախ պատահական աղբյուրների համար։ POCV-ն փոխարենը համակցում է per-stage sigma-ները այնպես, ինչպես անկախ պատահական մեծություններն իրականում համակցվում են. variance-ները գումարվում են, standard deviation-ները՝ ոչ։

Անկախ պատահական variation-ի Root-sum-square (RSS) համակցում σpath = √(σ12 + σ22 + … + σn2)

Path-ի նոմինալ հապաղմանը իրականում ավելացվող guardband-ը N × σpath է, ոչ թե N × (σ1 + σ2 + …)։ Քանի որ RSS-ն աճում է stage-երի քանակի քառակուսի արմատով, ոչ թե գծայնորեն, POCV-ն վերականգնում է pessimism-ի զգալի քանակ, որ հին flat-derate AOCV մեթոդաբանությունը դարձնում էր ավելի ու ավելի անօգտագործելի, երբ pipeline-ները խորանում էին առաջադեմ node-երում։ Systematic (chip-wide, լիովին correlated) variation բաղադրիչները դեռ գծայնորեն գումարվում են սրա վրա — միայն պատահական, անկախ բաղադրիչն է շահում RSS-ից։

Cross-link. հիմքում ընկած OCV/AOCV/POCV variation-modeling մեթոդաբանությունը ներկայացված է Fabrication → On-Chip Variation & Sigma էջում. այս բաժինը կենտրոնանում է հատկապես նրա վրա, թե ինչ է ինքնին sigma թիվը նշանակում statistical կերպով և ինչպես է signoff target-ն ընտրվում։
Ձևավորվող Պրակտիկա

Statistical STA (SSTA)

Corner-based STA-ն process variation-ը դիտարկում է որպես մի քանի դիսկրետ worst-case կետ (TT/FF/SS/…), որ ամեն մեկը վերլուծվում է, կարծես չիպի ամեն տրանզիստոր միաժամանակ լիներ հենց այդ ծայրահեղության վրա — հարմար պարզեցում, բայց ավելի ու ավելի pessimistic մեկը, երբ անկախ variation աղբյուրների քանակն աճում է առաջադեմ node-երում։ Statistical static timing analysis (SSTA)-ն փոխարենը key պարամետրերը (gate length, threshold լարում, interconnect thickness) մոդելավորում է որպես probability distribution-ներ և propagate է անում այդ distribution-ները ժամանակային graph-ի միջով՝ ամեն path-ի համար ստեղծելով ժամանակային distribution, ոչ թե մեկ worst-case թիվ։

Corner-based STASSTA
Variation modelԴիսկրետ worst-case կետերԱնընդհատ probability distribution-ներ
OutputՄեկ ժամանակային պահուստի թիվ ամեն path-ի ամեն corner-ի համարժամանակային պիտանի ելք / target հաճախություն բավարարելու հավանականություն
PessimismԱվելի բարձր — ենթադրում է լիարժեք correlation ամեն corner-ումԱվելի ցածր — բացահայտ մոդելավորում է պարամետրերի միջև մասնակի correlation-ը
ԸնդունումՀամընդհանուր, ստանդարտ signoff մեթոդաբանությունՕգտագործվում է ընտրովի — բարդ հոսք, հիմնականում ամենաառաջադեմ node-երում կամ critical block-երի համար

SSTA-ն ամբողջ արդյունաբերության մասշտաբով չի փոխարինել corner-based signoff-ին — POCV-ն (parameterized on-chip variation, ընդգրկված Fabrication էջում) capture է անում SSTA-ի statistical օգտի մեծ մասը շատ ավելի քիչ հոսքի բարդությամբ՝ statistically-derived derate-ներ կիրառելով սովորական corner-based STA-ի վրա, ինչն էլ պատճառն է, որ POCV-ն, ոչ թե լիարժեք SSTA-ն, ավելի տարածված statistical ժամանակային տեխնիկան է արտադրական signoff-ում այսօր։

Կյանքի Ընթացքի Reliability

Aging և Reliability

Չիպը, որ հանգիստ անցնում է ամեն setup և hold ստուգում իր փորձարկման օրը, պարտադիր չէ, որ այդպես մնա։ Տրանզիստորները ֆիզիկապես մաշվում են էլեկտրական սթրեսի տակ այնպես, ինչպես ցանկացած բաղադրիչ — ոչ թե ամբողջովին կոտրվելով, այլ դանդաղ drift անելով։ Աշխատանքի ամիսների և տարիների ընթացքում երկու գերիշխող մեխանիզմ ամեն տրանզիստորի threshold լարումը (Vt) տեղաշարժում են վերև, ինչը ամեն gate-ը դարձնում է մի փոքր ավելի դանդաղ, քան առաջին օրն էր, ինչն էլ իր հերթին քայքայում է setup ժամանակային պահուստը, որ signed off էր «թարմ» գրադարանի նկատմամբ։

Bias Temperature Instability (NBTI / PBTI)

NBTI-ն ազդում է PMOS device-երի վրա, որ պահված են negative gate-to-source սթրեսի տակ (այսինքն gate պահված logic-0-ի վրա source-ի նկատմամբ). PBTI-ն NMOS-ի անալոգն է positive սթրեսի տակ։ Երկուսն էլ առաջանում են gate-oxide interface-ի մոտ ձևավորվող charge trap-երից, որ բարձրացնում են Vt-ն և դանդաղեցնում device-ը։ BTI-ի տարբերակիչ առանձնահատկություն. այն մասամբ վերականգնելի է — trapped charge-ի մի մասը anneal է լինում, երբ սթրեսի պայմանը հեռացվում է (օր. երբ PMOS gate-ը փոխվում է հետ logic-1), ուստի վնասը զուտ միակողմանի չէ այնպես, ինչպես մաշվածքը սովորաբար լինում է։ Այնուամենայնիվ, զուտ մշտական բաղադրիչ կուտակվում է duty cycling-ի տարիների ընթացքում։

Hot Carrier Injection (HCI)

Switching-ի ընթացքում որոշ carrier-ներ ձեռք են բերում բավական կինետիկ էներգիա («hot» carrier-ներ), որ injected լինեն և trapped լինեն gate oxide-ի ներսում՝ կրկին բարձրացնելով Vt-ն և degrade անելով mobility-ն։ Ի տարբերություն BTI-ի, HCI վնասը ըստ էության մշտական և կուտակային է — այն չի anneal լինում idle period-ների ընթացքում։ HCI-ի սրությունը scale է անում switching activity-ի և սնուցման լարման հետ, ուստի ամենաշատն է հարվածում բարձր հաճախության, high-toggle-rate logic-ին (ինչպիսին տակտային ազդանշանի buffer-ներն ու ծանր օգտագործվող datapath բջիջներն են)։

⤢ Սեղմեք խոշորացնելու համար Հապաղման degradation չիպի կյանքի ընթացքում աշխատանքային ժամանակ → (տարիներ) gate հապաղում NBTI/PBTI — արագ սկզբնական աճ, ապա saturate (մասամբ վերականգնելի idle/off period-ների տակ) HCI — ավելի կայուն, մոտավորապես մոնոտոն կուտակային աճ EOL (օր. 10–15տ mission profile) EOL guardband

Երկու մեխանիզմներն էլ հապաղումը հրում են նույն ուղղությամբ (ավելի դանդաղ), բայց ժամանակի ընթացքում տարբեր ձևերով — ահա թե ինչու ֆիզիկայի վրա հիմնված aging model-երն են պետք, ոչ թե մեկ հարթ տոկոս, ճշգրիտ end-of-life (EOL) corner project անելու համար։

Ինչպես է STA-ն հաշվի առնում այն

ՄոտեցումԻնչպես է աշխատումՓոխզիջում
Հարթ aging guardbandԲազմապատկել նոմինալ signoff հապաղումը պահպանողական ֆիքսված գործակցով (օր. 1.03–1.08×)՝ նախատեսված worst-case կյանքի ընթացքի degradation-ը ծածկելու համարՊարզ, արագ, բայց ֆիզիկապես հիմնավորված չէ — կարող է կոնկրետ path-երը under- կամ over-guard անել՝ կախված իրենց իրական switching activity-ից և սթրեսի պրոֆիլից
Aging-aware STADegradation-aware բջիջների գրադարաններ, characterized մի քանի aging checkpoint-ներում (fresh, 1տ, 5տ, EOL) ֆիզիկայի վրա հիմնված NBTI/HCI model-երից, fit արված accelerated stress-test տվյալներին. EOL corner-ն աշխատեցվում է STA-ի միջով ինչպես ցանկացած այլ MCMM cornerԱվելի ճշգրիտ և path-specific, բայց պահանջում է reliability-characterized գրադարաններ և workload/mission-profile ենթադրություններ (լարում, temperature, duty cycle) նախապես
In-field ադապտիվ փոխհատուցումDesign-time-ում guardband անելու փոխարեն, հետևել իրական degradation-ին on-chip monitor-ներով և փոխհատուցել runtime-ումՆվազեցնում է design-time-ում պահանջվող guardband-ը, հավելյալ monitor/control circuitry-ի գնով — տես ներքևում
Տարածված էմպիրիկ BTI degradation ձև ΔVt(t) ≈ A · tn

Reliability model-երը սովորաբար BTI-ով պայմանավորված threshold-լարման տեղաշարժը fit են անում ժամանակի power law-ի, exponent n-ը սովորաբար 0.15–0.25 միջակայքում (իսկ prefactor A-ն՝ լարման, temperature-ի և duty cycle-ի ուժեղ ֆունկցիա) — վերևի NBTI/PBTI curve-ում տեսանելի diminishing-returns ձևը։ Սա պարզեցված էմպիրիկ fit է, որ օգտագործվում է guardband project-ի համար, ոչ թե լիարժեք ֆիզիկական model. արտադրական aging գործիքները calibrate են անում այն կոնկրետ process-ի համար չափված accelerated-stress տվյալների նկատմամբ։

Mission profile-ը հսկայական նշանակություն ունի. consumer mobile SoC-ը 2–3 տարվա սպասվող փոխարինման ցիկլով և հիմնականում սենյակային ջերմաստիճանի աշխատանքով պահանջում է շատ ավելի փոքր aging guardband, քան automotive կամ industrial մասը, որ rated է 10–15 տարի բարձրացված under-hood ջերմաստիճաններում — հենց այդ պատճառով automotive-grade (AEC-Q100) ժամանակային signoff-ը էապես տարբեր, ավելի պահպանողական աշխատանք է, քան consumer signoff-ը նույն process node-ի վրա։
Cross-link. aging-ը այն դանդաղ drift-երից է, որ in-field adaptive body biasing և DVFS/AVS loop-երը կարող են մասամբ փոխհատուցել runtime-ում, process-ի և temperature-ի կողքին — design-time guardband-ի մի մասը փոխանակելով on-chip monitoring-ի և control-ի բարդության հետ, ոչ թե ուտելով ամբողջ EOL մարժան որպես ֆիքսված ժամանակային պահուստ, տրված առաջին օրը։

Աղբյուրներ