if( )の条件式は1ビットにする

[] [] []


if( )の条件式は1ビットにする」

if(a)は素直に考えると

  a1(true)ならば成立

だが、文法上は

 a0(ゼロ)でなければ成立 (ただしxzならば不成立)

というルールである。

a1ビットならば同じ意味になるが、多ビットならば

 a2-1でも成立

とやや直観に反する意味になる。したがってif( )の条件式は必ず1ビットにした方がよい。

reg[1:0] a;

× if(a)       // a1ビットと勘違いしているのか、意図的なのか曖昧

if(a!=2'd0) // aを多ビットと認識していることが明確でよい

reg b;

if(b),if(~b) // 1ビット変数のときif(b==1'b1)と書くのはやりすぎ

とはいえ、当初は1ビットだった変数aを、シフトレジスタ reg[1:0] a; に直したのにif(a)を直し忘れることはよくあるので、リントツールでチェックした方がよい。


[] [] []