source: trunk/src/processor.h

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

localisation du problème

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