ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
cover.hpp
Go to the documentation of this file.
1#ifndef _cover_hpp_INCLUDED
2#define _cover_hpp_INCLUDED
3
4#include "global.h"
5
6/*------------------------------------------------------------------------*/
7
8// This header only provides the 'COVER' macro for testing. It is unrelated
9// to 'cover.cpp' which implements covered clause elimination (CCE), but we
10// wanted to use the name base name in both cases. More explanation on CCE
11// is provided in 'cover.cpp'.
12
13/*------------------------------------------------------------------------*/
14
15// Coverage goal, used similar to 'CADICAL_assert' (but with flipped condition) and
16// also included even if 'CADICAL_NDEBUG' is defined (in optimizing compilation).
17//
18// This should in essence not be used in production code.
19//
20// There seems to be no problem overloading the name 'COVER' of this macro
21// with the constant 'COVER' of 'Internal::Mode' (surprisingly).
22
23#define COVER(COND) \
24 do { \
25 if (!(COND)) \
26 break; \
27 fprintf (stderr, \
28 "%scadical%s: %s:%d: %s: Coverage goal %s`%s'%s reached.\n", \
29 terr.bold_code (), terr.normal_code (), __FUNCTION__, \
30 __LINE__, __FILE__, terr.green_code (), #COND, \
31 terr.normal_code ()); \
32 fflush (stderr); \
33 abort (); \
34 } while (0)
35
36#endif