Verification Engineerの戯言 : SystemVerilogの世界へようこそ
letを使えば、`defineディレクティブの置き換えができます。
`defineディレクティブでは、マクロを定義して後、ずーとそのマクロは定義済みになります。
マクロの定義を止めるには、`undef マクロ名を記述する必要があります。
また、`defineディレクティブの適応範囲を制限することはできません。
(SV-2009では、undefinefallが追加され、`defineディレクティブで定義したものをすべて未定義にします)
`defineディレクティブでは、マクロを定義して後、ずーとそのマクロは定義済みになります。
マクロの定義を止めるには、`undef マクロ名を記述する必要があります。
また、`defineディレクティブの適応範囲を制限することはできません。
(SV-2009では、undefinefallが追加され、`defineディレクティブで定義したものをすべて未定義にします)
letは、ローカルなスコープを持つことができます。
pakage/endpackage内でletで定義したものは、パッケージ内でのみ有効になるという感じです。
pakage/endpackage内でletで定義したものは、パッケージ内でのみ有効になるという感じです。
`defineディレクティブを使うと明らかにマクロだということが分かりますが、
letでは、その名前だけでは関数やタスクとの区別がつかないので注意が必要です。
letでは、その名前だけでは関数やタスクとの区別がつかないので注意が必要です。
検証、Verification、SystemVerilog