I am using the following configuration to update SWOCTRL and OUTMASK registers using Software trigger.
What I have come to understand by reading Reference manual and application manuls is that with PWM enhanced synchronization, the registers can be updated at loading point which I expect to be End of a Time period of PWM. But what I have observed is that the registers are updated as soon as software trigger is set to HIGH.
In one applicaiton manual, i also read which confused me and hence my question, is the concept of loading point is that an at of PWM an ISR is called and we update the registers over there rather than we change the registers at an arbitrary location and they are updated at the end of PWM.
Please let me know if there is anything unclear in the question. I am attaching the following picture. The Yellow signal shows where the ISR started, the Green line goes LOW where the software trigger is set. Phase Switch is a point when Blue signal goes LOW, and the Pink signal goes HIGH. And the Red signal at the bottom shows the whole time period of the PWM signal which 50uS(20KHz) 
const ftm_user_config_t flexTimer_pwm_InitConfig_new =
{
{
true, // Software trigger state -- ENABLED
false, // Hardware trigger 1 state -- DISABLED
false, // Hardware trigger 2 state -- DISABLED
false, // Hardware trigger 3 state -- DISABLED
true, // Max loading point state -- update at counter = MOD
false, // Min loading point state -- update at counter = 0 (CNTIN)
FTM_SYSTEM_CLOCK, // Update mode for INVCTRL register
FTM_PWM_SYNC, // Update mode for SWOCTRL register -- SW sync only
FTM_PWM_SYNC, // Update mode for OUTMASK register -- SW sync only
FTM_SYSTEM_CLOCK, // Update mode for CNTIN register
true, // Automatic clear of the trigger -- auto clear after sync fires
FTM_WAIT_LOADING_POINTS, // Synchronization point -- wait for loading point
},
FTM_MODE_EDGE_ALIGNED_PWM,
FTM_CLOCK_DIVID_BY_128,
FTM_CLOCK_SOURCE_SYSTEMCLK,
FTM_BDM_MODE_00,
false,
true
};
FTM_DRV_SetSync(3, &(flexTimer_pwm_InitConfig_new.syncMethod)); // Update the FTM 3 Synchronization Configuration
// the following function updates the registers in an ISR routine
uint8_t private_hal_mc_actuate_set_pwm_mask(uint8_t ui8OutMask, uint16_t ui16SwCtrl)
{
// Apply Mask
FTM3->OUTMASK = (uint32_t)ui8OutMask;
FTM3->SWOCTRL = (uint32_t)ui16SwCtrl;
FTM3->SYNC |= FTM_SYNC_SWSYNC_MASK;
return 1;
}