The bug shows up with the llvm version of ghdl-0.33 as well. The cause(found by commenting out concurrent statements) is this assignment in process extension_pipe:
w <= w(14 downto 0) & std_logic_vector(unsigned(w(15)) + unsigned(s0) + unsigned(w(6)) + unsigned(s1)); The first thing to note is that "&" and "+" are the same preference and would be executed in left to right order, it isn't possible to add unsigned(s0),... to reordered w. Simply adding parentheses didn't fix it: w <= w(14 downto 0) & ( std_logic_vector ( unsigned(w(15)) + unsigned(s0) + unsigned(w(6)) + unsigned(s1) ) ); While adding an intermediary variable: extension_pipe: process(clock) variable x: std_logic_vector (31 downto 0); begin and elsif intenable = '1' then x := std_logic_vector ( unsigned(w(15)) + unsigned(s0) + unsigned(w(6)) + unsigned(s1) ); w <= w(14 downto 0) & x; -- w <= w(14 downto 0) & std_logic_vector(unsigned(w(15)) + unsigned(s0) + unsigned(w(6)) + unsigned(s1)); end if; did work. Nothing else I tried worked (the right hand side as an aggregate, specifically stating the type as wt). This appears to be an expression stack problem. I'd suspect of wt were an array of unsigned (31 downto 0) you might not have this problem, it may relate to the type conversions and multiple additions. > On 24/04/2016, at 6:39 am, Simon Thijs de Feber <st.de.fe...@gmail.com> wrote: > > Hello All, > > I am using GHDL version > GHDL 0.33 (20150921) [Dunoon edition] > Compiled with GNAT Version: 5.2.0 > GCC back-end code generator > > > I got this exception for an unknown reason while compiling a sha256 core from > opencores. > > ghdl -a --ieee=synopsys -fexplicit -v > ../../securehash256bits_org/trunk/sha256.vhd > /usr/local/libexec/gcc/i686-slackware-linux/4.9.3/ghdl1 -fexplicit > -P/usr/local/lib/gcc/i686-slackware-linux/4.9.3/vhdl//v93/std/ > -P/usr/local/lib/gcc/i686-slackware-linux/4.9.3/vhdl//v93/synopsys/ -quiet -o > sha256.s ../../securehash256bits_org/trunk/sha256.vhd > > ******************** GHDL Bug occured **************************** > Please report this bug on http://gna.org/projects/ghdl > <http://gna.org/projects/ghdl> > GHDL release: GHDL 0.33 (20150921) [Dunoon edition] > Compiled with GNAT Version: 5.2.0 > In directory: /home/stdefeber/projects/sandbox/ax_hmac/ghdl/ > Command line: > /usr/local/libexec/gcc/i686-slackware-linux/4.9.3/ghdl1 -fexplicit > -P/usr/local/lib/gcc/i686-slackware-linux/4.9.3/vhdl//v93/std/ > -P/usr/local/lib/gcc/i686-slackware-linux/4.9.3/vhdl//v93/synopsys/ -quiet -o > sha256.s ../../securehash256bits_org/trunk/sha256.vhd > Exception TYPES.INTERNAL_ERROR raised > Exception information: > Exception name: TYPES.INTERNAL_ERROR > Message: trans.adb:1516 > Call stack traceback locations: > 0x82282f5 0x8250165 0x8250733 0x8251e1a 0x8251f5f 0x825264f 0x8213459 > 0x8208e70 0x8212a5c 0x8214580 0x82115ee 0x8240cff 0x823dcf5 0x823dd42 > 0x823dd8c 0x823f02a 0x823dcf5 0x823dd42 0x823f02a 0x823dcf5 0x8233879 > 0x825acc0 0x822a895 0x825ca13 0x81abd4c 0x81864b3 0x856b180 0x856cdfd > 0x81abdba 0x8183dba 0xb75ad29e 0x8184268 > ****************************************************************** > > Execution terminated by unhandled exception > Exception name: TYPES.INTERNAL_ERROR > Message: trans.adb:1516 > Call stack traceback locations: > 0x82282f5 0x8250165 0x8250733 0x8251e1a 0x8251f5f 0x825264f 0x8213459 > 0x8208e70 0x8212a5c 0x8214580 0x82115ee 0x8240cff 0x823dcf5 0x823dd42 > 0x823dd8c 0x823f02a 0x823dcf5 0x823dd42 0x823f02a 0x823dcf5 0x8233879 > 0x825acc0 0x822a895 0x825ca13 0x81abd4c 0x81864b3 0x856b180 0x856cdfd > 0x81abdba 0x8183dba 0xb75ad29e 0x8184268 > ghdl: compilation error > > VHDL code is attached. > I changed the code from using std_logic unsigned to numeric_std. > Both version exhibit same error. > > best regards > > Simon > > > > > > > <sha256.vhd>_______________________________________________ > Ghdl-discuss mailing list > Ghdl-discuss@gna.org > https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________ Ghdl-discuss mailing list Ghdl-discuss@gna.org https://mail.gna.org/listinfo/ghdl-discuss