ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
literal.h
Go to the documentation of this file.
1#ifndef _literal_h_INCLUDED
2#define _literal_h_INCLUDED
3
4#include <limits.h>
5
6#include "global.h"
8
9#define LD_MAX_VAR 30u
10#define LD_MAX_LIT (1 + LD_MAX_VAR)
11
12#define EXTERNAL_MAX_VAR ((1 << LD_MAX_VAR) - 1)
13#define INTERNAL_MAX_VAR ((1u << LD_MAX_VAR) - 2)
14#define INTERNAL_MAX_LIT (2 * INTERNAL_MAX_VAR + 1)
15
16#define ILLEGAL_LIT ((1u << LD_MAX_LIT) - 1)
17
18#define INVALID_IDX UINT_MAX
19#define INVALID_LIT UINT_MAX
20
21#define VALID_INTERNAL_INDEX(IDX) ((IDX) < VARS)
22
23#define VALID_INTERNAL_LITERAL(LIT) ((LIT) < LITS)
24
25#define VALID_EXTERNAL_LITERAL(LIT) \
26 ((LIT) && ((LIT) != INT_MIN) && ABS (LIT) <= EXTERNAL_MAX_VAR)
27
28#define IDX(LIT) \
29 (KISSAT_assert (VALID_INTERNAL_LITERAL (LIT)), (((unsigned) (LIT)) >> 1))
30
31#define LIT(IDX) (KISSAT_assert (VALID_INTERNAL_INDEX (IDX)), ((IDX) << 1))
32
33#define NOT(LIT) (KISSAT_assert (VALID_INTERNAL_LITERAL (LIT)), ((LIT) ^ 1u))
34
35#define NEGATED(LIT) (KISSAT_assert (VALID_INTERNAL_LITERAL (LIT)), ((LIT) & 1u))
36
37#define STRIP(LIT) (KISSAT_assert (VALID_INTERNAL_LITERAL (LIT)), ((LIT) & ~1u))
38
40
41#endif
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.