コード生成は、MISRA 準拠のプロセスを大幅に簡略化します。コーディング規約 (MISRA など) の主な目的は、安全性と信頼性に加え、可読性、保守性、移植性を確保することです。モデルは開発プロセスの中心であり、さまざまなプラットフォーム向けに一貫した方法でモデルからコードを生成できることから、移植性と保守性の部分が簡略化されます。

そのため、MISRA AC AGC や新しい MISRA C:2012 コーディングルールの一部など、コード生成に関しても小規模なルールのサブセットが存在します。MISRA に準拠するコードを生成するためには、特定のモデリングパターンが違反しないようにし、コード生成オプションを適切に設定する必要があります。

Embedded Coder® を使用した MISRA 準拠のコード生成に関する情報をご確認ください。同様に、dSPACE® TargetLink の使用についてもご確認いただけます。

一方で、実際の用途の多くでは特定の違反が発生してしまうため、MISRA で推奨されているように、逸脱処理による対処が必要になります。違反の一部は、設計上の意思決定の結果として発生する可能性があります。

生成されたコードは手動で解析するか、ビルドシステムの一部として解析できます。そのうえで、違反があればコードにコメントを追加したり、それらを結果とあわせて別途保存したりすることで対処が可能です。Polyspace ツールを使用して同様のタスクを実行できますが、さらに効率的な方法があります。コードを再生成しなければならないとすると、100 件の違反の確認を繰り返すというような作業が必要になり、多くのエンジニアリング時間が無駄になってしまうかもしれません。

モデルベースデザイン向けツールと統合するメリット

この統合による主なメリットは、逸脱処理を効率的に行えることです。モデルレベルで正当化情報を追加することで、更新後や異なるターゲット プラットフォームへの対応などでコードを生成するたびに手直しをする必要がなくなります。使用しているモデルを引き続き設計の中心として維持しながら、正当化情報を自動的に Polyspace® の解析に伝播させることができます。これは Embedded Coder や TargetLink などの自動コード生成ツールとの統合により可能になります。

左シフト演算は MISRA 違反ですが、効率的なコードにするための設計上の選択です。また、悪影響はなく、安全性も証明されています。注釈付け可能なゲインブロックまで遡ってトレースできます。
左シフト演算は MISRA 違反ですが、効率的なコードにするための設計上の選択です。また、悪影響はなく、安全性も証明されています。注釈付け可能なゲインブロックまで遡ってトレースできます。

上記の例では、設計上の選択として、効率化のために乗算ではなくビットシフト演算を使用したコードが生成されました。以下に示すように、Embedded Coder には、そのような設定を有効化または無効化するオプションが用意されています。さらに Embedded Coder には、効率化と MISRA 準拠のいずれかを行うプロセスに導くコード生成アドバイザーも用意されています。

上記の例で説明したシフト演算の使用を構成するためのコード生成オプション。
上記の例で説明したシフト演算の使用を構成するためのコード生成オプション。

さらに、Polyspace ではコード生成に関して適用されるルールのサブセットが自動的に構成されます。たとえば、MISRA C:2012 の場合、コードが生成されると特定のルールが再分類され、コード生成環境からの起動時に Polyspace MISRA チェッカーがこの情報をインポートします。

コード生成環境からインポートされた設定の例。
コード生成環境からインポートされた設定の例。

実際に、コード生成後の後処理の手順として Polyspace を自動的に実行し、ソースコード管理システムにチェックインする前にコード コンポーネントが MISRA に準拠しているかを評価することができます。たとえば、単一単位ルールのサブセットを選択して、ローカルで解析し対処することができます。モデルへのトレーサビリティは、違反がある場合にモデル内で直接対処するのに役立ちます。さらに、詳細な MISRA レポートを作成して準拠のレベルを文書化することもできます。

Polyspace ツールを使用した MISRA 準拠の詳細については、以下のリンクを参照してください。