Rational Rhapsody において MicroC プロファイルを使用して C 言語で作成されたプロジェクトの場合、ターゲット・マイクロコントローラー用のステートチャート・コードをより効率的に生成するフィーチャーを使用できます。
この実装では、生成されたステートチャート・コードは、遷移の処理を最適化するトップダウン・アルゴリズムを使用します。これによって、RAM および ROM の消費、コード・サイズの観点から効率化されます。
ステートチャート用の最適化されたトップダウン・コードを生成する機能は、C_CG::Configuration::StatechartImplementation プロパティーを OptimizedTopDown に設定することでアクティブになります。このフィーチャーをアクティブにした後、C_CG::OptimizedTopDownStatechart メタクラス内のプロパティーを使用して、ステートチャート用のトップダウン・コード生成の最適化を制御します。
最適化
最適化されたトップダウン・ステートチャートのフィーチャーには、膨大なコードの文書化とさまざまなコードの最適化が含まれ、これらはプロパティーによって制御されます。これらの最適化は、C_CG::OptimizedTopDownStatechart::AllowCodeOptimization プロパティーを Checked に設定することで有効になります。
コードの文書化については、C_CG::OptimizedTopDownStatechart::AddCodeDocumentation プロパティーを使用します。このプロパティーを使用すると、最適化されたトップダウン・ステートチャート・コードに、ステートチャートの実装機能、状態遷移、および 1 つの状態における静的反応に関するコメントを含めることができます。
コード最適化については、
C_CG::OptimizedTopDownStatechart メタクラス内の次のプロパティーを使用します。
- ClutchEntranceToStateHierarchy - Checked に設定すると、最適化されたトップダウン・ステートチャート・コードを、可能な場合は状態階層内の最内部の状態に入場できるように最適化することができます。
- EmptyOverlappingTestsForStateHierarchy - Checked に設定すると、最適化されたトップダウン・ステートチャート・コードを、状態階層が存在するときに重複する比較があればスキップできるように最適化することができます。これにより、周辺状態に入場していない場合、制御は内部状態に入ることができません。
- InlineEnteringExitingReactions - Checked に設定すると、最適化されたトップダウン・ステートチャート・コードを、入退場反応関数の生成を避けるため、状態の入退場反応のインライン化を試行するように最適化できます。
- InlineMaxTranstionsCriteria - 最適化されたトップダウン・ステートチャート・コードを、次のように最適化できるように、数字を設定します。ステートチャート・コードの最後に、現在のステップで遷移が行われたかどうかをテストするセクションがあります。別のステップが必要かどうかのテストには、入場中の状態に関する情報を保管する状態変数が使用されます。このオプションを選択した場合、別のステップが必要というフラグが立ったコードは、遷移コード内でインラインになり、状態変数が不要になります。このオプションを選択した場合、ユーザーは許容可能な遷移の最大数を入力できます。
実際の遷移の数が、ここで設定した数字よりも大きい場合、最適化は実行されません。
- InlineRootStateDefaultTransitionTest - Checked に設定すると、最適化されたトップダウン・ステートチャート・コードを、デフォルトの遷移でのテストを他の遷移のテストにインライン化するように最適化できます。
- MergeStateSequenceWithNoGuard - Checked に設定すると、最適化されたトップダウン・ステートチャート・コードを、遷移でガードを持たない状態シーケンスを、可能な場合は単一の状態にマージするように最適化できます。