📄 main_org.cpp
字号:
/* * TU Eindhoven * Eindhoven, The Netherlands * * Name : * * Author : Sander Stuijk (sander@ics.ele.tue.nl) * * Date : November 18, 2002 * * Function : Pipelined mMIPS * * History : * 18-11-02 : Initial version. * - lw, sw, beq, add, addu, subu, * - and, or, slt * 19-11-02 : - xor, sltu * - addiu, andi, ori, xori, slti, sltiu * - lui, bne * - sll, srl, sra (1, 2, 8 bits) * - sb, lb * 21-11-02 : - j, jal, jalr, jr * 13-12-02 : Synthesizable version A.S.Slusarczyk@tue.nl */#include "top.h"//// MAIN//int sc_main(int argc, char *argv[]){ sc_signal<bool> clk; sc_signal< bool > rst, en; char stbuf[32]; // the processor mMIPS mips("mips"); mips.clock(clk); mips.reset(rst); mips.enable(en); // PC for display sc_signal< sc_bv<DWORD> > bus_pc; mips.bus_pc(bus_pc);#ifdef SPYING sc_signal< sc_lv<5> > commin; sc_signal_rv<4> comminout; mips.comminout(comminout); // control input to SPY_COMM mips.commin(commin); // SPY control signals mips.spy_reset(rst); mips.spy_clock(clk); // some signals to display the state of communication sc_signal<CTL_STATE> ctl_state; sc_signal< sc_uint<4> > sr_nibble; mips.ctl_state(ctl_state); mips.sr_nibble(sr_nibble);#endif /* * Initialization */ mips.imem->rom_init("mips_rom.bin"); mips.imem->rom_dump("mips_rom.0.dump"); mips.dmem->ram_init("mips_ram.bin"); mips.dmem->ram_dump("mips_ram.0.dump"); /* * Tracing */ sc_trace_file *tf; tf = sc_create_vcd_trace_file("mips"); // Signals sc_trace(tf, clk, "clock"); sc_trace(tf, rst, "reset"); sc_trace(tf, en, "enable"); sc_trace(tf, mips.bus_add1, "bus_add1"); sc_trace(tf, mips.bus_add2, "bus_add2"); sc_trace(tf, mips.bus_aluctrl, "bus_aluctrl"); sc_trace(tf, mips.bus_alu_result, "bus_alu_result"); sc_trace(tf, mips.bus_alu_zero, "bus_alu_zero"); sc_trace(tf, mips.bus_branch, "bus_branch"); sc_trace(tf, mips.bus_ctrl2hazard_aluop, "bus_ctrl2hazard_aluop"); sc_trace(tf, mips.bus_ctrl2hazard_alusrc, "bus_ctrl2hazard_alusrc"); sc_trace(tf, mips.bus_ctrl2hazard_branch, "bus_ctrl2hazard_branch"); sc_trace(tf, mips.bus_ctrl2hazard_memread, "bus_ctrl2hazard_memread"); sc_trace(tf, mips.bus_ctrl2hazard_memtoreg, "bus_ctrl2hazard_memtoreg"); sc_trace(tf, mips.bus_ctrl2hazard_memwrite, "bus_ctrl2hazard_memwrite"); sc_trace(tf, mips.bus_ctrl2hazard_regdst, "bus_ctrl2hazard_regdst"); sc_trace(tf, mips.bus_ctrl2hazard_regvalue, "bus_ctrl2hazard_regvalue"); sc_trace(tf, mips.bus_ctrl2hazard_regwrite, "bus_ctrl2hazard_regwrite"); sc_trace(tf, mips.bus_ctrl2hazard_target, "bus_ctrl2hazard_target"); sc_trace(tf, mips.bus_ctrl_aluop, "bus_ctrl_aluop"); sc_trace(tf, mips.bus_ctrl_alusrc, "bus_ctrl_alusrc"); sc_trace(tf, mips.bus_ctrl_branch, "bus_ctrl_branch"); sc_trace(tf, mips.bus_ctrl_c1, "bus_ctrl_c1"); sc_trace(tf, mips.bus_ctrl_c31, "bus_ctrl_c31"); sc_trace(tf, mips.bus_ctrl_c4, "bus_ctrl_c4"); sc_trace(tf, mips.bus_ctrl_memread, "bus_ctrl_memread"); sc_trace(tf, mips.bus_ctrl_memtoreg, "bus_ctrl_memtoreg"); sc_trace(tf, mips.bus_ctrl_memwrite, "bus_ctrl_memwrite"); sc_trace(tf, mips.bus_ctrl_regdst, "bus_ctrl_regdst"); sc_trace(tf, mips.bus_ctrl_regvalue, "bus_ctrl_regvalue"); sc_trace(tf, mips.bus_ctrl_regwrite, "bus_ctrl_regwrite"); sc_trace(tf, mips.bus_ctrl_target, "bus_ctrl_target"); sc_trace(tf, mips.bus_ctrl_enable, "bus_ctrl_enable"); sc_trace(tf, mips.bus_decoder_instr_10_6, "bus_decoder_instr_10_6"); sc_trace(tf, mips.bus_decoder_instr_15_0, "bus_decoder_instr_15_0"); sc_trace(tf, mips.bus_decoder_instr_15_11, "bus_decoder_instr_15_11"); sc_trace(tf, mips.bus_decoder_instr_20_16, "bus_decoder_instr_20_16"); sc_trace(tf, mips.bus_decoder_instr_25_0, "bus_decoder_instr_25_0"); sc_trace(tf, mips.bus_decoder_instr_25_21, "bus_decoder_instr_25_21"); sc_trace(tf, mips.bus_decoder_instr_31_26, "bus_decoder_instr_31_26"); sc_trace(tf, mips.bus_decoder_instr_5_0, "bus_decoder_instr_5_0"); sc_trace(tf, mips.bus_dmem_1, "bus_dmem_1"); sc_trace(tf, mips.bus_ex_alu_result, "bus_ex_alu_result"); #ifndef BRAM sc_trace(tf, mips.bus_ex_ctrl_mem_memread, "bus_ex_ctrl_mem_memread"); sc_trace(tf, mips.bus_ex_ctrl_mem_memwrite, "bus_ex_ctrl_mem_memwrite"); #endif sc_trace(tf, mips.bus_ex_ctrl_wb_memtoreg, "bus_ex_ctrl_wb_memtoreg"); sc_trace(tf, mips.bus_ex_ctrl_wb_regwrite, "bus_ex_ctrl_wb_regwrite"); #ifndef BRAM sc_trace(tf, mips.bus_ex_data_reg2, "bus_ex_data_reg2"); #endif sc_trace(tf, mips.bus_ex_regdst_addr, "bus_ex_regdst_addr"); sc_trace(tf, mips.bus_hazard_hazard, "bus_hazard_hazard"); sc_trace(tf, mips.bus_hazard_ifidwrite, "bus_hazard_ifidwrite"); sc_trace(tf, mips.bus_hazard_pcwrite, "bus_hazard_pcwrite"); sc_trace(tf, mips.bus_id_ctrl_ex_aluop, "bus_id_ctrl_ex_aluop"); sc_trace(tf, mips.bus_id_ctrl_ex_alusrc, "bus_id_ctrl_ex_alusrc"); sc_trace(tf, mips.bus_id_ctrl_ex_regdst, "bus_id_ctrl_ex_regdst"); sc_trace(tf, mips.bus_id_ctrl_ex_regvalue, "bus_id_ctrl_ex_regvalue"); sc_trace(tf, mips.bus_id_ctrl_ex_target, "bus_id_ctrl_ex_target"); sc_trace(tf, mips.bus_id_ctrl_mem_branch, "bus_id_ctrl_mem_branch"); sc_trace(tf, mips.bus_id_ctrl_mem_memread, "bus_id_ctrl_mem_memread"); sc_trace(tf, mips.bus_id_ctrl_mem_memwrite, "bus_id_ctrl_mem_memwrite"); sc_trace(tf, mips.bus_id_ctrl_wb_memtoreg, "bus_id_ctrl_wb_memtoreg"); sc_trace(tf, mips.bus_id_ctrl_wb_regwrite, "bus_id_ctrl_wb_regwrite"); sc_trace(tf, mips.bus_id_data_reg1, "bus_id_data_reg1"); sc_trace(tf, mips.bus_id_data_reg2, "bus_id_data_reg2"); sc_trace(tf, mips.bus_id_instr_15_11, "bus_id_instr_15_11"); sc_trace(tf, mips.bus_id_instr_20_16, "bus_id_instr_20_16"); sc_trace(tf, mips.bus_id_instr_25_0, "bus_id_instr_25_0"); sc_trace(tf, mips.bus_id_instr_5_0, "bus_id_instr_5_0"); sc_trace(tf, mips.bus_id_pc, "bus_id_pc"); sc_trace(tf, mips.bus_id_signextend, "bus_id_signextend"); sc_trace(tf, mips.bus_if_instr, "bus_if_instr"); sc_trace(tf, mips.bus_if_pc, "bus_if_pc"); sc_trace(tf, mips.bus_imem_1, "bus_imem_1"); sc_trace(tf, mips.bus_mem_alu_result, "bus_mem_alu_result"); sc_trace(tf, mips.bus_mem_ctrl_wb_memtoreg, "bus_mem_ctrl_wb_memtoreg"); sc_trace(tf, mips.bus_mem_ctrl_wb_regwrite, "bus_mem_ctrl_wb_regwrite"); sc_trace(tf, mips.bus_mem_dmem_data, "bus_mem_dmem_data"); sc_trace(tf, mips.bus_mem_regdst_addr, "bus_mem_regdst_addr"); sc_trace(tf, mips.bus_mux1, "bus_mux1"); sc_trace(tf, mips.bus_mux2, "bus_mux2"); sc_trace(tf, mips.bus_mux3, "bus_mux3"); sc_trace(tf, mips.bus_mux4, "bus_mux4"); sc_trace(tf, mips.bus_mux5, "bus_mux5"); sc_trace(tf, mips.bus_mux6, "bus_mux6"); sc_trace(tf, mips.bus_pc, "bus_pc"); sc_trace(tf, mips.bus_registers_1, "bus_registers_1"); sc_trace(tf, mips.bus_registers_2, "bus_registers_2"); sc_trace(tf, mips.bus_shiftleft, "bus_shiftleft"); sc_trace(tf, mips.bus_shiftleft_jmp, "bus_shiftleft_jmp"); sc_trace(tf, mips.bus_signextend, "bus_signextend"); sc_trace(tf, mips.bus_signextendbyte, "bus_signextendbyte");#ifndef BREG for (int i = 0; i < REGSIZE; i++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -