// ==============================================================
// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
// Version: 2016.2
// Copyright (C) 1986-2016 Xilinx, Inc. All Rights Reserved.
// 
// ===========================================================

#ifndef _lcddrv_init_lcd_HH_
#define _lcddrv_init_lcd_HH_

#include "systemc.h"
#include "AESL_pkg.h"

#include "lcddrv_lcd_send_cmd.h"
#include "lcddrv_wait_tmr.h"

namespace ap_rtl {

struct lcddrv_init_lcd : public sc_module {
    // Port declarations 15
    sc_in_clk ap_clk;
    sc_in< sc_logic > ap_rst;
    sc_in< sc_logic > ap_start;
    sc_out< sc_logic > ap_done;
    sc_out< sc_logic > ap_idle;
    sc_out< sc_logic > ap_ready;
    sc_in< sc_lv<1> > dummy_tmr_out_i;
    sc_out< sc_lv<1> > dummy_tmr_out_o;
    sc_out< sc_logic > dummy_tmr_out_o_ap_vld;
    sc_out< sc_lv<1> > en;
    sc_out< sc_logic > en_ap_vld;
    sc_out< sc_lv<1> > rs;
    sc_out< sc_logic > rs_ap_vld;
    sc_out< sc_lv<4> > data;
    sc_out< sc_logic > data_ap_vld;
    sc_signal< sc_lv<1> > ap_var_for_const0;


    // Module declarations
    lcddrv_init_lcd(sc_module_name name);
    SC_HAS_PROCESS(lcddrv_init_lcd);

    ~lcddrv_init_lcd();

    sc_trace_file* mVcdFile;

    lcddrv_lcd_send_cmd* grp_lcddrv_lcd_send_cmd_fu_36;
    lcddrv_wait_tmr* grp_lcddrv_wait_tmr_fu_57;
    sc_signal< sc_lv<40> > ap_CS_fsm;
    sc_signal< sc_logic > ap_sig_cseq_ST_st1_fsm_0;
    sc_signal< bool > ap_sig_57;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_ap_start;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_ap_done;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_ap_idle;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_ap_ready;
    sc_signal< sc_lv<4> > grp_lcddrv_lcd_send_cmd_fu_36_wd;
    sc_signal< sc_lv<1> > grp_lcddrv_lcd_send_cmd_fu_36_en;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_en_ap_vld;
    sc_signal< sc_lv<1> > grp_lcddrv_lcd_send_cmd_fu_36_dummy_tmr_out_o;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_dummy_tmr_out_o_ap_vld;
    sc_signal< sc_lv<1> > grp_lcddrv_lcd_send_cmd_fu_36_rs;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_rs_ap_vld;
    sc_signal< sc_lv<4> > grp_lcddrv_lcd_send_cmd_fu_36_data;
    sc_signal< sc_logic > grp_lcddrv_lcd_send_cmd_fu_36_data_ap_vld;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_57_ap_start;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_57_ap_done;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_57_ap_idle;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_57_ap_ready;
    sc_signal< sc_lv<25> > grp_lcddrv_wait_tmr_fu_57_tmr;
    sc_signal< sc_lv<1> > grp_lcddrv_wait_tmr_fu_57_dummy_tmr_out_o;
    sc_signal< sc_logic > grp_lcddrv_wait_tmr_fu_57_dummy_tmr_out_o_ap_vld;
    sc_signal< sc_logic > ap_reg_grp_lcddrv_lcd_send_cmd_fu_36_ap_start;
    sc_signal< sc_logic > ap_sig_cseq_ST_st3_fsm_2;
    sc_signal< bool > ap_sig_105;
    sc_signal< sc_logic > ap_sig_cseq_ST_st7_fsm_6;
    sc_signal< bool > ap_sig_112;
    sc_signal< sc_logic > ap_sig_cseq_ST_st11_fsm_10;
    sc_signal< bool > ap_sig_120;
    sc_signal< sc_logic > ap_sig_cseq_ST_st15_fsm_14;
    sc_signal< bool > ap_sig_128;
    sc_signal< sc_logic > ap_sig_cseq_ST_st17_fsm_16;
    sc_signal< bool > ap_sig_136;
    sc_signal< sc_logic > ap_sig_cseq_ST_st19_fsm_18;
    sc_signal< bool > ap_sig_144;
    sc_signal< sc_logic > ap_sig_cseq_ST_st23_fsm_22;
    sc_signal< bool > ap_sig_152;
    sc_signal< sc_logic > ap_sig_cseq_ST_st25_fsm_24;
    sc_signal< bool > ap_sig_160;
    sc_signal< sc_logic > ap_sig_cseq_ST_st29_fsm_28;
    sc_signal< bool > ap_sig_168;
    sc_signal< sc_logic > ap_sig_cseq_ST_st31_fsm_30;
    sc_signal< bool > ap_sig_176;
    sc_signal< sc_logic > ap_sig_cseq_ST_st35_fsm_34;
    sc_signal< bool > ap_sig_184;
    sc_signal< sc_logic > ap_sig_cseq_ST_st37_fsm_36;
    sc_signal< bool > ap_sig_192;
    sc_signal< sc_logic > ap_sig_cseq_ST_st4_fsm_3;
    sc_signal< bool > ap_sig_201;
    sc_signal< sc_logic > ap_sig_cseq_ST_st8_fsm_7;
    sc_signal< bool > ap_sig_208;
    sc_signal< sc_logic > ap_sig_cseq_ST_st12_fsm_11;
    sc_signal< bool > ap_sig_216;
    sc_signal< sc_logic > ap_sig_cseq_ST_st16_fsm_15;
    sc_signal< bool > ap_sig_224;
    sc_signal< sc_logic > ap_sig_cseq_ST_st18_fsm_17;
    sc_signal< bool > ap_sig_232;
    sc_signal< sc_logic > ap_sig_cseq_ST_st20_fsm_19;
    sc_signal< bool > ap_sig_240;
    sc_signal< sc_logic > ap_sig_cseq_ST_st24_fsm_23;
    sc_signal< bool > ap_sig_248;
    sc_signal< sc_logic > ap_sig_cseq_ST_st26_fsm_25;
    sc_signal< bool > ap_sig_256;
    sc_signal< sc_logic > ap_sig_cseq_ST_st30_fsm_29;
    sc_signal< bool > ap_sig_264;
    sc_signal< sc_logic > ap_sig_cseq_ST_st32_fsm_31;
    sc_signal< bool > ap_sig_272;
    sc_signal< sc_logic > ap_sig_cseq_ST_st36_fsm_35;
    sc_signal< bool > ap_sig_280;
    sc_signal< sc_logic > ap_sig_cseq_ST_st38_fsm_37;
    sc_signal< bool > ap_sig_288;
    sc_signal< sc_logic > ap_reg_grp_lcddrv_wait_tmr_fu_57_ap_start;
    sc_signal< sc_logic > ap_sig_cseq_ST_st5_fsm_4;
    sc_signal< bool > ap_sig_407;
    sc_signal< sc_logic > ap_sig_cseq_ST_st9_fsm_8;
    sc_signal< bool > ap_sig_415;
    sc_signal< sc_logic > ap_sig_cseq_ST_st13_fsm_12;
    sc_signal< bool > ap_sig_423;
    sc_signal< sc_logic > ap_sig_cseq_ST_st21_fsm_20;
    sc_signal< bool > ap_sig_431;
    sc_signal< sc_logic > ap_sig_cseq_ST_st27_fsm_26;
    sc_signal< bool > ap_sig_439;
    sc_signal< sc_logic > ap_sig_cseq_ST_st33_fsm_32;
    sc_signal< bool > ap_sig_447;
    sc_signal< sc_logic > ap_sig_cseq_ST_st39_fsm_38;
    sc_signal< bool > ap_sig_455;
    sc_signal< sc_logic > ap_sig_cseq_ST_st2_fsm_1;
    sc_signal< bool > ap_sig_464;
    sc_signal< sc_logic > ap_sig_cseq_ST_st6_fsm_5;
    sc_signal< bool > ap_sig_472;
    sc_signal< sc_logic > ap_sig_cseq_ST_st10_fsm_9;
    sc_signal< bool > ap_sig_480;
    sc_signal< sc_logic > ap_sig_cseq_ST_st14_fsm_13;
    sc_signal< bool > ap_sig_487;
    sc_signal< sc_logic > ap_sig_cseq_ST_st22_fsm_21;
    sc_signal< bool > ap_sig_496;
    sc_signal< sc_logic > ap_sig_cseq_ST_st28_fsm_27;
    sc_signal< bool > ap_sig_503;
    sc_signal< sc_logic > ap_sig_cseq_ST_st34_fsm_33;
    sc_signal< bool > ap_sig_512;
    sc_signal< sc_logic > ap_sig_cseq_ST_st40_fsm_39;
    sc_signal< bool > ap_sig_519;
    sc_signal< sc_lv<40> > ap_NS_fsm;
    static const sc_logic ap_const_logic_1;
    static const sc_logic ap_const_logic_0;
    static const sc_lv<40> ap_ST_st1_fsm_0;
    static const sc_lv<40> ap_ST_st2_fsm_1;
    static const sc_lv<40> ap_ST_st3_fsm_2;
    static const sc_lv<40> ap_ST_st4_fsm_3;
    static const sc_lv<40> ap_ST_st5_fsm_4;
    static const sc_lv<40> ap_ST_st6_fsm_5;
    static const sc_lv<40> ap_ST_st7_fsm_6;
    static const sc_lv<40> ap_ST_st8_fsm_7;
    static const sc_lv<40> ap_ST_st9_fsm_8;
    static const sc_lv<40> ap_ST_st10_fsm_9;
    static const sc_lv<40> ap_ST_st11_fsm_10;
    static const sc_lv<40> ap_ST_st12_fsm_11;
    static const sc_lv<40> ap_ST_st13_fsm_12;
    static const sc_lv<40> ap_ST_st14_fsm_13;
    static const sc_lv<40> ap_ST_st15_fsm_14;
    static const sc_lv<40> ap_ST_st16_fsm_15;
    static const sc_lv<40> ap_ST_st17_fsm_16;
    static const sc_lv<40> ap_ST_st18_fsm_17;
    static const sc_lv<40> ap_ST_st19_fsm_18;
    static const sc_lv<40> ap_ST_st20_fsm_19;
    static const sc_lv<40> ap_ST_st21_fsm_20;
    static const sc_lv<40> ap_ST_st22_fsm_21;
    static const sc_lv<40> ap_ST_st23_fsm_22;
    static const sc_lv<40> ap_ST_st24_fsm_23;
    static const sc_lv<40> ap_ST_st25_fsm_24;
    static const sc_lv<40> ap_ST_st26_fsm_25;
    static const sc_lv<40> ap_ST_st27_fsm_26;
    static const sc_lv<40> ap_ST_st28_fsm_27;
    static const sc_lv<40> ap_ST_st29_fsm_28;
    static const sc_lv<40> ap_ST_st30_fsm_29;
    static const sc_lv<40> ap_ST_st31_fsm_30;
    static const sc_lv<40> ap_ST_st32_fsm_31;
    static const sc_lv<40> ap_ST_st33_fsm_32;
    static const sc_lv<40> ap_ST_st34_fsm_33;
    static const sc_lv<40> ap_ST_st35_fsm_34;
    static const sc_lv<40> ap_ST_st36_fsm_35;
    static const sc_lv<40> ap_ST_st37_fsm_36;
    static const sc_lv<40> ap_ST_st38_fsm_37;
    static const sc_lv<40> ap_ST_st39_fsm_38;
    static const sc_lv<40> ap_ST_st40_fsm_39;
    static const sc_lv<32> ap_const_lv32_0;
    static const sc_lv<1> ap_const_lv1_1;
    static const sc_lv<32> ap_const_lv32_2;
    static const sc_lv<32> ap_const_lv32_6;
    static const sc_lv<32> ap_const_lv32_A;
    static const sc_lv<32> ap_const_lv32_E;
    static const sc_lv<32> ap_const_lv32_10;
    static const sc_lv<32> ap_const_lv32_12;
    static const sc_lv<32> ap_const_lv32_16;
    static const sc_lv<32> ap_const_lv32_18;
    static const sc_lv<32> ap_const_lv32_1C;
    static const sc_lv<32> ap_const_lv32_1E;
    static const sc_lv<32> ap_const_lv32_22;
    static const sc_lv<32> ap_const_lv32_24;
    static const sc_lv<1> ap_const_lv1_0;
    static const sc_lv<32> ap_const_lv32_3;
    static const sc_lv<32> ap_const_lv32_7;
    static const sc_lv<32> ap_const_lv32_B;
    static const sc_lv<32> ap_const_lv32_F;
    static const sc_lv<32> ap_const_lv32_11;
    static const sc_lv<32> ap_const_lv32_13;
    static const sc_lv<32> ap_const_lv32_17;
    static const sc_lv<32> ap_const_lv32_19;
    static const sc_lv<32> ap_const_lv32_1D;
    static const sc_lv<32> ap_const_lv32_1F;
    static const sc_lv<32> ap_const_lv32_23;
    static const sc_lv<32> ap_const_lv32_25;
    static const sc_lv<4> ap_const_lv4_3;
    static const sc_lv<4> ap_const_lv4_2;
    static const sc_lv<4> ap_const_lv4_8;
    static const sc_lv<4> ap_const_lv4_0;
    static const sc_lv<4> ap_const_lv4_C;
    static const sc_lv<4> ap_const_lv4_1;
    static const sc_lv<32> ap_const_lv32_4;
    static const sc_lv<32> ap_const_lv32_8;
    static const sc_lv<32> ap_const_lv32_C;
    static const sc_lv<32> ap_const_lv32_14;
    static const sc_lv<32> ap_const_lv32_1A;
    static const sc_lv<32> ap_const_lv32_20;
    static const sc_lv<32> ap_const_lv32_26;
    static const sc_lv<25> ap_const_lv25_1E8480;
    static const sc_lv<32> ap_const_lv32_1;
    static const sc_lv<25> ap_const_lv25_7A120;
    static const sc_lv<32> ap_const_lv32_5;
    static const sc_lv<25> ap_const_lv25_C350;
    static const sc_lv<32> ap_const_lv32_9;
    static const sc_lv<32> ap_const_lv32_D;
    static const sc_lv<25> ap_const_lv25_2710;
    static const sc_lv<32> ap_const_lv32_15;
    static const sc_lv<32> ap_const_lv32_1B;
    static const sc_lv<25> ap_const_lv25_30D40;
    static const sc_lv<32> ap_const_lv32_21;
    static const sc_lv<32> ap_const_lv32_27;
    // Thread declarations
    void thread_ap_var_for_const0();
    void thread_ap_clk_no_reset_();
    void thread_ap_done();
    void thread_ap_idle();
    void thread_ap_ready();
    void thread_ap_sig_105();
    void thread_ap_sig_112();
    void thread_ap_sig_120();
    void thread_ap_sig_128();
    void thread_ap_sig_136();
    void thread_ap_sig_144();
    void thread_ap_sig_152();
    void thread_ap_sig_160();
    void thread_ap_sig_168();
    void thread_ap_sig_176();
    void thread_ap_sig_184();
    void thread_ap_sig_192();
    void thread_ap_sig_201();
    void thread_ap_sig_208();
    void thread_ap_sig_216();
    void thread_ap_sig_224();
    void thread_ap_sig_232();
    void thread_ap_sig_240();
    void thread_ap_sig_248();
    void thread_ap_sig_256();
    void thread_ap_sig_264();
    void thread_ap_sig_272();
    void thread_ap_sig_280();
    void thread_ap_sig_288();
    void thread_ap_sig_407();
    void thread_ap_sig_415();
    void thread_ap_sig_423();
    void thread_ap_sig_431();
    void thread_ap_sig_439();
    void thread_ap_sig_447();
    void thread_ap_sig_455();
    void thread_ap_sig_464();
    void thread_ap_sig_472();
    void thread_ap_sig_480();
    void thread_ap_sig_487();
    void thread_ap_sig_496();
    void thread_ap_sig_503();
    void thread_ap_sig_512();
    void thread_ap_sig_519();
    void thread_ap_sig_57();
    void thread_ap_sig_cseq_ST_st10_fsm_9();
    void thread_ap_sig_cseq_ST_st11_fsm_10();
    void thread_ap_sig_cseq_ST_st12_fsm_11();
    void thread_ap_sig_cseq_ST_st13_fsm_12();
    void thread_ap_sig_cseq_ST_st14_fsm_13();
    void thread_ap_sig_cseq_ST_st15_fsm_14();
    void thread_ap_sig_cseq_ST_st16_fsm_15();
    void thread_ap_sig_cseq_ST_st17_fsm_16();
    void thread_ap_sig_cseq_ST_st18_fsm_17();
    void thread_ap_sig_cseq_ST_st19_fsm_18();
    void thread_ap_sig_cseq_ST_st1_fsm_0();
    void thread_ap_sig_cseq_ST_st20_fsm_19();
    void thread_ap_sig_cseq_ST_st21_fsm_20();
    void thread_ap_sig_cseq_ST_st22_fsm_21();
    void thread_ap_sig_cseq_ST_st23_fsm_22();
    void thread_ap_sig_cseq_ST_st24_fsm_23();
    void thread_ap_sig_cseq_ST_st25_fsm_24();
    void thread_ap_sig_cseq_ST_st26_fsm_25();
    void thread_ap_sig_cseq_ST_st27_fsm_26();
    void thread_ap_sig_cseq_ST_st28_fsm_27();
    void thread_ap_sig_cseq_ST_st29_fsm_28();
    void thread_ap_sig_cseq_ST_st2_fsm_1();
    void thread_ap_sig_cseq_ST_st30_fsm_29();
    void thread_ap_sig_cseq_ST_st31_fsm_30();
    void thread_ap_sig_cseq_ST_st32_fsm_31();
    void thread_ap_sig_cseq_ST_st33_fsm_32();
    void thread_ap_sig_cseq_ST_st34_fsm_33();
    void thread_ap_sig_cseq_ST_st35_fsm_34();
    void thread_ap_sig_cseq_ST_st36_fsm_35();
    void thread_ap_sig_cseq_ST_st37_fsm_36();
    void thread_ap_sig_cseq_ST_st38_fsm_37();
    void thread_ap_sig_cseq_ST_st39_fsm_38();
    void thread_ap_sig_cseq_ST_st3_fsm_2();
    void thread_ap_sig_cseq_ST_st40_fsm_39();
    void thread_ap_sig_cseq_ST_st4_fsm_3();
    void thread_ap_sig_cseq_ST_st5_fsm_4();
    void thread_ap_sig_cseq_ST_st6_fsm_5();
    void thread_ap_sig_cseq_ST_st7_fsm_6();
    void thread_ap_sig_cseq_ST_st8_fsm_7();
    void thread_ap_sig_cseq_ST_st9_fsm_8();
    void thread_data();
    void thread_data_ap_vld();
    void thread_dummy_tmr_out_o();
    void thread_dummy_tmr_out_o_ap_vld();
    void thread_en();
    void thread_en_ap_vld();
    void thread_grp_lcddrv_lcd_send_cmd_fu_36_ap_start();
    void thread_grp_lcddrv_lcd_send_cmd_fu_36_wd();
    void thread_grp_lcddrv_wait_tmr_fu_57_ap_start();
    void thread_grp_lcddrv_wait_tmr_fu_57_tmr();
    void thread_rs();
    void thread_rs_ap_vld();
    void thread_ap_NS_fsm();
};

}

using namespace ap_rtl;

#endif
