vhdl - GHDL 0.29 for Windows hangs if the number of statements in a process is even -
i'm using ghdl 0.29 windows.
the following program prints "hello world!"
use std.textio.all; entity hello_world end hello_world; architecture behaviour of hello_world begin process variable l : line; begin write (l, string'("hello world!")); writeline (output, l); wait; end process; end behaviour; the following program hangs , doesn't print anything.
use std.textio.all; entity hello_world end hello_world; architecture behaviour of hello_world 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; the following program outputs 2 assertions , "hello world!" message.
use std.textio.all; entity hello_world end hello_world; architecture behaviour of hello_world begin process variable l : line; begin assert false report "foo" severity note; assert false report "bar" severity note; write (l, string'("hello world!")); writeline (output, l); wait; end process; end behaviour; i tried increasing number of assertions , discovered when have odd number of assertions, simulation hangs. doesn't matter located. following hangs:
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; the following prints "antidisestablishmentarianism" assert:
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; assert false report "gneeek" severity note; edit
the problem more general, , seems related number of statements within process being odd or even. following prints "hello world!hello moon!" repeatedly:
-- hello world program. use std.textio.all; -- imports standard textio package. -- defines design entity, without ports. entity hello_world end hello_world; architecture behaviour of hello_world begin process variable l : line; begin write (l, string'("hello world!")); write (l, string'("hello moon!")); writeline (output, l); end process; end behaviour; while following doesn't print , hangs:
-- hello world program. use std.textio.all; -- imports standard textio package. -- defines design entity, without ports. entity hello_world end hello_world; architecture behaviour of hello_world begin process variable l : line; begin write (l, string'("hello world!")); writeline (output, l); end process; end behaviour; edit (this may save time)
the weird behavior described above doesn't occur under linux. clearly, 1 of 2 versions of ghdl flawed, , suspect windows one. i'll file bug report. i'm still interested in why behavior different.
edit (i tried version 0.25)
with version 0.25 windows error:
c:\users\ajejebrazorf\documents\programming\ghdl\example>ghdl -a 1.vhdl 1.vhdl:1:10: file textio.v93 has changed , must reanalysed the ghdl.exe 1 packaged gtkwave bundle (https://stackoverflow.com/a/16629872/415727).
i've seen similar problems windows ghdl 0.29.x builds.
your example runs ok using either ghdl 0.25 or patched 0.29.1.
edit: note, following bundled installer seems have vhdl library timestamp issues
Comments
Post a Comment