summaryrefslogtreecommitdiffstats
path: root/src/bdd
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2011-02-13 20:50:29 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2011-02-13 20:50:29 -0800
commita7e214bb01085492e330186295a71da35846a6b7 (patch)
treef0d2d8753a12036226752f92771bfed5b7876d39 /src/bdd
parent573694f9bf9cc019c9a4d265fbcb04c0fbde78e1 (diff)
downloadabc-a7e214bb01085492e330186295a71da35846a6b7.tar.gz
abc-a7e214bb01085492e330186295a71da35846a6b7.tar.bz2
abc-a7e214bb01085492e330186295a71da35846a6b7.zip
Improved timeout in the BDD reachability engines.
Diffstat (limited to 'src/bdd')
-rw-r--r--src/bdd/cudd/cuddAndAbs.c3
-rw-r--r--src/bdd/cudd/cuddBddIte.c3
-rw-r--r--src/bdd/cudd/cuddBridge.c5
3 files changed, 11 insertions, 0 deletions
diff --git a/src/bdd/cudd/cuddAndAbs.c b/src/bdd/cudd/cuddAndAbs.c
index 39695918..2f38490d 100644
--- a/src/bdd/cudd/cuddAndAbs.c
+++ b/src/bdd/cudd/cuddAndAbs.c
@@ -259,6 +259,9 @@ cuddBddAndAbstractRecur(
}
}
+ if ( manager->TimeStop && manager->TimeStop < clock() )
+ return NULL;
+
if (topf == top) {
index = F->index;
ft = cuddT(F);
diff --git a/src/bdd/cudd/cuddBddIte.c b/src/bdd/cudd/cuddBddIte.c
index 1b152f02..4e75aab2 100644
--- a/src/bdd/cudd/cuddBddIte.c
+++ b/src/bdd/cudd/cuddBddIte.c
@@ -926,6 +926,9 @@ cuddBddAndRecur(
if (r != NULL) return(r);
}
+ if ( manager->TimeStop && manager->TimeStop < clock() )
+ return NULL;
+
/* Here we can skip the use of cuddI, because the operands are known
** to be non-constant.
*/
diff --git a/src/bdd/cudd/cuddBridge.c b/src/bdd/cudd/cuddBridge.c
index d0f96a2f..97a6f393 100644
--- a/src/bdd/cudd/cuddBridge.c
+++ b/src/bdd/cudd/cuddBridge.c
@@ -975,6 +975,11 @@ cuddBddTransferRecur(
/* Check the cache. */
if (st_lookup(table, (const char *)f, (char **)&res))
return(Cudd_NotCond(res,comple));
+
+ if ( ddS->TimeStop && ddS->TimeStop < clock() )
+ return NULL;
+ if ( ddD->TimeStop && ddD->TimeStop < clock() )
+ return NULL;
/* Recursive step. */
index = f->index;