Main Content

Modeling Guidelines for Simscape Subsystem Replacement

To generate HDL code for Simscape™ algorithms, you generate an HDL implementation model by using the Simscape HDL Workflow Advisor. If you follow certain guidelines when modeling the Simscape algorithm, the Simscape HDL Workflow Advisor replaces the Simscape subsystem with a corresponding HDL Subsystem block in the HDL implementation model. The HDL Subsystem block contains the state-space algorithm that uses HDL-compatible Simulink® blocks instead of Simscape blocks. You can generate HDL code for the HDL Subsystem block and deploy the code onto FPGA target devices and FPGAs on board Speedgoat® FPGA I/O modules. In this case, when you select the Generate validation logic for the implementation model check box in the Generate implementation model task of the Simscape HDL Workflow Advisor, the Advisor generates a separate state-space validation model. This model compares the outputs from the HDL Subsystem and the original Simscape subsystem to verify that they are functionally equivalent.

If you do not follow the guidelines, the Simscape HDL Workflow Advisor might not be able to perform this replacement. In that case, the HDL implementation model contains the state-space algorithm with the original Simscape subsystem beside it. Before generating code, you modify the implementation model and rearrange the blocks such that it replaces the Simscape subsystem with the state-space algorithm. In this case, when you select the Generate validation logic for the implementation model check box, the Advisor places a validation logic subsystem inside the implementation model to verify functional equivalence.

In addition to these guidelines, make sure that the Simscape model is configured for compatibility with Simscape HDL Workflow Advisor. See Modeling Physical Systems in Simscape for HDL Compatibility.

Enclose Simscape Blocks Inside a Subsystem

  • Enclose the Simscape blocks for which you are generating an HDL implementation model inside a Subsystem block and provide the test inputs. Inside the Subsystem block, your model can have multiple hierarchies that use Simscape blocks.

  • Do not use masked subsystems. The Simscape HDL Workflow Advisor cannot replace masked subsystems in the HDL implementation model. For automatic subsystem replacement, you can use masked subsystems that have cosmetic masks. Cosmetic masks are masks that only have an icon but don't have any parameters or initialization code.

  • Inside the Subsystem block that contains Simscape blocks, at the input ports, add Simulink-PS Converter (Simscape) blocks. At the output ports of this subsystem, add PS-Simulink Converter (Simscape) blocks.

    • Use a meaningful name for the Simulink-PS Converter and PS-Simulink Converter blocks.

      The Simscape HDL Workflow Advisor uses the names of the Simulink-PS Converter and PS-Simulink Converter blocks for the input and output ports of the HDL Subsystem block. Using a meaningful name makes it easier to identify what the input and output ports in the HDL implementation model correspond to.

    • In the Block Parameters dialog box of the Simulink-PS Converter block, click Input Handling on the Settings tab, set the Provided signals to Input only, or change the Filtering and derivatives to Filter input, derivatives calculated or Zero derivatives (piecewise constant).

For example, open the buck converter model. The Simscape_system block contains Simscape blocks. Blocks outside this subsystem form the test environment.

openExample('plantdeployment/BuckConverterModelExample','supportingFile','sschdlexBuckConverterExample')
sim('sschdlexBuckConverterExample')

Buck converter model with test inputs and outputs captured.

Inside the Simscape_system subsystem, the model uses Simscape blocks and physical signals. The model has Simulink-PS Converter and PS-Simulink Converter blocks at the interfaces. Provide unique names for these blocks such that they match the corresponding port names.

openExample('plantdeployment/BuckConverterModelExample','supportingFile','sschdlexBuckConverterExample')
open_system('sschdlexBuckConverterExample/Simscape_system')

Inside buck converter subsystem.

Multiple Simscape Network Considerations

If your Simscape model contains multiple networks:

  • Enclose each network inside a subsystem. Add Simulink-PS Converter and PS-Simulink Converter blocks at the subsystem interface.

  • Use a Solver Configuration (Simscape) block for each network. Use the same sample time across Solver Configuration blocks inside the different networks.

    For example, this model contains more Simscape networks than Solver Configuration blocks, the Simscape network is not replaced with the HDL subsystem.

    Two networks with one Solver Configuration block used for both networks.

The Simscape HDL Workflow Advisor then replaces each Simscape subsystem with the corresponding HDL Subsystem.

For an example that shows how to generate HDL code for a model that has multiple networks, see Generate HDL Code for Simscape Models with Multiple Networks.

Avoid Using Certain Blocks in Simscape Utilities Library

To generate an implementation model that replaces the Simscape subsystem with the state-space algorithm, in your original Simscape model, do not use these blocks from the Simscape > Utilities Library:

For example, this model contains Connection Label and Simscape Bus blocks inside two different subsystems. The Simscape HDL Workflow Advisor cannot replace these subsystems with the state-space algorithm.

Unsupported Simscape bus, connection labels and ports for HDL subsystem replacement.

See Also

|

Related Topics