source: trunk/processor.h @ 2

Last change on this file since 2 was 2, checked in by guillaumeb, 15 years ago

commit initial

File size: 1.6 KB
Line 
1#include <systemc.h>
2#include "util.h"
3#include "queue.h"
4#include "address.h"
5#include "raw_address.h"
6
7/*
8 * Module représentant le processeur. 
9 *
10 * Il est chargé, à chaque tick d'horloge d'envoyer des requêtes au cache L1
11 * qu'il lit dans un fichier spécifié au constructeur.
12 */
13
14SC_MODULE(Processor)
15{
16    // Horloge
17    sc_in_clk clock;
18
19    // File de 10 élements correspondant aux requetes ayant été envoyées et
20    // dont on attend la réponse.  Si elle est pleine, le processeur devra
21    // attendre qu'elle se vide avant de pouvoir envoyer d'autres requetes.
22    Queue<RawAddress> *queue;
23
24    // donnée à envoyer au cache L1
25    sc_out<RawAddress> out_data;
26    sc_out<bool> out_activate;
27
28    // donnée retournée par le cache L1
29    sc_in <RawAddress> in_data;
30    sc_in <bool> in_activate;
31   
32
33    void driver();
34
35    void read(RawAddress &address, int *value);
36    void write(RawAddress &address, int value);
37
38    void completed();
39
40    ifstream file;
41
42    Processor(sc_module_name name, char *filename) : sc_module(name)
43    {
44        // Initialisation
45        this->queue = new Queue<RawAddress>(10);
46
47        file.open(filename, ios::in);
48        if (file.bad()) {
49            cerr << "error opening file";
50            exit (1);   // Erreur a l'ouverture, on quitte... violemment ...
51        }
52
53        // SystemC methods declarations
54        SC_METHOD(driver);
55        dont_initialize();
56        sensitive << clock.pos();
57
58        SC_METHOD(completed);
59        dont_initialize();
60        sensitive << clock.pos();
61    };
62
63    SC_HAS_PROCESS(Processor);
64
65    ~Processor() {
66        delete queue;
67    }
68};
69
Note: See TracBrowser for help on using the repository browser.