Blocking assignment ( = ) in VITO


Blocking assignment (a=b;) is allowed only in non-implicit style always blocks and in functions. For example, should the design require combinational logic separate from the implicit style block, such as an AND gate, a non-implicit style block (having @ immediately after always) can be defined:

       always @(b or c)
         a = b & c;
    
Another place where this could be useful is when additional flip flops, separate from the implicit style block, are required, such as when an asynchronous signal (async) needs to be synchronized (sync) with sysclk:
       always @(posedge sysclk)
         begin
           sync = async;
         end
    

VITO prohibits blocking assignment in implicit style blocks. For example, the following is illegal:

       always
         begin
           @(posedge sysclk)
             sync = async;
         end
    
despite the fact it is identical to the previous block.