Documentation

Link Generated Code to Requirements

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

Open Model

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

model='rtwdemo_requirements';
open_system(model);

View Requirements

You can view requirements to model objects by using the object context menu. Right-click an object and select Requirements Traceability. To view the requirements, use these commands:

1. To view the requirements for the DiscretePulseGenerator block, open the Link Editor.

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

2. To view the requirements, open the Signal Builder block.

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

3. To view the requirements for the Stateflow® state, open the Link 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 Link 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 Link 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.

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

Close Model

rtwdemoclean;
close_system('rtwdemo_requirements',0);
Was this topic helpful?