2016-05-19 9 views
1

のための$のリアルタイム表示、私は以下のタイムスケールの設定のための$リアルタイムを印刷しようとしていた。のSystemVerilog:異なる時間スケールの精度

`timescale 1ns/10ps 
initial begin   
    #10; 
    $display(" %0t",$realtime); 
    $display($realtime); 
end 

プリントを取得する結果は次のとおりです。

1000 
10 

私はちょうど午前リアルタイムで印刷する際に書式指定子を使用する際に、何が違うのでしょうか?私が間違っているなら、私を訂正してください。私はそれが時間の精度のために1000(10 * 10ps = 1000 ns)を印刷していると信じています。しかし、その違いの理由は何ですか?

答えて

1

%tフォーマット指定子を使用した場合、システムタスクは出力のフォーマットを設定するために使用されます。一度だけ呼び出される必要があります(複数回呼び出された場合は、前の呼び出しが前の呼び出しを上書きします)。これは4つのパラメータを有する:それらは:

$timeformat(<units>, <precision>, <suffix>, minimum field width>); 

units    : log base 10 of the unit (eg -9 is ns) 
precision   : the number of decimal places 
suffix    : a string (eg "ns") 
minimum field width : the minimum field width 

$display(" %0t",$realtime);$timeformatシステムタスクによってセットアップ時間形式に従って時刻を印刷しています。システムタスク$timeformatを呼び出していないので、デフォルト値が使用されます。彼らは以下のとおりです。値は10進整数として$realtimeシステム関数から返さ

units    : the simulation precision (10ps in your case) 
precision   : 0 
suffix    : null string 
minimum field width : 20 

$display($realtime);ディスプレイ - あなたのケースで10

+1

'$ timeformat'は複数回呼び出すことができます。最後に実行されたものが使用されます。 – toolic

+1

@toolicありがとうございます - それはiitを置くのに良い方法です。 –

関連する問題