HM-ES-th1 Les 3 Hardware/Software Codesign with SystemC.

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Data Acquisition & Control System
PROS2 Les 2 Programmeren en Software Engineering 2.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
Installatie & beheer Jonathan Mohnen Martijn Wolfs.
SAP ABAP A short introduction. SAP ABAP • Selectie: – IF …… ENDIF. – IF …. ELSE … ENDIF. – IF …. ELSEIF …. ELSEIF …. ELSE …. ENDIF. – IF condition_1.
HM-ES-th1 Les 4 Hardware/Software Codesign with SystemC.
1 Co-Design at Chess-iT Guus Bosman. 2 Afstuderen bij Chess Net.Footworks tot augustus 2003 Afstuderen augustus 2003 tot maart 2004 Chess full-time vanaf.
Kennismaking met de computerconfiguratie
WELKOM Beste Gebruiker, Deze Demopresentatie van het D.S.S. geeft een helder beeld van de werkwijze van het programma. Het beschrijft de stappen die u.
Programmeren in Java met BlueJ
Stepping Stones Tweede Fase
1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.
Van domeinklasse tot implementatie
Auteursomgeving voor Digitale Componenten
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Conditionele expressie
National Institute For Space Research SRON-EO strategie, NL gebruikersgemeenschap, Radboud Koop, 24 sept 2004 Page 1 SRON EO strategie – NL gebruikersgemeenschap.
HM-ES-th1 Les 1 Hardware/Software Codesign with SystemC.

Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
1 Ben Bruidegom AMSTEL-instituut Universiteit van Amsterdam Reehorstconferentie 2007 NLT-module Digitale Techniek Ontwerpen van digitale schakelingen met.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom A Harvard Machine Calculator Calculator  Computer.
Auteursomgeving voor Digitale Componenten
1 Woudschotenconferentie 2006 Ben Bruidegom AMSTEL-instituut Universiteit van Amsterdam NLT-module Digitale Techniek Ontwerpen van digitale schakelingen.
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
Les 12b : MODULE 1 Snedekrachten (4)
Les 12b : MODULE 1 Snedekrachten (4)
Een USB 2.0 oscilloscoop Bossuyt Frederick De Bock Steven
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
CONTROLESTRUCTUREN (DEEL 2)
Werken aan Intergenerationele Samenwerking en Expertise.
Title VHDL Introductie FirstName LastName – Activity / Group.
Hoe werkt een rekenmachine?
Talstelsels, rekenen en rekenschakelingen
1Ben Bruidegom 1 Micro controllers introduction. 2Ben Bruidegom 2 Areas of use & Numbers of machines You might have 1 or 2 Pentium class chips at home.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
English reports Summaries.
Algoritmiek Object-georiënteerd Programmeren
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
Flight 68K Temperatuur geregelde ventilator
Best8-1 Les 8: Input/Output [Lat: datarum initus exitusque]
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
Economische impact sluiting Ford Genk Ludo Peeters en Mark Vancauteren (Universiteit Hasselt)
A H M F K EB C x 85 Korte zijde bij C 2 e secties volte 14 m en op afstand komen ( 0,5 rijbaan)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 2: IDaSS.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Het timing model in VHDL
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
HM-ES-th1 Les 12 Hardware/Software Codesign with SystemC.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
1 XSLT processing & control Datamodellering 2006.
De tijd van Tijd van jagers en boeren – – 3000 VC
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
EVEN VOORSTELLEN… Je kan een inschatting maken van de prijs van een product. Je beseft dat reclame invloed heeft op wat je besteedt. Je weet wat een.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
1 MROD subsysteem voor ATLAS NIKHEF Amsterdam: Peter Jansweijer, Jos Vermeulen, Gerard Kieft, Henk Boterenbrood NIKHEF Nijmegen: Adriaan König, Thei Wijnen.
Profibus Automation & Drives.
Binaire getallen 1. binair → decimaal 2. decimaal → binair.
Wat je er mee kan doen en waarom het zo handig is.
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

HM-ES-th1 Les 3 Hardware/Software Codesign with SystemC

SystemC Module Elementary building blocks 18 in port out port module process read write event trigger Beschrijft gedrag Bijvoorbeeld: waarde op in port wijzigt

SystemC SC_MODULE Een module wordt gedefinieerd als een class m.b.v. de macro SC_MODULE(…). Een input port worden gedefinieerd als sc_in. Een output port worden gedefinieerd als sc_out. Een process wordt gedefinieerd als memberfunctie en geregistreerd in de constructor met de macro SC_METHOD. (Er zijn ook nog andere soorten processen.) De constructor wordt gedefinieerd m.b.v. de macro SC_CTOR(…). De events waardoor de SC_METHOD start worden in de constructor gedefinieerd m.b.v. sensitive. 19

1 bit full adder Schema op poortniveau 20

1 bit full adder SC_MODULE(Adder) { sc_out S, Cout; sc_in A, B, Cin; SC_CTOR(Adder) { SC_METHOD(add); sensitive << A << B << Cin; } private: void add() { sc_logic tempC, tempD, tempE; tempC = A.read() & B.read(); tempD = A.read() ^ B.read(); tempE = Cin.read() & tempD; S.write(tempD ^ Cin.read()); Cout.write(tempC | tempE); } }; 21 sc_logic is een 4-value type. Een variabele van het type sc_logic kan de waarde SC_LOGIC_0, SC_LOGIC_1, SC_LOGIC_X of SC_LOGIC_Z hebben. tempC tempD tempE

1 bit full adder SC_MODULE(Adder) { sc_out S, Cout; sc_in A, B, Cin; SC_CTOR(Adder) { SC_METHOD(add); sensitive << A << B << Cin; } private: void add() { // zonder lokale variabelen S.write(A.read() ^ B.read() ^ Cin.read()); Cout.write(A.read() & B.read() | Cin.read() & (A.read() ^ B.read())); } }; 22

1 bit full adder SC_MODULE(Adder) { sc_out S, Cout; sc_in A, B, Cin; SC_CTOR(Adder) { SC_METHOD(add); sensitive << A << B << Cin; } private: void add() { // m.b.v. impliciete type conversies en operator overloading S = A ^ B ^ Cin; Cout = A & B | Cin & (A ^ B); } }; 23 Raad ik niet aan

Testbench We gebruiken een testbench om (één of meerdere) module(s) te testen. 24 Adder AB Cin SCout Testbench TATBTCin

Wachten In de beschrijving van de testbench willen we kunnen wachten. Dit kan niet in een SC_METHOD maar wel in een SC_THREAD. Een SC_THREAD wordt slechts 1x aangeroepen door de SystemC kernel. Namelijk aan het begin van de simulatie. 25

Testbench voor 1 bit full adder SC_MODULE(Testbench) { sc_out TA, TB, TCin; SC_CTOR(Testbench) { SC_THREAD(testprocess); } private: void testprocess() { TA.write(SC_LOGIC_0); TB.write(SC_LOGIC_0); TCin.write(SC_LOGIC_0); wait(10, SC_NS); TA.write(SC_LOGIC_1); wait(10, SC_NS); TB.write(SC_LOGIC_1); wait(10, SC_NS); TCin.write(SC_LOGIC_1); wait(10, SC_NS); TA.write(SC_LOGIC_0); TB.write(SC_LOGIC_0); TCin.write(SC_LOGIC_0); } }; 26

Programma voor 1 bit full adder int sc_main(int argc, char *argv[]) { sc_signal A, B, Cin; sc_signal S, Cout; Adder adder("adder"); adder.A(A); adder.B(B); adder.Cin(Cin); adder.S(S); adder.Cout(Cout); Testbench tb("tb"); tb.TA(A); tb.TB(B); tb.TCin(Cin); 27 channels AB Cin SCout adder AB Cin SCout tb TATBTCin

Programma voor 1 bit full adder // Record (trace) signals for verification auto tf = sc_create_vcd_trace_file("trace"); tf->set_time_unit(1, SC_NS); sc_trace(tf, A, "A"); sc_trace(tf, B, "B"); sc_trace(tf, Cin, "Cin"); sc_trace(tf, S, "S"); sc_trace(tf, Cout, "Cout"); // Start the simulation for 200ns sc_start(200, SC_NS); sc_close_vcd_trace_file(tf); return 0; } 28

Output in GTKWave 29

Betere testbench Geautomatiseerde module test (unit test). 30 Adder AB Cin SCout Testbench Rapporteert fout of OK Huiswerk: Schrijf een automatische testbench voor SC_MODULE(Adder)