fayz Posted September 15, 2023 Report Share Posted September 15, 2023 #include <systemc.h> #include "fetchunit.h" SC_MODULE(DECODE_R) { sc_out<sc_int<7>> opcode; sc_out<sc_int<5>> rd,rs1,rs2; sc_out<sc_int<3>> func3; sc_out<sc_int<7>> func7; sc_in < sc_int<32>> writedata; sc_in_clk clk; SC_CTOR(DECODE_R) { SC_THREAD(rtype); sensitive << clk.pos() ; } void rtype() { while (true) { wait(clk.posedge_event()); cout << writedata.read().range(6, 0).to_int() << endl; if (writedata.read().range(6, 0) == 51 && writedata.read().range(14, 12) == 0 && writedata.read().range(31, 25) == 0) { cout << "R-TYPE ADD INSTRUCTION" << endl; opcode.write(writedata.read().range(6, 0)); rd.write(writedata.read().range(11, 7)); func3.write(writedata.read().range(14, 12)); rs1.write(writedata.read().range(19, 15)); rs2.write(writedata.read().range(24, 20)); func7.write(writedata.read().range(31, 25)); } else { cout << "code running" << endl; } } } }; SC_MODULE(TopLevelModule) { FETCH fetch_inst; DECODE_R decode_r_inst; sc_signal<sc_int<32>> writedata_signal; sc_signal<sc_int<5>> rd, rs1, rs2; sc_signal<sc_int<3>> func3; sc_signal<sc_int<7>> func7, opcode; sc_signal<bool> clk; SC_CTOR(TopLevelModule) : fetch_inst("FetchInstance"), decode_r_inst("DecodeRinstance") { fetch_inst.writedata(writedata_signal); fetch_inst.clk(clk); decode_r_inst.opcode(opcode); decode_r_inst.rd(rd); decode_r_inst.rs1(rs1); decode_r_inst.rs2(rs2); decode_r_inst.func3(func3); decode_r_inst.func7(func7); decode_r_inst.writedata(writedata_signal); decode_r_inst.clk(clk); } }; int sc_main(int argc, char* argv[]) { sc_set_time_resolution(1, SC_SEC); sc_clock clk("clk", 2, SC_SEC); sc_signal<sc_int<32>> writedata_signal; TopLevelModule TOPMODULE("TOP"); sc_trace_file* tf = sc_create_vcd_trace_file("decode"); sc_trace(tf, TOPMODULE.decode_r_inst.clk, "clk"); sc_trace(tf, TOPMODULE.decode_r_inst.writedata, "writedata"); sc_trace(tf, TOPMODULE.decode_r_inst.opcode, "opcode"); sc_trace(tf, TOPMODULE.decode_r_inst.rd, "rd"); sc_trace(tf, TOPMODULE.decode_r_inst.rs1, "rs1"); sc_trace(tf, TOPMODULE.decode_r_inst.rs2, "rs2"); sc_trace(tf, TOPMODULE.decode_r_inst.func3, "func3"); sc_trace(tf, TOPMODULE.decode_r_inst.func7, "func7"); sc_trace(tf, TOPMODULE.fetch_inst.pc_value, "pc"); sc_start(5, SC_SEC); sc_close_vcd_trace_file(tf); return 0; } Quote Link to comment Share on other sites More sharing options...
David Black Posted September 15, 2023 Report Share Posted September 15, 2023 What is fetchunit.h? Can you put your code on edaplayground.com and share the link? Quote Link to comment Share on other sites More sharing options...
Matt Bone Posted September 15, 2023 Report Share Posted September 15, 2023 There is no connection between the sc_clock "generator" declared in sc_main and the sc_signal 'clk' in TopLevelModule. This means the 'clk' signal connected to your decode instance is not toggling. You have two options: Move the sc_clock generator inside the TopLevelModule, to replace the floating sc_signal. Change the TopLevelModule to take the clock as an input (sc_in_clk clk), and in sc_main connect the sc_clock generator 'clk' to the input port: TOPMODULE.clk(clk) Quote Link to comment Share on other sites More sharing options...
fayz Posted September 16, 2023 Author Report Share Posted September 16, 2023 Thanks, second approach worked for me. 8 hours ago, Matt Bone said: There is no connection between the sc_clock "generator" declared in sc_main and the sc_signal 'clk' in TopLevelModule. This means the 'clk' signal connected to your decode instance is not toggling. You have two options: Move the sc_clock generator inside the TopLevelModule, to replace the floating sc_signal. Change the TopLevelModule to take the clock as an input (sc_in_clk clk), and in sc_main connect the sc_clock generator 'clk' to the input port: TOPMODULE.clk(clk) me. Quote Link to comment Share on other sites More sharing options...
fayz Posted September 16, 2023 Author Report Share Posted September 16, 2023 10 hours ago, David Black said: What is fetchunit.h? Can you put your code on edaplayground.com and share the link? fetchunit.h contains source code of fetch file. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.