1 | #include "systemc.h" |
---|
2 | #include "ram.h" |
---|
3 | #include "cpu.h" |
---|
4 | |
---|
5 | int sc_main(int argc,char **argv) |
---|
6 | { |
---|
7 | sc_report_handler::set_actions("/IEEE_Std_1666/deprecated", SC_DO_NOTHING); |
---|
8 | |
---|
9 | cpu *cpu_1; |
---|
10 | ram *ram_1; |
---|
11 | |
---|
12 | sc_clock clk("clk"); |
---|
13 | sc_signal<bool> reset("reset"); |
---|
14 | sc_signal<sc_uint<32> > address("address"); |
---|
15 | sc_signal<sc_uint<2> > memrw("memrw"); |
---|
16 | sc_signal<sc_uint<32> > datain("datain"); |
---|
17 | sc_signal<sc_uint<32> > dataout("dataout"); |
---|
18 | |
---|
19 | // CPU 1 |
---|
20 | cpu_1=new cpu("cpu_1"); |
---|
21 | cpu_1->clk(clk); |
---|
22 | cpu_1->reset(reset); |
---|
23 | cpu_1->address(address); |
---|
24 | cpu_1->memrw(memrw); |
---|
25 | cpu_1->dataout(dataout); |
---|
26 | cpu_1->datain(datain); |
---|
27 | |
---|
28 | // RAM 1 |
---|
29 | ram_1=new ram("ram_1"); |
---|
30 | ram_1->clk(clk); |
---|
31 | ram_1->addr(address); |
---|
32 | ram_1->dout(datain); |
---|
33 | ram_1->din(dataout); |
---|
34 | ram_1->memrw(memrw); |
---|
35 | |
---|
36 | sc_trace_file *tfile=sc_create_vcd_trace_file("results"); |
---|
37 | |
---|
38 | sc_trace(tfile,clk,"clk") ; |
---|
39 | sc_trace(tfile,reset,"reset") ; |
---|
40 | sc_trace(tfile,address,"address") ; |
---|
41 | sc_trace(tfile,datain,"datain") ; |
---|
42 | sc_trace(tfile,dataout,"dataout") ; |
---|
43 | sc_trace(tfile,cpu_1->pcout,"cpu_1.pcout") ; |
---|
44 | sc_trace(tfile,cpu_1->fsm_1->state,"cpu_1.fsm_1.state") ; |
---|
45 | |
---|
46 | sc_trace(tfile,cpu_1->rf32_1->regFile[00],"cpu_1.rf32_1.reg(0)") ; |
---|
47 | sc_trace(tfile,cpu_1->rf32_1->regFile[01],"cpu_1.rf32_1.reg(1)") ; |
---|
48 | sc_trace(tfile,cpu_1->rf32_1->regFile[02],"cpu_1.rf32_1.reg(2)") ; |
---|
49 | sc_trace(tfile,cpu_1->rf32_1->regFile[03],"cpu_1.rf32_1.reg(3)") ; |
---|
50 | sc_trace(tfile,cpu_1->rf32_1->regFile[04],"cpu_1.rf32_1.reg(4)") ; |
---|
51 | sc_trace(tfile,cpu_1->rf32_1->regFile[05],"cpu_1.rf32_1.reg(5)") ; |
---|
52 | sc_trace(tfile,cpu_1->rf32_1->regFile[06],"cpu_1.rf32_1.reg(6)") ; |
---|
53 | sc_trace(tfile,cpu_1->rf32_1->regFile[07],"cpu_1.rf32_1.reg(7)") ; |
---|
54 | |
---|
55 | sc_trace(tfile,cpu_1->cst0out,"cst0out"); |
---|
56 | sc_trace(tfile,cpu_1->cst4out,"cst4out"); |
---|
57 | sc_trace(tfile,cpu_1->pcout,"pcout"); |
---|
58 | sc_trace(tfile,cpu_1->rfout,"rfout"); |
---|
59 | sc_trace(tfile,cpu_1->adout,"adout"); |
---|
60 | sc_trace(tfile,cpu_1->dtout,"dtout"); |
---|
61 | sc_trace(tfile,cpu_1->irsextout,"irsextout"); |
---|
62 | sc_trace(tfile,cpu_1->irextout,"irextout"); |
---|
63 | sc_trace(tfile,cpu_1->irshiftout,"irshiftout"); |
---|
64 | sc_trace(tfile,cpu_1->mux_x_out,"mux_x_out"); |
---|
65 | sc_trace(tfile,cpu_1->mux_y_out,"mux_y_out"); |
---|
66 | sc_trace(tfile,cpu_1->int_dataout,"int_dataout"); |
---|
67 | sc_trace(tfile,cpu_1->irout15_0,"irout15_0"); |
---|
68 | sc_trace(tfile,cpu_1->irout15_11,"irout15_11"); |
---|
69 | sc_trace(tfile,cpu_1->irout20_16,"irout20_16"); |
---|
70 | sc_trace(tfile,cpu_1->irout25_21,"irout25_21"); |
---|
71 | |
---|
72 | sc_trace(tfile,cpu_1->write_pc,"write_pc");; |
---|
73 | sc_trace(tfile,cpu_1->mux_rf_w,"mux_rf_w");; |
---|
74 | sc_trace(tfile,cpu_1->mux_rf_r,"mux_rf_r");; |
---|
75 | sc_trace(tfile,cpu_1->write_rf,"write_rf");; |
---|
76 | sc_trace(tfile,cpu_1->adr_rf_w,"adr_rf_w");; |
---|
77 | sc_trace(tfile,cpu_1->adr_rf_r,"adr_rf_r");; |
---|
78 | sc_trace(tfile,cpu_1->write_ad,"write_ad");; |
---|
79 | sc_trace(tfile,cpu_1->write_dt,"write_dt");; |
---|
80 | sc_trace(tfile,cpu_1->write_ir,"write_ir");; |
---|
81 | sc_trace(tfile,cpu_1->mux_x,"mux_x");; |
---|
82 | sc_trace(tfile,cpu_1->mux_y,"mux_y");; |
---|
83 | sc_trace(tfile,cpu_1->mux_addr,"mux_addr");; |
---|
84 | sc_trace(tfile,cpu_1->alu_op,"amu_op");; |
---|
85 | sc_trace(tfile,cpu_1->zero,"zero");; |
---|
86 | sc_trace(tfile,cpu_1->ir,"ir");; |
---|
87 | |
---|
88 | sc_start(0); |
---|
89 | reset=0; |
---|
90 | sc_start(1); |
---|
91 | reset=1; |
---|
92 | for (int i=0;i<100;i++) |
---|
93 | { |
---|
94 | sc_start(1); |
---|
95 | } |
---|
96 | |
---|
97 | sc_close_vcd_trace_file(tfile); |
---|
98 | |
---|
99 | return(0); |
---|
100 | } |
---|
101 | |
---|