arbiter.h revision 10152
12SN/A/***************************************************************************** 21762SN/A * McPAT/CACTI 32SN/A * SOFTWARE LICENSE AGREEMENT 42SN/A * Copyright 2012 Hewlett-Packard Development Company, L.P. 52SN/A * All Rights Reserved 62SN/A * 72SN/A * Redistribution and use in source and binary forms, with or without 82SN/A * modification, are permitted provided that the following conditions are 92SN/A * met: redistributions of source code must retain the above copyright 102SN/A * notice, this list of conditions and the following disclaimer; 112SN/A * redistributions in binary form must reproduce the above copyright 122SN/A * notice, this list of conditions and the following disclaimer in the 132SN/A * documentation and/or other materials provided with the distribution; 142SN/A * neither the name of the copyright holders nor the names of its 152SN/A * contributors may be used to endorse or promote products derived from 162SN/A * this software without specific prior written permission. 172SN/A 182SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 192SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 202SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 212SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 222SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 232SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 242SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 252SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 262SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 272665Ssaidi@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 282665Ssaidi@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.” 292665Ssaidi@eecs.umich.edu * 302SN/A ***************************************************************************/ 312SN/A 321112SN/A#ifndef __ARBITER__ 331112SN/A#define __ARBITER__ 342SN/A 353386Sgblack@eecs.umich.edu#include <assert.h> 362SN/A 372SN/A#include <iostream> 382SN/A 392SN/A#include "basic_circuit.h" 402SN/A#include "cacti_interface.h" 412SN/A#include "component.h" 422SN/A#include "mat.h" 432SN/A#include "parameter.h" 442SN/A#include "wire.h" 452SN/A 462SN/Aclass Arbiter : public Component 472SN/A{ 482SN/A public: 492SN/A Arbiter( 502SN/A double Req, 512SN/A double flit_sz, 522SN/A double output_len, 532SN/A TechnologyParameter::DeviceType *dt = &(g_tp.peri_global)); 542SN/A ~Arbiter(); 552SN/A 562SN/A void print_arbiter(); 572SN/A double arb_req(); 582SN/A double arb_pri(); 592SN/A double arb_grant(); 602SN/A double arb_int(); 612SN/A void compute_power(); 622SN/A double Cw3(double len); 632SN/A double crossbar_ctrline(); 642SN/A double transmission_buf_ctrcap(); 652SN/A 662SN/A 672SN/A 682SN/A private: 692SN/A double NTn1, PTn1, NTn2, PTn2, R, PTi, NTi; 702SN/A double flit_size; 712SN/A double NTtr, PTtr; 723422Sgblack@eecs.umich.edu double o_len; 733422Sgblack@eecs.umich.edu TechnologyParameter::DeviceType *deviceType; 743422Sgblack@eecs.umich.edu double TriS1, TriS2; 753422Sgblack@eecs.umich.edu double min_w_pmos, Vdd; 763422Sgblack@eecs.umich.edu 773422Sgblack@eecs.umich.edu}; 783422Sgblack@eecs.umich.edu 793422Sgblack@eecs.umich.edu#endif 803422Sgblack@eecs.umich.edu