On Sun, 2005-10-30 at 12:17 +0100, Tristan Gingold wrote: I've just tried SVN revision 19, but now I get the following (on i386):
******************** GHDL Bug occured **************************** Please report this bug on http://gna.org/projects/ghdl GHDL version: GHDL 0.21dev (20051016) [Sokcho edition] Compiled with GNAT Version: 4.0.1 20050727 (Red Hat 4.0.1-5) In directory: /var/tmp/ghdl-0.21dev-1-root/usr/lib/gcc/i686-pc-linux-gnu/4.0.2/vhdl/lib/v93/ieee/ Command line: /usr/src/redhat/BUILD/gcc-4.0.2/obj/gcc/vhdl/../ghdl1 --std=93 -P../std --work=ieee -P../std/ -P/usr/lib/gcc/i686-pc-linux-gnu/4.0.2/vhdl/lib/v93/std/ -quiet -o std_logic_1164_body.s ../../../src/ieee/std_logic_1164_body.v93 Exception CONSTRAINT_ERROR raised Exception information: Exception name: CONSTRAINT_ERROR Message: translation.adb:3148 access check failed Call stack traceback locations: 0x80af198 0x80d0865 0x80d0a28 0x80d0b35 0x80ee47d 0x80ef273 0x80f2402 0x80f3ec7 0x80f66e3 0x80551fb 0x804d7d8 ****************************************************************** Execution terminated by unhandled exception Exception name: CONSTRAINT_ERROR Message: translation.adb:3148 access check failed Call stack traceback locations: 0x80af198 0x80d0865 0x80d0a28 0x80d0b35 0x80ee47d 0x80ef273 0x80f2402 0x80f3ec7 0x80f66e3 0x80551fb 0x804d7d8 /usr/src/redhat/BUILD/gcc-4.0.2/obj/gcc/vhdl/../ghdl: compilation error make[3]: *** [ieee.v93] Error 1 make[3]: Leaving directory `/var/tmp/ghdl-0.21dev-1-root/usr/lib/gcc/i686-pc-linux-gnu/4.0.2/vhdl' make[2]: *** [install-ghdllib] Error 2 Now for something completely different. I've been trying to find out why ghdl is slower than modelsim. I first suspected that while ghdl seems to treat std_logic_1164 and friends just like any other vhdl code, modelsim seems to special case 1164 at least to some point. To check this assumption, I compiled your 1164 sources with modelsim to work and then used it to simulate with modelsim. I also tried the switch -no1164, which is documented to switch off some special casing. But that hypothesis is obviously wrong: work.std_logic_1164,-no1164 3:38 work.std_logic_1164 3:32 normal 2:50 ghdl 0.20 21:19 Then I was trying to find out whether something obvious is taking too much time in ghdl. So I ran the ghdl created executable using callgrind: callgrind --dump-instr=yes --trace-jump=yes ./tbench --stop-time=1ms Unfortunately, there is nothing obvious. Virtually all time is spent in grt__processes__simulation_cycle and its callees, of which grt__processes__run_processes takes ~80%. work__numeric_std__OPPIO2 ("+"(signed,signed)) ~21%. work__modem__ARCH__rtl__P15__PROC takes ~19%. This is the process that contains the "+" with the longest vectors. ~14% is consumed by work__numeric_std__add_signed. Unfortunately, my build apparently doesn't have debug symbols in the grt library, is my build defective? Thanks, Tom
