形式
禁止語句是過程性語句,因此它只能出現在always語句和initial語句內,其形式如下:
disable task_id;
disable block_id;
其中,task_id是要終止的任務,block_id是要終止的語句塊。
如果disable語句用於終止語句塊,那么disable語句執行後,將繼續執行語句塊後面的語句。
禁止語句塊
一個語句塊的代碼片段,通過disable語句可以禁止語句塊:
這是一個begin—end語句塊,共有4條語句,但是在執行完前兩條語句後這個語句塊就被disable禁止了,所以語句3和語句4從未執行。在禁止語句被執行後,將執行這個語句塊後面的語句,即語句5。
如果disable語句用於終止任務,那么disable語句執行後,將繼續任務調用語句後面的語句。
禁止任務
一個任務的代碼片段,通過disable語句可以禁止任務:
當disable語句執行時,任務被禁止,即語句7永遠不會被執行。然後,緊跟在任務調用語句之後的語句9被執行。
建議在任務定義中最好不要使用禁止語句,尤其是當任務具有一定的返回值時更是如此。這是因為當任務禁止時,其輸出和輸入參數值是不確定的,返回的就是一個不確定的值。如果必須在任務中這樣做,一種比較穩妥的方法是在任務中禁止順序語句塊。
順序語句塊
一個任務的代碼片段,disable語句禁止任務內的順序語句塊。
當禁止語句開始執行時,順序程式塊LOCAL_BLK的執行被終止;語句11將不會被執行。由於這是任務中的惟一語句,因此間接地實現了任務的終止,此時輸出Count的值為10。如果禁止語句被替換為:
disable Example;
那么禁止語句的執行會直接終止任務,導致其輸出Count的值為不確定值。