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.

ghdl 0.25 windows build

edit: note, following bundled installer seems have vhdl library timestamp issues

handy bundle of ghdl 0.25 + gtk wave, here


Comments

Popular posts from this blog

c# - Operator '==' incompatible with operand types 'Guid' and 'Guid' using DynamicExpression.ParseLambda<T, bool> -