[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: Icarus Verilog: How to exit simulator with non-zero status?
Patrick -
On Tue, Mar 03, 2009 at 11:39:28AM -0500, Patrick Doyle wrote:
> I have an Icarus Verilog question (which may, perhaps be a more
> general Verilog question). I would like to write a test bench that
> exits with a non-zero status when it detects an error. That way I can
> simply run make to test a bunch o' code and come back later to see if
> everything exited cleanly.
> Is there a way to exit the simulator with a non-zero status?
There is no standard way, so historically we used post-processing.
Peek at the output for a "PASS" result, using a Makefile rule like:
# Generic regression test
%_check: %_tb testcode.awk
vvp $< | awk -f $(filter %.awk, $^)
where testcode.awk is
---cut here---
# very general processing of vvp output to set a return code
# since apparently Verilog running inside vvp does not have
# a way to affect that directly
BEGIN{code=1}
/PASS/{code=0}
{print $0}
END{exit(code)}
---cut here---
Assuming you can get your simulator to save the results to stdout
or a file, this is about as general-purpose as it gets.
While functional, that technique still seems hackish. The Icarus
developers eventually added their own Verilog extension, the
VPI function $finish_and_return(exit_status). That will work in
any development version since May 22, 2008.
- Larry
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user