summaryrefslogtreecommitdiff
path: root/src/gpuwattch/cacti/decoder.h
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2021-10-17 19:29:19 -0700
committerGitHub <[email protected]>2021-10-17 19:29:19 -0700
commit6b244a5d3be7811f16c312905c1c7fee137ac7a4 (patch)
treee82f15238e79a03f3cc2435d4f9bb48d5023e8ae /src/gpuwattch/cacti/decoder.h
parentda0aef2e38148fb4da2d078de793159b786aee2d (diff)
parent84c6cf45131e42b1a724ebf7977987a9ddb70db9 (diff)
Merge pull request #237 from VijayKandiah/dev
AccelWattch v1.0 Integration into Dev
Diffstat (limited to 'src/gpuwattch/cacti/decoder.h')
-rw-r--r--src/gpuwattch/cacti/decoder.h246
1 files changed, 0 insertions, 246 deletions
diff --git a/src/gpuwattch/cacti/decoder.h b/src/gpuwattch/cacti/decoder.h
deleted file mode 100644
index 6366e16..0000000
--- a/src/gpuwattch/cacti/decoder.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/*****************************************************************************
- * McPAT/CACTI
- * SOFTWARE LICENSE AGREEMENT
- * Copyright 2012 Hewlett-Packard Development Company, L.P.
- * 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;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
-
- * 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 __DECODER_H__
-#define __DECODER_H__
-
-#include "area.h"
-#include "component.h"
-#include "parameter.h"
-#include <vector>
-
-using namespace std;
-
-
-class Decoder : public Component
-{
- public:
- Decoder(
- int _num_dec_signals,
- bool flag_way_select,
- double _C_ld_dec_out,
- double _R_wire_dec_out,
- bool fully_assoc_,
- bool is_dram_,
- bool is_wl_tr_,
- const Area & cell_);
-
- bool exist;
- int num_in_signals;
- double C_ld_dec_out;
- double R_wire_dec_out;
- int num_gates;
- int num_gates_min;
- double w_dec_n[MAX_NUMBER_GATES_STAGE];
- double w_dec_p[MAX_NUMBER_GATES_STAGE];
- double delay;
- //powerDef power;
- bool fully_assoc;
- bool is_dram;
- bool is_wl_tr;
- const Area & cell;
-
-
- void compute_widths();
- void compute_area();
- double compute_delays(double inrisetime); // return outrisetime
-
- void leakage_feedback(double temperature);
-};
-
-
-
-class PredecBlk : public Component
-{
- public:
- PredecBlk(
- int num_dec_signals,
- Decoder * dec,
- double C_wire_predec_blk_out,
- double R_wire_predec_blk_out,
- int num_dec_per_predec,
- bool is_dram_,
- bool is_blk1);
-
- Decoder * dec;
- bool exist;
- int number_input_addr_bits;
- double C_ld_predec_blk_out;
- double R_wire_predec_blk_out;
- int branch_effort_nand2_gate_output;
- int branch_effort_nand3_gate_output;
- bool flag_two_unique_paths;
- int flag_L2_gate;
- int number_inputs_L1_gate;
- int number_gates_L1_nand2_path;
- int number_gates_L1_nand3_path;
- int number_gates_L2;
- int min_number_gates_L1;
- int min_number_gates_L2;
- int num_L1_active_nand2_path;
- int num_L1_active_nand3_path;
- double w_L1_nand2_n[MAX_NUMBER_GATES_STAGE];
- double w_L1_nand2_p[MAX_NUMBER_GATES_STAGE];
- double w_L1_nand3_n[MAX_NUMBER_GATES_STAGE];
- double w_L1_nand3_p[MAX_NUMBER_GATES_STAGE];
- double w_L2_n[MAX_NUMBER_GATES_STAGE];
- double w_L2_p[MAX_NUMBER_GATES_STAGE];
- double delay_nand2_path;
- double delay_nand3_path;
- powerDef power_nand2_path;
- powerDef power_nand3_path;
- powerDef power_L2;
-
- bool is_dram_;
-
- void compute_widths();
- void compute_area();
-
- void leakage_feedback(double temperature);
-
- pair<double, double> compute_delays(pair<double, double> inrisetime); // <nand2, nand3>
- // return <outrise_nand2, outrise_nand3>
-};
-
-
-class PredecBlkDrv : public Component
-{
- public:
- PredecBlkDrv(
- int way_select,
- PredecBlk * blk_,
- bool is_dram);
-
- int flag_driver_exists;
- int number_input_addr_bits;
- int number_gates_nand2_path;
- int number_gates_nand3_path;
- int min_number_gates;
- int num_buffers_driving_1_nand2_load;
- int num_buffers_driving_2_nand2_load;
- int num_buffers_driving_4_nand2_load;
- int num_buffers_driving_2_nand3_load;
- int num_buffers_driving_8_nand3_load;
- int num_buffers_nand3_path;
- double c_load_nand2_path_out;
- double c_load_nand3_path_out;
- double r_load_nand2_path_out;
- double r_load_nand3_path_out;
- double width_nand2_path_n[MAX_NUMBER_GATES_STAGE];
- double width_nand2_path_p[MAX_NUMBER_GATES_STAGE];
- double width_nand3_path_n[MAX_NUMBER_GATES_STAGE];
- double width_nand3_path_p[MAX_NUMBER_GATES_STAGE];
- double delay_nand2_path;
- double delay_nand3_path;
- powerDef power_nand2_path;
- powerDef power_nand3_path;
-
- PredecBlk * blk;
- Decoder * dec;
- bool is_dram_;
- int way_select;
-
- void compute_widths();
- void compute_area();
-
- void leakage_feedback(double temperature);
-
-
- pair<double, double> compute_delays(
- double inrisetime_nand2_path,
- double inrisetime_nand3_path); // return <outrise_nand2, outrise_nand3>
-
- inline int num_addr_bits_nand2_path()
- {
- return num_buffers_driving_1_nand2_load +
- num_buffers_driving_2_nand2_load +
- num_buffers_driving_4_nand2_load;
- }
- inline int num_addr_bits_nand3_path()
- {
- return num_buffers_driving_2_nand3_load +
- num_buffers_driving_8_nand3_load;
- }
- double get_rdOp_dynamic_E(int num_act_mats_hor_dir);
-};
-
-
-
-class Predec : public Component
-{
- public:
- Predec(
- PredecBlkDrv * drv1,
- PredecBlkDrv * drv2);
-
- double compute_delays(double inrisetime); // return outrisetime
-
- void leakage_feedback(double temperature);
- PredecBlk * blk1;
- PredecBlk * blk2;
- PredecBlkDrv * drv1;
- PredecBlkDrv * drv2;
-
- powerDef block_power;
- powerDef driver_power;
-
- private:
- // returns <delay, risetime>
- pair<double, double> get_max_delay_before_decoder(
- pair<double, double> input_pair1,
- pair<double, double> input_pair2);
-};
-
-
-
-class Driver : public Component
-{
- public:
- Driver(double c_gate_load_, double c_wire_load_, double r_wire_load_, bool is_dram);
-
- int number_gates;
- int min_number_gates;
- double width_n[MAX_NUMBER_GATES_STAGE];
- double width_p[MAX_NUMBER_GATES_STAGE];
- double c_gate_load;
- double c_wire_load;
- double r_wire_load;
- double delay;
- powerDef power;
- bool is_dram_;
-
- void compute_widths();
- double compute_delay(double inrisetime);
-};
-
-
-#endif