diff --git a/src/kyupy/logic.py b/src/kyupy/logic.py index 14a3e83..3e97f8e 100644 --- a/src/kyupy/logic.py +++ b/src/kyupy/logic.py @@ -269,6 +269,18 @@ def mv_to_bp(mva): return np.packbits(unpackbits(mva)[...,:3], axis=-2, bitorder='little').swapaxes(-1,-2) +def mv_init(mva): + """Returns the initial binary values for mva. + """ + return (mva>>1) & ((mva>>2)|mva) & 1 + + +def mv_final(mva): + """Returns the final binary value of mva. + """ + return mva & ((mva>>2)|(mva>>1)) & 1 + + def bparray(*a): """Converts (lists of) Boolean values or strings into a bit-parallel array. diff --git a/src/kyupy/logic_sim.py b/src/kyupy/logic_sim.py index 26a1c76..0aca25c 100644 --- a/src/kyupy/logic_sim.py +++ b/src/kyupy/logic_sim.py @@ -10,7 +10,7 @@ import math import numpy as np -from . import numba, logic, hr_bytes, sim, eng +from . import numba, logic, hr_bytes, sim, eng, cdiv from .circuit import Circuit class LogicSim(sim.SimOps): @@ -28,7 +28,7 @@ class LogicSim(sim.SimOps): self.m = m self.mdim = math.ceil(math.log2(m)) self.sims = sims - nbytes = (sims - 1) // 8 + 1 + nbytes = cdiv(sims, 8) self.c = np.zeros((self.c_len, self.mdim, nbytes), dtype=np.uint8) self.s = np.zeros((2, self.s_len, 3, nbytes), dtype=np.uint8)