`timescale 1ns / 1ps module HazardUnit ( input [1:0] PC_jump, input is_loadword, input PC_branch, output [1:0] IFID_source, output IDEX_source, output IF_need_stall ); wire is_jump; assign is_jump = PC_jump == 2'b01 || PC_jump == 2'b10; assign IFID_source = (is_loadword == 1'b1) ? 2'b10 : (PC_branch == 1'b1 || is_jump == 1'b1) ? 2'b01 : 2'b00; assign IDEX_source = (is_loadword == 1'b1 || PC_branch == 1'b1 || is_jump == 1'b1) ? 1 : 0; assign IF_need_stall = (is_loadword == 1'b1) ? 1 : 0; endmodule