The std logic package has some values defined as follows,
U unitialized
X forcing unknown
1 forcing 1
0 forcing 0
L weak 0
H Weak 1
Now, does a assign like
a:= 1
mean that it has been forced a value of 1. Is that correct , Does it
mean it will hold , until another, assign happens.
From your syntax, "a" must be an integer type variable. 1 is a number
(integer). '1' is logic high in std_logic system.
VHDL variables operate just like variables in other languages;
assignments to them are in force until another assignment to the same
variable is executed.
If on the other hand, you meant to say:
a <= '1';
then we have a signal assignment.
If the assignment appears outside of a process or subprogram, then it
is a concurrent assignment, and creates a driver, with a constant
value of '1', continually driving your signal.
If the assignment appears inside a process, then it is a sequential
assignment. Only one driver is created for that process, regardless of
how many assignments are made within the process. Only the last
executed assignment prior to the process suspending is used. Updates
take effect when the process suspends (i.e. waiting for another event,
etc.).
If multiple processes and/or concurrent assignment statements drive
the same signal, the effective value for the signal must be resolved
from all of the drivers. There are no "forcing" values in the
std_logic system: drivers with '1' and '0' on the same signal will
result in an 'X', etc.
Andy