インテル® Quartus® Primeプロ・エディション・ユーザーガイド: デバッグツール

ID 683819
日付 9/30/2019
Public
ドキュメント目次

7.8.3. SLD Service

SLD Serviceでは、SLDノードの命令およびデータレジスターに値をシフトし、前の値をキャプチャします。SLDノードと通信する場合は、まず開始したサービスのノードへの排他的アクセスを取得します。

SLD Service

set timeout_in_ms 1000
set lock_failed [sld_lock $sld_service_path $timeout_in_ms]

このコードでは、選択したSLDノードのロックを試みます。SLDノードが既にロックされている場合、 sld_lock は指定されたタイムアウトまで待機します。プロシージャーによってゼロ以外の値が返されていることを処理前に確認します。次のとおり、命令レジスターを設定し、以前のものを次のとおりキャプチャします。

if {$lock_failed} {
    return
}
set instr 7
set delay_us 1000
set capture [sld_access_ir $sld_service_path $instr $delay_us]

1000マイクロ秒の遅延によって、次のSLDコマンドの実行が少なくとも1000マイクロ秒後に実行されることが保証されます。データ・レジスター・アクセスの動作も同様です。

set data_bit_length 32
set delay_us 1000
set data_bytes [list 0xEF 0xBE 0xAD 0xDE]
set capture [sld_access_dr $sld_service_path $data_bit_length $delay_us \
$data_bytes]

シフトカウントの指定はビットですが、データ内容の指定はバイトのリストです。キャプチャの戻り値もバイトのリストです。SLDサービス終了後は、必ずSLDノードのロックを解除します。

sld_unlock $sld_service_path