data/full_repos/permissive/421030651/src/cpu/amo.sv
1: b'%Error: data/full_repos/permissive/421030651/src/cpu/amo.sv:12: Cannot find include file: amo_op.sv\n`include "amo_op.sv" \n         ^~~~~~~~~~~\n        ... Looked in:\n             data/full_repos/permissive/421030651/src/cpu,data/full_repos/permissive/421030651/amo_op.sv\n             data/full_repos/permissive/421030651/src/cpu,data/full_repos/permissive/421030651/amo_op.sv.v\n             data/full_repos/permissive/421030651/src/cpu,data/full_repos/permissive/421030651/amo_op.sv.sv\n             amo_op.sv\n             amo_op.sv.v\n             amo_op.sv.sv\n             obj_dir/amo_op.sv\n             obj_dir/amo_op.sv.v\n             obj_dir/amo_op.sv.sv\n%Error: data/full_repos/permissive/421030651/src/cpu/amo.sv:4: Define or directive not defined: \'`AMO_OP_LEN\'\n    input        [`AMO_OP_LEN-1:0] amo_op,\n                  ^~~~~~~~~~~\n%Error: data/full_repos/permissive/421030651/src/cpu/amo.sv:5: Define or directive not defined: \'`XLEN\'\n    input        [      `XLEN-1:0] amo_src,\n                        ^~~~~\n%Error: data/full_repos/permissive/421030651/src/cpu/amo.sv:8: Define or directive not defined: \'`XLEN\'\n    input        [      `XLEN-1:0] amo_mem_rdata,\n                        ^~~~~\n%Error: data/full_repos/permissive/421030651/src/cpu/amo.sv:9: Define or directive not defined: \'`XLEN\'\n    output logic [      `XLEN-1:0] amo_mem_wdata\n                        ^~~~~\n%Error: data/full_repos/permissive/421030651/src/cpu/amo.sv:15: Define or directive not defined: \'`XLEN\'\n    amo_mem_wdata = `XLEN\'b0;\n                    ^~~~~\n%Error: Exiting due to 6 error(s)\n'
module amo (
    input                          clk,
    input                          rstn,
    input        [`AMO_OP_LEN-1:0] amo_op,
    input        [      `XLEN-1:0] amo_src,
    

    input        [      `XLEN-1:0] amo_mem_rdata,
    output logic [      `XLEN-1:0] amo_mem_wdata
);

`include "amo_op.sv"

always_comb begin
    amo_mem_wdata = `XLEN'b0;
    case (amo_op)
        AMO_SWAP: amo_mem_wdata = amo_src;
        AMO_ADD : amo_mem_wdata = amo_mem_rdata + amo_src;
        AMO_XOR : amo_mem_wdata = amo_mem_rdata ^ amo_src;
        AMO_AND : amo_mem_wdata = amo_mem_rdata & amo_src;
        AMO_OR  : amo_mem_wdata = amo_mem_rdata | amo_src;
        AMO_MIN : amo_mem_wdata = $signed(amo_mem_rdata) < $signed(amo_src) ? amo_mem_rdata : amo_src;
        AMO_MAX : amo_mem_wdata = $signed(amo_mem_rdata) > $signed(amo_src) ? amo_mem_rdata : amo_src;
        AMO_MINU: amo_mem_wdata = amo_mem_rdata < amo_src ? amo_mem_rdata : amo_src;
        AMO_MAXU: amo_mem_wdata = amo_mem_rdata > amo_src ? amo_mem_rdata : amo_src;
    endcase
end

endmodule
module amo (
    input                          clk,
    input                          rstn,
    input        [`AMO_OP_LEN-1:0] amo_op,
    input        [      `XLEN-1:0] amo_src,
    

    input        [      `XLEN-1:0] amo_mem_rdata,
    output logic [      `XLEN-1:0] amo_mem_wdata
);


`include "amo_op.sv"

always_comb begin
    amo_mem_wdata = `XLEN'b0;
    case (amo_op)
        AMO_SWAP: amo_mem_wdata = amo_src;
        AMO_ADD : amo_mem_wdata = amo_mem_rdata + amo_src;
        AMO_XOR : amo_mem_wdata = amo_mem_rdata ^ amo_src;
        AMO_AND : amo_mem_wdata = amo_mem_rdata & amo_src;
        AMO_OR  : amo_mem_wdata = amo_mem_rdata | amo_src;
        AMO_MIN : amo_mem_wdata = $signed(amo_mem_rdata) < $signed(amo_src) ? amo_mem_rdata : amo_src;
        AMO_MAX : amo_mem_wdata = $signed(amo_mem_rdata) > $signed(amo_src) ? amo_mem_rdata : amo_src;
        AMO_MINU: amo_mem_wdata = amo_mem_rdata < amo_src ? amo_mem_rdata : amo_src;
        AMO_MAXU: amo_mem_wdata = amo_mem_rdata > amo_src ? amo_mem_rdata : amo_src;
    endcase
end

endmodule