89 lines
3.8 KiB
Systemverilog
89 lines
3.8 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module BreakpointUnit(
|
|
input io_status_debug,
|
|
io_bp_0_control_action,
|
|
input [1:0] io_bp_0_control_tmatch,
|
|
input io_bp_0_control_x,
|
|
io_bp_0_control_w,
|
|
io_bp_0_control_r,
|
|
input [32:0] io_bp_0_address,
|
|
io_pc,
|
|
io_ea,
|
|
output io_xcpt_if,
|
|
io_xcpt_ld,
|
|
io_xcpt_st,
|
|
io_debug_if,
|
|
io_debug_ld,
|
|
io_debug_st
|
|
);
|
|
|
|
wire _w_T_2 = io_ea >= io_bp_0_address;
|
|
wire [32:0] _w_T_5 = ~io_ea;
|
|
wire _r_T_8 = io_bp_0_control_tmatch[0] & io_bp_0_address[0];
|
|
wire _r_T_10 = _r_T_8 & io_bp_0_address[1];
|
|
wire [32:0] _x_T_15 = ~io_bp_0_address;
|
|
wire _r_T_18 = io_bp_0_control_tmatch[0] & io_bp_0_address[0];
|
|
wire _r_T_20 = _r_T_18 & io_bp_0_address[1];
|
|
wire r =
|
|
~io_status_debug & io_bp_0_control_r
|
|
& (io_bp_0_control_tmatch[1]
|
|
? _w_T_2 ^ io_bp_0_control_tmatch[0]
|
|
: {_w_T_5[32:4],
|
|
_w_T_5[3:0]
|
|
| {_r_T_10 & io_bp_0_address[2],
|
|
_r_T_10,
|
|
_r_T_8,
|
|
io_bp_0_control_tmatch[0]}} == {_x_T_15[32:4],
|
|
_x_T_15[3:0]
|
|
| {_r_T_20 & io_bp_0_address[2],
|
|
_r_T_20,
|
|
_r_T_18,
|
|
io_bp_0_control_tmatch[0]}});
|
|
wire _w_T_8 = io_bp_0_control_tmatch[0] & io_bp_0_address[0];
|
|
wire _w_T_10 = _w_T_8 & io_bp_0_address[1];
|
|
wire _w_T_18 = io_bp_0_control_tmatch[0] & io_bp_0_address[0];
|
|
wire _w_T_20 = _w_T_18 & io_bp_0_address[1];
|
|
wire w =
|
|
~io_status_debug & io_bp_0_control_w
|
|
& (io_bp_0_control_tmatch[1]
|
|
? _w_T_2 ^ io_bp_0_control_tmatch[0]
|
|
: {_w_T_5[32:4],
|
|
_w_T_5[3:0]
|
|
| {_w_T_10 & io_bp_0_address[2],
|
|
_w_T_10,
|
|
_w_T_8,
|
|
io_bp_0_control_tmatch[0]}} == {_x_T_15[32:4],
|
|
_x_T_15[3:0]
|
|
| {_w_T_20 & io_bp_0_address[2],
|
|
_w_T_20,
|
|
_w_T_18,
|
|
io_bp_0_control_tmatch[0]}});
|
|
wire [32:0] _x_T_5 = ~io_pc;
|
|
wire _x_T_8 = io_bp_0_control_tmatch[0] & io_bp_0_address[0];
|
|
wire _x_T_10 = _x_T_8 & io_bp_0_address[1];
|
|
wire _x_T_18 = io_bp_0_control_tmatch[0] & io_bp_0_address[0];
|
|
wire _x_T_20 = _x_T_18 & io_bp_0_address[1];
|
|
wire x =
|
|
~io_status_debug & io_bp_0_control_x
|
|
& (io_bp_0_control_tmatch[1]
|
|
? io_pc >= io_bp_0_address ^ io_bp_0_control_tmatch[0]
|
|
: {_x_T_5[32:4],
|
|
_x_T_5[3:0]
|
|
| {_x_T_10 & io_bp_0_address[2],
|
|
_x_T_10,
|
|
_x_T_8,
|
|
io_bp_0_control_tmatch[0]}} == {_x_T_15[32:4],
|
|
_x_T_15[3:0]
|
|
| {_x_T_20 & io_bp_0_address[2],
|
|
_x_T_20,
|
|
_x_T_18,
|
|
io_bp_0_control_tmatch[0]}});
|
|
assign io_xcpt_if = x & ~io_bp_0_control_action;
|
|
assign io_xcpt_ld = r & ~io_bp_0_control_action;
|
|
assign io_xcpt_st = w & ~io_bp_0_control_action;
|
|
assign io_debug_if = x & io_bp_0_control_action;
|
|
assign io_debug_ld = r & io_bp_0_control_action;
|
|
assign io_debug_st = w & io_bp_0_control_action;
|
|
endmodule
|
|
|