aboutsummaryrefslogtreecommitdiff
path: root/src/intersim2/.svn/pristine/da
diff options
context:
space:
mode:
authorMyrice <[email protected]>2015-04-07 14:43:05 -0700
committerMyrice <[email protected]>2015-04-07 14:43:05 -0700
commit6b9eb92bd0b03d69a2f2e9c075a8af99d860d4d1 (patch)
treec741ac460cb86219446070765be97536143def55 /src/intersim2/.svn/pristine/da
parent4dc9d53085b568aea0cefe75d599f87bb5e0841f (diff)
Booksim2 abandoned svn and moved to github (https://github.com/booksim/booksim2). This .svn folder is useless now and should be deleted.
For further integration, a git submodule/git subtree may be used. Since I modified their source code, we cannot use git submodule/git subtree easily. Signed-off-by: Myrice <[email protected]>
Diffstat (limited to 'src/intersim2/.svn/pristine/da')
-rw-r--r--src/intersim2/.svn/pristine/da/dace18d8332403831e17e47c9f2dac7ee20fe786.svn-base125
1 files changed, 0 insertions, 125 deletions
diff --git a/src/intersim2/.svn/pristine/da/dace18d8332403831e17e47c9f2dac7ee20fe786.svn-base b/src/intersim2/.svn/pristine/da/dace18d8332403831e17e47c9f2dac7ee20fe786.svn-base
deleted file mode 100644
index eba0184..0000000
--- a/src/intersim2/.svn/pristine/da/dace18d8332403831e17e47c9f2dac7ee20fe786.svn-base
+++ /dev/null
@@ -1,125 +0,0 @@
-// $Id$
-
-/*
- Copyright (c) 2007-2012, Trustees of The Leland Stanford Junior University
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-//////////////////////////////////////////////////////////////////////
-//
-// File Name: channel.hpp
-//
-// The Channel models a generic channel with a multi-cycle
-// transmission delay. The channel latency can be specified as
-// an integer number of simulator cycles.
-//
-/////
-#ifndef _CHANNEL_HPP
-#define _CHANNEL_HPP
-
-#include <queue>
-#include <cassert>
-
-#include "globals.hpp"
-#include "module.hpp"
-#include "timed_module.hpp"
-
-using namespace std;
-
-template<typename T>
-class Channel : public TimedModule {
-public:
- Channel(Module * parent, string const & name);
- virtual ~Channel() {}
-
- // Physical Parameters
- void SetLatency(int cycles);
- int GetLatency() const { return _delay ; }
-
- // Send data
- virtual void Send(T * data);
-
- // Receive data
- virtual T * Receive();
-
- virtual void ReadInputs();
- virtual void Evaluate() {}
- virtual void WriteOutputs();
-
-protected:
- int _delay;
- T * _input;
- T * _output;
- queue<pair<int, T *> > _wait_queue;
-
-};
-
-template<typename T>
-Channel<T>::Channel(Module * parent, string const & name)
- : TimedModule(parent, name), _delay(1), _input(0), _output(0) {
-}
-
-template<typename T>
-void Channel<T>::SetLatency(int cycles) {
- if(cycles <= 0) {
- Error("Channel must have positive delay.");
- }
- _delay = cycles ;
-}
-
-template<typename T>
-void Channel<T>::Send(T * data) {
- _input = data;
-}
-
-template<typename T>
-T * Channel<T>::Receive() {
- return _output;
-}
-
-template<typename T>
-void Channel<T>::ReadInputs() {
- if(_input) {
- _wait_queue.push(make_pair(GetSimTime() + _delay - 1, _input));
- _input = 0;
- }
-}
-
-template<typename T>
-void Channel<T>::WriteOutputs() {
- _output = 0;
- if(_wait_queue.empty()) {
- return;
- }
- pair<int, T *> const & item = _wait_queue.front();
- int const & time = item.first;
- if(GetSimTime() < time) {
- return;
- }
- assert(GetSimTime() == time);
- _output = item.second;
- assert(_output);
- _wait_queue.pop();
-}
-
-#endif