Vhdl 如果进程中的语句数为偶数,则适用于Windows的GHDL 0.29将挂起
我正在为Windows使用GHDL 0.29 下面的程序打印“你好,世界!” 以下程序挂起,不打印任何内容Vhdl 如果进程中的语句数为偶数,则适用于Windows的GHDL 0.29将挂起,vhdl,ghdl,Vhdl,Ghdl,我正在为Windows使用GHDL 0.29 下面的程序打印“你好,世界!” 以下程序挂起,不打印任何内容 use std.textio.all; entity hello_world is end hello_world; architecture behaviour of hello_world is begin process variable l : line; begin assert false report "Foo" se
use std.textio.all;
entity hello_world is
end hello_world;
architecture behaviour of hello_world is
begin
process
variable l : line;
begin
assert false report "Foo" severity note;
write (l, String'("Hello world!"));
writeline (output, l);
wait;
end process;
end behaviour;
下面的程序输出两个断言,然后输出“helloworld!”消息
我尝试增加断言的数量,发现当断言数量为奇数时,模拟将挂起。他们在哪里都不重要。以下挂起:
assert false report "Foo" severity note;
assert false report "bar" severity note;
assert false report "zoz" severity note;
assert false report "lol" severity note;
assert false report "mok" severity note;
assert false report "antidisestablishmentarianism" severity note;
write (l, String'("Hello world!"));
writeline (output, l);
wait;
assert false report "asd" severity note;
以下内容将所有内容打印到“反伊斯兰主义”断言中:
编辑
这个问题更为普遍,似乎与进程中的语句数量是奇数还是偶数有关。下面反复打印“你好,世界!你好,月亮!”:
-- Hello world program.
use std.textio.all; -- Imports the standard textio package.
-- Defines a design entity, without any ports.
entity hello_world is
end hello_world;
architecture behaviour of hello_world is
begin
process
variable l : line;
begin
write (l, String'("Hello world!"));
write (l, String'("Hello moon!"));
writeline (output, l);
end process;
end behaviour;
而以下内容不会打印任何内容并挂起:
-- Hello world program.
use std.textio.all; -- Imports the standard textio package.
-- Defines a design entity, without any ports.
entity hello_world is
end hello_world;
architecture behaviour of hello_world is
begin
process
variable l : line;
begin
write (l, String'("Hello world!"));
writeline (output, l);
end process;
end behaviour;
编辑(这可能会节省您一些时间)
上述奇怪的行为在Linux下不会发生。显然,GHDL的两个版本中有一个存在严重缺陷,我强烈怀疑它是Windows版本。我将提交一份错误报告。我仍然对这种行为的不同感兴趣
编辑(我也尝试了0.25版)
对于Windows版本0.25,我遇到以下错误:
C:\Users\AjejeBrazorf\Documents\Programming\GHDL\Example>ghdl -a 1.vhdl
1.vhdl:1:10: file textio.v93 has changed and must be reanalysed
ghdl.exe是与GTKWave bundle()打包在一起的文件。我见过Windows ghdl 0.29.x版本
您的示例使用GHDL 0.25或
编辑:注意,以下捆绑安装程序似乎存在VHDL库时间戳问题
,我看到了Windows GHDL 0.29.x版本
您的示例使用GHDL 0.25或
编辑:注意,以下捆绑安装程序似乎存在VHDL库时间戳问题
,来自(很抱歉单独给出答案而不是评论,我没有堆栈溢出帐户,这是我发现作为来宾发布的唯一选项)
对于Windows版本0.25,我遇到以下错误:
C:\Users\AjejeBrazorf\Documents\Programming\GHDL\Example>ghdl -a 1.vhdl
1.vhdl:1:10: file textio.v93 has changed and must be reanalysed
C:\Users\ajebrazorf\Documents\Programming\GHDL\Example>GHDL-a
1.vhdl
1.vhdl:1:10:文件textio.v93已更改,必须重新分析
编辑:使用库重新分析信息更新
我可以使用GHDL网站上的GHDL 0.25链接运行您的“挂起”示例,而不会出现此类库错误
因此,我尝试在另一个XP设备上安装GHDL+GTK捆绑包,我看到了与您相同的库错误
问题是GHDL库时间戳与库std-obj93.cf文件不同步,可能是安装程序创建时的时间戳问题
以下是如何以VHDL-93 textio为例手动重新分析GHDL库:
C:\>cd "\Program Files\FPGALibre\GHDL_GTKWave\lib\v93\std"
C:\Program Files\FPGALibre\GHDL_GTKWave\lib\v93\std>ghdl -a --std=93 --bootstrap --work=std textio.v93
C:\Program Files\FPGALibre\GHDL_GTKWave\lib\v93\std>ghdl -a --std=93 --bootstrap --work=std textio_body.v93
执行这些步骤后,我可以使用GHDL_0.25+GTK包运行您的“挂起”示例:
>ghdl -a hello_world.vhd
>ghdl -r hello_world
hello_world.vhd:11:7:@0ms:(assertion note): Foo
Hello world!
它在新安装的0.29.1 for Windows上运行良好,谢谢。 有趣的是,我在5月10日安装了GHDL;现在我 想知道:我是从哪里得到安装程序的 GHDL.free.fr上的“新建”GHDL下载wiki页面有一个指向您提到的“最新”Windows安装程序的过时链接 David和我都直接指向隐藏的“旧”GHDL下载页面 另见: 请注意,我提供的0.25链接在两个GHDL下载页面上都不可见
它实际上在0.29.1上运行良好 请注意,如果您使用解析信号执行任何操作,Windows GHDL 0.29.1也会崩溃 对于Windows,我建议运行0.25或补丁的0.29.1,如前面的链接所述。(很抱歉单独给出答案而不是评论,我没有堆栈溢出帐户,这是我发现作为来宾发布的唯一选项) 对于Windows版本0.25,我遇到以下错误:
C:\Users\AjejeBrazorf\Documents\Programming\GHDL\Example>ghdl -a 1.vhdl
1.vhdl:1:10: file textio.v93 has changed and must be reanalysed
C:\Users\ajebrazorf\Documents\Programming\GHDL\Example>GHDL-a
1.vhdl
1.vhdl:1:10:文件textio.v93已更改,必须重新分析
编辑:使用库重新分析信息更新
我可以使用GHDL网站上的GHDL 0.25链接运行您的“挂起”示例,而不会出现此类库错误
因此,我尝试在另一个XP设备上安装GHDL+GTK捆绑包,我看到了与您相同的库错误
问题是GHDL库时间戳与库std-obj93.cf文件不同步,可能是安装程序创建时的时间戳问题
以下是如何以VHDL-93 textio为例手动重新分析GHDL库:
C:\>cd "\Program Files\FPGALibre\GHDL_GTKWave\lib\v93\std"
C:\Program Files\FPGALibre\GHDL_GTKWave\lib\v93\std>ghdl -a --std=93 --bootstrap --work=std textio.v93
C:\Program Files\FPGALibre\GHDL_GTKWave\lib\v93\std>ghdl -a --std=93 --bootstrap --work=std textio_body.v93
执行这些步骤后,我可以使用GHDL_0.25+GTK包运行您的“挂起”示例:
>ghdl -a hello_world.vhd
>ghdl -r hello_world
hello_world.vhd:11:7:@0ms:(assertion note): Foo
Hello world!
它在新安装的0.29.1 for Windows上运行良好,谢谢。 有趣的是,我在5月10日安装了GHDL;现在我 想知道:我是从哪里得到安装程序的 GHDL.free.fr上的“新建”GHDL下载wiki页面有一个指向您提到的“最新”Windows安装程序的过时链接 David和我都直接指向隐藏的“旧”GHDL下载页面 另见: 请注意,我提供的0.25链接在两个GHDL下载页面上都不可见
它实际上在0.29.1上运行良好 请注意,如果您使用解析信号执行任何操作,Windows GHDL 0.29.1也会崩溃 对于Windows,我建议运行0.25或修补版的0.29.1,如前面的链接所述。在Windows For ghdl-0.29.1上有一个更新的ghdl[installer](),您可以尝试(除非您已经安装)。我在OSX上的最新mcode版本下尝试了您的测试用例(使用直接代码到内存细化,就像Windows版本一样)。你的测试用例通过了。请参阅[Ghdl讨论vhdl-Ghdl 0.29 for Windows如果进程中的语句数为偶数则挂起-堆栈溢出]()。ghdl-0.29基于svn r143版。通过r150以及人们使用的一些补丁,有各种各样的变化