Modelify は、C 言語のレガシーコードを、保守しやすい Simulink および Stateflow モデルに変換します。C の演算を 1 対 1 でブロックに置き換えるのではなく、C 言語の低レベルなロジックを Simulink の高レベルな構造へと変換します。これにより、MAAB モデリングガイドラインに準拠し、プロジェクトの階層とデータ型を保ち、元の C コードの行番号注釈を備えたモデルが得られます。

こちらのデモ動画では、機能の一部をご紹介しております。お手元のコードで、Modelify の無償トライアルをお試し下さい。

1対1の変換ではなく、高レベルなSimulinkモデルへ

C の演算子をそのまま 1 つずつブロックに変換すると、ブロックと交差する信号線が入り組んだ読みにくいモデルになります。Modelify は、設定可能な 20 種類以上の Reductions(削減ルール)を備えており、低レベルな C の処理を自然な Simulink の構造へとまとめます。定数の乗算を Gain ブロックに置き換え、算術演算や関係演算を統合し、MinMax や Saturation Dynamic のパターンを検出し、ベクトルのセレクタや代入を Demux ブロックと Mux ブロックに結合し、Bus Selector や Bus Assignment をまとめ、デッドパスや不要な型キャストを除去します。

生成されたブロックには元の C コードの行番号を示す注釈が付き、各 Reduction は社内のモデリングガイドラインに合わせて個別に有効・無効を切り替えられます。

冗長モデル

C の演算を個別の Product、Sum、Constant、RelationalOperator、Switch、BusAssignment ブロックへそのまま変換した冗長な Simulink ブロック図。

削減モデル

Modelify の Reduction により、同じロジックが Gain、Sum、min、BusAssignment ブロックへとまとめられ、C コードの行番号注釈が付いた削減後の Simulink ブロック図。

Simulink、Stateflow、S-Functionを、エンジニアの設計どおりの階層に

プロジェクト内の各 C 関数にはそれぞれの役割があります。Project Conversion Editor では、Modelify がコードベースを解析し、関数ごとに最適な変換形式とコンポーネント種別を提案します。データフローや制御演算には Simulink ブロック図、複雑な分岐には Stateflow チャート、既存の C ルーチンをそのまま呼び出す場合には S-Function ブロック、ハードウェア I/O や未定義の外部関数にはスタブモデルを選択できます。

1 箇所からしか呼ばれない関数は呼び出し元の Subsystem にまとめ、プロジェクト全体から繰り返し呼ばれる関数は、指定した呼び出し回数のしきい値に応じて共有の User Library ブロックへ自動的に切り出します。また、Library Mapping ルールにより、標準の C 数学関数や社内ライブラリの関数を既存の Simulink ブロックへ直接マッピングできます。

Eclipse 上の Modelify Project Conversion Editor。C 関数の一覧と、それぞれの Conversion Type、Component、変換ステータスが表示されています。

グローバル変数、Embedded Coderへの対応

Modelify は、構造体、列挙型、キャリブレーション用のマクロ、およびグローバル変数を抽出し、初期化用の MATLAB スクリプトに出力します。プリプロセッサのマクロ定数は、Constant ブロックや Stateflow の遷移から参照されるワークスペース変数に変換できるため、制御パラメータのキャリブレーションを一箇所で管理できます。

グローバル変数は Inport / Outport ブロックまたは Constant ブロックとして配線でき、Embedded Coder でのコード生成向けに、元の .h ファイルと .c ファイルの情報を持つ Simulink.Signal オブジェクトを自動生成できます。さらに、TargetLink 互換ブロックでの出力、ブロック種別やライブラリごとの文字色・背景色の自動設定、C ソースコードへリンクした HTML 変換レポートの出力にも対応しています。

Modelify の Global Variables 設定タブ。C のグローバル変数がデータ型、次元、Simulink.Signal の設定、ヘッダーファイルおよび定義ファイルとともに Simulink ブロックへ対応付けられています。

コンパイラ設定を反映するAtlasのグラフ解析

コンパイルされた C プロジェクトの振る舞いは、ビルドフラグ、インクルードパス、およびプリプロセッサディレクティブによって変わります。Modelify は Atlas をベースに構築されており、gcc やクロスコンパイラを含むビルドコマンドを監視して、制御フロー、データフロー、コール構造を精密に表す XCSG グラフを生成します。

変換前に Atlas で C コードの構造を把握し、Modelify Worklist View で C 言語や Simulink の制約を段階的に解消しながら変換を進められます。Simulink 側で手動編集されたモデルを再変換する際には、上書き前に警告を表示します。

Stopwatch Demo Project を開いた Eclipse のワークスペース。C のソースコードと、Atlas Smart View によるコールグラフおよびデータフローグラフが表示されています。

Modelify トライアルの​お申し込み

勤務先住所

お客様のプロジェクトについて任意 · 3項目

はじめに・サポート

Modelify は Eclipse 環境で動作し、ライセンスには Atlas のライセンスが含まれています。入門動画、取扱説明書、およびシステム要件については、Modelify サポートをご覧下さい。

ダウンロード・ライセンス

Modelify, Windows 64-bit

Modelify を実行するにはライセンスキーが必要です。Modelify の無償トライアルライセンスをお申し込みください。サブスクリプション、パーペチュアルライセンス、およびモデリングガイドラインに合わせたカスタマイズについては、ライセンスと価格のページをご覧下さい。