Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdAndrea Visser Laatst gewijzigd meer dan 10 jaar geleden
1
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC
2
48 SystemC VHDL Commerciële tools: http://www.systemcrafter.com/ http://www.systemcrafter.com/ http://www.forteds.com/products/cynthesizer.asp http://www.forteds.com/products/cynthesizer.asp http://www.mentor.com/esl/catapult/overview http://www.mentor.com/esl/catapult/overview http://www.cadence.com/products/sd/silicon_compiler/pages/default.aspx http://www.cadence.com/products/sd/silicon_compiler/pages/default.aspx Wetenschappelijke tools: Fossy: http://system-synthesis.org/http://system-synthesis.org/
3
49 GCD with Fossy Het SystemC cycle accurate model van de GCD component kan door Fossy worden omgezet naar VHDL Er moet een SC_CTHREAD i.p.v. een SC_THREAD gebruikt worden. Er moet een reset signaal worden toegevoegd d.m.v. reset_signal_is
4
#include using namespace sc_core; using namespace sc_dt; using namespace std; template SC_MODULE(gcd) { sc_in_clk clk; sc_in reset; sc_in go_i; sc_in x_i, y_i; sc_out done_o; sc_out r_o; SC_CTOR(gcd) { SC_CTHREAD(run, clk.pos()); reset_signal_is(reset, true); } Input voor Fossy 50 SC_CTHREAD reset_signal_is
5
Input voor Fossy (vervolg) 51 private: void run() { //... } }; int sc_main(int argc, char *argv[]) { gcd gcd("gcd"); return 0; }
6
void run() { wait(); while(1) { do { wait(); } while (!go_i.read()); T x = x_i.read(); T y = y_i.read(); wait(); while (go_i.read() && x != y) { if (x > y) { x -= y; } else { y -= x; } wait(); } if (go_i.read()) { r_o.write(x); done_o.write(true); } gcd::run() 52 De door Fossy gegenereerde VHDL code staat op BB (voor de liefhebber) do { wait(); } while (go_i.read()); done_o.write(false); }
7
53 GCD op NIOS II We kunnen het in les7 in SystemC gespecificeerde GCD algoritme ook in software implementeren. Bijvoorbeeld als een C functie op een NIOS II softcore.
8
54 Performance Counter We kunnen de executietijd van deze applicatie meten met behulp van een Performance Counter http://www.altera.com/literature/ug/ug_embedded_ip.pdf (chapter 34) http://www.altera.com/literature/ug/ug_embedded_ip.pdf De Performance Counter moet in SOPC Builder worden toegevoegd.
9
55 NIOS II IDE Om (later) C2H te kunnen gebruiken moeten we gebruik maken van de NIOS II IDE in plaats van de NIOS II Software Build Tools voor Eclipse. Deze tool kun je opstarten via het start menu en is ook op Eclipse gebaseerd.
10
56 GCD op NIOS II Performance counter base address (defined in system.h) Section number. Each performance counter can measure multiple sections of code. The max number of sections is defined in SOPC Builder.
11
57 GCD op NIOS II Reset and initialize Global start Global stop Report Number of sections measured Name for each section
12
58 GCD op NIOS II Uitvoer: 1790 logic cells
13
59 C2H Met behulp van de C2H tool kan een C functie automatisch in hardware worden geïmplementeerd! C2H genereert een hardware accelerator inclusief de interface hardware met de NIOS II en het geheugen. C2H genereert de software interface. Bij de function call worden: De parameters naar registers van de hardware accelerator geschreven. Het START bit in de hardware accelerator wordt geset. Het STATUS bit van de hardware accelerator wordt gelezen totdat deze aangeeft dat de accelerator klaar is. Tot slot wordt het resultaat (de return waarde) uit een register van de hardware accelerator gelezen.
14
60 C2H
15
61 C2H 1: Select a function
16
62 C2H 2: Select options
17
63 C2H 3: Build and view report
18
64 C2H 3: Build and view report
19
65 C2H 4: Hardware downloaden We need to use the time_limited version because we do not have a commercial license for C2H
20
66 C2H 5: Software laden + runnen Uitvoer: 80x sneller 2402 logic cells 1.34x more logic
21
67 C2H 6: Software Optimaliseren 18x sneller 1.34x more logic
22
68 C2H Het is ook mogelijk dat de accelerator zelf het geheugen benaderd (DMA = Direct Memory Access).
23
69 C2H op practicum Ideal Acceleration Candidates: Sections of C code that consume the most CPU time with the least amount of code are excellent candidates for acceleration. These tend to have the following characteristics: They contain a relatively small and simple loop or set of nested loops. They iterate over a set of data, performing one or more operations on the data per iteration, and then store the result. http://www.altera.com/literature/ug/ug_nios2_c2h_compiler.pdf http://www.altera.com/literature/ug/ug_nios2_c2h_compiler.pdf Zie hoofdstuk 2: Getting Started Tutorial
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.