MATLAB Examples

Link Generated Code to Requirements

Link generated code to model element requirements. Using configuration parameters, you can specify whether to include requirement descriptions as comments in the generated code.

Contents

Open Model

Open the rtwdemo_requirements model. The model contains Simulink® and Stateflow® elements with associated requirements.

model='rtwdemo_requirements';
open_system(model);

View Requirements

You can view requirements linked to the model by using the Requirements Editor. In the Simulink Editor, select Analysis > Requirements > Requirements Editor. You can view requirements specific to model objects by using the object context menu. Right-click an element and select Requirements > Open Outgoing Links dialog .... To view the requirements, use these commands:

1. To view the requirements for the DiscretePulseGenerator block, right click on the DiscretePulseGenerator block and select Requirements > Open Outgoing Links dialog ... to open Outgoing Links Editor. Using Outgoing Links Editor, you can create, edit, and delete requirements traceability links.

clockblock='rtwdemo_requirements/clock';
clockblockh=get_param(clockblock,'handle');
rmi('edit',clockblockh);

2. To view the requirements, open the Signal Builder block by double clicking on it.

sigbblock='rtwdemo_requirements/Signal Builder';
open_system(sigbblock)

3. To view the requirements for the Stateflow® state, open the Outgoing Links Editor.

state=find(sfroot,'-isa','Stateflow.State','-and','Tag','req_state');
rmi('edit',state.id);

4. To view the requirements for the Stateflow transition, open the Outgoing Links Editor.

trans=find(sfroot,'-isa','Stateflow.Transition','-and','Tag','req_trans');
rmi('edit',trans.id);

5. To view the requirements for the Stateflow function, open the Outgoing Links Editor.

func=find(sfroot,'-isa','Stateflow.Function','-and','Tag','req_function');
rmi('edit',func.id);

Close the open windows.

close_system(sigbblock);

Set Configuration Parameters

Open the Configuration Parameters dialog box Code Generation > Comments pane. View the configuration parameter settings.

model = bdroot;
slCfgPrmDlg(model,'Open');
slCfgPrmDlg(bdroot,'TurnToPage','Comments');

Generate Code

Generate code for the model.

rtwbuild('rtwdemo_requirements')
### Starting build procedure for model: rtwdemo_requirements
### Successful completion of build procedure for model: rtwdemo_requirements

In the generated code, view the comments containing the requirements. To view all the requirements, click the hyperlinked requirement comment.

rtwdemodbtype('rtwdemo_requirements_ert_rtw/rtwdemo_requirements.c',...
    '/* Function for Chart:','return result;',1,0);
/* Function for Chart: '<Root>/rebound_elimination' */
static real_T rebound_fcn(real_T prev_in, real_T prev_out, real_T curr_in)
{
  real_T result;

  /* Graphical Function 'rebound_fcn': '<S2>:2':
   *  1. Result Computation
   */
  /* Transition: '<S2>:4' */
  if (prev_in == curr_in) {
    /* Transition: '<S2>:5' */
    result = curr_in;
  } else {
    /* Transition: '<S2>:6' */
    /* Transition: '<S2>:7' */
    result = prev_out;
  }

See Also

For requirement traceability, see docid:slrequirements_ug.mw_2d48b181-249d-4f89-a62c-8f9349a15df0.

Close Model

rtwdemoclean;
close_system('rtwdemo_requirements',0);