support for storing responses separately
This commit is contained in:
1 parent
31434cfd51
commit
9cebbcce8f
1 file changed
+14
-5
+14
-5
@@ -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):
|
||||
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):
|
||||
"""
|
||||
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):
|
||||
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):
|
||||
"""
|
||||
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):
|
||||
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
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user