Simulink, HDL Coder, コーディング基準のレポート指摘について

16 views (last 30 days)
Yasuo Otomo
Yasuo Otomo on 16 Feb 2018
Commented: Kei Otsuka on 18 Feb 2018
『HDLコード生成』-『グローバル設定』-『コーディング基準』をNone → Industryに設定し、HDL生成実行した際のIndustry_reportにて、以下の指摘がありましたが、それぞれ(★)について、教えてください。 コーディング基準の設定画面キャプチャファイルを添付します。
CGSL-1.A.D.1|message|include ファイルは、RTL 記述に対しては ".h"、".vh"、".inc"、テストベンチに対しては ".h"、".inc"、".ht"、".tsk" とする。 Message||業界ルールでは、パッケージ ファイル名の接尾辞を '_pac' にする必要があります。ユーザー設定 '_pkg' をオーバーライドします。
★実行環境下には該当のパッケージファイルは存在せず、また、生成RTLをverilogとしており、何に対して指摘しているのでしょうか?
CGSL-1.A.E.2|message|クロック、リセットおよびイネーブルの各信号名は推奨された命名規則に従う。 Message||業界ルールでは、reset 信号名に 'rst_x' or 'reset_x' or 'rstx' or 'resetx' が含まれている必要があります。ユーザー設定 'CLR_X' をオーバーライドします。| Message||業界ルールでは、clock enable 信号名に en が含まれている必要があります。ユーザー設定 'CKE_I' をオーバーライドします。
★指摘の通り、リセット信号名が、CLR_Xからreset_xにオーバライトされてHDL生成されてしまいます。指摘はするが、リセット名はオーバライドせずにHDL生成する方法はありますでしょうか?
CGSL-2.A.F.2|warning|配列の LSB は 0 にする。 Warning|component|ベクトル型がモデル内に存在します。生成されたコードにおいて、ベクトルの LSB はゼロにはなりません。
★指摘箇所が具体的にモデルのどの場所に存在しているのかが、Industry_reportではわかりません。具体的にどの箇所のモデルを指摘しているのかが、わかるログなどはありますでしょうか?
■実行環境 (verコマンド実行結果) -------------------------------------------------------------------------------------------------- MATLAB バージョン: 9.2.0.556344 (R2017a) MATLAB ライセンス番号: DEMO オペレーティング システム: Microsoft Windows 8.1 Pro Version 6.3 (Build 9600) Java バージョン: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot™ 64-Bit Server VM mixed mode -------------------------------------------------------------------------------------------------- MATLAB バージョン 9.2 (R2017a) Simulink バージョン 8.9 (R2017a) Computer Vision System Toolbox バージョン 7.3 (R2017a) DSP System Toolbox バージョン 9.4 (R2017a) Fixed-Point Designer バージョン 5.4 (R2017a) HDL Coder バージョン 3.10 (R2017a) HDL Verifier バージョン 5.2 (R2017a) Image Processing Toolbox バージョン 10.0 (R2017a) MATLAB Coder バージョン 3.3 (R2017a) Signal Processing Toolbox バージョン 7.4 (R2017a) Trial>>

Accepted Answer

Kei Otsuka
Kei Otsuka on 16 Feb 2018
Q1 : 実行環境下には該当のパッケージファイルは存在せず、また、生成RTLをverilogとしており、何に対して指摘しているのでしょうか? \n
A1 : ヘルプドキュメントに記載の通り、verilogの場合は拡張子の確認のみですので対処不要の項目となります。 https://www.mathworks.com/help/releases/R2017b/hdlcoder/ug/basic-coding-practices.html
気になる場合のWorkaroundですが、コード生成対象として一旦VHDLを選択し、パッケージの接頭辞を"_pac"としてから verilogコードを生成しますとメッセージは出なくなります。
       
Q2 : 指摘の通り、リセット信号名が、CLR_Xからreset_xにオーバライトされてHDL生成されてしまいます。指摘はするが、リセット名はオーバライドせずにHDL生成する方法はありますでしょうか?
A2 : 現状は必ずオーバーライドされる仕様になっています。
       
Q3 : 指摘箇所が具体的にモデルのどの場所に存在しているのかが、Industry_reportではわかりません。具体的にどの箇所のモデルを指摘しているのかが、わかるログなどはありますでしょうか?
A3 : HTML形式のレポートが生成されていると思いますが、"警告"と書かれた青い文字をクリックすると該当するコーディングルール詳細が表示され、モデル上の問題箇所をハイライト表示するためのリンクが入っていると思います。

More Answers (1)

Yasuo Otomo
Yasuo Otomo on 17 Feb 2018
ご回答ありがとうございます。A1, A2については、了解いたしました。
A3について、html形式のレポートを添付(DUT_Industry_report.html)します。 "警告"ではなく"違反"と書かれた青い文字はあり、クリックすると指摘詳細に飛びますが、モデル上の問題箇所をハイライト表示するためのリンクはありません。問題箇所を表示するために、何か他に設定が必要なのでしょうか?
ご確認のほど、よろしくお願いいたします。
  1 Comment
Kei Otsuka
Kei Otsuka on 18 Feb 2018
手元にモデルが無いので何とも言えませんが、出力データ型がベクトルになっているブロックを探せば良いので、get_paramで簡単に出来そうです。
 添付のモデルはDUTサブシステム内に出力データ型がベクトルになっているブロックが複数含まれますが、これを検索したい場合
%モデルオープン
open('sla_fir_filter_17a')
%DUTサブシステム内のブロック一覧取得
list = find_system('sla_fir_filter_17a/DUT','Type','Block')
%モデルコンパイル
sla_fir_filter_17a([],[],[],'compile');
%コンパイル後の各ポートの次元取得
ioDim = get_param(list,'CompiledPortDimensions');
ioSize = zeros(size(list));
for i = 1:size(list,1)
%各ブロックの出力ポートの次元合計
ioSize(i,1) = sum(ioDim{i}.Outport);
end
%次元が2より大きいポートを持つブロックを求める
idx = find(ioSize > 2);
%ブロック名表示
list{idx}
%コンパイル状態解除
sla_fir_filter_17a([],[],[],'term');
このように記述して実行頂ければ、出力にベクタ型を持つブロック名のリストが表示されます。

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!