[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
あるbit幅の信号から、変数を使い特定のbit幅を選択したい場合の記述。
例えば256bit幅の信号から32bitを選択したいとき。
bit [255:0] b256 ;
bit [255:0] a32 ;
assign a32 = b256[i +:32] ; // 又は[32*(i+1)-1 -:32]
自分は知らなかっただけで、IEEE.1364-2005の5.2.1 Vector bit-select and part-select addressingに詳細があります。
よく以下の様に書いてしまい、コンパイルエラーになりますが、上記の書き方で回避できます。
assign a32 = b256[32*(i+1)-1:32*i];
上記を知らなくて、下のシフトを使っていました。
assign a32 = b256>>(32*n);
![]() |
パラメータ付きのmoduleにbindするときに戸惑ったことがあったのでそのメモ
通常のbindは以下の用な記述
bind cpu fpu_props fpu_rules_1(a,b,c);
Where:
SVAで throughout の使い方がよくわからなかったのでメモ。ちなみにLanguage Reference Manual(LRM)でintersect、throughoutを調べてgoogle翻訳すると以下の通り。
typedef enum {
Task00
,Task01
,Task02
} SemItem_e ;
semaphore SemTask[SemItem_e] ;
semaphoreはnewが必要でenumの要素分newの記述が必要になるが、 上手く記述すればenumの要素数を増やしてもnewの記述を変えずに済む方法があるとか。