gpt4 book ai didi

vhdl - GHDL 挂起正在运行的测试平台

转载 作者:行者123 更新时间:2023-12-03 08:33:07 24 4
gpt4 key购买 nike

在用 VHDL 测试一个简单的生命游戏实现时,在打印出“测试结束”消息后,空测试台的 GHDL 模拟以 100% 的 CPU 使用率挂起。

代码如下:

----- Package ------------------------------
library ieee;
use ieee.std_logic_1164.all;

package data_types is
type array2D is array (0 to 10, 0 to 10) of std_logic;
end data_types;


----- Main Code ----------------------------
library ieee;
use ieee.std_logic_1164.all;
use work.data_types.all;

entity de0 is
port (matrix : inout array2D);
end de0;


architecture life of de0 is

-- Return the integer value of a cell, treating all out of bounds as 0
function cellValue (matrix : array2D; x, y : integer) return integer is
begin
if (y < 0 or y > matrix'high(1) or x < 0 or x > matrix'high(2) or matrix(y, x) = '0') then
return 0;
else
return 1;
end if;
end cellValue;

begin

-- Iterate over all cells
row: for y in matrix'range(1) generate
column: for x in matrix'range(2) generate

process

variable neighbours : integer := cellValue(matrix, x - 1, y - 1) +
cellValue(matrix, x - 1, y) +
cellValue(matrix, x - 1, y + 1) +
cellValue(matrix, x, y - 1) +
cellValue(matrix, x, y + 1) +
cellValue(matrix, x + 1, y - 1) +
cellValue(matrix, x + 1, y) +
cellValue(matrix, x + 1, y + 1);

begin

-- Update the cell value according to the game of life rules
if (neighbours = 2 or neighbours = 3) then
matrix(y, x) <= '1';
else
matrix(y, x) <= '0';
end if;

end process;

end generate;
end generate;

end life;

还有测试台:

library ieee;
use ieee.std_logic_1164.all;
use work.data_types.all;

entity life_tb is
end life_tb;

architecture behaviour of life_tb is
component life
port (matrix : inout array2D);
end component;

for test: life use entity work.de0;
signal matrix : array2D;

begin

test: life port map (matrix => matrix);

process
begin
assert false
report "End of test" severity note;

wait;

end process;
end behaviour;

最佳答案

de0生命中的进程既没有敏感列表,也没有等待语句,所以这个进程会一直运行下去,只是在同一仿真时间无限循环执行进程中的语句,因此仿真不会停下来。

您可以通过添加敏感度列表 (matrix) 或在某些条件下等待来解决此问题。

关于vhdl - GHDL 挂起正在运行的测试平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com