1 / 10

Σχεδίαση hardware και προγραμματισμός

Σχεδίαση hardware και προγραμματισμός. βασικές (αλλά σύγχρονες) μεθοδολογίες Βασίλης Παλιουράς. Διαχείριση πολυπλοκότητας - Z ητήματα και τεχνικές. Αφαιρετικότητα ( abstraction) Αυξητική ανάπτυξη incremental development, progressive refinement

Download Presentation

Σχεδίαση hardware και προγραμματισμός

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Σχεδίαση hardware και προγραμματισμός βασικές (αλλά σύγχρονες)μεθοδολογίες Βασίλης Παλιουράς

  2. Διαχείριση πολυπλοκότητας -Zητήματα και τεχνικές • Αφαιρετικότητα (abstraction) • Αυξητική ανάπτυξη • incremental development, progressive refinement • Έλεγχος ορθής λειτουργίας και διασφάλιση ποιότητας • Πώς διασφαλίζουμε ότι το σχεδιάσαμε το σύστημα σωστά; • υλικό ή λογισμικό ή οποιοσδήποτε συνδυασμός • Τι θα πει «σωστή» λύση; • Αξιοποίηση διαθέσιμων δομικών στοιχείων (reusability) • Δυνατότητες επέκτασης – τροποποίησης • Οι τεχνικές δεν αφορούν μόνο το λογισμικό! • Εφαρμόζονται στο σύνολο των συστημάτων που σχεδιάζει ο μηχανικός.

  3. Καθημερινότητατου μηχανικού • Προδιαγραφές και εξομοιώσεις συστημάτων σε C/C++,matlab,SystemC,... • Περιγραφή υλικού σε VHDL,verilog, SystemC,... • γράφουμε απευθείας μοντέλα ή μέσω scripts (perl,...) αλλά και matlab ή C • παράγουμε οδηγίες προς τον εξομοιωτή με script • Eπεξεργασία μοντέλων HDL με εργαλεία αυτόματης σχεδίασης (EDA), • περιγραφή ενεργειών βελτιστοποίησης σε γλώσσα χαρακτηριστική του εργαλείου • κτλ.

  4. C, C++, matlab, SystemC... // dff.v module dff(clock, reset, din, dout); input clock, reset, din; output dout; reg dout; always @(posedge clock or reset) begin if (reset) dout<= 1'b0; else dout = din; end endmodule ? HDLs (verilog,VHDL, SystemC) ... EDA

  5. counter σε SystemC #include "systemc.h" class counter : public sc_module { int value; public: sc_in<bool> clk; sc_in<bool> count; sc_in<bool> reset; sc_out<int> q; SC_HAS_PROCESS(counter); counter(sc_module_name nm): sc_module(nm),value(0) { SC_METHOD(do_count); sensitive << clk.pos() << reset; } protected: void do_count(){ if (reset){ value = 0;} else if (count) { value++; q.write(value); } } };

  6. module process process module module process process process process process process process module

  7. // dff.v module dff(clock, reset, din, dout); input clock, reset, din; output dout; reg dout; always @(posedge clock or reset) begin if (reset) dout<= 1'b0; else dout = din; end endmodule // dff.h #include "systemc.h“ SC_MODULE(dff) { sc_in <bool> clock; sc_in <bool> reset; sc_in <bool> din; sc_out <bool> dout; void do_dff( ) { if (reset) dout = false; elseif (clock.event()) dout=din; } SC_CTOR(dff) { SC_METHOD(do_dff); sensitive(reset); sensitive_pos(clock); } } Verilog vs. SystemC

  8. testbench.h #include "systemc.h" SC_MODULE(testbench) { sc_out<int> add; sc_out<bool> en; sc_out<bool> rw; sc_out<bool> we; sc_inout_rv<16> data; sc_in<bool> clock; void do_test(); SC_CTOR(testbench) { SC_CTHREAD(do_test,clock.pos()); } private: int read_cycle(int); void write_cycle(int, int); };

  9. testbench.cpp #include "testbench.h" void testbench::do_test() { int i, j, flag, tmpA, tmpDW, tmpDR; for(j=0;1;j++) { flag=0; wait(2); tmpA=1;tmpDW=123; for(i=0;i<3;i++) read_cycle(tmpA+i+j); for(i=0;i<3;i++) write_cycle(tmpA+i+j,tmpDW+i+j); for(i=0;i<3;i++) { tmpDR=read_cycle(tmpA+i+j); if(tmpDR!=(tmpDW+i+j)) { fprintf(stderr,"error: expected0x%x, but 0x%x", tmpDW+i+j, tmpDR); flag =1; } } if(!flag) fprintf(stderr, "test passed...Wn"); } }

More Related