From afb7e745a14dc58f2d366cae792ecc0d4d180495 Mon Sep 17 00:00:00 2001 From: Stefan Holst Date: Thu, 21 Jul 2022 17:15:55 +0900 Subject: [PATCH] adding aoi to logic sim --- src/kyupy/logic_sim.py | 44 +++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/src/kyupy/logic_sim.py b/src/kyupy/logic_sim.py index 8f59e07..29be2b6 100644 --- a/src/kyupy/logic_sim.py +++ b/src/kyupy/logic_sim.py @@ -164,65 +164,57 @@ class LogicSim: self.propagate(inject_cb) return self.capture(state) - @staticmethod - def fork_fct(inputs, outputs): + def fork_fct(self, inputs, outputs): for o in outputs: o[...] = inputs[0] - @staticmethod - def const0_fct(_, outputs): + def const0_fct(self, _, outputs): for o in outputs: o[...] = 0 - @staticmethod - def const1_fct(_, outputs): + def const1_fct(self, _, outputs): for o in outputs: o[...] = 0 logic.bp_not(o, o) - @staticmethod - def not_fct(inputs, outputs): + def not_fct(self, inputs, outputs): logic.bp_not(outputs[0], inputs[0]) - @staticmethod - def and_fct(inputs, outputs): + def and_fct(self, inputs, outputs): logic.bp_and(outputs[0], *inputs) - @staticmethod - def or_fct(inputs, outputs): + def or_fct(self, inputs, outputs): logic.bp_or(outputs[0], *inputs) - @staticmethod - def xor_fct(inputs, outputs): + def xor_fct(self, inputs, outputs): logic.bp_xor(outputs[0], *inputs) - @staticmethod - def sdff_fct(inputs, outputs): + def sdff_fct(self, inputs, outputs): logic.bp_buf(outputs[0], inputs[0]) if len(outputs) > 1: logic.bp_not(outputs[1], inputs[0]) - @staticmethod - def dff_fct(inputs, outputs): + def dff_fct(self, inputs, outputs): logic.bp_buf(outputs[0], inputs[0]) if len(outputs) > 1: logic.bp_not(outputs[1], inputs[0]) - @staticmethod - def latch_fct(inputs, outputs): + def latch_fct(self, inputs, outputs): logic.bp_latch(outputs[0], inputs[0], inputs[1], inputs[2]) if len(outputs) > 1: logic.bp_not(outputs[1], inputs[0]) - @staticmethod - def nand_fct(inputs, outputs): + def nand_fct(self, inputs, outputs): logic.bp_and(outputs[0], *inputs) logic.bp_not(outputs[0], outputs[0]) - @staticmethod - def nor_fct(inputs, outputs): + def nor_fct(self, inputs, outputs): logic.bp_or(outputs[0], *inputs) logic.bp_not(outputs[0], outputs[0]) - @staticmethod - def xnor_fct(inputs, outputs): + def xnor_fct(self, inputs, outputs): logic.bp_xor(outputs[0], *inputs) logic.bp_not(outputs[0], outputs[0]) + + def aoi21_fct(self, inputs, outputs): + logic.bp_and(self.tmp[0], inputs[0], inputs[1]) + logic.bp_or(outputs[0], self.tmp[0], inputs[2]) + logic.bp_not(outputs[0], outputs[0]) \ No newline at end of file