Tessent Shell環境では、コンテキスト(**context**)とシステムモード(**system mode**)を設定することで実行するタスクをツールに指示します。ツールは設計データモデル(**design data models**)を使用して関連する設計データを格納します。
1. ツールの起動
LinuxプラットフォームでTessent Shellを起動するコマンドは次の通りです:
$ tessent --interactive
ツール起動後、自動的にsetupモードに入ります。起動プロセス中、スタートアップファイル(ファイル名 *.tessentrc*)と環境変数を読み込みます。デフォルト値以外に、これらにはカスタマイズされたオプションが含まれています。
2. コンテキストとシステムモード
Tessent Shell起動後の主要なタスクの一つは、**コンテキスト(Context)**と**システムモード(System mode)**を設定することです。
**Context**は広範な機能カテゴリを指し、通常は特定のツール、製品、またはライセンス(例:Tessent FastScan)に対応します。各Contextには複数のシステムモードが含まれます。
**System mode**はツールの現在の実行状態を指定します。
コンテキスト
ContextはTessent Shellで実行したいタスクの機能カテゴリを指定します。主に**dft**と**patterns**の2つのカテゴリに分類されます。
Contextを設定するコマンド:
SETUP> initialize_context dft -scan_chains
現在のContextを確認するコマンド:`display_context`
TessentツールのコマンドはContextに関連しています。例えば`initialize_context`コマンドはsetupモードでのみ有効です。Contextを設定する前に、実行できるのは限られたsetupコマンドのみです。これらのコマンドは通常スタートアップファイルに配置されます。
Contextを設定すると、ツールは必要なライセンスを自動的に取得します。`initialize_context`の`-license`オプションを使用してライセンスを明示的に指定することもできます。
システムモード
Tessent Shellのシステムモードはツールの動作状態を定義します。デフォルトのシステムモードはsetupです。利用可能なシステムモードは現在のContextに依存します。
システムモードを切り替えるコマンド:
SETUP> switch_mode insertion
ContextとSystem Modeの組み合わせ
ContextとSystem modeはTessent Shellのタスクフローを暗黙的に決定します。DFT設計ではsetup→analysis→insertionの順に進み、patterns処理ではsetup→analysisの順に進みます。例えば、setupモードでDFT設計を行っている場合、スキャン解析を実行することはできません。
設計レベル
DFT設計時(context dftで作業時)には、実行するタスクの**設計レベル(design level)**を設定する必要があります。
利用可能な設計レベルにはchip、physical block、sub-blockがあり、デフォルト設定はありません。
フラットデザインの場合は常にchipレベルで作業します。階層デザインの場合は、トップレベル(chip)で作業するかphysical blocksまたはsub-blocksで作業するかを区別することが重要です。
設計レベルを設定するコマンド:`configure_design_level`
3. 設計データモデル
Tessent Shellには以下のデータモデルがあります:階層設計データモデル、フラット設計データモデル、ICLデータモデル。
各データモデルにはピンやモジュールなどの1つ以上の**設計オブジェクト(design objects)**が含まれ、各設計オブジェクトはバスIDやビット幅などの属性(attributes)のセットに関連付けられています。
フラット設計データモデル
analysis modeに入る(またはsetup modeを離れる)と、ツールは自動的に階層設計をフラット化し、フラット設計データモデルを使用して設計データを保存します。`generate_flat_model`コマンドを使用してフラットモデルを直接作成することもできます。
フラット設計データモデルは相互に接続された論理ゲート(gates)で構成されます。gateはプリミティブモジュールのインスタンスであり、gate_pinオブジェクトはgateインスタンス上のピンを表します。
Gate_pinオブジェクトには一意のインスタンス名はありませんが、互いを区別するための一意のIDがあります。IDの形式は2つの整数をピリオドで区切ったものです。最初の整数はgate IDを表し、2番目の整数はピンインデックスを表します(0が出力ピン、1が最初の入力ピン、など)。しかし、このIDは永続的ではなく、Tessentツールの再起動やネットリストバージョンの更新ごとに変わる可能性があります。したがって、このIDをスクリプトにハードコーディングすることは避けるべきです。
階層設計データモデル
`parse_verilog`などのコマンドで設計をツールにロードすると、Tessent Shellは設計ネットリストをメモリ内の階層設計データモデルに変換します。この設計データは、Tessent shell使用中にメモリ内に保持され、手動で削除するかツールを終了するまで残り続けます。
階層設計データモデルには以下のオブジェクトタイプが含まれます:
- Module - 設計の基本構成要素(Verilogモジュール、Tessentライブラリモデル、または組み込みプリミティブ)
- Instance - モジュールの単一のインスタンス化
- Port - モジュールのinput、output、inoutインターフェース
- Pin - インスタンスのinputまたはoutputインターフェース
- Net - インスタンスのピンを接続する配線
- Virtual_port - ユーザーが追加したプリミティブ入力または出力
`select_active_design`コマンドを使用して設計内のモジュールを現在の設計として指定します。インスタンス、ピン、ネットは現在の設計に対して定義される階層オブジェクトです。
ICLデータモデル
ICL(Instrument Connectivity Language)は**IJTAG**ネットワークを構成する要素と、それらの間の論理的接続(物理的に存在するとは限らない)を記述します。
ICLは階層ネットリスト(Verilogなど)と類似点があり、他のモジュールインスタンスを含む可能性のあるモジュールで構成され、インスタンスのピン間の接続を記述します。ICLは完全なネットリストではありません。接続はポートからポートへのもので、ネットではありません。ICLは抽象的であり、回路の詳細な物理構造を含みません。つまり、ICLはネットワークの動作のみを表現します。
ICLデータモデルはオブジェクトを4つのデータ型のいずれかとして定義します:icl_module、icl_instance、icl_port、icl_pin。
`select_active_design`コマンドで現在の設計を設定すると、ICLデータモデルは現在の設計から下方向に詳細化され、icl_moduleの各インスタンスにicl_instanceオブジェクトを、icl_instancesに関連するモジュールの各ポートにicl_pinオブジェクトを作成します。icl_instanceとicl_pinオブジェクトは階層オブジェクトであり、現在の設計が設定された後にのみ存在します。
オブジェクト属性
設計データモデルの各設計オブジェクトには、そのオブジェクトに添付された特性リストがあり、属性(attributes)と呼ばれます。例えば、各ピンには階層名と親インスタンスを指定する属性があります。
定義済み属性とユーザー定義属性があります。定義済み属性はモジュール名やピン方向など、ツールが認識している情報へのアクセスを提供します。
新しいユーザー定義属性を作成するプロセスは登録と呼ばれます。ユーザー定義属性とは異なり、定義済み属性は登録を必要としません。
新しいユーザー定義属性を使用する前に、その属性を登録しデフォルト値を指定する必要があります。後でデフォルト値を変更する場合は、属性を登録解除してから再登録する必要があります。
任意の属性をクエリでき、任意のカスタム属性を変更できます。ほとんどの定義済み属性は読み取り専用ですが、一部は読み書き可能です。
属性とその値に基づいてオブジェクトをフィルタリングやソートできます。これらの操作を実行するコマンドには`apply_filter`や`order_collection`などがあります。
"fetch_"で始まるコマンドはデータモデルからオブジェクトコレクションとモデルの属性を返し、これらの属性を使用して様々な設計オブジェクトの設計イントロスペクションを実行できます。