|
A node, which is declared with a Node Declaration in the Variable Section, can be used to hold the value of an intermediate expression.
Node Declarations are especially useful when a Boolean expression is used repeatedly. The Boolean expression can be replaced with a descriptive node name, which is easier to read.
The boole2.tdf file shown below contains the same logic as boole1.tdf (shown in Implementing Boolean Expressions & Equations), but has only one output.
SUBDESIGN boole2 ( a0, a1, b : INPUT; out : OUTPUT; ) VARIABLE a_equals_2 : NODE; BEGIN a_equals_2 = a1 & !a0; out = a_equals_2 # b; END;
This file declares the node a_equals_2
and assigns the value of the expression a1 & !a0
to it. Using nodes can save device resources when the node is used in several expressions.
Both ordinary nodes (NODE
keyword) and tri-state nodes (TRI_STATE_NODE
keyword) can be used. NODE
and TRI_STATE_NODE
differ in that multiple assignments to them yield different results:
Multiple assignments to nodes of type NODE
tie the signals together by wired-AND
or wired-OR
functions. The default values for variables declared in Defaults Statements determine the behavior: a VCC
default produces a wired-AND
function; a GND
default produces a wired-OR
function. If a variable does not have a default value, a wired-OR
function is used to tie the signals together.
Multiple assignments to a TRI_STATE_NODE
tie the signals to the same node.
If only one variable is assigned to a TRI_STATE_NODE
, it is treated as NODE
.
- PLDWorld - |
|
Created by chm2web html help conversion utility. |