Skip to content
Snippets Groups Projects
sequencer.c 120 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	       (long unsigned int)RW_MGR_MEM_DQ_PER_WRITE_DQS,
    	       (long unsigned int)RW_MGR_MEM_VIRTUAL_GROUPS_PER_READ_DQS,
    	       (long unsigned int)RW_MGR_MEM_VIRTUAL_GROUPS_PER_WRITE_DQS);
    	debug_cond(DLEVEL == 1, "dqs=%lu,%lu dq=%lu dm=%lu ptap_delay=%lu dtap_delay=%lu",
    	       (long unsigned int)RW_MGR_MEM_IF_READ_DQS_WIDTH,
    	       (long unsigned int)RW_MGR_MEM_IF_WRITE_DQS_WIDTH,
    	       (long unsigned int)RW_MGR_MEM_DATA_WIDTH,
    	       (long unsigned int)RW_MGR_MEM_DATA_MASK_WIDTH,
    	       (long unsigned int)IO_DELAY_PER_OPA_TAP,
    	       (long unsigned int)IO_DELAY_PER_DCHAIN_TAP);
    	debug_cond(DLEVEL == 1, "dtap_dqsen_delay=%lu, dll=%lu",
    	       (long unsigned int)IO_DELAY_PER_DQS_EN_DCHAIN_TAP,
    	       (long unsigned int)IO_DLL_CHAIN_LENGTH);
    	debug_cond(DLEVEL == 1, "max values: en_p=%lu dqdqs_p=%lu en_d=%lu dqs_in_d=%lu",
    	       (long unsigned int)IO_DQS_EN_PHASE_MAX,
    	       (long unsigned int)IO_DQDQS_OUT_PHASE_MAX,
    	       (long unsigned int)IO_DQS_EN_DELAY_MAX,
    	       (long unsigned int)IO_DQS_IN_DELAY_MAX);
    	debug_cond(DLEVEL == 1, "io_in_d=%lu io_out1_d=%lu io_out2_d=%lu",
    	       (long unsigned int)IO_IO_IN_DELAY_MAX,
    	       (long unsigned int)IO_IO_OUT1_DELAY_MAX,
    	       (long unsigned int)IO_IO_OUT2_DELAY_MAX);
    	debug_cond(DLEVEL == 1, "dqs_in_reserve=%lu dqs_out_reserve=%lu",
    	       (long unsigned int)IO_DQS_IN_RESERVE,
    	       (long unsigned int)IO_DQS_OUT_RESERVE);
    
    	hc_initialize_rom_data();
    
    	/* update info for sims */
    	reg_file_set_stage(CAL_STAGE_NIL);
    	reg_file_set_group(0);
    
    	/*
    	 * Load global needed for those actions that require
    	 * some dynamic calibration support.
    	 */
    	dyn_calib_steps = STATIC_CALIB_STEPS;
    	/*
    	 * Load global to allow dynamic selection of delay loop settings
    	 * based on calibration mode.
    	 */
    	if (!(dyn_calib_steps & CALIB_SKIP_DELAY_LOOPS))
    		skip_delay_mask = 0xff;
    	else
    		skip_delay_mask = 0x0;
    
    	pass = run_mem_calibrate();
    
    	printf("%s: Calibration complete\n", __FILE__);
    	return pass;
    }