在“表示式”(expression)中,"<="作為邏輯比較運算子;在“語句”(statement)中,"<="作為非阻塞賦值的一部分。
verilog中,一個語法結構不可能同時允許“表示式”和“語句”,如果某處可以出現表示式,那麼就不允許出現語句;如果某處可以出現語句,那麼一個單獨的表示式就不能出現在那裡。如果預期出現的是表示式,那麼其中的<=就解釋成邏輯比較運算子;如果預期出現的是語句,那麼其中的<=就解釋成非阻塞賦值的一部分,整個語句就是非阻塞賦值。
例如,條件語句(conditionalstatement)的語法是:
if?(?expression?)?statement_or_null?[?else?statement_or_null?](方括號內為可選部分),if後面的括號中就只允許表示式(expression),而else後面就只允許語句,或者留空(statement_or_null)。如果if後面的括號裡(預期出現的是表示式)填的是a<=1,那麼這裡的<=就解釋成邏輯比較運算子小於等於;而如果else後面(預期出現的是語句)出現b<=1,那麼這裡的<=就是非阻塞賦值的一部分。
極端情況:
if?(a?<=?1)
????b?<=?1;
else
????b?<=?2;括號中的是表示式,而其餘的地方都是賦值
在“表示式”(expression)中,"<="作為邏輯比較運算子;在“語句”(statement)中,"<="作為非阻塞賦值的一部分。
verilog中,一個語法結構不可能同時允許“表示式”和“語句”,如果某處可以出現表示式,那麼就不允許出現語句;如果某處可以出現語句,那麼一個單獨的表示式就不能出現在那裡。如果預期出現的是表示式,那麼其中的<=就解釋成邏輯比較運算子;如果預期出現的是語句,那麼其中的<=就解釋成非阻塞賦值的一部分,整個語句就是非阻塞賦值。
例如,條件語句(conditionalstatement)的語法是:
if?(?expression?)?statement_or_null?[?else?statement_or_null?](方括號內為可選部分),if後面的括號中就只允許表示式(expression),而else後面就只允許語句,或者留空(statement_or_null)。如果if後面的括號裡(預期出現的是表示式)填的是a<=1,那麼這裡的<=就解釋成邏輯比較運算子小於等於;而如果else後面(預期出現的是語句)出現b<=1,那麼這裡的<=就是非阻塞賦值的一部分。
極端情況:
if?(a?<=?1)
????b?<=?1;
else
????b?<=?2;括號中的是表示式,而其餘的地方都是賦值