| 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 | |
|---|