Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

MIKROELEKTRONIKA, VIEEA306

Hasonló előadás


Az előadások a következő témára: "MIKROELEKTRONIKA, VIEEA306"— Előadás másolata:

1 MIKROELEKTRONIKA, VIEEA306
Tervezés FPGA-ra, Verilog, SystemC

2 Tervezés FPGA-ra IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

3 Standard cellás IC költségei
Teljes Si technológia költségeit meg kell fizetni teljes maszk készlet legyártandó (NRE költség) Si-megmunkálás költségei teljes egészében jelentkeznek; költség arányos a felhasznált Si felülettel Tokozási költségek arányos az IC kivezetéseinek a számával függ a tokozás bonyolultságától Tesztelési költségek szelet szintű tesztelés – költsége jellemzően a szelet költségének részeként jelenik meg MPW szolgáltatók pl. tesztelt szeleteket adnak small volume production esetén végső tesztelés költsége – csökkenthető a tesztelhetőre tervezéssel, lásd később IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

4 Másik példa: FPGA-s megvalósítás
Alapgondolat: a gate array alapötletét megtartjuk, de az összeköttetéseket nem fotomaszkkal programozzuk – nem egy fémezésmintázat definiálja azokat (NRE költség erős csökkentése) alapelem: logic array block Helyette: az összeköttetési hálózat architektúrája is előre ki van alakítva, a kapcsolatokat programozzuk biztosíték kiégetéses technika – helyesebben az ún. antifuse eljárás (szakadásból kisellenállású összeköttetés) kapcsolatok tárolása SRAM-ban Előre kialakított I/O áramkörök Mai fejlett FPGA-k bonyolultabb blokkokat is tartalmaznak (RAM, DSP blokk,...) IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

5 Példa az Altera-tól: Stratix
IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

6 Altera Stratix IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

7 Pl.: Xilinx Virtex-5 65-nm CMOS technológia 12 rétegű fémezés
1.0V core feszültség 36-Kbit block RAM/FIFO 1.2 to 3.3V I/O Operation RocketIO GTP transceiver-ek 100 Mb/s Gb/s PCI Express Endpoint blokkok 10/100/1000 Mb/s Ethernet On-chip hőmérséklet monitoring On-chip power supply monitoring IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

8 FPGA-s tervezés folyamata
Rendszerszintű leírás Specifikáció SystemC-ben HW-SW co-design Rendszer szimuláció Rendszer szintű tervezés Magasszintű szintézis időzítési paraméterek Absztrakciós szint: Reprezentáció: Szimulátor: Viselkedési leírás Specifikáció VHDL-ben vagy Verilog-ban Funkcionális tesztelés Struktúrális/logikai leírás VHDL-ben vagy Verilog-ban Logikai szimuláció Mapping és layoutgenerálás Logikai tervezés Fizikai terv (layout) Időzítési adatok kinyerése Tranzisztor szintű tervezés A tervezési munka itt koncentrálódik Ez kimarad, az összeköttetéseket reprezentáló programkód készül IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

9 Programozás – FPGAs tervezés
Szoftver FPGA hardver Programozási nyelv Fordító Object file-ok Linker Futtatható állomány HDL Szintézis "Elhelyezés és huzalozás" Netlist Bitfile IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

10 VHDL mintapélda IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

11 Verilog mintapélda IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

12 Szintézis Netlist HDL RTL 2009-11-24
IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

13 Hardver leíró nyelvek Áttekintés Verilog Röviden a SystemC-ről
IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

14 Hardver leíró nyelvek kialakulása
A 80-as évekre olyan bonyolulttá váltak a digitális áramkörök, hogy tranzisztor, illetve kapu szinten már nem voltak áttekinthetőek Szükség volt egy olyan eszközre, amellyel gyorsan és hatékonyan lehet fejleszteni és tesztelni a terveket A megoldás programnyelvek formájában érkezett (Verilog, VHDL, ABEL, stb.) Ezek speciális nyelvek, amelyek fel vannak készítve a hardvertervezés igényeire IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

15 A Verilog története A Gateway Design Automation cég fejlesztette ki 1984-ben (Verilog-XL szimulátor) Ezt a céget felvásárolta a Cadence Design Systems, majd 1990-ben nyilvánossá tette a nyelvet, hogy az elterjedjen; ennek hatására de facto szabvánnyá vált A szabványosítás 1995-ben történt meg az Open Verilog International (OVI – másnéven Accelera) szervezet kezelésében – ekkor vált de jure szabvánnyá 2001-ben bővült a szabvány: Verilog-2001 IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

16 A HDL-ek jellemzői Speciális programnyelvek
Modellezik, ábrázolják, szimulálják a digitális hardvert Képesek a konkurrens működés leírására (párhuzamosság) Követik a jelek időbeli változását, ismerik a hardver-specifikus jelszinteket Biztosítják a különböző digitális modellek egyszerű megvalósítását (kombinációs, szinkron/aszinkron sorrendi hálózatok) Támogatják a moduláris tervezést IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

17 A HDL-ek előnyei Támogatják a struktúrált tervezési módszereket
Rugalmasan particionálhatóak a projektek A nyelvi leírás alapján a kapcsolási rajz generálható, ha szükséges Magas szintű absztrakció lehetőségét biztosítják Lehetővé teszik alternatívák egyszerű összehasonlítását Módosítások gyorsan végrehajthatók Javítják a hatékonyságot és minőséget  nagyobb tervezői produktivitás Gyors prototípus – kihasználja a szintézis eszközöket IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

18 Hierarchikus építkezés elemekből 1
Verilogban modulokat definiálunk Ezek be- és kimenetekkel rendelkező áramkörrészletek Pl: module AND(inA, inB, q); input inA, inB; output q; endmodule A inA q inB IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

19 Hierarchikus építkezés elemekből 2
A modulokból tetszőleges számú példányt hozhatunk létre – példányosítás: module Osszetett(in, out); input [3:0] in; output [1:0] out; AND a1(in[0], in[1], out[0]); AND a2(in[2], in[3], out[1]); endmodule 4 bites bemenet 2 bites kimenet Példányosítandó modul neve A példány egyedi neve Portkapcsolati lista Az egyes bitek kiválasztása az indexelő operátor ([ ]) segítségével történik IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

20 Hierarchikus építkezés elemekből 3
module Osszetett module AND a1 in[0] inA out[0] q in[1] inB in [3:0] out [1:0] module AND a2 inA in[2] q out[1] in[3] inB IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

21 Vezetékek a Verilogban
Vezeték: legegyszerűbb áramköri elem (wire) Folyamatosan vezérelni kell, hiszen nincsen memóriája Ez kétféleképp tehető meg: Folyamatos értékadás (continuous assignment): A kombinációs hálózat egy modellje Az értékadás jobb oldalán az értékeket folyamatosan figyeljük és ha változás történik, azonnal frissítjük a kapu értékeket Egy regiszter kimenetére kötjük: A regiszterek megjegyzik a nekik adott értékeket (ld. később), így képesek folyamatosan értéket szolgáltatni a kimenetükre kötött vezetékeknek IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

22 Folyamatos értékadás Az assign kulcsszó segítségével történik
A korábbi AND kapu megvalósítása: module (inA, inB, q); input inA, inB; output q; assign q = inA & inB; endmodule; IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

23 Vezetékek létrehozása
Ha másként nem rendelkezünk, a modulok be- és kimenetei vezetékek lesznek A wire kulcsszó segítségével hozhatunk létre további vezetékeket Például egy egybites vezeték és egy nyolcbites busz: wire vezetek; wire [7:0] busz; IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

24 Regiszterek Egybites memóriák
Csak valamilyen esemény hatására kaphatnak értéket (pl. órajel felfutó éle) Az értéküket őrzik, amíg újat nem kapnak Létrehozásuk: a reg kulcsszó segítségével reg q; reg [3:0] counter; IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

25 Esményvezérelt értékadás 1
Regisztereknek egy adott esemény hatására egy always blokkban tudunk értéket adni: wire clk; reg counter; clk) begin counter = counter + 1; end jel után következik az esemény A clk vezetéken történő felfutó él hatására lesz végrehajtva a blokk belseje Az utasítás blokkokat a begin és end kulcsszavak fogják közre IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

26 Esményvezérelt értékadás 2
Az always blokkok fejrészében lévő feltétel(eke)t a rendszer folyamatosan figyeli és teljesülésükkor végrehajtja a bennük lévő utasításblokkot Egy alwayson belül csak regiszter típusú változónak adhatunk értéket (bizonyos esetekben egy ilyen regisztert a szintézer vezetékké is alakíthat) Az egy modulon belül lévő always blokkok egymással párhuzamosan futnak Létezik feltétel nélküli always blokk is, ami folyamatosan végrehajtódik IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

27 Egy összetettebb példa: számláló
module szamlalo(clk, reset, q); input clk, reset; output reg [7:0] q; clk) begin if (reset == 1) q = 0; else q = q + 1; end endmodule A kimenet egyben egy regiszter (8 bites) Szinkron reset van, hiszen a reset jel csak az órajel felfutó élére jut érvényre Fontos: különbség van logikai egyenlőségvizs-gálat és értékadás között! A feltételes elágazás (if-else) pontosan úgy működik, mint más nyelvekben (pl. C) IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

28 Tesztelés A tesztelés is a nyelv eszközeivel történik
Létrehozunk egy modult, aminek nincsenek portjai Ezen belül példányosítjuk a tesztelendő modulokat A modulokat vezetékekkel összekapcsoljuk A bemenetekhez definiálunk regisztereket, ezek segítségével állítjuk elő a tesztszekvenciát Egy nem ismétlődő tesztszekvenciát az initial blokk segítségével tudunk létrehozni A kimeneteken lévő vezetékek értékeit figyeljük IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

29 Aperiodikus tesztjelek előállítása
Az initial blokk végrehajtása a szimuláció elején kezdődik Ha a végére érünk, akkor befejeződik a szimuláció Csak regisztereknek adhatunk értéket benne reg in; initial begin in = 0; #5 in = 1; end Ez öt szimulációs időegységnyi késleltetést jelent Így lehet időzíteni a változásokat egy tesztszekven-ciában Ilyen késleltetés nem helyezhető el olyan modul-ban, amit szintetizálni szeretnénk IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

30 Periodikus tesztjelek előállítása
Periodikus tesztjeleket feltételrész nélküli always blokkokban állíthatunk elő; azonban kezdeti értéket kell adni egy initial blokkban Például egy két időegységnyi periódushosszú, 50%-os kitöltési tényezőjű négyszögjel (órajel): initial clk = 0; always begin #1 clk = ~clk; end Egy időegységenként invertálja a clk regiszter értékét IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

31 Példa: a számláló tesztelése
module teszt; reg clk, reset; wire [7:0] q; szamlalo sz1(clk, reset, q); initial begin clk = 0; reset = 0; #2 reset = 1; #2 reset = 0; end always #1 clk = ~clk; endmodule IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

32 Speciális operátorok 1 Bit-eltoló operátorok (<<, >>):
Úgy működnek, mint a C nyelvben Fel lehet őket használni demultiplexer készítésére: module demux(in, addr, out); input in; input [2:0] addr; output [7:0] out; assign out = in << addr; endmodule Az addr bemeneten lévő számnak megfelelő mértékben toljuk el a bementi bitet. IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

33 Speciális operátorok 2 Bit-összefűző operátor ({}):
Egy bitmintát lehet összeállítani egyes bitekből, vagy bitsorozatokból Vesszővel elválasztva kell megadni az egyes részeket Segítségével lehet például egy regiszter bitjeit körbefor-gatni: reg [7:0] rx; always begin #1 rx = {rx[6:0], rx[7]}; end Felülre helyezzük az alsó 7 bitet, utána pedig a legfelső bitet. IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

34 & Speciális operátorok 3 Redukciós operátorok:
Sokbemenetű logikai kapu leírását egyszerűsítik A logikai operátorok egy operandusos változatát egy változó elé írva, annak összes bitjére hajtja végre a műveletet: wire [3:0] in; wire q; q = &in; & in[0] q in[1] in[2] in[3] IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

35 A Verilog-2001 új lehetőségei 1
Összevont port deklaráció: A nyelv korábbi verzióiban a portoknál külön utasítással kellett megadni, ha regisztert szerettünk volna egy kimenetre tenni A Verilog-2001-ben: module m(in, out); input [7:0] in; output reg [2:0] out; endmodule IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

36 A Verilog-2001 új lehetőségei 2
Port deklaráció a portlistában: A Verilog-2001-ben a portok már közvetlenül a portlistában is szerepelhetnek: module m(input [7:0] in, output reg [2:0] out); endmodule IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

37 A Verilog-2001 új lehetőségei 3
Skálázható modulok – hardvergenerálás 1: Probléma: Sokat kell példányosítani ugyanabból a modulból Egy modul sok, egymáshoz hasonló elemből épül fel Ezekben az esetekben nagyon sok gépelésre lenne szükség (időigényes, hibalehetőslegeket rejt magában) A VHDL-ben régóta létezett: paraméteres hardvergenerálás – ezt átvette a Verilog is A generate kulcsszó segítségével egy ciklusban, paraméteresen lehet létrehozni hardverelemeket IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

38 A Verilog-2001 új lehetőségei 4
Skálázható modulok – hardvergenerálás 2: module myMod(input a, input b, output q); ... module generator(input [7:0] a, input [7:0] b, output [7:0] q); genvar i; generate for (i = 0; i < 8; i=i+1) begin : bigMod myMod m(a[i], b[i], q[i]); end endgenerate endmodule A ciklusváltozó 8 darabot példányosítunk a myMod modulból Az összetett modul neve bigMod lesz Az egyes példányokra az m névvel lehet hivatkozni. IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

39 A Verilog-2001 új lehetőségei 5
Skálázható modulok – hardvergenerálás 3: Hivatkozás a példányosított elemekre: bigMod[3].m A példányok sorszáma (0..7) A példányokon belüli modulok nevei (jelen esetben minden példány csak egy modult tartalmazott (a myMod egy-egy példányát)) IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

40 Verilog Irodalom Tanszéki jegyzetek: Jegyzetek:
Jegyzetek: IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

41 Egyéb irányzatok SOC SystemC 2009-11-24
IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

42 Egyéb irányzatok – SoC SoC = System on Chip
Egy teljes rendszer egy chip-es kialakítása digitális rész beágyazott szoftver szükséges analóg interfészek Homogén gyártástechnológia – pl. minden hardver komponens CMOS Magas absztrakciós szinten tervezzük Verilog/VHDL analóg részekhez ezek analóg bővítményei: Verilog-A, VHDL-A Jellemző az IP blokkok használata Hardver-szoftver együttes tervezés: pl. SystemC-vel Ezt 2005-ben szabványosították IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

43 “Intellectual Property”
A Protocol Processor for Wireless IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

44 Hardver-szoftver együttes tervezés
SystemC – a HSCD (hardware-software co-design) jellegzetes eszköze 2005-től IEEE szabvány: IEEE std Cél: HW-SW együttes tervezése szimulációja verifikációja Nem kell várni a beágyazott szoftver tervezésével addig, amíg elkészül a hardver time-to-market csökkenthető A tervezés magas absztrakciós szinten történhet IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

45 Hardver-szoftver együttes tervezés
ESL: Electronic System Level design  HSCD A hardver-szoftver együttes tervezés legfontosabb célja, hogy magas absztrakciós szintű leírással könnyebben átlátható legyen a terv, hibákat gyorsabban meg lehessen találni, optimalizálni lehessen a hardver/szoftver particionálást, csökkenjen a piacra kerülés átfutási ideje, és hogy csökkenjenek a fejlesztési költségek. Ennek egyre terjedő eszköze a SystemC Egy másik variáció: ANSI C használata, pl. Mentor Graphics CatapultC IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

46 A SystemC A SystemC nyelv egy C++ könyvtár és metódus, ami igen hatékonyan használható szoftveres algoritmusok készítésére, hardver architektúrák modellezésére, valamint SoC és rendszer szintű modellek interfészének megvalósítására. A SystemC és a hagyományos C++ fejlesztői környezet használatával rendszer szintű modellek írhatók le, ezek azután gyorsan szimulálhatók és optimalizálhatók. A rendszert leíró modell egy C++ program, ami futtatva ugyanazt a viselkedést produkálja, amit maga a rendszer IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

47 A SystemC komponensei Modul: egy container, ami más modulokat és process-eket foglalhat magában Process: folyamat – egy adott funkcionalitás leírására szolgál Signal: jel – támogatott a 2 (0,1) és 4 (0,1,X,Z) értékű logika is Port: jelek csatlakozó pontja Adattípusok – sokféle típus, különféle szempontok szerint használhatók. Vigyázat – szintetizálhatóság!! Órajel: az idő modellezésére szolgáló spec. jel Szimulációs kernel – lehetővé teszi a gyors (compiled kódú) szimulációt Jelalak-figyelés: VCD (Value Change Dump), WIF (Waveform Intermediate Format) és ISDB (Integrated Signal Data Base) formátumú jelalak-file-ok támogatása IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

48 SystemC példa Közlekedési lámpavezérlő (BAH csomópont) 9 autós,
7 gyalogos lámpa 90 sec-os ciklus 3-féle egység számláló autós lámpa vez. gyalogos lámpa vez. Balotai Péter: Diploma dolgozat, 2007 IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

49 Közlekedési lámpa-vezérlő
Balotai Péter: Diploma dolgozat, 2007 IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008

50 Közlekedési lámpa-vezérlő
// count.h #include "systemc.h" SC_MODULE(count) { //input ports sc_in<bool> clk; sc_in<bool> en; //output ports sc_out<sc_uint<7> > ido; int countval; void countproc(); SC_CTOR(count) SC_METHOD(countproc); countval = 89; sensitive_pos << clk; sensitive << en; } }; //count.cpp #include "count.h" void count::countproc() { if (en == 1) if (countval < 89) countval++; } else countval = 0; } else countval = 0x7f; ido = countval; IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 2008


Letölteni ppt "MIKROELEKTRONIKA, VIEEA306"

Hasonló előadás


Google Hirdetések