support for storing responses separately
This commit is contained in:
1 parent
31434cfd51
commit
9cebbcce8f
1 file changed
+17
-8
+17
-8
@@ -388,7 +388,7 @@ class LogicSim2V(sim.SimOps):
|
|||||||
"""
|
"""
|
||||||
return np.full((self.s_len, self.sims), logic.ZERO, dtype=np.uint8)
|
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
|
assert cycles >= 1
|
||||||
for bo, bs in batchrange(patterns.shape[-1], self.sims):
|
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]
|
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)
|
self.c_prop(fault_line=fault_line, fault_model=fault_model, fault_mask=fault_mask)
|
||||||
if cycle < (cycles-1): self.c_ppo_to_ppi()
|
if cycle < (cycles-1): self.c_ppo_to_ppi()
|
||||||
self.c_to_s()
|
self.c_to_s()
|
||||||
patterns[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs]
|
if responses is None:
|
||||||
return patterns
|
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 if responses is None else responses
|
||||||
|
|
||||||
|
|
||||||
@numba.njit
|
@numba.njit
|
||||||
@@ -521,7 +524,7 @@ class LogicSim4V(sim.SimOps):
|
|||||||
"""
|
"""
|
||||||
return np.full((self.s_len, self.sims), logic.ZERO, dtype=np.uint8)
|
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
|
assert cycles >= 1
|
||||||
for bo, bs in batchrange(patterns.shape[-1], self.sims):
|
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]
|
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)
|
self.c_prop(fault_line=fault_line, fault_model=fault_model, fault_mask=fault_mask)
|
||||||
if cycle < (cycles-1): self.c_ppo_to_ppi()
|
if cycle < (cycles-1): self.c_ppo_to_ppi()
|
||||||
self.c_to_s()
|
self.c_to_s()
|
||||||
patterns[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs]
|
if responses is None:
|
||||||
return patterns
|
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 if responses is None else responses
|
||||||
|
|
||||||
|
|
||||||
@numba.njit
|
@numba.njit
|
||||||
@@ -780,7 +786,7 @@ class LogicSim6V(sim.SimOps):
|
|||||||
"""
|
"""
|
||||||
return np.full((self.s_len, self.sims), logic.ZERO, dtype=np.uint8)
|
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
|
assert cycles >= 1
|
||||||
for bo, bs in batchrange(patterns.shape[-1], self.sims):
|
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]
|
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)
|
self.c_prop(fault_line=fault_line, fault_model=fault_model, fault_mask=fault_mask)
|
||||||
if cycle < (cycles-1): self.c_ppo_to_ppi()
|
if cycle < (cycles-1): self.c_ppo_to_ppi()
|
||||||
self.c_to_s()
|
self.c_to_s()
|
||||||
patterns[self.poppo_s_locs, bo:bo+bs] = self.s_result[self.poppo_s_locs, :bs]
|
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
|
return patterns
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user