パスワードを忘れた? アカウント作成
43452 journal

gm300の日記: 「system verilog アサーション・ハンドブック」読む。

日記 by gm300
かなり読み進む。うーむ。こりゃいい。
C++で、ライブラリっぽいものを書くときに思うのは、正当性の検証。書いたそのときは当然考える。考えるし、なんらかの形で正当性を検証する。しかし、デバッガを使ったり、ダンプ頼みな方法はメンテに弱い。その結果オイラが取りくるんでいるのがBIST。classにtestみたいな関数が組み込んであって、正当性を動的に検証する。assertだとその瞬間だけを検証するのが普通だが、もっと広く検証する。リファクタなりなんなりして修正したときには、時々test()を実行する。

SVAもそんな感じに近い。(なんて表現)ある時間の状態と、他の時間の状態の関係をテンポラルとかシークエンスと呼ぶ表現で記述していく。moduleの中に書くこともできるので、moduleが階層の下に埋もれても、複数回呼ばれても、大丈夫なようにポータブルに書くこともできる。テンポラルって一時的=テンポラリの仲間?と思った人はちゃんと調べたほうがいい。時間には関連しているが、全く違う風に使う。例えば、@(posedge clk) a|=> ( b ##2 c[*3:5] )は、「a がon になっているサイクルがあったとして、次のサイクルではbがonでその2サイクル後にはcがonである状態が3から5サイクルなくてはいけない。サイクルの計算にはclkのposedgeを使う」と読める。

しかし、この本、間違いが結構ある。例えば、11ページには、「3.10.3参照」とあるが、3には2までしかない。これは5.12.3の間違いだ。どうやったらそんな風に間違うのか。どこかにあった動作メモリ。たぶんこれは動作モデル、ビヘイビアの間違いだ。似てなくも無い。そのほかにも日本語でみて動詞の選択が適切ではないので、その文だけを読むと意味がない文もある。240ページの11の参照はどこなのか、知りたいがまだ見つかっていない。242ページ真ん中あたりのiという参照もだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

読み込み中...