<?xml version="1.0"?>
<lsccip:ip version="1.0"
    xmlns:lsccip="http://www.latticesemi.com/XMLSchema/Radiant/ip"
    xmlns:xi="http://www.w3.org/2001/XInclude"> 
           
  <lsccip:general>
    <lsccip:vendor>latticesemi.com</lsccip:vendor>
    <lsccip:library>ip</lsccip:library>
    <lsccip:name>int_flash_ctrl_xo5</lsccip:name>
    <lsccip:display_name>Internal Flash Controller for MachXO5-NX</lsccip:display_name>
    <lsccip:version>2.3.1</lsccip:version>
    <lsccip:category>Processors_Controllers_and_Peripherals</lsccip:category>
    <lsccip:min_radiant_version>3.1</lsccip:min_radiant_version>
    <lsccip:min_esi_version>2.2</lsccip:min_esi_version>    
    <lsccip:supported_products>
      <lsccip:supported_family name="LFMXO5">
        <lsccip:supported_device name="LFMXO5-25"></lsccip:supported_device>
        <lsccip:supported_device name="LFMXO5-100T"></lsccip:supported_device>
        <lsccip:supported_device name="LFMXO5-55T"></lsccip:supported_device>
        <lsccip:supported_device name="LFMXO5-35"></lsccip:supported_device> 
        <lsccip:supported_device name="LFMXO5-35T"></lsccip:supported_device>
        <lsccip:supported_device name="LFMXO5-65"></lsccip:supported_device>
        <lsccip:supported_device name="LFMXO5-65T"></lsccip:supported_device>
      </lsccip:supported_family>
    </lsccip:supported_products>
    <lsccip:supported_platforms>
      <lsccip:supported_platform name="radiant"/>
      <lsccip:supported_platform name="esi"/>
    </lsccip:supported_platforms>
  </lsccip:general>

  <lsccip:settings>
    <lsccip:setting 
        id                 = "FAMILY"
        conn_mod           = "ufm_access"
        type               = "param"
        value_type         = "string"
        title              = "Device Architecture"
        value_expr         = "get_device_name(1)"
        editable           = "False"
        hidden             = "True"
        group1             = "General"
    />

    <lsccip:setting 
	    id                 = "T_FAMILY"
        conn_mod           = "ufm_access"
        type               = "input"
        value_type         = "string"
        group1             = "General"
        title              = "Device Architecture"
        value_expr         = "get_tdevice_name(FAMILY)"
        editable           = "False"
        hidden             = "True"
    />

    <lsccip:setting 
        id 		           = "DEVICE"
        type 	           = "param"
        conn_mod 	       = "ufm_access"
        value_type	       = "string"
        title 	           = "Dev"
        value_expr         = "runtime_info.device_info.device(1)"
        editable           = "False"
        hidden	           = "True"
        group1             = "General"	
    />

    <!-- General -->
    <lsccip:setting 
	    id                 = "INTERFACE"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "string"
        title              = "Interface"
	    options            = "['AHBL','APB']"
        default            = "AHBL"
        group1             = "General"
    />

    <lsccip:setting
        id                 = "INTERFACE_DATA_WIDTH"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "Interface Data Width"
    	editable           = "False"
    	hidden             = "False"
        default            = "32"
    	group1             = "General"
    />

    <lsccip:setting
        id                 = "INTERFACE_ADDRESS_WIDTH"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "Interface Address Width"
    	editable           = "False"
    	hidden             = "False"
        default            = "32"
    	group1             = "General"
    />

    <!-- RD FIFO -->
    <lsccip:setting 
	    id                 = "RD_FIFO_WIDTH"
        type               = "input"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "RD FIFO Width"
        value_expr         = "32"
        editable           = "False"
        group1             = "RD FIFO Settings"
    />

    <lsccip:setting 
	    id                 = "RD_FIFO_DEPTH"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "FIFO Depth"
        options            = "[4, 8, 16, 32, 64]"
        default            = "64"
        group1             = "RD FIFO Settings"
    />

    <lsccip:setting 
	    id                 = "RD_FIFO_IMPL"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "string"
        title              = "Implementation of RD FIFO"
        options            = "['EBR', 'LUT']"
        default            = "LUT"
        group1             = "RD FIFO Settings"
    />

    <lsccip:setting 
	    id                 = "RD_FIFO_ENDIAN"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "string"
        title              = "Endian of RD FIFO"
        options            = "['Little', 'Big']"
        default            = "Little"
        group1             = "RD FIFO Settings"
    />
	
    <lsccip:setting 
	    id                 = "RD_FIFO_AF_FLAG"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "RD FIFO Almost Full Flag"
        value_range        = "(1, RD_FIFO_DEPTH-1)"
        drc                = "ext_check_flag(RD_FIFO_AF_FLAG, RD_FIFO_DEPTH)"
        default            = "59"
        group1             = "RD FIFO Settings"
    />
	
    <lsccip:setting 
        id                 = "RD_FIFO_AE_FLAG"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "RD FIFO Almost Empty Flag"
        value_range        = "(1, RD_FIFO_AF_FLAG)"
        drc                = "ext_check_flag(RD_FIFO_AE_FLAG, RD_FIFO_DEPTH)"
        default            = "4"
        group1             = "RD FIFO Settings"
    />

    <!-- WR FIFO -->
    <lsccip:setting 
        id                 = "WR_FIFO_WIDTH"
        type               = "input"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "WR FIFO Width"
        value_expr         = "32"
        editable           = "False"
        group1             = "WR FIFO Settings"
    />

    <lsccip:setting 
        id                 = "WR_FIFO_DEPTH"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "FIFO Depth"
        options            = "[4, 8, 16, 32, 64]"
        default            = "64"
        group1             = "WR FIFO Settings"
    />

    <lsccip:setting 
        id                 = "WR_FIFO_IMPL"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "string"
        title              = "Implementation of WR FIFO"
        options            = "['EBR', 'LUT']"
        default            = "LUT"
        group1             = "WR FIFO Settings"
    />

    <lsccip:setting 
	    id                 = "WR_FIFO_ENDIAN"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "string"
        title              = "Endian of WR FIFO"
        options            = "['Little', 'Big']"
        default            = "Little"
        group1             = "WR FIFO Settings"
    />

    <lsccip:setting 
        id                 = "WR_FIFO_AF_FLAG"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "WR FIFO Almost Full Flag"
        value_range        = "(1, WR_FIFO_DEPTH-1)"
        drc                = "ext_check_flag(WR_FIFO_AF_FLAG, WR_FIFO_DEPTH)"
        default            = "59"
        group1             = "WR FIFO Settings"
    />
	
    <lsccip:setting 
        id                 = "WR_FIFO_AE_FLAG"
        type               = "param"
        conn_mod           = "ufm_access"
        value_type         = "int"
        title              = "WR FIFO Almost Empty Flag"
        value_range        = "(1, WR_FIFO_AF_FLAG)"
        drc                = "ext_check_flag(WR_FIFO_AE_FLAG, WR_FIFO_DEPTH)"
        default            = "4"
        group1             = "WR FIFO Settings"
    />
	
	<!--Flash Memory CFG0/1/2 and UFM0/1/2 Configuration-->		
        <lsccip:setting
            id                 = "USE_CFG0_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use CFG0 with size (blocks)"
			editable           = "True"
			hidden             = "False"
			options            = "use_cfg_size(DEVICE)"
            drc                = "drc_check_sizes(USE_CFG0_SIZE, USE_UFM0_SIZE, USE_CFG1_SIZE, USE_UFM1_SIZE, USE_CFG2_SIZE, USE_UFM2_SIZE)"
            default            = "0"
			group1             = "CFG0 and UFM0 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />
		
        <lsccip:setting
            id                 = "CFG0_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "CFG0 Initial Value Format"
			editable           = "USE_CFG0_SIZE > 0"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_CFG0_SIZE, CFG0_INIT_VALUE_FORMAT, 'CFG0 initial value')"
			value_expr         = "'NONE' if USE_CFG0_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
			group1             = "CFG0 and UFM0 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "CFG0_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "CFG0 Initial Value File Path"
			editable           = "CFG0_INIT_VALUE_FORMAT == 'HEXFILE' or CFG0_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(CFG0_INIT_VALUE_FORMAT, CFG0_INIT_VALUE_FILE_PATH, USE_CFG0_SIZE, 1)"
			group1             = "CFG0 and UFM0 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "USE_UFM0_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use UFM0 with size (blocks)"
			editable           = "check_cfg_size(DEVICE, USE_CFG0_SIZE)"
			hidden             = "False"
			options            = "use_ufm_size(DEVICE)"
            drc                = "drc_check_sizes(USE_CFG0_SIZE, USE_UFM0_SIZE, USE_CFG1_SIZE, USE_UFM1_SIZE, USE_CFG2_SIZE, USE_UFM2_SIZE)"
			value_expr         = "def_ufm_check_cfg_size(DEVICE, USE_CFG0_SIZE)"
			group1             = "CFG0 and UFM0 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />
		
        <lsccip:setting
            id                 = "UFM0_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "UFM0 Initial Value Format"
			editable           = "USE_UFM0_SIZE > 0"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_UFM0_SIZE,UFM0_INIT_VALUE_FORMAT, 'UFM0 initial value')"
			value_expr         = "'NONE' if USE_UFM0_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
			group1             = "CFG0 and UFM0 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "UFM0_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "UFM0 Initial Value File Path"
			editable           = "UFM0_INIT_VALUE_FORMAT == 'HEXFILE' or UFM0_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(UFM0_INIT_VALUE_FORMAT, UFM0_INIT_VALUE_FILE_PATH, USE_UFM0_SIZE, 1)"
			group1             = "CFG0 and UFM0 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
        <lsccip:setting
            id                 = "USE_CFG1_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use CFG1 with size (blocks)"
			editable           = "True"
			hidden             = "False"
			options            = "use_cfg_size(DEVICE)"
            drc                = "drc_check_sizes(USE_CFG0_SIZE, USE_UFM0_SIZE, USE_CFG1_SIZE, USE_UFM1_SIZE, USE_CFG2_SIZE, USE_UFM2_SIZE)"
            default            = "0"
			group1             = "CFG1 and UFM1 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />
		
        <lsccip:setting
            id                 = "CFG1_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "CFG1 Initial Value Format"
			editable           = "USE_CFG1_SIZE > 0"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_CFG1_SIZE, CFG1_INIT_VALUE_FORMAT, 'CFG1 initial value')"
			value_expr         = "'NONE' if USE_CFG1_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
			group1             = "CFG1 and UFM1 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "CFG1_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "CFG1 Initial Value File Path"
			editable           = "CFG1_INIT_VALUE_FORMAT == 'HEXFILE' or CFG1_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(CFG1_INIT_VALUE_FORMAT, CFG1_INIT_VALUE_FILE_PATH, USE_CFG1_SIZE, 1)"
			group1             = "CFG1 and UFM1 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "USE_UFM1_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use UFM1 with size (blocks)"
			editable           = "check_cfg_size(DEVICE, USE_CFG1_SIZE)"
			hidden             = "False"
			options            = "use_ufm_size(DEVICE)"
            drc                = "drc_check_sizes(USE_CFG0_SIZE, USE_UFM0_SIZE, USE_CFG1_SIZE, USE_UFM1_SIZE, USE_CFG2_SIZE, USE_UFM2_SIZE)"
			default            = "0"
			group1             = "CFG1 and UFM1 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />
		
        <lsccip:setting
            id                 = "UFM1_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "UFM1 Initial Value Format"
			editable           = "USE_UFM1_SIZE > 0"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_UFM1_SIZE, UFM1_INIT_VALUE_FORMAT, 'UFM1 initial value')"
			value_expr         = "'NONE' if USE_UFM1_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
			group1             = "CFG1 and UFM1 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "UFM1_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "UFM1 Initial Value File Path"
			editable           = "UFM1_INIT_VALUE_FORMAT == 'HEXFILE' or UFM1_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(UFM1_INIT_VALUE_FORMAT, UFM1_INIT_VALUE_FILE_PATH, USE_UFM1_SIZE, 1)"
			group1             = "CFG1 and UFM1 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
        <lsccip:setting
            id                 = "USE_CFG2_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use CFG2 with size (blocks)"
			editable           = "True"
			hidden             = "False"
			options            = "use_cfg_size(DEVICE)"
            drc                = "drc_check_sizes(USE_CFG0_SIZE, USE_UFM0_SIZE, USE_CFG1_SIZE, USE_UFM1_SIZE, USE_CFG2_SIZE, USE_UFM2_SIZE)"
            default            = "0"
			group1             = "CFG2 and UFM2 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />
		
        <lsccip:setting
            id                 = "CFG2_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "CFG2 Initial Value Format"
			editable           = "USE_CFG2_SIZE > 0"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_CFG2_SIZE, CFG2_INIT_VALUE_FORMAT, 'CFG2 initial value')"
			value_expr         = "'NONE' if USE_CFG2_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
			group1             = "CFG2 and UFM2 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "CFG2_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "CFG2 Initial Value File Path"
			editable           = "CFG2_INIT_VALUE_FORMAT == 'HEXFILE' or CFG2_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(CFG2_INIT_VALUE_FORMAT, CFG2_INIT_VALUE_FILE_PATH, USE_CFG2_SIZE, 1)"
			group1             = "CFG2 and UFM2 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "USE_UFM2_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use UFM2 with size (blocks)"
			editable           = "check_cfg_size(DEVICE, USE_CFG2_SIZE)"
			hidden             = "False"
			options            = "use_ufm_size(DEVICE)"
            drc                = "drc_check_sizes(USE_CFG0_SIZE, USE_UFM0_SIZE, USE_CFG1_SIZE, USE_UFM1_SIZE, USE_CFG2_SIZE, USE_UFM2_SIZE)"
			default            = "0"
			group1             = "CFG2 and UFM2 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />
		
        <lsccip:setting
            id                 = "UFM2_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "UFM2 Initial Value Format"
			editable           = "USE_UFM2_SIZE > 0"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_UFM2_SIZE, UFM2_INIT_VALUE_FORMAT, 'UFM2 initial value')"
			value_expr         = "'NONE' if USE_UFM2_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
			group1             = "CFG2 and UFM2 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <lsccip:setting
            id                 = "UFM2_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "UFM2 Initial Value File Path"
			editable           = "UFM2_INIT_VALUE_FORMAT == 'HEXFILE' or UFM2_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(UFM2_INIT_VALUE_FORMAT, UFM2_INIT_VALUE_FILE_PATH, USE_UFM2_SIZE, 1)"
			group1             = "CFG2 and UFM2 Settings"
		    group2             = "CFG0/1/2 and UFM0/1/2 Settings"
        />	
		
        <!--Flash Memory USERDATA Configuration-->		

        <!--Flash Memory USERDATA0 Configuration-->	
        <lsccip:setting
            id                 = "USE_USERDATA0_USERDATA8"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "bool"
            title              = "Use USERDATA0 to USERDATA8"
            default            = "False"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USE_USERDATA0_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA0 with size (blocks)"
			editable           = "USE_USERDATA0_USERDATA8 == True"
			hidden             = "False"
			value_expr         = "0 if USE_USERDATA0_USERDATA8 == False else (2 if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D') else 13 if (DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 6)" 
            value_range        = "(0,0) if USE_USERDATA0_USERDATA8 == False else (1, max_userdata_size(DEVICE))"
		    group1             = "USERDATA0 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />		
		
        <lsccip:setting
            id                 = "USERDATA0_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA0 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA0_SIZE, USERDATA0_INIT_VALUE_FORMAT, 'USERDATA0 initial value')"
			value_expr         = "'NONE' if USE_USERDATA0_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA0 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA0_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA0 Initial Value File Path"
			editable           = "USERDATA0_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA0_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA0_INIT_VALUE_FORMAT, USERDATA0_INIT_VALUE_FILE_PATH, USE_USERDATA0_SIZE, 1)"
		    group1             = "USERDATA0 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />

        <!--Flash Memory USERDATA1 Configuration-->				
        <lsccip:setting
            id                 = "USE_USERDATA1_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA1 with size (blocks)"
            value_expr         = "0 if (USE_USERDATA0_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else (def_sum_block_eval(0, 0, 0, 0, 0, 0, 0, 0, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 4)"
            default            = "2"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else (0, ufm_size_opt(0, 0, 0, 0, 0, 0, 0, 0, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else (1,36)"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA0_SIZE > 0 and (sum_block_eval(0, 0, 0, 0, 0, 0, 0, 0, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else sum_block_eval(0, 0, 0, 0, 0, 0, 0, 0, 0))"
		    group1             = "USERDATA1 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />		
		
        <lsccip:setting
            id                 = "USERDATA1_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA1 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA1_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA1_SIZE, USERDATA1_INIT_VALUE_FORMAT, 'USERDATA1 initial value')"
			value_expr         = "'NONE' if USE_USERDATA1_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA1 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA1_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA1 Initial Value File Path"
			editable           = "USERDATA1_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA1_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA1_INIT_VALUE_FORMAT, USERDATA1_INIT_VALUE_FILE_PATH, USE_USERDATA1_SIZE, 1)"
		    group1             = "USERDATA1 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <!--Flash Memory USERDATA2 Configuration-->				
        <lsccip:setting
            id                 = "USE_USERDATA2_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA2 with size (blocks)"
            value_expr         = "0"
            default            = "2"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else 
                                
                                 (0, ufm_size_opt(0, 0, 0, 0, 0, 0, 0, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 
            
                                 (0, ufm_size_opt(0, 0, 0, 0, 0, 0, 0, 0, USE_USERDATA1_SIZE))"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA1_SIZE>0 and sum_block_eval(0, 0, 0, 0, 0, 0, 0, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else
                                  USE_USERDATA0_USERDATA8 == True and USE_USERDATA1_SIZE>0 and sum_block_eval(0, 0, 0, 0, 0, 0, 0, 0, USE_USERDATA1_SIZE)"
		    group1             = "USERDATA2 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />
		
        <lsccip:setting
            id                 = "USERDATA2_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA2 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA2_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA2_SIZE, USERDATA2_INIT_VALUE_FORMAT, 'USERDATA2 initial value')"
			value_expr         = "'NONE' if USE_USERDATA2_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA2 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA2_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA2 Initial Value File Path"
			editable           = "USERDATA2_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA2_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA2_INIT_VALUE_FORMAT, USERDATA2_INIT_VALUE_FILE_PATH, USE_USERDATA2_SIZE, 1)"
		    group1             = "USERDATA2 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <!--Flash Memory USERDATA3 Configuration-->			
        <lsccip:setting
            id                 = "USE_USERDATA3_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA3 with size (blocks)"
            value_expr         = "0"
            default            = "2"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else 
                                 
                                 (0, ufm_size_opt(0, 0, 0, 0, 0, 0, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 
            
                                 (0, ufm_size_opt(0, 0, 0, 0, 0, 0, 0, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE))"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA2_SIZE>0 and sum_block_eval(0, 0, 0, 0, 0, 0, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else
                                  USE_USERDATA0_USERDATA8 == True and USE_USERDATA2_SIZE>0 and sum_block_eval(0, 0, 0, 0, 0, 0, 0, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE)"
		    group1             = "USERDATA3 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA3_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA3 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA3_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA3_SIZE, USERDATA3_INIT_VALUE_FORMAT, 'USERDATA3 initial value')"
			value_expr         = "'NONE' if USE_USERDATA3_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA3 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA3_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA3 Initial Value File Path"
			editable           = "USERDATA3_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA3_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA3_INIT_VALUE_FORMAT, USERDATA3_INIT_VALUE_FILE_PATH, USE_USERDATA3_SIZE, 1)"
		    group1             = "USERDATA3 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <!--Flash Memory USERDATA4 Configuration-->					
        <lsccip:setting
            id                 = "USE_USERDATA4_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA4 with size (blocks)"
            value_expr         = "0"
            default            = "2"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else 
                                
                                 (0, ufm_size_opt(0, 0, 0, 0, 0, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 
            
                                 (0, ufm_size_opt(0, 0, 0, 0, 0, 0, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE))"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA3_SIZE>0 and sum_block_eval(0, 0, 0, 0, 0, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else
                                  USE_USERDATA0_USERDATA8 == True and USE_USERDATA3_SIZE>0 and sum_block_eval(0, 0, 0, 0, 0, 0, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE)"
		    group1             = "USERDATA4 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA4_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA4 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA4_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA4_SIZE, USERDATA4_INIT_VALUE_FORMAT, 'USERDATA4 initial value')"
			value_expr         = "'NONE' if USE_USERDATA4_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA4 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA4_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA4 Initial Value File Path"
			editable           = "USERDATA4_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA4_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA4_INIT_VALUE_FORMAT, USERDATA4_INIT_VALUE_FILE_PATH, USE_USERDATA4_SIZE, 1)"
		    group1             = "USERDATA4 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <!--Flash Memory USERDATA5 Configuration-->			
        <lsccip:setting
            id                 = "USE_USERDATA5_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA5 with size (blocks)"
            value_expr         = "0"
            default            = "2"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else 
                                
                                 (0, ufm_size_opt(0, 0, 0, 0, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 
            
                                 (0, ufm_size_opt(0, 0, 0, 0, 0, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE))"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA4_SIZE>0 and sum_block_eval(0, 0, 0, 0, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else
                                  USE_USERDATA0_USERDATA8 == True and USE_USERDATA4_SIZE>0 and sum_block_eval(0, 0, 0, 0, 0, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE)"
		    group1             = "USERDATA5 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />		
		
        <lsccip:setting
            id                 = "USERDATA5_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA5 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA5_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA5_SIZE, USERDATA5_INIT_VALUE_FORMAT, 'USERDATA5 initial value')"
			value_expr         = "'NONE' if USE_USERDATA5_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA5 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA5_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA5 Initial Value File Path"
			editable           = "USERDATA5_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA5_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA5_INIT_VALUE_FORMAT, USERDATA5_INIT_VALUE_FILE_PATH, USE_USERDATA5_SIZE, 1)"
		    group1             = "USERDATA5 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <!--Flash Memory USERDATA6 Configuration-->			
        <lsccip:setting
            id                 = "USE_USERDATA6_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA6 with size (blocks)"
            value_expr         = "0"
            default            = "2"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else 
                                
                                 (0, ufm_size_opt(0, 0, 0, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 
            
                                 (0, ufm_size_opt(0, 0, 0, 0, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE))"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA5_SIZE>0 and sum_block_eval(0, 0, 0, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else
                                  USE_USERDATA0_USERDATA8 == True and USE_USERDATA5_SIZE>0 and sum_block_eval(0, 0, 0, 0, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE)"
		    group1             = "USERDATA6 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA6_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA6 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA6_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA6_SIZE, USERDATA6_INIT_VALUE_FORMAT, 'USERDATA6 initial value')"
			value_expr         = "'NONE' if USE_USERDATA6_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA6 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA6_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA6 Initial Value File Path"
			editable           = "USERDATA6_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA6_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA6_INIT_VALUE_FORMAT, USERDATA6_INIT_VALUE_FILE_PATH, USE_USERDATA6_SIZE, 1)"
		    group1             = "USERDATA6 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <!--Flash Memory USERDATA7 Configuration-->			
        <lsccip:setting
            id                 = "USE_USERDATA7_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA7 with size (blocks)"
            value_expr         = "0"
            default            = "2"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else 
                                
                                 (0, ufm_size_opt(0, 0, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 
            
                                 (0, ufm_size_opt(0, 0, 0, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE))"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA6_SIZE>0 and sum_block_eval(0, 0, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else
                                  USE_USERDATA0_USERDATA8 == True and USE_USERDATA6_SIZE>0 and sum_block_eval(0, 0, 0, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE)"
		    group1             = "USERDATA7 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA7_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA7 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA7_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA7_SIZE, USERDATA7_INIT_VALUE_FORMAT, 'USERDATA7 initial value')"
			value_expr         = "'NONE' if USE_USERDATA7_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA7 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA7_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA7 Initial Value File Path"
			editable           = "USERDATA7_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA7_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA7_INIT_VALUE_FORMAT, USERDATA7_INIT_VALUE_FILE_PATH, USE_USERDATA7_SIZE, 1)"
		    group1             = "USERDATA7 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <!--Flash Memory USERDATA8 Configuration-->			
        <lsccip:setting
            id                 = "USE_USERDATA8_SIZE"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Use USERDATA8 with size (blocks)"
            value_expr         = "0"
            default            = "1"
            value_range        = "(0,0) if (USE_USERDATA0_USERDATA8 == False) else 
                                
                                 (0, ufm_size_opt(0, USE_USERDATA7_SIZE, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE)) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else 
            
                                 (0, ufm_size_opt(0, 0, USE_USERDATA7_SIZE, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE))"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA7_SIZE>0 and sum_block_eval(0, USE_USERDATA7_SIZE, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) if (DEVICE == 'LFMXO5-25' or DEVICE == 'LFMXO5-25D' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-100T') else
                                  USE_USERDATA0_USERDATA8 == True and USE_USERDATA7_SIZE>0 and sum_block_eval(0, 0, USE_USERDATA7_SIZE, USE_USERDATA6_SIZE, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE)"
		    group1             = "USERDATA8 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />				
	
        <lsccip:setting
            id                 = "USERDATA8_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "string"
            title              = "USERDATA8 Initial Value Format"
			editable           = "USE_USERDATA0_USERDATA8 == True and USE_USERDATA8_SIZE >=1"
            options            = "[('ALL 0', 'ALL0'), ('ALL 1', 'ALL1'), ('NONE', 'NONE'), ('HEXFILE', 'HEXFILE'), ('BINFILE', 'BINFILE')]"
			drc                = "dsply_info_msg(USE_USERDATA8_SIZE, USERDATA8_INIT_VALUE_FORMAT, 'USERDATA8 initial value')"
			value_expr         = "'NONE' if USE_USERDATA8_SIZE == 0 else 'ALL1'"
            default            = "ALL1"
		    group1             = "USERDATA8 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA8_INIT_VALUE_FILE_PATH"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "path"
            title              = "USERDATA8 Initial Value File Path"
			editable           = "USERDATA8_INIT_VALUE_FORMAT == 'HEXFILE' or USERDATA8_INIT_VALUE_FORMAT == 'BINFILE'"
            default            = ""
			drc                = "get_init_file_val(USERDATA8_INIT_VALUE_FORMAT, USERDATA8_INIT_VALUE_FILE_PATH, USE_USERDATA8_SIZE, 1)"
		    group1             = "USERDATA8 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />			
        <!--Internal or External Oscillator-->		
        <lsccip:setting
            id                 = "USE_INTERNAL_OSCILLATOR"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "bool"
            title              = "Instantiate Internal Oscillator"
			editable           = "True"
			hidden             = "False"
            default            = "True"
			drc                = "internal_osc_info(USE_INTERNAL_OSCILLATOR)"
			group2             = "Oscillator Setting"
        />
		<lsccip:setting
            id                 = "USE_HFCLK_FOR_LMMI_CLK"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "bool"
            title              = "Use HFCLK for LMMI CLK"
			editable           = "USE_INTERNAL_OSCILLATOR == True"
			hidden             = "False"
            default            = "False"
			drc                = "lmmi_clk_out_info(USE_HFCLK_FOR_LMMI_CLK)"
			group2             = "Oscillator Setting"
        />
		<lsccip:setting
            id                 = "INT_LMMI_CLK_FREQ"
            type               = "input"
            conn_mod           = "ufm_access"
		    value_type         = "float"
            title              = "Frequency of the internal LMMI CLK (Mhz)"
			editable           = "USE_HFCLK_FOR_LMMI_CLK == True"
            options            = "[50.0, 45.0, 40.9090, 30]"
			hidden             = "USE_HFCLK_FOR_LMMI_CLK == False"
            default            = "50"
			group2             = "Oscillator Setting"
        />
		<lsccip:setting
            id                 = "INT_LMMI_CLK_FREQ_O"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "float"
            value_expr         = "0 if (USE_HFCLK_FOR_LMMI_CLK == False) else INT_LMMI_CLK_FREQ"
			hidden             = "True"
            default            = "0"
        />
		<lsccip:setting
            id                 = "HF_CLK_DIV_DEC"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
			editable           = "True"
			value_expr         = "int(round(450/INT_LMMI_CLK_FREQ))"
			hidden             = "True"
            default            = "2"
			group2             = "Oscillator Setting"
        />
		<lsccip:setting 
			id                 = "HF_CLK_DIV"
            type               = "param"
            conn_mod           = "ufm_access"
            value_type         = "string"
            title              = "HFCLK Divider (binary)"
            value_expr         = "ext_calc_div_str(HF_CLK_DIV_DEC)"
			hidden             = "True"
            editable           = "False"
            group1             = "Oscillator Setting"
		/>

		<lsccip:setting 
		    id                 = "UFM_ACCESS_INST_NAME"
            type               = "param"
            conn_mod           = "ufm_access"
            value_type         = "string"
            title              = "Instance Name"
            value_expr         = "runtime_info.ip_inst_name"
            editable           = "False"
            hidden             = "True"
            group1             = "Instance Name"
		    group2             = "UFM0 to UFM8 Settings"
        />	
        <!--Read Access Mode-->	
        <lsccip:setting
            id                 = "ACCESS_MD"
            type               = "param"
            conn_mod           = "ufm_access"
            value_type         = "string"
            title              = "Access Mode"
            editable           = "DEVICE != 'LFMXO5-25'"
            options            = "[('STANDARD', 'STANDARD'),('QUAD', 'QUAD')]"
            default            = "STANDARD"
            hidden             = "False"
		    group2             = "Access Mode"
        />	

        <lsccip:setting
            id                 = "DATA_WD"
            type               = "param"
            conn_mod           = "ufm_access"
		    value_type         = "int"
            title              = "Data Width"
			editable           = "False"
            value_expr         = "data_width_val(ACCESS_MD)"
            default            = "1"
            hidden             = "True"
		    group2             = "Access Mode"
        />	
        <!--Read Access Mode-->	
		<lsccip:setting
            id                 = "CONFIG_LMMI_EN"
            type               = "param"
            conn_mod           = "ufm_access"
            value_type         = "bool"
            title              = "Config LMMI Interface Enable"
            editable           = "True"
            hidden             = "True"
            default            = "False"
            group2             = "Access Mode"
        />
		
  </lsccip:settings>

  <lsccip:ports>
    <!-- Systen -->
    <lsccip:port 
		name          = "clk_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "clk_i"
        stick_low     = "USE_HFCLK_FOR_LMMI_CLK == True"
    />
    <lsccip:port 
		name          = "lmmi_clk_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "lmmi_clk_i"
        stick_low     = "USE_INTERNAL_OSCILLATOR == True"
    />
    <lsccip:port 
		name          = "reset_n_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "reset_n_i"
    />
    <lsccip:port 
		name          = "lmmi_resetn_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "lmmi_resetn_i"
        stick_low     = "USE_INTERNAL_OSCILLATOR == True"
    />
    <lsccip:port 
		name          = "clk_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "clk_o"
        dangling      = "USE_HFCLK_FOR_LMMI_CLK == False"
    />

    <!-- Interrupt Port -->
    <lsccip:port 
		name          = "int_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "int_o"
        bus_interface = "INTR"
    />

    <!--AHB-Lite Interface-->
    <lsccip:port
        name          = "ahbl_hsel_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hsel_i"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
	<lsccip:port
        name          = "ahbl_hready_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hready_i"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_haddr_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_haddr_i"
        range         = "(31, 0)"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hburst_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hburst_i"
        range         = "(2, 0)"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hsize_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hsize_i"
        range         = "(2, 0)"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hmastlock_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hmastlock_i"
    	stick_low     = "True"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hprot_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hprot_i"
        range         = "(3, 0)"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_htrans_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_htrans_i"
        range         = "(1, 0)"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hwrite_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hwrite_i"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hwdata_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hwdata_i"
        range         = "(31, 0)"
        stick_low     = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hreadyout_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hreadyout_o"
		dangling      = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hrdata_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hrdata_o"
        range         = "(31, 0)"
		dangling      = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <lsccip:port
        name          = "ahbl_hresp_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "ahbl_hresp_o"
		dangling      = "INTERFACE != 'AHBL'"
    	bus_interface = "AHBL"
    />
    <!-- APB Interface -->
    <lsccip:port 
		name          = "apb_psel_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "apb_psel_i"
        stick_low     = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
    <lsccip:port 
		name          = "apb_paddr_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "apb_paddr_i"
        range         = "(31, 0)"
        stick_low     = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
    <lsccip:port 
		name          = "apb_pwdata_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "apb_pwdata_i"
        range         = "(31, 0)"
        stick_low     = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
	<lsccip:port 
		name          = "apb_pwrite_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "apb_pwrite_i"
        stick_low     = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
    <lsccip:port 
		name          = "apb_penable_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "apb_penable_i"
        stick_low     = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
    <lsccip:port 
		name          = "apb_pready_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "apb_pready_o"
        dangling      = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
    <lsccip:port 
		name          = "apb_pslverr_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "apb_pslverr_o"
        dangling      = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
    <lsccip:port 
		name          = "apb_prdata_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "apb_prdata_o"
        range         = "(31, 0)"
        dangling      = "INTERFACE != 'APB'"
        bus_interface = "APB_S0"
    />
    <lsccip:port
        name          = "config_nflash_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "config_nflash_i"
        stick_low     = "CONFIG_LMMI_EN == False"
    />
    <lsccip:port
        name          = "config_lmmi_request_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "config_lmmi_request_i"
        stick_low     = "CONFIG_LMMI_EN == False"			
    />
    <lsccip:port
        name          = "config_lmmi_wr_rdn_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "config_lmmi_wr_rdn_i"
        stick_low     = "CONFIG_LMMI_EN == False"
    />
    <lsccip:port
        name          = "config_lmmi_offset_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "config_lmmi_offset_i"
        range         = "(7, 0)"
        stick_low     = "CONFIG_LMMI_EN == False"
    />
    <lsccip:port
        name          = "config_lmmi_wdata_i"
        dir           = "in"
        conn_mod      = "ufm_access"
        conn_port     = "config_lmmi_wdata_i"
        range         = "(7, 0)"
        stick_low     = "CONFIG_LMMI_EN == False"
    />
    <lsccip:port
        name          = "config_lmmi_rdata_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "config_lmmi_rdata_o"
        range         = "(7, 0)"
        dangling      = "CONFIG_LMMI_EN == False"
    />
    <lsccip:port
        name          = "config_lmmi_rdata_valid_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "config_lmmi_rdata_valid_o"
        dangling      = "CONFIG_LMMI_EN == False"
    />
    <lsccip:port
        name          = "config_lmmi_ready_o"
        dir           = "out"
        conn_mod      = "ufm_access"
        conn_port     = "config_lmmi_ready_o"
        dangling      = "CONFIG_LMMI_EN == False"
    />
  </lsccip:ports>

	<lsccip:outFileConfigs>	
	    <lsccip:fileConfig name           ="Simulation_Do_File" 
		                   description    ="Simulation Do File" 
						   phase          ="10"
						   file_base_name ="sim" 
						   file_suffix    ="do" 
						   sub_dir        ="testbench"   
						   file_generator ="TemplateFileGenerator" 
						   template       ="testbench/sim.do"                 
		/>
    </lsccip:outFileConfigs>	

  <xi:include href="bus_interface.xml" parse="xml" />
  <xi:include href="memory_map.xml" parse="xml" /> 

    <!--Synthesis Attribute Generator--> 	
    <lsccip:componentGenerators>
        <lsccip:componentGenerator>
           <lsccip:name>gen_files</lsccip:name>
           <lsccip:generatorExe>testbench/gen_files.py</lsccip:generatorExe>
        </lsccip:componentGenerator>
     </lsccip:componentGenerators>



</lsccip:ip>
