Ինչ է ստուգում 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, որ STA-ն վերլուծում է, ընկնում է չորս կատեգորիաներից մեկի մեջ՝ ելնելով նրանից, թե ինչ կա ամեն ծայրում։
Կտտացրեք path-ի տեսակի վրա՝ ավելի մանրամասն անցնելու համար։ reg2reg, in2reg, reg2out և in2out-ը այն չորս structural path կատեգորիաներն են, որոնց մեջ STA-ն դասակարգում է ամեն path։ Յուրաքանչյուրն ունի իր required-time deadline-ի տարբեր աղբյուրները։
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 ստուգումը պաշտպանում էր։
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-ը։
Դրական արդյունքը նշանակում է, որ 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-ի խախտումները սովորաբար ուղղվում են խնդրահարույց path-ի մեջ հապաղման buffer-ներ ներդնելով (այն բավական դանդաղեցնելով), քանի որ ոչ տակտային ազդանշանի period-ը, ոչ լարման/temperature-ի փոփոխությունները չեն օգնում — hold-ի խախտումը գոյություն ունի ամեն operating point-ում։
Ինչ են 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-երում։
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-ի մոտ։
Սա «bathtub curve»-ն է։ Tcq-ն մնում է հարթ իր մինիմումի վրա sweep-ի մեծ մասի ընթացքում, ապա կտրուկ թեքվում է վերև, երբ data transition-ը մոտենում է տակտային ազդանշանի edge-ի ցանկացած կողմին։ Արդյունաբերության ստանդարտ սահմանումը Tsu-ն և Thd-ն դնում է այն offset-ի վրա, որտեղ Tcq-ն degrade է եղել ֆիքսված 10%-ով իր մինիմումից բարձր — ոչ թե իրական ասիմպտոտի վրա, ինչը տեխնիկապես կպահանջեր, որ data offset-ը հասնի անվերջության։
Tdc-ն data-transition-ի ժամանակն է տակտային ազդանշանի edge-ի նկատմամբ։ Այն երկու offset-ները, որտեղ curve-ը հատում է այս 10%-degradation գիծը, edge-ի ամեն կողմում մեկ, հենց −Tsu-ի և +Thd-ի սահմանումներն են։ Ավելի խիստ կամ ավելի ազատ տոկոսը երկու թվերն էլ միասին տեղաշարժում է. որոշ հոսքեր փոխարենը օգտագործում են ֆիքսված բացարձակ հապաղման adder (օր. +10ps մինիմումից բարձր) տոկոսի փոխարեն, հատկապես ցածր լարման ժամանակ, երբ curve-ի մինիմումի region-ը բավական հարթ չէ, որ տոկոսային չափանիշը լավ պահվի։
| Չափանիշ | Սահմանում | Որտեղ է կիրառվում |
|---|---|---|
| Հարաբերական degradation (10%) | Tcq-ին թույլատրվում է բարձրանալ 10% իր մինիմումից բարձր | Ամենատարածված default-ը ստանդարտ բջիջների characterization գործիքների միջև |
| Ֆիքսված բացարձակ adder | Tcq-ին թույլատրվում է բարձրանալ ֆիքսված հապաղումով (օր. 5–10ps) մինիմումից բարձր | Near-threshold / ցածր լարման գրադարաններ, որտեղ Tcq curve-ը չափազանց ոչ-գծային է մաքուր տոկոսային կետի համար |
| Pass/fail (ֆունկցիոնալ) | Edge-ին ամենամոտ offset-ը, որ դեռ ընդհանրապես տալիս է տրամաբանորեն ճիշտ, ոչ-metastable output | Պահպանողական հղման կետ. հազվադեպ է ուղղակի օգտագործվում signoff-ի համար, քանի որ նստում է հենց metastability cliff-ի եզրին |
Կարո՞ղ է 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-ն էլ (տակտային ազդանշան թե data) հարաբերականորեն ավելի դանդաղ է, «նվիրում» է մարժա մյուս ստուգմանը։ Բջիջը չի կարող այս էֆեկտից միաժամանակ ունենալ բացասական setup և բացասական hold — դա փոխանակություն է, ոչ թե անվճար նվեր երկու կողմերում։
Սա գրելով. թող τclk-ն լինի ներքին հապաղումը CP pin-ից մինչև իրական ներքին sampling-ի ակնթարթը, և τd-ն՝ ներքին հապաղումը D pin-ից մինչև master latch-ի input-ը։ Արտաքին setup/hold պահանջը ներքիններից բխեցնելը՝ պարզապես այս երկու հապաղումների համար տեղաշարժ անելով, տալիս է.
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 հետո։
setup_rising/hold_rising աղյուսակներում կրում են բացասական թվեր ճիշտ այսպես, և STA գործիքները սպառում են դրանք առանց հատուկ մշակման — այս բաժնի սկզբի ժամանակային պահուստի բանաձևերն աշխատում են ճիշտ՝ անկախ նրանից, թե Tsu/Thd-ն դրական են, թե բացասական, քանի որ ժամանակային պահուստը դեռ ընդամենը required-time հանած arrival-time է։ Գրադարանի flop-ի բացասական hold time-ը այն լուռ պատճառներից մեկն է, որ որոշ design-եր hold-ը փակում են ավելի քիչ buffer insertion-ներով, քան միամիտ ձեռքով գնահատականը կկանխատեսեր։Տակտային ազդանշանի Uncertainty և Reconvergence Pessimism
reg2reg path-ի և՛ launch, և՛ capture flip-flop-երն իրենց տակտային ազդանշանը ստանում են նույն տակտային ազդանշանի ծառից, ինչը սովորաբար նշանակում է, որ երկու տակտային ազդանշանի path-երը կիսում են ընդհանուր trunk՝ նախքան իրենց համապատասխան leaf flop-երի ուղղությամբ ճյուղավորվելը։ Միամիտ STA գործիքը launch path-ին կկիրառեր տակտային ազդանշանի ծառի ամենաուշ հնարավոր հապաղումը, իսկ capture path-ին՝ նրա ամենավաղ հնարավոր հապաղումը (կամ հակառակը, որն էլ pessimistic է) — ներառյալ այն հատվածի երկայնքով, որ երկու path-երը ֆիզիկապես կիսում են, ինչը իրական սիլիկոնում չի կարող միանգամից երկու տարբեր հապաղում ունենալ։
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 pessimism | N/A — path-եր կիսելու իրական տակտային ազդանշանի topology չկա | Առկա է, հեռացվում է CRPR-ով |
Ժամանակային 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]
Corner-ներ և MCMM Signoff
Չիպը պիտի ճիշտ աշխատի արտադրական variation-ի, սնուցման լարման, temperature-ի և ֆունկցիոնալ operating mode-ի ամեն զուգակցման վրա, որ երբևէ կարող է հանդիպել — ոչ միայն մեկի։ Multi-corner multi-mode (MCMM) վերլուծությունը, երբեմն կոչվում MMMC, աշխատեցնում է ամբողջ STA path վերլուծությունը ամեն զուգակցման վրա միաժամանակ, ոչ թե մեկ առ մեկ, քանի որ worst-case path-ը հազվադեպ է լինում նույն path-ը ամեն scenario-ում։
Setup-ը սովորաբար գերիշխում է slow/worst-case corner-ում (WCS), hold-ը՝ fast/best-case corner-ում (BCF) — հենց այդ պատճառով մեկ տեսակի խախտումն ուղղելը corner ենթադրությունները փոխելով չի աշխատում. երկու corner-ներն էլ պիտի անցնեն միաժամանակ։
| Չափում | Ինչ է այն variation է անում | Տիպիկ signoff-ի մտահոգություն |
|---|---|---|
| PVT corner | Process (TT/FF/SS/…), լարում, temperature — տես Fabrication → Process Corners | Setup գերիշխող slow corner-ներում, hold գերիշխող fast corner-ներում |
| Parasitic (RC) corner | Interconnect-ի resistance/capacitance extraction-ի ծայրահեղություններ | Cmax/Cmin extraction corner-ները setup-ն ընդդեմ hold-ի սթրեսավորում են այլ կերպ, քան միայն device corner-ները |
| Ֆունկցիոնալ mode | Նորմալ աշխատանք, ցածր էներգասպառման/sleep վիճակներ, DFT scan-shift, JTAG/debug | Scan-shift mode-ը մասնավորապես հաճախ ունի ամբողջովին տարբեր critical path-եր, քան functional mode-ը |
| On-chip variation | բյուրեղիկի ներսում statistical spread — տես Fabrication → On-Chip Variation & Sigma | Կիրառվում է որպես derate կամ POCV distribution ամեն corner/mode զուգակցման վրա |
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, ոչ միայն միջինի վրա։
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-ները՝ ոչ։
Path-ի նոմինալ հապաղմանը իրականում ավելացվող guardband-ը N × σpath է, ոչ թե N × (σ1 + σ2 + …)։ Քանի որ RSS-ն աճում է stage-երի քանակի քառակուսի արմատով, ոչ թե գծայնորեն, POCV-ն վերականգնում է pessimism-ի զգալի քանակ, որ հին flat-derate AOCV մեթոդաբանությունը դարձնում էր ավելի ու ավելի անօգտագործելի, երբ pipeline-ները խորանում էին առաջադեմ node-երում։ Systematic (chip-wide, լիովին correlated) variation բաղադրիչները դեռ գծայնորեն գումարվում են սրա վրա — միայն պատահական, անկախ բաղադրիչն է շահում RSS-ից։
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 STA | SSTA | |
|---|---|---|
| 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-ում այսօր։
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 բջիջներն են)։
Երկու մեխանիզմներն էլ հապաղումը հրում են նույն ուղղությամբ (ավելի դանդաղ), բայց ժամանակի ընթացքում տարբեր ձևերով — ահա թե ինչու ֆիզիկայի վրա հիմնված 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 STA | Degradation-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-ի գնով — տես ներքևում |
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 տվյալների նկատմամբ։
Աղբյուրներ
- Timing Analysis — IEEE Technology Navigator
- Timing Yield Estimation Using Statistical Static Timing Analysis — IEEE Xplore
- Why We Need Statistical Static Timing Analysis — IEEE Xplore
- A Statistical Static Timing Analysis Considering Correlations Between Delays — IEEE Xplore
- Practical Statistical Static Timing Analysis with Current Source Models — IEEE Xplore
- Path-Based Statistical Static Timing Analysis for Large Integrated Circuits in a Weak Correlation Approximation — IEEE Xplore
- The Ultimate Guide to Static Timing Analysis (STA) — AnySilicon
- Multi-Corner Multi-Mode Designs Are No Mean Feat — EE Times
- Verification of Multi-Cycle Paths and False Paths — Semiconductor Engineering
- General Framework for Removal of Clock Network Pessimism — ResearchGate
- A Parametric Approach for Handling Local Variation Effects in Timing Analysis (POCV) — IEEE Xplore
- A New Generation of Static Timing Analysis Technology Based on N7+ Process — POCV — IEEE Xplore
- Statistical Timing for Parametric Yield Prediction of Digital Integrated Circuits — IEEE Xplore
- Integrating Aging-Aware Timing Analysis into a Commercial STA Tool — IEEE Xplore
- NBTI-Aware Statistical Circuit Delay Assessment — IEEE Xplore
- NBTI-Aware DVFS: A New Approach to Saving Energy and Increasing Processor Lifetime — IEEE Xplore