This extends a bit the recent feature request I made:
https://sourceforge.net/p/ghdl-updates/tickets/91/
More details when bound check failure at elaboration would be very
apreciated :-)
On Mon, 2015-08-10 at 22:07 +0000, Lehmann, Patrick wrote:
> Hello,
>  
> I implemented a new testbench for a UART receiver. As far as I can
> tell this testbench works fine
> in ISE Simulator. After some tests, I changed my automated testbench
> script to use GHDL, vSim and xSim.
>  
> I get this message reported for GHDL (0.33dev):
>  
> D:\git\PoC\temp\ghdl [paebbels/io +7 ~2 -0 !]> ..\..\tb\testbench.ps1
> --ghdl PoC.io.uart.rx -v
> =====================================================================
> ===========
>                     The PoC Library - Testbench Service Tool
> =====================================================================
> ===========
>  
> PoC.io.uart.rx
>   preparing simulation environment...
>   Commands to be run:
>   1. Change working directory to temporary directory
>   2. Parse filelist file.
>     a) For every file: Add the VHDL file to GHDL's compile cache.
>   3. Compile and run simulation
>   ----------------------------------------
>   cd "D:\git\PoC\temp\ghdl"
>   running analysis for every vhdl file...
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\tb\common\my_config_ML505.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\tb\common\my_project.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\common\utils.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\common\strings.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\common\vectors.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\common\board.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\common\config.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\common\physical.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\common\components.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\tb\common\simulation.v93.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\tb\common\simulation.v93.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\io\uart\uart.pkg.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\io\uart\uart_bclk.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=poc D:\git\PoC\src\io\uart\uart_rx.vhdl
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -a -P. --syn-binding 
> --std=93 --work=test D:\git\PoC\tb\io\uart\uart_rx_tb.vhdl
>   running simulation...
>     command: C:\Tools\GHDL\0.33dev\bin\ghdl.exe -r -P. --std=93 --syn
> -binding --work=test uart_rx_tb
> ERROR while executing ghdl command:
> C:\Tools\GHDL\0.33dev\bin\ghdl.exe -r -P. --std=93 --syn-binding -
> -work=test uart_rx_tb
> Return Code: 1
> ---------------------------------------------------------------------
> -----------
> C:\Tools\GHDL\0.33dev\bin\ghdl.exe:error: bound check failure at
> std_logic_1164_body.v93:174
> C:\Tools\GHDL\0.33dev\bin\ghdl.exe:error: simulation failed
>  
> There are no errors at analysis time. When running the simulation a
> bound check failed. The red lines are the original output from GHDL.
> std_logic_1164.v93 line 174 refers to a return statement in this
> function:
>  
> FUNCTION "not"  ( l : std_ulogic ) RETURN UX01 IS
> BEGIN
>     RETURN (not_table(l));
> END "not";
>  
> Is there any way to trace the cause of the error back into my code?
> Simulators by comparison:
> -          ISE Simulator – no error
> -          Vivado Simulator – fatal error
> -          GHDL – Bound check failure
> -          QuestaSim – no error
>  
> It’s strange that QuestaSim / ModelSim has no complains …
>  
> Vivado message:
> Time: 2545 ns  Iteration: 5  Process: /uart_rx_tb/line__117  File:
> D:/git/PoC/tb/io/uart/uart_rx_tb.vhdl
> FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional
> condition from which it cannot recover. Process will terminate. …..
> Time: 2545 ns  Iteration: 5  Process: /uart_rx_tb/line__117
>   File: D:/git/PoC/tb/io/uart/uart_rx_tb.vhdl
>  
> I think it crashes at one of my assert procedures, so it’s most
> likely not related to the GHDL message.
>  
> Regards
>     Patrick
>  
> -----------------------------------
> Wissenschaftliche Hilfskraft
>  
> Technische Universität Dresden
> Fakultät Informatik
> Institut für Technische Informatik
> Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
> 01062 Dresden
> Tel.:   +49 351 463-38451
> Fax:    +49 351 463-38324
> Raum:   APB-1020
> E-Mail: [email protected]
> WWW:    http://vlsi-eda.inf.tu-dresden.de
>  
> _______________________________________________
> Ghdl-discuss mailing list
> [email protected]
> https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to