Files
OpenSTA/include/sta/PowerClass.hh
James Cherry 7845105f4f power cudd support
commit 872e7f91b4ce2a475063296b85ba99a2c76f665c
Author: James Cherry <cherry@parallaxsw.com>
Date:   Fri Nov 10 09:54:02 2023 -0700

    power cudd eval diff

    Signed-off-by: James Cherry <cherry@parallaxsw.com>

commit 908dfaa08b165d59a38c25b5f534db4ca02540d8
Author: James Cherry <cherry@parallaxsw.com>
Date:   Wed Nov 8 19:13:33 2023 -0700

    Power::seqActivity

    Signed-off-by: James Cherry <cherry@parallaxsw.com>

commit 47a74dd6989dbd7cfe8127aa0be95dcf19a3cff4
Author: James Cherry <cherry@parallaxsw.com>
Date:   Wed Nov 8 18:03:01 2023 -0700

    cudd default cache init

    Signed-off-by: James Cherry <cherry@parallaxsw.com>

commit 87890f699280e0f4aea6c5610a2f1949a46a07ae
Author: James Cherry <cherry@parallaxsw.com>
Date:   Wed Nov 8 13:48:58 2023 -0700

    power buffer activity origin

    Signed-off-by: James Cherry <cherry@parallaxsw.com>

commit 584b8124ab98d3cd42e23383aa35edb33e26e9d2
Author: James Cherry <cherry@parallaxsw.com>
Date:   Wed Nov 8 12:26:16 2023 -0700

    power use cudd

    Signed-off-by: James Cherry <cherry@parallaxsw.com>

Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-11-10 09:59:50 -07:00

82 lines
1.9 KiB
C++

// OpenSTA, Static Timing Analyzer
// Copyright (c) 2023, Parallax Software, Inc.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
#pragma once
namespace sta {
enum class PwrActivityOrigin
{
global,
input,
user,
vcd,
propagated,
clock,
constant,
defaulted,
unknown
};
class PwrActivity
{
public:
PwrActivity();
PwrActivity(float activity,
float duty,
PwrActivityOrigin origin);
float activity() const { return activity_; }
void setActivity(float activity);
float duty() const { return duty_; }
void setDuty(float duty);
PwrActivityOrigin origin() { return origin_; }
void setOrigin(PwrActivityOrigin origin);
const char *originName() const;
void set(float activity,
float duty,
PwrActivityOrigin origin);
bool isSet() const;
private:
void check();
// In general activity is per clock cycle, NOT per second.
float activity_;
float duty_;
PwrActivityOrigin origin_;
static constexpr float min_activity = 1E-10;
};
class PowerResult
{
public:
PowerResult();
void clear();
float &internal() { return internal_; }
float &switching() { return switching_; }
float &leakage() { return leakage_; }
float total() const;
void incr(PowerResult &result);
private:
float internal_;
float switching_;
float leakage_;
};
} // namespace