スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

TLM2.0 streaming widthの使い方?

TLM2.0 にて、tlm_generic_payload にてdata_lengthとの関わりがイマイチ理解できなかったので、調べてみました。
ただ、この機能自体はtarget側で検査されるので、一番無難なのは
streaming_width = data_length
です。

理解のヒントになったのが、「Tracing TLM 2.0 Activity In An ESL Design - Part I」です。

まず、data_length はデータ長とトランザクション転送回数を示すものになります。例えば、ソケットのBUSWIDTH=32(bit), data_length=8(byte)場合にはトランザクション転送回数は2回ということになり
delay = 2*target_latency
となります。

では、streaming_widthはというと固まったデータの長さになります。
そもそも、data_ptrはchar型の配列ポインタです。
なので、配列[0]=1バイトということになります。
なので、data_length=4(byte)場合にstreaming_width=2(byte:half-word)の転送だった場合には
data[0] - memory[0][7:0]
data[1] - memory[0][15:8]
data[2] - memory[1][7:0]
data[3] - memory[2][15:8]
※リトルエンディアンの場合
となるのではないでしょうか?
上記 Cadenceのブログでは記載がありませんが、こんな感じなのかなと理解しました。しかし、TLM2.0 Exampleのtargetソースでは、
if (gp.get_streaming_width() != gp.get_data_length()) 
{
gp.set_response_status(tlm::TLM_BURST_ERROR_RESPONSE);
}
と書かれているやつもあり、やはり最初の
streaming_width = data_length
で設定するのが無難そうです。
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。