2

我能够在 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 文件中似乎有一些令人反感的东西。

4

1 回答 1

0

我在这里没有太多的答案,但我确实阅读了 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(v 0.29,32 位)的 macos 二进制文件比最新版本(v 1.0)落后了很多版本

$ ghdl -v
GHDL 0.29 (20100109) [Sokcho edition]

我在 64 位机器上运行它。

于 2021-06-14T00:37:53.633 回答