Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vhdl 如果进程中的语句数为偶数,则适用于Windows的GHDL 0.29将挂起_Vhdl_Ghdl - Fatal编程技术网

Vhdl 如果进程中的语句数为偶数,则适用于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

我正在为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" 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以及人们使用的一些补丁,有各种各样的变化