A
Alex
Guest
Gentlemen,
I got stuck with what seems to be a simple problem of multiple driving.
I have to processes that update a common signal (it is for pure behaviour
simulations).
However during simulations in ModelSim 5.8SE the signal starts being
updated only after second process is activated
(see the example code below). Obviously if I split these processes into
different design units that will help, but what
am I missing to make it work (or simulated) properly in the way, as
follows???
ARCHITECTURE beh OF temp_test IS
signal x: std_logic;
BEGIN
set: process(s,x) is
begin
if s='1' then
x<='1' after 1 ps;
elsif (s='0' and x'event ) then
x<='Z' after 1 ps;
elsif (s='0' and x='X' ) then
x<='Z' after 1 ps;
end if;
end process;
reset: process(r,x) is
begin
if r='1' then
x<='0' after 1 ps;
elsif (r='0' and x'event ) then
x<='Z' after 1 ps;
elsif (r='0' and x='X' ) then
x<='Z' after 1 ps;
end if;
end process;
out<=x;
END ARCHITECTURE beh;
Thank you for help.
--
Alex
I got stuck with what seems to be a simple problem of multiple driving.
I have to processes that update a common signal (it is for pure behaviour
simulations).
However during simulations in ModelSim 5.8SE the signal starts being
updated only after second process is activated
(see the example code below). Obviously if I split these processes into
different design units that will help, but what
am I missing to make it work (or simulated) properly in the way, as
follows???
ARCHITECTURE beh OF temp_test IS
signal x: std_logic;
BEGIN
set: process(s,x) is
begin
if s='1' then
x<='1' after 1 ps;
elsif (s='0' and x'event ) then
x<='Z' after 1 ps;
elsif (s='0' and x='X' ) then
x<='Z' after 1 ps;
end if;
end process;
reset: process(r,x) is
begin
if r='1' then
x<='0' after 1 ps;
elsif (r='0' and x'event ) then
x<='Z' after 1 ps;
elsif (r='0' and x='X' ) then
x<='Z' after 1 ps;
end if;
end process;
out<=x;
END ARCHITECTURE beh;
Thank you for help.
--
Alex