问题描述
我能够在 macos 上的 GHDL 中成功分析和运行一个简单的 VHDL 计数器,但是在启动 GTKW 时,使用泛型会导致问题。
错误信息是
无法阻止应用程序(GetProcesspID() 返回 184467095516)
任何想法这意味着什么或导致此错误的原因是什么? (谷歌搜索找不到任何东西)
好像连接到这条线
signal count: unsigned (G_NBITS-1 downto 0)
来自这个代码段
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity counter_simple is
generic(
G_NBITS : integer range 1 to 32 := 3
);
port(
clk : in std_logic;
reset_n : in std_logic;
--count_out : out std_logic_vector(G_NBITS-1 downto 0)
count_out : out std_logic_vector(2 downto 0)
);
end;
architecture rtl of counter_simple is
--signal count: unsigned (G_NBITS-1 downto 0)
-- ABOVE LINE CRASHES gtkwave
-- Unable to block on application (GetProcesspID() returned 184467095516)
-- so instead:
signal count: unsigned (2 downto 0);
begin
counting : process (clk,reset_n)
begin
if (reset_n = '0') then
count <= (others => '0');
elsif rising_edge(clk) then
count <= count +1;
end if;
end process;
--count_out <= std_logic_vector(count(G_NBITS-1 downto 0));
count_out <= std_logic_vector(count(2 downto 0));
end rtl;
在测试台(在这个计数器周围)打印带有报告的计数器在两种情况下都可以,即在两种情况下计数器都运行 0..7。
所以模拟运行了,但 .ghw 文件中似乎有一些令人反感的东西。
解决方法
我对这里的答案不太走运,但我阅读了 GHDL 输出的 .ghw 文件,它是 GTKW 可读的自定义格式。
我尝试了另一种格式,vcd,似乎没问题:
代替默认值
ghdl -r counter_simple_tb --stop-time=10ns --wave=counter_simple.ghw
使用 VCD
ghdl -r counter_simple_tb --stop-time=10ns --vcd=counter_simple.vcd
(注意:你必须使用--vcd 开关。单独的文件扩展名是不够的)
作为一种解决方法,这样做是可行的。
希望这也能帮助其他人也坚持这一点。
当然,所有这些都可能在此期间得到修复,因为 GHDL 的 macos 二进制文件(v 0.29,32 位)比最新的(v 1.0)有很多版本
$ ghdl -v
GHDL 0.29 (20100109) [Sokcho edition]
我在 64 位机器上运行它。