voltage_domain.cc revision 10022
19827Sakash.bagdia@arm.com/*
29827Sakash.bagdia@arm.com * Copyright (c) 2012 ARM Limited
39827Sakash.bagdia@arm.com * All rights reserved
49827Sakash.bagdia@arm.com *
59827Sakash.bagdia@arm.com * The license below extends only to copyright in the software and shall
69827Sakash.bagdia@arm.com * not be construed as granting a license to any other intellectual
79827Sakash.bagdia@arm.com * property including but not limited to intellectual property relating
89827Sakash.bagdia@arm.com * to a hardware implementation of the functionality of the software
99827Sakash.bagdia@arm.com * licensed hereunder.  You may use the software subject to the license
109827Sakash.bagdia@arm.com * terms below provided that you ensure that this notice is replicated
119827Sakash.bagdia@arm.com * unmodified and in its entirety in all distributions of the software,
129827Sakash.bagdia@arm.com * modified or unmodified, in source code or in binary form.
139827Sakash.bagdia@arm.com *
149827Sakash.bagdia@arm.com * Redistribution and use in source and binary forms, with or without
159827Sakash.bagdia@arm.com * modification, are permitted provided that the following conditions are
169827Sakash.bagdia@arm.com * met: redistributions of source code must retain the above copyright
179827Sakash.bagdia@arm.com * notice, this list of conditions and the following disclaimer;
189827Sakash.bagdia@arm.com * redistributions in binary form must reproduce the above copyright
199827Sakash.bagdia@arm.com * notice, this list of conditions and the following disclaimer in the
209827Sakash.bagdia@arm.com * documentation and/or other materials provided with the distribution;
219827Sakash.bagdia@arm.com * neither the name of the copyright holders nor the names of its
229827Sakash.bagdia@arm.com * contributors may be used to endorse or promote products derived from
239827Sakash.bagdia@arm.com * this software without specific prior written permission.
249827Sakash.bagdia@arm.com *
259827Sakash.bagdia@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
269827Sakash.bagdia@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
279827Sakash.bagdia@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
289827Sakash.bagdia@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
299827Sakash.bagdia@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
309827Sakash.bagdia@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
319827Sakash.bagdia@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
329827Sakash.bagdia@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
339827Sakash.bagdia@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
349827Sakash.bagdia@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
359827Sakash.bagdia@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
369827Sakash.bagdia@arm.com *
379827Sakash.bagdia@arm.com * Authors: Vasileios Spiliopoulos
389827Sakash.bagdia@arm.com *          Akash Bagdia
399827Sakash.bagdia@arm.com */
409827Sakash.bagdia@arm.com
419827Sakash.bagdia@arm.com#include "debug/VoltageDomain.hh"
429827Sakash.bagdia@arm.com#include "params/VoltageDomain.hh"
439827Sakash.bagdia@arm.com#include "sim/sim_object.hh"
449827Sakash.bagdia@arm.com#include "sim/voltage_domain.hh"
459827Sakash.bagdia@arm.com
469827Sakash.bagdia@arm.comVoltageDomain::VoltageDomain(const Params *p)
479827Sakash.bagdia@arm.com    : SimObject(p), _voltage(0)
489827Sakash.bagdia@arm.com{
499827Sakash.bagdia@arm.com    voltage(p->voltage);
509827Sakash.bagdia@arm.com}
519827Sakash.bagdia@arm.com
529827Sakash.bagdia@arm.comvoid
539827Sakash.bagdia@arm.comVoltageDomain::voltage(double voltage)
549827Sakash.bagdia@arm.com{
559827Sakash.bagdia@arm.com    if (voltage <= 0) {
569827Sakash.bagdia@arm.com        fatal("Voltage should be greater than zero.\n");
579827Sakash.bagdia@arm.com    }
589827Sakash.bagdia@arm.com
599827Sakash.bagdia@arm.com    _voltage = voltage;
609827Sakash.bagdia@arm.com    DPRINTF(VoltageDomain,
619827Sakash.bagdia@arm.com            "Setting voltage to %f for domain %s\n", _voltage, name());
629827Sakash.bagdia@arm.com}
639827Sakash.bagdia@arm.com
6410022SAndreas.Hansson@ARM.comvoid
6510022SAndreas.Hansson@ARM.comVoltageDomain::regStats()
6610022SAndreas.Hansson@ARM.com{
6710022SAndreas.Hansson@ARM.com    using namespace Stats;
6810022SAndreas.Hansson@ARM.com
6910022SAndreas.Hansson@ARM.com    currentVoltage
7010022SAndreas.Hansson@ARM.com        .scalar(_voltage)
7110022SAndreas.Hansson@ARM.com        .name(params()->name + ".voltage")
7210022SAndreas.Hansson@ARM.com        .desc("Voltage in Volts")
7310022SAndreas.Hansson@ARM.com        ;
7410022SAndreas.Hansson@ARM.com}
7510022SAndreas.Hansson@ARM.com
769827Sakash.bagdia@arm.comVoltageDomain *
779827Sakash.bagdia@arm.comVoltageDomainParams::create()
789827Sakash.bagdia@arm.com{
799827Sakash.bagdia@arm.com    return new VoltageDomain(this);
809827Sakash.bagdia@arm.com}
81