-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbr_cond.sv
22 lines (20 loc) · 793 Bytes
/
br_cond.sv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module br_cond
(
input logic [31:0] rdata1,
input logic [31:0] rdata2,
input logic [ 2:0] br_type,
output logic br_taken
);
always_comb
begin
case (br_type)
3'b000: br_taken = $signed (rdata1) == $signed(rdata2) ? 1 : 0; // BEQ
3'b001: br_taken = $signed (rdata1) != $signed(rdata2) ? 1 : 0; // BNE
3'b100: br_taken = $signed (rdata1) < $signed(rdata2) ? 1 : 0; // BLT
3'b101: br_taken = $signed (rdata1) >= $signed(rdata2) ? 1 : 0; // BGE
3'b110: br_taken = $unsigned(rdata1) < $unsigned(rdata2) ? 1 : 0; // BLTU
3'b111: br_taken = $unsigned(rdata1) >= $unsigned(rdata2) ? 1 : 0; // BGEU
default: br_taken = 0;
endcase
end
endmodule