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