By using the Simscape HDL Workflow Advisor, you can generate an HDL implementation model.
You can generate HDL code for the implementation model and deploy the generated code onto FPGA
platforms. To open the Advisor, run the sschdladvisor
function. For example:
sschdladvisor('sschdlexHalfWaveRectifierExample')
The Simscape HDL Workflow Advisor consists of various tasks that convert your Simscape™ model to the HDL implementation model. When running various tasks in the Simscape HDL Workflow Advisor, you can follow certain tips and guidelines. You see these tips in the UI window of a particular task. For example, in the task that discretizes the equations to state-space parameters, the UI has a tip that suggests how to change the sample time. This section contains more information about each tip in the Simscape HDL Workflow Advisor UI.
After you run the Check Switched Linear task, the task reports the
number of differential and algebraic variables for each Simscape network present in the model. For example, this figure illustrates that there
are two differential and two algebraic variables in the boost converter example model
sschdlexBoostConverterExample
.
sschdladvisor('sschdlexHalfWaveRectifierExample')
Run the workflow to the Check Switched Linear task.
By viewing the number of algebraic and differential variables, you can determine how the
design consumes resources on the FPGA device. If Nd
is the number of
differential variables and Na
is the number of algebraic variables, the
resource usage on the target hardware varies according to the relation
Nd*(Nd+Na)
. Differential variables consume a quadratic amount of
multiplier resources on the target FPGA device. Algebraic variables consume a linear amount
of multiplier resources. You can use this information to determine how many multiplier
resources your Simscape design consumes on the FPGA device and whether your design is ready for
conversion to state-space representation.
When you run the Extract Equations task, the Simscape HDL Workflow Advisor reports the simulation stop time. The simulation stop time corresponds to the amount of time that the Advisor takes to run simulation on your Simscape model. The stop time must not be significantly large such that the Advisor takes a long time to run this task. Use a stop time that is sufficient to reach the required number of modes for your model. To change the stop time, navigate to the Simscape model, and then specify the Stop Time.
In the Extract Equations task, when you extract the differential algebraic equations, the Simscape HDL Workflow Advisor simulates the model to cover the nonlinear range of Simscape blocks. This task can take a long time depending on the number of switching elements in the Simscape model.
For a switched linear model, each switching element in the design has two modes. A
switched linear model with n
switching elements has
2^n
possible modes. For Simscape models with large number of switching elements, the number of modes can
become significantly large. For example, the Vienna rectifier has 21
switching elements, which translates to 2^21
possible modes. The
Simscape HDL Workflow Advisor can take a long time to simulate such a large model and
cover such a large number of modes. In addition, the HDL implementation model that you
generate for such a design can consume a large amount of resources or may not even fit on
the target FPGA device.
In most cases, while simulating the model, the Advisor does not have to reach the
entire 2^n
modes. For example, consider this bridge rectifier model. To
open this model,
enter:
open_system('sschdlexBridgeRectifierExample')
Inside the Simscape_system
Subsystem, you see the four diodes arranged in a bridge
configuration.
As each diode has two states, the Simscape design can have 2^4 = 16
possible states. In contrast,
the bridge rectifier has only three modes. The modes are:
Diodes D1
and D2
are
ON
, D3
and D4
are
OFF
Diodes D1
and D2
are
OFF
, D3
and D4
are
ON
Diodes D1
, D2
, D3
, and
D4
are OFF
This example shows that, based on the Simscape algorithm and the input to the design, you can set the simulation stop time to a minimum value that covers the number of modes to be reached.
When you run the Discretize Equations task, the Simscape HDL Workflow Advisor reports the discrete sample time. The discrete sample time corresponds to the sample time that the Advisor uses to discretize the differential algebraic equations to state-space parameters. To change the sample time, in your Simscape model, open the Block Parameters dialog box for the Solver Configuration block, and then specify the Sample time.
In the Discretize Equations task, the Simscape HDL Workflow Advisor discretizes the differential algebraic equations into state-space parameters. You extract the differential algebraic equations by simulating the Simscape model in the previous task, Extract Equations. The Discretize Equations task runs much faster than the Extract Equations task because the Advisor only has to discretize the differential algebraic equations to state-space parameters.
The Discretize Equations task obtains the sample time information from the sample time that you specify for the Solver Configuration (Simscape) block in your model. The Advisor then discretizes the equations to state-space parameters based on this sample time information.
In the Generate implementation model task, you can specify the Number of solver iterations. The number of solver iterations refer to the number of times the state-space model is executed per mode. The Simscape HDL Workflow Advisor generates the number of iterations that are required for executing the state-space model, automatically.
For each mode in the physical system, the switched linear workflow arrives at a state-space representation. The solver method is iterative and performs multiple computations to determine the correct mode for the next time step. After a certain number of iterations, the output value from the next time step becomes the same as the value from the previous time step. This consistency in the output value indicates the correct number of solver iterations.
By default, the Number of Solver iterations is
1
for linear models. For switched linear models, the Number
of solver iterations depends on the number of mode iterations that
Simscape uses during model simulation. This chosen value is optimal such that it
causes the model to converge and avoids exceeding the threshold value for real-time
deployment.
On the Solver Configuration block, the Use fixed-cost runtime consistency iterations check box is cleared by default. If you select this check box, the Nonlinear iterations setting on the Solver Configuration block becomes the same as the Number of solver iterations setting in the Generate implementation model task.
By default, Nonlinear iterations is set to 2
.
When you run the Generate implementation model task, the Advisor sets
the Number of solver iterations to 2
and this
setting cannot be modified. To modify the Number of solver
iterations, either:
Change Nonlinear iterations.
Clear Use fixed-cost runtime consistency iterations and then change the Number of solver iterations.
To learn more about the Use fixed-cost runtime consistency iterations setting, see Solver Configuration (Simscape). See also Solvers for Real-Time Simulation (Simscape).
By default, you can change the number of solver iterations on this task. Increasing the number of solver iterations improves the numerical accuracy of generated HDL implementation model. To achieve higher sampling frequencies, reduce the number of solver iterations. Choose a value for number of solver iterations that trades off numerical accuracy and sampling frequency.
On the Solver Configuration block, if you specify the Use fixed-cost runtime consistency iterations setting, you cannot change the Number of solver iterations setting on this task. To change the number of solver iterations, on the Solver Configuration block, change the Nonlinear iterations parameter and rerun the Generate implementation model task.
To verify whether the numeric results of the HDL implementation model matches the original Simscape model, select Generate validation logic for the implementation model. If the numeric results from the HDL implementation model do not match, you can increase the number of solver iterations. To learn more, see Increase Number of Solver Iterations.
Changing the number of solver iterations trades off numerical accuracy for sampling frequency. Increasing the number of solver iterations increases the sample time of the HDL implementation model which can reduce the sampling frequency. See Reducing Number of Solver Iterations.
Use the Floating-point precision setting to specify whether you
want the algorithm inside the HDL Subsystem
in the generated
implementation model to use single
or double
data
types when performing the matrix computations.
Floating-Point Precision | Description |
---|---|
Double | Using double floating-point precision increases the
numerical accuracy of the generated model and the maximum achievable target
frequency. However, the area consumption and pipeline latency are also
increased. |
Single | This is the default setting for floating-point precision. |
Single coefficient, double computation | This mode offers a tradeoff between Single and
Double modes of floating-point precision. To save memory usage,
the coefficients that are stored in single . The matrix
computations are then performed in double for improved
accuracy. |
To learn more about the floating-point precision settings and tradeoffs, see Use Larger Floating-Point Precision.