A VERILOG HARDVER LEÍRÓ NYELV ALKALMAZÁSA A LOGIKAI SZINTÉZISBEN

Hasonló dokumentumok
5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Hardver leíró nyelvek (HDL)

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Újrakonfigurálható eszközök

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Előadó: Nagy István (A65)

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 4

A Verilog HDL áttekintése

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Digitális technika (VIMIAA01) Laboratórium 4

PROTOTÍPUSKÉSZÍTÉS. Előadó: Dr. Oniga István

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Digitális technika (VIMIAA02) Laboratórium 4

Újrakonfigurálható eszközök

1. Kombinációs hálózatok mérési gyakorlatai

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg: Olvasható aláírás:...

LOGIKAI TERVEZÉS PROGRAMOZHATÓ. Elő Előadó: Dr. Oniga István

Verilog HDL ismertető 4. hét : hét dia

8.3. AZ ASIC TESZTELÉSE

DIGITÁLIS TECHNIKA I

Digitális technika VIMIAA02

Digitális technika VIMIAA02

Verilog ismertető (Szántó Péter, BME MIT, )

Digitális technika VIMIAA01 5. hét

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.

Verilog HDL ismertető

FPGA & Verilog ismertetı. BME Méréstechnika és Információs Rendszerek Tanszék

Egyszerű RISC CPU tervezése

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Verilog HDL ismertető 2. hét : 1. hét dia

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

1. DIGITÁLIS TERVEZÉS PROGRAMOZHATÓ LOGIKAI ÁRAMKÖRÖKKEL (PLD)

Elvonatkoztatási szintek a digitális rendszertervezésben

Áramkörök elmélete és számítása Elektromos és biológiai áramkörök. 3. heti gyakorlat anyaga. Összeállította:

Kiegészítő segédlet szinkron sorrendi hálózatok tervezéséhez

A VERILOG HARDVER LEÍRÓ NYELV ALKALMAZÁSA A LOGIKAI SZINTÉZISBEN

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

7.hét: A sorrendi hálózatok elemei II.

Digitális technika VIMIAA01 5. hét Fehér Béla BME MIT

Tartalom Tervezési egység felépítése Utasítások csoportosítása Értékadás... 38

Digitális technika VIMIAA01

Újrakonfigurálható eszközök

A VERILOG HARDVER LEÍRÓ NYELV ALKALMAZÁSA a LOGIKAI SZINTÉZISBEN

Összetett feladatok megoldása

Szántó Péter BME Méréstechnika és Információs Rendszerek Tanszék, FPGA Labor

Újrakonfigurálható eszközök

Egyszerű mikroprocesszor RTL modellek (VHDL)

Attribútumok, constraint-ek

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Újrakonfigurálható eszközök

Digitális technika VIMIAA02

III. Alapfogalmak és tervezési módszertan SystemC-ben

Szekvenciális hálózatok és automaták

Dr. Oniga István DIGITÁLIS TECHNIKA 4

Standard cellás tervezés

Véges állapotú gépek (FSM) tervezése

Számítógépek felépítése, alapfogalmak

Digitális technika VIMIAA01

Digitális technika VIMIAA02 2. EA Fehér Béla BME MIT

Hobbi Elektronika. A digitális elektronika alapjai: Kombinációs logikai hálózatok 1. rész

DIGITÁLIS TECHNIKA GYAKORLÓ FELADATOK 2. Megoldások

Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

6. hét: A sorrendi hálózatok elemei és tervezése

Logikai hálózatok. Dr. Bede Zsuzsanna St. I. em. 104.

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

funkcionális elemek regiszter latch számláló shiftregiszter multiplexer dekóder komparátor összeadó ALU BCD/7szegmenses dekóder stb...

Gépészmérnöki és Informatikai Kar Automatizálási és Kommunikáció- Technológiai Tanszék

Irányítástechnika I. Dr. Bede Zsuzsanna. Összeállította: Dr. Sághi Balázs, egy. docens Dr. Tarnai Géza, egy. tanár

Digitális eszközök típusai

Dr. Oniga István DIGITÁLIS TECHNIKA 9

A VERILOG HARDVER LEÍRÓ NYELV ALKALMAZÁSA A LOGIKAI SZINTÉZISBEN

Digitális elektronika gyakorlat

DIGITÁLIS TECHNIKA I

Digitális technika VIMIAA02 7. hét Fehér Béla BME MIT

Digitális technika VIMIAA02 7. hét

Constraint-ek. Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

4. hét: Ideális és valódi építőelemek. Steiner Henriette Egészségügyi mérnök

Digitális technika VIMIAA hét

A fealdatot két részre osztjuk: adatstruktúrára és vezérlőre

DIGITÁLIS TECHNIKA feladatgyűjtemény

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

2) Tervezzen Stibitz kód szerint működő, aszinkron decimális előre számlálót! A megvalósításához

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Mérési jegyzőkönyv. az ötödik méréshez

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Digitális technika VIMIAA hét

14. TARTALOM FUTTATÁSA A FEJLESZTŐLAP HÉTSZEGMENSES KIJELZŐJÉN

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

DIGITÁLIS TECHNIKA Dr. Lovassy Rita Dr. Pődör Bálint

Átírás:

A VERILOG HARDVER LEÍRÓ NYELV ALKALMAZÁSA A LOGIKAI SZINTÉZISBEN M.D. CILETTI Department of Electrical and Computer Engineering University of Colorado Colorado Springs, Colorado Copyright 1997 No part of these notes may be copied or reproduced in any form without the written permission of the author. A szerző írásbeli engedélye és jóváhagyása alapján átdolgozta és magyarra fordította FEHÉR BÉLA Budapesti Műszaki Egyetem Méréstechnika és Információs Rendszerek Tanszék 1

TARTALOM 1. rész: Bevezetés, modellek, hierarchikus tervezés, szimuláció 2. rész: Modulok felépítése, adattípusok, logikai operátorok 3. rész: Felhasználói primitívek, késleltetési modellek 4. rész: Működési leírás modellezése Veriloggal 5. rész: A Verilog szintézis módszereinek ismertetése 2

A SZINTÉZIS PARADIGMA TERV BEVITEL HDL VISELKEDÉSI MODELL FUNKCIONÁLIS SZIMULÁCIÓ IDŐZÍTÉS SZIMULÁCIÓ TERV ELLENŐRZÉSE HDL FORRÁS FILE FIZIKAI OPTIMALIZÁLÁS ÉS MEGVALÓSÍTÁS PLD: PARTICIONÁLÁS, MAP, ÖSSZEKÖTÉSEK FPGA: MAP, ELHELYEZÉS, HUZALOZÁS STANDARD CELLÁS ASIC: ELHELYEZÉS, HUZALOZÁS 3

HDL-ALAPÚ SZINTÉZIS A HDL-ALAPÚ SZINTÉZIS ELŐNYEI: A SZINTÉZIS ESZKÖZÖK BIZTOSÍTJÁK: A kapu szintű tervezés alternativája Magas szintű tervezési absztrakció Leírja a teljes architektúrát Leírja a funcionalitást A kapu szintű reprezentáció automatikus generálását Optimális megvalósítást Architekturális vizsgálat, elemzés 4

HDL-ALAPÚ TERV OPTIMALIZÁLÁS VISELKEDÉSI LEÍRÁS TECHNOLÓGIAI KÖNYVTÁRAK TRANSLATION FORDÍTÓ ENGINE EGYSÉG KÉTSZINTŰ LOGIKAI FÜGGVÉNYEK OPTIMALIZÁLÓ MAPPING ENGINE EGYSÉG OPTIMALIZÁLT TÖBBSZINTŰ LOGIKAI FÜGGVÉNYEK LEKÉPEZŐ MAPPING ENGINE EGYSÉG TECHNOLÓGIAI MEGVALÓSÍTÁS Tervezési célok: Funkcionalitás, felület, időzítés, fogyasztás, tesztelhetőség 5

HDL-ALAPÚ TERV ELLENŐZÉS A viselkedési és kapu-szintű funkcionalitás egyezőségét ellenőrizi kell. Verilog viselkedési leírás Logikai Szintézis Kapu szintű leírás Tesztjel Generator Test környezet a terv verifikálására Válaszok Komparálása t Eredmény jelzése 6

A SZINTÉZIS SZINTJEI VISELKEDÉSI SZINTÉZIS REGISZTER TRANSZFER SZINTŰ (RTL) SZINTÉZIS VEZÉRLŐ EGYSÉG SZINTÉZIS LOGIKAI SZINTÉZIS 7

VISELKEDÉSI SZINTÉZIS CÉL: Adott algoritmushoz szintetizálunk egy architektúrát, melynek erőforrásait és ütemezését az algoritmushoz optimalizáltuk. Fetch B Fetch C Fetch B Fetch C + + Store A Fetch A Fetch E Fetch E A = B + C; D = A * E; X = D - A; * Store D * Fetch D Fetch A - - Store X Store X VERILOG LEÍRÁS ELEMZÉS ADATFOLYAM GRÁF 8

REGISZTER TRANSZFER SZINTŰ SZINTÉZIS CÉL: A regiszterekkel, jelekkel és konstansokkal megadott viselkedési leíráshoz szintetizáljuk a modellt közel optimálisan megvalósító architektúrát. FELTÉTELEZÉS: Az erőforrások, ezek kapcsolódásai és ütemezésük az adatfolyam gráf által előre meghatározott. 9

VÉGES ÁLLAPOTÚ VEZÉRLŐ SZINTÉZISE CÉL: Az állapot átmeneti gráf lefordítása/kódolása regiszterekre és kombinációs logikai elemekre. (Az RTL szintézis egy speciális esete.) SR LATCH - ÁLLAPOT ÁTMENETI GRÁF SR = 01 S Q 0 1 R Q' MOORE MODELL SR = 10 (NEM SZINTETIZÁLT) 10

LOGIKAI FÜGGVÉNYEK OPTIMALIZÁLÁSA ESPRESSO: KÉTSZINTŰ LOGIKAI MINIMALIZÁLÁSA (U CAL - BERKELEY) CÉL: A logikai kifejezések számának minimalizálása egyetlen függvénynél. KITERJESZTÉS A kifejezések helyettesítése kevesebb változót tartalmazó prím implikánsokkal. NEMREDUNDÁNS LEFEDÉS A lehetséges lefedésekből egy minimális halmaz kiválasztása. REDUKCIÓ A nem redundáns lefedés transzformálása egy új lefedésre. 11

LOGIKAI FÜGGVÉNYEK OPTIMALIZÁLÁSA MIS-II: TÖBBSZINTŰ LOGIKAI MINIMALIZÁLÁS (U CAL - BERKELEY) A több-bemenetű, több-kimenetű logikai függvényeket az Espresso egyedi függvényeket minimalizáló módszerével nem lehet optimalizálni. Többszintű Kombinációs Logika A többszintű logikai optimalizáló technikák kihasználják a redundáns belső struktúrákat és don t care feltételeket. 12

LOGIKAI FÜGGVÉNYEK OPTIMALIZÁLÁSA MIS-II: TÖBBSZINTŰ LOGIKAI MINIMALIZÁLÁS (U CAL - BERKELEY) DEKOMPOZÍCIÓ FEJEZZÜNK KI EGYETLEN FÜGVÉNYT BELSŐ CSOMÓPONTOKKAL F = abc + abd + a c d + b c d F = XY + X Y X = ab Y = c + d a b c d a b c d X Y F F 13

LOGIKAI FÜGGVÉNYEK OPTIMALIZÁLÁSA MIS-II: TÖBBSZINTŰ MINIMALIZÁLÁS (U CAL - BERKELEY) KIEMELÉS: FEJEZZÜK KI A FÜGGVÉNYEK EGY CSOPORTJÁT BELSŐ CSOMÓPONTOKKAL F = (a + b)cd + e G = (a + b)e' H = cde e' a b c d + + G F H F = XY + e G = Xe' H = Ye X = a + b Y = cd e' a b c d + X Y + G F H e e OPTIMALIZÁLÁS: BELSŐ CSOMÓPONTOK KERESÉSE A HÁLÓZAT MINIMALIZÁLÁSÁRA, A KÉSLELTETÉS, A FOGYASZTÁS CSÖKKENTÉSÉRE VAGY A TESZTELHETŐSÉG JAVÍTÁSÁRA. 14

LOGIKAI FÜGGVÉNYEK MINIMALIZÁLÁSA MIS-II: TÖBBSZINTŰ LOGIKAI MINIMALIZÁLÁS (U CAL - BERKELEY) SZORZATTÁ ALAKÍTÁS: SZORZATOK ÖSSZEGÉBŐL ÖSSZEGEK SZORZATA FORMA F = ac + ad + bc + bd + e F = (a + b)(c + d) + e a b c d e a b c d e + + (a+b) + + (c+d) OPTIMALIZÁLÁS: A MINIMÁLIS SZÁMÚ MŰVELETET TARTALMAZÓ FORMA KERESÉSE. 15

LOGIKAI FÜGGVÉNYEK MINIMALIZÁLÁSA MIS-II: TÖBBSZINTŰ LOGIKAI MINIMLIZÁLÁS (U CAL - BERKELEY) HELYETTESÍTÉS: A FÜGGVÉNYT MÁS FÜGGVÉNYEKKEL ÉS SAJÁT RÉSZFÜGGVÉNYEIVEL FEJEZZÜK KI. G = a + b F = a + b + c F = G + c a b c a b c + G + G + F + F 16

LOGIKAI FÜGGVÉNYEK MINIMALIZÁLÁSA MIS-II: TÖBBSZINTŰ LOGIKAI MINIMALIZÁLÁS (U CAL - BERKELEY) KIFEJTÉS: EGY BELSŐ CSOMÓPONT MEGSZÜNTETÉSE BEHELYETTESÍTÉSSEL F = Ga + G b F = ac + ad + bc d G = c + d a b c d a b c d + G + F + F 17

A LOGIKAI SZINTÉZIS CÉL: A KOMBINÁCIÓS LOGIKAI FÜGGVÉNY OPTIMÁLIS SZINTÉZISE AZ ERŐFORRÁSIGÉNY, SEBESSÉG, FOGYASZTÁS FIGYELEMBE VÉTELÉVEL. Többszintű Kombinációs Logika A technológia: A MIS-II optimalizációs algoritmusai többszörösen kihasználják a logikai egységeket és a don't care feltételeket, miközben megőrzik a tesztelhetőséget és a be-/kimeneti azonosságot. 18

SZINTÉZIS A VERILOG HDL NYELVRŐL CÉL A Verilog nyelven adott különböző szintű és stílusú (RTL, FSM, egyenletek) leírások alapján a megfelelő kombinációs és szekvenciális logikai modulok kapu színtű reprezentációjának automatikus generálása az erőforrások, sebesség és fogyasztás paraméterek optimalizálásával. FONTOSABB JELLEMZŐK SZINTETIZÁLHATÓSÁG HATÉKONYSÁG MINŐSÉG 19

AZ ERŐFORRÁS - SEBESSÉG KOMPROMISSZUM Kompromisszum: Architektúra, logika, könyvtári elemek Késleltetés Architekturális módosítás Tervezési pont Felület 20

LEHETSÉGES TECHNOLÓGIAI OPCIÓK EGYEDI IC-k Darabszám STANDARD CELLÁS IC-k (CBICs) Tervezési idő PROGRAMOZHATÓ LOGIKAI ESZKÖZÖK (PLDS) FPGA-k és maszk prog. áramkörök Technológiai lépés: Exponenciális javulás a sűrűségben, lineáris a késleltetésben Egyszeri (NRE) költségek Gyártási költségek Méret Sebesség, komplexitás 21

A HDL-ALAPÚ SZINTÉZIS KÖVETELMÉNYEI A SZINTÉZIS ESZKÖZÖK HATÉKONY HASZNÁLATA MEGKÖVETELI: A megfelelő tervezési módszerek követését A funkciók intelligens partícionálását Ügyes és okos HDL leíró stílus használatát (A várható eredmény előrelátása) Az eszközre vonatkozó gyártói ajánlások figyelembevételét A szintézissel kapott kapu-szintű modell ellenőrzését 22

A SZINTÉZIS FONTOS SZABÁLYAI A teljes funkcionalitásra koncentráljunk Készítsünk architekturális tervet, felosztást (top-down) Definiáljuk az egyes egységek funkcionalitását Ellenőrizzük az egységeket (bottom-up) Használjunk technológia független tervezési stílust A kapu szintű szintézist tervezési feltételekkel futassuk Végezzünk a szintézis után ellenőrzést az időzítési adatok és a funkcionalitás ellenőrzésére EREDMÉNY: Technológia függő optimalizált kapu szintű terv. 23

A SZINTÉZIS PARADIGMA KÖLTSÉGEI A szintézis eszközöket meg kell venni A tervezői csapatnak meg kell tanulni az új módszert. A tervezői csapatnak meg kell tanulnia az új nyelvet. A tanulási görbe kezdetben lapos. Az eredmények kezdetben nem jósolhatók. Szükség van tervezői intelligenciára! 24

SZINTÉZEREK TIPIKUS TULAJDONSÁGAI Elfogadják a teljes Verilog HDL nyelvet Elhanyagolják a nem támogatott szerkezeteket Időzítés adatokat elhanyagolják. Késleltetés vezérlést (#) elhanyagolják. Minden jelet maximális erősségűnek tekintenek. Az 'x' és 'z' értékekkel végzett logikai műveletek tiltottak. Ösztönöznek a szintetizálható szerkezetek használatára. Nem támogatják a tároló elemekre történő hivatkozást. 25

SZINTETIZÁLHATÓSÁG Ugyanazon változóra ne hivatkozzunk több 'always' blokkban. (Esetleg a szintetizált rendszer viselkedése eltérő lesz a szimulációtól) Az állapotváltozásokat rendeljük egy közös órajel clock aktív éléhez/éleihez. Az aszinkron 'reset'-et támogatják. 26

TECHNOLÓGIA FÜGGETLEN TERVEZÉS Kombinációs logika A tároló elemeket külső órajel ill. reset jel vezérli. A kombinációs logika bemeneti jelei vagy elsődleges bemenetek, vagy a tárolók kimenetei. A kombinációs logika terjedési ideje kevesebb, mint az órajel periódusideje. 27

A SZINTÉZIS EREDMÉNYÉNEK ELLENŐRZÉSE Verilog HDL Modell tsim clk reg_a reg_b 0 0 0000 1100 50 0 0000 1100 100 1 1011 0011 150 1 1011 0011 Ellenőrző környezet Verilog fordítás, optimalizálás ás technologiai leképezés xor 0000 0000 0000 0000 Fizikai hálózat modellje tsim clk reg_a reg_b 0 0 0000 1100 50 0 0000 1100 100 1 1011 0011 150 1 1011 0011 A terv funkcionalitása független a reprezentációs modelltől és ennek késleltetéseitől. Az adatváltozások egy órajel ciklus alatt lezajlanak. A két modell kimeneti értékeinek az órajel éleknél meg kell egyezniük. 28

A SZINTÉZIS ELŐNYEI Rövidebb terv megvalósítási idő. Kevesebb kapu szintű hibakeresés szükséges. Hatékony kapu szintű megvalósítás. Egyezés az RTL és kapu szintű leírások között. Könnyebb a terv módosítása, más eszközre váltás. A figyelem a tervezési döntésekre irányulhat. Top-down tervszerkesztés, nyelvi alapú leírással és dokumentációval. 29

SZINTETIZÁLHATÓ FUNKCIONÁLIS ELEMEK KOMBINÁCIÓS Multiplexerek Dekóderek Enkóderek Komparátorok Általános logika Táblázatos függvények Összeadók, kivonók ALUs Szorzók PLA Struktúrák Paritás Generátorok SZEKVENCIÁLIS ELEMEK Adat regiszterek és latch-ek Shift regiszterek Regiszter tömbök Akkumlátorok Párhuzamos/soros konverterek SZEKVENCIÁLIS (SZÁMLÁLÓ ALAPÚ) Bináris számlálók Johnson számlálók BCD számlálók Gray számlálók Kapuzott számlálók Pulzus számlálók Időzítők, órajel generátorok Esemény számlálók Memória cím számlálók FIFO memória címmutatók VEZÉRLŐ LOGIKA Vezérlők (Sequencers or Controllers) Állapotgépek (Finite State Machines) Él-detektorok Szinkronizáló egységek A RAM, ROM, aszinkron FIFO elemekhez speciális modul generátorokat kell használni. 30

A VERILOG HDL LEÍRÓ STÍLUSA A HDL FORRÁS STÍLUSA DÖNTŐEN BEFOLYÁSOLJA A SZINTETIZÁLT HÁLÓZATOT! A TERVEZŐ BEFOLYÁSOLHATJA AZ IDŐZÍTÉST/ÓRAJELEZÉST A TERV HIERARCHIÁJÁT A FIZIKAI REALIZÁCIÓT AZ ELŐRE DEFINIÁLT BLOKKOKAT A VERILOG TEREZŐI STÍLUSAI GYÁRTÓFÜGGŐEK A tervezőnek meg kell ismernie és értenie az eszközbe épített fordítási algoritmusokat, és a kombinációs és szekvenciális logikák megkülönböztetésének alapvető szabályait. Az aszinkron és szinkron viselkedéseknél figyelemmel kell lenni az órajelezésre. Nem minden algoritmusból lehet áramkört szintetizálni. A terület - sebesség mérlegelés az eszköz belső feltételei szerinti. 31

A SZINTÉZEREK NYELVI ESZKÖZKÉSZLETE Modul hivatkozás Név és pozíció szerinti port hozzárendelés input, output, inout port módok macromodule, module parameter TELJESEN TÁMOGATOTT KONSTRUKCIÓK case, casex, casez, endcase default disable function, endfunction if, if... else, if... else... if Résztartományok a hivatkozott változókban Shift, feltételes és összekapcsoló műveleti operátorok Procedurális blokkok (begin end) wire, wand, wor, tri supply0, supply1 task, endtask (Időzítés vagy eseményvezérlés nélkül) Különböző számábrázolások Egész és regiszter típusok Folytonos értékadás Procedurális értékadás Nem-blokkoló értékadás Procedurális-folytonos értékadás 32

A SZINTÉZEREK NYELVI ESZKÖZKÉSZLETE RÉSZBEN TÁMOGATOTT KONSTRUKCIÓK *, /, % Mindkét operandusnak konstansnak, vagy a másodiknak 2 hatványának kell lennie. for A hurokváltozó csak statikus változó lehet. fork... join Az esemény vagy késleltetés vezérlés nem lehet nagyobb, mint az órajel periódus. <= Egy viselkedési blokkon belül a blokkoló és nem-blokkoló típusú értékadások nem keverhetők. and, nand, &&, Esetleg az explicit x vagy z konstrukciók nem használhatóak a primitivekben vagy operátorokban. 33

A SZINTÉZEREK NYELVI ESZKÖZKÉSZLETE ELHANYAGOLT (FIGYELEMBE NEM VETT) KONSTRUKCIÓK Értékadáson belüli késleltetés vagy eseményvezérlések scalared, vectored small, medium, large specify... endspecify $time weak1, weak0, high0, high1, pull0, pull1 $keyword wait 34

A SZINTÉZEREK NYELVI ESZKÖZKÉSZLETE NEM TÁMOGATOTT KONSTRUKCIÓK (Gyártó függő!!!!) Értékadások a baloldalon bit- vagy résztartománnyal Globális változók ===,!== cmos, rcmos, rnmos, nmos, pmos, rpmos tran, tranif0, tranif1, rtran, rtranif0, rtranif1 deassign (Kombinációs esetekre) defparam event force fork, join forever, while initial pulldown, pullup release repeat 35

KOMBINÁCIÓS LOGIKA SZINTÉZISE Logikai bemenetek(t) Kombinációs logika Logikai kimenetek(t) Logikai_kimenetek(t) = f(logikai_bemenetek(t)) SZABÁLYOK Kerüljük el a technológiafüggő modelleket, a funkcionalitást modellezzük, ne az időzítést. A kombinációs logika nem tartalmazhat visszacsatolást. A kombinációs viselkedési blokkokban specifikáljuk a kimenetet minden lehetséges bemenet esetére Minden nem tisztán kombinációs viselkedésből a szintézer szekvenciális logikát készít. 36

KOMBINÁCIÓS LOGIKA SZINTÉZISE Logikai bemenetek(t) Kombinációs logika Logikai kimenetek(t) Logikai_kimenetek(t) = f(logikai_bemenetek(t)) LEÍRÁSI STÍLUSOK Verilog primitívek és kapuk strukturális huzalozási listája. Kombinációs UDP Függvények Folytonos értékadás Viselkedési utasítások Taszkok időzítés és eseményvez. nélkül. Fentiek összekapcsolt moduljai. 37

KOMBINÁCIÓS LOGIKA SZINTÉZISE PÉLDA - PRIMITÍVEK HUZALOZÁSI LISTÁJA (STRUKTURÁLIS) x1 x2 enable x3 x4 w1 w2 y module or_nand_1 (enable, x1, x2, x3, x4, y); input enable, x1, x2, x3, x4; output y; // Belső vezetékeket nem kell deklarálni or (w1, x1, x2); or (w2, x3, x4); nand (y, w1, w2, enable); endmodule 38

KOMBINÁCIÓS LOGIKA SZINTÉZISE PÉLDA - FOLYTONOS ÉRTÉKADÁS x1 x2 enable x3 x4 w1 w2 y module or_nand_2 (enable, x1, x2, x3, x4, y); input enable, x1, x2, x3, x4; output y; assign y =!(enable & (x1 x2) & (x3 x4)); endmodule 39

KOMBINÁCIÓS LOGIKA SZINTÉZISE PÉLDA - PROCEDURÁLIS UTASÍTÁS (1) module or_nand_3 (enable, x1, x2, x3, x4, y); input enable, x1, x2, x3, x4; output y; reg y; always @ (enable or x1 or x2 or x3 or x4) if (enable) y =!((x1 x2) & (x3 x4)); else y = 1; // konstans operandus. endmodule FIGYELEM: Az eseményvezérlő kifejezésben minden bemenetet fel kell sorolni, különben a szintézer beépít egy latch tárolót. MEGJEGYZÉS: Az eseményvezérlő kifejezés önmagában még nem jelenti regiszter vagy órajel szintézisét. 40

KOMBINÁCIÓS LOGIKA SZINTÉZISE PÉLDA - PROCEDURÁLIS UTASÍTÁS (2) module and4_behav (y_out, x_in); input [3:0] x_in; output y_out; reg temp; integer k; assign y_out = temp; always @ (x_in) begin: check_for_0 temp = 1; for (k = 0; k <= 3; k = k+1) if (x_in[k] == 0) begin temp=0; disable check_for_0; end end endmodule MEGJEGYZÉS: A deklarált 'reg' típuső változó nem feltétlenül eredményez egy tároló elemet a szintetizált hálózatban. 41

KOMBINÁCIÓS LOGIKA VISELKEDÉSI LEÍRÁSA module comparator (a, b, a_gt_b, a_lt_b, a_eq_b); // Iteratív algoritmus parameter size = 8; input [size-1: 0] a, b; output a_gt_b, a_lt_b, a_eq_b; reg a_gt_b, a_lt_b, a_eq_b; always @ (a or b) begin: compare_loop for (k = size 1; k >= 0; k = k-1) begin if (a[k]!= b[k]) begin a_gt_b = a[k]; a_lt_b = ~a[k]; a_eq_b = 0; disable compare_loop; end // if szerkezet end // for hurok szerkezet a_gt_b = 0; a_lt_b = 0; a_eq_b = 1; end // compare_loop blokk endmodule // Az a és b értéke azonos, ha // bitjeik megegyeznek. // Egyébként az első nagyobb // helyiértékű biten lévő eltérés // meghatározza az eredményt 42

A KOMBINÁCIÓS LOGIKA SZINTÉZISÉNÉL ELKERÜLENDŐ KONSTRUKCIÓK Többszörös eseményvezérlés egyetlen viselkedési blokkon belül Nevesített események Visszacsatolt hurkok Esemény vagy késleltetés vezérlést tartalmazó procedurális, folytonos értékadások. fork... join blokkok wait utasítások Külső disable utasítások Procedurális hurkok időzítésse Adat függő hurkok Taszkok időzítés vezérléssel Szekvenciális UDP-k 43

A SZINTÉZIS - SZIMULÁCIÓ HATÉKONYSÁG OPTIMALIZÁLÁSA PÉLDA - MÓDOSÍTOTT ÉRZÉKENYSÉGI LISTA module or_nand_4 (enable, x1, x2, x3, x4, y); input enable, x1, x2, x3, x4; output y; reg y; always @ (enable) if (enable) assign y =!((x1 x2) & (x3 x4)); else assign y = 1; // konstans operandus endmodule MEGJEGYZÉS: A procedurális-folytonos értékadás csökkenti az always blokk érzékenységi listájának hosszát, továbbá javítja a szimulációs hatékonyságot az assign érzékenységi listájának dinamicus változtatásával. MEGJEGYZÉS: Az assign értékadásokat itt a deassign nélkül használtuk, így megvalósított kötés fennmarad, amíg más értékadás azt felül nem írja. 44

MULTIPLEXEREK SZINTÉZISE LEHETŐSÉGEK FELHASZNÁLÓI PRIMITÍV assign / FELTÉTELES OPERÁTOR VISELKEDÉSI BLOKK case SZERKEZETTEL, PROCEDURÁLIS FOLYTONOS ÉRTÉKADÁSSAL (PCA) VISELKEDÉSI BLOKK if... else SZERKEZETTEL, PROCEDURÁLIS FOLYTONOS ÉRTÉKADÁSSAL (PCA) 45

MULTIPLEXER PÉLDÁK assign / conditional case / PCA if... else / PCA module syn1_mux_4bits (y, a, b, c, d, sel); input [3:0] a, b, c, d; input [1:0] sel; output [3:0] y; module syn2_mux_4bits (y, a, b, c, d, sel); input [3:0] a, b, c, d; input [1:0] sel output [3:0] y; reg [3:0] y; module syn3_mux_4bits (y, a, b, c, d, sel); input [3:0] a, b, c, d; input [1:0] sel; output [3:0] y; reg [3:0] y; assign y = (sel == 0)? a : (sel == 1)? b : (sel == 2)? c : (sel == 3)? d : 4 bx; endmodule always @ (sel) case (sel) 0: assign y = a; 1: assign y = b; 2: assign y = c; 3: assign y = d; always @ (sel) if (sel == 0) assign y = a; else if (sel == 1) assign y = b; else if (sel == 2) default assign y = 4'bx; assign y = c; endcase else if (sel == 3) endmodule assign y = d; else assign y = 4 bx; endmodule A case utasítás minden ága azonos precedenciájú, a case alapvetően egy multiplexer architectura. 46

MULTIPLEXER PÉLDÁK module mux4ch (y, a, b, c, d, sel); input a, b, c, d; input [1:0] sel output y; reg y; sel[1:0] sel[0] always @ (sel) case (sel) 0: assign y = a; 1: assign y = b; 2: assign y = c; 3: assign y = d; default assign y = 4'bx; endcase endmodule c d a b sel[1] y Bármely változás a sel bemeneten, egy új jelet rendel az y kimenethez. 47

AZ 'if' UTASÍTÁS SZINTÉZISE PÉLDA module mux_2 (y, sig_a, sig_b, select); input sig_a, sig_b; input select; output y; reg y; always @ (sig_a or sig_b or select) begin if (select == 0) y = sig_a; else y = sig_b; end; endmodule sig_a sig_b select mux_2 y A SZINTÉZIS EREDMÉNYE: MULTIPLEXER 48

MUXLTIPLEXER VEZÉRLŐ LOGIKÁVAL assign sig_out = (select == 1) (sig_g == 1) (sig_max == 0))? sig_a : sig_b; A SZINTÉZIS EREDMÉNYE: Multiplexer vezérlő logikával. sig_g select sig_max sig_b sig_a sig_out 49

MULTIPLEXER ADATÚT ELEMEKKEL assign sum = (select)? data_c + data_d : data_a + data_b; A SZINTÉZIS EREDMÉNYE: Összeadó multiplexelt adatúttal. select data_a data_c mux_2 data_b Add y data_d mux_2 Megjegyzés: Elképzelhető egy kevésbé hatékony alternatíva is! 50

AZ 'if' UTASÍTÁS ÉS A PRIORITÁS KEZELÉSE MEGJEGYZÉS: Az 'if' utasítások feltételei az ugrások végrehajtása során prioritásokat is jelentenek. PÉLDA module mux_4pri (y, a, b, c, d, sel_a, sel_b, sel_c); input a, b, c, d, sel_a, sel_b, sel_c; output y; reg y; always @ (sel_a or sel_b or sel_c or a or b or c or d) begin if (sel_a == 1) y = a; else if (sel_b == 0) y = b; else if (sel_c == 1) y = c; else y = d; end endmodule sel_a sel_b sel_c d c b a mux_2 mux_2 mux_2 A SZINTÉZIS EREDMÉNYE: Kaszkádosított multiplexerek vagy ennek megfelelő kapuk. 51

A KOMBINÁCIÓS LOGIKA SZINTÉZISÉNEK FELTÉTELEI A viselkedési blokk minden bemeneti jele explicit vagy implicit módon szerepeljen az eseményvezérlő kifejezésben. Bemenetek az értékadások jobb oldalán álló operandusok, és bármilyen olyan vezérlőjel, amely az értékadás baloldalán lévő vátozókra hatással van. Az eseményvezérlő kifejezésnek a viselkedési leírás elején explicit (@(enable, sel, a, b)) vagy implicit (@ enable) módon minden vezérlőjelet tartalmaznia kell, ami a baloldalt befolyásolja. Azok a jelek, amelyek a prodecedurális értékadás jobb oldalán operandusként szerepelnek, nem fordulhatnak elő az értékadás baloldalán (a visszacsatolás tiltott). A kombinációs logika szintézise szempontjából a procedurális folytonos értékadás (PCA) a kedvezőbb. (A PCA dinamikus kötéseket valósít meg.) A nem teljesen specifikált feltételes kifejezések, (case,?:, if) ill. utasítások nem kívánt latch tárolók szintéziséhez vezetnek, ami már nem kombinációs logika. Függvényekben a nem teljesen specifikált (case,?:, if) feltételes utasítás nem megengedett. 52

AZ ESEMÉNYVEZÉRLŐ KIFEJEZÉS JAVASOLT STÍLUSA always @ (opcode or a or b) case (opcode) 3'b111: out_i = a & b; 3'b011: out_i = a b; 3'b001: out_i = a^b; default: out_i = 2'bx; endcase // Less efficient. always @ (opcode) case (opcode) 3'b111; assign out_i = a & b; 3'b011: assign out_i = a b; 3'b001: assign out_i = a^b; default: assign out_i = 2'bx; endcase // Preferred Megjegyzés: a és b implicit módon jelenik meg az esemény vezérlő kifejezésben. MEGJEGYZÉS: Ne keverjük a PCA és a procedurális értékadást ugyanazon változóra. MEGJEGYZÉS: A kombinációs logikát modellező viselkedési leírásnak, blokknak eseményvezérlő kifejezést mindenképpen kell tartalmaznia. 53

PÉLDA NEM TELJES 'case' UTASÍTÁSRA always @( sel_a or sel_b or data_a or data_b) case ({sel_a, sel_b}) 2'b10: y_out = data_a; 2'b01: y_out = data_b; endcase A megvalósítás egy latch-et tartalmaz, amelyet nem az eseményvezérlő kifejezés, hanem a case kifejezés két kiválasztott kombinációja engedélyez csak. data_b sel_a sel_b data_a En Latch y_out A latch engedélyezése a case két feltételének ({sel_a, sel_b} == 2'b10) és ({sel_a, sel_b} == 2'b01) VAGY kapcsolatából származik. 54

NEM TELJES FELTÉTELES 'if' UTASÍTÁS module incomplete_and (y, a1, a2); input a1, a2; output y; reg y; always @ (a1 or a2) begin if (a1 && a2) y = 1; end endmodule MEGJEGYZÉS: Az eredmény az első teljesülés után konstans y=1. 55

A DEFAULT ÉRTÉKEK KEZELÉSE A tisztán kombinációs case utasításokban a szimuláció és szintézis eredménye azonos lesz, ha a default értékadások 0 vagy 1 értékekre vonatkoznak. A szimuláció eredménye eltérő lehet, ha a default értékadás 'x' értéket használ. A casex és casez utasítások normál case utasításokra konvertálódnak és a "don t care" bitek az összehasonlításban nem szerepelnek. Az elsődleges bemeneteken keletkező "don t care" feltételek a szintézis során érvényesek maradnak. 56

LOGIKAI KAPUK SZINTÉZISE A logikai kapukkal definiált hálózatokat logikai egyenletekre fordítja. A logikai egyenleteket optimalizálja. Az optimalizált logikai egyenleteket a könyvtári cellákkal realizálja. A komplex viselkedési funkciók, melyeket kapukkal modelleztünk, nem helyettesítődnek komplex könyvtári modulokkal (pl. összeadó, szorzó) A felhasználói interfész megengedi a kapu szintű modellek megőrzését a szintézis során. 57

PÉLDA A LOGIKAI OPTIMALIZÁCIÓRA module boole_opt (y_out1, y_out2, a, b, c, d, e); input a, b, c, d, e; output y_out1, y_out2; and (y1, a, c); and (y2, a, d); and (y3, a, e); or (y4, y1, y2); or (y_out1, y3, y4); and (y5, b, c); and (y6, b, d); and (y7, b, e); or (y8, y5, y6); or (y_out2, y7, y8); endmodule 58

OPTIMALIZÁLÁS ELŐTTI KAPU SZINTŰ MODELL e a y_out1 y_out2 b c d 59

OPTIMALIZÁLT ÉS KAPUKKAL REALIZÁLT VERZIÓ c d e y_out1 a b y_out2 60

KOMBINÁCIÓS FELHASZNÁLÓ ÁLTAL DEFINIÁLT PRIMITÍV SZINTÉZISE Minden kombinációs UDP szintetizálható. A táblázatok előírásait logikai egyenletekké alakítja, optimalizálja és leképezi a könyvtári cellákra. A szintézis eszközök elhanyagolják az 'x' táblázat bejegyzéseket (pesszimista feltételezés) A '?' táblázat bejegyzéseket don t care -ként kezeli és ezt az optimalizálás során ki is használja. A szintézis utáni szimuláció eredménye eltérő lehet a szintézis előtti szimuláció eredményétől. 61

PÉLDA UDP SZINTÉZISE primitive boolean_eqs (y, a, b, c, d); output y; input a, b, c, d; table // Inputs Output // a b c d y 0 0 0 0 : 0 ; 0 0 1 0 : 0 ; 0 0 0 1 : 1 ; 0 1 0 0 : 0 ; 1 1 0 0 : 1 ; 1 0 1 0 : 1 ; 1 0 0 1 : 0 ; endtable endprimitive a b c d Combinational UDP y 62

PÉLDA ENKÓDER SZINTÉZISÉRE module encoder (Data, Code); 8 3 input [7:0] Data; Data[7:0] encoder Code[2:0] output [2:0] Code; reg [2:0] Code; always @ (Data) begin if (Data == 8 b00000001) Code = 0; else if (Data == 8 b00000010) Code = 1; else if (Data == 8 b00000100) Code = 2; else if (Data == 8 b00001000) Code = 3; else if (Data == 8 b00010000) Code = 4; else if (Data == 8 b00100000) Code = 5; else if (Data == 8 b01000000) Code = 6; else if (Data == 8 b10000000) Code = 7; else always @ (Data) case (Data) 8 b00000001 : Code = 0; 8 b00000010 : Code = 1; 8 b00000100 : Code = 2; 8 b00001000 : Code = 3; 8 b00010000 : Code = 4; 8 b00100000 : Code = 5; 8 b01000000 : Code = 6; 8 b10000000 : Code = 7; Code = 3 bx; default : Code = 3 bx; end endmodule endcase endmodule FELTÉTELEZÉS: A működés során csak a jelzett szavak fordulnak elő. A default értékadás ezért kötelező, a nem kívánt extra latch-ek szintézisét akadályozza meg. A szintézis során ezek "don t care" bejegyzésekként kezelődnek. 63

PÉLDA PRIORITÁS ENKÓDER SZINTÉZISÉRE module priority (Data, Code, valid_data); input [7:0] Data; output [2:0] Code; output valid_data; reg [2:0] Code; assign valid_data = Data; // red. VAGY Data[7:0] 8 priority 3 Code[2:0] valid_data always @ (Data) begin if (Data[7]) Code = 7; else if (Data[6]) Code = 6; else if (Data[5]) Code = 5; else if (Data[4]) Code = 4; else if (Data[3]) Code = 3; else if (Data[2]) Code = 2; else if (Data[1]) Code = 1; else if (Data[0]) Code = 0; else Code = 3 bx; end endmodule always @ (Data) casex (Data) 8 b1xxxxxxx : Code = 7; 8 b01xxxxxx : Code = 6; 8 b001xxxxx : Code = 5; 8 b0001xxxx : Code = 4; 8 b00001xxx : Code = 3; 8 b000001xx : Code = 2; 8 b0000001x : Code = 1; 8 b00000001 : Code = 0; default : Code = 3 bx; endcase endmodule 64

PÉLDA DEKÓDER SZINTÉZISÉRE module decoder (Code, Data); output [7:0] Data; input [2:0] Code; reg [7:0] Data; Code[2:0] 3 decoder 8 Data[7:0] always @ (Code) begin if (Code == 0) Data = 8 b00000001; else if (Code == 1) Data = 8 b00000010; else if (Code == 2) Data = 8 b00000100; else if (Code == 3) Data = 8 b00001000; else if (Code == 4) Data = 8 b00010000; else if (Code == 5) Data = 8 b00100000; else if (Code == 6) Data = 8 b01000000; else if (Code == 7) Data = 8 b10000000; else Data = 8 bx; end endmodule always @ (Code) case (Code) 0 : Data = 8 b00000001; 1 : Data = 8 b00000010; 2 : Data = 8 b00000100; 3 : Data = 8 b00001000; 4 : Data = 8 b00010000; 5 : Data = 8 b00100000; 6 : Data = 8 b01000000; 7 : Data = 8 b10000000; default: Data = 8 bx; endcase endmodule 65

ÖSSZEADÓK SZINTÉZISE A kapukkal modellezett összeadókat (tehát a hierarchikus modulokból és primitívekből felépített egységeket) az eszközök nem szintetizálják a könyvtári összeadó cellákra. A megfelelő művelettel definiált összeadókat, kivonókat és komparátorokat a szintézerek a könyvtári elemek komplex celláira képezi le. assign accum_out = data_a + accum; Ha a könyvtár nem tartalmaz összeadót vagy kivonót, az eszköz generálja a megfelelő logikai egyenleteket. 66

ÖSSZEADÓK SZINTÉZISE module adder_9 (add_out, add_a_in, add_b_in); input [8:0] add_a_in, add_b_in; output [9:0] add_out; assign add_out = add_a_in + add_b_in; endmodule 67

ERŐFORRÁS MEGOSZTÁS Az erőforrások a feltételes operátorok egymást kölcsönösen kizáró ágai között megoszthatók. Az erőforrás megosztás opcióként vezérelhető a felhasználói interfészen keresztül (pl. complex operator constraint ) PÉLDA - MEGOSZTÁS assign y_out = sel? data_a + accum : data_a + data_b; A szintézis eredménye multiplexelt adat utak és megosztott összeadó. Megosztás nélkül két összeadót generálnak az eszközök. 68