Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

SystemVerilog Transaction Recording

Verification Engineerの戯言

Verilog HDLの対するTransaction Recordingについては、Verilog HDL Transaction Recordingに書きましたが、
今回はSystemVerilogのTransation Recordingです。

Mentorが提唱するTransaction Recording, Modeling and Extensions for SystemVerilogです。
この記事によると、Verilog HDLと同様にPLIを使って、次のようなシステムタスクと関数を定義しています。

    stream = $create_transaction_stream( string streamName, string streamKind )

    transaction = $begin_transaction( handle stream, string transactionName 
                                      [,time beginTime, handle parentTransaction] )

    $end_transaction( handle transaction [, time endTime] )

    $free_transaction( handle transaction )
 
    $add_attribute( handle transaction, object attributeValue [, string attributeName] )

    $add_relation( handle sourceTransaction, handle targetTransaction, 
                   string relationshipName )

Verilog HDLとの大きな違いは、SystemVerilogで導入された引数や戻り値にstring、handle、objectを使っているところです。

でも

後半のAppendixでは、戻り値をhandle型の変数ではなく、
integer型の変数(cpu0_stream、transaction_handle)で受けていたり、HANDLEという型がでてきます。

ルール違反です

一貫性が無いのは、いけません。

P.S
今日、アクセスが多いのですが、どうしてなのでしょうか?

検証、Verification、SystemVerilog