Multi-Bit Flip-Flop Banking և Debanking
Design-ի flip-flop-երը սովորաբար synthesized են և սկզբնապես տեղադրվում են որպես անկախ single-bit բջիջներ, յուրաքանչյուրն իր սեփական local տակտային ազդանշանի buffer-ով, որը drive է անում իր տակտային ազդանշանի pin-ը։ Բայց եթե մի քանի single-bit flop-եր կիսում են նույն տակտային ազդանշանը (և հաճախ նաև նույն reset/enable-ը), optimizer-ը կարող է դրանք կլաստերացնել մեկ ֆիզիկական multi-bit flip-flop (MBFF) բջջի մեջ — 2-bit, 4-bit կամ 8-bit macro, որն իրականացնում է մի քանի storage bit մեկ ընդհանուր տակտային ազդանշանի buffer/inverter chain-ի հետևում։ Քանի որ տակտային ազդանշանի network-ի էներգասպառումը scale է անում ըստ իրականում drive արվող տակտային ազդանշանի pin-երի քանակի, ոչ թե պահվող data bit-երի քանակի, banking-ը ուղղակիորեն կրճատում է տակտային ազդանշանի էներգասպառումը և փոքրացնում տակտային ազդանշանի ծառը, որը CTS փուլը (Physical Design → CTS) ընդհանրապես պիտի կառուցեր — հայտնված խնայողությունները տակտային ազդանշանի էներգասպառման համար կազմում են 19–37% միջակայքում՝ կախված design-ից և banking algorithm-ից։
Banking-ը կլաստերացնում է տակտային ազդանշան կիսող flop-երը մեկ ֆիզիկական multi-bit բջջի մեջ՝ մեկ տակտային ազդանշանի buffer-ի հետևում։ Debanking-ը ընտրովի կերպով հակադարձում է սա — մեկ bit-ը հետ հանելով որպես իր առանձին single-bit FF, երբ banked վիճակում պահելը երթուղավորման կամ timing-ի առումով կարժենար ավելի, քան տակտային ազդանշանի էներգասպառման խնայողությունն արժե։
| Ինչ է անում | Երբ է արժեքավոր | |
|---|---|---|
| Banking | Միավորում է նույն տակտային ազդանշանի single-bit FF-երը մեկ MBFF բջջի մեջ՝ կիսելով տակտային ազդանշանի buffer/inverter chain-ը | Default agressive pass, սովորաբար pre-placement կամ վաղ տեղաբաշխման փուլում, հիմնված logical տակտային ազդանշանի/reset խմբավորման վրա |
| Debanking | Կոնկրետ MBFF instance-ը հետ է բաժանում առանձին single-bit FF-երի | Երբ post-placement վերլուծությունը ցույց է տալիս, որ banked bit-երի իրական ֆիզիկական տեղակայությունները հեռու են իրարից — banked վիճակում պահելը կստիպեր երկար, congested route-եր դեպի/ընդհանուր macro-ից, կվնասեր legalization/bin-density-ը, կամ կմեծացներ total negative slack-ը (TNS) այդ կոնկրետ bit-երին առնչվող path-երում |
Combinational Cell Unpacking / Decomposition
Ստանդարտ բջիջների գրադարանները ներառում են ձեռքով optimized compound բջիջներ տարածված ֆունկցիաների համար — full adder-ներ, AND-OR-INVERT (AOI) և OR-AND-INVERT (OAI) գեյթեր, XOR/XNOR, multiplexer-ներ — քանի որ նպատակային transistor-level իրականացումը սովորաբար ավելի փոքր, արագ և low-power է, քան առանձին primitive gate-երից կառուցված համարժեքը։ Բայց սինթեզը երբեմն միտումնավոր անում է հակառակը. unpacking-ը compound բջիջը հետ վերածում է իր Boolean-համարժեք decomposition-ի՝ պարզ 2-input primitive-ների, ինչպիսիք են NAND, NOR և inverter-ները։ NAND-ը և NOR-ը յուրաքանչյուրն առանձին-առանձին «universal» գեյթեր են՝ ֆունկցիոնալորեն ամբողջական իրենց հենքով, ուստի ցանկացած combinational ֆունկցիա, ներառյալ full adder-ը, միշտ կարելի է ամբողջությամբ վերակառուցել միայն մեկից կամ մյուսից։
Նույն Boolean ֆունկցիան (full adder), երկու structural ձև։ Packed բջիջը default-ով compact և արդյունավետ է, unpacked ձևը այդ native արդյունավետության մի մասը փոխանակում է optimizer-ի տեսանելիության և ֆիզիկական տեղաբաշխման ճկունության հետ։
Unpacking-ը միտումնավոր փոխզիջում է, կիրառվում է կոնկրետ իրավիճակներում, ոչ թե գլոբալ կերպով.
| Unpack անելու պատճառ | Ինչու |
|---|---|
| Timing-driven լոկալ վերակառուցում | Packed compound բջիջը optimizer-ի համար անթափանց է — այն չի կարող resize, buffer կամ վերադասավորել logic-ը բջջի ներսում։ Unpacking-ը բացահայտում է ներքին node-երը, որպեսզի բջջով անցնող critical path-ը կարողանա առանձին optimized լինել։ |
| Congestion / legalization թեթևացում | Compound բջիջը մեկ ատոմային ֆիզիկական օբյեկտ է, որը պիտի տեղադրվի և route արվի որպես մեկ միավոր։ Դրա primitive decomposition-ը կարող է տարածվել լոկալ հատակագծի վրայով՝ թեթևացնելով congestion-ի կամ legalization-ի ծանր կետը, որտեղ մեկ մեծ բջիջը չէր տեղավորվում։ |
| Library/corner ծածկույթ | Ոչ բոլոր compound բջիջներն են characterized ամեն drive strength-ի կամ ամեն PVT corner-ի համար։ NAND2/NOR2/INV-ը գրեթե միշտ ցանկացած գրադարանում ամենալիարժեք characterized բջիջներն են, ուստի դրանց decompose անելը շրջանցում է ավելի հազվադեպ compound-cell ծածկույթի բացը։ |
| ECO-ընդունակություն | Post-layout, metal-only engineering change order-երն ավելի հեշտ է կառուցել պարզ 2-input primitive-ներից և spare բջիջներից (տես Physical Design → Spare Cells), քան աշխատել մեծ compound բջջի ֆիքսված footprint-ի շուրջ։ |
ԵՒս մի քանիսը, որ արժե իմանալ
| Տեխնիկա | Ինչ է անում | Փոխզիջում / սահմանափակում |
|---|---|---|
| Register retiming | Տեղափոխում է register-ի սահմանները combinational logic-ի վրայով՝ վերահավասարակշռելու pipeline-stage հապաղումը՝ առանց փոխելու ֆունկցիայի end-to-end վարքագիծը — կարող է մեկ ծանրաբեռնված դանդաղ stage-ը և մեկ թերբեռնված արագ stage-ը վերածել երկու հավասարակշռված stage-ի | Փոխում է cycle-accurate timing-ը, թեև multi-cycle I/O վարքագիծը պահպանվում է, ուստի պահանջում է sequential equivalence checking, ոչ միայն combinational equivalence checking. որոշ feedback/reset structure-ներ սահմանափակում են, թե որտեղ կարող են register-ները legal կերպով տեղաշարժվել |
| Physical-aware (topographical) սինթեզ | Սինթեզի ընթացքում իրականացնում է կոպիտ տեղաբաշխում (Synopsys DC Topographical, Cadence Genus iSpatial), որպեսզի wire-load և congestion գնահատականները գան իրական մոտավոր տոպոլոգիայից, ոչ թե statistical model-ից | Timing/area corelation-ը սինթեզի և place-and-route-ի միջև սեղմում է մոտավորապես 5%-ի սահմաններում և երթուղավորման congestion hotspot-երը կանխատեսում է բավական վաղ, որպեսզի հնարավոր լինի ուղղել դրանք, նախքան design-ը placer հասնելը |
| Datapath / arithmetic resource sharing | Լայն multiplier-ներն ու adder-երը synthesized են dedicated arithmetic structure-ներով (Booth encoding՝ partial-product քանակը կրճատելու համար, Wallace-tree/compressor partial-product reduction), ոչ թե generic Boolean օպտիմալացմամբ | Նույն ֆունկցիայի համար հիմնովին տարբեր սխեմայի topology, ընտրված ըստ width-ի և target metric-ի (area vs. speed) — general logic օպտիմալացումը հազվադեպ է ինքնուրույն վերագտնում այս structure-ները |
Աղբյուրներ
- Efficient Flip-Flop Merging Technique for Clock Power Reduction — IEEE Xplore
- Design and Allocation of Loosely Coupled Multi-Bit Flip-Flops for Power Reduction in Post-Placement Optimization — IEEE Xplore
- Clock-Tree Aware Multibit Flip-Flop Generation During Placement for Power Optimization — IEEE Xplore
- Debanking Techniques on Multi-bit Flip-flops for Reinforcing Useful Clock Skew Scheduling — Semantic Scholar
- Retiming Sequential Circuits with Multiple Register Classes — IEEE Xplore
- Design Compiler Graphical Datasheet (Topographical Synthesis) — Synopsys
- Physically Aware Synthesis Revisited: Guiding Technology Mapping with Primitive Logic Gate Placement — arXiv