diff options
author | Ahmed Irfan <irfan@ubuntu.(none)> | 2014-01-20 09:58:04 +0100 |
---|---|---|
committer | Ahmed Irfan <irfan@ubuntu.(none)> | 2014-01-20 09:58:04 +0100 |
commit | b7adf4c7a0d0f561d08d7e4dcf66b4e651596318 (patch) | |
tree | d5b7e8e79e7ab98eaca898f65c438f8aa1be5407 /kernel/satgen.h | |
parent | 234d0d0e1c316d7253c56c522dcc982a5e6049a1 (diff) | |
parent | 32a91458a7dde9994ca28ec635c1bec8fe20111b (diff) | |
download | yosys-b7adf4c7a0d0f561d08d7e4dcf66b4e651596318.tar.gz yosys-b7adf4c7a0d0f561d08d7e4dcf66b4e651596318.tar.bz2 yosys-b7adf4c7a0d0f561d08d7e4dcf66b4e651596318.zip |
Merge branch 'master' of https://github.com/cliffordwolf/yosys into btor
Diffstat (limited to 'kernel/satgen.h')
-rw-r--r-- | kernel/satgen.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/satgen.h b/kernel/satgen.h index a668c73a4..0909e58ef 100644 --- a/kernel/satgen.h +++ b/kernel/satgen.h @@ -38,6 +38,7 @@ struct SatGen SigMap *sigmap; std::string prefix; SigPool initial_state; + RTLIL::SigSpec asserts_a, asserts_en; bool ignore_div_by_zero; bool model_undef; @@ -96,6 +97,19 @@ struct SatGen return importSigSpecWorker(sig, pf, true, false); } + int importAsserts(int timestep = -1) + { + std::vector<int> check_bits, enable_bits; + if (model_undef) { + check_bits = ez->vec_and(ez->vec_not(importUndefSigSpec(asserts_a, timestep)), importDefSigSpec(asserts_a, timestep)); + enable_bits = ez->vec_and(ez->vec_not(importUndefSigSpec(asserts_en, timestep)), importDefSigSpec(asserts_en, timestep)); + } else { + check_bits = importDefSigSpec(asserts_a, timestep); + enable_bits = importDefSigSpec(asserts_en, timestep); + } + return ez->vec_reduce_and(ez->vec_or(check_bits, ez->vec_not(enable_bits))); + } + int signals_eq(RTLIL::SigSpec lhs, RTLIL::SigSpec rhs, int timestep_lhs = -1, int timestep_rhs = -1) { if (timestep_rhs < 0) @@ -765,6 +779,13 @@ struct SatGen return true; } + if (cell->type == "$assert") + { + asserts_a.append((*sigmap)(cell->connections.at("\\A"))); + asserts_en.append((*sigmap)(cell->connections.at("\\EN"))); + return true; + } + // Unsupported internal cell types: $pow $lut // .. and all sequential cells except $dff and $_DFF_[NP]_ return false; |