drampower.hh revision 10431:d9415c7f61a9
110037SARM gem5 Developers/*
211586SDylan.Johnson@ARM.com * Copyright (const c) 2014 ARM Limited
310037SARM gem5 Developers * All rights reserved
410037SARM gem5 Developers *
510037SARM gem5 Developers * The license below extends only to copyright in the software and shall
610037SARM gem5 Developers * not be rued as granting a license to any other intellectual
710037SARM gem5 Developers * property including but not limited to intellectual property relating
810037SARM gem5 Developers * to a hardware implementation of the functionality of the software
910037SARM gem5 Developers * licensed hereunder.  You may use the software subject to the license
1010037SARM gem5 Developers * terms below provided that you ensure that this notice is replicated
1110037SARM gem5 Developers * unmodified and in its entirety in all distributions of the software,
1210037SARM gem5 Developers * modified or unmodified, in source code or in binary form.
1310037SARM gem5 Developers
1410037SARM gem5 Developers * Redistribution and use in source and binary forms, with or without
1510037SARM gem5 Developers * modification, are permitted provided that the following conditions are
1610037SARM gem5 Developers * met: redistributions of source code must retain the above copyright
1710037SARM gem5 Developers * notice, this list of conditions and the following disclaimer;
1810037SARM gem5 Developers * redistributions in binary form must reproduce the above copyright
1910037SARM gem5 Developers * notice, this list of conditions and the following disclaimer in the
2010037SARM gem5 Developers * documentation and/or other materials provided with the distribution;
2110037SARM gem5 Developers * neither the name of the copyright holders nor the names of its
2210037SARM gem5 Developers * contributors may be used to endorse or promote products derived from
2310037SARM gem5 Developers * this software without specific prior written permission.
2410037SARM gem5 Developers *
2510037SARM gem5 Developers * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2610037SARM gem5 Developers * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2710037SARM gem5 Developers * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2810037SARM gem5 Developers * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2910037SARM gem5 Developers * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3010037SARM gem5 Developers * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (const INCLUDING, BUT NOT
3110037SARM gem5 Developers * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3210037SARM gem5 Developers * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3310037SARM gem5 Developers * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3410037SARM gem5 Developers * (const INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3510037SARM gem5 Developers * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3610037SARM gem5 Developers *
3710037SARM gem5 Developers * Authors: Omar Naji
3810037SARM gem5 Developers */
3910037SARM gem5 Developers
4010037SARM gem5 Developers/**
4111793Sbrandon.potter@amd.com * @file
4211793Sbrandon.potter@amd.com * DRAMPower declaration
4310037SARM gem5 Developers */
4410037SARM gem5 Developers
4510037SARM gem5 Developers#ifndef __MEM_DRAM_POWER_HH__
4610037SARM gem5 Developers#define __MEM_DRAM_POWER_HH__
4710037SARM gem5 Developers
4810037SARM gem5 Developers#include "libdrampower/LibDRAMPower.h"
4910037SARM gem5 Developers#include "params/DRAMCtrl.hh"
5010037SARM gem5 Developers
5110037SARM gem5 Developers/**
5210037SARM gem5 Developers * DRAMPower is a standalone tool which calculates the power consumed by a
5310037SARM gem5 Developers * DRAM in the system. This class wraps the DRAMPower library.
5410037SARM gem5 Developers */
5510037SARM gem5 Developersclass DRAMPower
5610037SARM gem5 Developers{
5710037SARM gem5 Developers
5810037SARM gem5 Developers private:
5910037SARM gem5 Developers
6010037SARM gem5 Developers    /**
6110037SARM gem5 Developers     * Transform the architechture parameters defined in
6210037SARM gem5 Developers     * DRAMCtrlParams to the memSpec of DRAMPower
6310037SARM gem5 Developers     */
6411586SDylan.Johnson@ARM.com    static Data::MemArchitectureSpec getArchParams(const DRAMCtrlParams* p);
6511586SDylan.Johnson@ARM.com
6611586SDylan.Johnson@ARM.com    /**
6711586SDylan.Johnson@ARM.com     * Transforms the timing parameters defined in DRAMCtrlParams to
6811586SDylan.Johnson@ARM.com     * the memSpec of DRAMPower
6911586SDylan.Johnson@ARM.com     */
7011586SDylan.Johnson@ARM.com    static Data::MemTimingSpec getTimingParams(const DRAMCtrlParams* p);
7111586SDylan.Johnson@ARM.com
7211586SDylan.Johnson@ARM.com    /**
7311586SDylan.Johnson@ARM.com     * Transforms the power and current parameters defined in
7411586SDylan.Johnson@ARM.com     * DRAMCtrlParam to the memSpec of DRAMPower
7510037SARM gem5 Developers     */
7610037SARM gem5 Developers    static Data::MemPowerSpec getPowerParams(const DRAMCtrlParams* p);
7710037SARM gem5 Developers
7810037SARM gem5 Developers    /**
7910037SARM gem5 Developers     * Determine data rate, either one or two.
8010037SARM gem5 Developers     */
8110037SARM gem5 Developers    static uint8_t getDataRate(const DRAMCtrlParams* p);
8210037SARM gem5 Developers
8310037SARM gem5 Developers    /**
8410037SARM gem5 Developers     * Determine if DRAM has two voltage domains (or one)
8510037SARM gem5 Developers     */
8610037SARM gem5 Developers    static bool hasTwoVDD(const DRAMCtrlParams* p);
8710037SARM gem5 Developers
8810037SARM gem5 Developers    /**
8910037SARM gem5 Developers     * Return an instance of MemSpec based on the DRAMCtrlParams
9010037SARM gem5 Developers     */
9110037SARM gem5 Developers    static Data::MemorySpecification getMemSpec(const DRAMCtrlParams* p);
9210037SARM gem5 Developers
9310037SARM gem5 Developers public:
9410037SARM gem5 Developers
9510037SARM gem5 Developers    // Instance of DRAMPower Library
9610037SARM gem5 Developers    libDRAMPower powerlib;
9712734Sandreas.sandberg@arm.com
9810037SARM gem5 Developers    DRAMPower(const DRAMCtrlParams* p, bool include_io);
9910037SARM gem5 Developers
10012734Sandreas.sandberg@arm.com};
10110037SARM gem5 Developers
10210037SARM gem5 Developers#endif //__MEM_DRAM_POWER_HH__
10310037SARM gem5 Developers
10410037SARM gem5 Developers