/* Machine-generated using Migen */
module top(
	inout clk_if,
	inout i2c_scl,
	inout i2c_sda,
	output fx2_sloe,
	output fx2_slrd,
	output fx2_slwr,
	output fx2_pktend,
	output [1:0] fx2_fifoadr,
	input [3:0] fx2_flag,
	inout [7:0] fx2_fd,
	inout [7:0] io,
	inout [7:0] io_1
);

wire por_clk;
wire sys_clk;
wire sys_rst;
wire clk_buf;
reg [10:0] reset_delay = 11'd2047;
wire tstriple0_o0;
wire tstriple0_oe0;
wire tstriple0_i0;
wire tstriple1_o0;
wire tstriple1_oe0;
wire tstriple1_i0;
wire [6:0] i2c_slave_address;
reg i2c_slave_start;
wire i2c_slave_stop;
wire i2c_slave_write;
reg [7:0] i2c_slave_data_i = 8'd0;
reg i2c_slave_ack_o;
wire i2c_slave_read;
wire [7:0] i2c_slave_data_o;
wire i2c_slave_scl_i;
reg i2c_slave_scl_o = 1'd1;
wire i2c_slave_sda_i;
reg i2c_slave_sda_o = 1'd1;
wire i2c_slave_bus_sample;
wire i2c_slave_bus_setup;
wire i2c_slave_bus_start;
wire i2c_slave_bus_stop;
reg i2c_slave_scl_r = 1'd1;
reg i2c_slave_sda_r = 1'd1;
reg [2:0] i2c_slave_bitno = 3'd0;
reg [7:0] i2c_slave_shreg_i = 8'd0;
reg [7:0] i2c_slave_shreg_o = 8'd0;
reg i2c_slave_signal_is_el0 = 1'd1;
wire i2c_slave_fsm_is_el0;
reg i2c_slave_signal_is_el1 = 1'd0;
wire i2c_slave_fsm_is_el1;
wire i2c_slave_fsm_is_el2;
reg [7:0] registers_address = 8'd0;
reg dummyfifo0_we;
reg dummyfifo0_writable = 1'd0;
reg [7:0] dummyfifo0_din;
reg dummyfifo1_we;
reg dummyfifo1_writable = 1'd0;
reg [7:0] dummyfifo1_din;
reg dummyfifo2_re;
reg dummyfifo2_readable = 1'd0;
reg [7:0] dummyfifo2_dout = 8'd0;
reg dummyfifo3_re;
reg dummyfifo3_readable = 1'd0;
reg [7:0] dummyfifo3_dout = 8'd0;
wire tstriple0_o1;
wire tstriple0_oe1;
wire tstriple0_i1;
wire tstriple1_o1;
wire tstriple1_oe1;
wire tstriple1_i1;
wire tstriple2_o0;
wire tstriple2_oe0;
wire tstriple2_i0;
wire tstriple3_o0;
wire tstriple3_oe0;
wire tstriple3_i0;
wire tstriple4_o0;
wire tstriple4_oe0;
wire tstriple4_i0;
wire tstriple5_o0;
wire tstriple5_oe0;
wire tstriple5_i0;
wire tstriple6_o0;
wire tstriple6_oe0;
wire tstriple6_i0;
wire tstriple7_o0;
wire tstriple7_oe0;
wire tstriple7_i0;
wire tstriple0_o2;
wire tstriple0_oe2;
wire tstriple0_i2;
wire tstriple1_o2;
wire tstriple1_oe2;
wire tstriple1_i2;
wire tstriple2_o1;
wire tstriple2_oe1;
wire tstriple2_i1;
wire tstriple3_o1;
wire tstriple3_oe1;
wire tstriple3_i1;
wire tstriple4_o1;
wire tstriple4_oe1;
wire tstriple4_i1;
wire tstriple5_o1;
wire tstriple5_oe1;
wire tstriple5_i1;
wire tstriple6_o1;
wire tstriple6_oe1;
wire tstriple6_i1;
wire tstriple7_o1;
wire tstriple7_oe1;
wire tstriple7_i1;
reg [7:0] reg0 = 8'd0;
reg [7:0] reg1 = 8'd0;
wire [7:0] reg2;
reg ro_reg_dummy0 = 1'd0;
reg [7:0] reg3 = 8'd0;
reg [7:0] reg4 = 8'd0;
wire [7:0] reg5;
reg ro_reg_dummy1 = 1'd0;
reg [2:0] i2cslave_state = 3'd0;
reg [2:0] i2cslave_next_state;
reg [2:0] i2c_slave_bitno_i2cslave_next_value;
reg i2c_slave_bitno_i2cslave_next_value_ce;
reg [7:0] i2c_slave_shreg_i_i2cslave_t_next_value;
reg i2c_slave_shreg_i_i2cslave_t_next_value_ce;
reg i2c_slave_sda_o_i2cslave_f_next_value0;
reg i2c_slave_sda_o_i2cslave_f_next_value_ce0;
reg [7:0] i2c_slave_shreg_o_i2cslave_f_next_value1;
reg i2c_slave_shreg_o_i2cslave_f_next_value_ce1;
reg [7:0] i2c_slave_data_i_i2cslave_f_next_value2;
reg i2c_slave_data_i_i2cslave_f_next_value_ce2;
reg latch_addr = 1'd0;
reg [1:0] fx2arbiter_addr = 2'd0;
wire [7:0] fx2arbiter_o;
reg fx2arbiter_oe = 1'd0;
wire [7:0] fx2arbiter_i;
reg fx2arbiter_sloe = 1'd0;
reg fx2arbiter_slrd;
reg fx2arbiter_slwr;
reg fx2arbiter_pend;
wire [3:0] fx2arbiter_rdy;
reg [1:0] fx2arbiter_naddr;
reg [2:0] fx2arbiter_state = 3'd0;
reg [2:0] fx2arbiter_next_state;
reg [1:0] fx2arbiter_addr_fx2arbiter_next_value;
reg fx2arbiter_addr_fx2arbiter_next_value_ce;
reg fx2arbiter_sloe_fx2arbiter_t_next_value;
reg fx2arbiter_sloe_fx2arbiter_t_next_value_ce;
reg fx2arbiter_oe_fx2arbiter_f_next_value;
reg fx2arbiter_oe_fx2arbiter_f_next_value_ce;
reg [7:0] rhs_array_muxed0;
wire [7:0] lhs_array_muxed;
reg [7:0] rhs_array_muxed1;
reg basiclowerer_array_muxed0;
reg t_array_muxed0;
reg rhs_array_muxed2;
reg basiclowerer_array_muxed1;
reg t_array_muxed1;
reg basiclowerer_array_muxed2;
reg t_array_muxed2;
reg [7:0] array_muxed = 8'd0;
reg multiregimpl0_regs0 = 1'd1;
reg multiregimpl0_regs1 = 1'd1;
reg multiregimpl1_regs0 = 1'd1;
reg multiregimpl1_regs1 = 1'd1;


// Adding a dummy event (using a dummy signal 'dummy_s') to get the simulator
// to run the combinatorial process once at the beginning.
// synthesis translate_off
reg dummy_s;
initial dummy_s <= 1'd0;
// synthesis translate_on

assign i2c_slave_address = 4'd8;
assign sys_clk = por_clk;
assign sys_rst = (reset_delay != 1'd0);
assign i2c_slave_stop = i2c_slave_signal_is_el0;
assign i2c_slave_write = i2c_slave_signal_is_el1;
assign i2c_slave_read = i2c_slave_fsm_is_el2;
assign tstriple0_o0 = 1'd0;
assign tstriple0_oe0 = (~i2c_slave_scl_o);
assign tstriple1_o0 = 1'd0;
assign tstriple1_oe0 = (~i2c_slave_sda_o);
assign i2c_slave_bus_sample = ((~i2c_slave_scl_r) & i2c_slave_scl_i);
assign i2c_slave_bus_setup = (i2c_slave_scl_r & (~i2c_slave_scl_i));
assign i2c_slave_bus_start = ((i2c_slave_scl_i & i2c_slave_sda_r) & (~i2c_slave_sda_i));
assign i2c_slave_bus_stop = ((i2c_slave_scl_i & (~i2c_slave_sda_r)) & i2c_slave_sda_i);

// synthesis translate_off
reg dummy_d;
// synthesis translate_on
always @(*) begin
	i2c_slave_start <= 1'd0;
	i2cslave_next_state <= 3'd0;
	i2c_slave_bitno_i2cslave_next_value <= 3'd0;
	i2c_slave_bitno_i2cslave_next_value_ce <= 1'd0;
	i2c_slave_shreg_i_i2cslave_t_next_value <= 8'd0;
	i2c_slave_shreg_i_i2cslave_t_next_value_ce <= 1'd0;
	i2c_slave_sda_o_i2cslave_f_next_value0 <= 1'd0;
	i2c_slave_sda_o_i2cslave_f_next_value_ce0 <= 1'd0;
	i2c_slave_shreg_o_i2cslave_f_next_value1 <= 8'd0;
	i2c_slave_shreg_o_i2cslave_f_next_value_ce1 <= 1'd0;
	i2c_slave_data_i_i2cslave_f_next_value2 <= 8'd0;
	i2c_slave_data_i_i2cslave_f_next_value_ce2 <= 1'd0;
	i2cslave_next_state <= i2cslave_state;
	case (i2cslave_state)
		1'd1: begin
			if (i2c_slave_bus_stop) begin
				i2cslave_next_state <= 1'd0;
			end else begin
				if (i2c_slave_bus_setup) begin
					i2c_slave_bitno_i2cslave_next_value <= 1'd0;
					i2c_slave_bitno_i2cslave_next_value_ce <= 1'd1;
					i2cslave_next_state <= 2'd2;
				end
			end
		end
		2'd2: begin
			if (i2c_slave_bus_stop) begin
				i2cslave_next_state <= 1'd0;
			end else begin
				if (i2c_slave_bus_start) begin
					i2cslave_next_state <= 1'd1;
				end else begin
					if (i2c_slave_bus_sample) begin
						i2c_slave_shreg_i_i2cslave_t_next_value <= ((i2c_slave_shreg_i <<< 1'd1) | i2c_slave_sda_i);
						i2c_slave_shreg_i_i2cslave_t_next_value_ce <= 1'd1;
					end else begin
						if (i2c_slave_bus_setup) begin
							i2c_slave_bitno_i2cslave_next_value <= (i2c_slave_bitno + 1'd1);
							i2c_slave_bitno_i2cslave_next_value_ce <= 1'd1;
							if ((i2c_slave_bitno == 3'd7)) begin
								if ((i2c_slave_shreg_i[7:1] == i2c_slave_address)) begin
									i2c_slave_sda_o_i2cslave_f_next_value0 <= 1'd0;
									i2c_slave_sda_o_i2cslave_f_next_value_ce0 <= 1'd1;
									i2cslave_next_state <= 2'd3;
								end else begin
									i2cslave_next_state <= 1'd0;
								end
							end
						end
					end
				end
			end
		end
		2'd3: begin
			if (i2c_slave_bus_stop) begin
				i2cslave_next_state <= 1'd0;
			end else begin
				if (i2c_slave_bus_start) begin
					i2cslave_next_state <= 1'd1;
				end else begin
					if (i2c_slave_bus_setup) begin
						if ((~i2c_slave_shreg_i[0])) begin
							i2c_slave_start <= 1'd1;
							i2c_slave_sda_o_i2cslave_f_next_value0 <= 1'd1;
							i2c_slave_sda_o_i2cslave_f_next_value_ce0 <= 1'd1;
							i2cslave_next_state <= 3'd4;
						end
					end else begin
						if (i2c_slave_bus_sample) begin
							if (i2c_slave_shreg_i[0]) begin
								i2c_slave_start <= 1'd1;
								i2cslave_next_state <= 3'd6;
								i2c_slave_shreg_o_i2cslave_f_next_value1 <= i2c_slave_data_o;
								i2c_slave_shreg_o_i2cslave_f_next_value_ce1 <= 1'd1;
							end
						end
					end
				end
			end
		end
		3'd4: begin
			if (i2c_slave_bus_stop) begin
				i2cslave_next_state <= 1'd0;
			end else begin
				if (i2c_slave_bus_start) begin
					i2cslave_next_state <= 1'd1;
				end else begin
					if (i2c_slave_bus_sample) begin
						i2c_slave_shreg_i_i2cslave_t_next_value <= ((i2c_slave_shreg_i <<< 1'd1) | i2c_slave_sda_i);
						i2c_slave_shreg_i_i2cslave_t_next_value_ce <= 1'd1;
					end else begin
						if (i2c_slave_bus_setup) begin
							i2c_slave_bitno_i2cslave_next_value <= (i2c_slave_bitno + 1'd1);
							i2c_slave_bitno_i2cslave_next_value_ce <= 1'd1;
							if ((i2c_slave_bitno == 3'd7)) begin
								i2c_slave_data_i_i2cslave_f_next_value2 <= i2c_slave_shreg_i;
								i2c_slave_data_i_i2cslave_f_next_value_ce2 <= 1'd1;
								i2cslave_next_state <= 3'd5;
							end
						end
					end
				end
			end
		end
		3'd5: begin
			if (i2c_slave_bus_stop) begin
				i2cslave_next_state <= 1'd0;
			end else begin
				if (i2c_slave_bus_start) begin
					i2cslave_next_state <= 1'd1;
				end else begin
					if (((~i2c_slave_scl_i) & i2c_slave_ack_o)) begin
						i2c_slave_sda_o_i2cslave_f_next_value0 <= 1'd0;
						i2c_slave_sda_o_i2cslave_f_next_value_ce0 <= 1'd1;
					end else begin
						if (i2c_slave_bus_setup) begin
							i2c_slave_sda_o_i2cslave_f_next_value0 <= 1'd1;
							i2c_slave_sda_o_i2cslave_f_next_value_ce0 <= 1'd1;
							i2cslave_next_state <= 3'd4;
						end
					end
				end
			end
		end
		3'd6: begin
			if (i2c_slave_bus_stop) begin
				i2cslave_next_state <= 1'd0;
			end else begin
				if (i2c_slave_bus_start) begin
					i2cslave_next_state <= 1'd1;
				end else begin
					if (i2c_slave_bus_setup) begin
						i2c_slave_bitno_i2cslave_next_value <= (i2c_slave_bitno + 1'd1);
						i2c_slave_bitno_i2cslave_next_value_ce <= 1'd1;
						i2c_slave_sda_o_i2cslave_f_next_value0 <= i2c_slave_shreg_o[7];
						i2c_slave_sda_o_i2cslave_f_next_value_ce0 <= 1'd1;
						i2c_slave_shreg_o_i2cslave_f_next_value1 <= (i2c_slave_shreg_o <<< 1'd1);
						i2c_slave_shreg_o_i2cslave_f_next_value_ce1 <= 1'd1;
					end else begin
						if (i2c_slave_bus_sample) begin
							if ((i2c_slave_bitno == 1'd0)) begin
								i2c_slave_sda_o_i2cslave_f_next_value0 <= 1'd1;
								i2c_slave_sda_o_i2cslave_f_next_value_ce0 <= 1'd1;
								i2cslave_next_state <= 3'd7;
							end
						end
					end
				end
			end
		end
		3'd7: begin
			if (i2c_slave_bus_stop) begin
				i2cslave_next_state <= 1'd0;
			end else begin
				if (i2c_slave_bus_start) begin
					i2cslave_next_state <= 1'd1;
				end else begin
					if (i2c_slave_bus_sample) begin
						if ((~i2c_slave_sda_i)) begin
							i2cslave_next_state <= 3'd6;
						end else begin
							i2cslave_next_state <= 1'd0;
						end
					end
				end
			end
		end
		default: begin
			if (i2c_slave_bus_start) begin
				i2cslave_next_state <= 1'd1;
			end
		end
	endcase
// synthesis translate_off
	dummy_d <= dummy_s;
// synthesis translate_on
end
assign i2c_slave_fsm_is_el0 = ((~(i2cslave_state == 1'd0)) & (i2cslave_next_state == 1'd0));
assign i2c_slave_fsm_is_el1 = ((~(i2cslave_state == 3'd5)) & (i2cslave_next_state == 3'd5));
assign i2c_slave_fsm_is_el2 = ((~(i2cslave_state == 3'd6)) & (i2cslave_next_state == 3'd6));
assign i2c_slave_data_o = rhs_array_muxed0;

// synthesis translate_off
reg dummy_d_1;
// synthesis translate_on
always @(*) begin
	i2c_slave_ack_o <= 1'd0;
	if (i2c_slave_write) begin
		if ((latch_addr & (i2c_slave_data_i < 3'd6))) begin
			i2c_slave_ack_o <= 1'd1;
		end else begin
			if ((~latch_addr)) begin
				i2c_slave_ack_o <= 1'd1;
			end
		end
	end
// synthesis translate_off
	dummy_d_1 <= dummy_s;
// synthesis translate_on
end
assign fx2_fifoadr = fx2arbiter_addr;
assign fx2arbiter_rdy = (fx2_flag & {dummyfifo3_readable, dummyfifo2_readable, dummyfifo1_writable, dummyfifo0_writable});
assign lhs_array_muxed = fx2arbiter_i;

// synthesis translate_off
reg dummy_d_2;
// synthesis translate_on
always @(*) begin
	dummyfifo0_din <= 8'd0;
	dummyfifo1_din <= 8'd0;
	case (fx2arbiter_addr[0])
		1'd0: begin
			dummyfifo0_din <= lhs_array_muxed;
		end
		default: begin
			dummyfifo1_din <= lhs_array_muxed;
		end
	endcase
// synthesis translate_off
	dummy_d_2 <= dummy_s;
// synthesis translate_on
end
assign fx2arbiter_o = rhs_array_muxed1;
assign fx2_sloe = (~fx2arbiter_sloe);
assign fx2_slrd = (~fx2arbiter_slrd);
assign fx2_slwr = (~fx2arbiter_slwr);
assign fx2_pktend = (~fx2arbiter_pend);

// synthesis translate_off
reg dummy_d_3;
// synthesis translate_on
always @(*) begin
	fx2arbiter_naddr <= 2'd0;
	case ({fx2arbiter_addr, fx2arbiter_rdy})
		1'd0: begin
			fx2arbiter_naddr <= 1'd1;
		end
		1'd1: begin
			fx2arbiter_naddr <= 1'd0;
		end
		2'd2: begin
			fx2arbiter_naddr <= 1'd1;
		end
		2'd3: begin
			fx2arbiter_naddr <= 1'd0;
		end
		3'd4: begin
			fx2arbiter_naddr <= 2'd2;
		end
		3'd5: begin
			fx2arbiter_naddr <= 1'd0;
		end
		3'd6: begin
			fx2arbiter_naddr <= 1'd1;
		end
		3'd7: begin
			fx2arbiter_naddr <= 1'd0;
		end
		4'd8: begin
			fx2arbiter_naddr <= 2'd3;
		end
		4'd9: begin
			fx2arbiter_naddr <= 1'd0;
		end
		4'd10: begin
			fx2arbiter_naddr <= 1'd1;
		end
		4'd11: begin
			fx2arbiter_naddr <= 1'd0;
		end
		4'd12: begin
			fx2arbiter_naddr <= 2'd2;
		end
		4'd13: begin
			fx2arbiter_naddr <= 1'd0;
		end
		4'd14: begin
			fx2arbiter_naddr <= 1'd1;
		end
		4'd15: begin
			fx2arbiter_naddr <= 1'd0;
		end
		5'd16: begin
			fx2arbiter_naddr <= 2'd2;
		end
		5'd17: begin
			fx2arbiter_naddr <= 1'd0;
		end
		5'd18: begin
			fx2arbiter_naddr <= 1'd1;
		end
		5'd19: begin
			fx2arbiter_naddr <= 1'd1;
		end
		5'd20: begin
			fx2arbiter_naddr <= 2'd2;
		end
		5'd21: begin
			fx2arbiter_naddr <= 2'd2;
		end
		5'd22: begin
			fx2arbiter_naddr <= 1'd1;
		end
		5'd23: begin
			fx2arbiter_naddr <= 1'd1;
		end
		5'd24: begin
			fx2arbiter_naddr <= 2'd3;
		end
		5'd25: begin
			fx2arbiter_naddr <= 2'd3;
		end
		5'd26: begin
			fx2arbiter_naddr <= 1'd1;
		end
		5'd27: begin
			fx2arbiter_naddr <= 1'd1;
		end
		5'd28: begin
			fx2arbiter_naddr <= 2'd2;
		end
		5'd29: begin
			fx2arbiter_naddr <= 2'd2;
		end
		5'd30: begin
			fx2arbiter_naddr <= 1'd1;
		end
		5'd31: begin
			fx2arbiter_naddr <= 1'd1;
		end
		6'd32: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd33: begin
			fx2arbiter_naddr <= 1'd0;
		end
		6'd34: begin
			fx2arbiter_naddr <= 1'd1;
		end
		6'd35: begin
			fx2arbiter_naddr <= 1'd0;
		end
		6'd36: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd37: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd38: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd39: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd40: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd41: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd42: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd43: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd44: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd45: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd46: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd47: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd48: begin
			fx2arbiter_naddr <= 1'd0;
		end
		6'd49: begin
			fx2arbiter_naddr <= 1'd0;
		end
		6'd50: begin
			fx2arbiter_naddr <= 1'd1;
		end
		6'd51: begin
			fx2arbiter_naddr <= 1'd0;
		end
		6'd52: begin
			fx2arbiter_naddr <= 2'd2;
		end
		6'd53: begin
			fx2arbiter_naddr <= 1'd0;
		end
		6'd54: begin
			fx2arbiter_naddr <= 1'd1;
		end
		6'd55: begin
			fx2arbiter_naddr <= 1'd0;
		end
		6'd56: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd57: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd58: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd59: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd60: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd61: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd62: begin
			fx2arbiter_naddr <= 2'd3;
		end
		6'd63: begin
			fx2arbiter_naddr <= 2'd3;
		end
	endcase
// synthesis translate_off
	dummy_d_3 <= dummy_s;
// synthesis translate_on
end

// synthesis translate_off
reg dummy_d_4;
// synthesis translate_on
always @(*) begin
	dummyfifo0_we <= 1'd0;
	dummyfifo1_we <= 1'd0;
	dummyfifo2_re <= 1'd0;
	dummyfifo3_re <= 1'd0;
	fx2arbiter_slrd <= 1'd0;
	fx2arbiter_slwr <= 1'd0;
	fx2arbiter_pend <= 1'd0;
	fx2arbiter_next_state <= 3'd0;
	fx2arbiter_addr_fx2arbiter_next_value <= 2'd0;
	fx2arbiter_addr_fx2arbiter_next_value_ce <= 1'd0;
	fx2arbiter_sloe_fx2arbiter_t_next_value <= 1'd0;
	fx2arbiter_sloe_fx2arbiter_t_next_value_ce <= 1'd0;
	fx2arbiter_oe_fx2arbiter_f_next_value <= 1'd0;
	fx2arbiter_oe_fx2arbiter_f_next_value_ce <= 1'd0;
	t_array_muxed0 <= 1'd0;
	t_array_muxed1 <= 1'd0;
	t_array_muxed2 <= 1'd0;
	fx2arbiter_next_state <= fx2arbiter_state;
	case (fx2arbiter_state)
		1'd1: begin
			if (fx2arbiter_addr[1]) begin
				fx2arbiter_sloe_fx2arbiter_t_next_value <= 1'd0;
				fx2arbiter_sloe_fx2arbiter_t_next_value_ce <= 1'd1;
				fx2arbiter_next_state <= 2'd2;
			end else begin
				fx2arbiter_oe_fx2arbiter_f_next_value <= 1'd0;
				fx2arbiter_oe_fx2arbiter_f_next_value_ce <= 1'd1;
				fx2arbiter_next_state <= 3'd5;
			end
		end
		2'd2: begin
			fx2arbiter_oe_fx2arbiter_f_next_value <= 1'd1;
			fx2arbiter_oe_fx2arbiter_f_next_value_ce <= 1'd1;
			fx2arbiter_next_state <= 2'd3;
		end
		2'd3: begin
			if (basiclowerer_array_muxed0) begin
				fx2arbiter_slwr <= 1'd1;
				t_array_muxed0 <= 1'd1;
				case (fx2arbiter_addr[0])
					1'd0: begin
						dummyfifo2_re <= t_array_muxed0;
					end
					default: begin
						dummyfifo3_re <= t_array_muxed0;
					end
				endcase
				if ((~(fx2_flag & (1'd1 <<< fx2arbiter_addr)))) begin
					fx2arbiter_next_state <= 3'd4;
				end
			end else begin
				fx2arbiter_pend <= (~rhs_array_muxed2);
				fx2arbiter_next_state <= 1'd0;
			end
		end
		3'd4: begin
			if (basiclowerer_array_muxed1) begin
				fx2arbiter_slwr <= 1'd1;
				t_array_muxed1 <= 1'd1;
				case (fx2arbiter_addr[0])
					1'd0: begin
						dummyfifo2_re <= t_array_muxed1;
					end
					default: begin
						dummyfifo3_re <= t_array_muxed1;
					end
				endcase
				fx2arbiter_next_state <= 1'd0;
			end else begin
				if ((~basiclowerer_array_muxed2)) begin
					fx2arbiter_pend <= 1'd1;
					fx2arbiter_next_state <= 1'd0;
				end
			end
		end
		3'd5: begin
			fx2arbiter_sloe_fx2arbiter_t_next_value <= 1'd1;
			fx2arbiter_sloe_fx2arbiter_t_next_value_ce <= 1'd1;
			fx2arbiter_next_state <= 3'd6;
		end
		3'd6: begin
			if ((fx2arbiter_rdy & (1'd1 <<< fx2arbiter_addr))) begin
				fx2arbiter_slrd <= 1'd1;
				t_array_muxed2 <= 1'd1;
				case (fx2arbiter_addr[0])
					1'd0: begin
						dummyfifo0_we <= t_array_muxed2;
					end
					default: begin
						dummyfifo1_we <= t_array_muxed2;
					end
				endcase
			end else begin
				fx2arbiter_next_state <= 1'd0;
			end
		end
		default: begin
			fx2arbiter_addr_fx2arbiter_next_value <= fx2arbiter_naddr;
			fx2arbiter_addr_fx2arbiter_next_value_ce <= 1'd1;
			if (fx2arbiter_rdy) begin
				fx2arbiter_next_state <= 1'd1;
			end
		end
	endcase
// synthesis translate_off
	dummy_d_4 <= dummy_s;
// synthesis translate_on
end
assign {tstriple7_oe0, tstriple6_oe0, tstriple5_oe0, tstriple4_oe0, tstriple3_oe0, tstriple2_oe0, tstriple1_oe1, tstriple0_oe1} = reg0;
assign {tstriple7_o0, tstriple6_o0, tstriple5_o0, tstriple4_o0, tstriple3_o0, tstriple2_o0, tstriple1_o1, tstriple0_o1} = reg1;
assign reg2 = {tstriple7_i0, tstriple6_i0, tstriple5_i0, tstriple4_i0, tstriple3_i0, tstriple2_i0, tstriple1_i1, tstriple0_i1};
assign {tstriple7_oe1, tstriple6_oe1, tstriple5_oe1, tstriple4_oe1, tstriple3_oe1, tstriple2_oe1, tstriple1_oe2, tstriple0_oe2} = reg3;
assign {tstriple7_o1, tstriple6_o1, tstriple5_o1, tstriple4_o1, tstriple3_o1, tstriple2_o1, tstriple1_o2, tstriple0_o2} = reg4;
assign reg5 = {tstriple7_i1, tstriple6_i1, tstriple5_i1, tstriple4_i1, tstriple3_i1, tstriple2_i1, tstriple1_i2, tstriple0_i2};

// synthesis translate_off
reg dummy_d_5;
// synthesis translate_on
always @(*) begin
	rhs_array_muxed0 <= 8'd0;
	case (registers_address)
		1'd0: begin
			rhs_array_muxed0 <= reg0;
		end
		1'd1: begin
			rhs_array_muxed0 <= reg1;
		end
		2'd2: begin
			rhs_array_muxed0 <= reg2;
		end
		2'd3: begin
			rhs_array_muxed0 <= reg3;
		end
		3'd4: begin
			rhs_array_muxed0 <= reg4;
		end
		default: begin
			rhs_array_muxed0 <= reg5;
		end
	endcase
// synthesis translate_off
	dummy_d_5 <= dummy_s;
// synthesis translate_on
end

// synthesis translate_off
reg dummy_d_6;
// synthesis translate_on
always @(*) begin
	rhs_array_muxed1 <= 8'd0;
	case (fx2arbiter_addr[0])
		1'd0: begin
			rhs_array_muxed1 <= dummyfifo2_dout;
		end
		default: begin
			rhs_array_muxed1 <= dummyfifo3_dout;
		end
	endcase
// synthesis translate_off
	dummy_d_6 <= dummy_s;
// synthesis translate_on
end

// synthesis translate_off
reg dummy_d_7;
// synthesis translate_on
always @(*) begin
	basiclowerer_array_muxed0 <= 1'd0;
	case (fx2arbiter_addr[0])
		1'd0: begin
			basiclowerer_array_muxed0 <= dummyfifo2_readable;
		end
		default: begin
			basiclowerer_array_muxed0 <= dummyfifo3_readable;
		end
	endcase
// synthesis translate_off
	dummy_d_7 <= dummy_s;
// synthesis translate_on
end

// synthesis translate_off
reg dummy_d_8;
// synthesis translate_on
always @(*) begin
	rhs_array_muxed2 <= 1'd0;
	case (fx2arbiter_addr[0])
		1'd0: begin
			rhs_array_muxed2 <= 1'd0;
		end
		default: begin
			rhs_array_muxed2 <= 1'd0;
		end
	endcase
// synthesis translate_off
	dummy_d_8 <= dummy_s;
// synthesis translate_on
end

// synthesis translate_off
reg dummy_d_9;
// synthesis translate_on
always @(*) begin
	basiclowerer_array_muxed1 <= 1'd0;
	case (fx2arbiter_addr[0])
		1'd0: begin
			basiclowerer_array_muxed1 <= dummyfifo2_readable;
		end
		default: begin
			basiclowerer_array_muxed1 <= dummyfifo3_readable;
		end
	endcase
// synthesis translate_off
	dummy_d_9 <= dummy_s;
// synthesis translate_on
end

// synthesis translate_off
reg dummy_d_10;
// synthesis translate_on
always @(*) begin
	basiclowerer_array_muxed2 <= 1'd0;
	case (fx2arbiter_addr[0])
		1'd0: begin
			basiclowerer_array_muxed2 <= 1'd0;
		end
		default: begin
			basiclowerer_array_muxed2 <= 1'd0;
		end
	endcase
// synthesis translate_off
	dummy_d_10 <= dummy_s;
// synthesis translate_on
end
assign i2c_slave_scl_i = multiregimpl0_regs1;
assign i2c_slave_sda_i = multiregimpl1_regs1;

always @(posedge por_clk) begin
	if ((reset_delay != 1'd0)) begin
		reset_delay <= (reset_delay - 1'd1);
	end
end

always @(posedge sys_clk) begin
	i2c_slave_scl_r <= i2c_slave_scl_i;
	i2c_slave_sda_r <= i2c_slave_sda_i;
	i2c_slave_signal_is_el0 <= i2c_slave_fsm_is_el0;
	i2c_slave_signal_is_el1 <= i2c_slave_fsm_is_el1;
	i2cslave_state <= i2cslave_next_state;
	if (i2c_slave_bitno_i2cslave_next_value_ce) begin
		i2c_slave_bitno <= i2c_slave_bitno_i2cslave_next_value;
	end
	if (i2c_slave_shreg_i_i2cslave_t_next_value_ce) begin
		i2c_slave_shreg_i <= i2c_slave_shreg_i_i2cslave_t_next_value;
	end
	if (i2c_slave_sda_o_i2cslave_f_next_value_ce0) begin
		i2c_slave_sda_o <= i2c_slave_sda_o_i2cslave_f_next_value0;
	end
	if (i2c_slave_shreg_o_i2cslave_f_next_value_ce1) begin
		i2c_slave_shreg_o <= i2c_slave_shreg_o_i2cslave_f_next_value1;
	end
	if (i2c_slave_data_i_i2cslave_f_next_value_ce2) begin
		i2c_slave_data_i <= i2c_slave_data_i_i2cslave_f_next_value2;
	end
	if (i2c_slave_start) begin
		latch_addr <= 1'd1;
	end
	if (i2c_slave_write) begin
		if (latch_addr) begin
			if ((i2c_slave_data_i < 3'd6)) begin
				latch_addr <= 1'd0;
				registers_address <= i2c_slave_data_i;
			end
		end else begin
			array_muxed = i2c_slave_data_i;
			case (registers_address)
				1'd0: begin
					reg0 <= array_muxed;
				end
				1'd1: begin
					reg1 <= array_muxed;
				end
				2'd2: begin
					ro_reg_dummy0 <= array_muxed;
				end
				2'd3: begin
					reg3 <= array_muxed;
				end
				3'd4: begin
					reg4 <= array_muxed;
				end
				default: begin
					ro_reg_dummy1 <= array_muxed;
				end
			endcase
		end
	end
	fx2arbiter_state <= fx2arbiter_next_state;
	if (fx2arbiter_addr_fx2arbiter_next_value_ce) begin
		fx2arbiter_addr <= fx2arbiter_addr_fx2arbiter_next_value;
	end
	if (fx2arbiter_sloe_fx2arbiter_t_next_value_ce) begin
		fx2arbiter_sloe <= fx2arbiter_sloe_fx2arbiter_t_next_value;
	end
	if (fx2arbiter_oe_fx2arbiter_f_next_value_ce) begin
		fx2arbiter_oe <= fx2arbiter_oe_fx2arbiter_f_next_value;
	end
	if (sys_rst) begin
		i2c_slave_data_i <= 8'd0;
		i2c_slave_sda_o <= 1'd1;
		i2c_slave_scl_r <= 1'd1;
		i2c_slave_sda_r <= 1'd1;
		i2c_slave_bitno <= 3'd0;
		i2c_slave_shreg_i <= 8'd0;
		i2c_slave_shreg_o <= 8'd0;
		i2c_slave_signal_is_el0 <= 1'd1;
		i2c_slave_signal_is_el1 <= 1'd0;
		registers_address <= 8'd0;
		reg0 <= 8'd0;
		reg1 <= 8'd0;
		ro_reg_dummy0 <= 1'd0;
		reg3 <= 8'd0;
		reg4 <= 8'd0;
		ro_reg_dummy1 <= 1'd0;
		i2cslave_state <= 3'd0;
		latch_addr <= 1'd0;
		fx2arbiter_addr <= 2'd0;
		fx2arbiter_oe <= 1'd0;
		fx2arbiter_sloe <= 1'd0;
		fx2arbiter_state <= 3'd0;
	end
	multiregimpl0_regs0 <= tstriple0_i0;
	multiregimpl0_regs1 <= multiregimpl0_regs0;
	multiregimpl1_regs0 <= tstriple1_i0;
	multiregimpl1_regs1 <= multiregimpl1_regs0;
end

SB_IO #(
	.PIN_TYPE(6'd1)
) SB_IO (
	.PACKAGE_PIN(clk_if),
	.D_IN_0(clk_buf)
);

SB_GB SB_GB(
	.USER_SIGNAL_TO_GLOBAL_BUFFER(clk_buf),
	.GLOBAL_BUFFER_OUTPUT(por_clk)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_1 (
	.D_OUT_0(tstriple0_o0),
	.OUTPUT_ENABLE(tstriple0_oe0),
	.PACKAGE_PIN(i2c_scl),
	.D_IN_0(tstriple0_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_2 (
	.D_OUT_0(tstriple1_o0),
	.OUTPUT_ENABLE(tstriple1_oe0),
	.PACKAGE_PIN(i2c_sda),
	.D_IN_0(tstriple1_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_3 (
	.D_OUT_0(tstriple0_o1),
	.OUTPUT_ENABLE(tstriple0_oe1),
	.PACKAGE_PIN(io[0][0]),
	.D_IN_0(tstriple0_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_4 (
	.D_OUT_0(tstriple1_o1),
	.OUTPUT_ENABLE(tstriple1_oe1),
	.PACKAGE_PIN(io[1][0]),
	.D_IN_0(tstriple1_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_5 (
	.D_OUT_0(tstriple2_o0),
	.OUTPUT_ENABLE(tstriple2_oe0),
	.PACKAGE_PIN(io[2][0]),
	.D_IN_0(tstriple2_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_6 (
	.D_OUT_0(tstriple3_o0),
	.OUTPUT_ENABLE(tstriple3_oe0),
	.PACKAGE_PIN(io[3][0]),
	.D_IN_0(tstriple3_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_7 (
	.D_OUT_0(tstriple4_o0),
	.OUTPUT_ENABLE(tstriple4_oe0),
	.PACKAGE_PIN(io[4][0]),
	.D_IN_0(tstriple4_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_8 (
	.D_OUT_0(tstriple5_o0),
	.OUTPUT_ENABLE(tstriple5_oe0),
	.PACKAGE_PIN(io[5][0]),
	.D_IN_0(tstriple5_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_9 (
	.D_OUT_0(tstriple6_o0),
	.OUTPUT_ENABLE(tstriple6_oe0),
	.PACKAGE_PIN(io[6][0]),
	.D_IN_0(tstriple6_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_10 (
	.D_OUT_0(tstriple7_o0),
	.OUTPUT_ENABLE(tstriple7_oe0),
	.PACKAGE_PIN(io[7][0]),
	.D_IN_0(tstriple7_i0)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_11 (
	.D_OUT_0(tstriple0_o2),
	.OUTPUT_ENABLE(tstriple0_oe2),
	.PACKAGE_PIN(io_1[0][0]),
	.D_IN_0(tstriple0_i2)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_12 (
	.D_OUT_0(tstriple1_o2),
	.OUTPUT_ENABLE(tstriple1_oe2),
	.PACKAGE_PIN(io_1[1][0]),
	.D_IN_0(tstriple1_i2)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_13 (
	.D_OUT_0(tstriple2_o1),
	.OUTPUT_ENABLE(tstriple2_oe1),
	.PACKAGE_PIN(io_1[2][0]),
	.D_IN_0(tstriple2_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_14 (
	.D_OUT_0(tstriple3_o1),
	.OUTPUT_ENABLE(tstriple3_oe1),
	.PACKAGE_PIN(io_1[3][0]),
	.D_IN_0(tstriple3_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_15 (
	.D_OUT_0(tstriple4_o1),
	.OUTPUT_ENABLE(tstriple4_oe1),
	.PACKAGE_PIN(io_1[4][0]),
	.D_IN_0(tstriple4_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_16 (
	.D_OUT_0(tstriple5_o1),
	.OUTPUT_ENABLE(tstriple5_oe1),
	.PACKAGE_PIN(io_1[5][0]),
	.D_IN_0(tstriple5_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_17 (
	.D_OUT_0(tstriple6_o1),
	.OUTPUT_ENABLE(tstriple6_oe1),
	.PACKAGE_PIN(io_1[6][0]),
	.D_IN_0(tstriple6_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_18 (
	.D_OUT_0(tstriple7_o1),
	.OUTPUT_ENABLE(tstriple7_oe1),
	.PACKAGE_PIN(io_1[7][0]),
	.D_IN_0(tstriple7_i1)
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_19 (
	.D_OUT_0(fx2arbiter_o[0]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[0]),
	.D_IN_0(fx2arbiter_i[0])
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_20 (
	.D_OUT_0(fx2arbiter_o[1]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[1]),
	.D_IN_0(fx2arbiter_i[1])
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_21 (
	.D_OUT_0(fx2arbiter_o[2]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[2]),
	.D_IN_0(fx2arbiter_i[2])
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_22 (
	.D_OUT_0(fx2arbiter_o[3]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[3]),
	.D_IN_0(fx2arbiter_i[3])
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_23 (
	.D_OUT_0(fx2arbiter_o[4]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[4]),
	.D_IN_0(fx2arbiter_i[4])
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_24 (
	.D_OUT_0(fx2arbiter_o[5]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[5]),
	.D_IN_0(fx2arbiter_i[5])
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_25 (
	.D_OUT_0(fx2arbiter_o[6]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[6]),
	.D_IN_0(fx2arbiter_i[6])
);

SB_IO #(
	.PIN_TYPE(6'd41)
) SB_IO_26 (
	.D_OUT_0(fx2arbiter_o[7]),
	.OUTPUT_ENABLE(fx2arbiter_oe),
	.PACKAGE_PIN(fx2_fd[7]),
	.D_IN_0(fx2arbiter_i[7])
);

endmodule