Main Content

Improve Simulation Speed of Power Electronics Systems with Reduced Order Modeling

Since R2024b

This example shows how to enhance the model simulation speed of an electro-thermal DC-DC step-down converter by converting a high-fidelity switch to a reduced order model (ROM) switch. This conversion enables faster design iterations and analysis.

Modeling high-fidelity semiconductor switches is useful when you want to study their switching behavior for designing gate drivers, selecting an appropriate deadtime, or designing a converter which utilizes different on-state operating points. If you do not require this detailed analysis, it is beneficial to convert the high-fidelity switch to a ROM by using the generateSemiconductorSwitchROM function.

Configure Buck Converter

This example converts an Infineon® IMW120R045M1 1200V SiC MOSFET into a ROM switch subsystem. This figure shows the original buck converter model using high-fidelity Infineon switches.

To modify the parameters of the NChannelMOSFETBuckConverter model, use the SetUpConverterParameters script.

SetUpConverterParameters;
The converter steps down a DC input voltage of 1000 V to an unregulated output voltage of 800 V. 
The converter operates at a switching frequency of 50000 Hz, incorporating Infineon IMW120R045M1 1200V SiC MOSFET. 
Output voltage ripple is less than 2%.
Required duty ratio: 0.812711
Estimated series inductance: 2.844487 mH
Selected Capacitance: 0.220000 µF

Generate ROM Switch from Detailed Switch

The generateSemiconductorSwitchROM function converts a high-fidelity semiconductor switch subsystem into a MOSFET (Ideal, Switching) or IGBT (Ideal, Switching) block, which represents a ROM. The ROM maintains the sufficient fidelity level of its original counterpart and improves the simulation speed by allowing the simulation to run at much larger time step. Despite the absence of the detailed switching transitions, you can still compute the switching loss by using the ee_getPowerLossSummary function.

Configure Input Arguments

Specify the input parameters for the generateSemiconductorSwitchROM function.

To view or edit the test harness, specify the test harness folder.

ROMInputs.testHarnessFolder = [pwd filesep 'switchTestHarness'];

Set the maximum switching frequency of the converter. This argument filters the current and voltage for the reverse recovery loss of the body diode.

ROMInputs.maxSwitchingFrequency = converterParams.SwitchFrequency; % Hz

Set the on-stage voltage of the gate driver.

ROMInputs.onStateGateSourceVoltage = 15; % Volts

Set the gate driver resistance during the turn on and turn off of the switch.

ROMInputs.onStateGateResistance = 2; % Ohms
ROMInputs.offStateGateResistance = 2; % Ohms
set_param([OriginalModel '/Gate Driver/Gate Driver'],"rHigh", string(ROMInputs.onStateGateResistance))
set_param([OriginalModel '/Gate Driver/Gate Driver'],"rLow", string(ROMInputs.offStateGateResistance))

Set the current breakpoints for the I-V curve of the switch.

ROMInputs.currentRangeIV = 0:0.1:30;

Set the voltage and current breakpoints for loss extraction.

ROMInputs.offStateSwitchVoltages = [0,200,800,1000];
ROMInputs.currentRangeLoss = [0,1,6,30];

Set the temperature breakpoints.

ROMInputs.temperatures = [25,100,175];

Set the initial device temperature and the Foster model parameters of the switch. You can find these parameters in the datasheet or in the SPICE subcircuits.

Tdevice = 27;
thermalParams.fosterCoeff.thermalResistance = [0.278,0.201,0.158,0.0234];
thermalParams.fosterCoeff.thermalTimeConstant = [1.78e-2,2.98e-3,5.23e-4,1.52e-5];

Disable Thermal Network

For an accurate extraction of the I-V characteristic, set the Thermal network parameter of the blocks inside the switch subsystem to External if possible. This adjustment ensures the maintenance of a constant junction temperature by facilitating the connection of a fixed temperature source to the junction. If you do not disable the thermal network, the ROM tool can still obtain accurate characteristics by capturing steady-state simulation results.

NChannelMOSFET = [OriginalModel,'/MOSFET/IMBG120R045M1'];
set_param(NChannelMOSFET,"thermal_network_parameterization","ee.enum.thermalNetworkTopology.external")
save_system(OriginalModel);

Run generateSemiconductorSwitchROM Function

The model workspace of the ROMBuckConverter model contains the pre-generated ROM parameters. To generate the ROM parameters again, set the runROMTool variable to true and run the ExtractROMParameters script.

runROMTool = false;
displayROMOutput = false;
if runROMTool
    ExtractROMParameters; %#ok
end

Enable Thermal Network in Original Model

Once you extract the ROM parameters, enable the thermal network in the original model.

set_param(NChannelMOSFET,"thermal_network_parameterization","ee.enum.thermalNetworkTopology.foster");
set_param(NChannelMOSFET,"Rth_Foster",mat2str(thermalParams.fosterCoeff.thermalResistance));
set_param(NChannelMOSFET,"thermal_time_constant_Foster",mat2str(thermalParams.fosterCoeff.thermalTimeConstant));
set_param(NChannelMOSFET,"Tvec_initial_Foster",mat2str(Tdevice.*ones(1,4)));
save_system(OriginalModel);

Update ROMBuckConverter Model with ROM Parameters

Store the extracted ROM switch parameters in its model workspace.

if runROMTool
    mdlWks = get_param(ROModel,'ModelWorkspace'); %#ok
    assignin(mdlWks,'SwitchParams',ROM.SwitchParams);
    assignin(mdlWks,'DiodeParams',ROM.DiodeParams); 
    save_system(ROModel); 
end

Enable Thermal Network in ROMBuckConverter Model

Parameterize the Foster model in the ROM Buck converter.

ROMMOSFET = [ROModel '/MOSFET/MOSFETROM'];
set_param(ROMMOSFET,"thermal_network_parameterization","ee.enum.thermalNetworkTopology.foster");
set_param(ROMMOSFET,"Rth_Foster",mat2str(thermalParams.fosterCoeff.thermalResistance));
set_param(ROMMOSFET,"thermal_time_constant_Foster",mat2str(thermalParams.fosterCoeff.thermalTimeConstant));
set_param(ROMMOSFET,"Tvec_initial_Foster",mat2str(Tdevice.*ones(1,4)));
save_system(ROModel);

Validate ROMBuckConverter Model

Compare the simulation time of the ROM with the original model. The simulation speed of the ROM is faster than the speed of the original model.

[OriginalBuckOutput,ROMBuckOutput] = compareSimulationTime(OriginalModel,ROModel);
                          Original Model     ROM  
                          ______________    ______

    Elapsed Time (sec)        30.858        12.032

Plot and compare the output voltage and inductor current waveforms of the ROM against the original model.

plotOutputWaveforms(OriginalBuckOutput.simlogNChannelMOSFETBuckConverter,ROMBuckOutput.simlogROMMOSFETBuckConverter,converterParams.OutputVoltage,converterParams.LoadResistance)

Figure contains 2 axes objects. Axes object 1 with title Output Voltage Waveform, xlabel Time (sec), ylabel Voltage (V) contains 2 objects of type line. These objects represent Original model, ROM. Axes object 2 with title Inductor Current Waveform, xlabel Time (sec), ylabel Current (A) contains 2 objects of type line. These objects represent Original, ROM.

Plot and compare the output voltage harmonics of the original model and the ROM.

compareOutputVoltageHarmonics(OriginalBuckOutput.simlogNChannelMOSFETBuckConverter.R.v,ROMBuckOutput.simlogROMMOSFETBuckConverter.R.v,converterParams.SwitchFrequency);

Figure contains an axes object. The axes object with title Output Voltage Double-Sided Frequency Spectrum, xlabel Frequency (kHz), ylabel Power (dB) contains 2 objects of type line. These objects represent Original, ROM.

Plot and compare the junction temperature rise of the original model and the ROM.

compareJunctionTempRise(OriginalBuckOutput.simlogNChannelMOSFETBuckConverter,ROMBuckOutput.simlogROMMOSFETBuckConverter);

Figure contains an axes object. The axes object with title Junction Temperature, xlabel Time (s), ylabel Temperature (degC) contains 2 objects of type line. These objects represent Original MOSFET, ROM MOSFET.

Plot and compare the efficiency of the original model and the ROM.

compareEfficiency(OriginalBuckOutput.simlogNChannelMOSFETBuckConverter,ROMBuckOutput.simlogROMMOSFETBuckConverter);
                      Original Model     ROM  
                      ______________    ______

    Total Loss (W)        159.65        162.79
    Efficiency (%)        98.265        98.228

See Also

| |