diff options
| author | Myrice <[email protected]> | 2015-04-07 14:43:05 -0700 |
|---|---|---|
| committer | Myrice <[email protected]> | 2015-04-07 14:43:05 -0700 |
| commit | 6b9eb92bd0b03d69a2f2e9c075a8af99d860d4d1 (patch) | |
| tree | c741ac460cb86219446070765be97536143def55 /src/intersim2/.svn/pristine/3c | |
| parent | 4dc9d53085b568aea0cefe75d599f87bb5e0841f (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/3c')
| -rw-r--r-- | src/intersim2/.svn/pristine/3c/3c57b304902a442e45bf4e4225aac564cd2bdc26.svn-base | 62 | ||||
| -rw-r--r-- | src/intersim2/.svn/pristine/3c/3c8671257ad287c8e877c0942bdc9f16e9f7fe0c.svn-base | 162 |
2 files changed, 0 insertions, 224 deletions
diff --git a/src/intersim2/.svn/pristine/3c/3c57b304902a442e45bf4e4225aac564cd2bdc26.svn-base b/src/intersim2/.svn/pristine/3c/3c57b304902a442e45bf4e4225aac564cd2bdc26.svn-base deleted file mode 100644 index 37133f0..0000000 --- a/src/intersim2/.svn/pristine/3c/3c57b304902a442e45bf4e4225aac564cd2bdc26.svn-base +++ /dev/null @@ -1,62 +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. -*/ - -#ifndef _MODULE_HPP_ -#define _MODULE_HPP_ - -#include "booksim.hpp" - -#include <string> -#include <vector> -#include <iostream> - -class Module { -private: - string _name; - string _fullname; - - vector<Module *> _children; - -protected: - void _AddChild( Module *child ); - -public: - Module( Module *parent, const string& name ); - virtual ~Module( ) { } - - inline const string & Name() const { return _name; } - inline const string & FullName() const { return _fullname; } - - void DisplayHierarchy( int level = 0, ostream & os = cout ) const; - - void Error( const string& msg ) const; - void Debug( const string& msg ) const; - - virtual void Display( ostream & os = cout ) const; -}; - -#endif diff --git a/src/intersim2/.svn/pristine/3c/3c8671257ad287c8e877c0942bdc9f16e9f7fe0c.svn-base b/src/intersim2/.svn/pristine/3c/3c8671257ad287c8e877c0942bdc9f16e9f7fe0c.svn-base deleted file mode 100644 index 2084eec..0000000 --- a/src/intersim2/.svn/pristine/3c/3c8671257ad287c8e877c0942bdc9f16e9f7fe0c.svn-base +++ /dev/null @@ -1,162 +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. -*/ - -#include "booksim.hpp" -#include <vector> -#include <sstream> - -#include "fly.hpp" -#include "misc_utils.hpp" - -//#define DEBUG_FLY - -KNFly::KNFly( const Configuration &config, const string & name ) : -Network( config, name ) -{ - _ComputeSize( config ); - _Alloc( ); - _BuildNet( config ); -} - -void KNFly::_ComputeSize( const Configuration &config ) -{ - _k = config.GetInt( "k" ); - _n = config.GetInt( "n" ); - - gK = _k; gN = _n; - - _nodes = powi( _k, _n ); - - // n stages of k^(n-1) k x k switches - _size = _n*powi( _k, _n-1 ); - - // n-1 sets of wiring between the stages - _channels = (_n-1)*_nodes; -} - -void KNFly::_BuildNet( const Configuration &config ) -{ - ostringstream router_name; - - int per_stage = powi( _k, _n-1 ); - - int node = 0; - int c; - - for ( int stage = 0; stage < _n; ++stage ) { - for ( int addr = 0; addr < per_stage; ++addr ) { - - router_name << "router_" << stage << "_" << addr; - _routers[node] = Router::NewRouter( config, this, router_name.str( ), - node, _k, _k ); - _timed_modules.push_back(_routers[node]); - router_name.str(""); - -#ifdef DEBUG_FLY - cout << "connecting node " << node << " to:" << endl; -#endif - - for ( int port = 0; port < _k; ++port ) { - // Input connections - if ( stage == 0 ) { - c = addr*_k + port; - _routers[node]->AddInputChannel( _inject[c], _inject_cred[c] ); -#ifdef DEBUG_FLY - cout << " injection channel " << c << endl; -#endif - } else { - c = _InChannel( stage, addr, port ); - _routers[node]->AddInputChannel( _chan[c], _chan_cred[c] ); - _chan[c]->SetLatency( 1 ); - -#ifdef DEBUG_FLY - cout << " input channel " << c << endl; -#endif - } - - // Output connections - if ( stage == _n - 1 ) { - c = addr*_k + port; - _routers[node]->AddOutputChannel( _eject[c], _eject_cred[c] ); -#ifdef DEBUG_FLY - cout << " ejection channel " << c << endl; -#endif - } else { - c = _OutChannel( stage, addr, port ); - _routers[node]->AddOutputChannel( _chan[c], _chan_cred[c] ); -#ifdef DEBUG_FLY - cout << " output channel " << c << endl; -#endif - } - } - - ++node; - } - } -} - -int KNFly::_OutChannel( int stage, int addr, int port ) const -{ - return stage*_nodes + addr*_k + port; -} - -int KNFly::_InChannel( int stage, int addr, int port ) const -{ - int in_addr; - int in_port; - - // Channels are between {node,port} - // { d_{n-1} ... d_{n-stage} ... d_0 } and - // { d_{n-1} ... d_0 ... d_{n-stage} } - - int shift = powi( _k, _n-stage-1 ); - - int last_digit = port; - int zero_digit = ( addr / shift ) % _k; - - // swap zero and last digit to get first node's address - in_addr = addr - zero_digit*shift + last_digit*shift; - in_port = zero_digit; - - return (stage-1)*_nodes + in_addr*_k + in_port; -} - -int KNFly::GetN( ) const -{ - return _n; -} - -int KNFly::GetK( ) const -{ - return _k; -} - -double KNFly::Capacity( ) const -{ - return 1.0; -} - |
