当我从不同的进程分配记录的不同成员时,会发生一些奇怪的事情。这是什么原因?
type t_collection is record
A : std_logic;
B : std_logic;
end record;
signal collection : t_collection ;
begin
collection.A <= '1';
process(Clk) is
begin
if rising_edge(Clk) then
collection.B <= '1';
end if;
end process;
在模拟器中,collection.A解析为&#39; X&#39;和collection.B解析为&#39; 1&#39;。
答案 0 :(得分:0)
我同意@ fru1bat,除非在“collection.B”的赋值中有更多代码,看起来您的模拟器中可能有错误。
对于Testbench应用程序,您可以为信号提供所有“Z”的初始值:
signal collection : t_collection := (A => 'Z', B => 'Z') ;
对于RTL,我怀疑综合工具会喜欢这个。