ALINT で作成したデザインと設定を ALINT-PRO へ移行する方法

概要

ALINT-PRO はリントツールである ALINTの後継ツールで、FPGA や ASIC デザインの検証を新しい段階へ推進します。ALINT が提供している有効な機能やデザインルールチェックは保持しつつ、ALINT-PRO は大幅に改善された操作性、先進的なデバッグ機能、および改善された品質と性能を提供します。先進的なCDC検証メソッド、デザイン制約 (SDC または アルデック固有の制約)の読み込み、論理合成されたネットリストの回路図表示、クロック/リセットラインおよび CDCのサポートが ALINT-PROで導入された主な新機能です。

既存の ALINT ユーザは ALINT-PRO への移行をお勧めします。移行処理の大半は自動実行が可能です。本アプリケーションノートでは、ALINTを使って解析を実行したプロジェクトを移行するのに必要となる、プロジェクト構造、preference 設定、リントポリシーおよび除外設定を含む主な処理について説明します。

移行処理概要

ALINT のワークスペースとデザインは、GUIベースのウィザードや変換用の TCL スクリプトコマンドを使って、ALINT-PROのフォーマットに一致するよう変換可能です。

ALINTのソースファイル (ワークスペース、デザイン、ポリシーおよび除外設定ファイル) は、変換時に編集されません。オリジナルのソースと合わせて、新しい ALINT-PRO のワークスペースとプロジェクトファイルが同じディレクトリに作成されます。

ポリシーと除外設定ファイルは ALINT-PRO のプロジェクト設定の一部となり、別のファイルは不要です。

ALINT-PRO のプロジェクトがディスク上にすでに存在する場合、変換時に上書きする必要があるか注意してください。

ALINT のワークスペースの変換方法

図1で示すように単一デザインで、図2と3で示すようにカスタムポリシーの設定を含み、図2と4で示すように除外設定ファイルをもち、図2にあるようにグローバルクロックを手動で設定している ALINT のワークスペースを例に取り、変換処理を説明します。

図1. ワークスペース構造

図 2.デザインの設定

図 3. デザインポリシー

図 4. デザインの除外設定ファイル

次の手順でワークスペースの移行を実行します。

  1. ALINT-PRO を起動し、Tools | Convert | ALINT Workspace を選択して変換用のウィザードを開きます。 

  2. ワークスペース名と場所を選択します。

    図 5. ワークスペース変換ウィザードでの最初の処理

  3. チェックボックスの適切な設定

    • Overwrite existing files - 出力するワークスペースやプロジェクト名がディスク上にすでに存在する場合、本オプションをチェックして既存ファイルを上書きします。

    • Use 'alint' workspace configuration - ALINT ワークスペースがカスタム設定を含む場合、'alint' 設定に置き換えられます。

      ALINT ワークスペースには 'alint' という設定が事前定義されており、'debug''release' などのカスタム設定が可能です。 本チェックボックスがオンの場合、変換時に 'alint' 設定を使用します。チェックされていない場合、ALINT-PROの現在の設定が使用されます。

      ALINT のリントチェック機能はアルデックのシミュレータ Riviera-PRO の1機能として開発され、2つのツールで同様のプロジェクト構造や設定を使用することが前提となっていましたが、リントとシミュレータでは設定内容が異なりました。ALINT-PRO では Riviera-PROとの多くの統一機能を共有していないため、ALINTとは構成が異なります。

    • Delete ALINT files after conversion - 変換が正しく行われた後、ALINT のオリジナルファイル (ワークスペース、デザイン、ポリシーなど) と生成されたファイル (ライブラリや違反情報データベース .avdbなど) を削除します。

  4. 参照するルールセットとポリシーのディレクトリを指定します。カスタムポリシーの場合、ワークスペースやプロジェクトディレクトリ、ALINTのポリシーディレクトリやルールセットディレクトリ設定で定義されていたディレクトリにて、ルールセットやポリシーを含むファイルを探します。追加のサーチパスが不要な場合は、本処理はスキップします。

    図 6. ワークスペース変換ウィザードでの2番目の処理

  5. 変換されたワークスペース構造を確認し、Finish ボタンをクリックして変換処理を終了します。不足しているファイルは赤色で表示されます。その場合、指定した検索ディレクトリが適切か確認してください。

    7. ワークスペース変換ウィザードの3番目の処理

ALINT-PRO の File Browser で ALINT ワークスペースファイル (*.rwsp) をダブルクリックすると、オリジナルのワークスペースファイルが既に選択されている、上記と同じ変換ウィザードが表示されます。

GUIよりスクリプトコマンドを使いたい場合は、次のコマンドにより ALINT ワークスペースの変換を実行します。

convert.alint.workspace  [-force] [-alint_cfg] [-cleanup] [-path  ...] [-f ]

コマンド詳細は、Help | Command Reference | Conversion を参照してください。

下記はサンプルデザインのワークスペースを変換する例です。

convert.alint.workspace blackjack_mixed.rwsp -force -alint_cfg

変換が正常終了するとコンソールに次のメッセージが表示されます。

# CONV-1107: The / workspace file conversion SUCCEEDED

変換処理時には他のワーニングが表示されることもあります。メッセージ ID をクリックして詳細記述を表示し、生成されたワーニングを解析してワークスペースの適切な変換を実行してください。

図 8. 変換時の詳細メッセージの表示

変換されたワークスペースは Project Manager に自動で読み込まれます。

図 9. 変換されたワークスペース構造

図 10. 変換されたプロジェクトポリシー

図 11. 変換されたプロジェクト除外設定

ALINT ワークスペースの変換後は次のことを確認してください。 

  • 変換時にコンソールに出力されたワーニングを確認してください。

  • ALINT-PRO ワークスペースにインポートされた構造を確認してください。

  • ポリシーや除外設定のような設定関連データが正しく変換されたことを確認してください。

デザインの設定

ALINT デザインの設定である preference は ALINT-PRO properties に自動マッピングされます。通常追加設定なしで、ALINT-PRO で変換されたプロジェクトを実行することができます。

例えば、VHDL standard の ALINTのデフォルト設定は IEEE Std. 1076-2002ですが、ALINT-PRO では IEEE Std. 1076-2008です。変換されたデザインは変換前と同様に、2002 standard の設定になっています。

図 12. インポートされた言語規格設定

ALINT デザインの Global clock signalsGlobal reset signals propertiesにてクロックやリセットが明確に定義されている場合、デザイン制約のフォーマットで ALINT-PRO プロジェクトにインポートされます。この場合 .adc 制約ファイルが作成されプロジェクトに追加されます。本ファイルには、同一の階層パスに対応するcreate_clockcreate_reset 制約が含まれます。

図 13. 作成された制約ファイル

根本的なメカニズムの違いにより、ALINT-PRO ではサポートされていないオプションがあります。そのようなオプションが ALINT デザインで設定されている場合、変換時に関連メッセージがコンソールに通知されます。 インポート漏れがないかメッセージを確認してください。

共有ライブラリ

ALINT-PRO ではライブラリはプロジェクトの不可欠な要素です。ライブラリはプロジェクトと合わせて自動生成され、プロジェクトと同じ名前が付けられます。プロジェクトライブラリは他のプロジェクトと共有するために、エキスポート可能です。

エキスポートされたライブラリは、そのプロジェクトとは別になります。エキスポートによりライブラリバイナリのコピーが作成されます。本コピーはプロジェクトとは連携せず、プロジェクトに変更があってもライブラリの内容は変更されません。ライブラリデータは元のプロジェクトの最新バージョンをエキスポートして手動で更新する必要があります。

定義済みの ALINT-PRO グローバルライブラリ、特にFPGAベンダ (Xilinx, Altera, Microsemi, Lattice) の Verilog/VHDL ライブラリと同様に、標準 VHDL ライブラリ (std, ieee) はエキスポートされたライブラリとして提供されます。ライブラリのエキスポートは、変更が少ない共通ライブラリを共有する正しい方法です。

別の方法として、ライブラリプロジェクトをエキスポートしたりプロジェクトに追加する代わりに、それを使用する全てのワークスペースに含める方法があります。この方法は共有ライブラリが頻繁に修正される場合に有効で、参照するプロジェクトが常に最新のライブラリバイナリを使用することができます。

ALINT-PRO は ALINT ライブラリマッピングファイル (library.cfg) のインポートをサポートしていません。VHDL標準やFPGAベンダライブラリではなく、共有ライブラリを ALINT-PROで使用するには、次のガイドラインに従ってください。

  1. 別の ALINT-PRO プロジェクトを作成し、共有ライブラリのソースをそのプロジェクトに追加します。

  2. プロジェクトの構文解析を実行します。

  3. Library Viewer ウィンドウで Project ライブラリを選択し、マウス右ボタンメニューから Export... オプションをクリックして、ライブラリ名と場所を指定して保存します。

  4. 共有ライブラリを使用するワークスペースにて、Library Viewer の Attached ライブラリのマウス右ボタンメニューから Attach Library... オプションを選択し、上記でエキスポートされたライブラリを追加します。

バッチモードで、次のコマンドを使ってエキスポートライブラリを作成することが可能です。 

workspace.project.createfromdisk -name control work_with_libraries/control/src
project.parse
project.export.library -project control -path ../libraries

それからエキスポートされたライブラリをワークスペースに追加します。

library.attach.local -file ../libraries/control/control.alintrepo

複数のライブラリを有するデザイン

別々のライブラリで共通のデザインユニットをグループ化することは、高度な再利用を実行するための一般的な手法です。1つまたは2つ以上の補足ライブラリが、デザイン階層のルートを意図しないプロジェクトで頻度高く使用されます。これらのライブラリは主要プロジェクトでのブロックの構築を提供します。

ALINT-PRO はライブラリプロジェクトの概念を提供し、補足ライブラリの簡易処理と識別をモデル化します。ライブラリプロジェクトは、同様のデザイン間で再利用される ASIC セルライブラリやカスタマイズ IP、社内共有プリミティブのモデル化に使用されます。

ライブラリプロジェクトではライブラリソースファイルの保管と構文解析のみ行い、エラボレーションや論理合成後の階層は形成しません。代わりにライブラリプロジェクトのオリジナルユニットは、正規プロジェクトでインスタンシエートされています。ライブラリプロジェクトでは構文解析と構文解析リンティングだけが実行可能なため、通常プロジェクトに比べて preference の設定数は大幅に削減されています。

既存のプロジェクトのタイプをライブラリプロジェクトに変更するには、プロジェクト Properties | Design entry にて Project type から Library project を選択してください。

図 14. プロジェクトタイプの変更

ライブラリプロジェクトには独自のアイコンがあり、ワークスペースのツリー表示で識別可能です。

図 15. 通常プロジェクトとライブラリプロジェクトを含むワークスペース

主要な通常プロジェクトと関連ライブラリプロジェクト間の依存関係についても、構文解析の正しい順番を指定する必要があります。ALINTワークスペースでのデザイン間の依存関係が、ALINT-PROワークスペースにおけるプロジェクト依存関係として正しくインポートされているかどうか注意してください。既存の依存関係について、追加設定は必要ありません。

新しいライブラリプロジェクトは File | New | Library project から起動される Create New Library Project ウィザードまたは File Browser のコンテキストメニューの Create Library Project を使って、通常プロジェクトと同様に作成可能です。次のアプリケーションノートの ”ワークスペースとプロジェクトの作成” も参照してください。
'Getting started with ALINT-PRO' 

FPGA ベンダライブラリ

標準および FPGA ベンダライブラリは ALINT-PRO と一緒にインストールされます。これらのライブラリはグローバルで、どのワークスペースからも参照できます。ベンダライブラリセルを使ったデザインに対して正確なリントチェックを実行する、最もよく使われるベンダライブラリには、タイミング制約が組込まれています。

ALINT と ALINT-PRO での重要な違いは、ALINT-PRO のインストール時に一緒に提供されるライブラリだけを使用するということです。FPGA ベンダライブラリを自分で構築することは避け、ALINT、Riviera-PRO または Active-HDLのライブラリを再利用しないでください。必要なライブラリが ALINT-PRO インストールリストにない場合には、 Aldec Support にリクエストしてください。

もう1つの違いはライブラリバージョンへのアプローチです。シミュレータと違って、ALINT-PRO では FPGA ベンダライブラリプリミティブと定義済のタイミング制約のインタフェースだけが必要になります。ALINT-PRO は、ベンダプリミティブモジュール本体の解析は行わず、タイミング制約だけを使用します。

上記のことから ALINT-PRO では、論理合成後のシミュレーションで使用するバージョンとは異なり、デザインが使用している FPGA ベンダライブラリと全く同じバージョンである必要はありません。全ての FPGA ベンダがプリミティブピンについて、以前のチップファミリーと下位互換を保つようにしているので、ALINT-PROユーザはデフォルトで提供されるバージョンを安全に使用することができます。ライブラリのバージョンは、ALINT-PRO の正式リリースとサービスリリース版において継続して更新され、ライブラリバージョンの非互換性を回避するために最新のバージョンを提供します。

ALINT ポリシーとルールセットのインポート方法

ALINT のルールセットとポリシーファイルは、ALINT-PRO のプロジェクトポリシーとしてインポートされます。ALINT-PRO は外部ファイルをポリシーとして使用しないため、ポリシーデータはプロジェクトファイル (*.alintproj) の一部として保存されます。ALINT の設定ファイルは、インポート時に編集できません。

ALINT-PRO は ALINT と ALINT-PRO のルール番号で最適なマッピングを見つけ出します。ALINT のポリシーに定義されているルールパラメータについても同様です。ルールとパラメータのほとんどが ALINT-PRO と同じですが、まれに製品間の変更が大きい場合があります。例えば、標準ファイルヘッダのようなコメントテンプレートに関するルールは大幅に修正されていて、そのようなルール設定は1からやり直す必要があります。変換スクリプトはスムーズに変換できない全てのケースについてワーニングを出力します。

ルールやパラメータのマッピングテーブルの詳細については、Help | Migration Guide を参照してください。

次のような ALINT のカスタムポリシーがある場合

図 16. インポートされたポリシー

ALINT-PRO にインポートするには、Tools | Import | ALINT Policy を選択、または File Browser で ALINT ポリシー (*.alintpolicy) をダブルクリックすることにより起動される Import Policy ウィザードを使います。

  1. ALINT ポリシーファイルの場所と名前を指定します。

  2. ALINT-PRO プロジェクトファイルの場所と名前を指定します。

  3. Clean project policy before import - このオプションをチェックすると、プロジェクトリンティングに不要なポリシー設定をクリアします。チェックしない場合は、インポートされた設定はすでに指定されているものとマージされます。

  4. ルールセットディレクトリが作業ディレクトリとは異なる場合、継承された設定ファイルを検索するための追加ディレクトリを指定します。

図 17. Import Policy ウィザード

図 18. ポリシー検索パスの指定

図 19. インポートされたポリシー

ALINT ルールセットのインポート処理は上記と同様で、Tools | Import | ALINT Ruleset を選択、または File Browser で ALINT ルールセットファイル (*.alintruleset) をダブルクリックすることにより起動される Import Ruleset ウィザードを使います。

別の方法としては、import.alint.policyimport.alint.ruleset コマンドを使って ALINT ポリシーやルールセットをそれぞれインポートします。

例えば下記のように指定します。

import.alint.policy "/policy_with_nested_ruleset.alintpolicy" "/blackjack_mixed.alintproj" -path "/ruleset"

インポート処理が正常終了し、コンソールウィンドウに次のメッセージが表示されることを確認してください。

# CONV-1130: The /<*.alintpolicy> policy file import SUCCEEDED.

ワーニングが通知された場合には内容を確認してください。

ルールチェック手法の違い

ALINT-PRO の目標の1つは ALINT ルールの実装を改善することで、ポリシー移行時に不一致が発生することがあります。ここでは、典型的な不一致の解消について説明します。

ALINT の VHDL と Verilog ルールプラグインに共通のネットリストレベルのルールは、同じ機能を含んでいるものがありました。どのルールを適用するかは、主要な違反検出されたインスタンスの言語により決まっていました。これに対して ALINT-PRO は2つのルールを、言語に依存しない単一ルールに置き換えています。例えば ALINT には、非同期セット/リセット付きラッチは使用しない (STARC_VHDL.2.4.1.3 縺ィ STARC_VLOG.2.4.1.3)という推奨ルールがあります。

図 20. 言語依存の ALINT ルールチェック

これらのどちらか1つまたは両方の設定ファイルは、ALINT-PRO のプロジェクトポリシーに1つの同等のルールチェックとしてインポートされます。 (STARC_NETLIST.2.1.4.3)

図21. 言語に依存しない ALINT-PRO のルールチェック

特定のルールが別のルールのチェック内容を完全にカバーしている場合、競合が生じます。類似したルールがSTARC設計スタイルガイドに定義してある場合、通常競合が生じます。ALINT-PRO はルールの重複またはほぼ一致するルールを可能な限り回避しようとするため、ALINTより広いスコープを持つルールを提供します。

STARC_VHDL.2.1.6.3 ("配列のインデックスは、単純な信号名のみとする") と STARC_VHDL.2.1.6.5 ("配列のインデックスに定数、信号名以外を使用しない")の2つのルールを例に取ると、2番目のルールの方が範囲が広く詳細なルールです。 これにより ALINT の設定ファイルに STARC_VHDL.2.1.6.3 が含まれる場合、STARC_VHDL.2.1.6.5 ルールチェックとして ALINT-PRO のポリシーにインポートされます。この場合次のメッセージがコンソールに通知されます。

# CONV-1123: Warning: The STARC_VHDL.2.1.6.3 rule is replaced with STARC_VHDL.2.1.6.5 as it covers all required checks.

さらに、ALINT のルールが複数の ALINT-PRO ルールにマッピングされる場合があります。そのようなルールが ALINT ポリシーに含まれる場合、マッピングされた全ての ALINT-PRO ルールが変換されたポリシーに追加されます。

以下は変換例です。

22. ALINT デザインのルールチェック

図 23. ALINT-PRO プロジェクトのポリシー

パラメータのインポート

ルールはパラメータ値の定義と合わせて、ALINT から ALINT-PRO へインポートされますが、明確にすべき点がいくつかあります。

デフォルト設定の ALINT ルールは、プラグインファイルで提供されるデフォルト設定の ALINT-PRO ルールとしてインポートされます。ALINT ルールがカスタム設定を含む場合、カスタム設定の ALINT-PRO ルールとしてインポートされます。

図 24. ALINT STARC_VHDL.1.1.3.3 ルールのカスタム設定

図 25. ALINT-PRO STARC_NETLIST.1.1.3.3 ルールのカスタム設定

パラメータにはマッピングが存在しないものがあります。ALINT のパラメータをサポートしていない場合や、ルールチェック方法が大幅に変更になった場合などです。マッピングが存在しない場合は、パラメータの値は無視されて次のようなワーニングが通知されます。

# CONV-1121: Warning: The 'LIB_LIST' parameter of the 'STARC_VHDL.1.1.1.10' rule configuration cannot be imported. The checker verifies only names of cells from ASIC libraries installed with ALINT-PRO.

無視されたパラメータが設計上必要であれば、Aldec Support にお知らせください。

ALINTの Verilog と VHDLルールが ALINT-PRO ネットリストルールにマッピングされていて、設定が競合している場合、ALINT-PRO はALINTポリシーのパラメータ値を無視してデフォルト設定を使用します。

除外ファイルのインポート

ALINT の除外設定は ALINT-PROではウェイバーと呼ばれます。基本概念は同じで、ウェイバーは特定のコンテキスト (ソースファイル、デザインユニット、インスタンス) を宣言し、1つ以上のルールの出力を無視する必要があります。ALINT とは異なり、ウェイバーは別のファイルを必要とせず、プロジェクト preference 設定の一部になります。

ALINT の除外設定ファイルを ALINT-PRO ウェイバーとしてインポートするには、次の手順に従ってください。

  1. Tools | Import | ALINT Exclusions を選択してウィザードを開きます。

  2. ALINT 除外設定ファイルの名前 (*.alintexclusions) と場所を指定します。

  3. ALINT-PRO プロジェクトファイル名 (*.alintproj) と場所を指定します。

  4. インポートする設定を現在の ALINT-PRO の設定にマージしたくない場合は、Clean project waivers before import をチェックします。

26. Import Exclusions ウィザード

除外設定ファイルをインポートする別の方法は、スクリプトコマンドを使います。

import.alint.exclusions   [-force] [-f ]

下記のサンプルデザインの除外設定ファイルは、次のスクリプトコマンドを使ってインポート可能です。

import.alint.exclusions arch_name_conv_excl.alintexclusions blackjack_mixed.alintproj

除外設定ファイルはインポート時に修正できません。

図 27. インポートされる ALINT除外設定ファイル

図 28. ALINT-PRO ウェイバー設定

インポートが正常終了すると、次のメッセージがコンソールに表示されます。

# CONV-1145: The / exclusions file import SUCCEEDED.

プロジェクト PropertiesLinting | Waivers にて、インポートされたウェイバー設定を確認することができます。project.waiver.list コマンドを使って、ウェイバー設定を表示することが可能です。

まとめ

ALINT から ALINT-PRO への移行は、ワークスペースとデザインを新しい保存フォーマットに変換することから始めます。 ALINT-PRO は有効な変換スクリプトを提供しています。ALINT-PRO は、デザイン構造、preference 設定、リンティングポリシーおよびウェイバーを変換するのに有効なスクリプトを提供しています。リンティングルールやルール設定パラメータの値が ALINT と ALINT-PRO で異なる場合、混乱を避けるために移行に関するワーニングを検討することが重要です。

移行が難しい場合には、アルデックがお手伝いします。移行に関する問題点やご質問は Aldec Support にお問い合わせください。

Ask Us a Question
x

Ask Us a Question

x
Captcha ImageReload Captcha
Incorrect data entered.
Thank you! Your question has been submitted. Please allow 1-3 business days for someone to respond to your question.
Internal error occurred. Your question was not submitted. Please contact us using Feedback form.