/*
###############################################################
#  Generated by:      Cadence Innovus 20.10-p004_1
#  OS:                Linux x86_64(Host ID merl-HP-Z840)
#  Generated on:      Fri Jun  3 13:52:32 2022
#  Design:            azadi_soc_top_caravel
#  Command:           write_netlist azadi_soc_top_caravel.v -include_pg_ports -exclude_leaf_cells -top_module_first
###############################################################
*/
module azadi_soc_top_caravel (
	wb_clk_i, 
	wb_rst_i, 
	wbs_stb_i, 
	wbs_cyc_i, 
	wbs_we_i, 
	wbs_sel_i, 
	wbs_dat_i, 
	wbs_adr_i, 
	wbs_ack_o, 
	wbs_dat_o, 
	la_data_in, 
	la_data_out, 
	la_oenb, 
	io_in, 
	io_out, 
	io_oeb, 
	analog_io, 
	user_clock2, 
	user_irq, 
	vccd1, 
	vssd1);
   input wb_clk_i;
   input wb_rst_i;
   input wbs_stb_i;
   input wbs_cyc_i;
   input wbs_we_i;
   input [3:0] wbs_sel_i;
   input [31:0] wbs_dat_i;
   input [31:0] wbs_adr_i;
   output wbs_ack_o;
   output [31:0] wbs_dat_o;
   input [127:0] la_data_in;
   output [127:0] la_data_out;
   input [127:0] la_oenb;
   input [37:0] io_in;
   output [37:0] io_out;
   output [37:0] io_oeb;
   inout [28:0] analog_io;
   input user_clock2;
   output [2:0] user_irq;
   inout vccd1;
   inout vssd1;

   // Internal wires
   wire FE_RN_123;
   wire FE_OFN0_io_oeb_0;
   wire [13:0] gpio_oe;
   wire [3:0] qsd_oe;
   wire n_0;
   wire pwm1_oe;
   wire pwm2_oe;
   wire sd_oe;

   assign io_oeb[0] = FE_RN_123 ;
   assign io_oeb[2] = io_oeb[13] ;
   assign io_oeb[3] = FE_RN_123 ;
   assign io_oeb[4] = FE_RN_123 ;
   assign io_oeb[5] = io_oeb[13] ;
   assign io_oeb[6] = FE_RN_123 ;
   assign io_oeb[7] = io_oeb[13] ;
   assign io_oeb[10] = io_oeb[13] ;
   assign io_oeb[11] = io_oeb[13] ;
   assign io_oeb[12] = io_oeb[13] ;
   assign io_oeb[37] = FE_RN_123 ;
   assign io_out[2] = FE_RN_123 ;
   assign io_out[5] = FE_RN_123 ;
   assign io_out[7] = FE_RN_123 ;
   assign io_out[10] = FE_RN_123 ;
   assign io_out[11] = FE_RN_123 ;
   assign io_out[12] = FE_RN_123 ;
   assign io_out[13] = FE_RN_123 ;
   assign la_data_out[0] = FE_RN_123 ;
   assign la_data_out[1] = FE_RN_123 ;
   assign la_data_out[2] = FE_RN_123 ;
   assign la_data_out[3] = FE_RN_123 ;
   assign la_data_out[4] = FE_RN_123 ;
   assign la_data_out[5] = FE_RN_123 ;
   assign la_data_out[6] = FE_RN_123 ;
   assign la_data_out[7] = FE_RN_123 ;
   assign la_data_out[8] = FE_RN_123 ;
   assign la_data_out[9] = FE_RN_123 ;
   assign la_data_out[10] = FE_RN_123 ;
   assign la_data_out[11] = FE_RN_123 ;
   assign la_data_out[12] = FE_RN_123 ;
   assign la_data_out[13] = FE_RN_123 ;
   assign la_data_out[14] = FE_RN_123 ;
   assign la_data_out[16] = la_data_out[15] ;
   assign la_data_out[17] = la_data_out[15] ;
   assign la_data_out[18] = la_data_out[15] ;
   assign la_data_out[19] = la_data_out[15] ;
   assign la_data_out[20] = la_data_out[15] ;
   assign la_data_out[21] = la_data_out[15] ;
   assign la_data_out[22] = la_data_out[15] ;
   assign la_data_out[23] = la_data_out[15] ;
   assign la_data_out[24] = la_data_out[15] ;
   assign la_data_out[25] = la_data_out[15] ;
   assign la_data_out[26] = la_data_out[15] ;
   assign la_data_out[27] = la_data_out[15] ;
   assign la_data_out[28] = la_data_out[15] ;
   assign la_data_out[29] = la_data_out[15] ;
   assign la_data_out[30] = la_data_out[15] ;
   assign la_data_out[31] = la_data_out[15] ;
   assign la_data_out[32] = la_data_out[15] ;
   assign la_data_out[33] = la_data_out[15] ;
   assign la_data_out[34] = la_data_out[15] ;
   assign la_data_out[35] = la_data_out[15] ;
   assign la_data_out[36] = la_data_out[15] ;
   assign la_data_out[37] = la_data_out[15] ;
   assign la_data_out[38] = la_data_out[15] ;
   assign la_data_out[39] = la_data_out[15] ;
   assign la_data_out[40] = la_data_out[15] ;
   assign la_data_out[41] = la_data_out[15] ;
   assign la_data_out[42] = la_data_out[15] ;
   assign la_data_out[43] = la_data_out[15] ;
   assign la_data_out[44] = la_data_out[15] ;
   assign la_data_out[45] = la_data_out[15] ;
   assign la_data_out[46] = la_data_out[15] ;
   assign la_data_out[47] = la_data_out[15] ;
   assign la_data_out[48] = la_data_out[15] ;
   assign la_data_out[49] = la_data_out[15] ;
   assign la_data_out[50] = la_data_out[15] ;
   assign la_data_out[51] = la_data_out[15] ;
   assign la_data_out[52] = la_data_out[15] ;
   assign la_data_out[53] = la_data_out[15] ;
   assign la_data_out[54] = la_data_out[15] ;
   assign la_data_out[55] = la_data_out[15] ;
   assign la_data_out[56] = la_data_out[15] ;
   assign la_data_out[57] = la_data_out[15] ;
   assign la_data_out[58] = la_data_out[15] ;
   assign la_data_out[59] = la_data_out[15] ;
   assign la_data_out[60] = la_data_out[15] ;
   assign la_data_out[61] = la_data_out[15] ;
   assign la_data_out[62] = la_data_out[15] ;
   assign la_data_out[63] = la_data_out[15] ;
   assign la_data_out[64] = la_data_out[15] ;
   assign la_data_out[65] = la_data_out[15] ;
   assign la_data_out[66] = la_data_out[15] ;
   assign la_data_out[67] = la_data_out[15] ;
   assign la_data_out[68] = la_data_out[15] ;
   assign la_data_out[69] = la_data_out[15] ;
   assign la_data_out[70] = la_data_out[15] ;
   assign la_data_out[71] = la_data_out[15] ;
   assign la_data_out[72] = la_data_out[15] ;
   assign la_data_out[73] = la_data_out[15] ;
   assign la_data_out[74] = la_data_out[15] ;
   assign la_data_out[75] = la_data_out[15] ;
   assign la_data_out[76] = la_data_out[15] ;
   assign la_data_out[77] = la_data_out[15] ;
   assign la_data_out[78] = la_data_out[15] ;
   assign la_data_out[79] = la_data_out[15] ;
   assign la_data_out[80] = la_data_out[15] ;
   assign la_data_out[81] = la_data_out[15] ;
   assign la_data_out[82] = la_data_out[15] ;
   assign la_data_out[83] = la_data_out[15] ;
   assign la_data_out[84] = la_data_out[15] ;
   assign la_data_out[85] = la_data_out[15] ;
   assign la_data_out[86] = la_data_out[15] ;
   assign la_data_out[87] = la_data_out[15] ;
   assign la_data_out[88] = la_data_out[15] ;
   assign io_oeb[14] = io_oeb[15] ;
   assign io_out[37] = io_oeb[15] ;
   assign io_oeb[32] = io_oeb[15] ;
   assign io_oeb[31] = io_oeb[15] ;
   assign io_oeb[30] = io_oeb[15] ;
   assign la_data_out[90] = la_data_out[89] ;
   assign la_data_out[91] = la_data_out[89] ;
   assign la_data_out[92] = la_data_out[89] ;
   assign la_data_out[93] = la_data_out[89] ;
   assign la_data_out[94] = la_data_out[89] ;
   assign la_data_out[95] = la_data_out[89] ;
   assign la_data_out[96] = la_data_out[89] ;
   assign la_data_out[97] = la_data_out[89] ;
   assign la_data_out[98] = la_data_out[89] ;
   assign la_data_out[99] = la_data_out[89] ;
   assign la_data_out[100] = la_data_out[89] ;
   assign la_data_out[101] = la_data_out[89] ;
   assign la_data_out[102] = la_data_out[89] ;
   assign la_data_out[103] = la_data_out[89] ;
   assign la_data_out[104] = la_data_out[89] ;
   assign la_data_out[105] = la_data_out[89] ;
   assign la_data_out[106] = la_data_out[89] ;
   assign la_data_out[107] = la_data_out[89] ;
   assign la_data_out[108] = la_data_out[89] ;
   assign la_data_out[109] = la_data_out[89] ;
   assign la_data_out[110] = la_data_out[89] ;
   assign la_data_out[111] = la_data_out[89] ;
   assign la_data_out[112] = la_data_out[89] ;
   assign la_data_out[113] = la_data_out[89] ;
   assign la_data_out[114] = la_data_out[89] ;
   assign la_data_out[115] = la_data_out[89] ;
   assign la_data_out[116] = la_data_out[89] ;
   assign la_data_out[117] = la_data_out[89] ;
   assign la_data_out[118] = la_data_out[89] ;
   assign la_data_out[119] = la_data_out[89] ;
   assign la_data_out[120] = la_data_out[89] ;
   assign la_data_out[121] = la_data_out[89] ;
   assign la_data_out[122] = la_data_out[89] ;
   assign la_data_out[123] = la_data_out[89] ;
   assign la_data_out[124] = la_data_out[89] ;
   assign la_data_out[125] = la_data_out[89] ;
   assign la_data_out[126] = la_data_out[89] ;
   assign la_data_out[127] = la_data_out[89] ;
   assign user_irq[0] = la_data_out[89] ;
   assign user_irq[1] = la_data_out[89] ;
   assign user_irq[2] = la_data_out[89] ;
   assign wbs_ack_o = la_data_out[89] ;
   assign wbs_dat_o[0] = la_data_out[89] ;
   assign wbs_dat_o[1] = la_data_out[89] ;
   assign wbs_dat_o[2] = la_data_out[89] ;
   assign wbs_dat_o[3] = la_data_out[89] ;
   assign wbs_dat_o[4] = la_data_out[89] ;
   assign wbs_dat_o[5] = la_data_out[89] ;
   assign wbs_dat_o[6] = la_data_out[89] ;
   assign wbs_dat_o[7] = la_data_out[89] ;
   assign wbs_dat_o[8] = la_data_out[89] ;
   assign wbs_dat_o[9] = la_data_out[89] ;
   assign wbs_dat_o[10] = la_data_out[89] ;
   assign wbs_dat_o[11] = la_data_out[89] ;
   assign wbs_dat_o[12] = la_data_out[89] ;
   assign wbs_dat_o[13] = la_data_out[89] ;
   assign wbs_dat_o[14] = la_data_out[89] ;
   assign wbs_dat_o[15] = la_data_out[89] ;
   assign wbs_dat_o[16] = la_data_out[89] ;
   assign wbs_dat_o[17] = la_data_out[89] ;
   assign wbs_dat_o[18] = la_data_out[89] ;
   assign wbs_dat_o[19] = la_data_out[89] ;
   assign wbs_dat_o[20] = la_data_out[89] ;
   assign wbs_dat_o[21] = la_data_out[89] ;
   assign wbs_dat_o[22] = la_data_out[89] ;
   assign wbs_dat_o[23] = la_data_out[89] ;
   assign wbs_dat_o[24] = la_data_out[89] ;
   assign wbs_dat_o[25] = la_data_out[89] ;
   assign wbs_dat_o[26] = la_data_out[89] ;
   assign wbs_dat_o[27] = la_data_out[89] ;
   assign wbs_dat_o[28] = la_data_out[89] ;
   assign wbs_dat_o[29] = la_data_out[89] ;
   assign wbs_dat_o[30] = la_data_out[89] ;
   assign wbs_dat_o[31] = la_data_out[89] ;

   // Module instantiations
   sky130_fd_sc_hd__diode_2 DIODE_4 (
	.DIODE(io_oeb[0]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__diode_2 DIODE_3 (
	.DIODE(qsd_oe[3]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__diode_2 DIODE_2 (
	.DIODE(pwm1_oe), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__diode_2 DIODE_1 (
	.DIODE(gpio_oe[11]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__clkbuf_4 FE_OFC3_io_oeb_0 (
	.A(la_data_out[15]),
	.X(la_data_out[89]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_6 FE_OFC2_io_oeb_0 (
	.A(FE_OFN0_io_oeb_0),
	.Y(io_oeb[15]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__clkbuf_1 FE_OFC1_io_oeb_0 (
	.A(io_oeb[0]),
	.X(la_data_out[15]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_2 FE_OFC0_io_oeb_0 (
	.A(io_oeb[0]),
	.Y(FE_OFN0_io_oeb_0), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   azadi_soc_top soc_top (
	.uart_tx(io_out[6]),
	.uart_rx(io_in[5]),
	.ss_o({ io_out[4],
		io_out[3] }),
	.sd_oe(sd_oe),
	.sd_o(io_out[1]),
	.sd_i(io_in[2]),
	.sclk_o(io_out[0]),
	.rst_ni(n_0),
	.qsd_oe(qsd_oe),
	.qsd_o({ io_out[36],
		io_out[35],
		io_out[34],
		io_out[33] }),
	.qsd_i({ io_in[36],
		io_in[35],
		io_in[34],
		io_in[33] }),
	.qsclk_o(io_out[32]),
	.qcs_o(io_out[31]),
	.pwm_o_2(io_out[9]),
	.pwm_o(io_out[8]),
	.pwm2_oe(pwm2_oe),
	.pwm1_oe(pwm1_oe),
	.prog(io_in[7]),
	.gpio_oe({ FE_UNCONNECTEDZ_0,
		FE_UNCONNECTEDZ_1,
		FE_UNCONNECTEDZ_2,
		FE_UNCONNECTEDZ_3,
		FE_UNCONNECTEDZ_4,
		FE_UNCONNECTEDZ_5,
		gpio_oe }),
	.gpio_o({ FE_UNCONNECTEDZ_6,
		FE_UNCONNECTEDZ_7,
		FE_UNCONNECTEDZ_8,
		FE_UNCONNECTEDZ_9,
		FE_UNCONNECTEDZ_10,
		FE_UNCONNECTEDZ_11,
		io_out[29],
		io_out[28],
		io_out[27],
		io_out[26],
		io_out[25],
		io_out[24],
		io_out[23],
		io_out[22],
		io_out[21],
		io_out[20],
		io_out[19],
		io_out[18],
		io_out[17],
		io_out[16] }),
	.gpio_i({ FE_UNCONNECTEDZ_12,
		FE_UNCONNECTEDZ_13,
		FE_UNCONNECTEDZ_14,
		FE_UNCONNECTEDZ_15,
		FE_UNCONNECTEDZ_16,
		FE_UNCONNECTEDZ_17,
		io_in[29],
		io_in[28],
		io_in[27],
		io_in[26],
		io_in[25],
		io_in[24],
		io_in[23],
		io_in[22],
		io_in[21],
		io_in[20],
		io_in[19],
		io_in[18],
		io_in[17],
		io_in[16] }),
	.clks_per_bit({ la_data_in[15],
		la_data_in[14],
		la_data_in[13],
		la_data_in[12],
		la_data_in[11],
		la_data_in[10],
		la_data_in[9],
		la_data_in[8],
		la_data_in[7],
		la_data_in[6],
		la_data_in[5],
		la_data_in[4],
		la_data_in[3],
		la_data_in[2],
		la_data_in[1],
		la_data_in[0] }),
	.clk_i(wb_clk_i),
	.boot_led(io_out[30]),
	.TM(io_in[11]),
	.SO1(io_out[15]),
	.SO0(io_out[14]),
	.SI1(io_in[13]),
	.SI0(io_in[12]),
	.SE(io_in[10]), 
	.vssd1(vssd1), 
	.vccd1(vccd1));
   sky130_fd_sc_hd__inv_1 g232 (
	.A(gpio_oe[10]),
	.Y(io_oeb[26]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g233 (
	.A(gpio_oe[11]),
	.Y(io_oeb[27]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g234 (
	.A(gpio_oe[12]),
	.Y(io_oeb[28]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g235 (
	.A(gpio_oe[13]),
	.Y(io_oeb[29]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g236 (
	.A(qsd_oe[0]),
	.Y(io_oeb[33]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g237 (
	.A(qsd_oe[1]),
	.Y(io_oeb[34]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g238 (
	.A(qsd_oe[2]),
	.Y(io_oeb[35]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g239 (
	.A(qsd_oe[3]),
	.Y(io_oeb[36]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g240 (
	.A(gpio_oe[0]),
	.Y(io_oeb[16]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g241 (
	.A(gpio_oe[3]),
	.Y(io_oeb[19]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g242 (
	.A(pwm2_oe),
	.Y(io_oeb[9]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g243 (
	.A(sd_oe),
	.Y(io_oeb[1]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g244 (
	.A(pwm1_oe),
	.Y(io_oeb[8]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g245 (
	.A(gpio_oe[1]),
	.Y(io_oeb[17]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g246 (
	.A(gpio_oe[2]),
	.Y(io_oeb[18]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g247 (
	.A(gpio_oe[4]),
	.Y(io_oeb[20]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g248 (
	.A(gpio_oe[5]),
	.Y(io_oeb[21]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g249 (
	.A(gpio_oe[6]),
	.Y(io_oeb[22]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_2 g250 (
	.A(gpio_oe[7]),
	.Y(io_oeb[23]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_2 g251 (
	.A(gpio_oe[8]),
	.Y(io_oeb[24]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_1 g252 (
	.A(gpio_oe[9]),
	.Y(io_oeb[25]), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__inv_4 g253 (
	.A(wb_rst_i),
	.Y(n_0), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
   sky130_fd_sc_hd__conb_1 tie_0_cell (
	.HI(io_oeb[13]),
	.LO(FE_RN_123), 
	.VPWR(vccd1), 
	.VPB(vccd1), 
	.VNB(vssd1), 
	.VGND(vssd1));
endmodule

