module apb(
  b_pad_gpio_porta,
  biu_pad_lpmd_b,
  clk_en,
  corec_pmu_sleep_out,
  cpu_clk,
  fifo_pad_haddr,
  fifo_pad_hprot,
  haddr_s2,
  hrdata_s2,
  hready_s2,
  hresp_s2,
  hsel_s2,
  hwdata_s2,
  hwrite_s2,
  i_pad_cpu_jtg_rst_b,
  i_pad_jtg_tclk,
  nmi_wake_int_lower,
  pad_clk,
  pad_cpu_rst_b,
  pad_had_jtg_tap_en,
  pad_had_jtg_tms_i,
  pad_had_jtg_trst_b,
  pad_had_jtg_trst_b_pre,
  pad_vic_int_vld,
  per_clk,
  pg_reset_b,
  pmu_corec_isolation,
  pmu_corec_sleep_in,
  smpu_deny,
  sys_rst,
  uart0_sin,
  uart0_sout
);

// &Ports; @21
input   [1 :0]  biu_pad_lpmd_b;        
input           corec_pmu_sleep_out;   
input   [31:0]  fifo_pad_haddr;        
input   [3 :0]  fifo_pad_hprot;        
input   [31:0]  haddr_s2;              
input           hsel_s2;               
input   [31:0]  hwdata_s2;             
input           hwrite_s2;             
input           i_pad_cpu_jtg_rst_b;   
input           i_pad_jtg_tclk;        
input           pad_clk;               
input           pad_cpu_rst_b;         
input           pad_had_jtg_tap_en;    
input           pad_had_jtg_tms_i;     
input           pad_had_jtg_trst_b_pre; 
input           sys_rst;               
input           uart0_sin;             
output          clk_en;                
output          cpu_clk;               
output  [31:0]  hrdata_s2;             
output          hready_s2;             
output  [1 :0]  hresp_s2;              
output  [1 :0]  nmi_wake_int_lower;    
output          pad_had_jtg_trst_b;    
output  [31:0]  pad_vic_int_vld;       
output          per_clk;               
output          pg_reset_b;            
output          pmu_corec_isolation;   
output          pmu_corec_sleep_in;    
output          smpu_deny;             
output          uart0_sout;            
inout   [7 :0]  b_pad_gpio_porta;      

// &Regs; @22

// &Wires; @23
wire            apb_clkgen_psel;       
wire            apb_gpio_psel;         
wire            apb_nmi_wake_psel;     
wire            apb_pmu_psel;          
wire            apb_smpu_psel;         
wire            apb_stim_psel;         
wire            apb_tim1_psel;         
wire            apb_tim_psel;          
wire            apb_uart_psel;         
wire    [31:0]  apb_xx_paddr;          
wire            apb_xx_penable;        
wire    [31:0]  apb_xx_pwdata;         
wire            apb_xx_pwrite;         
wire    [7 :0]  b_pad_gpio_porta;      
wire    [1 :0]  biu_pad_lpmd_b;        
wire            clk_en;                
wire    [31:0]  clkgen_apb_prdata;     
wire            corec_pmu_sleep_out;   
wire            cpu_clk;               
wire    [31:0]  fifo_pad_haddr;        
wire    [3 :0]  fifo_pad_hprot;        
wire            gate_en0;              
wire            gate_en1;              
wire    [31:0]  gpio_apb_prdata;       
wire    [7 :0]  gpio_vic_int;          
wire    [31:0]  haddr_s2;              
wire    [31:0]  hrdata_s2;             
wire            hready_s2;             
wire    [1 :0]  hresp_s2;              
wire            hsel_s2;               
wire    [31:0]  hwdata_s2;             
wire            hwrite_s2;             
wire            i_pad_cpu_jtg_rst_b;   
wire            i_pad_jtg_tclk;        
wire            intraw_vld;            
wire    [31:0]  nmi_wake_apb_prdata;   
wire    [3 :0]  nmi_wake_int;          
wire    [1 :0]  nmi_wake_int_higher;   
wire    [1 :0]  nmi_wake_int_lower;    
wire            pad_clk;               
wire            pad_cpu_rst_b;         
wire            pad_had_jtg_tap_en;    
wire            pad_had_jtg_tms_i;     
wire            pad_had_jtg_trst_b;    
wire            pad_had_jtg_trst_b_pre; 
wire    [31:0]  pad_vic_int_vld;       
wire            per_clk;               
wire            pg_reset_b;            
wire    [31:0]  pmu_apb_prdata;        
wire            pmu_clk;               
wire            pmu_corec_isolation;   
wire            pmu_corec_sleep_in;    
wire    [31:0]  smpu_apb_prdata;       
wire            smpu_deny;             
wire    [31:0]  stim_apb_prdata;       
wire    [3 :0]  stim_vic_int;          
wire            sys_rst;               
wire    [31:0]  tim1_apb_prdata;       
wire    [3 :0]  tim1_vic_int;          
wire    [31:0]  tim_apb_prdata;        
wire    [3 :0]  tim_vic_int;           
wire            uart0_sin;             
wire            uart0_sout;            
wire            uart0_vic_int;         
wire    [31:0]  uart_apb_prdata;       
wire            wic_clk;               



// &Instance("apb_bridge", "x_apb_bridge"); @26
apb_bridge  x_apb_bridge (
  .apb_harb_hrdata     (hrdata_s2          ),
  .apb_harb_hready     (hready_s2          ),
  .apb_harb_hresp      (hresp_s2           ),
  .apb_xx_paddr        (apb_xx_paddr       ),
  .apb_xx_penable      (apb_xx_penable     ),
  .apb_xx_pwdata       (apb_xx_pwdata      ),
  .apb_xx_pwrite       (apb_xx_pwrite      ),
  .harb_apb_hsel       (hsel_s2            ),
  .harb_xx_haddr       (haddr_s2           ),
  .harb_xx_hwdata      (hwdata_s2          ),
  .harb_xx_hwrite      (hwrite_s2          ),
  .hclk                (per_clk            ),
  .hrst_b              (pg_reset_b         ),
  .prdata_s1           (uart_apb_prdata    ),
  .prdata_s2           (tim_apb_prdata     ),
  .prdata_s3           (pmu_apb_prdata     ),
  .prdata_s4           (gpio_apb_prdata    ),
  .prdata_s5           (stim_apb_prdata    ),
  .prdata_s6           (clkgen_apb_prdata  ),
  .prdata_s7           (smpu_apb_prdata    ),
  .prdata_s8           (nmi_wake_apb_prdata),
  .prdata_s9           (tim1_apb_prdata    ),
  .psel_s1             (apb_uart_psel      ),
  .psel_s2             (apb_tim_psel       ),
  .psel_s3             (apb_pmu_psel       ),
  .psel_s4             (apb_gpio_psel      ),
  .psel_s5             (apb_stim_psel      ),
  .psel_s6             (apb_clkgen_psel    ),
  .psel_s7             (apb_smpu_psel      ),
  .psel_s8             (apb_nmi_wake_psel  ),
  .psel_s9             (apb_tim1_psel      )
);

// &Connect( @27
//   .hclk                   (per_clk), @28
//   .hrst_b                 (pg_reset_b), @29
//   .harb_apb_hsel          (hsel_s2), @30
//   .harb_xx_haddr          (haddr_s2), @31
//   .harb_xx_hwdata         (hwdata_s2), @32
//   .harb_xx_hwrite         (hwrite_s2), @33
//   .apb_harb_hrdata        (hrdata_s2), @34
//   .apb_harb_hready        (hready_s2), @35
//   .apb_harb_hresp         (hresp_s2), @36
//   .apb_xx_paddr           (apb_xx_paddr), @37
//   .apb_xx_penable         (apb_xx_penable), @38
//   .apb_xx_pwdata          (apb_xx_pwdata), @39
//   .apb_xx_pwrite          (apb_xx_pwrite), @40
//   .prdata_s1              (uart_apb_prdata), @41
//   .prdata_s2              (tim_apb_prdata), @42
//   .prdata_s3              (pmu_apb_prdata), @43
//   .prdata_s4              (gpio_apb_prdata), @44
//   .prdata_s5              (stim_apb_prdata), @45
//   .prdata_s6              (clkgen_apb_prdata), @46
//   .prdata_s7              (smpu_apb_prdata), @47
//   .prdata_s8              (nmi_wake_apb_prdata), @48
//   .prdata_s9              (tim1_apb_prdata), @49
//   .psel_s1                (apb_uart_psel), @50
//   .psel_s2                (apb_tim_psel), @51
//   .psel_s3                (apb_pmu_psel), @52
//   .psel_s4                (apb_gpio_psel), @53
//   .psel_s5                (apb_stim_psel), @54
//   .psel_s6                (apb_clkgen_psel), @55
//   .psel_s7                (apb_smpu_psel), @56
//   .psel_s8                (apb_nmi_wake_psel), @57
//   .psel_s9                (apb_tim1_psel) @58
// ); @59

// &Instance("pmu", "x_pmu"); @61
pmu  x_pmu (
  .apb_pmu_paddr          (apb_xx_paddr[11:0]    ),
  .apb_pmu_penable        (apb_xx_penable        ),
  .apb_pmu_psel           (apb_pmu_psel          ),
  .apb_pmu_pwdata         (apb_xx_pwdata         ),
  .apb_pmu_pwrite         (apb_xx_pwrite         ),
  .biu_pad_lpmd_b         (biu_pad_lpmd_b        ),
  .corec_pmu_sleep_out    (corec_pmu_sleep_out   ),
  .cpu_clk                (cpu_clk               ),
  .gate_en0               (gate_en0              ),
  .gate_en1               (gate_en1              ),
  .had_pad_wakeup_req_b   (1'b1                  ),
  .i_pad_cpu_jtg_rst_b    (i_pad_cpu_jtg_rst_b   ),
  .i_pad_jtg_tclk         (i_pad_jtg_tclk        ),
  .intraw_vld             (intraw_vld            ),
  .pad_cpu_rst_b          (pad_cpu_rst_b         ),
  .pad_had_jtg_tap_en     (pad_had_jtg_tap_en    ),
  .pad_had_jtg_tms_i      (pad_had_jtg_tms_i     ),
  .pad_had_jtg_trst_b     (pad_had_jtg_trst_b    ),
  .pad_had_jtg_trst_b_pre (pad_had_jtg_trst_b_pre),
  .pg_reset_b             (pg_reset_b            ),
  .pmu_apb_prdata         (pmu_apb_prdata        ),
  .pmu_clk                (pmu_clk               ),
  .pmu_corec_isolation    (pmu_corec_isolation   ),
  .pmu_corec_sleep_in     (pmu_corec_sleep_in    ),
  .sys_rst                (sys_rst               )
);

// &Connect( @62
//   .apb_pmu_psel          (apb_pmu_psel), @63
//   .apb_pmu_paddr         (apb_xx_paddr[11:0]), @64
//   .apb_pmu_penable       (apb_xx_penable), @65
//   .apb_pmu_pwdata        (apb_xx_pwdata), @66
//   .apb_pmu_pwrite        (apb_xx_pwrite), @67
//   .pad_cpu_rst_b         (pad_cpu_rst_b), @68
//   .pmu_apb_prdata        (pmu_apb_prdata), @69
//   .intraw_b              (wic_vic_intraw_b), @70
//   .had_pad_wakeup_req_b  (1'b1            ) @71
// //  .ctl_xx_awake_enable   (32'hffffffff), @72
// //  .pulse_int             (1'b0) @73
//  // .pad_vic_event_vld     (1'b0) @74
// ); @75


// &Instance("uart", "x_uart"); @78
uart  x_uart (
  .apb_uart_paddr   (apb_xx_paddr    ),
  .apb_uart_penable (apb_xx_penable  ),
  .apb_uart_psel    (apb_uart_psel   ),
  .apb_uart_pwdata  (apb_xx_pwdata   ),
  .apb_uart_pwrite  (apb_xx_pwrite   ),
  .rst_b            (pad_cpu_rst_b   ),
  .s_in             (uart0_sin       ),
  .s_out            (uart0_sout      ),
  .sys_clk          (pmu_clk         ),
  .uart_apb_prdata  (uart_apb_prdata ),
  .uart_vic_int     (uart0_vic_int   )
);

// &Connect( @79
//   .sys_clk                (pmu_clk), @80
//   .apb_uart_psel          (apb_uart_psel), @81
//   .apb_uart_paddr         (apb_xx_paddr), @82
//   .apb_uart_penable       (apb_xx_penable), @83
//   .apb_uart_pwdata        (apb_xx_pwdata), @84
//   .apb_uart_pwrite        (apb_xx_pwrite), @85
//   .rst_b                  (pad_cpu_rst_b), @86
//   .uart_apb_prdata        (uart_apb_prdata), @87
//   .uart_vic_int           (uart0_vic_int), @88
//   .s_in                   (uart0_sin), @89
//   .s_out                  (uart0_sout) @90
// ); @91

// &Instance("timer", "x_timer"); @93
timer  x_timer (
  .paddr              (apb_xx_paddr[15:0]),
  .pclk               (pmu_clk           ),
  .penable            (apb_xx_penable    ),
  .prdata             (tim_apb_prdata    ),
  .presetn            (pad_cpu_rst_b     ),
  .psel               (apb_tim_psel      ),
  .pwdata             (apb_xx_pwdata     ),
  .pwrite             (apb_xx_pwrite     ),
  .timer_int          (tim_vic_int       )
);

// &Connect( @94
//   .presetn                (pad_cpu_rst_b), @95
//   .prdata                 (tim_apb_prdata), @96
//   .timer_int              (tim_vic_int), @97
//   .pclk                   (pmu_clk), @98
//   .penable                (apb_xx_penable), @99
//   .paddr                  (apb_xx_paddr[15:0]), @100
//   .psel                   (apb_tim_psel), @101
//   .pwdata                 (apb_xx_pwdata), @102
//   .pwrite                 (apb_xx_pwrite) @103
// ); @104

// &Instance("timer", "x_nmi_wake"); @106
timer  x_nmi_wake (
  .paddr               (apb_xx_paddr[15:0] ),
  .pclk                (pmu_clk            ),
  .penable             (apb_xx_penable     ),
  .prdata              (nmi_wake_apb_prdata),
  .presetn             (pad_cpu_rst_b      ),
  .psel                (apb_nmi_wake_psel  ),
  .pwdata              (apb_xx_pwdata      ),
  .pwrite              (apb_xx_pwrite      ),
  .timer_int           (nmi_wake_int       )
);

// &Connect( @107
//   .presetn                (pad_cpu_rst_b), @108
//   .prdata                 (nmi_wake_apb_prdata), @109
//   .timer_int              (nmi_wake_int), @110
//   .pclk                   (pmu_clk), @111
//   .penable                (apb_xx_penable), @112
//   .paddr                  (apb_xx_paddr[15:0]), @113
//   .psel                   (apb_nmi_wake_psel), @114
//   .pwdata                 (apb_xx_pwdata), @115
//   .pwrite                 (apb_xx_pwrite) @116
// ); @117
assign nmi_wake_int_lower[1:0]= nmi_wake_int[1:0];
assign nmi_wake_int_higher[1:0] = nmi_wake_int[3:2];

// &Instance("timer", "x_stimer"); @121
timer  x_stimer (
  .paddr              (apb_xx_paddr[15:0]),
  .pclk               (pmu_clk           ),
  .penable            (apb_xx_penable    ),
  .prdata             (stim_apb_prdata   ),
  .presetn            (pad_cpu_rst_b     ),
  .psel               (apb_stim_psel     ),
  .pwdata             (apb_xx_pwdata     ),
  .pwrite             (apb_xx_pwrite     ),
  .timer_int          (stim_vic_int      )
);

// &Connect( @122
//   .presetn                (pad_cpu_rst_b), @123
//   .prdata                 (stim_apb_prdata), @124
//   .timer_int              (stim_vic_int), @125
//   .pclk                   (pmu_clk), @126
//   .penable                (apb_xx_penable), @127
//   .paddr                  (apb_xx_paddr[15:0]), @128
//   .psel                   (apb_stim_psel), @129
//   .pwdata                 (apb_xx_pwdata), @130
//   .pwrite                 (apb_xx_pwrite) @131
// ); @132

// &Instance("timer", "x_timer1"); @134
timer  x_timer1 (
  .paddr              (apb_xx_paddr[15:0]),
  .pclk               (pmu_clk           ),
  .penable            (apb_xx_penable    ),
  .prdata             (tim1_apb_prdata   ),
  .presetn            (pad_cpu_rst_b     ),
  .psel               (apb_tim1_psel     ),
  .pwdata             (apb_xx_pwdata     ),
  .pwrite             (apb_xx_pwrite     ),
  .timer_int          (tim1_vic_int      )
);

// &Connect( @135
//   .presetn                (pad_cpu_rst_b), @136
//   .prdata                 (tim1_apb_prdata), @137
//   .timer_int              (tim1_vic_int), @138
//   .pclk                   (pmu_clk), @139
//   .penable                (apb_xx_penable), @140
//   .paddr                  (apb_xx_paddr[15:0]), @141
//   .psel                   (apb_tim1_psel), @142
//   .pwdata                 (apb_xx_pwdata), @143
//   .pwrite                 (apb_xx_pwrite) @144
// ); @145


// &Instance("fpga_clk_gen", "x_fpga_clk_gen"); @149
fpga_clk_gen  x_fpga_clk_gen (
  .clk_en             (clk_en            ),
  .clkrst_b           (pad_cpu_rst_b     ),
  .cpu_clk            (cpu_clk           ),
  .gate_en0           (gate_en0          ),
  .gate_en1           (gate_en1          ),
  .pad_clk            (pad_clk           ),
  .penable            (apb_xx_penable    ),
  .per_clk            (per_clk           ),
  .pmu_clk            (pmu_clk           ),
  .prdata             (clkgen_apb_prdata ),
  .psel               (apb_clkgen_psel   ),
  .pwdata             (apb_xx_pwdata[2:0]),
  .pwrite             (apb_xx_pwrite     ),
  .wic_clk            (wic_clk           )
);

// &Connect( @150
//   .penable               (apb_xx_penable    ), @151
//   .psel                  (apb_clkgen_psel   ), @152
//   .prdata                (clkgen_apb_prdata ), @153
//   .pwdata                (apb_xx_pwdata[2:0]), @154
//   .pwrite                (apb_xx_pwrite     ), @155
//   .clkrst_b              (pad_cpu_rst_b     ) @156
// ); @157
// &Instance("clk_aligner", "x_clk_aligner"); @159
// &Connect( @160
//   .forever_cpuclk          (pad_clk           ), @161
//   .penable                 (apb_xx_penable    ), @162
//   .paddr                   (apb_xx_paddr[11:0]), @163
//   .psel                    (apb_clkgen_psel   ), @164
//   .prdata                  (clkgen_apb_prdata ), @165
//   .pwdata                  (apb_xx_pwdata[2:0]), @166
//   .pwrite                  (apb_xx_pwrite     ), @167
//   .clkrst_b                (pad_cpu_rst_b     ) @168
// ); @169
// &Instance("clk_divider", "x_clk_divider"); @171
// &Connect( @172
//   .osc_clk                 (pad_clk) @173
// ); @174



// &Instance("gpio", "x_gpio"); @179
gpio  x_gpio (
  .b_pad_gpio_porta  (b_pad_gpio_porta ),
  .gpio_intr         (gpio_vic_int     ),
  .paddr             (apb_xx_paddr[6:2]),
  .pclk              (pmu_clk          ),
  .pclk_intr         (pmu_clk          ),
  .penable           (apb_xx_penable   ),
  .prdata            (gpio_apb_prdata  ),
  .presetn           (pad_cpu_rst_b    ),
  .psel              (apb_gpio_psel    ),
  .pwdata            (apb_xx_pwdata    ),
  .pwrite            (apb_xx_pwrite    )
);

// &Connect( @180
//   .paddr                  (apb_xx_paddr[6:2]), @181
//   .pclk                   (pmu_clk), @182
//   .pclk_intr              (pmu_clk), @183
//   .penable                (apb_xx_penable), @184
//   .presetn                (pad_cpu_rst_b), @185
//   .psel                   (apb_gpio_psel), @186
//   .pwdata                 (apb_xx_pwdata), @187
//   .pwrite                 (apb_xx_pwrite), @188
//   .gpio_intr              (gpio_vic_int), @189
//   .prdata                 (gpio_apb_prdata) @190
// ); @191

// &Instance("smpu_top", "x_smpu_top"); @193
smpu_top  x_smpu_top (
  .biu_pad_haddr     (fifo_pad_haddr   ),
  .biu_pad_hprot     (fifo_pad_hprot   ),
  .paddr             (apb_xx_paddr[3:2]),
  .pclk              (per_clk          ),
  .penable           (apb_xx_penable   ),
  .prdata            (smpu_apb_prdata  ),
  .presetn           (pg_reset_b       ),
  .psel              (apb_smpu_psel    ),
  .pwdata            (apb_xx_pwdata    ),
  .pwrite            (apb_xx_pwrite    ),
  .smpu_deny         (smpu_deny        )
);

// &Connect( @194
//   .paddr                  (apb_xx_paddr[3:2]), @195
//   .pclk                   (per_clk), @196
//   .penable                (apb_xx_penable), @197
//   .presetn                (pg_reset_b), @198
//   .psel                   (apb_smpu_psel), @199
//   .pwdata                 (apb_xx_pwdata), @200
//   .pwrite                 (apb_xx_pwrite), @201
//   .prdata                 (smpu_apb_prdata), @202
//   .biu_pad_haddr          (fifo_pad_haddr ), @203
//   .biu_pad_hprot          (fifo_pad_hprot ) @204
// ); @205

// &Instance("wic_top", "x_wic_top"); @207
wic_top  x_wic_top (
  .ctl_xx_awake_enable (32'hffffffff       ),
  .gpio_vic_int        (gpio_vic_int       ),
  .intraw_vld          (intraw_vld         ),
  .nmi_wake_int_higher (nmi_wake_int_higher),
  .pad_cpu_rst_b       (pad_cpu_rst_b      ),
  .pad_vic_int_vld     (pad_vic_int_vld    ),
  .pulse_int           (1'b0               ),
  .stim_vic_int        (stim_vic_int       ),
  .tim1_vic_int        (tim1_vic_int       ),
  .tim_vic_int         (tim_vic_int        ),
  .uart0_vic_int       (uart0_vic_int      ),
  .wic_clk             (wic_clk            )
);

// &Connect( @208
//    .pulse_int              (1'b0         ), @209
//    .ctl_xx_awake_enable   (32'hffffffff  ) @210
//  @211
// ); @212
// &Force("nonport","pulse_int"); @214
// &Force("nonport","stim_vic_int"); @215
// &Force("nonport","gpio_vic_int"); @216

// &Force("nonport", "pulse_int"); @220
// &Force("nonport", "stim_vic_int"); @221

//assign pll_core_cpuclk = per_clk;
// &Force("output","per_clk"); @225
// &Force("output","cpu_clk"); @226
// &Force("output","pg_reset_b"); @227

// //&Force("output","cpu_clk"); @229
// //&Force("output",""); @230

// &ModuleEnd; @232
endmodule