|
|
|
|
@ -388,7 +388,7 @@ class LogicSim2V(sim.SimOps):
@@ -388,7 +388,7 @@ class LogicSim2V(sim.SimOps):
|
|
|
|
|
""" |
|
|
|
|
return np.full((self.s_len, self.sims), logic.ZERO, dtype=np.uint8) |
|
|
|
|
|
|
|
|
|
def simulate(self, patterns, cycles:int = 1, fault_line=-1, fault_model=2, fault_mask=None): |
|
|
|
|
def simulate(self, patterns, responses = None, cycles:int = 1, fault_line=-1, fault_model=2, fault_mask=None): |
|
|
|
|
assert cycles >= 1 |
|
|
|
|
for bo, bs in batchrange(patterns.shape[-1], self.sims): |
|
|
|
|
self.s_assign[self.pippi_s_locs, :bs] = patterns[self.pippi_s_locs, bo:bo+bs] |
|
|
|
|
@ -397,8 +397,11 @@ class LogicSim2V(sim.SimOps):
@@ -397,8 +397,11 @@ class LogicSim2V(sim.SimOps):
|
|
|
|
|
self.c_prop(fault_line=fault_line, fault_model=fault_model, fault_mask=fault_mask) |
|
|
|
|
if cycle < (cycles-1): self.c_ppo_to_ppi() |
|
|
|
|
self.c_to_s() |
|
|
|
|
if responses is None: |
|
|
|
|
patterns[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs] |
|
|
|
|
return patterns |
|
|
|
|
else: |
|
|
|
|
responses[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs] |
|
|
|
|
return patterns if responses is None else responses |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@numba.njit |
|
|
|
|
@ -521,7 +524,7 @@ class LogicSim4V(sim.SimOps):
@@ -521,7 +524,7 @@ class LogicSim4V(sim.SimOps):
|
|
|
|
|
""" |
|
|
|
|
return np.full((self.s_len, self.sims), logic.ZERO, dtype=np.uint8) |
|
|
|
|
|
|
|
|
|
def simulate(self, patterns, cycles:int = 1, fault_line=-1, fault_model=2, fault_mask=None): |
|
|
|
|
def simulate(self, patterns, responses = None, cycles:int = 1, fault_line=-1, fault_model=2, fault_mask=None): |
|
|
|
|
assert cycles >= 1 |
|
|
|
|
for bo, bs in batchrange(patterns.shape[-1], self.sims): |
|
|
|
|
self.s_assign[self.pippi_s_locs, :bs] = patterns[self.pippi_s_locs, bo:bo+bs] |
|
|
|
|
@ -530,8 +533,11 @@ class LogicSim4V(sim.SimOps):
@@ -530,8 +533,11 @@ class LogicSim4V(sim.SimOps):
|
|
|
|
|
self.c_prop(fault_line=fault_line, fault_model=fault_model, fault_mask=fault_mask) |
|
|
|
|
if cycle < (cycles-1): self.c_ppo_to_ppi() |
|
|
|
|
self.c_to_s() |
|
|
|
|
if responses is None: |
|
|
|
|
patterns[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs] |
|
|
|
|
return patterns |
|
|
|
|
else: |
|
|
|
|
responses[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs] |
|
|
|
|
return patterns if responses is None else responses |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@numba.njit |
|
|
|
|
@ -780,7 +786,7 @@ class LogicSim6V(sim.SimOps):
@@ -780,7 +786,7 @@ class LogicSim6V(sim.SimOps):
|
|
|
|
|
""" |
|
|
|
|
return np.full((self.s_len, self.sims), logic.ZERO, dtype=np.uint8) |
|
|
|
|
|
|
|
|
|
def simulate(self, patterns, cycles:int = 1, fault_line=-1, fault_model=2, fault_mask=None): |
|
|
|
|
def simulate(self, patterns, responses = None, cycles:int = 1, fault_line=-1, fault_model=2, fault_mask=None): |
|
|
|
|
assert cycles >= 1 |
|
|
|
|
for bo, bs in batchrange(patterns.shape[-1], self.sims): |
|
|
|
|
self.s_assign[self.pippi_s_locs, :bs] = patterns[self.pippi_s_locs, bo:bo+bs] |
|
|
|
|
@ -789,7 +795,10 @@ class LogicSim6V(sim.SimOps):
@@ -789,7 +795,10 @@ class LogicSim6V(sim.SimOps):
|
|
|
|
|
self.c_prop(fault_line=fault_line, fault_model=fault_model, fault_mask=fault_mask) |
|
|
|
|
if cycle < (cycles-1): self.c_ppo_to_ppi() |
|
|
|
|
self.c_to_s() |
|
|
|
|
if responses is None: |
|
|
|
|
patterns[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs] |
|
|
|
|
else: |
|
|
|
|
responses[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs] |
|
|
|
|
return patterns |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|