library verilog;
use verilog.vl_types.all;
entity UserIF is
    generic(
        SNSERVICE       : integer := 0;
        DSNPTR          : integer := 0;
        UCSERVICE       : integer := 0;
        USERCODEPTR     : integer := 0;
        DCSERVICE       : integer := 0;
        DEVICECERTPTR   : integer := 0;
        UDVSERVICE      : integer := 0;
        DESIGNVERPTR    : integer := 0;
        CRYPTOAES128SERVICE: integer := 0;
        CRYPTOAES128DATAPTR: integer := 0;
        CRYPTOAES256SERVICE: integer := 0;
        CRYPTOAES256DATAPTR: integer := 0;
        CRYPTOSHA256SERVICE: integer := 0;
        CRYPTOSHA256DATAPTR: integer := 0;
        CRYPTORSLTPTR   : integer := 0;
        CRYPTODATAINPPTR: integer := 0;
        CRYPTOHMACSERVICE: integer := 0;
        CRYPTOHMACDATAPTR: integer := 0;
        CRYPTOSRCADPTR  : integer := 0;
        CRYPTODSTADPTR  : integer := 0;
        FFSERVICE       : integer := 0;
        KEYTREESERVICE  : integer := 0;
        KEYTREEDATAPTR  : integer := 0;
        PPUFCHRESPSERVICE: integer := 0;
        PPUFCHRESPPTR   : integer := 0;
        PPUFCHRESPKEYADDR: integer := 0;
        NRBGSERVICE     : integer := 0;
        NRBGINSTPTR     : integer := 0;
        NRBGPERSTRINGPTR: integer := 0;
        NRBGGENPTR      : integer := 0;
        NRBGREQDATAPTR  : integer := 0;
        NRBGRESEEDPTR   : integer := 0;
        NRBGADDINPPTR   : integer := 0;
        ZERSERVICE      : integer := 0;
        PROGIAPSERVICE  : integer := 0;
        PROGSPIADR      : integer := 0;
        PROGNVMDISERVICE: integer := 0;
        PORDSERVICE     : integer := 0
    );
    port(
        clk             : in     vl_logic;
        resetn          : in     vl_logic;
        ureq_enable_i   : in     vl_logic;
        ucmdbyte_req_i  : in     vl_logic_vector(7 downto 0);
        uoptions_mode_i : in     vl_logic_vector(2 downto 0);
        ucommblk_int_i  : in     vl_logic;
        uzer_en_i       : in     vl_logic;
        udata_wvalid_i  : in     vl_logic;
        udata_w_i       : in     vl_logic_vector(31 downto 0);
        ucrypto_key     : in     vl_logic_vector(255 downto 0);
        ucrypto_iv      : in     vl_logic_vector(127 downto 0);
        ucrypto_mode    : in     vl_logic_vector(7 downto 0);
        ucrypto_nblocks : in     vl_logic_vector(15 downto 0);
        ucrypto_length  : in     vl_logic_vector(31 downto 0);
        unrbg_length    : in     vl_logic_vector(7 downto 0);
        unrbg_handle    : in     vl_logic_vector(7 downto 0);
        unrbg_addlength : in     vl_logic_vector(7 downto 0);
        unrbg_prreq     : in     vl_logic_vector(7 downto 0);
        udpa_key_i      : in     vl_logic_vector(255 downto 0);
        udpa_optype_i   : in     vl_logic_vector(7 downto 0);
        udpa_path_i     : in     vl_logic_vector(127 downto 0);
        uspi_txreq_en_i : in     vl_logic;
        uspi_txdata_i   : in     vl_logic_vector(7 downto 0);
        uspi_size_i     : in     vl_logic_vector(5 downto 0);
        uspi_frmcnt_i   : in     vl_logic_vector(15 downto 0);
        cuspi_rxval_i   : in     vl_logic;
        cuspi_rxdata_i  : in     vl_logic_vector(7 downto 0);
        cudata_wrdy_i   : in     vl_logic;
        cudata_rvalid_i : in     vl_logic;
        cudata_r_i      : in     vl_logic_vector(31 downto 0);
        custatus_valid_i: in     vl_logic;
        cutrans_done_i  : in     vl_logic;
        cubusy_i        : in     vl_logic;
        cuhprior_flushdone_i: in     vl_logic;
        custatus_out_en : in     vl_logic;
        uccommblk_int_o : out    vl_logic;
        uctrig_o        : out    vl_logic;
        uclatchcmd_o    : out    vl_logic_vector(7 downto 0);
        uclatchoptions_o: out    vl_logic_vector(2 downto 0);
        uclatchzer_o    : out    vl_logic;
        uccrypto_key_o  : out    vl_logic_vector(255 downto 0);
        uccrypto_iv_o   : out    vl_logic_vector(127 downto 0);
        uccrypto_mode_o : out    vl_logic_vector(7 downto 0);
        uccrypto_nblocks_o: out    vl_logic_vector(15 downto 0);
        uccrypto_length_o: out    vl_logic_vector(31 downto 0);
        ucnrbg_length_o : out    vl_logic_vector(7 downto 0);
        ucnrbg_handle_o : out    vl_logic_vector(7 downto 0);
        ucnrbg_addlength_o: out    vl_logic_vector(7 downto 0);
        ucnrbg_prreq_o  : out    vl_logic_vector(7 downto 0);
        ucdpa_key_o     : out    vl_logic_vector(255 downto 0);
        ucdpa_optype_o  : out    vl_logic_vector(7 downto 0);
        ucdpa_path_o    : out    vl_logic_vector(127 downto 0);
        ucspi_txreq_en_o: out    vl_logic;
        ucspi_txdata_o  : out    vl_logic_vector(7 downto 0);
        ucspi_size_o    : out    vl_logic_vector(5 downto 0);
        ucspi_frmcnt_o  : out    vl_logic_vector(15 downto 0);
        uspi_rxval_o    : out    vl_logic;
        uspi_rxdata_o   : out    vl_logic_vector(7 downto 0);
        ucdata_w_o      : out    vl_logic_vector(31 downto 0);
        ucdata_wvalid_o : out    vl_logic;
        ucvalid_cmd_o   : out    vl_logic;
        uchprior_flushreq_o: out    vl_logic;
        spilength       : out    vl_logic_vector(31 downto 0);
        ubusy_o         : out    vl_logic;
        udata_wrdy_o    : out    vl_logic;
        udata_rvalid_o  : out    vl_logic;
        udata_r_o       : out    vl_logic_vector(31 downto 0);
        ustatus_valid_o : out    vl_logic;
        ustatus_resp_o  : out    vl_logic_vector(7 downto 0)
    );
    attribute mti_svvh_generic_type : integer;
    attribute mti_svvh_generic_type of SNSERVICE : constant is 1;
    attribute mti_svvh_generic_type of DSNPTR : constant is 1;
    attribute mti_svvh_generic_type of UCSERVICE : constant is 1;
    attribute mti_svvh_generic_type of USERCODEPTR : constant is 1;
    attribute mti_svvh_generic_type of DCSERVICE : constant is 1;
    attribute mti_svvh_generic_type of DEVICECERTPTR : constant is 1;
    attribute mti_svvh_generic_type of UDVSERVICE : constant is 1;
    attribute mti_svvh_generic_type of DESIGNVERPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOAES128SERVICE : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOAES128DATAPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOAES256SERVICE : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOAES256DATAPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOSHA256SERVICE : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOSHA256DATAPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTORSLTPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTODATAINPPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOHMACSERVICE : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOHMACDATAPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTOSRCADPTR : constant is 1;
    attribute mti_svvh_generic_type of CRYPTODSTADPTR : constant is 1;
    attribute mti_svvh_generic_type of FFSERVICE : constant is 1;
    attribute mti_svvh_generic_type of KEYTREESERVICE : constant is 1;
    attribute mti_svvh_generic_type of KEYTREEDATAPTR : constant is 1;
    attribute mti_svvh_generic_type of PPUFCHRESPSERVICE : constant is 1;
    attribute mti_svvh_generic_type of PPUFCHRESPPTR : constant is 1;
    attribute mti_svvh_generic_type of PPUFCHRESPKEYADDR : constant is 1;
    attribute mti_svvh_generic_type of NRBGSERVICE : constant is 1;
    attribute mti_svvh_generic_type of NRBGINSTPTR : constant is 1;
    attribute mti_svvh_generic_type of NRBGPERSTRINGPTR : constant is 1;
    attribute mti_svvh_generic_type of NRBGGENPTR : constant is 1;
    attribute mti_svvh_generic_type of NRBGREQDATAPTR : constant is 1;
    attribute mti_svvh_generic_type of NRBGRESEEDPTR : constant is 1;
    attribute mti_svvh_generic_type of NRBGADDINPPTR : constant is 1;
    attribute mti_svvh_generic_type of ZERSERVICE : constant is 1;
    attribute mti_svvh_generic_type of PROGIAPSERVICE : constant is 1;
    attribute mti_svvh_generic_type of PROGSPIADR : constant is 1;
    attribute mti_svvh_generic_type of PROGNVMDISERVICE : constant is 1;
    attribute mti_svvh_generic_type of PORDSERVICE : constant is 1;
end UserIF;
