summaryrefslogtreecommitdiff
path: root/soc.cpp
blob: c6c378b62d35cc412db2ec2e0a5a0fd7ac8298c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <verilated.h>
#include <verilated_vcd_c.h>
#include "Vsystem.h"
#include <iostream>

#include "DRAM.h"

struct Bench {
    Vsystem *system;
    DRAM *dram;

    Bench() {
        system = new Vsystem();
        dram = new DRAM();

        system->eval();
        eval();
    }
    ~Bench() {
        delete dram;
        delete system;
    }

    void eval() {
        // Apply signals to the DRAM
        dram->apply(
            system->clk,
            system->mem_we,
            system->mem_claddr,
            &system->mem_cldata
        );
        // Eval the DRAM
        dram->eval();

        // Eval the system 
        system->eval();
    }

    void tick() {
        system->clk ^= 1;
        eval();
    }
};

int main() {
    Bench bench;
    

    for (int i = 0; i < 10000; i++)
        bench.tick();
}