D
David Binnie
Guest
Hi all,
I'm looking at the difference between signals and variables.
I had always presumed synthesis must turn all variables into signals.
When I run this bit of code:
architecture behv of sig_var is
signal sig_s1: std_logic;
begin
proc1: process(d1,d2,d3)
variable var_s1: std_logic;
begin
var_s1 := d1 and d2;
res1 <= var_s1 xor d3;
end process;
proc2: process(d1,d2,d3)
begin
sig_s1 <= d1 and d2;
res2 <= sig_s1 xor d3;
end process;
end behv;
The output res2 is delayed cf the output res1 as theory would predict.
I didn't think this would synthesise but the Xilinx RTL Viewer
produced the same gate level description for rs1 and res2 but added a box
called Alias
at the output of res1.
What is this Alias box, presumably it does not exist in reality or have
Xilinx invented time travel ?
I'm looking at the difference between signals and variables.
I had always presumed synthesis must turn all variables into signals.
When I run this bit of code:
architecture behv of sig_var is
signal sig_s1: std_logic;
begin
proc1: process(d1,d2,d3)
variable var_s1: std_logic;
begin
var_s1 := d1 and d2;
res1 <= var_s1 xor d3;
end process;
proc2: process(d1,d2,d3)
begin
sig_s1 <= d1 and d2;
res2 <= sig_s1 xor d3;
end process;
end behv;
The output res2 is delayed cf the output res1 as theory would predict.
I didn't think this would synthesise but the Xilinx RTL Viewer
produced the same gate level description for rs1 and res2 but added a box
called Alias
at the output of res1.
What is this Alias box, presumably it does not exist in reality or have
Xilinx invented time travel ?