求助:VHDL package 中定义信号,仿真出错
时间:10-02
整理:3721RD
点击:
在package中定义全局信号a然后在子模块中对a赋值,在tb中调用a信号,仿真观察波形异常。
若在tb中对a赋值,在tb中调用a信号,则显示波形正常。
特来请教各位大侠。
package test is
signal a : std_logic;
end package;
entity module1 is
end entity;
architecture rtl of module1 is
signal b: std_logic;
begin
a <= b;
end rtl;
entity tb is
end entity;
architecture rtl of tb is
signal c : std_logic;
begin
c <= a;
end rtl;
若在tb中对a赋值,在tb中调用a信号,则显示波形正常。
特来请教各位大侠。
package test is
signal a : std_logic;
end package;
entity module1 is
end entity;
architecture rtl of module1 is
signal b: std_logic;
begin
a <= b;
end rtl;
entity tb is
end entity;
architecture rtl of tb is
signal c : std_logic;
begin
c <= a;
end rtl;
找到原因了,我的设计中同样的module1有3个,因此导致多值驱动,输出异常。
我的本意是在仿真时能够查看子模块中变量,看来多次调用同一个模块的设计这种方式是行不通的。
VHDL中也没有像VERILOG一样的层级调用方式,只能用最土的映射到端口来查看子模块内部信号啊。
仿真时是可以进入到内部模块看每一个值的变化的啊,不需要把相应信号连接到TOP上再来观察,对VHDL与VERILOG都一样。另外,VERILOG可以如你所说,直接和TB上去调用给定底层路径的变量的值,VHDL里面没用过。
功能仿真是可以查看内部信号的,门级仿真信号被打乱了,我用的lattice+modelsim,有时候甚至找不到原信号名。
