| Contents | Index |
| ID: Title | hisl_0001: Usage of Abs block | ||
|---|---|---|---|
| Description | To support robustness of generated code, when using the Abs block, | ||
| A | Avoid Boolean and unsigned integer data types as inputs to the Abs block. | ||
| B | In the Abs block parameter dialog box, select Saturate on integer overflow. | ||
| Notes | The Abs block does not support Boolean data types. Specifying an unsigned input data type, might optimize the Abs block out of the generated code, resulting in a block you cannot trace to the generated code. For signed data types, Simulink does not represent the absolute value of the most negative value. When you select Saturate on integer overflow, the absolute value of the data type saturates to the most positive representable value. When you clear Saturate on integer overflow, absolute value calculations in the simulation and generated code might not be consistent or expected. | ||
| Rationale | A | Support generation of traceable code. | |
| B | Achieve consistent and expected behavior of model simulation and generated code. | ||
| Model Advisor Checks |
| ||
| References |
| ||
| Last Changed | R2011a | ||
| Examples | Recommended
Not Recommended
| ||
| ID: Title | hisl_0002: Usage of Math Function blocks (remainder and reciprocal) | ||
|---|---|---|---|
| Description | To support robustness of generated code, when using the Math Function block with remainder-after-division (rem) or array-reciprocal (reciprocal) functions, | ||
| A | Protect the input of the reciprocal function from going to zero. | ||
| B | Protect the second input of the rem function from going to zero. | ||
| Note | You might get a divide-by-zero operation, resulting in an infinite (Inf) output value. To avoid overflows, protect the corresponding input from going to zero. | ||
| Rationale | A, B | Protect against overflows. | |
| Model Advisor Checks | By Task > Modeling Standards for DO-178B > Check usage of Math blocks | ||
| References |
| ||
| Last Changed | R2011a | ||
| Examples | In the following example, when the input signal oscillates around zero, the output exhibits a large change in value. You need further protection against the large change in value.
| ||
| ID: Title | hisl_0003: Usage of Square Root blocks | ||
|---|---|---|---|
| Description | To support robustness of generated code, when using the square root block do one of the following: | ||
| A | Account for complex numbers as the output. | ||
| B | Account for negative values as the block output. | ||
| C | Protect the input from going negative. | ||
| Notes | For negative input, the square root function takes the absolute value of the input and performs the square root operation. The square root function sets the sign of the output to negative, which might lead to undesirable results in the generated code. | ||
| Rationale | A, B, C | Avoid undesirable results in generated code. | |
| References |
| ||
| Last Changed | R2011a | ||
| Examples |
| ||
| ID: Title | hisl_0004: Usage of Math Function blocks (natural logarithm and base 10 logarithm) | ||
|---|---|---|---|
| Description | To support robustness of generated code, when using the Math Function block with natural logarithm (log) or base 10 logarithm (log10) function parameters, | ||
| A | Protect the input from going negative. | ||
| B | Protect the input from equaling zero. | ||
| C | Account for complex numbers as the output value. | ||
| Notes | If you set the output data type to complex, the natural logarithm and base 10 logarithm functions output complex values for negative input values. If you set the output data type to real, the functions output NAN for negative numbers, and minus infinity (-inf) for zero values. | ||
| Rationale | A, B, C | Support generation of robust code. | |
| Model Advisor Checks | By Task > Modeling Standards for DO-178B Checks > Check usage of Math blocks | ||
| References |
| ||
| Last Changed | R2011a | ||
| Examples |
You can protect against:
The following example displays the resulting output for input values ranging from -100 to 100.
| ||
| ID: Title | hisl_0005: Usage of Product blocks | ||
|---|---|---|---|
| Description | To support robustness of generated code, when using the Product block with divisor inputs, | ||
| A | In Element-wise(.*) mode, protect divisor inputs from going to zero. | ||
| B | In Matrix(*) mode, protect divisor inputs from becoming singular input matrices. | ||
| C | Set the model configuration parameter Diagnostics > Data Validity > Signals > Division by singular matrix to error. | ||
| Notes | When using Product blocks for element-wise divisions, you might get a divide by zero, resulting in a NaN output. To avoid overflows, protect divisor inputs from going to zero. When using Product blocks to compute the inverse of a matrix, or a matrix division, you might get a divide by a singular matrix. This division results in a NaN output. To avoid overflows, protect divisor inputs from becoming singular input matrices. During simulation, while the software inverts one of the input values of a Product block that is in matrix multiplication mode, the Division by singular matrix diagnostic can detect a singular matrix. | ||
| Rationale | A, B, C | Protect against overflows. | |
| Model Advisor Checks | By Task > Modeling Standards for DO-178B > Check safety-related diagnostic settings for signal data | ||
| References |
| ||
| Last Changed | R2011a | ||
![]() | Block Considerations | Ports & Subsystems | ![]() |

Learn more about Simulink through this collection of videos, articles, technical literature and the Getting Started with Simulink Guide.
| © 1984-2012- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |