<?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>flash_access</lsccip:name>
        <lsccip:display_name>Flash Access</lsccip:display_name>
        <lsccip:version>2.3.0</lsccip:version>
        <lsccip:category>Architecture_Modules</lsccip:category>
        <lsccip:min_radiant_version>2023.1</lsccip:min_radiant_version>
		<lsccip:supported_products>
		   <lsccip:supported_family name="LFMXO5">
		      <lsccip:supported_device name="LFMXO5-25"></lsccip:supported_device>
		      <lsccip:supported_device name="LFMXO5-25P"></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-100TP"></lsccip:supported_device>
		      <lsccip:supported_device name="LFMXO5-55TP"></lsccip:supported_device>
		      <lsccip:supported_device name="LFMXO5-35"></lsccip:supported_device>
		      <lsccip:supported_device name="LFMXO5-65"></lsccip:supported_device>
		      <lsccip:supported_device name="LFMXO5-35T"></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_platforms>
    </lsccip:general>
             
	<lsccip:settings>
        <lsccip:setting 
		    id 		           = "DEVICE"
	    	type 	           = "param"
	    	conn_mod 	       = "flash_access"
	    	value_type	       = "string"
	    	title 	           = "Dev"
	    	value_expr         = "runtime_info.device_info.device(1)"
	    	editable           = "False"
	    	hidden	           = "True"
	    	group1             = "General"	
        />

        <lsccip:setting 
		    id 		           = "FAMILY"
	    	type 	           = "param"
	    	conn_mod 	       = "flash_access"
	    	value_type	       = "string"
	    	title 	           = "Family"
	    	value_expr         = "runtime_info.device_info.architecture(1)"
	    	editable           = "False"
	    	hidden	           = "True"
	    	group1             = "General"	
        />
		
        <!--Flash Memory CFG0/1/2 and UFM0/1/2 Configuration-->		
        <lsccip:setting
            id                 = "USE_CFG0_SIZE"
            type               = "param"
            conn_mod           = "flash_access"
		    value_type         = "int"
            title              = "Use CFG0 with size (blocks)"
			editable           = "True"
			hidden             = "False"
			options            = "use_cfg_size(DEVICE)"
            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           = "flash_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           = "flash_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           = "flash_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)"
			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           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use CFG1 with size (blocks)"
			editable           = "True"
			hidden             = "False"
			options            = "use_cfg_size(DEVICE)"
            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           = "flash_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           = "flash_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           = "flash_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)"
			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           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use CFG2 with size (blocks)"
			editable           = "(FAMILY != 'LAV-AT')"
			hidden             = "False"
			options            = "use_cfg_size(DEVICE)"
            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           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use UFM2 with size (blocks)"
			editable           = "check_cfg_size(DEVICE, USE_CFG2_SIZE) and (FAMILY != 'LAV-AT')"
			hidden             = "False"
			options            = "use_ufm_size(DEVICE)"
			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           = "flash_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           = "flash_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           = "flash_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           = "flash_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' or DEVICE == 'LFMXO5-25P') else( 6 if (DEVICE == 'LFMXO5-35' or DEVICE == 'LFMXO5-65' or DEVICE == 'LFMXO5-35T' or DEVICE == 'LFMXO5-65T' or DEVICE == 'LFD2NX-35' or DEVICE == 'LFD2NX-65') else 13))" 
            value_range        = "(0,0) if USE_USERDATA0_USERDATA8 == False else (1, max_userdata_size0(DEVICE))"
		    group1             = "USERDATA0 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />		
		
        <lsccip:setting
            id                 = "USERDATA0_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_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))"
            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-25P' or DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-55TP' or DEVICE == 'LFMXO5-100T' or DEVICE == 'LFMXO5-100TP') else (1,36)"
			editable           = "USE_USERDATA0_USERDATA8 == True and sum_block_eval(0, 0, 0, 0, 0, 0, 0, 0, USE_USERDATA0_SIZE) and USE_USERDATA0_SIZE>0"
		    group1             = "USERDATA1 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />		
		
        <lsccip:setting
            id                 = "USERDATA1_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use USERDATA2 with size (blocks)"
			value_expr         = "0 if (USE_USERDATA1_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else
			                     (def_sum_block_eval(0, 0, 0, 0, 0, 0, 0, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE))"
            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))"
			editable           = "USE_USERDATA0_USERDATA8 == True and sum_block_eval(0, 0, 0, 0, 0, 0, 0, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) and USE_USERDATA1_SIZE>0"
		    group1             = "USERDATA2 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />
		
        <lsccip:setting
            id                 = "USERDATA2_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use USERDATA3 with size (blocks)"
			value_expr         = "0 if (USE_USERDATA2_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else
			                     (def_sum_block_eval(0, 0, 0, 0, 0, 0, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE))"
            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))"
			editable           = "USE_USERDATA0_USERDATA8 == True and sum_block_eval(0, 0, 0, 0, 0, 0, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) and USE_USERDATA2_SIZE>0"
		    group1             = "USERDATA3 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA3_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use USERDATA4 with size (blocks)"
			value_expr         = "0 if (USE_USERDATA3_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else
			                     (def_sum_block_eval(0, 0, 0, 0, 0, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE))"
            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))"
			editable           = "USE_USERDATA0_USERDATA8 == True and sum_block_eval(0, 0, 0, 0, 0, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) and USE_USERDATA3_SIZE>0"
		    group1             = "USERDATA4 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA4_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use USERDATA5 with size (blocks)"
			value_expr         = "0 if (USE_USERDATA4_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else
			                      (def_sum_block_eval(0, 0, 0, 0, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE))"
            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))"
			editable           = "USE_USERDATA0_USERDATA8 == True and sum_block_eval(0, 0, 0, 0, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE) and USE_USERDATA4_SIZE>0"
		    group1             = "USERDATA5 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />		
		
        <lsccip:setting
            id                 = "USERDATA5_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use USERDATA6 with size (blocks)"
			value_expr         = "0 if (USE_USERDATA5_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else 
			                      (def_sum_block_eval(0, 0, 0, USE_USERDATA5_SIZE, USE_USERDATA4_SIZE, USE_USERDATA3_SIZE, USE_USERDATA2_SIZE, USE_USERDATA1_SIZE, USE_USERDATA0_SIZE))"
            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))"
			editable           = "USE_USERDATA0_USERDATA8 == True 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) and USE_USERDATA5_SIZE>0"
		    group1             = "USERDATA6 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA6_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use USERDATA7 with size (blocks)"
			value_expr         = "0 if (USE_USERDATA6_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else 
			                      (def_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))"
            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))"
			editable           = "USE_USERDATA0_USERDATA8 == True 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) and USE_USERDATA6_SIZE>0"
		    group1             = "USERDATA7 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />	
		
        <lsccip:setting
            id                 = "USERDATA7_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "int"
            title              = "Use USERDATA8 with size (blocks)"
			value_expr         = "0 if (USE_USERDATA7_SIZE == 0 or USE_USERDATA0_USERDATA8 == False) else
								  (def_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 (FAMILY != 'LAV-AT') else 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))"
			editable           = "USE_USERDATA0_USERDATA8 == True 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) and USE_USERDATA7_SIZE>0 and (FAMILY != 'LAV-AT')"
		    group1             = "USERDATA8 Settings"
		    group2             = "USERDATA0 to USERDATA8 Settings"
        />				
		
        <lsccip:setting
            id                 = "USERDATA8_INIT_VALUE_FORMAT"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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           = "flash_access"
		    value_type         = "bool"
            title              = "Instantiate Internal Oscillator"
			editable           = "True"
			hidden             = "False"
            default            = "True"
            value_expr         = "True"
			drc                = "internal_osc_info(USE_INTERNAL_OSCILLATOR)"
			group2             = "Oscillator Setting"
        />
		<lsccip:setting
            id                 = "USE_HFCLK_FOR_LMMI_CLK"
            type               = "param"
            conn_mod           = "flash_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               = "param"
            conn_mod           = "flash_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                 = "HF_CLK_DIV_DEC"
            type               = "param"
            conn_mod           = "flash_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           = "flash_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"
		/>

        <!--Read Access Mode-->	
		<lsccip:setting
            id                 = "CONFIG_LMMI_EN"
            type               = "param"
            conn_mod           = "flash_access"
            value_type         = "bool"
            title              = "Config LMMI Interface Enable"
            editable           = "True"
            hidden             = "False"
            default            = "False"
            group2             = "Access Mode"
        />	

        <lsccip:setting
            id                 = "ACCESS_MD"
            type               = "param"
            conn_mod           = "flash_access"
            value_type         = "string"
            title              = "Access Mode"
            editable           = "True"
            options            = "access_mode_opt()"
            value_expr         = "access_mode_default()"
            default            = "STANDARD"
            hidden             = "(DEVICE == 'LFMXO5-25') or (DEVICE == 'LFMXO5-25P')"
		    group2             = "Access Mode"
        />	

        <lsccip:setting
            id                 = "DATA_WD"
            type               = "param"
            conn_mod           = "flash_access"
		    value_type         = "int"
            title              = "Data Width"
			editable           = "False"
            value_expr         = "data_width_val(ACCESS_MD)"
            default            = "1"
            hidden             = "True"
		    group2             = "Access Mode"
        />	

        <lsccip:setting
            id                 = "DAT_WD"
            type               = "input"
            conn_mod           = "flash_access"
		    value_type         = "int"
			editable           = "False"
            value_expr         = "DATA_WD"
            default            = "1"
            hidden             = "True"
        />	

		<lsccip:setting 
            id                 = "LMMI_W"
            type               = "param"
            conn_mod           = "flash_access"
            value_type         = "int"
            title              = "LMMI width"
            editable           = "False"
            options            = "[8,16]"
            value_expr         = "8"
            default            = "8"
            hidden             = "True"
		    group2             = "Access Mode"
		/>

		<lsccip:setting 
            id                 = "LMMI_W_C"
            type               = "param"
            conn_mod           = "flash_access"
            value_type         = "int"
            title              = "Config LMMI width"
            editable           = "False"
            options            = "[8,16]"
            value_expr         = "8"
            default            = "8"
            hidden             = "True"
		    group2             = "Access Mode"
		/>

        <!--Flash Access Instance Name-->	
        <lsccip:setting 
		    id                 = "FLASH_ACCESS_INST_NAME"
            type               = "param"
            conn_mod           = "flash_access"
            value_type         = "string"
            title              = "Instance Name"
            value_expr         = "runtime_info.ip_inst_name"
            editable           = "False"
            hidden             = "True"
            group1             = "Intansce Name"
		    group2             = "UFM0 to UFM8 Settings"
        />		       
		
		<lsccip:setting 
		    id                 = "tb_MEM_TXT_FULL_PATH"
            type               = "param"
            conn_mod           = "flash_access"
            value_type         = "string"
            title              = "tb_MEM.TXT Full Path"
            default            = "None"
			hidden             = "True"
			editable           = "True"
			value_expr         = "get_tb_MEMTXT_path()"
            group1             = "Memory Initial Value File Path"
        />    	
    </lsccip:settings>

    <lsccip:ports>
        <lsccip:port
            name                 = "lmmi_clk_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_clk_i"
            stick_low            = "USE_HFCLK_FOR_LMMI_CLK == True"
        />
		<lsccip:port
            name                 = "lmmi_clk_o"
            dir                  = "out"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_clk_o"
            dangling             = "USE_HFCLK_FOR_LMMI_CLK == False"
        />
		<lsccip:port
            name                 = "lmmi_resetn_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_resetn_i"
        />
        <lsccip:port
            name                 = "lmmi_request_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_request_i"
        />
		<lsccip:port
            name                 = "lmmi_wr_rdn_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_wr_rdn_i"
        />
        <lsccip:port
            name                 = "lmmi_offset_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_offset_i"
            range                = "(7, 0)"
        />
        <lsccip:port
            name                 = "lmmi_wdata_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_wdata_i"
            range                = "(DAT_WD-1, 0)"
        />
        <lsccip:port
            name                 = "lmmi_rdata_o"
            dir                  = "out"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_rdata_o"
            range                = "(DAT_WD-1, 0)"
        />
		<lsccip:port
            name                 = "lmmi_rdata_valid_o"
            dir                  = "out"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_rdata_valid_o"
        />
		<lsccip:port
            name                 = "lmmi_ready_o"
            dir                  = "out"
            conn_mod             = "flash_access"
            conn_port            = "lmmi_ready_o"
        />
        <lsccip:port
            name                 = "clk_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "clk_i"
            stick_low            = "USE_INTERNAL_OSCILLATOR == True"
        />
        <lsccip:port
            name                 = "rstn_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "rstn_i"
            stick_low            = "USE_INTERNAL_OSCILLATOR == True"
        />
        <lsccip:port
            name                 = "config_nflash_i"
            dir                  = "in"
            conn_mod             = "flash_access"
            conn_port            = "config_nflash_i"
            stick_low            = "CONFIG_LMMI_EN == False"
        />
        <lsccip:port
            name                 = "config_lmmi_request_i"
            dir                  = "in"
            conn_mod             = "flash_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             = "flash_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             = "flash_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             = "flash_access"
            conn_port            = "config_lmmi_wdata_i"
            range                = "(LMMI_W_C-1, 0)"
            stick_low            = "CONFIG_LMMI_EN == False"
        />
        <lsccip:port
            name                 = "config_lmmi_rdata_o"
            dir                  = "out"
            conn_mod             = "flash_access"
            conn_port            = "config_lmmi_rdata_o"
            range                = "(LMMI_W_C-1, 0)"
            dangling             = "CONFIG_LMMI_EN == False"
        />
		<lsccip:port
            name                 = "config_lmmi_rdata_valid_o"
            dir                  = "out"
            conn_mod             = "flash_access"
            conn_port            = "config_lmmi_rdata_valid_o"
            dangling             = "CONFIG_LMMI_EN == False"
        />
		<lsccip:port
            name                 = "config_lmmi_ready_o"
            dir                  = "out"
            conn_mod             = "flash_access"
            conn_port            = "config_lmmi_ready_o"
            dangling             = "CONFIG_LMMI_EN == False"
        />
    </lsccip:ports>
	
    <!--TCL code for Simulation Generator--> 	
    <lsccip:outFileConfigs>	
        <lsccip:fileConfig name           = "Simulation_Do_File"
                           description    = "Simulation Do File"
                           phase          = "10"
                           file_base_name = "sim"
                           file_suffix    = "do"
                           enable_output  = "True"
                           sub_dir        = "testbench"
                           file_generator = "TemplateFileGenerator"
                           template       = "testbench/sim.do"
                           var_lib_path   = "lfmxo5"
        />
        <lsccip:fileConfig name           = "Simulation_Do_File_LFMXO5T"
                           description    = "Simulation Do File (LFMXO5-55T/55TD/100T)"
                           phase          = "11"
                           file_base_name = "sim"
                           file_suffix    = "do"
                           enable_output  = "(DEVICE == 'LFMXO5-55T' or DEVICE == 'LFMXO5-55TP' or DEVICE == 'LFMXO5-100T' or DEVICE == 'LFMXO5-100TP')"
                           sub_dir        = "testbench"
                           file_generator = "TemplateFileGenerator"
                           template       = "testbench/sim.do"
                           var_lib_path   = "lfmxo5t"
        />
        <lsccip:fileConfig name           = "Simulation_Do_File_J10_LFMXO5"
                           description    = "Simulation Do File (J10) LFMXO5"
                           phase          = "12"
                           file_base_name = "sim"
                           file_suffix    = "do"
                           enable_output  = "(DEVICE == 'LFMXO5-35' or DEVICE == 'LFMXO5-65' or DEVICE == 'LFMXO5-35T' or DEVICE == 'LFMXO5-65T')"
                           sub_dir        = "testbench"
                           file_generator = "TemplateFileGenerator"
                           template       = "testbench/sim.do"
                           var_lib_path   = "lfmxo5t1"
        />
        <lsccip:fileConfig name           = "Simulation_Do_File_J10_LFD2NX"
                           description    = "Simulation Do File (J10) LFD2NX"
                           phase          = "13"
                           file_base_name = "sim"
                           file_suffix    = "do"
                           enable_output  = "(DEVICE == 'LFD2NX-35' or DEVICE == 'LFD2NX-65')"
                           sub_dir        = "testbench"
                           file_generator = "TemplateFileGenerator"
                           template       = "testbench/sim.do"
                           var_lib_path   = "lfd2nx1"
        />
    </lsccip:outFileConfigs>	
	
    <!--Synthesis Attribute Generator--> 	
    <lsccip:componentGenerators>
        <lsccip:componentGenerator>
           <lsccip:name>gen_files</lsccip:name>
           <lsccip:generatorExe>testbench/gen_files.py</lsccip:generatorExe>
        </lsccip:componentGenerator>
        <lsccip:componentGenerator>
           <lsccip:name>gen_tb_mem_files</lsccip:name>
           <lsccip:generatorExe>testbench/mem_gen.py</lsccip:generatorExe>
        </lsccip:componentGenerator>
    </lsccip:componentGenerators>

</lsccip:ip>

