changeset 4099669b4b3d in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=4099669b4b3d
description:
        dev: Make the ethernet devices use a non-zero clock

        This patch changes the NS gige controller to have a non-clock, and
        sets the default to 500 MHz. The blocks that could prevoiusly be
        by-passed with a zero clock are now always present, and the user is
        left with the option of setting a very high clock frequency to achieve
        a similar performance.

diffstat:

 src/dev/Ethernet.py |   2 +-
 src/dev/ns_gige.cc  |  38 +++++++++++++++++---------------------
 src/dev/sinic.cc    |   2 +-
 3 files changed, 19 insertions(+), 23 deletions(-)

diffs (103 lines):

diff -r 4bf9aa9d40bb -r 4099669b4b3d src/dev/Ethernet.py
--- a/src/dev/Ethernet.py       Mon Jan 07 13:05:39 2013 -0500
+++ b/src/dev/Ethernet.py       Mon Jan 07 13:05:39 2013 -0500
@@ -138,7 +138,7 @@
         "Ethernet Hardware Address")
 
     # Override the default clock
-    clock = '0ns'
+    clock = '500MHz'
 
     dma_read_delay = Param.Latency('0us', "fixed delay for dma reads")
     dma_read_factor = Param.Latency('0us', "multiplier for dma reads")
diff -r 4bf9aa9d40bb -r 4099669b4b3d src/dev/ns_gige.cc
--- a/src/dev/ns_gige.cc        Mon Jan 07 13:05:39 2013 -0500
+++ b/src/dev/ns_gige.cc        Mon Jan 07 13:05:39 2013 -0500
@@ -1138,17 +1138,15 @@
     uint32_t &extsts = is64bit ? rxDesc64.extsts : rxDesc32.extsts;
 
   next:
-    if (clock) {
-        if (rxKickTick > curTick()) {
-            DPRINTF(EthernetSM, "receive kick exiting, can't run till %d\n",
-                    rxKickTick);
+    if (rxKickTick > curTick()) {
+        DPRINTF(EthernetSM, "receive kick exiting, can't run till %d\n",
+                rxKickTick);
 
-            goto exit;
-        }
+        goto exit;
+    }
 
-        // Go to the next state machine clock tick.
-        rxKickTick = curTick() + clockPeriod();
-    }
+    // Go to the next state machine clock tick.
+    rxKickTick = clockEdge(Cycles(1));
 
     switch(rxDmaState) {
       case dmaReadWaiting:
@@ -1457,7 +1455,7 @@
     DPRINTF(EthernetSM, "rx state machine exited rxState=%s\n",
             NsRxStateStrings[rxState]);
 
-    if (clock && !rxKickEvent.scheduled())
+    if (!rxKickEvent.scheduled())
         schedule(rxKickEvent, rxKickTick);
 }
 
@@ -1586,16 +1584,14 @@
     uint32_t &extsts = is64bit ? txDesc64.extsts : txDesc32.extsts;
 
   next:
-    if (clock) {
-        if (txKickTick > curTick()) {
-            DPRINTF(EthernetSM, "transmit kick exiting, can't run till %d\n",
-                    txKickTick);
-            goto exit;
-        }
+    if (txKickTick > curTick()) {
+        DPRINTF(EthernetSM, "transmit kick exiting, can't run till %d\n",
+                txKickTick);
+        goto exit;
+    }
 
-        // Go to the next state machine clock tick.
-        txKickTick = curTick() + clockPeriod();
-    }
+    // Go to the next state machine clock tick.
+    txKickTick = clockEdge(Cycles(1));
 
     switch(txDmaState) {
       case dmaReadWaiting:
@@ -1900,7 +1896,7 @@
     DPRINTF(EthernetSM, "tx state machine exited txState=%s\n",
             NsTxStateStrings[txState]);
 
-    if (clock && !txKickEvent.scheduled())
+    if (!txKickEvent.scheduled())
         schedule(txKickEvent, txKickTick);
 }
 
@@ -2015,7 +2011,7 @@
 
     DPRINTF(Ethernet, "transfer complete: data in txFifo...schedule xmit\n");
 
-    reschedule(txEvent, curTick() + clockPeriod(), true);
+    reschedule(txEvent, clockEdge(Cycles(1)), true);
 }
 
 bool
diff -r 4bf9aa9d40bb -r 4099669b4b3d src/dev/sinic.cc
--- a/src/dev/sinic.cc  Mon Jan 07 13:05:39 2013 -0500
+++ b/src/dev/sinic.cc  Mon Jan 07 13:05:39 2013 -0500
@@ -1159,7 +1159,7 @@
 
     DPRINTF(Ethernet, "transfer complete: data in txFifo...schedule xmit\n");
 
-    reschedule(txEvent, curTick() + clockPeriod(), true);
+    reschedule(txEvent, clockEdge(Cycles(1)), true);
 }
 
 bool
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to