feat(L09): add load and store semantics card
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
module tb;
|
||||
logic clk=0, request=0, write_enable=0;
|
||||
logic [31:0] address=0, write_data=0, read_data;
|
||||
logic [2:0] funct3=0;
|
||||
logic fault;
|
||||
string trace_file;
|
||||
load_store_unit dut (.*);
|
||||
always #1 clk=~clk;
|
||||
task automatic store(input logic [31:0] addr, input logic [2:0] size, input logic [31:0] data);
|
||||
@(negedge clk); request=1; write_enable=1; address=addr; funct3=size; write_data=data;
|
||||
@(posedge clk); #1;
|
||||
endtask
|
||||
initial begin
|
||||
if ($value$plusargs("trace=%s", trace_file)) begin $dumpfile(trace_file); $dumpvars(0, tb); end
|
||||
store(0,2,32'h11223344); store(1,0,32'haa);
|
||||
@(negedge clk); write_enable=0; address=0; funct3=2; #1;
|
||||
if(read_data!==32'h1122aa44||fault)$fatal(1,"FAIL word=%h",read_data);
|
||||
address=1; funct3=0; #1; if(read_data!==32'hffffffaa||fault)$fatal(1,"FAIL LB=%h",read_data);
|
||||
funct3=4; #1; if(read_data!==32'haa||fault)$fatal(1,"FAIL LBU=%h",read_data);
|
||||
address=2; funct3=2; #1; if(!fault||read_data!==0)$fatal(1,"FAIL fault=%b data=%h",fault,read_data);
|
||||
$display("PASS task03 word=1122aa44 lb=ffffffaa lbu=000000aa fault=1");
|
||||
$finish;
|
||||
end
|
||||
endmodule
|
||||
Reference in New Issue
Block a user