05.07.2013 Views

Xilinx Synthesis Technology User Guide

Xilinx Synthesis Technology User Guide

Xilinx Synthesis Technology User Guide

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Blocking Versus Non-Blocking Procedural<br />

Assignments<br />

Verilog Language Support<br />

The # and @ time control statements delay execution of the statement<br />

following them until the specified event is evaluated as true. Use of<br />

blocking and non-blocking procedural assignments have time control<br />

built into their respective assignment statement.<br />

The # delay is ignored for synthesis.<br />

The syntax for a blocking procedural assignment is shown in the<br />

following example:<br />

reg a;<br />

a = #10 (b | c);<br />

or<br />

if (in1) out = 1’b0;<br />

else out = in2;<br />

As the name implies, these types of assignments block the current<br />

process from continuing to execute additional statements at the same<br />

time. These should mainly be used in simulation.<br />

Non-blocking assignments, on the other hand, evaluate the<br />

expression when the statement executes, but allow other statements<br />

in the same process to execute as well at the same time. The variable<br />

change only occurs after the specified delay.<br />

The syntax for a non-blocking procedural assignment is as follows:<br />

variable

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!