Budapesti Műszaki és Gazdaságtudományi Egyetem MIKROELEKTRONIKA, VIEEA306 Tervezés FPGA-ra, Verilog, SystemC http://www.eet.bme.hu/~poppe/miel/hu/18-ictervezes3.ppt http://www.eet.bme.hu
Tervezés FPGA-ra 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 2
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 3
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,...) 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 4
Példa az Altera-tól: Stratix 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 5
Altera Stratix 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 6
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.. 3.2 Gb/s PCI Express Endpoint blokkok 10/100/1000 Mb/s Ethernet On-chip hőmérséklet monitoring On-chip power supply monitoring 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 7
FPGA-s tervezés folyamata Szimulátor: Rendszer szimuláció Funkcionális tesztelés Reprezentáció: Rendszerszintű leírás Specifikáció SystemC-ben HW-SW co-design Viselkedési leírás Specifikáció VHDL-ben vagy Verilog-ban Absztrakciós szint: Rendszer szintű tervezés A tervezési munka itt koncentrálódik Magasszintű szintézis Logikai szimuláció Struktúrális/logikai leírás VHDL-ben vagy Verilog-ban Logikai tervezés időzítési paraméterek Időzítési adatok kinyerése Mapping és layoutgenerálás Fizikai terv (layout) Ez kimarad, az Tranzisztor szintű összeköttetéseket tervezés reprezentáló programkód készül 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 8
Programozás FPGAs tervezés Szoftver FPGA hardver Programozási nyelv HDL Fordító Szintézis Object file-ok Netlist Linker "Elhelyezés és huzalozás" Futtatható állomány Bitfile 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 9
VHDL mintapélda 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 10
Verilog mintapélda 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 11
Szintézis Netlist HDL RTL 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 12
Hardver leíró nyelvek Áttekintés Verilog Röviden a SystemC-ről 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 13
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 14
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 15
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 hardverspecifikus 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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 16
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 17
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; ina endmodule inb A q 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 18
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; Példányosítandó modul neve A példány egyedi neve 4 bites bemenet 2 bites kimenet AND a1(in[0], in[1], out[0]); AND a2(in[2], in[3], out[1]); endmodule Az egyes bitek kiválasztása az indexelő operátor ([ ]) segítségével történik Portkapcsolati lista 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 19
Hierarchikus építkezés elemekből 3 module Osszetett module AND in[0] ina a1 out[0] q in[1] inb in [3:0] out [1:0] in[2] in[3] module AND a2 ina q out[1] inb 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 20
Verilog Irodalom Tanszéki jegyzetek: www.eet.bme.hu/~nagyg/verilog.pdf www.eet.bme.hu/~gaertner/segedanyagok/lxverifs.doc Jegyzetek: www.doulos.com/knowhow/verilog_designers_guide/ www.verilog.net/docs.html www.asic-world.com/verilog/index.htm www.ee.lsu.edu/v/refcard.pdf 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 40
Egyéb irányzatok SOC SystemC 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 41
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 42
Intellectual Property A Protocol Processor for Wireless 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 43
Hardver-szoftver együttes tervezés SystemC a HSCD (hardware-software co-design) jellegzetes eszköze 2005-től IEEE szabvány: IEEE std-1666-2005 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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 44
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 45
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 46
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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 47
Budapesti Műszaki és Gazdaságtudomanyi Egyetem 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 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 48
Közlekedési lámpa-vezérlő Balotai Péter: Diploma dolgozat, 2007 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 49
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; } 2009-11-24 IC tervezés 3 Poppe András Nagy Gergely, BME-EET 2008 50