![Page 1: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/1.jpg)
Načrtovanje digitalnih
elektronskih sistemov
Visokonivojska sinteza vezja
Univerza v Ljubljani
Fakulteta za elektrotehniko Laboratorij za načrtovanje integriranih vezij
![Page 2: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/2.jpg)
Načrtovanje programirljivih sistemov na čipu
PROGRAMIRLJIVA LOGIKA
jedra IP CPU, RAM…
vmesniki krmilnik SDRAM
HDL, natančni
časovni parametri
spec. logika HDL, HLS
![Page 3: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/3.jpg)
Programska orodja: Vivado in SDK
IP integrator
blokovni načrt
HDL ovojnica
sinteza
implementacija
specifikacija
HW (.xml)
bitstream (.bit)
izvozi HW v SDK
izdelava platforme Board Support Package
aplikacija (.c)
opis in prevajanje
izvršljiva (.elf)
nalaganje PS & PL
razhroščevanje
![Page 4: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/4.jpg)
Komponente IP
1. izdelava IP iz HDL (opis na nivoju RTL v VHDL, Verilog)
opis logičnega vezja v HDL
IP Packager naredi definicijo IP (*.xml) – IP-XACT (IEEE-1685)
2. sinteza IP iz opisa na višjem nivoju abstrakcije npr. program v jeziku C pretvorimo v RTL opis vezja
![Page 5: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/5.jpg)
Načrtovanju namenske logike
optimalna izvedba
iskanje optimalne izvedbe pri natančno definiranem cilju
odlična izvedba zahteva veliko časa
zadnjih 10% zahteva 90% časa
hitrost
doseže le dovolj dobro izvedbo
10x hitreje !
cilj v realnih projektih ni vedno natančno definiran
razmislek ni dovolj za optimalno izvedbo, potrebni so poskusi
najpomembneje je pravočasno dobiti dovolj dober rezultat
![Page 6: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/6.jpg)
Visokonivojska sinteza komponente (C/C++)
visokonivojska
sinteza
C, C++
fun() directive Test Bench
main()
verifikacija
izdelava IP
IP Packager
solution1,2…
VHDL, Verilog
SystemC report
![Page 7: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/7.jpg)
Prednosti visokonivojske sinteze
opis algoritma v ANSI-C ali C++ z orodji GCC
podpira realna števila (float IEEE-754) in operacije
učinkovito dela s poljubno natančnimi celoštevilskimi
vrednostmi (fixed point)
avtomatizirana časovna delitev in delitev virov
…
Kvaliteta rezultatov primerljiva s kodo na nivoju RTL !
![Page 8: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/8.jpg)
Postopek visokonivojske sinteze
Design Source (C, C++, SystemC)
Scheduling Binding
RTL (Verilog, VHDL, SystemC)
Technology Library
User Directives
v katerem ciklu se izvede operacija
poveže operacije s strojnimi gradniki
![Page 9: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/9.jpg)
Primer: sinteza operatorjev iz opisa v jeziku C
x2 = (x-a)*(x-a); y2 = (y-b)*(y-b); if ((x2 + y2 > R1) && (x2 + y2 < R2)) p = 1; else p = 0;
![Page 10: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/10.jpg)
Primer: časovni potek izvajanja
x2 = (x-a)*(x-a); y2 = (y-b)*(y-b); if ((x2 + y2 > R1) && (x2 + y2 < R2)) p = 1; else p = 0;
![Page 11: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/11.jpg)
Primer: povezava s strojnimi gradniki
x2 = (x-a)*(x-a); y2 = (y-b)*(y-b); if ((x2 + y2 > R1) && (x2 + y2 < R2)) p = 1; else p = 0;
![Page 12: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/12.jpg)
Primer: sinteza krmilne logike
x2 = (x-a)*(x-a); y2 = (y-b)*(y-b); if ((x2 + y2 > R1) && (x2 + y2 < R2)) p = 1; else p = 0;
![Page 13: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/13.jpg)
Optimizacija
postopek optimizacije določajo direktive
razvijanje zank (Loop unrolling, hitrejša izvedba / večje vezje)
cevljenje (Loop pipelining, učinkovita obdelava toka podatkov)
deljenje pomnilnikov (Memory partitioning, uporabi več blokov RAM)
delitev virov (Resource allocation, npr. omejimo št. seštevalnikov)
orodje Vivado pozna ~30 direktiv direktive sinteze so ločene od algoritma
lahko dosežemo zmogljivost, ki je primerljiva z ročno izdelanim opisom na nivoju RTL
![Page 14: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/14.jpg)
Optimizacija zank
privzeto delovanje sinteze je, da naredi zanke v obliki zaporedja operacij
vsaka iteracija zanke se izvede z istimi strojnimi komponentami
void foo_top (…) for(i=3;i>=0;i--) b = a[i] + b;
Standard HLS
© Copyright 2013 Xilinx
foo_top
+
a[N] b
![Page 15: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/15.jpg)
Optimizacija zank: razvijanje
izkoristi paralelizem v iteracijah zank
naredi strojne komponente za vsako iteracijo
upošteva podatkovne odvisnosti
foo_top
+
a[N] b
Standard HLS HLS & Unrolling
izvaja se 4 cikle izvaja se le 1 cikel
© Copyright 2013 Xilinx
![Page 16: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/16.jpg)
Optimizacija zank: cevovod
Latency = 3 cycles
brez cevljenja
Throughput = 3 cycles
RD CMP WR RD CMP WR
s cevovodom
Latency = 3 cycles
Throughput = 1 cycle
RD CMP WR
RD CMP WR
Loop_tag : for( II = 1 ; II < 3 ; II++ ) { op_Read; op_Compute; op_Write; }
RD
CMP
WR
Loop Latency = 6 cycles Loop Latency = 4 cycles
© Copyright 2013 Xilinx
![Page 17: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/17.jpg)
Optimizacija podatkovnih zbirk (pomnilnikov)
podatkovna zbirka (tabela) je v pomnilniku
sinteza razdeli pomnilnik na več komponent s hkratnim dostopom
![Page 18: Univerza v Ljubljani Laboratorij za načrtovanje integriranih vezij … · 2016-04-20 · opis algoritma v ANSI-C ali C++ z orodji GCC podpira realna števila (float IEEE-754) in](https://reader033.vdocuments.pub/reader033/viewer/2022041722/5e4f99fd94484e7b7a38ee50/html5/thumbnails/18.jpg)
Optimizacija strojnih virov
uporabnik določi implementacijo
označi operator
izbere izvedbo (npr. IP jedro) za določen operator (npr. thisMult)
thisMult = b[i] * c[i]; a[i] = thisMul;
jedro opis
Mul kombinacijski množ.
Mul3s 3-stanjski cevovodni
MulnS HLS določi št. stanj