From 6835e921f8c3cd97478647a7587b7860ae8e8c02 Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Sat, 6 Mar 2021 18:34:20 -0800 Subject: [PATCH] Add reset_active_level parameters --- cocotbext/eth/gmii.py | 14 +++++++------- cocotbext/eth/mii.py | 16 +++++++++------- cocotbext/eth/ptp.py | 3 ++- cocotbext/eth/rgmii.py | 20 +++++++++++++------- cocotbext/eth/xgmii.py | 8 ++++---- 5 files changed, 35 insertions(+), 26 deletions(-) diff --git a/cocotbext/eth/gmii.py b/cocotbext/eth/gmii.py index 2cb1ed4..1b832ae 100644 --- a/cocotbext/eth/gmii.py +++ b/cocotbext/eth/gmii.py @@ -134,7 +134,7 @@ class GmiiFrame: class GmiiSource(Reset): - def __init__(self, data, er, dv, clock, reset=None, enable=None, mii_select=None, *args, **kwargs): + def __init__(self, data, er, dv, clock, reset=None, enable=None, mii_select=None, reset_active_level=True, *args, **kwargs): self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.er = er @@ -173,7 +173,7 @@ class GmiiSource(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def send(self, frame): self.send_nowait(frame) @@ -283,7 +283,7 @@ class GmiiSource(Reset): class GmiiSink(Reset): - def __init__(self, data, er, dv, clock, reset=None, enable=None, mii_select=None, *args, **kwargs): + def __init__(self, data, er, dv, clock, reset=None, enable=None, mii_select=None, reset_active_level=True, *args, **kwargs): self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.er = er @@ -320,7 +320,7 @@ class GmiiSink(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def recv(self, compact=True): while self.empty(): @@ -439,7 +439,7 @@ class GmiiSink(Reset): class GmiiPhy: def __init__(self, txd, tx_er, tx_en, tx_clk, gtx_clk, rxd, rx_er, rx_dv, rx_clk, - reset=None, speed=1000e6, *args, **kwargs): + reset=None, reset_active_level=True, speed=1000e6, *args, **kwargs): self.gtx_clk = gtx_clk self.tx_clk = tx_clk @@ -447,8 +447,8 @@ class GmiiPhy: super().__init__(*args, **kwargs) - self.tx = GmiiSink(txd, tx_er, tx_en, tx_clk, reset) - self.rx = GmiiSource(rxd, rx_er, rx_dv, rx_clk, reset) + self.tx = GmiiSink(txd, tx_er, tx_en, tx_clk, reset, reset_active_level=reset_active_level) + self.rx = GmiiSource(rxd, rx_er, rx_dv, rx_clk, reset_active_level=reset_active_level) self.rx_clk.setimmediatevalue(0) diff --git a/cocotbext/eth/mii.py b/cocotbext/eth/mii.py index a1c899f..9fb521d 100644 --- a/cocotbext/eth/mii.py +++ b/cocotbext/eth/mii.py @@ -37,7 +37,7 @@ from .reset import Reset class MiiSource(Reset): - def __init__(self, data, er, dv, clock, reset=None, enable=None, *args, **kwargs): + def __init__(self, data, er, dv, clock, reset=None, enable=None, reset_active_level=True, *args, **kwargs): self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.er = er @@ -74,7 +74,7 @@ class MiiSource(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def send(self, frame): self.send_nowait(frame) @@ -180,7 +180,7 @@ class MiiSource(Reset): class MiiSink(Reset): - def __init__(self, data, er, dv, clock, reset=None, enable=None, *args, **kwargs): + def __init__(self, data, er, dv, clock, reset=None, enable=None, reset_active_level=True, *args, **kwargs): self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.er = er @@ -214,7 +214,7 @@ class MiiSink(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def recv(self, compact=True): while self.empty(): @@ -327,14 +327,16 @@ class MiiSink(Reset): class MiiPhy: - def __init__(self, txd, tx_er, tx_en, tx_clk, rxd, rx_er, rx_dv, rx_clk, reset=None, speed=100e6, *args, **kwargs): + def __init__(self, txd, tx_er, tx_en, tx_clk, rxd, rx_er, rx_dv, rx_clk, reset=None, + reset_active_level=True, speed=100e6, *args, **kwargs): + self.tx_clk = tx_clk self.rx_clk = rx_clk super().__init__(*args, **kwargs) - self.tx = MiiSink(txd, tx_er, tx_en, tx_clk, reset) - self.rx = MiiSource(rxd, rx_er, rx_dv, rx_clk, reset) + self.tx = MiiSink(txd, tx_er, tx_en, tx_clk, reset, reset_active_level=reset_active_level) + self.rx = MiiSource(rxd, rx_er, rx_dv, rx_clk, reset, reset_active_level=reset_active_level) self.tx_clk.setimmediatevalue(0) self.rx_clk.setimmediatevalue(0) diff --git a/cocotbext/eth/ptp.py b/cocotbext/eth/ptp.py index 97dff81..7ac2992 100644 --- a/cocotbext/eth/ptp.py +++ b/cocotbext/eth/ptp.py @@ -43,6 +43,7 @@ class PtpClock(Reset): pps=None, clock=None, reset=None, + reset_active_level=True, period_ns=6.4, *args, **kwargs): @@ -90,7 +91,7 @@ class PtpClock(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) def set_period(self, ns, fns): self.period_ns = int(ns) diff --git a/cocotbext/eth/rgmii.py b/cocotbext/eth/rgmii.py index 228b97d..fa95301 100644 --- a/cocotbext/eth/rgmii.py +++ b/cocotbext/eth/rgmii.py @@ -37,7 +37,9 @@ from .reset import Reset class RgmiiSource(Reset): - def __init__(self, data, ctrl, clock, reset=None, enable=None, mii_select=None, *args, **kwargs): + def __init__(self, data, ctrl, clock, reset=None, enable=None, mii_select=None, + reset_active_level=True, *args, **kwargs): + self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.ctrl = ctrl @@ -72,7 +74,7 @@ class RgmiiSource(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def send(self, frame): self.send_nowait(frame) @@ -191,7 +193,9 @@ class RgmiiSource(Reset): class RgmiiSink(Reset): - def __init__(self, data, ctrl, clock, reset=None, enable=None, mii_select=None, *args, **kwargs): + def __init__(self, data, ctrl, clock, reset=None, enable=None, mii_select=None, + reset_active_level=True, *args, **kwargs): + self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.ctrl = ctrl @@ -224,7 +228,7 @@ class RgmiiSink(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def recv(self, compact=True): while self.empty(): @@ -352,14 +356,16 @@ class RgmiiSink(Reset): class RgmiiPhy: - def __init__(self, txd, tx_ctl, tx_clk, rxd, rx_ctl, rx_clk, reset=None, speed=1000e6, *args, **kwargs): + def __init__(self, txd, tx_ctl, tx_clk, rxd, rx_ctl, rx_clk, reset=None, + reset_active_level=True, speed=1000e6, *args, **kwargs): + self.tx_clk = tx_clk self.rx_clk = rx_clk super().__init__(*args, **kwargs) - self.tx = RgmiiSink(txd, tx_ctl, tx_clk, reset) - self.rx = RgmiiSource(rxd, rx_ctl, rx_clk, reset) + self.tx = RgmiiSink(txd, tx_ctl, tx_clk, reset, reset_active_level=reset_active_level) + self.rx = RgmiiSource(rxd, rx_ctl, rx_clk, reset, reset_active_level=reset_active_level) self.rx_clk.setimmediatevalue(0) diff --git a/cocotbext/eth/xgmii.py b/cocotbext/eth/xgmii.py index 5d77653..7be3cfd 100644 --- a/cocotbext/eth/xgmii.py +++ b/cocotbext/eth/xgmii.py @@ -137,7 +137,7 @@ class XgmiiFrame: class XgmiiSource(Reset): - def __init__(self, data, ctrl, clock, reset=None, enable=None, *args, **kwargs): + def __init__(self, data, ctrl, clock, reset=None, enable=None, reset_active_level=True, *args, **kwargs): self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.ctrl = ctrl @@ -179,7 +179,7 @@ class XgmiiSource(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def send(self, frame): self.send_nowait(frame) @@ -313,7 +313,7 @@ class XgmiiSource(Reset): class XgmiiSink(Reset): - def __init__(self, data, ctrl, clock, reset=None, enable=None, *args, **kwargs): + def __init__(self, data, ctrl, clock, reset=None, enable=None, reset_active_level=True, *args, **kwargs): self.log = logging.getLogger(f"cocotb.{data._path}") self.data = data self.ctrl = ctrl @@ -342,7 +342,7 @@ class XgmiiSink(Reset): self._run_cr = None - self._init_reset(reset) + self._init_reset(reset, reset_active_level) async def recv(self, compact=True): while self.empty():