Your combinational logic for RD1 and RD2 seems to be incorrect
"assign RD1 = (~rst) ? 32'd0 : Register[A1];
assign RD2 = (~rst) ? 32'd0 : Register[A2];"
In this code, the values of RD1 and RD2 is set to zero when reset is 0. That means during reset, you are trying to read from the register file, and when not in reset, you are assigning the actual register values which is the opposite of what should happen.
This logic is reversed. Normally, when reset is active, the outputs should be zero, and when reset is inactive, the outputs should reflect the values stored in the register file.
Your combinational logic for RD1 and RD2 seems to be incorrect
"assign RD1 = (~rst) ? 32'd0 : Register[A1];
assign RD2 = (~rst) ? 32'd0 : Register[A2];"
In this code, the values of RD1 and RD2 is set to zero when reset is 0. That means during reset, you are trying to read from the register file, and when not in reset, you are assigning the actual register values which is the opposite of what should happen.
This logic is reversed. Normally, when reset is active, the outputs should be zero, and when reset is inactive, the outputs should reflect the values stored in the register file.