/* Generated by Yosys 0.9+3621 (git sha1 84e9fa7, gcc 8.3.1 -fPIC -Os) */

module gpio_control_block(resetn, serial_clock, mgmt_gpio_in, mgmt_gpio_out, mgmt_gpio_oeb, serial_data_in, serial_data_out, user_gpio_out, user_gpio_oeb, user_gpio_in, pad_gpio_holdover, pad_gpio_slow_sel, pad_gpio_vtrip_sel, pad_gpio_inenb, pad_gpio_ib_mode_sel, pad_gpio_ana_en, pad_gpio_ana_sel, pad_gpio_ana_pol, pad_gpio_dm, pad_gpio_outenb, pad_gpio_out, pad_gpio_in);
  wire _000_;
  wire _001_;
  wire _002_;
  wire _003_;
  wire _004_;
  wire _005_;
  wire _006_;
  wire _007_;
  wire _008_;
  wire _009_;
  wire _010_;
  wire _011_;
  wire _012_;
  wire _013_;
  wire _014_;
  wire _015_;
  wire _016_;
  wire _017_;
  wire _018_;
  wire _019_;
  wire _020_;
  wire _021_;
  wire _022_;
  wire _023_;
  wire _024_;
  wire _025_;
  wire _026_;
  wire _027_;
  wire _028_;
  wire _029_;
  wire _030_;
  wire _031_;
  wire _032_;
  wire _033_;
  wire _034_;
  wire _035_;
  wire _036_;
  wire _037_;
  wire _038_;
  wire gpio_logic1;
  wire gpio_outenb;
  wire load_data;
  wire mgmt_ena;
  output mgmt_gpio_in;
  input mgmt_gpio_oeb;
  input mgmt_gpio_out;
  output pad_gpio_ana_en;
  output pad_gpio_ana_pol;
  output pad_gpio_ana_sel;
  output [2:0] pad_gpio_dm;
  output pad_gpio_holdover;
  output pad_gpio_ib_mode_sel;
  input pad_gpio_in;
  output pad_gpio_inenb;
  output pad_gpio_out;
  output pad_gpio_outenb;
  output pad_gpio_slow_sel;
  output pad_gpio_vtrip_sel;
  input resetn;
  input serial_clock;
  input serial_data_in;
  output serial_data_out;
  wire \shift_register[0] ;
  wire \shift_register[10] ;
  wire \shift_register[11] ;
  wire \shift_register[1] ;
  wire \shift_register[2] ;
  wire \shift_register[3] ;
  wire \shift_register[4] ;
  wire \shift_register[5] ;
  wire \shift_register[6] ;
  wire \shift_register[7] ;
  wire \shift_register[8] ;
  wire \shift_register[9] ;
  output user_gpio_in;
  input user_gpio_oeb;
  input user_gpio_out;
  sky130_fd_sc_hd__or2_4 _039_ (
    .A(serial_clock),
    .B(resetn),
    .X(_027_)
  );
  sky130_fd_sc_hd__buf_2 _040_ (
    .A(_027_),
    .X(_028_)
  );
  sky130_fd_sc_hd__buf_2 _041_ (
    .A(_028_),
    .X(_025_)
  );
  sky130_fd_sc_hd__buf_2 _042_ (
    .A(_025_),
    .X(_024_)
  );
  sky130_fd_sc_hd__buf_2 _043_ (
    .A(_025_),
    .X(_023_)
  );
  sky130_fd_sc_hd__buf_2 _044_ (
    .A(_025_),
    .X(_022_)
  );
  sky130_fd_sc_hd__buf_2 _045_ (
    .A(_025_),
    .X(_021_)
  );
  sky130_fd_sc_hd__buf_2 _046_ (
    .A(_028_),
    .X(_029_)
  );
  sky130_fd_sc_hd__buf_2 _047_ (
    .A(_029_),
    .X(_020_)
  );
  sky130_fd_sc_hd__buf_2 _048_ (
    .A(_029_),
    .X(_019_)
  );
  sky130_fd_sc_hd__buf_2 _049_ (
    .A(_029_),
    .X(_018_)
  );
  sky130_fd_sc_hd__buf_2 _050_ (
    .A(_029_),
    .X(_017_)
  );
  sky130_fd_sc_hd__buf_2 _051_ (
    .A(_029_),
    .X(_016_)
  );
  sky130_fd_sc_hd__buf_2 _052_ (
    .A(_028_),
    .X(_030_)
  );
  sky130_fd_sc_hd__buf_2 _053_ (
    .A(_030_),
    .X(_015_)
  );
  sky130_fd_sc_hd__buf_2 _054_ (
    .A(_030_),
    .X(_014_)
  );
  sky130_fd_sc_hd__buf_2 _055_ (
    .A(_030_),
    .X(_013_)
  );
  sky130_fd_sc_hd__buf_2 _056_ (
    .A(_030_),
    .X(_012_)
  );
  sky130_fd_sc_hd__buf_2 _057_ (
    .A(_030_),
    .X(_011_)
  );
  sky130_fd_sc_hd__buf_2 _058_ (
    .A(_028_),
    .X(_031_)
  );
  sky130_fd_sc_hd__buf_2 _059_ (
    .A(_031_),
    .X(_010_)
  );
  sky130_fd_sc_hd__buf_2 _060_ (
    .A(_031_),
    .X(_009_)
  );
  sky130_fd_sc_hd__buf_2 _061_ (
    .A(_031_),
    .X(_008_)
  );
  sky130_fd_sc_hd__buf_2 _062_ (
    .A(_031_),
    .X(_007_)
  );
  sky130_fd_sc_hd__buf_2 _063_ (
    .A(_031_),
    .X(_006_)
  );
  sky130_fd_sc_hd__buf_2 _064_ (
    .A(_027_),
    .X(_032_)
  );
  sky130_fd_sc_hd__buf_2 _065_ (
    .A(_032_),
    .X(_005_)
  );
  sky130_fd_sc_hd__buf_2 _066_ (
    .A(_032_),
    .X(_004_)
  );
  sky130_fd_sc_hd__buf_2 _067_ (
    .A(_032_),
    .X(_003_)
  );
  sky130_fd_sc_hd__buf_2 _068_ (
    .A(_032_),
    .X(_002_)
  );
  sky130_fd_sc_hd__buf_2 _069_ (
    .A(_032_),
    .X(_001_)
  );
  sky130_fd_sc_hd__inv_2 _070_ (
    .A(mgmt_ena),
    .Y(_033_)
  );
  sky130_fd_sc_hd__a32o_4 _071_ (
    .A1(gpio_outenb),
    .A2(mgmt_gpio_oeb),
    .A3(mgmt_ena),
    .B1(user_gpio_oeb),
    .B2(_033_),
    .X(pad_gpio_outenb)
  );
  sky130_fd_sc_hd__inv_2 _072_ (
    .A(pad_gpio_dm[2]),
    .Y(_034_)
  );
  sky130_fd_sc_hd__and3_4 _073_ (
    .A(mgmt_gpio_oeb),
    .B(_034_),
    .C(pad_gpio_dm[1]),
    .X(_035_)
  );
  sky130_fd_sc_hd__or2_4 _074_ (
    .A(mgmt_gpio_out),
    .B(_035_),
    .X(_036_)
  );
  sky130_fd_sc_hd__nand2_4 _075_ (
    .A(pad_gpio_dm[0]),
    .B(_035_),
    .Y(_037_)
  );
  sky130_fd_sc_hd__a32o_4 _076_ (
    .A1(mgmt_ena),
    .A2(_036_),
    .A3(_037_),
    .B1(_033_),
    .B2(user_gpio_out),
    .X(pad_gpio_out)
  );
  sky130_fd_sc_hd__nand2_4 _077_ (
    .A(_033_),
    .B(pad_gpio_in),
    .Y(_000_)
  );
  sky130_fd_sc_hd__inv_2 _078_ (
    .A(resetn),
    .Y(_038_)
  );
  sky130_fd_sc_hd__and2_4 _079_ (
    .A(serial_clock),
    .B(_038_),
    .X(load_data)
  );
  sky130_fd_sc_hd__and2_4 _080_ (
    .A(mgmt_ena),
    .B(pad_gpio_in),
    .X(mgmt_gpio_in)
  );
  sky130_fd_sc_hd__buf_2 _081_ (
    .A(_028_),
    .X(_026_)
  );
  sky130_fd_sc_hd__dfstp_4 _082_ (
    .CLK(load_data),
    .D(\shift_register[0] ),
    .Q(mgmt_ena),
    .SET_B(_001_)
  );
  sky130_fd_sc_hd__dfrtp_4 _083_ (
    .CLK(load_data),
    .D(\shift_register[2] ),
    .Q(pad_gpio_holdover),
    .RESET_B(_002_)
  );
  sky130_fd_sc_hd__dfrtp_4 _084_ (
    .CLK(load_data),
    .D(\shift_register[8] ),
    .Q(pad_gpio_slow_sel),
    .RESET_B(_003_)
  );
  sky130_fd_sc_hd__dfrtp_4 _085_ (
    .CLK(load_data),
    .D(\shift_register[9] ),
    .Q(pad_gpio_vtrip_sel),
    .RESET_B(_004_)
  );
  sky130_fd_sc_hd__dfrtp_4 _086_ (
    .CLK(load_data),
    .D(\shift_register[3] ),
    .Q(pad_gpio_inenb),
    .RESET_B(_005_)
  );
  sky130_fd_sc_hd__dfrtp_4 _087_ (
    .CLK(load_data),
    .D(\shift_register[4] ),
    .Q(pad_gpio_ib_mode_sel),
    .RESET_B(_006_)
  );
  sky130_fd_sc_hd__dfstp_4 _088_ (
    .CLK(load_data),
    .D(\shift_register[1] ),
    .Q(gpio_outenb),
    .SET_B(_007_)
  );
  sky130_fd_sc_hd__dfstp_4 _089_ (
    .CLK(load_data),
    .D(\shift_register[10] ),
    .Q(pad_gpio_dm[0]),
    .SET_B(_008_)
  );
  sky130_fd_sc_hd__dfrtp_4 _090_ (
    .CLK(load_data),
    .D(\shift_register[11] ),
    .Q(pad_gpio_dm[1]),
    .RESET_B(_009_)
  );
  sky130_fd_sc_hd__dfrtp_4 _091_ (
    .CLK(load_data),
    .D(serial_data_out),
    .Q(pad_gpio_dm[2]),
    .RESET_B(_010_)
  );
  sky130_fd_sc_hd__dfrtp_4 _092_ (
    .CLK(load_data),
    .D(\shift_register[5] ),
    .Q(pad_gpio_ana_en),
    .RESET_B(_011_)
  );
  sky130_fd_sc_hd__dfrtp_4 _093_ (
    .CLK(load_data),
    .D(\shift_register[6] ),
    .Q(pad_gpio_ana_sel),
    .RESET_B(_012_)
  );
  sky130_fd_sc_hd__dfrtp_4 _094_ (
    .CLK(load_data),
    .D(\shift_register[7] ),
    .Q(pad_gpio_ana_pol),
    .RESET_B(_013_)
  );
  sky130_fd_sc_hd__dfrtp_4 _095_ (
    .CLK(serial_clock),
    .D(serial_data_in),
    .Q(\shift_register[0] ),
    .RESET_B(_014_)
  );
  sky130_fd_sc_hd__dfrtp_4 _096_ (
    .CLK(serial_clock),
    .D(\shift_register[0] ),
    .Q(\shift_register[1] ),
    .RESET_B(_015_)
  );
  sky130_fd_sc_hd__dfrtp_4 _097_ (
    .CLK(serial_clock),
    .D(\shift_register[1] ),
    .Q(\shift_register[2] ),
    .RESET_B(_016_)
  );
  sky130_fd_sc_hd__dfrtp_4 _098_ (
    .CLK(serial_clock),
    .D(\shift_register[2] ),
    .Q(\shift_register[3] ),
    .RESET_B(_017_)
  );
  sky130_fd_sc_hd__dfrtp_4 _099_ (
    .CLK(serial_clock),
    .D(\shift_register[3] ),
    .Q(\shift_register[4] ),
    .RESET_B(_018_)
  );
  sky130_fd_sc_hd__dfrtp_4 _100_ (
    .CLK(serial_clock),
    .D(\shift_register[4] ),
    .Q(\shift_register[5] ),
    .RESET_B(_019_)
  );
  sky130_fd_sc_hd__dfrtp_4 _101_ (
    .CLK(serial_clock),
    .D(\shift_register[5] ),
    .Q(\shift_register[6] ),
    .RESET_B(_020_)
  );
  sky130_fd_sc_hd__dfrtp_4 _102_ (
    .CLK(serial_clock),
    .D(\shift_register[6] ),
    .Q(\shift_register[7] ),
    .RESET_B(_021_)
  );
  sky130_fd_sc_hd__dfrtp_4 _103_ (
    .CLK(serial_clock),
    .D(\shift_register[7] ),
    .Q(\shift_register[8] ),
    .RESET_B(_022_)
  );
  sky130_fd_sc_hd__dfrtp_4 _104_ (
    .CLK(serial_clock),
    .D(\shift_register[8] ),
    .Q(\shift_register[9] ),
    .RESET_B(_023_)
  );
  sky130_fd_sc_hd__dfrtp_4 _105_ (
    .CLK(serial_clock),
    .D(\shift_register[9] ),
    .Q(\shift_register[10] ),
    .RESET_B(_024_)
  );
  sky130_fd_sc_hd__dfrtp_4 _106_ (
    .CLK(serial_clock),
    .D(\shift_register[10] ),
    .Q(\shift_register[11] ),
    .RESET_B(_025_)
  );
  sky130_fd_sc_hd__dfrtp_4 _107_ (
    .CLK(serial_clock),
    .D(\shift_register[11] ),
    .Q(serial_data_out),
    .RESET_B(_026_)
  );
  sky130_fd_sc_hd__einvp_8 gpio_in_buf (
    .A(_000_),
    .TE(gpio_logic1),
    .Z(user_gpio_in)
  );
  sky130_fd_sc_hd__conb_1 gpio_logic_high (
    .HI(gpio_logic1),
    .LO()
  );
endmodule
