source: trunk/src/processor.h @ 13

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

correction pour l'ouverture avec erreur de fichier

File size: 1.6 KB
RevLine 
[2]1#include <systemc.h>
[9]2#include <iostream>
[2]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    // donnée retournée par le cache L1
30    sc_in <RawAddress> in_data;
31    sc_in <bool> in_activate;
32   
33
34    void driver();
35
36    void read(RawAddress &address, int *value);
37    void write(RawAddress &address, int value);
38
39    void completed();
40
41    ifstream file;
42
43    Processor(sc_module_name name, char *filename) : sc_module(name)
44    {
45        // Initialisation
46        this->queue = new Queue<RawAddress>(10);
47
48        file.open(filename, ios::in);
[9]49        if (file.fail()) {
50            cerr << "error opening file : "  << filename << endl;
[2]51            exit (1);   // Erreur a l'ouverture, on quitte... violemment ...
52        }
53
54        // SystemC methods declarations
55        SC_METHOD(driver);
56        dont_initialize();
57        sensitive << clock.pos();
58
59        SC_METHOD(completed);
60        dont_initialize();
61        sensitive << clock.pos();
62    };
63
64    SC_HAS_PROCESS(Processor);
65
66    ~Processor() {
67        delete queue;
68    }
69};
70
Note: See TracBrowser for help on using the repository browser.