technology.cc revision 10152
110152Satgutier@umich.edu/*****************************************************************************
210152Satgutier@umich.edu *                                McPAT/CACTI
310152Satgutier@umich.edu *                      SOFTWARE LICENSE AGREEMENT
410152Satgutier@umich.edu *            Copyright 2012 Hewlett-Packard Development Company, L.P.
510152Satgutier@umich.edu *                          All Rights Reserved
610152Satgutier@umich.edu *
710152Satgutier@umich.edu * Redistribution and use in source and binary forms, with or without
810152Satgutier@umich.edu * modification, are permitted provided that the following conditions are
910152Satgutier@umich.edu * met: redistributions of source code must retain the above copyright
1010152Satgutier@umich.edu * notice, this list of conditions and the following disclaimer;
1110152Satgutier@umich.edu * redistributions in binary form must reproduce the above copyright
1210152Satgutier@umich.edu * notice, this list of conditions and the following disclaimer in the
1310152Satgutier@umich.edu * documentation and/or other materials provided with the distribution;
1410152Satgutier@umich.edu * neither the name of the copyright holders nor the names of its
1510152Satgutier@umich.edu * contributors may be used to endorse or promote products derived from
1610152Satgutier@umich.edu * this software without specific prior written permission.
1710152Satgutier@umich.edu
1810152Satgutier@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1910152Satgutier@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2010152Satgutier@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2110152Satgutier@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2210152Satgutier@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2310152Satgutier@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2410152Satgutier@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2510152Satgutier@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2610152Satgutier@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2710152Satgutier@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2810152Satgutier@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.”
2910152Satgutier@umich.edu *
3010152Satgutier@umich.edu ***************************************************************************/
3110152Satgutier@umich.edu
3210152Satgutier@umich.edu
3310152Satgutier@umich.edu#include "basic_circuit.h"
3410152Satgutier@umich.edu
3510152Satgutier@umich.edu#include "parameter.h"
3610152Satgutier@umich.edu
3710152Satgutier@umich.edudouble wire_resistance(double resistivity, double wire_width, double wire_thickness,
3810152Satgutier@umich.edu    double barrier_thickness, double dishing_thickness, double alpha_scatter)
3910152Satgutier@umich.edu{
4010152Satgutier@umich.edu  double resistance;
4110152Satgutier@umich.edu  resistance = alpha_scatter * resistivity /((wire_thickness - barrier_thickness - dishing_thickness)*(wire_width - 2 * barrier_thickness));
4210152Satgutier@umich.edu  return(resistance);
4310152Satgutier@umich.edu}
4410152Satgutier@umich.edu
4510152Satgutier@umich.edudouble wire_capacitance(double wire_width, double wire_thickness, double wire_spacing,
4610152Satgutier@umich.edu    double ild_thickness, double miller_value, double horiz_dielectric_constant,
4710152Satgutier@umich.edu    double vert_dielectric_constant, double fringe_cap)
4810152Satgutier@umich.edu{
4910152Satgutier@umich.edu  double vertical_cap, sidewall_cap, total_cap;
5010152Satgutier@umich.edu  vertical_cap = 2 * PERMITTIVITY_FREE_SPACE * vert_dielectric_constant * wire_width / ild_thickness;
5110152Satgutier@umich.edu  sidewall_cap = 2 * PERMITTIVITY_FREE_SPACE * miller_value * horiz_dielectric_constant * wire_thickness / wire_spacing;
5210152Satgutier@umich.edu  total_cap = vertical_cap + sidewall_cap + fringe_cap;
5310152Satgutier@umich.edu  return(total_cap);
5410152Satgutier@umich.edu}
5510152Satgutier@umich.edu
5610152Satgutier@umich.edu
5710152Satgutier@umich.eduvoid init_tech_params(double technology, bool is_tag)
5810152Satgutier@umich.edu{
5910152Satgutier@umich.edu  int    iter, tech, tech_lo, tech_hi;
6010152Satgutier@umich.edu  double curr_alpha, curr_vpp;
6110152Satgutier@umich.edu  double wire_width, wire_thickness, wire_spacing,
6210152Satgutier@umich.edu         fringe_cap, pmos_to_nmos_sizing_r;
6310152Satgutier@umich.edu//  double aspect_ratio,ild_thickness, miller_value = 1.5, horiz_dielectric_constant, vert_dielectric_constant;
6410152Satgutier@umich.edu  double barrier_thickness, dishing_thickness, alpha_scatter;
6510152Satgutier@umich.edu  double curr_vdd_dram_cell, curr_v_th_dram_access_transistor, curr_I_on_dram_cell, curr_c_dram_cell;
6610152Satgutier@umich.edu
6710152Satgutier@umich.edu  uint32_t ram_cell_tech_type    = (is_tag) ? g_ip->tag_arr_ram_cell_tech_type : g_ip->data_arr_ram_cell_tech_type;
6810152Satgutier@umich.edu  uint32_t peri_global_tech_type = (is_tag) ? g_ip->tag_arr_peri_global_tech_type : g_ip->data_arr_peri_global_tech_type;
6910152Satgutier@umich.edu
7010152Satgutier@umich.edu  technology  = technology * 1000.0;  // in the unit of nm
7110152Satgutier@umich.edu
7210152Satgutier@umich.edu  // initialize parameters
7310152Satgutier@umich.edu  g_tp.reset();
7410152Satgutier@umich.edu  double gmp_to_gmn_multiplier_periph_global = 0;
7510152Satgutier@umich.edu
7610152Satgutier@umich.edu  double curr_Wmemcella_dram, curr_Wmemcellpmos_dram, curr_Wmemcellnmos_dram,
7710152Satgutier@umich.edu         curr_area_cell_dram, curr_asp_ratio_cell_dram, curr_Wmemcella_sram,
7810152Satgutier@umich.edu         curr_Wmemcellpmos_sram, curr_Wmemcellnmos_sram, curr_area_cell_sram,
7910152Satgutier@umich.edu         curr_asp_ratio_cell_sram, curr_I_off_dram_cell_worst_case_length_temp;
8010152Satgutier@umich.edu  double curr_Wmemcella_cam, curr_Wmemcellpmos_cam, curr_Wmemcellnmos_cam, curr_area_cell_cam,//Sheng: CAM data
8110152Satgutier@umich.edu         curr_asp_ratio_cell_cam;
8210152Satgutier@umich.edu  double SENSE_AMP_D, SENSE_AMP_P; // J
8310152Satgutier@umich.edu  double area_cell_dram = 0;
8410152Satgutier@umich.edu  double asp_ratio_cell_dram = 0;
8510152Satgutier@umich.edu  double area_cell_sram = 0;
8610152Satgutier@umich.edu  double asp_ratio_cell_sram = 0;
8710152Satgutier@umich.edu  double area_cell_cam = 0;
8810152Satgutier@umich.edu  double asp_ratio_cell_cam = 0;
8910152Satgutier@umich.edu  double mobility_eff_periph_global = 0;
9010152Satgutier@umich.edu  double Vdsat_periph_global = 0;
9110152Satgutier@umich.edu  double nmos_effective_resistance_multiplier;
9210152Satgutier@umich.edu  double width_dram_access_transistor;
9310152Satgutier@umich.edu
9410152Satgutier@umich.edu  double curr_logic_scaling_co_eff = 0;//This is based on the reported numbers of Intel Merom 65nm, Penryn45nm and IBM cell 90/65/45 date
9510152Satgutier@umich.edu  double curr_core_tx_density = 0;//this is density per um^2; 90, ...22nm based on Intel Penryn
9610152Satgutier@umich.edu  double curr_chip_layout_overhead = 0;
9710152Satgutier@umich.edu  double curr_macro_layout_overhead = 0;
9810152Satgutier@umich.edu  double curr_sckt_co_eff = 0;
9910152Satgutier@umich.edu
10010152Satgutier@umich.edu  if (technology < 181 && technology > 179)
10110152Satgutier@umich.edu      {
10210152Satgutier@umich.edu        tech_lo = 180;
10310152Satgutier@umich.edu        tech_hi = 180;
10410152Satgutier@umich.edu      }
10510152Satgutier@umich.edu  else if (technology < 91 && technology > 89)
10610152Satgutier@umich.edu  {
10710152Satgutier@umich.edu    tech_lo = 90;
10810152Satgutier@umich.edu    tech_hi = 90;
10910152Satgutier@umich.edu  }
11010152Satgutier@umich.edu  else if (technology < 66 && technology > 64)
11110152Satgutier@umich.edu  {
11210152Satgutier@umich.edu    tech_lo = 65;
11310152Satgutier@umich.edu    tech_hi = 65;
11410152Satgutier@umich.edu  }
11510152Satgutier@umich.edu  else if (technology < 46 && technology > 44)
11610152Satgutier@umich.edu  {
11710152Satgutier@umich.edu    tech_lo = 45;
11810152Satgutier@umich.edu    tech_hi = 45;
11910152Satgutier@umich.edu  }
12010152Satgutier@umich.edu  else if (technology < 33 && technology > 31)
12110152Satgutier@umich.edu  {
12210152Satgutier@umich.edu    tech_lo = 32;
12310152Satgutier@umich.edu    tech_hi = 32;
12410152Satgutier@umich.edu  }
12510152Satgutier@umich.edu  else if (technology < 23 && technology > 21)
12610152Satgutier@umich.edu  {
12710152Satgutier@umich.edu    tech_lo = 22;
12810152Satgutier@umich.edu    tech_hi = 22;
12910152Satgutier@umich.edu    if (ram_cell_tech_type == 3 )
13010152Satgutier@umich.edu    {
13110152Satgutier@umich.edu       cout<<"current version does not support eDRAM technologies at 22nm"<<endl;
13210152Satgutier@umich.edu       exit(0);
13310152Satgutier@umich.edu    }
13410152Satgutier@umich.edu  }
13510152Satgutier@umich.edu//  else if (technology < 17 && technology > 15)
13610152Satgutier@umich.edu//  {
13710152Satgutier@umich.edu//    tech_lo = 16;
13810152Satgutier@umich.edu//    tech_hi = 16;
13910152Satgutier@umich.edu//  }
14010152Satgutier@umich.edu  else if (technology < 180 && technology > 90)
14110152Satgutier@umich.edu    {
14210152Satgutier@umich.edu      tech_lo = 180;
14310152Satgutier@umich.edu      tech_hi = 90;
14410152Satgutier@umich.edu    }
14510152Satgutier@umich.edu  else if (technology < 90 && technology > 65)
14610152Satgutier@umich.edu  {
14710152Satgutier@umich.edu    tech_lo = 90;
14810152Satgutier@umich.edu    tech_hi = 65;
14910152Satgutier@umich.edu  }
15010152Satgutier@umich.edu  else if (technology < 65 && technology > 45)
15110152Satgutier@umich.edu  {
15210152Satgutier@umich.edu    tech_lo = 65;
15310152Satgutier@umich.edu    tech_hi = 45;
15410152Satgutier@umich.edu  }
15510152Satgutier@umich.edu  else if (technology < 45 && technology > 32)
15610152Satgutier@umich.edu  {
15710152Satgutier@umich.edu    tech_lo = 45;
15810152Satgutier@umich.edu    tech_hi = 32;
15910152Satgutier@umich.edu  }
16010152Satgutier@umich.edu  else if (technology < 32 && technology > 22)
16110152Satgutier@umich.edu    {
16210152Satgutier@umich.edu      tech_lo = 32;
16310152Satgutier@umich.edu      tech_hi = 22;
16410152Satgutier@umich.edu    }
16510152Satgutier@umich.edu//  else if (technology < 22 && technology > 16)
16610152Satgutier@umich.edu//    {
16710152Satgutier@umich.edu//      tech_lo = 22;
16810152Satgutier@umich.edu//      tech_hi = 16;
16910152Satgutier@umich.edu//    }
17010152Satgutier@umich.edu      else
17110152Satgutier@umich.edu    {
17210152Satgutier@umich.edu          cout<<"Invalid technology nodes"<<endl;
17310152Satgutier@umich.edu          exit(0);
17410152Satgutier@umich.edu    }
17510152Satgutier@umich.edu
17610152Satgutier@umich.edu  double vdd[NUMBER_TECH_FLAVORS];
17710152Satgutier@umich.edu  double Lphy[NUMBER_TECH_FLAVORS];
17810152Satgutier@umich.edu  double Lelec[NUMBER_TECH_FLAVORS];
17910152Satgutier@umich.edu  double t_ox[NUMBER_TECH_FLAVORS];
18010152Satgutier@umich.edu  double v_th[NUMBER_TECH_FLAVORS];
18110152Satgutier@umich.edu  double c_ox[NUMBER_TECH_FLAVORS];
18210152Satgutier@umich.edu  double mobility_eff[NUMBER_TECH_FLAVORS];
18310152Satgutier@umich.edu  double Vdsat[NUMBER_TECH_FLAVORS];
18410152Satgutier@umich.edu  double c_g_ideal[NUMBER_TECH_FLAVORS];
18510152Satgutier@umich.edu  double c_fringe[NUMBER_TECH_FLAVORS];
18610152Satgutier@umich.edu  double c_junc[NUMBER_TECH_FLAVORS];
18710152Satgutier@umich.edu  double I_on_n[NUMBER_TECH_FLAVORS];
18810152Satgutier@umich.edu  double I_on_p[NUMBER_TECH_FLAVORS];
18910152Satgutier@umich.edu  double Rnchannelon[NUMBER_TECH_FLAVORS];
19010152Satgutier@umich.edu  double Rpchannelon[NUMBER_TECH_FLAVORS];
19110152Satgutier@umich.edu  double n_to_p_eff_curr_drv_ratio[NUMBER_TECH_FLAVORS];
19210152Satgutier@umich.edu  double I_off_n[NUMBER_TECH_FLAVORS][101];
19310152Satgutier@umich.edu  double I_g_on_n[NUMBER_TECH_FLAVORS][101];
19410152Satgutier@umich.edu  //double I_off_p[NUMBER_TECH_FLAVORS][101];
19510152Satgutier@umich.edu  double gmp_to_gmn_multiplier[NUMBER_TECH_FLAVORS];
19610152Satgutier@umich.edu  //double curr_sckt_co_eff[NUMBER_TECH_FLAVORS];
19710152Satgutier@umich.edu  double long_channel_leakage_reduction[NUMBER_TECH_FLAVORS];
19810152Satgutier@umich.edu
19910152Satgutier@umich.edu  for (iter = 0; iter <= 1; ++iter)
20010152Satgutier@umich.edu  {
20110152Satgutier@umich.edu    // linear interpolation
20210152Satgutier@umich.edu    if (iter == 0)
20310152Satgutier@umich.edu    {
20410152Satgutier@umich.edu      tech = tech_lo;
20510152Satgutier@umich.edu      if (tech_lo == tech_hi)
20610152Satgutier@umich.edu      {
20710152Satgutier@umich.edu        curr_alpha = 1;
20810152Satgutier@umich.edu      }
20910152Satgutier@umich.edu      else
21010152Satgutier@umich.edu      {
21110152Satgutier@umich.edu        curr_alpha = (technology - tech_hi)/(tech_lo - tech_hi);
21210152Satgutier@umich.edu      }
21310152Satgutier@umich.edu    }
21410152Satgutier@umich.edu    else
21510152Satgutier@umich.edu    {
21610152Satgutier@umich.edu      tech = tech_hi;
21710152Satgutier@umich.edu      if (tech_lo == tech_hi)
21810152Satgutier@umich.edu      {
21910152Satgutier@umich.edu        break;
22010152Satgutier@umich.edu      }
22110152Satgutier@umich.edu      else
22210152Satgutier@umich.edu      {
22310152Satgutier@umich.edu        curr_alpha = (tech_lo - technology)/(tech_lo - tech_hi);
22410152Satgutier@umich.edu      }
22510152Satgutier@umich.edu    }
22610152Satgutier@umich.edu
22710152Satgutier@umich.edu    if (tech == 180)
22810152Satgutier@umich.edu    {
22910152Satgutier@umich.edu      //180nm technology-node. Corresponds to year 1999 in ITRS
23010152Satgutier@umich.edu      //Only HP transistor was of interest that 180nm since leakage power was not a big issue. Performance was the king
23110152Satgutier@umich.edu      //MASTAR does not contain data for 0.18um process. The following parameters are projected based on ITRS 2000 update and IBM 0.18 Cu Spice input
23210152Satgutier@umich.edu      bool Aggre_proj = false;
23310152Satgutier@umich.edu      SENSE_AMP_D = .28e-9; // s
23410152Satgutier@umich.edu      SENSE_AMP_P = 14.7e-15; // J
23510152Satgutier@umich.edu      vdd[0]   = 1.5;
23610152Satgutier@umich.edu      Lphy[0]  = 0.12;//Lphy is the physical gate-length. micron
23710152Satgutier@umich.edu      Lelec[0] = 0.10;//Lelec is the electrical gate-length. micron
23810152Satgutier@umich.edu      t_ox[0]  = 1.2e-3*(Aggre_proj? 1.9/1.2:2);//micron
23910152Satgutier@umich.edu      v_th[0]  = Aggre_proj? 0.36 : 0.4407;//V
24010152Satgutier@umich.edu      c_ox[0]  = 1.79e-14*(Aggre_proj? 1.9/1.2:2);//F/micron2
24110152Satgutier@umich.edu      mobility_eff[0] = 302.16 * (1e-2 * 1e6 * 1e-2 * 1e6); //micron2 / Vs
24210152Satgutier@umich.edu      Vdsat[0] = 0.128*2; //V
24310152Satgutier@umich.edu      c_g_ideal[0] = (Aggre_proj? 1.9/1.2:2)*6.64e-16;//F/micron
24410152Satgutier@umich.edu      c_fringe[0]  = (Aggre_proj? 1.9/1.2:2)*0.08e-15;//F/micron
24510152Satgutier@umich.edu      c_junc[0] = (Aggre_proj? 1.9/1.2:2)*1e-15;//F/micron2
24610152Satgutier@umich.edu      I_on_n[0] = 750e-6;//A/micron
24710152Satgutier@umich.edu      I_on_p[0] = 350e-6;//A/micron
24810152Satgutier@umich.edu      //Note that nmos_effective_resistance_multiplier, n_to_p_eff_curr_drv_ratio and gmp_to_gmn_multiplier values are calculated offline
24910152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.54;
25010152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[0] = 2.45;
25110152Satgutier@umich.edu      gmp_to_gmn_multiplier[0] = 1.22;
25210152Satgutier@umich.edu      Rnchannelon[0] = nmos_effective_resistance_multiplier * vdd[0] / I_on_n[0];//ohm-micron
25310152Satgutier@umich.edu      Rpchannelon[0] = n_to_p_eff_curr_drv_ratio[0] * Rnchannelon[0];//ohm-micron
25410152Satgutier@umich.edu      long_channel_leakage_reduction[0] = 1;
25510152Satgutier@umich.edu      I_off_n[0][0]  = 7e-10;//A/micron
25610152Satgutier@umich.edu      I_off_n[0][10] = 8.26e-10;
25710152Satgutier@umich.edu      I_off_n[0][20] = 9.74e-10;
25810152Satgutier@umich.edu      I_off_n[0][30] = 1.15e-9;
25910152Satgutier@umich.edu      I_off_n[0][40] = 1.35e-9;
26010152Satgutier@umich.edu      I_off_n[0][50] = 1.60e-9;
26110152Satgutier@umich.edu      I_off_n[0][60] = 1.88e-9;
26210152Satgutier@umich.edu      I_off_n[0][70] = 2.29e-9;
26310152Satgutier@umich.edu      I_off_n[0][80] = 2.70e-9;
26410152Satgutier@umich.edu      I_off_n[0][90] = 3.19e-9;
26510152Satgutier@umich.edu      I_off_n[0][100] = 3.76e-9;
26610152Satgutier@umich.edu
26710152Satgutier@umich.edu      I_g_on_n[0][0]  = 1.65e-10;//A/micron
26810152Satgutier@umich.edu      I_g_on_n[0][10] = 1.65e-10;
26910152Satgutier@umich.edu      I_g_on_n[0][20] = 1.65e-10;
27010152Satgutier@umich.edu      I_g_on_n[0][30] = 1.65e-10;
27110152Satgutier@umich.edu      I_g_on_n[0][40] = 1.65e-10;
27210152Satgutier@umich.edu      I_g_on_n[0][50] = 1.65e-10;
27310152Satgutier@umich.edu      I_g_on_n[0][60] = 1.65e-10;
27410152Satgutier@umich.edu      I_g_on_n[0][70] = 1.65e-10;
27510152Satgutier@umich.edu      I_g_on_n[0][80] = 1.65e-10;
27610152Satgutier@umich.edu      I_g_on_n[0][90] = 1.65e-10;
27710152Satgutier@umich.edu      I_g_on_n[0][100] = 1.65e-10;
27810152Satgutier@umich.edu
27910152Satgutier@umich.edu      //SRAM cell properties
28010152Satgutier@umich.edu      curr_Wmemcella_sram = 1.31 * g_ip->F_sz_um;
28110152Satgutier@umich.edu      curr_Wmemcellpmos_sram = 1.23 * g_ip->F_sz_um;
28210152Satgutier@umich.edu      curr_Wmemcellnmos_sram = 2.08 * g_ip->F_sz_um;
28310152Satgutier@umich.edu      curr_area_cell_sram = 146 * g_ip->F_sz_um * g_ip->F_sz_um;
28410152Satgutier@umich.edu      curr_asp_ratio_cell_sram = 1.46;
28510152Satgutier@umich.edu      //CAM cell properties //TODO: data need to be revisited
28610152Satgutier@umich.edu      curr_Wmemcella_cam = 1.31 * g_ip->F_sz_um;
28710152Satgutier@umich.edu      curr_Wmemcellpmos_cam = 1.23 * g_ip->F_sz_um;
28810152Satgutier@umich.edu      curr_Wmemcellnmos_cam = 2.08 * g_ip->F_sz_um;
28910152Satgutier@umich.edu      curr_area_cell_cam = 292 * g_ip->F_sz_um * g_ip->F_sz_um;//360
29010152Satgutier@umich.edu      curr_asp_ratio_cell_cam = 2.92;//2.5
29110152Satgutier@umich.edu      //Empirical undifferetiated core/FU coefficient
29210152Satgutier@umich.edu      curr_logic_scaling_co_eff  = 1.5;//linear scaling from 90nm
29310152Satgutier@umich.edu      curr_core_tx_density       = 1.25*0.7*0.7*0.4;
29410152Satgutier@umich.edu      curr_sckt_co_eff           = 1.11;
29510152Satgutier@umich.edu      curr_chip_layout_overhead  = 1.0;//die measurement results based on Niagara 1 and 2
29610152Satgutier@umich.edu      curr_macro_layout_overhead = 1.0;//EDA placement and routing tool rule of thumb
29710152Satgutier@umich.edu
29810152Satgutier@umich.edu    }
29910152Satgutier@umich.edu
30010152Satgutier@umich.edu    if (tech == 90)
30110152Satgutier@umich.edu    {
30210152Satgutier@umich.edu      SENSE_AMP_D = .28e-9; // s
30310152Satgutier@umich.edu      SENSE_AMP_P = 14.7e-15; // J
30410152Satgutier@umich.edu      //90nm technology-node. Corresponds to year 2004 in ITRS
30510152Satgutier@umich.edu      //ITRS HP device type
30610152Satgutier@umich.edu      vdd[0]   = 1.2;
30710152Satgutier@umich.edu      Lphy[0]  = 0.037;//Lphy is the physical gate-length. micron
30810152Satgutier@umich.edu      Lelec[0] = 0.0266;//Lelec is the electrical gate-length. micron
30910152Satgutier@umich.edu      t_ox[0]  = 1.2e-3;//micron
31010152Satgutier@umich.edu      v_th[0]  = 0.23707;//V
31110152Satgutier@umich.edu      c_ox[0]  = 1.79e-14;//F/micron2
31210152Satgutier@umich.edu      mobility_eff[0] = 342.16 * (1e-2 * 1e6 * 1e-2 * 1e6); //micron2 / Vs
31310152Satgutier@umich.edu      Vdsat[0] = 0.128; //V
31410152Satgutier@umich.edu      c_g_ideal[0] = 6.64e-16;//F/micron
31510152Satgutier@umich.edu      c_fringe[0]  = 0.08e-15;//F/micron
31610152Satgutier@umich.edu      c_junc[0] = 1e-15;//F/micron2
31710152Satgutier@umich.edu      I_on_n[0] = 1076.9e-6;//A/micron
31810152Satgutier@umich.edu      I_on_p[0] = 712.6e-6;//A/micron
31910152Satgutier@umich.edu      //Note that nmos_effective_resistance_multiplier, n_to_p_eff_curr_drv_ratio and gmp_to_gmn_multiplier values are calculated offline
32010152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.54;
32110152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[0] = 2.45;
32210152Satgutier@umich.edu      gmp_to_gmn_multiplier[0] = 1.22;
32310152Satgutier@umich.edu      Rnchannelon[0] = nmos_effective_resistance_multiplier * vdd[0] / I_on_n[0];//ohm-micron
32410152Satgutier@umich.edu      Rpchannelon[0] = n_to_p_eff_curr_drv_ratio[0] * Rnchannelon[0];//ohm-micron
32510152Satgutier@umich.edu      long_channel_leakage_reduction[0] = 1;
32610152Satgutier@umich.edu      I_off_n[0][0]  = 3.24e-8;//A/micron
32710152Satgutier@umich.edu      I_off_n[0][10] = 4.01e-8;
32810152Satgutier@umich.edu      I_off_n[0][20] = 4.90e-8;
32910152Satgutier@umich.edu      I_off_n[0][30] = 5.92e-8;
33010152Satgutier@umich.edu      I_off_n[0][40] = 7.08e-8;
33110152Satgutier@umich.edu      I_off_n[0][50] = 8.38e-8;
33210152Satgutier@umich.edu      I_off_n[0][60] = 9.82e-8;
33310152Satgutier@umich.edu      I_off_n[0][70] = 1.14e-7;
33410152Satgutier@umich.edu      I_off_n[0][80] = 1.29e-7;
33510152Satgutier@umich.edu      I_off_n[0][90] = 1.43e-7;
33610152Satgutier@umich.edu      I_off_n[0][100] = 1.54e-7;
33710152Satgutier@umich.edu
33810152Satgutier@umich.edu      I_g_on_n[0][0]  = 1.65e-8;//A/micron
33910152Satgutier@umich.edu      I_g_on_n[0][10] = 1.65e-8;
34010152Satgutier@umich.edu      I_g_on_n[0][20] = 1.65e-8;
34110152Satgutier@umich.edu      I_g_on_n[0][30] = 1.65e-8;
34210152Satgutier@umich.edu      I_g_on_n[0][40] = 1.65e-8;
34310152Satgutier@umich.edu      I_g_on_n[0][50] = 1.65e-8;
34410152Satgutier@umich.edu      I_g_on_n[0][60] = 1.65e-8;
34510152Satgutier@umich.edu      I_g_on_n[0][70] = 1.65e-8;
34610152Satgutier@umich.edu      I_g_on_n[0][80] = 1.65e-8;
34710152Satgutier@umich.edu      I_g_on_n[0][90] = 1.65e-8;
34810152Satgutier@umich.edu      I_g_on_n[0][100] = 1.65e-8;
34910152Satgutier@umich.edu
35010152Satgutier@umich.edu      //ITRS LSTP device type
35110152Satgutier@umich.edu      vdd[1]   = 1.3;
35210152Satgutier@umich.edu      Lphy[1]  = 0.075;
35310152Satgutier@umich.edu      Lelec[1] = 0.0486;
35410152Satgutier@umich.edu      t_ox[1]  = 2.2e-3;
35510152Satgutier@umich.edu      v_th[1]  = 0.48203;
35610152Satgutier@umich.edu      c_ox[1]  = 1.22e-14;
35710152Satgutier@umich.edu      mobility_eff[1] = 356.76 * (1e-2 * 1e6 * 1e-2 * 1e6);
35810152Satgutier@umich.edu      Vdsat[1] = 0.373;
35910152Satgutier@umich.edu      c_g_ideal[1] = 9.15e-16;
36010152Satgutier@umich.edu      c_fringe[1]  = 0.08e-15;
36110152Satgutier@umich.edu      c_junc[1] = 1e-15;
36210152Satgutier@umich.edu      I_on_n[1] = 503.6e-6;
36310152Satgutier@umich.edu      I_on_p[1] = 235.1e-6;
36410152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.92;
36510152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[1] = 2.44;
36610152Satgutier@umich.edu      gmp_to_gmn_multiplier[1] =0.88;
36710152Satgutier@umich.edu      Rnchannelon[1] = nmos_effective_resistance_multiplier * vdd[1] / I_on_n[1];
36810152Satgutier@umich.edu      Rpchannelon[1] = n_to_p_eff_curr_drv_ratio[1] * Rnchannelon[1];
36910152Satgutier@umich.edu      long_channel_leakage_reduction[1] = 1;
37010152Satgutier@umich.edu      I_off_n[1][0]  = 2.81e-12;
37110152Satgutier@umich.edu      I_off_n[1][10] = 4.76e-12;
37210152Satgutier@umich.edu      I_off_n[1][20] = 7.82e-12;
37310152Satgutier@umich.edu      I_off_n[1][30] = 1.25e-11;
37410152Satgutier@umich.edu      I_off_n[1][40] = 1.94e-11;
37510152Satgutier@umich.edu      I_off_n[1][50] = 2.94e-11;
37610152Satgutier@umich.edu      I_off_n[1][60] = 4.36e-11;
37710152Satgutier@umich.edu      I_off_n[1][70] = 6.32e-11;
37810152Satgutier@umich.edu      I_off_n[1][80] = 8.95e-11;
37910152Satgutier@umich.edu      I_off_n[1][90] = 1.25e-10;
38010152Satgutier@umich.edu      I_off_n[1][100] = 1.7e-10;
38110152Satgutier@umich.edu
38210152Satgutier@umich.edu      I_g_on_n[1][0]  = 3.87e-11;//A/micron
38310152Satgutier@umich.edu      I_g_on_n[1][10] = 3.87e-11;
38410152Satgutier@umich.edu      I_g_on_n[1][20] = 3.87e-11;
38510152Satgutier@umich.edu      I_g_on_n[1][30] = 3.87e-11;
38610152Satgutier@umich.edu      I_g_on_n[1][40] = 3.87e-11;
38710152Satgutier@umich.edu      I_g_on_n[1][50] = 3.87e-11;
38810152Satgutier@umich.edu      I_g_on_n[1][60] = 3.87e-11;
38910152Satgutier@umich.edu      I_g_on_n[1][70] = 3.87e-11;
39010152Satgutier@umich.edu      I_g_on_n[1][80] = 3.87e-11;
39110152Satgutier@umich.edu      I_g_on_n[1][90] = 3.87e-11;
39210152Satgutier@umich.edu      I_g_on_n[1][100] = 3.87e-11;
39310152Satgutier@umich.edu
39410152Satgutier@umich.edu      //ITRS LOP device type
39510152Satgutier@umich.edu      vdd[2] = 0.9;
39610152Satgutier@umich.edu      Lphy[2] = 0.053;
39710152Satgutier@umich.edu      Lelec[2] = 0.0354;
39810152Satgutier@umich.edu      t_ox[2] = 1.5e-3;
39910152Satgutier@umich.edu      v_th[2] = 0.30764;
40010152Satgutier@umich.edu      c_ox[2] = 1.59e-14;
40110152Satgutier@umich.edu      mobility_eff[2] = 460.39 * (1e-2 * 1e6 * 1e-2 * 1e6);
40210152Satgutier@umich.edu      Vdsat[2] = 0.113;
40310152Satgutier@umich.edu      c_g_ideal[2] = 8.45e-16;
40410152Satgutier@umich.edu      c_fringe[2] = 0.08e-15;
40510152Satgutier@umich.edu      c_junc[2] = 1e-15;
40610152Satgutier@umich.edu      I_on_n[2] = 386.6e-6;
40710152Satgutier@umich.edu      I_on_p[2] = 209.7e-6;
40810152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.77;
40910152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[2] = 2.54;
41010152Satgutier@umich.edu      gmp_to_gmn_multiplier[2] = 0.98;
41110152Satgutier@umich.edu      Rnchannelon[2] = nmos_effective_resistance_multiplier * vdd[2] / I_on_n[2];
41210152Satgutier@umich.edu      Rpchannelon[2] = n_to_p_eff_curr_drv_ratio[2] * Rnchannelon[2];
41310152Satgutier@umich.edu      long_channel_leakage_reduction[2] = 1;
41410152Satgutier@umich.edu      I_off_n[2][0] = 2.14e-9;
41510152Satgutier@umich.edu      I_off_n[2][10] = 2.9e-9;
41610152Satgutier@umich.edu      I_off_n[2][20] = 3.87e-9;
41710152Satgutier@umich.edu      I_off_n[2][30] = 5.07e-9;
41810152Satgutier@umich.edu      I_off_n[2][40] = 6.54e-9;
41910152Satgutier@umich.edu      I_off_n[2][50] = 8.27e-8;
42010152Satgutier@umich.edu      I_off_n[2][60] = 1.02e-7;
42110152Satgutier@umich.edu      I_off_n[2][70] = 1.20e-7;
42210152Satgutier@umich.edu      I_off_n[2][80] = 1.36e-8;
42310152Satgutier@umich.edu      I_off_n[2][90] = 1.52e-8;
42410152Satgutier@umich.edu      I_off_n[2][100] = 1.73e-8;
42510152Satgutier@umich.edu
42610152Satgutier@umich.edu      I_g_on_n[2][0]  = 4.31e-8;//A/micron
42710152Satgutier@umich.edu      I_g_on_n[2][10] = 4.31e-8;
42810152Satgutier@umich.edu      I_g_on_n[2][20] = 4.31e-8;
42910152Satgutier@umich.edu      I_g_on_n[2][30] = 4.31e-8;
43010152Satgutier@umich.edu      I_g_on_n[2][40] = 4.31e-8;
43110152Satgutier@umich.edu      I_g_on_n[2][50] = 4.31e-8;
43210152Satgutier@umich.edu      I_g_on_n[2][60] = 4.31e-8;
43310152Satgutier@umich.edu      I_g_on_n[2][70] = 4.31e-8;
43410152Satgutier@umich.edu      I_g_on_n[2][80] = 4.31e-8;
43510152Satgutier@umich.edu      I_g_on_n[2][90] = 4.31e-8;
43610152Satgutier@umich.edu      I_g_on_n[2][100] = 4.31e-8;
43710152Satgutier@umich.edu
43810152Satgutier@umich.edu      if (ram_cell_tech_type == lp_dram)
43910152Satgutier@umich.edu      {
44010152Satgutier@umich.edu        //LP-DRAM cell access transistor technology parameters
44110152Satgutier@umich.edu        curr_vdd_dram_cell = 1.2;
44210152Satgutier@umich.edu        Lphy[3] = 0.12;
44310152Satgutier@umich.edu        Lelec[3] = 0.0756;
44410152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 0.4545;
44510152Satgutier@umich.edu        width_dram_access_transistor = 0.14;
44610152Satgutier@umich.edu        curr_I_on_dram_cell = 45e-6;
44710152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 21.1e-12;
44810152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
44910152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
45010152Satgutier@umich.edu        curr_Wmemcellnmos_dram = 0;
45110152Satgutier@umich.edu        curr_area_cell_dram = 0.168;
45210152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.46;
45310152Satgutier@umich.edu        curr_c_dram_cell = 20e-15;
45410152Satgutier@umich.edu
45510152Satgutier@umich.edu        //LP-DRAM wordline transistor parameters
45610152Satgutier@umich.edu        curr_vpp = 1.6;
45710152Satgutier@umich.edu        t_ox[3] = 2.2e-3;
45810152Satgutier@umich.edu        v_th[3] = 0.4545;
45910152Satgutier@umich.edu        c_ox[3] = 1.22e-14;
46010152Satgutier@umich.edu        mobility_eff[3] =  323.95 * (1e-2 * 1e6 * 1e-2 * 1e6);
46110152Satgutier@umich.edu        Vdsat[3] = 0.3;
46210152Satgutier@umich.edu        c_g_ideal[3] = 1.47e-15;
46310152Satgutier@umich.edu        c_fringe[3] = 0.08e-15;
46410152Satgutier@umich.edu        c_junc[3] = 1e-15;
46510152Satgutier@umich.edu        I_on_n[3] = 321.6e-6;
46610152Satgutier@umich.edu        I_on_p[3] = 203.3e-6;
46710152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.65;
46810152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 1.95;
46910152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
47010152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
47110152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
47210152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
47310152Satgutier@umich.edu        I_off_n[3][0] = 1.42e-11;
47410152Satgutier@umich.edu        I_off_n[3][10] = 2.25e-11;
47510152Satgutier@umich.edu        I_off_n[3][20] = 3.46e-11;
47610152Satgutier@umich.edu        I_off_n[3][30] = 5.18e-11;
47710152Satgutier@umich.edu        I_off_n[3][40] = 7.58e-11;
47810152Satgutier@umich.edu        I_off_n[3][50] = 1.08e-10;
47910152Satgutier@umich.edu        I_off_n[3][60] = 1.51e-10;
48010152Satgutier@umich.edu        I_off_n[3][70] = 2.02e-10;
48110152Satgutier@umich.edu        I_off_n[3][80] = 2.57e-10;
48210152Satgutier@umich.edu        I_off_n[3][90] = 3.14e-10;
48310152Satgutier@umich.edu        I_off_n[3][100] = 3.85e-10;
48410152Satgutier@umich.edu      }
48510152Satgutier@umich.edu      else if (ram_cell_tech_type == comm_dram)
48610152Satgutier@umich.edu      {
48710152Satgutier@umich.edu        //COMM-DRAM cell access transistor technology parameters
48810152Satgutier@umich.edu        curr_vdd_dram_cell = 1.6;
48910152Satgutier@umich.edu        Lphy[3] = 0.09;
49010152Satgutier@umich.edu        Lelec[3] = 0.0576;
49110152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 1;
49210152Satgutier@umich.edu        width_dram_access_transistor = 0.09;
49310152Satgutier@umich.edu        curr_I_on_dram_cell = 20e-6;
49410152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 1e-15;
49510152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
49610152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
49710152Satgutier@umich.edu        curr_Wmemcellnmos_dram = 0;
49810152Satgutier@umich.edu        curr_area_cell_dram = 6*0.09*0.09;
49910152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.5;
50010152Satgutier@umich.edu        curr_c_dram_cell = 30e-15;
50110152Satgutier@umich.edu
50210152Satgutier@umich.edu        //COMM-DRAM wordline transistor parameters
50310152Satgutier@umich.edu        curr_vpp = 3.7;
50410152Satgutier@umich.edu        t_ox[3] = 5.5e-3;
50510152Satgutier@umich.edu        v_th[3] = 1.0;
50610152Satgutier@umich.edu        c_ox[3] = 5.65e-15;
50710152Satgutier@umich.edu        mobility_eff[3] =  302.2 * (1e-2 * 1e6 * 1e-2 * 1e6);
50810152Satgutier@umich.edu        Vdsat[3] = 0.32;
50910152Satgutier@umich.edu        c_g_ideal[3] = 5.08e-16;
51010152Satgutier@umich.edu        c_fringe[3] = 0.08e-15;
51110152Satgutier@umich.edu        c_junc[3] = 1e-15;
51210152Satgutier@umich.edu        I_on_n[3] = 1094.3e-6;
51310152Satgutier@umich.edu        I_on_p[3] = I_on_n[3] / 2;
51410152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.62;
51510152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 2.05;
51610152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
51710152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
51810152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
51910152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
52010152Satgutier@umich.edu        I_off_n[3][0] = 5.80e-15;
52110152Satgutier@umich.edu        I_off_n[3][10] = 1.21e-14;
52210152Satgutier@umich.edu        I_off_n[3][20] = 2.42e-14;
52310152Satgutier@umich.edu        I_off_n[3][30] = 4.65e-14;
52410152Satgutier@umich.edu        I_off_n[3][40] = 8.60e-14;
52510152Satgutier@umich.edu        I_off_n[3][50] = 1.54e-13;
52610152Satgutier@umich.edu        I_off_n[3][60] = 2.66e-13;
52710152Satgutier@umich.edu        I_off_n[3][70] = 4.45e-13;
52810152Satgutier@umich.edu        I_off_n[3][80] = 7.17e-13;
52910152Satgutier@umich.edu        I_off_n[3][90] = 1.11e-12;
53010152Satgutier@umich.edu        I_off_n[3][100] = 1.67e-12;
53110152Satgutier@umich.edu      }
53210152Satgutier@umich.edu
53310152Satgutier@umich.edu      //SRAM cell properties
53410152Satgutier@umich.edu      curr_Wmemcella_sram = 1.31 * g_ip->F_sz_um;
53510152Satgutier@umich.edu      curr_Wmemcellpmos_sram = 1.23 * g_ip->F_sz_um;
53610152Satgutier@umich.edu      curr_Wmemcellnmos_sram = 2.08 * g_ip->F_sz_um;
53710152Satgutier@umich.edu      curr_area_cell_sram = 146 * g_ip->F_sz_um * g_ip->F_sz_um;
53810152Satgutier@umich.edu      curr_asp_ratio_cell_sram = 1.46;
53910152Satgutier@umich.edu      //CAM cell properties //TODO: data need to be revisited
54010152Satgutier@umich.edu      curr_Wmemcella_cam = 1.31 * g_ip->F_sz_um;
54110152Satgutier@umich.edu      curr_Wmemcellpmos_cam = 1.23 * g_ip->F_sz_um;
54210152Satgutier@umich.edu      curr_Wmemcellnmos_cam = 2.08 * g_ip->F_sz_um;
54310152Satgutier@umich.edu      curr_area_cell_cam = 292 * g_ip->F_sz_um * g_ip->F_sz_um;//360
54410152Satgutier@umich.edu      curr_asp_ratio_cell_cam = 2.92;//2.5
54510152Satgutier@umich.edu      //Empirical undifferetiated core/FU coefficient
54610152Satgutier@umich.edu      curr_logic_scaling_co_eff  = 1;
54710152Satgutier@umich.edu      curr_core_tx_density       = 1.25*0.7*0.7;
54810152Satgutier@umich.edu      curr_sckt_co_eff           = 1.1539;
54910152Satgutier@umich.edu      curr_chip_layout_overhead  = 1.2;//die measurement results based on Niagara 1 and 2
55010152Satgutier@umich.edu      curr_macro_layout_overhead = 1.1;//EDA placement and routing tool rule of thumb
55110152Satgutier@umich.edu
55210152Satgutier@umich.edu
55310152Satgutier@umich.edu    }
55410152Satgutier@umich.edu
55510152Satgutier@umich.edu    if (tech == 65)
55610152Satgutier@umich.edu    { //65nm technology-node. Corresponds to year 2007 in ITRS
55710152Satgutier@umich.edu      //ITRS HP device type
55810152Satgutier@umich.edu      SENSE_AMP_D = .2e-9; // s
55910152Satgutier@umich.edu      SENSE_AMP_P = 5.7e-15; // J
56010152Satgutier@umich.edu      vdd[0] = 1.1;
56110152Satgutier@umich.edu      Lphy[0] = 0.025;
56210152Satgutier@umich.edu      Lelec[0] = 0.019;
56310152Satgutier@umich.edu      t_ox[0] = 1.1e-3;
56410152Satgutier@umich.edu      v_th[0] = .19491;
56510152Satgutier@umich.edu      c_ox[0] = 1.88e-14;
56610152Satgutier@umich.edu      mobility_eff[0] = 436.24 * (1e-2 * 1e6 * 1e-2 * 1e6);
56710152Satgutier@umich.edu      Vdsat[0] = 7.71e-2;
56810152Satgutier@umich.edu      c_g_ideal[0] = 4.69e-16;
56910152Satgutier@umich.edu      c_fringe[0] = 0.077e-15;
57010152Satgutier@umich.edu      c_junc[0] = 1e-15;
57110152Satgutier@umich.edu      I_on_n[0] = 1197.2e-6;
57210152Satgutier@umich.edu      I_on_p[0] = 870.8e-6;
57310152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.50;
57410152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[0] = 2.41;
57510152Satgutier@umich.edu      gmp_to_gmn_multiplier[0] = 1.38;
57610152Satgutier@umich.edu      Rnchannelon[0] = nmos_effective_resistance_multiplier * vdd[0] / I_on_n[0];
57710152Satgutier@umich.edu      Rpchannelon[0] = n_to_p_eff_curr_drv_ratio[0] * Rnchannelon[0];
57810152Satgutier@umich.edu      long_channel_leakage_reduction[0] = 1/3.74;
57910152Satgutier@umich.edu      //Using MASTAR, @380K, increase Lgate until Ion reduces to 90% or Lgate increase by 10%, whichever comes first
58010152Satgutier@umich.edu      //Ioff(Lgate normal)/Ioff(Lgate long)= 3.74.
58110152Satgutier@umich.edu      I_off_n[0][0] = 1.96e-7;
58210152Satgutier@umich.edu      I_off_n[0][10] = 2.29e-7;
58310152Satgutier@umich.edu      I_off_n[0][20] = 2.66e-7;
58410152Satgutier@umich.edu      I_off_n[0][30] = 3.05e-7;
58510152Satgutier@umich.edu      I_off_n[0][40] = 3.49e-7;
58610152Satgutier@umich.edu      I_off_n[0][50] = 3.95e-7;
58710152Satgutier@umich.edu      I_off_n[0][60] = 4.45e-7;
58810152Satgutier@umich.edu      I_off_n[0][70] = 4.97e-7;
58910152Satgutier@umich.edu      I_off_n[0][80] = 5.48e-7;
59010152Satgutier@umich.edu      I_off_n[0][90] = 5.94e-7;
59110152Satgutier@umich.edu      I_off_n[0][100] = 6.3e-7;
59210152Satgutier@umich.edu      I_g_on_n[0][0]  = 4.09e-8;//A/micron
59310152Satgutier@umich.edu      I_g_on_n[0][10] = 4.09e-8;
59410152Satgutier@umich.edu      I_g_on_n[0][20] = 4.09e-8;
59510152Satgutier@umich.edu      I_g_on_n[0][30] = 4.09e-8;
59610152Satgutier@umich.edu      I_g_on_n[0][40] = 4.09e-8;
59710152Satgutier@umich.edu      I_g_on_n[0][50] = 4.09e-8;
59810152Satgutier@umich.edu      I_g_on_n[0][60] = 4.09e-8;
59910152Satgutier@umich.edu      I_g_on_n[0][70] = 4.09e-8;
60010152Satgutier@umich.edu      I_g_on_n[0][80] = 4.09e-8;
60110152Satgutier@umich.edu      I_g_on_n[0][90] = 4.09e-8;
60210152Satgutier@umich.edu      I_g_on_n[0][100] = 4.09e-8;
60310152Satgutier@umich.edu
60410152Satgutier@umich.edu      //ITRS LSTP device type
60510152Satgutier@umich.edu      vdd[1] = 1.2;
60610152Satgutier@umich.edu      Lphy[1] = 0.045;
60710152Satgutier@umich.edu      Lelec[1] = 0.0298;
60810152Satgutier@umich.edu      t_ox[1] = 1.9e-3;
60910152Satgutier@umich.edu      v_th[1] = 0.52354;
61010152Satgutier@umich.edu      c_ox[1] = 1.36e-14;
61110152Satgutier@umich.edu      mobility_eff[1] = 341.21 * (1e-2 * 1e6 * 1e-2 * 1e6);
61210152Satgutier@umich.edu      Vdsat[1] = 0.128;
61310152Satgutier@umich.edu      c_g_ideal[1] = 6.14e-16;
61410152Satgutier@umich.edu      c_fringe[1] = 0.08e-15;
61510152Satgutier@umich.edu      c_junc[1] = 1e-15;
61610152Satgutier@umich.edu      I_on_n[1] = 519.2e-6;
61710152Satgutier@umich.edu      I_on_p[1] = 266e-6;
61810152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.96;
61910152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[1] = 2.23;
62010152Satgutier@umich.edu      gmp_to_gmn_multiplier[1] = 0.99;
62110152Satgutier@umich.edu      Rnchannelon[1] = nmos_effective_resistance_multiplier * vdd[1] / I_on_n[1];
62210152Satgutier@umich.edu      Rpchannelon[1] = n_to_p_eff_curr_drv_ratio[1] * Rnchannelon[1];
62310152Satgutier@umich.edu      long_channel_leakage_reduction[1] = 1/2.82;
62410152Satgutier@umich.edu      I_off_n[1][0] = 9.12e-12;
62510152Satgutier@umich.edu      I_off_n[1][10] = 1.49e-11;
62610152Satgutier@umich.edu      I_off_n[1][20] = 2.36e-11;
62710152Satgutier@umich.edu      I_off_n[1][30] = 3.64e-11;
62810152Satgutier@umich.edu      I_off_n[1][40] = 5.48e-11;
62910152Satgutier@umich.edu      I_off_n[1][50] = 8.05e-11;
63010152Satgutier@umich.edu      I_off_n[1][60] = 1.15e-10;
63110152Satgutier@umich.edu      I_off_n[1][70] = 1.59e-10;
63210152Satgutier@umich.edu      I_off_n[1][80] = 2.1e-10;
63310152Satgutier@umich.edu      I_off_n[1][90] = 2.62e-10;
63410152Satgutier@umich.edu      I_off_n[1][100] = 3.21e-10;
63510152Satgutier@umich.edu
63610152Satgutier@umich.edu      I_g_on_n[1][0]  = 1.09e-10;//A/micron
63710152Satgutier@umich.edu      I_g_on_n[1][10] = 1.09e-10;
63810152Satgutier@umich.edu      I_g_on_n[1][20] = 1.09e-10;
63910152Satgutier@umich.edu      I_g_on_n[1][30] = 1.09e-10;
64010152Satgutier@umich.edu      I_g_on_n[1][40] = 1.09e-10;
64110152Satgutier@umich.edu      I_g_on_n[1][50] = 1.09e-10;
64210152Satgutier@umich.edu      I_g_on_n[1][60] = 1.09e-10;
64310152Satgutier@umich.edu      I_g_on_n[1][70] = 1.09e-10;
64410152Satgutier@umich.edu      I_g_on_n[1][80] = 1.09e-10;
64510152Satgutier@umich.edu      I_g_on_n[1][90] = 1.09e-10;
64610152Satgutier@umich.edu      I_g_on_n[1][100] = 1.09e-10;
64710152Satgutier@umich.edu
64810152Satgutier@umich.edu      //ITRS LOP device type
64910152Satgutier@umich.edu      vdd[2] = 0.8;
65010152Satgutier@umich.edu      Lphy[2] = 0.032;
65110152Satgutier@umich.edu      Lelec[2] = 0.0216;
65210152Satgutier@umich.edu      t_ox[2] = 1.2e-3;
65310152Satgutier@umich.edu      v_th[2] = 0.28512;
65410152Satgutier@umich.edu      c_ox[2] = 1.87e-14;
65510152Satgutier@umich.edu      mobility_eff[2] = 495.19 * (1e-2 * 1e6 * 1e-2 * 1e6);
65610152Satgutier@umich.edu      Vdsat[2] = 0.292;
65710152Satgutier@umich.edu      c_g_ideal[2] = 6e-16;
65810152Satgutier@umich.edu      c_fringe[2] = 0.08e-15;
65910152Satgutier@umich.edu      c_junc[2] = 1e-15;
66010152Satgutier@umich.edu      I_on_n[2] = 573.1e-6;
66110152Satgutier@umich.edu      I_on_p[2] = 340.6e-6;
66210152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.82;
66310152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[2] = 2.28;
66410152Satgutier@umich.edu      gmp_to_gmn_multiplier[2] = 1.11;
66510152Satgutier@umich.edu      Rnchannelon[2] = nmos_effective_resistance_multiplier * vdd[2] / I_on_n[2];
66610152Satgutier@umich.edu      Rpchannelon[2] = n_to_p_eff_curr_drv_ratio[2] * Rnchannelon[2];
66710152Satgutier@umich.edu      long_channel_leakage_reduction[2] = 1/2.05;
66810152Satgutier@umich.edu      I_off_n[2][0] = 4.9e-9;
66910152Satgutier@umich.edu      I_off_n[2][10] = 6.49e-9;
67010152Satgutier@umich.edu      I_off_n[2][20] = 8.45e-9;
67110152Satgutier@umich.edu      I_off_n[2][30] = 1.08e-8;
67210152Satgutier@umich.edu      I_off_n[2][40] = 1.37e-8;
67310152Satgutier@umich.edu      I_off_n[2][50] = 1.71e-8;
67410152Satgutier@umich.edu      I_off_n[2][60] = 2.09e-8;
67510152Satgutier@umich.edu      I_off_n[2][70] = 2.48e-8;
67610152Satgutier@umich.edu      I_off_n[2][80] = 2.84e-8;
67710152Satgutier@umich.edu      I_off_n[2][90] = 3.13e-8;
67810152Satgutier@umich.edu      I_off_n[2][100] = 3.42e-8;
67910152Satgutier@umich.edu
68010152Satgutier@umich.edu      I_g_on_n[2][0]  = 9.61e-9;//A/micron
68110152Satgutier@umich.edu      I_g_on_n[2][10] = 9.61e-9;
68210152Satgutier@umich.edu      I_g_on_n[2][20] = 9.61e-9;
68310152Satgutier@umich.edu      I_g_on_n[2][30] = 9.61e-9;
68410152Satgutier@umich.edu      I_g_on_n[2][40] = 9.61e-9;
68510152Satgutier@umich.edu      I_g_on_n[2][50] = 9.61e-9;
68610152Satgutier@umich.edu      I_g_on_n[2][60] = 9.61e-9;
68710152Satgutier@umich.edu      I_g_on_n[2][70] = 9.61e-9;
68810152Satgutier@umich.edu      I_g_on_n[2][80] = 9.61e-9;
68910152Satgutier@umich.edu      I_g_on_n[2][90] = 9.61e-9;
69010152Satgutier@umich.edu      I_g_on_n[2][100] = 9.61e-9;
69110152Satgutier@umich.edu
69210152Satgutier@umich.edu      if (ram_cell_tech_type == lp_dram)
69310152Satgutier@umich.edu      {
69410152Satgutier@umich.edu        //LP-DRAM cell access transistor technology parameters
69510152Satgutier@umich.edu        curr_vdd_dram_cell = 1.2;
69610152Satgutier@umich.edu        Lphy[3] = 0.12;
69710152Satgutier@umich.edu        Lelec[3] = 0.0756;
69810152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 0.43806;
69910152Satgutier@umich.edu        width_dram_access_transistor = 0.09;
70010152Satgutier@umich.edu        curr_I_on_dram_cell = 36e-6;
70110152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 19.6e-12;
70210152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
70310152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
70410152Satgutier@umich.edu        curr_Wmemcellnmos_dram = 0;
70510152Satgutier@umich.edu        curr_area_cell_dram = 0.11;
70610152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.46;
70710152Satgutier@umich.edu        curr_c_dram_cell = 20e-15;
70810152Satgutier@umich.edu
70910152Satgutier@umich.edu        //LP-DRAM wordline transistor parameters
71010152Satgutier@umich.edu        curr_vpp = 1.6;
71110152Satgutier@umich.edu        t_ox[3] = 2.2e-3;
71210152Satgutier@umich.edu        v_th[3] = 0.43806;
71310152Satgutier@umich.edu        c_ox[3] = 1.22e-14;
71410152Satgutier@umich.edu        mobility_eff[3] =  328.32 * (1e-2 * 1e6 * 1e-2 * 1e6);
71510152Satgutier@umich.edu        Vdsat[3] = 0.43806;
71610152Satgutier@umich.edu        c_g_ideal[3] = 1.46e-15;
71710152Satgutier@umich.edu        c_fringe[3] = 0.08e-15;
71810152Satgutier@umich.edu        c_junc[3] = 1e-15 ;
71910152Satgutier@umich.edu        I_on_n[3] = 399.8e-6;
72010152Satgutier@umich.edu        I_on_p[3] = 243.4e-6;
72110152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.65;
72210152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 2.05;
72310152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
72410152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
72510152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
72610152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
72710152Satgutier@umich.edu        I_off_n[3][0]  = 2.23e-11;
72810152Satgutier@umich.edu        I_off_n[3][10] = 3.46e-11;
72910152Satgutier@umich.edu        I_off_n[3][20] = 5.24e-11;
73010152Satgutier@umich.edu        I_off_n[3][30] = 7.75e-11;
73110152Satgutier@umich.edu        I_off_n[3][40] = 1.12e-10;
73210152Satgutier@umich.edu        I_off_n[3][50] = 1.58e-10;
73310152Satgutier@umich.edu        I_off_n[3][60] = 2.18e-10;
73410152Satgutier@umich.edu        I_off_n[3][70] = 2.88e-10;
73510152Satgutier@umich.edu        I_off_n[3][80] = 3.63e-10;
73610152Satgutier@umich.edu        I_off_n[3][90] = 4.41e-10;
73710152Satgutier@umich.edu        I_off_n[3][100] = 5.36e-10;
73810152Satgutier@umich.edu      }
73910152Satgutier@umich.edu      else if (ram_cell_tech_type == comm_dram)
74010152Satgutier@umich.edu      {
74110152Satgutier@umich.edu        //COMM-DRAM cell access transistor technology parameters
74210152Satgutier@umich.edu        curr_vdd_dram_cell = 1.3;
74310152Satgutier@umich.edu        Lphy[3] = 0.065;
74410152Satgutier@umich.edu        Lelec[3] = 0.0426;
74510152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 1;
74610152Satgutier@umich.edu        width_dram_access_transistor = 0.065;
74710152Satgutier@umich.edu        curr_I_on_dram_cell = 20e-6;
74810152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 1e-15;
74910152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
75010152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
75110152Satgutier@umich.edu        curr_Wmemcellnmos_dram = 0;
75210152Satgutier@umich.edu        curr_area_cell_dram = 6*0.065*0.065;
75310152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.5;
75410152Satgutier@umich.edu        curr_c_dram_cell = 30e-15;
75510152Satgutier@umich.edu
75610152Satgutier@umich.edu        //COMM-DRAM wordline transistor parameters
75710152Satgutier@umich.edu        curr_vpp = 3.3;
75810152Satgutier@umich.edu        t_ox[3] = 5e-3;
75910152Satgutier@umich.edu        v_th[3] = 1.0;
76010152Satgutier@umich.edu        c_ox[3] = 6.16e-15;
76110152Satgutier@umich.edu        mobility_eff[3] =  303.44 * (1e-2 * 1e6 * 1e-2 * 1e6);
76210152Satgutier@umich.edu        Vdsat[3] = 0.385;
76310152Satgutier@umich.edu        c_g_ideal[3] = 4e-16;
76410152Satgutier@umich.edu        c_fringe[3] = 0.08e-15;
76510152Satgutier@umich.edu        c_junc[3] = 1e-15 ;
76610152Satgutier@umich.edu        I_on_n[3] = 1031e-6;
76710152Satgutier@umich.edu        I_on_p[3] = I_on_n[3] / 2;
76810152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.69;
76910152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 2.39;
77010152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
77110152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
77210152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
77310152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
77410152Satgutier@umich.edu        I_off_n[3][0]  = 1.80e-14;
77510152Satgutier@umich.edu        I_off_n[3][10] = 3.64e-14;
77610152Satgutier@umich.edu        I_off_n[3][20] = 7.03e-14;
77710152Satgutier@umich.edu        I_off_n[3][30] = 1.31e-13;
77810152Satgutier@umich.edu        I_off_n[3][40] = 2.35e-13;
77910152Satgutier@umich.edu        I_off_n[3][50] = 4.09e-13;
78010152Satgutier@umich.edu        I_off_n[3][60] = 6.89e-13;
78110152Satgutier@umich.edu        I_off_n[3][70] = 1.13e-12;
78210152Satgutier@umich.edu        I_off_n[3][80] = 1.78e-12;
78310152Satgutier@umich.edu        I_off_n[3][90] = 2.71e-12;
78410152Satgutier@umich.edu        I_off_n[3][100] = 3.99e-12;
78510152Satgutier@umich.edu      }
78610152Satgutier@umich.edu
78710152Satgutier@umich.edu      //SRAM cell properties
78810152Satgutier@umich.edu      curr_Wmemcella_sram = 1.31 * g_ip->F_sz_um;
78910152Satgutier@umich.edu      curr_Wmemcellpmos_sram = 1.23 * g_ip->F_sz_um;
79010152Satgutier@umich.edu      curr_Wmemcellnmos_sram = 2.08 * g_ip->F_sz_um;
79110152Satgutier@umich.edu      curr_area_cell_sram = 146 * g_ip->F_sz_um * g_ip->F_sz_um;
79210152Satgutier@umich.edu      curr_asp_ratio_cell_sram = 1.46;
79310152Satgutier@umich.edu      //CAM cell properties //TODO: data need to be revisited
79410152Satgutier@umich.edu      curr_Wmemcella_cam = 1.31 * g_ip->F_sz_um;
79510152Satgutier@umich.edu      curr_Wmemcellpmos_cam = 1.23 * g_ip->F_sz_um;
79610152Satgutier@umich.edu      curr_Wmemcellnmos_cam = 2.08 * g_ip->F_sz_um;
79710152Satgutier@umich.edu      curr_area_cell_cam = 292 * g_ip->F_sz_um * g_ip->F_sz_um;
79810152Satgutier@umich.edu      curr_asp_ratio_cell_cam = 2.92;
79910152Satgutier@umich.edu      //Empirical undifferetiated core/FU coefficient
80010152Satgutier@umich.edu      curr_logic_scaling_co_eff = 0.7; //Rather than scale proportionally to square of feature size, only scale linearly according to IBM cell processor
80110152Satgutier@umich.edu      curr_core_tx_density      = 1.25*0.7;
80210152Satgutier@umich.edu      curr_sckt_co_eff           = 1.1359;
80310152Satgutier@umich.edu      curr_chip_layout_overhead  = 1.2;//die measurement results based on Niagara 1 and 2
80410152Satgutier@umich.edu      curr_macro_layout_overhead = 1.1;//EDA placement and routing tool rule of thumb
80510152Satgutier@umich.edu    }
80610152Satgutier@umich.edu
80710152Satgutier@umich.edu    if (tech == 45)
80810152Satgutier@umich.edu    { //45nm technology-node. Corresponds to year 2010 in ITRS
80910152Satgutier@umich.edu      //ITRS HP device type
81010152Satgutier@umich.edu      SENSE_AMP_D = .04e-9; // s
81110152Satgutier@umich.edu      SENSE_AMP_P = 2.7e-15; // J
81210152Satgutier@umich.edu      vdd[0] = 1.0;
81310152Satgutier@umich.edu      Lphy[0] = 0.018;
81410152Satgutier@umich.edu      Lelec[0] = 0.01345;
81510152Satgutier@umich.edu      t_ox[0] = 0.65e-3;
81610152Satgutier@umich.edu      v_th[0] = .18035;
81710152Satgutier@umich.edu      c_ox[0] = 3.77e-14;
81810152Satgutier@umich.edu      mobility_eff[0] = 266.68 * (1e-2 * 1e6 * 1e-2 * 1e6);
81910152Satgutier@umich.edu      Vdsat[0] = 9.38E-2;
82010152Satgutier@umich.edu      c_g_ideal[0] = 6.78e-16;
82110152Satgutier@umich.edu      c_fringe[0] = 0.05e-15;
82210152Satgutier@umich.edu      c_junc[0] = 1e-15;
82310152Satgutier@umich.edu      I_on_n[0] = 2046.6e-6;
82410152Satgutier@umich.edu      //There are certain problems with the ITRS PMOS numbers in MASTAR for 45nm. So we are using 65nm values of
82510152Satgutier@umich.edu      //n_to_p_eff_curr_drv_ratio and gmp_to_gmn_multiplier for 45nm
82610152Satgutier@umich.edu      I_on_p[0] = I_on_n[0] / 2;//This value is fixed arbitrarily but I_on_p is not being used in CACTI
82710152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.51;
82810152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[0] = 2.41;
82910152Satgutier@umich.edu      gmp_to_gmn_multiplier[0] = 1.38;
83010152Satgutier@umich.edu      Rnchannelon[0] = nmos_effective_resistance_multiplier * vdd[0] / I_on_n[0];
83110152Satgutier@umich.edu      Rpchannelon[0] = n_to_p_eff_curr_drv_ratio[0] * Rnchannelon[0];
83210152Satgutier@umich.edu      long_channel_leakage_reduction[0] = 1/3.546;//Using MASTAR, @380K, increase Lgate until Ion reduces to 90%, Ioff(Lgate normal)/Ioff(Lgate long)= 3.74
83310152Satgutier@umich.edu      I_off_n[0][0] = 2.8e-7;
83410152Satgutier@umich.edu      I_off_n[0][10] = 3.28e-7;
83510152Satgutier@umich.edu      I_off_n[0][20] = 3.81e-7;
83610152Satgutier@umich.edu      I_off_n[0][30] = 4.39e-7;
83710152Satgutier@umich.edu      I_off_n[0][40] = 5.02e-7;
83810152Satgutier@umich.edu      I_off_n[0][50] = 5.69e-7;
83910152Satgutier@umich.edu      I_off_n[0][60] = 6.42e-7;
84010152Satgutier@umich.edu      I_off_n[0][70] = 7.2e-7;
84110152Satgutier@umich.edu      I_off_n[0][80] = 8.03e-7;
84210152Satgutier@umich.edu      I_off_n[0][90] = 8.91e-7;
84310152Satgutier@umich.edu      I_off_n[0][100] = 9.84e-7;
84410152Satgutier@umich.edu
84510152Satgutier@umich.edu      I_g_on_n[0][0]  = 3.59e-8;//A/micron
84610152Satgutier@umich.edu      I_g_on_n[0][10] = 3.59e-8;
84710152Satgutier@umich.edu      I_g_on_n[0][20] = 3.59e-8;
84810152Satgutier@umich.edu      I_g_on_n[0][30] = 3.59e-8;
84910152Satgutier@umich.edu      I_g_on_n[0][40] = 3.59e-8;
85010152Satgutier@umich.edu      I_g_on_n[0][50] = 3.59e-8;
85110152Satgutier@umich.edu      I_g_on_n[0][60] = 3.59e-8;
85210152Satgutier@umich.edu      I_g_on_n[0][70] = 3.59e-8;
85310152Satgutier@umich.edu      I_g_on_n[0][80] = 3.59e-8;
85410152Satgutier@umich.edu      I_g_on_n[0][90] = 3.59e-8;
85510152Satgutier@umich.edu      I_g_on_n[0][100] = 3.59e-8;
85610152Satgutier@umich.edu
85710152Satgutier@umich.edu      //ITRS LSTP device type
85810152Satgutier@umich.edu      vdd[1] = 1.1;
85910152Satgutier@umich.edu      Lphy[1] =  0.028;
86010152Satgutier@umich.edu      Lelec[1] = 0.0212;
86110152Satgutier@umich.edu      t_ox[1] = 1.4e-3;
86210152Satgutier@umich.edu      v_th[1] = 0.50245;
86310152Satgutier@umich.edu      c_ox[1] = 2.01e-14;
86410152Satgutier@umich.edu      mobility_eff[1] =  363.96 * (1e-2 * 1e6 * 1e-2 * 1e6);
86510152Satgutier@umich.edu      Vdsat[1] = 9.12e-2;
86610152Satgutier@umich.edu      c_g_ideal[1] = 5.18e-16;
86710152Satgutier@umich.edu      c_fringe[1] = 0.08e-15;
86810152Satgutier@umich.edu      c_junc[1] = 1e-15;
86910152Satgutier@umich.edu      I_on_n[1] = 666.2e-6;
87010152Satgutier@umich.edu      I_on_p[1] = I_on_n[1] / 2;
87110152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.99;
87210152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[1] = 2.23;
87310152Satgutier@umich.edu      gmp_to_gmn_multiplier[1] = 0.99;
87410152Satgutier@umich.edu      Rnchannelon[1] = nmos_effective_resistance_multiplier * vdd[1] / I_on_n[1];
87510152Satgutier@umich.edu      Rpchannelon[1] = n_to_p_eff_curr_drv_ratio[1] * Rnchannelon[1];
87610152Satgutier@umich.edu      long_channel_leakage_reduction[1] = 1/2.08;
87710152Satgutier@umich.edu      I_off_n[1][0] = 1.01e-11;
87810152Satgutier@umich.edu      I_off_n[1][10] = 1.65e-11;
87910152Satgutier@umich.edu      I_off_n[1][20] = 2.62e-11;
88010152Satgutier@umich.edu      I_off_n[1][30] = 4.06e-11;
88110152Satgutier@umich.edu      I_off_n[1][40] = 6.12e-11;
88210152Satgutier@umich.edu      I_off_n[1][50] = 9.02e-11;
88310152Satgutier@umich.edu      I_off_n[1][60] = 1.3e-10;
88410152Satgutier@umich.edu      I_off_n[1][70] = 1.83e-10;
88510152Satgutier@umich.edu      I_off_n[1][80] = 2.51e-10;
88610152Satgutier@umich.edu      I_off_n[1][90] = 3.29e-10;
88710152Satgutier@umich.edu      I_off_n[1][100] = 4.1e-10;
88810152Satgutier@umich.edu
88910152Satgutier@umich.edu      I_g_on_n[1][0]  = 9.47e-12;//A/micron
89010152Satgutier@umich.edu      I_g_on_n[1][10] = 9.47e-12;
89110152Satgutier@umich.edu      I_g_on_n[1][20] = 9.47e-12;
89210152Satgutier@umich.edu      I_g_on_n[1][30] = 9.47e-12;
89310152Satgutier@umich.edu      I_g_on_n[1][40] = 9.47e-12;
89410152Satgutier@umich.edu      I_g_on_n[1][50] = 9.47e-12;
89510152Satgutier@umich.edu      I_g_on_n[1][60] = 9.47e-12;
89610152Satgutier@umich.edu      I_g_on_n[1][70] = 9.47e-12;
89710152Satgutier@umich.edu      I_g_on_n[1][80] = 9.47e-12;
89810152Satgutier@umich.edu      I_g_on_n[1][90] = 9.47e-12;
89910152Satgutier@umich.edu      I_g_on_n[1][100] = 9.47e-12;
90010152Satgutier@umich.edu
90110152Satgutier@umich.edu      //ITRS LOP device type
90210152Satgutier@umich.edu      vdd[2] = 0.7;
90310152Satgutier@umich.edu      Lphy[2] = 0.022;
90410152Satgutier@umich.edu      Lelec[2] = 0.016;
90510152Satgutier@umich.edu      t_ox[2] = 0.9e-3;
90610152Satgutier@umich.edu      v_th[2] = 0.22599;
90710152Satgutier@umich.edu      c_ox[2] = 2.82e-14;//F/micron2
90810152Satgutier@umich.edu      mobility_eff[2] = 508.9 * (1e-2 * 1e6 * 1e-2 * 1e6);
90910152Satgutier@umich.edu      Vdsat[2] = 5.71e-2;
91010152Satgutier@umich.edu      c_g_ideal[2] = 6.2e-16;
91110152Satgutier@umich.edu      c_fringe[2] = 0.073e-15;
91210152Satgutier@umich.edu      c_junc[2] = 1e-15;
91310152Satgutier@umich.edu      I_on_n[2] = 748.9e-6;
91410152Satgutier@umich.edu      I_on_p[2] = I_on_n[2] / 2;
91510152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.76;
91610152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[2] = 2.28;
91710152Satgutier@umich.edu      gmp_to_gmn_multiplier[2] = 1.11;
91810152Satgutier@umich.edu      Rnchannelon[2] = nmos_effective_resistance_multiplier * vdd[2] / I_on_n[2];
91910152Satgutier@umich.edu      Rpchannelon[2] = n_to_p_eff_curr_drv_ratio[2] * Rnchannelon[2];
92010152Satgutier@umich.edu      long_channel_leakage_reduction[2] = 1/1.92;
92110152Satgutier@umich.edu      I_off_n[2][0] = 4.03e-9;
92210152Satgutier@umich.edu      I_off_n[2][10] = 5.02e-9;
92310152Satgutier@umich.edu      I_off_n[2][20] = 6.18e-9;
92410152Satgutier@umich.edu      I_off_n[2][30] = 7.51e-9;
92510152Satgutier@umich.edu      I_off_n[2][40] = 9.04e-9;
92610152Satgutier@umich.edu      I_off_n[2][50] = 1.08e-8;
92710152Satgutier@umich.edu      I_off_n[2][60] = 1.27e-8;
92810152Satgutier@umich.edu      I_off_n[2][70] = 1.47e-8;
92910152Satgutier@umich.edu      I_off_n[2][80] = 1.66e-8;
93010152Satgutier@umich.edu      I_off_n[2][90] = 1.84e-8;
93110152Satgutier@umich.edu      I_off_n[2][100] = 2.03e-8;
93210152Satgutier@umich.edu
93310152Satgutier@umich.edu      I_g_on_n[2][0]  = 3.24e-8;//A/micron
93410152Satgutier@umich.edu      I_g_on_n[2][10] = 4.01e-8;
93510152Satgutier@umich.edu      I_g_on_n[2][20] = 4.90e-8;
93610152Satgutier@umich.edu      I_g_on_n[2][30] = 5.92e-8;
93710152Satgutier@umich.edu      I_g_on_n[2][40] = 7.08e-8;
93810152Satgutier@umich.edu      I_g_on_n[2][50] = 8.38e-8;
93910152Satgutier@umich.edu      I_g_on_n[2][60] = 9.82e-8;
94010152Satgutier@umich.edu      I_g_on_n[2][70] = 1.14e-7;
94110152Satgutier@umich.edu      I_g_on_n[2][80] = 1.29e-7;
94210152Satgutier@umich.edu      I_g_on_n[2][90] = 1.43e-7;
94310152Satgutier@umich.edu      I_g_on_n[2][100] = 1.54e-7;
94410152Satgutier@umich.edu
94510152Satgutier@umich.edu      if (ram_cell_tech_type == lp_dram)
94610152Satgutier@umich.edu      {
94710152Satgutier@umich.edu        //LP-DRAM cell access transistor technology parameters
94810152Satgutier@umich.edu        curr_vdd_dram_cell = 1.1;
94910152Satgutier@umich.edu        Lphy[3] = 0.078;
95010152Satgutier@umich.edu        Lelec[3] = 0.0504;// Assume Lelec is 30% lesser than Lphy for DRAM access and wordline transistors.
95110152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 0.44559;
95210152Satgutier@umich.edu        width_dram_access_transistor = 0.079;
95310152Satgutier@umich.edu        curr_I_on_dram_cell = 36e-6;//A
95410152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 19.5e-12;
95510152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
95610152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
95710152Satgutier@umich.edu        curr_Wmemcellnmos_dram  = 0;
95810152Satgutier@umich.edu        curr_area_cell_dram = width_dram_access_transistor * Lphy[3] * 10.0;
95910152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.46;
96010152Satgutier@umich.edu        curr_c_dram_cell = 20e-15;
96110152Satgutier@umich.edu
96210152Satgutier@umich.edu        //LP-DRAM wordline transistor parameters
96310152Satgutier@umich.edu        curr_vpp = 1.5;
96410152Satgutier@umich.edu        t_ox[3] = 2.1e-3;
96510152Satgutier@umich.edu        v_th[3] = 0.44559;
96610152Satgutier@umich.edu        c_ox[3] = 1.41e-14;
96710152Satgutier@umich.edu        mobility_eff[3] =   426.30 * (1e-2 * 1e6 * 1e-2 * 1e6);
96810152Satgutier@umich.edu        Vdsat[3] = 0.181;
96910152Satgutier@umich.edu        c_g_ideal[3] = 1.10e-15;
97010152Satgutier@umich.edu        c_fringe[3] = 0.08e-15;
97110152Satgutier@umich.edu        c_junc[3] = 1e-15;
97210152Satgutier@umich.edu        I_on_n[3] = 456e-6;
97310152Satgutier@umich.edu        I_on_p[3] = I_on_n[3] / 2;
97410152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.65;
97510152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 2.05;
97610152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
97710152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
97810152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
97910152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
98010152Satgutier@umich.edu        I_off_n[3][0] = 2.54e-11;
98110152Satgutier@umich.edu        I_off_n[3][10] = 3.94e-11;
98210152Satgutier@umich.edu        I_off_n[3][20] = 5.95e-11;
98310152Satgutier@umich.edu        I_off_n[3][30] = 8.79e-11;
98410152Satgutier@umich.edu        I_off_n[3][40] = 1.27e-10;
98510152Satgutier@umich.edu        I_off_n[3][50] = 1.79e-10;
98610152Satgutier@umich.edu        I_off_n[3][60] = 2.47e-10;
98710152Satgutier@umich.edu        I_off_n[3][70] = 3.31e-10;
98810152Satgutier@umich.edu        I_off_n[3][80] = 4.26e-10;
98910152Satgutier@umich.edu        I_off_n[3][90] = 5.27e-10;
99010152Satgutier@umich.edu        I_off_n[3][100] = 6.46e-10;
99110152Satgutier@umich.edu      }
99210152Satgutier@umich.edu      else if (ram_cell_tech_type == comm_dram)
99310152Satgutier@umich.edu      {
99410152Satgutier@umich.edu        //COMM-DRAM cell access transistor technology parameters
99510152Satgutier@umich.edu        curr_vdd_dram_cell = 1.1;
99610152Satgutier@umich.edu        Lphy[3] = 0.045;
99710152Satgutier@umich.edu        Lelec[3] = 0.0298;
99810152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 1;
99910152Satgutier@umich.edu        width_dram_access_transistor = 0.045;
100010152Satgutier@umich.edu        curr_I_on_dram_cell = 20e-6;//A
100110152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 1e-15;
100210152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
100310152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
100410152Satgutier@umich.edu        curr_Wmemcellnmos_dram  = 0;
100510152Satgutier@umich.edu        curr_area_cell_dram = 6*0.045*0.045;
100610152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.5;
100710152Satgutier@umich.edu        curr_c_dram_cell = 30e-15;
100810152Satgutier@umich.edu
100910152Satgutier@umich.edu        //COMM-DRAM wordline transistor parameters
101010152Satgutier@umich.edu        curr_vpp = 2.7;
101110152Satgutier@umich.edu        t_ox[3] = 4e-3;
101210152Satgutier@umich.edu        v_th[3] = 1.0;
101310152Satgutier@umich.edu        c_ox[3] = 7.98e-15;
101410152Satgutier@umich.edu        mobility_eff[3] = 368.58 * (1e-2 * 1e6 * 1e-2 * 1e6);
101510152Satgutier@umich.edu        Vdsat[3] = 0.147;
101610152Satgutier@umich.edu        c_g_ideal[3] = 3.59e-16;
101710152Satgutier@umich.edu        c_fringe[3] = 0.08e-15;
101810152Satgutier@umich.edu        c_junc[3] = 1e-15;
101910152Satgutier@umich.edu        I_on_n[3] = 999.4e-6;
102010152Satgutier@umich.edu        I_on_p[3] = I_on_n[3] / 2;
102110152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.69;
102210152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 1.95;
102310152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
102410152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
102510152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
102610152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
102710152Satgutier@umich.edu        I_off_n[3][0] = 1.31e-14;
102810152Satgutier@umich.edu        I_off_n[3][10] = 2.68e-14;
102910152Satgutier@umich.edu        I_off_n[3][20] = 5.25e-14;
103010152Satgutier@umich.edu        I_off_n[3][30] = 9.88e-14;
103110152Satgutier@umich.edu        I_off_n[3][40] = 1.79e-13;
103210152Satgutier@umich.edu        I_off_n[3][50] = 3.15e-13;
103310152Satgutier@umich.edu        I_off_n[3][60] = 5.36e-13;
103410152Satgutier@umich.edu        I_off_n[3][70] = 8.86e-13;
103510152Satgutier@umich.edu        I_off_n[3][80] = 1.42e-12;
103610152Satgutier@umich.edu        I_off_n[3][90] = 2.20e-12;
103710152Satgutier@umich.edu        I_off_n[3][100] = 3.29e-12;
103810152Satgutier@umich.edu      }
103910152Satgutier@umich.edu
104010152Satgutier@umich.edu
104110152Satgutier@umich.edu      //SRAM cell properties
104210152Satgutier@umich.edu      curr_Wmemcella_sram = 1.31 * g_ip->F_sz_um;
104310152Satgutier@umich.edu      curr_Wmemcellpmos_sram = 1.23 * g_ip->F_sz_um;
104410152Satgutier@umich.edu      curr_Wmemcellnmos_sram = 2.08 * g_ip->F_sz_um;
104510152Satgutier@umich.edu      curr_area_cell_sram = 146 * g_ip->F_sz_um * g_ip->F_sz_um;
104610152Satgutier@umich.edu      curr_asp_ratio_cell_sram = 1.46;
104710152Satgutier@umich.edu      //CAM cell properties //TODO: data need to be revisited
104810152Satgutier@umich.edu      curr_Wmemcella_cam = 1.31 * g_ip->F_sz_um;
104910152Satgutier@umich.edu      curr_Wmemcellpmos_cam = 1.23 * g_ip->F_sz_um;
105010152Satgutier@umich.edu      curr_Wmemcellnmos_cam = 2.08 * g_ip->F_sz_um;
105110152Satgutier@umich.edu      curr_area_cell_cam = 292 * g_ip->F_sz_um * g_ip->F_sz_um;
105210152Satgutier@umich.edu      curr_asp_ratio_cell_cam = 2.92;
105310152Satgutier@umich.edu      //Empirical undifferetiated core/FU coefficient
105410152Satgutier@umich.edu      curr_logic_scaling_co_eff = 0.7*0.7;
105510152Satgutier@umich.edu      curr_core_tx_density      = 1.25;
105610152Satgutier@umich.edu      curr_sckt_co_eff           = 1.1387;
105710152Satgutier@umich.edu      curr_chip_layout_overhead  = 1.2;//die measurement results based on Niagara 1 and 2
105810152Satgutier@umich.edu      curr_macro_layout_overhead = 1.1;//EDA placement and routing tool rule of thumb
105910152Satgutier@umich.edu    }
106010152Satgutier@umich.edu
106110152Satgutier@umich.edu    if (tech == 32)
106210152Satgutier@umich.edu    {
106310152Satgutier@umich.edu      SENSE_AMP_D = .03e-9; // s
106410152Satgutier@umich.edu      SENSE_AMP_P = 2.16e-15; // J
106510152Satgutier@umich.edu      //For 2013, MPU/ASIC stagger-contacted M1 half-pitch is 32 nm (so this is 32 nm
106610152Satgutier@umich.edu      //technology i.e. FEATURESIZE = 0.032). Using the SOI process numbers for
106710152Satgutier@umich.edu      //HP and LSTP.
106810152Satgutier@umich.edu      vdd[0] = 0.9;
106910152Satgutier@umich.edu      Lphy[0] = 0.013;
107010152Satgutier@umich.edu      Lelec[0] = 0.01013;
107110152Satgutier@umich.edu      t_ox[0] = 0.5e-3;
107210152Satgutier@umich.edu      v_th[0] = 0.21835;
107310152Satgutier@umich.edu      c_ox[0] = 4.11e-14;
107410152Satgutier@umich.edu      mobility_eff[0] = 361.84 * (1e-2 * 1e6 * 1e-2 * 1e6);
107510152Satgutier@umich.edu      Vdsat[0] = 5.09E-2;
107610152Satgutier@umich.edu      c_g_ideal[0] = 5.34e-16;
107710152Satgutier@umich.edu      c_fringe[0] = 0.04e-15;
107810152Satgutier@umich.edu      c_junc[0] = 1e-15;
107910152Satgutier@umich.edu      I_on_n[0] =  2211.7e-6;
108010152Satgutier@umich.edu      I_on_p[0] = I_on_n[0] / 2;
108110152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.49;
108210152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[0] = 2.41;
108310152Satgutier@umich.edu      gmp_to_gmn_multiplier[0] = 1.38;
108410152Satgutier@umich.edu      Rnchannelon[0] = nmos_effective_resistance_multiplier * vdd[0] / I_on_n[0];//ohm-micron
108510152Satgutier@umich.edu      Rpchannelon[0] = n_to_p_eff_curr_drv_ratio[0] * Rnchannelon[0];//ohm-micron
108610152Satgutier@umich.edu      long_channel_leakage_reduction[0] = 1/3.706;
108710152Satgutier@umich.edu      //Using MASTAR, @300K (380K does not work in MASTAR), increase Lgate until Ion reduces to 95% or Lgate increase by 5% (DG device can only increase by 5%),
108810152Satgutier@umich.edu      //whichever comes first
108910152Satgutier@umich.edu      I_off_n[0][0] = 1.52e-7;
109010152Satgutier@umich.edu      I_off_n[0][10] = 1.55e-7;
109110152Satgutier@umich.edu      I_off_n[0][20] = 1.59e-7;
109210152Satgutier@umich.edu      I_off_n[0][30] = 1.68e-7;
109310152Satgutier@umich.edu      I_off_n[0][40] = 1.90e-7;
109410152Satgutier@umich.edu      I_off_n[0][50] = 2.69e-7;
109510152Satgutier@umich.edu      I_off_n[0][60] = 5.32e-7;
109610152Satgutier@umich.edu      I_off_n[0][70] = 1.02e-6;
109710152Satgutier@umich.edu      I_off_n[0][80] = 1.62e-6;
109810152Satgutier@umich.edu      I_off_n[0][90] = 2.73e-6;
109910152Satgutier@umich.edu      I_off_n[0][100] = 6.1e-6;
110010152Satgutier@umich.edu
110110152Satgutier@umich.edu      I_g_on_n[0][0]  = 6.55e-8;//A/micron
110210152Satgutier@umich.edu      I_g_on_n[0][10] = 6.55e-8;
110310152Satgutier@umich.edu      I_g_on_n[0][20] = 6.55e-8;
110410152Satgutier@umich.edu      I_g_on_n[0][30] = 6.55e-8;
110510152Satgutier@umich.edu      I_g_on_n[0][40] = 6.55e-8;
110610152Satgutier@umich.edu      I_g_on_n[0][50] = 6.55e-8;
110710152Satgutier@umich.edu      I_g_on_n[0][60] = 6.55e-8;
110810152Satgutier@umich.edu      I_g_on_n[0][70] = 6.55e-8;
110910152Satgutier@umich.edu      I_g_on_n[0][80] = 6.55e-8;
111010152Satgutier@umich.edu      I_g_on_n[0][90] = 6.55e-8;
111110152Satgutier@umich.edu      I_g_on_n[0][100] = 6.55e-8;
111210152Satgutier@umich.edu
111310152Satgutier@umich.edu//      32 DG
111410152Satgutier@umich.edu//      I_g_on_n[0][0]  = 2.71e-9;//A/micron
111510152Satgutier@umich.edu//      I_g_on_n[0][10] = 2.71e-9;
111610152Satgutier@umich.edu//      I_g_on_n[0][20] = 2.71e-9;
111710152Satgutier@umich.edu//      I_g_on_n[0][30] = 2.71e-9;
111810152Satgutier@umich.edu//      I_g_on_n[0][40] = 2.71e-9;
111910152Satgutier@umich.edu//      I_g_on_n[0][50] = 2.71e-9;
112010152Satgutier@umich.edu//      I_g_on_n[0][60] = 2.71e-9;
112110152Satgutier@umich.edu//      I_g_on_n[0][70] = 2.71e-9;
112210152Satgutier@umich.edu//      I_g_on_n[0][80] = 2.71e-9;
112310152Satgutier@umich.edu//      I_g_on_n[0][90] = 2.71e-9;
112410152Satgutier@umich.edu//      I_g_on_n[0][100] = 2.71e-9;
112510152Satgutier@umich.edu
112610152Satgutier@umich.edu      //LSTP device type
112710152Satgutier@umich.edu      vdd[1] = 1;
112810152Satgutier@umich.edu      Lphy[1] = 0.020;
112910152Satgutier@umich.edu      Lelec[1] = 0.0173;
113010152Satgutier@umich.edu      t_ox[1] = 1.2e-3;
113110152Satgutier@umich.edu      v_th[1] = 0.513;
113210152Satgutier@umich.edu      c_ox[1] = 2.29e-14;
113310152Satgutier@umich.edu      mobility_eff[1] =  347.46 * (1e-2 * 1e6 * 1e-2 * 1e6);
113410152Satgutier@umich.edu      Vdsat[1] = 8.64e-2;
113510152Satgutier@umich.edu      c_g_ideal[1] = 4.58e-16;
113610152Satgutier@umich.edu      c_fringe[1] = 0.053e-15;
113710152Satgutier@umich.edu      c_junc[1] = 1e-15;
113810152Satgutier@umich.edu      I_on_n[1] = 683.6e-6;
113910152Satgutier@umich.edu      I_on_p[1] = I_on_n[1] / 2;
114010152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.99;
114110152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[1] = 2.23;
114210152Satgutier@umich.edu      gmp_to_gmn_multiplier[1] = 0.99;
114310152Satgutier@umich.edu      Rnchannelon[1] = nmos_effective_resistance_multiplier * vdd[1] / I_on_n[1];
114410152Satgutier@umich.edu      Rpchannelon[1] = n_to_p_eff_curr_drv_ratio[1] * Rnchannelon[1];
114510152Satgutier@umich.edu      long_channel_leakage_reduction[1] = 1/1.93;
114610152Satgutier@umich.edu      I_off_n[1][0] = 2.06e-11;
114710152Satgutier@umich.edu      I_off_n[1][10] = 3.30e-11;
114810152Satgutier@umich.edu      I_off_n[1][20] = 5.15e-11;
114910152Satgutier@umich.edu      I_off_n[1][30] = 7.83e-11;
115010152Satgutier@umich.edu      I_off_n[1][40] = 1.16e-10;
115110152Satgutier@umich.edu      I_off_n[1][50] = 1.69e-10;
115210152Satgutier@umich.edu      I_off_n[1][60] = 2.40e-10;
115310152Satgutier@umich.edu      I_off_n[1][70] = 3.34e-10;
115410152Satgutier@umich.edu      I_off_n[1][80] = 4.54e-10;
115510152Satgutier@umich.edu      I_off_n[1][90] = 5.96e-10;
115610152Satgutier@umich.edu      I_off_n[1][100] = 7.44e-10;
115710152Satgutier@umich.edu
115810152Satgutier@umich.edu      I_g_on_n[1][0]  = 3.73e-11;//A/micron
115910152Satgutier@umich.edu      I_g_on_n[1][10] = 3.73e-11;
116010152Satgutier@umich.edu      I_g_on_n[1][20] = 3.73e-11;
116110152Satgutier@umich.edu      I_g_on_n[1][30] = 3.73e-11;
116210152Satgutier@umich.edu      I_g_on_n[1][40] = 3.73e-11;
116310152Satgutier@umich.edu      I_g_on_n[1][50] = 3.73e-11;
116410152Satgutier@umich.edu      I_g_on_n[1][60] = 3.73e-11;
116510152Satgutier@umich.edu      I_g_on_n[1][70] = 3.73e-11;
116610152Satgutier@umich.edu      I_g_on_n[1][80] = 3.73e-11;
116710152Satgutier@umich.edu      I_g_on_n[1][90] = 3.73e-11;
116810152Satgutier@umich.edu      I_g_on_n[1][100] = 3.73e-11;
116910152Satgutier@umich.edu
117010152Satgutier@umich.edu
117110152Satgutier@umich.edu      //LOP device type
117210152Satgutier@umich.edu      vdd[2] = 0.6;
117310152Satgutier@umich.edu      Lphy[2] = 0.016;
117410152Satgutier@umich.edu      Lelec[2] = 0.01232;
117510152Satgutier@umich.edu      t_ox[2] = 0.9e-3;
117610152Satgutier@umich.edu      v_th[2] = 0.24227;
117710152Satgutier@umich.edu      c_ox[2] = 2.84e-14;
117810152Satgutier@umich.edu      mobility_eff[2] =  513.52 * (1e-2 * 1e6 * 1e-2 * 1e6);
117910152Satgutier@umich.edu      Vdsat[2] = 4.64e-2;
118010152Satgutier@umich.edu      c_g_ideal[2] = 4.54e-16;
118110152Satgutier@umich.edu      c_fringe[2] = 0.057e-15;
118210152Satgutier@umich.edu      c_junc[2] = 1e-15;
118310152Satgutier@umich.edu      I_on_n[2] = 827.8e-6;
118410152Satgutier@umich.edu      I_on_p[2] = I_on_n[2] / 2;
118510152Satgutier@umich.edu      nmos_effective_resistance_multiplier = 1.73;
118610152Satgutier@umich.edu      n_to_p_eff_curr_drv_ratio[2] = 2.28;
118710152Satgutier@umich.edu      gmp_to_gmn_multiplier[2] = 1.11;
118810152Satgutier@umich.edu      Rnchannelon[2] = nmos_effective_resistance_multiplier * vdd[2] / I_on_n[2];
118910152Satgutier@umich.edu      Rpchannelon[2] = n_to_p_eff_curr_drv_ratio[2] * Rnchannelon[2];
119010152Satgutier@umich.edu      long_channel_leakage_reduction[2] = 1/1.89;
119110152Satgutier@umich.edu      I_off_n[2][0] = 5.94e-8;
119210152Satgutier@umich.edu      I_off_n[2][10] = 7.23e-8;
119310152Satgutier@umich.edu      I_off_n[2][20] = 8.7e-8;
119410152Satgutier@umich.edu      I_off_n[2][30] = 1.04e-7;
119510152Satgutier@umich.edu      I_off_n[2][40] = 1.22e-7;
119610152Satgutier@umich.edu      I_off_n[2][50] = 1.43e-7;
119710152Satgutier@umich.edu      I_off_n[2][60] = 1.65e-7;
119810152Satgutier@umich.edu      I_off_n[2][70] = 1.90e-7;
119910152Satgutier@umich.edu      I_off_n[2][80] = 2.15e-7;
120010152Satgutier@umich.edu      I_off_n[2][90] = 2.39e-7;
120110152Satgutier@umich.edu      I_off_n[2][100] = 2.63e-7;
120210152Satgutier@umich.edu
120310152Satgutier@umich.edu      I_g_on_n[2][0]  = 2.93e-9;//A/micron
120410152Satgutier@umich.edu      I_g_on_n[2][10] = 2.93e-9;
120510152Satgutier@umich.edu      I_g_on_n[2][20] = 2.93e-9;
120610152Satgutier@umich.edu      I_g_on_n[2][30] = 2.93e-9;
120710152Satgutier@umich.edu      I_g_on_n[2][40] = 2.93e-9;
120810152Satgutier@umich.edu      I_g_on_n[2][50] = 2.93e-9;
120910152Satgutier@umich.edu      I_g_on_n[2][60] = 2.93e-9;
121010152Satgutier@umich.edu      I_g_on_n[2][70] = 2.93e-9;
121110152Satgutier@umich.edu      I_g_on_n[2][80] = 2.93e-9;
121210152Satgutier@umich.edu      I_g_on_n[2][90] = 2.93e-9;
121310152Satgutier@umich.edu      I_g_on_n[2][100] = 2.93e-9;
121410152Satgutier@umich.edu
121510152Satgutier@umich.edu      if (ram_cell_tech_type == lp_dram)
121610152Satgutier@umich.edu      {
121710152Satgutier@umich.edu        //LP-DRAM cell access transistor technology parameters
121810152Satgutier@umich.edu        curr_vdd_dram_cell = 1.0;
121910152Satgutier@umich.edu        Lphy[3] = 0.056;
122010152Satgutier@umich.edu        Lelec[3] = 0.0419;//Assume Lelec is 30% lesser than Lphy for DRAM access and wordline transistors.
122110152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 0.44129;
122210152Satgutier@umich.edu        width_dram_access_transistor = 0.056;
122310152Satgutier@umich.edu        curr_I_on_dram_cell = 36e-6;
122410152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 18.9e-12;
122510152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
122610152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
122710152Satgutier@umich.edu        curr_Wmemcellnmos_dram = 0;
122810152Satgutier@umich.edu        curr_area_cell_dram = width_dram_access_transistor * Lphy[3] * 10.0;
122910152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.46;
123010152Satgutier@umich.edu        curr_c_dram_cell = 20e-15;
123110152Satgutier@umich.edu
123210152Satgutier@umich.edu        //LP-DRAM wordline transistor parameters
123310152Satgutier@umich.edu        curr_vpp = 1.5;
123410152Satgutier@umich.edu        t_ox[3] = 2e-3;
123510152Satgutier@umich.edu        v_th[3] = 0.44467;
123610152Satgutier@umich.edu        c_ox[3] = 1.48e-14;
123710152Satgutier@umich.edu        mobility_eff[3] =  408.12 * (1e-2 * 1e6 * 1e-2 * 1e6);
123810152Satgutier@umich.edu        Vdsat[3] = 0.174;
123910152Satgutier@umich.edu        c_g_ideal[3] = 7.45e-16;
124010152Satgutier@umich.edu        c_fringe[3] = 0.053e-15;
124110152Satgutier@umich.edu        c_junc[3] = 1e-15;
124210152Satgutier@umich.edu        I_on_n[3] = 1055.4e-6;
124310152Satgutier@umich.edu        I_on_p[3] = I_on_n[3] / 2;
124410152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.65;
124510152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 2.05;
124610152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
124710152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
124810152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
124910152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
125010152Satgutier@umich.edu        I_off_n[3][0]  = 3.57e-11;
125110152Satgutier@umich.edu        I_off_n[3][10] = 5.51e-11;
125210152Satgutier@umich.edu        I_off_n[3][20] = 8.27e-11;
125310152Satgutier@umich.edu        I_off_n[3][30] = 1.21e-10;
125410152Satgutier@umich.edu        I_off_n[3][40] = 1.74e-10;
125510152Satgutier@umich.edu        I_off_n[3][50] = 2.45e-10;
125610152Satgutier@umich.edu        I_off_n[3][60] = 3.38e-10;
125710152Satgutier@umich.edu        I_off_n[3][70] = 4.53e-10;
125810152Satgutier@umich.edu        I_off_n[3][80] = 5.87e-10;
125910152Satgutier@umich.edu        I_off_n[3][90] = 7.29e-10;
126010152Satgutier@umich.edu        I_off_n[3][100] = 8.87e-10;
126110152Satgutier@umich.edu      }
126210152Satgutier@umich.edu      else if (ram_cell_tech_type == comm_dram)
126310152Satgutier@umich.edu      {
126410152Satgutier@umich.edu        //COMM-DRAM cell access transistor technology parameters
126510152Satgutier@umich.edu        curr_vdd_dram_cell = 1.0;
126610152Satgutier@umich.edu        Lphy[3] = 0.032;
126710152Satgutier@umich.edu        Lelec[3] = 0.0205;//Assume Lelec is 30% lesser than Lphy for DRAM access and wordline transistors.
126810152Satgutier@umich.edu        curr_v_th_dram_access_transistor = 1;
126910152Satgutier@umich.edu        width_dram_access_transistor = 0.032;
127010152Satgutier@umich.edu        curr_I_on_dram_cell = 20e-6;
127110152Satgutier@umich.edu        curr_I_off_dram_cell_worst_case_length_temp = 1e-15;
127210152Satgutier@umich.edu        curr_Wmemcella_dram = width_dram_access_transistor;
127310152Satgutier@umich.edu        curr_Wmemcellpmos_dram = 0;
127410152Satgutier@umich.edu        curr_Wmemcellnmos_dram = 0;
127510152Satgutier@umich.edu        curr_area_cell_dram = 6*0.032*0.032;
127610152Satgutier@umich.edu        curr_asp_ratio_cell_dram = 1.5;
127710152Satgutier@umich.edu        curr_c_dram_cell = 30e-15;
127810152Satgutier@umich.edu
127910152Satgutier@umich.edu        //COMM-DRAM wordline transistor parameters
128010152Satgutier@umich.edu        curr_vpp = 2.6;
128110152Satgutier@umich.edu        t_ox[3] = 4e-3;
128210152Satgutier@umich.edu        v_th[3] = 1.0;
128310152Satgutier@umich.edu        c_ox[3] = 7.99e-15;
128410152Satgutier@umich.edu        mobility_eff[3] =  380.76 * (1e-2 * 1e6 * 1e-2 * 1e6);
128510152Satgutier@umich.edu        Vdsat[3] = 0.129;
128610152Satgutier@umich.edu        c_g_ideal[3] = 2.56e-16;
128710152Satgutier@umich.edu        c_fringe[3] = 0.053e-15;
128810152Satgutier@umich.edu        c_junc[3] = 1e-15;
128910152Satgutier@umich.edu        I_on_n[3] = 1024.5e-6;
129010152Satgutier@umich.edu        I_on_p[3] = I_on_n[3] / 2;
129110152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.69;
129210152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[3] = 1.95;
129310152Satgutier@umich.edu        gmp_to_gmn_multiplier[3] = 0.90;
129410152Satgutier@umich.edu        Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp / I_on_n[3];
129510152Satgutier@umich.edu        Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];
129610152Satgutier@umich.edu        long_channel_leakage_reduction[3] = 1;
129710152Satgutier@umich.edu        I_off_n[3][0]  = 3.63e-14;
129810152Satgutier@umich.edu        I_off_n[3][10] = 7.18e-14;
129910152Satgutier@umich.edu        I_off_n[3][20] = 1.36e-13;
130010152Satgutier@umich.edu        I_off_n[3][30] = 2.49e-13;
130110152Satgutier@umich.edu        I_off_n[3][40] = 4.41e-13;
130210152Satgutier@umich.edu        I_off_n[3][50] = 7.55e-13;
130310152Satgutier@umich.edu        I_off_n[3][60] = 1.26e-12;
130410152Satgutier@umich.edu        I_off_n[3][70] = 2.03e-12;
130510152Satgutier@umich.edu        I_off_n[3][80] = 3.19e-12;
130610152Satgutier@umich.edu        I_off_n[3][90] = 4.87e-12;
130710152Satgutier@umich.edu        I_off_n[3][100] = 7.16e-12;
130810152Satgutier@umich.edu      }
130910152Satgutier@umich.edu
131010152Satgutier@umich.edu      //SRAM cell properties
131110152Satgutier@umich.edu      curr_Wmemcella_sram    = 1.31 * g_ip->F_sz_um;
131210152Satgutier@umich.edu      curr_Wmemcellpmos_sram = 1.23 * g_ip->F_sz_um;
131310152Satgutier@umich.edu      curr_Wmemcellnmos_sram = 2.08 * g_ip->F_sz_um;
131410152Satgutier@umich.edu      curr_area_cell_sram    = 146 * g_ip->F_sz_um * g_ip->F_sz_um;
131510152Satgutier@umich.edu      curr_asp_ratio_cell_sram = 1.46;
131610152Satgutier@umich.edu      //CAM cell properties //TODO: data need to be revisited
131710152Satgutier@umich.edu      curr_Wmemcella_cam = 1.31 * g_ip->F_sz_um;
131810152Satgutier@umich.edu      curr_Wmemcellpmos_cam = 1.23 * g_ip->F_sz_um;
131910152Satgutier@umich.edu      curr_Wmemcellnmos_cam = 2.08 * g_ip->F_sz_um;
132010152Satgutier@umich.edu      curr_area_cell_cam = 292 * g_ip->F_sz_um * g_ip->F_sz_um;
132110152Satgutier@umich.edu      curr_asp_ratio_cell_cam = 2.92;
132210152Satgutier@umich.edu      //Empirical undifferetiated core/FU coefficient
132310152Satgutier@umich.edu      curr_logic_scaling_co_eff = 0.7*0.7*0.7;
132410152Satgutier@umich.edu      curr_core_tx_density      = 1.25/0.7;
132510152Satgutier@umich.edu      curr_sckt_co_eff           = 1.1111;
132610152Satgutier@umich.edu      curr_chip_layout_overhead  = 1.2;//die measurement results based on Niagara 1 and 2
132710152Satgutier@umich.edu      curr_macro_layout_overhead = 1.1;//EDA placement and routing tool rule of thumb
132810152Satgutier@umich.edu    }
132910152Satgutier@umich.edu
133010152Satgutier@umich.edu    if(tech == 22){
133110152Satgutier@umich.edu        SENSE_AMP_D = .03e-9; // s
133210152Satgutier@umich.edu        SENSE_AMP_P = 2.16e-15; // J
133310152Satgutier@umich.edu        //For 2016, MPU/ASIC stagger-contacted M1 half-pitch is 22 nm (so this is 22 nm
133410152Satgutier@umich.edu        //technology i.e. FEATURESIZE = 0.022). Using the DG process numbers for HP.
133510152Satgutier@umich.edu        //22 nm HP
133610152Satgutier@umich.edu        vdd[0] = 0.8;
133710152Satgutier@umich.edu        Lphy[0] = 0.009;//Lphy is the physical gate-length.
133810152Satgutier@umich.edu        Lelec[0] = 0.00468;//Lelec is the electrical gate-length.
133910152Satgutier@umich.edu        t_ox[0] = 0.55e-3;//micron
134010152Satgutier@umich.edu        v_th[0] = 0.1395;//V
134110152Satgutier@umich.edu        c_ox[0] = 3.63e-14;//F/micron2
134210152Satgutier@umich.edu        mobility_eff[0] = 426.07 * (1e-2 * 1e6 * 1e-2 * 1e6); //micron2 / Vs
134310152Satgutier@umich.edu        Vdsat[0] = 2.33e-2; //V/micron
134410152Satgutier@umich.edu        c_g_ideal[0] = 3.27e-16;//F/micron
134510152Satgutier@umich.edu        c_fringe[0] = 0.06e-15;//F/micron
134610152Satgutier@umich.edu        c_junc[0] = 0;//F/micron2
134710152Satgutier@umich.edu        I_on_n[0] =  2626.4e-6;//A/micron
134810152Satgutier@umich.edu        I_on_p[0] = I_on_n[0] / 2;//A/micron //This value for I_on_p is not really used.
134910152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.45;
135010152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[0] = 2; //Wpmos/Wnmos = 2 in 2007 MASTAR. Look in
135110152Satgutier@umich.edu        //"Dynamic" tab of Device workspace.
135210152Satgutier@umich.edu        gmp_to_gmn_multiplier[0] = 1.38; //Just using the 32nm SOI value.
135310152Satgutier@umich.edu        Rnchannelon[0] = nmos_effective_resistance_multiplier * vdd[0] / I_on_n[0];//ohm-micron
135410152Satgutier@umich.edu        Rpchannelon[0] = n_to_p_eff_curr_drv_ratio[0] * Rnchannelon[0];//ohm-micron
135510152Satgutier@umich.edu        long_channel_leakage_reduction[0] = 1/3.274;
135610152Satgutier@umich.edu        I_off_n[0][0] = 1.52e-7/1.5*1.2;//From 22nm, leakage current are directly from ITRS report rather than MASTAR, since MASTAR has serious bugs there.
135710152Satgutier@umich.edu        I_off_n[0][10] = 1.55e-7/1.5*1.2;
135810152Satgutier@umich.edu        I_off_n[0][20] = 1.59e-7/1.5*1.2;
135910152Satgutier@umich.edu        I_off_n[0][30] = 1.68e-7/1.5*1.2;
136010152Satgutier@umich.edu        I_off_n[0][40] = 1.90e-7/1.5*1.2;
136110152Satgutier@umich.edu        I_off_n[0][50] = 2.69e-7/1.5*1.2;
136210152Satgutier@umich.edu        I_off_n[0][60] = 5.32e-7/1.5*1.2;
136310152Satgutier@umich.edu        I_off_n[0][70] = 1.02e-6/1.5*1.2;
136410152Satgutier@umich.edu        I_off_n[0][80] = 1.62e-6/1.5*1.2;
136510152Satgutier@umich.edu        I_off_n[0][90] = 2.73e-6/1.5*1.2;
136610152Satgutier@umich.edu        I_off_n[0][100] = 6.1e-6/1.5*1.2;
136710152Satgutier@umich.edu        //for 22nm DG HP
136810152Satgutier@umich.edu        I_g_on_n[0][0]  = 1.81e-9;//A/micron
136910152Satgutier@umich.edu        I_g_on_n[0][10] = 1.81e-9;
137010152Satgutier@umich.edu        I_g_on_n[0][20] = 1.81e-9;
137110152Satgutier@umich.edu        I_g_on_n[0][30] = 1.81e-9;
137210152Satgutier@umich.edu        I_g_on_n[0][40] = 1.81e-9;
137310152Satgutier@umich.edu        I_g_on_n[0][50] = 1.81e-9;
137410152Satgutier@umich.edu        I_g_on_n[0][60] = 1.81e-9;
137510152Satgutier@umich.edu        I_g_on_n[0][70] = 1.81e-9;
137610152Satgutier@umich.edu        I_g_on_n[0][80] = 1.81e-9;
137710152Satgutier@umich.edu        I_g_on_n[0][90] = 1.81e-9;
137810152Satgutier@umich.edu        I_g_on_n[0][100] = 1.81e-9;
137910152Satgutier@umich.edu
138010152Satgutier@umich.edu        //22 nm LSTP DG
138110152Satgutier@umich.edu        vdd[1] = 0.8;
138210152Satgutier@umich.edu        Lphy[1] = 0.014;
138310152Satgutier@umich.edu        Lelec[1] = 0.008;//Lelec is the electrical gate-length.
138410152Satgutier@umich.edu        t_ox[1] = 1.1e-3;//micron
138510152Satgutier@umich.edu        v_th[1] = 0.40126;//V
138610152Satgutier@umich.edu        c_ox[1] = 2.30e-14;//F/micron2
138710152Satgutier@umich.edu        mobility_eff[1] =  738.09 * (1e-2 * 1e6 * 1e-2 * 1e6); //micron2 / Vs
138810152Satgutier@umich.edu        Vdsat[1] = 6.64e-2; //V/micron
138910152Satgutier@umich.edu        c_g_ideal[1] = 3.22e-16;//F/micron
139010152Satgutier@umich.edu        c_fringe[1] = 0.08e-15;
139110152Satgutier@umich.edu        c_junc[1] = 0;//F/micron2
139210152Satgutier@umich.edu        I_on_n[1] = 727.6e-6;//A/micron
139310152Satgutier@umich.edu        I_on_p[1] = I_on_n[1] / 2;
139410152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.99;
139510152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[1] = 2;
139610152Satgutier@umich.edu        gmp_to_gmn_multiplier[1] = 0.99;
139710152Satgutier@umich.edu        Rnchannelon[1] = nmos_effective_resistance_multiplier * vdd[1] / I_on_n[1];//ohm-micron
139810152Satgutier@umich.edu        Rpchannelon[1] = n_to_p_eff_curr_drv_ratio[1] * Rnchannelon[1];//ohm-micron
139910152Satgutier@umich.edu        long_channel_leakage_reduction[1] = 1/1.89;
140010152Satgutier@umich.edu        I_off_n[1][0] = 2.43e-11;
140110152Satgutier@umich.edu        I_off_n[1][10] = 4.85e-11;
140210152Satgutier@umich.edu        I_off_n[1][20] = 9.68e-11;
140310152Satgutier@umich.edu        I_off_n[1][30] = 1.94e-10;
140410152Satgutier@umich.edu        I_off_n[1][40] = 3.87e-10;
140510152Satgutier@umich.edu        I_off_n[1][50] = 7.73e-10;
140610152Satgutier@umich.edu        I_off_n[1][60] = 3.55e-10;
140710152Satgutier@umich.edu        I_off_n[1][70] = 3.09e-9;
140810152Satgutier@umich.edu        I_off_n[1][80] = 6.19e-9;
140910152Satgutier@umich.edu        I_off_n[1][90] = 1.24e-8;
141010152Satgutier@umich.edu        I_off_n[1][100]= 2.48e-8;
141110152Satgutier@umich.edu
141210152Satgutier@umich.edu        I_g_on_n[1][0]  = 4.51e-10;//A/micron
141310152Satgutier@umich.edu        I_g_on_n[1][10] = 4.51e-10;
141410152Satgutier@umich.edu        I_g_on_n[1][20] = 4.51e-10;
141510152Satgutier@umich.edu        I_g_on_n[1][30] = 4.51e-10;
141610152Satgutier@umich.edu        I_g_on_n[1][40] = 4.51e-10;
141710152Satgutier@umich.edu        I_g_on_n[1][50] = 4.51e-10;
141810152Satgutier@umich.edu        I_g_on_n[1][60] = 4.51e-10;
141910152Satgutier@umich.edu        I_g_on_n[1][70] = 4.51e-10;
142010152Satgutier@umich.edu        I_g_on_n[1][80] = 4.51e-10;
142110152Satgutier@umich.edu        I_g_on_n[1][90] = 4.51e-10;
142210152Satgutier@umich.edu        I_g_on_n[1][100] = 4.51e-10;
142310152Satgutier@umich.edu
142410152Satgutier@umich.edu        //22 nm LOP
142510152Satgutier@umich.edu        vdd[2] = 0.6;
142610152Satgutier@umich.edu        Lphy[2] = 0.011;
142710152Satgutier@umich.edu        Lelec[2] = 0.00604;//Lelec is the electrical gate-length.
142810152Satgutier@umich.edu        t_ox[2] = 0.8e-3;//micron
142910152Satgutier@umich.edu        v_th[2] = 0.2315;//V
143010152Satgutier@umich.edu        c_ox[2] = 2.87e-14;//F/micron2
143110152Satgutier@umich.edu        mobility_eff[2] =  698.37 * (1e-2 * 1e6 * 1e-2 * 1e6); //micron2 / Vs
143210152Satgutier@umich.edu        Vdsat[2] = 1.81e-2; //V/micron
143310152Satgutier@umich.edu        c_g_ideal[2] = 3.16e-16;//F/micron
143410152Satgutier@umich.edu        c_fringe[2] = 0.08e-15;
143510152Satgutier@umich.edu        c_junc[2] = 0;//F/micron2 This is Cj0 not Cjunc in MASTAR results->Dynamic Tab
143610152Satgutier@umich.edu        I_on_n[2] = 916.1e-6;//A/micron
143710152Satgutier@umich.edu        I_on_p[2] = I_on_n[2] / 2;
143810152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.73;
143910152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[2] = 2;
144010152Satgutier@umich.edu        gmp_to_gmn_multiplier[2] = 1.11;
144110152Satgutier@umich.edu        Rnchannelon[2] = nmos_effective_resistance_multiplier * vdd[2] / I_on_n[2];//ohm-micron
144210152Satgutier@umich.edu        Rpchannelon[2] = n_to_p_eff_curr_drv_ratio[2] * Rnchannelon[2];//ohm-micron
144310152Satgutier@umich.edu        long_channel_leakage_reduction[2] = 1/2.38;
144410152Satgutier@umich.edu
144510152Satgutier@umich.edu        I_off_n[2][0] = 1.31e-8;
144610152Satgutier@umich.edu        I_off_n[2][10] = 2.60e-8;
144710152Satgutier@umich.edu        I_off_n[2][20] = 5.14e-8;
144810152Satgutier@umich.edu        I_off_n[2][30] = 1.02e-7;
144910152Satgutier@umich.edu        I_off_n[2][40] = 2.02e-7;
145010152Satgutier@umich.edu        I_off_n[2][50] = 3.99e-7;
145110152Satgutier@umich.edu        I_off_n[2][60] = 7.91e-7;
145210152Satgutier@umich.edu        I_off_n[2][70] = 1.09e-6;
145310152Satgutier@umich.edu        I_off_n[2][80] = 2.09e-6;
145410152Satgutier@umich.edu        I_off_n[2][90] = 4.04e-6;
145510152Satgutier@umich.edu        I_off_n[2][100]= 4.48e-6;
145610152Satgutier@umich.edu
145710152Satgutier@umich.edu        I_g_on_n[2][0]  = 2.74e-9;//A/micron
145810152Satgutier@umich.edu        I_g_on_n[2][10] = 2.74e-9;
145910152Satgutier@umich.edu        I_g_on_n[2][20] = 2.74e-9;
146010152Satgutier@umich.edu        I_g_on_n[2][30] = 2.74e-9;
146110152Satgutier@umich.edu        I_g_on_n[2][40] = 2.74e-9;
146210152Satgutier@umich.edu        I_g_on_n[2][50] = 2.74e-9;
146310152Satgutier@umich.edu        I_g_on_n[2][60] = 2.74e-9;
146410152Satgutier@umich.edu        I_g_on_n[2][70] = 2.74e-9;
146510152Satgutier@umich.edu        I_g_on_n[2][80] = 2.74e-9;
146610152Satgutier@umich.edu        I_g_on_n[2][90] = 2.74e-9;
146710152Satgutier@umich.edu        I_g_on_n[2][100] = 2.74e-9;
146810152Satgutier@umich.edu
146910152Satgutier@umich.edu
147010152Satgutier@umich.edu
147110152Satgutier@umich.edu        if (ram_cell_tech_type == 3)
147210152Satgutier@umich.edu              {}
147310152Satgutier@umich.edu        else if (ram_cell_tech_type == 4)
147410152Satgutier@umich.edu        {
147510152Satgutier@umich.edu        //22 nm commodity DRAM cell access transistor technology parameters.
147610152Satgutier@umich.edu                //parameters
147710152Satgutier@umich.edu                curr_vdd_dram_cell = 0.9;//0.45;//This value has reduced greatly in 2007 ITRS for all technology nodes. In
147810152Satgutier@umich.edu                //2005 ITRS, the value was about twice the value in 2007 ITRS
147910152Satgutier@umich.edu                Lphy[3] = 0.022;//micron
148010152Satgutier@umich.edu                Lelec[3] = 0.0181;//micron.
148110152Satgutier@umich.edu                curr_v_th_dram_access_transistor = 1;//V
148210152Satgutier@umich.edu                width_dram_access_transistor = 0.022;//micron
148310152Satgutier@umich.edu                curr_I_on_dram_cell = 20e-6; //This is a typical value that I have always
148410152Satgutier@umich.edu                //kept constant. In reality this could perhaps be lower
148510152Satgutier@umich.edu                curr_I_off_dram_cell_worst_case_length_temp = 1e-15;//A
148610152Satgutier@umich.edu                curr_Wmemcella_dram = width_dram_access_transistor;
148710152Satgutier@umich.edu                curr_Wmemcellpmos_dram = 0;
148810152Satgutier@umich.edu                curr_Wmemcellnmos_dram = 0;
148910152Satgutier@umich.edu                curr_area_cell_dram = 6*0.022*0.022;//micron2.
149010152Satgutier@umich.edu                curr_asp_ratio_cell_dram = 0.667;
149110152Satgutier@umich.edu                curr_c_dram_cell = 30e-15;//This is a typical value that I have alwaus
149210152Satgutier@umich.edu                //kept constant.
149310152Satgutier@umich.edu
149410152Satgutier@umich.edu        //22 nm commodity DRAM wordline transistor parameters obtained using MASTAR.
149510152Satgutier@umich.edu                curr_vpp = 2.3;//vpp. V
149610152Satgutier@umich.edu                t_ox[3] = 3.5e-3;//micron
149710152Satgutier@umich.edu                v_th[3] = 1.0;//V
149810152Satgutier@umich.edu                c_ox[3] = 9.06e-15;//F/micron2
149910152Satgutier@umich.edu                mobility_eff[3] =  367.29 * (1e-2 * 1e6 * 1e-2 * 1e6);//micron2 / Vs
150010152Satgutier@umich.edu                Vdsat[3] = 0.0972; //V/micron
150110152Satgutier@umich.edu                c_g_ideal[3] = 1.99e-16;//F/micron
150210152Satgutier@umich.edu                c_fringe[3] = 0.053e-15;//F/micron
150310152Satgutier@umich.edu                c_junc[3] = 1e-15;//F/micron2
150410152Satgutier@umich.edu                I_on_n[3] = 910.5e-6;//A/micron
150510152Satgutier@umich.edu                I_on_p[3] = I_on_n[3] / 2;//This value for I_on_p is not really used.
150610152Satgutier@umich.edu                nmos_effective_resistance_multiplier = 1.69;//Using the value from 32nm.
150710152Satgutier@umich.edu                //
150810152Satgutier@umich.edu                n_to_p_eff_curr_drv_ratio[3] = 1.95;//Using the value from 32nm
150910152Satgutier@umich.edu                gmp_to_gmn_multiplier[3] = 0.90;
151010152Satgutier@umich.edu                Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp  / I_on_n[3];//ohm-micron
151110152Satgutier@umich.edu                Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];//ohm-micron
151210152Satgutier@umich.edu                long_channel_leakage_reduction[3] = 1;
151310152Satgutier@umich.edu                I_off_n[3][0] = 1.1e-13; //A/micron
151410152Satgutier@umich.edu                I_off_n[3][10] = 2.11e-13;
151510152Satgutier@umich.edu                I_off_n[3][20] = 3.88e-13;
151610152Satgutier@umich.edu                I_off_n[3][30] = 6.9e-13;
151710152Satgutier@umich.edu                I_off_n[3][40] = 1.19e-12;
151810152Satgutier@umich.edu                I_off_n[3][50] = 1.98e-12;
151910152Satgutier@umich.edu                I_off_n[3][60] = 3.22e-12;
152010152Satgutier@umich.edu                I_off_n[3][70] = 5.09e-12;
152110152Satgutier@umich.edu                I_off_n[3][80] = 7.85e-12;
152210152Satgutier@umich.edu                I_off_n[3][90] = 1.18e-11;
152310152Satgutier@umich.edu                I_off_n[3][100] = 1.72e-11;
152410152Satgutier@umich.edu
152510152Satgutier@umich.edu        }
152610152Satgutier@umich.edu        else
152710152Satgutier@umich.edu        {
152810152Satgutier@umich.edu          //some error handler
152910152Satgutier@umich.edu        }
153010152Satgutier@umich.edu
153110152Satgutier@umich.edu        //SRAM cell properties
153210152Satgutier@umich.edu        curr_Wmemcella_sram    = 1.31 * g_ip->F_sz_um;
153310152Satgutier@umich.edu        curr_Wmemcellpmos_sram = 1.23 * g_ip->F_sz_um;
153410152Satgutier@umich.edu        curr_Wmemcellnmos_sram = 2.08 * g_ip->F_sz_um;
153510152Satgutier@umich.edu        curr_area_cell_sram    = 146 * g_ip->F_sz_um * g_ip->F_sz_um;
153610152Satgutier@umich.edu        curr_asp_ratio_cell_sram = 1.46;
153710152Satgutier@umich.edu        //CAM cell properties //TODO: data need to be revisited
153810152Satgutier@umich.edu        curr_Wmemcella_cam = 1.31 * g_ip->F_sz_um;
153910152Satgutier@umich.edu        curr_Wmemcellpmos_cam = 1.23 * g_ip->F_sz_um;
154010152Satgutier@umich.edu        curr_Wmemcellnmos_cam = 2.08 * g_ip->F_sz_um;
154110152Satgutier@umich.edu        curr_area_cell_cam = 292 * g_ip->F_sz_um * g_ip->F_sz_um;
154210152Satgutier@umich.edu        curr_asp_ratio_cell_cam = 2.92;
154310152Satgutier@umich.edu        //Empirical undifferetiated core/FU coefficient
154410152Satgutier@umich.edu        curr_logic_scaling_co_eff = 0.7*0.7*0.7*0.7;
154510152Satgutier@umich.edu        curr_core_tx_density      = 1.25/0.7/0.7;
154610152Satgutier@umich.edu        curr_sckt_co_eff           = 1.1296;
154710152Satgutier@umich.edu        curr_chip_layout_overhead  = 1.2;//die measurement results based on Niagara 1 and 2
154810152Satgutier@umich.edu        curr_macro_layout_overhead = 1.1;//EDA placement and routing tool rule of thumb
154910152Satgutier@umich.edu        }
155010152Satgutier@umich.edu
155110152Satgutier@umich.edu    if(tech == 16){
155210152Satgutier@umich.edu        //For 2019, MPU/ASIC stagger-contacted M1 half-pitch is 16 nm (so this is 16 nm
155310152Satgutier@umich.edu        //technology i.e. FEATURESIZE = 0.016). Using the DG process numbers for HP.
155410152Satgutier@umich.edu        //16 nm HP
155510152Satgutier@umich.edu        vdd[0] = 0.7;
155610152Satgutier@umich.edu        Lphy[0] = 0.006;//Lphy is the physical gate-length.
155710152Satgutier@umich.edu        Lelec[0] = 0.00315;//Lelec is the electrical gate-length.
155810152Satgutier@umich.edu        t_ox[0] = 0.5e-3;//micron
155910152Satgutier@umich.edu        v_th[0] = 0.1489;//V
156010152Satgutier@umich.edu        c_ox[0] = 3.83e-14;//F/micron2 Cox_elec in MASTAR
156110152Satgutier@umich.edu        mobility_eff[0] = 476.15 * (1e-2 * 1e6 * 1e-2 * 1e6); //micron2 / Vs
156210152Satgutier@umich.edu        Vdsat[0] = 1.42e-2; //V/micron calculated in spreadsheet
156310152Satgutier@umich.edu        c_g_ideal[0] = 2.30e-16;//F/micron
156410152Satgutier@umich.edu        c_fringe[0] = 0.06e-15;//F/micron MASTAR inputdynamic/3
156510152Satgutier@umich.edu        c_junc[0] = 0;//F/micron2 MASTAR result dynamic
156610152Satgutier@umich.edu        I_on_n[0] =  2768.4e-6;//A/micron
156710152Satgutier@umich.edu        I_on_p[0] = I_on_n[0] / 2;//A/micron //This value for I_on_p is not really used.
156810152Satgutier@umich.edu        nmos_effective_resistance_multiplier = 1.48;//nmos_effective_resistance_multiplier  is the ratio of Ieff to Idsat where Ieff is the effective NMOS current and Idsat is the saturation current.
156910152Satgutier@umich.edu        n_to_p_eff_curr_drv_ratio[0] = 2; //Wpmos/Wnmos = 2 in 2007 MASTAR. Look in
157010152Satgutier@umich.edu        //"Dynamic" tab of Device workspace.
157110152Satgutier@umich.edu        gmp_to_gmn_multiplier[0] = 1.38; //Just using the 32nm SOI value.
157210152Satgutier@umich.edu        Rnchannelon[0] = nmos_effective_resistance_multiplier * vdd[0] / I_on_n[0];//ohm-micron
157310152Satgutier@umich.edu        Rpchannelon[0] = n_to_p_eff_curr_drv_ratio[0] * Rnchannelon[0];//ohm-micron
157410152Satgutier@umich.edu        long_channel_leakage_reduction[0] = 1/2.655;
157510152Satgutier@umich.edu        I_off_n[0][0] = 1.52e-7/1.5*1.2*1.07;
157610152Satgutier@umich.edu        I_off_n[0][10] = 1.55e-7/1.5*1.2*1.07;
157710152Satgutier@umich.edu        I_off_n[0][20] = 1.59e-7/1.5*1.2*1.07;
157810152Satgutier@umich.edu        I_off_n[0][30] = 1.68e-7/1.5*1.2*1.07;
157910152Satgutier@umich.edu        I_off_n[0][40] = 1.90e-7/1.5*1.2*1.07;
158010152Satgutier@umich.edu        I_off_n[0][50] = 2.69e-7/1.5*1.2*1.07;
158110152Satgutier@umich.edu        I_off_n[0][60] = 5.32e-7/1.5*1.2*1.07;
158210152Satgutier@umich.edu        I_off_n[0][70] = 1.02e-6/1.5*1.2*1.07;
158310152Satgutier@umich.edu        I_off_n[0][80] = 1.62e-6/1.5*1.2*1.07;
158410152Satgutier@umich.edu        I_off_n[0][90] = 2.73e-6/1.5*1.2*1.07;
158510152Satgutier@umich.edu        I_off_n[0][100] = 6.1e-6/1.5*1.2*1.07;
158610152Satgutier@umich.edu        //for 16nm DG HP
158710152Satgutier@umich.edu        I_g_on_n[0][0]  = 1.07e-9;//A/micron
158810152Satgutier@umich.edu        I_g_on_n[0][10] = 1.07e-9;
158910152Satgutier@umich.edu        I_g_on_n[0][20] = 1.07e-9;
159010152Satgutier@umich.edu        I_g_on_n[0][30] = 1.07e-9;
159110152Satgutier@umich.edu        I_g_on_n[0][40] = 1.07e-9;
159210152Satgutier@umich.edu        I_g_on_n[0][50] = 1.07e-9;
159310152Satgutier@umich.edu        I_g_on_n[0][60] = 1.07e-9;
159410152Satgutier@umich.edu        I_g_on_n[0][70] = 1.07e-9;
159510152Satgutier@umich.edu        I_g_on_n[0][80] = 1.07e-9;
159610152Satgutier@umich.edu        I_g_on_n[0][90] = 1.07e-9;
159710152Satgutier@umich.edu        I_g_on_n[0][100] = 1.07e-9;
159810152Satgutier@umich.edu
159910152Satgutier@umich.edu//    	//16 nm LSTP DG
160010152Satgutier@umich.edu//    	vdd[1] = 0.8;
160110152Satgutier@umich.edu//    	Lphy[1] = 0.014;
160210152Satgutier@umich.edu//    	Lelec[1] = 0.008;//Lelec is the electrical gate-length.
160310152Satgutier@umich.edu//    	t_ox[1] = 1.1e-3;//micron
160410152Satgutier@umich.edu//    	v_th[1] = 0.40126;//V
160510152Satgutier@umich.edu//    	c_ox[1] = 2.30e-14;//F/micron2
160610152Satgutier@umich.edu//    	mobility_eff[1] =  738.09 * (1e-2 * 1e6 * 1e-2 * 1e6); //micron2 / Vs
160710152Satgutier@umich.edu//    	Vdsat[1] = 6.64e-2; //V/micron
160810152Satgutier@umich.edu//    	c_g_ideal[1] = 3.22e-16;//F/micron
160910152Satgutier@umich.edu//    	c_fringe[1] = 0.008e-15;
161010152Satgutier@umich.edu//    	c_junc[1] = 0;//F/micron2
161110152Satgutier@umich.edu//    	I_on_n[1] = 727.6e-6;//A/micron
161210152Satgutier@umich.edu//    	I_on_p[1] = I_on_n[1] / 2;
161310152Satgutier@umich.edu//    	nmos_effective_resistance_multiplier = 1.99;
161410152Satgutier@umich.edu//    	n_to_p_eff_curr_drv_ratio[1] = 2;
161510152Satgutier@umich.edu//    	gmp_to_gmn_multiplier[1] = 0.99;
161610152Satgutier@umich.edu//    	Rnchannelon[1] = nmos_effective_resistance_multiplier * vdd[1] / I_on_n[1];//ohm-micron
161710152Satgutier@umich.edu//    	Rpchannelon[1] = n_to_p_eff_curr_drv_ratio[1] * Rnchannelon[1];//ohm-micron
161810152Satgutier@umich.edu//    	I_off_n[1][0] = 2.43e-11;
161910152Satgutier@umich.edu//    	I_off_n[1][10] = 4.85e-11;
162010152Satgutier@umich.edu//    	I_off_n[1][20] = 9.68e-11;
162110152Satgutier@umich.edu//    	I_off_n[1][30] = 1.94e-10;
162210152Satgutier@umich.edu//    	I_off_n[1][40] = 3.87e-10;
162310152Satgutier@umich.edu//    	I_off_n[1][50] = 7.73e-10;
162410152Satgutier@umich.edu//    	I_off_n[1][60] = 3.55e-10;
162510152Satgutier@umich.edu//    	I_off_n[1][70] = 3.09e-9;
162610152Satgutier@umich.edu//    	I_off_n[1][80] = 6.19e-9;
162710152Satgutier@umich.edu//    	I_off_n[1][90] = 1.24e-8;
162810152Satgutier@umich.edu//    	I_off_n[1][100]= 2.48e-8;
162910152Satgutier@umich.edu//
163010152Satgutier@umich.edu//    	//    for 22nm LSTP HP
163110152Satgutier@umich.edu//    	I_g_on_n[1][0]  = 4.51e-10;//A/micron
163210152Satgutier@umich.edu//    	I_g_on_n[1][10] = 4.51e-10;
163310152Satgutier@umich.edu//    	I_g_on_n[1][20] = 4.51e-10;
163410152Satgutier@umich.edu//    	I_g_on_n[1][30] = 4.51e-10;
163510152Satgutier@umich.edu//    	I_g_on_n[1][40] = 4.51e-10;
163610152Satgutier@umich.edu//    	I_g_on_n[1][50] = 4.51e-10;
163710152Satgutier@umich.edu//    	I_g_on_n[1][60] = 4.51e-10;
163810152Satgutier@umich.edu//    	I_g_on_n[1][70] = 4.51e-10;
163910152Satgutier@umich.edu//    	I_g_on_n[1][80] = 4.51e-10;
164010152Satgutier@umich.edu//    	I_g_on_n[1][90] = 4.51e-10;
164110152Satgutier@umich.edu//    	I_g_on_n[1][100] = 4.51e-10;
164210152Satgutier@umich.edu
164310152Satgutier@umich.edu
164410152Satgutier@umich.edu        if (ram_cell_tech_type == 3)
164510152Satgutier@umich.edu              {}
164610152Satgutier@umich.edu        else if (ram_cell_tech_type == 4)
164710152Satgutier@umich.edu        {
164810152Satgutier@umich.edu        //22 nm commodity DRAM cell access transistor technology parameters.
164910152Satgutier@umich.edu                //parameters
165010152Satgutier@umich.edu                curr_vdd_dram_cell = 0.9;//0.45;//This value has reduced greatly in 2007 ITRS for all technology nodes. In
165110152Satgutier@umich.edu                //2005 ITRS, the value was about twice the value in 2007 ITRS
165210152Satgutier@umich.edu                Lphy[3] = 0.022;//micron
165310152Satgutier@umich.edu                Lelec[3] = 0.0181;//micron.
165410152Satgutier@umich.edu                curr_v_th_dram_access_transistor = 1;//V
165510152Satgutier@umich.edu                width_dram_access_transistor = 0.022;//micron
165610152Satgutier@umich.edu                curr_I_on_dram_cell = 20e-6; //This is a typical value that I have always
165710152Satgutier@umich.edu                //kept constant. In reality this could perhaps be lower
165810152Satgutier@umich.edu                curr_I_off_dram_cell_worst_case_length_temp = 1e-15;//A
165910152Satgutier@umich.edu                curr_Wmemcella_dram = width_dram_access_transistor;
166010152Satgutier@umich.edu                curr_Wmemcellpmos_dram = 0;
166110152Satgutier@umich.edu                curr_Wmemcellnmos_dram = 0;
166210152Satgutier@umich.edu                curr_area_cell_dram = 6*0.022*0.022;//micron2.
166310152Satgutier@umich.edu                curr_asp_ratio_cell_dram = 0.667;
166410152Satgutier@umich.edu                curr_c_dram_cell = 30e-15;//This is a typical value that I have alwaus
166510152Satgutier@umich.edu                //kept constant.
166610152Satgutier@umich.edu
166710152Satgutier@umich.edu        //22 nm commodity DRAM wordline transistor parameters obtained using MASTAR.
166810152Satgutier@umich.edu                curr_vpp = 2.3;//vpp. V
166910152Satgutier@umich.edu                t_ox[3] = 3.5e-3;//micron
167010152Satgutier@umich.edu                v_th[3] = 1.0;//V
167110152Satgutier@umich.edu                c_ox[3] = 9.06e-15;//F/micron2
167210152Satgutier@umich.edu                mobility_eff[3] =  367.29 * (1e-2 * 1e6 * 1e-2 * 1e6);//micron2 / Vs
167310152Satgutier@umich.edu                Vdsat[3] = 0.0972; //V/micron
167410152Satgutier@umich.edu                c_g_ideal[3] = 1.99e-16;//F/micron
167510152Satgutier@umich.edu                c_fringe[3] = 0.053e-15;//F/micron
167610152Satgutier@umich.edu                c_junc[3] = 1e-15;//F/micron2
167710152Satgutier@umich.edu                I_on_n[3] = 910.5e-6;//A/micron
167810152Satgutier@umich.edu                I_on_p[3] = I_on_n[3] / 2;//This value for I_on_p is not really used.
167910152Satgutier@umich.edu                nmos_effective_resistance_multiplier = 1.69;//Using the value from 32nm.
168010152Satgutier@umich.edu                //
168110152Satgutier@umich.edu                n_to_p_eff_curr_drv_ratio[3] = 1.95;//Using the value from 32nm
168210152Satgutier@umich.edu                gmp_to_gmn_multiplier[3] = 0.90;
168310152Satgutier@umich.edu                Rnchannelon[3] = nmos_effective_resistance_multiplier * curr_vpp  / I_on_n[3];//ohm-micron
168410152Satgutier@umich.edu                Rpchannelon[3] = n_to_p_eff_curr_drv_ratio[3] * Rnchannelon[3];//ohm-micron
168510152Satgutier@umich.edu                long_channel_leakage_reduction[3] = 1;
168610152Satgutier@umich.edu                I_off_n[3][0] = 1.1e-13; //A/micron
168710152Satgutier@umich.edu                I_off_n[3][10] = 2.11e-13;
168810152Satgutier@umich.edu                I_off_n[3][20] = 3.88e-13;
168910152Satgutier@umich.edu                I_off_n[3][30] = 6.9e-13;
169010152Satgutier@umich.edu                I_off_n[3][40] = 1.19e-12;
169110152Satgutier@umich.edu                I_off_n[3][50] = 1.98e-12;
169210152Satgutier@umich.edu                I_off_n[3][60] = 3.22e-12;
169310152Satgutier@umich.edu                I_off_n[3][70] = 5.09e-12;
169410152Satgutier@umich.edu                I_off_n[3][80] = 7.85e-12;
169510152Satgutier@umich.edu                I_off_n[3][90] = 1.18e-11;
169610152Satgutier@umich.edu                I_off_n[3][100] = 1.72e-11;
169710152Satgutier@umich.edu
169810152Satgutier@umich.edu        }
169910152Satgutier@umich.edu        else
170010152Satgutier@umich.edu        {
170110152Satgutier@umich.edu          //some error handler
170210152Satgutier@umich.edu        }
170310152Satgutier@umich.edu
170410152Satgutier@umich.edu        //SRAM cell properties
170510152Satgutier@umich.edu        curr_Wmemcella_sram    = 1.31 * g_ip->F_sz_um;
170610152Satgutier@umich.edu        curr_Wmemcellpmos_sram = 1.23 * g_ip->F_sz_um;
170710152Satgutier@umich.edu        curr_Wmemcellnmos_sram = 2.08 * g_ip->F_sz_um;
170810152Satgutier@umich.edu        curr_area_cell_sram    = 146 * g_ip->F_sz_um * g_ip->F_sz_um;
170910152Satgutier@umich.edu        curr_asp_ratio_cell_sram = 1.46;
171010152Satgutier@umich.edu        //CAM cell properties //TODO: data need to be revisited
171110152Satgutier@umich.edu        curr_Wmemcella_cam = 1.31 * g_ip->F_sz_um;
171210152Satgutier@umich.edu        curr_Wmemcellpmos_cam = 1.23 * g_ip->F_sz_um;
171310152Satgutier@umich.edu        curr_Wmemcellnmos_cam = 2.08 * g_ip->F_sz_um;
171410152Satgutier@umich.edu        curr_area_cell_cam = 292 * g_ip->F_sz_um * g_ip->F_sz_um;
171510152Satgutier@umich.edu        curr_asp_ratio_cell_cam = 2.92;
171610152Satgutier@umich.edu        //Empirical undifferetiated core/FU coefficient
171710152Satgutier@umich.edu        curr_logic_scaling_co_eff = 0.7*0.7*0.7*0.7*0.7;
171810152Satgutier@umich.edu        curr_core_tx_density      = 1.25/0.7/0.7/0.7;
171910152Satgutier@umich.edu        curr_sckt_co_eff           = 1.1296;
172010152Satgutier@umich.edu        curr_chip_layout_overhead  = 1.2;//die measurement results based on Niagara 1 and 2
172110152Satgutier@umich.edu        curr_macro_layout_overhead = 1.1;//EDA placement and routing tool rule of thumb
172210152Satgutier@umich.edu        }
172310152Satgutier@umich.edu
172410152Satgutier@umich.edu
172510152Satgutier@umich.edu    g_tp.peri_global.Vdd       += curr_alpha * vdd[peri_global_tech_type];
172610152Satgutier@umich.edu    g_tp.peri_global.t_ox      += curr_alpha * t_ox[peri_global_tech_type];
172710152Satgutier@umich.edu    g_tp.peri_global.Vth       += curr_alpha * v_th[peri_global_tech_type];
172810152Satgutier@umich.edu    g_tp.peri_global.C_ox      += curr_alpha * c_ox[peri_global_tech_type];
172910152Satgutier@umich.edu    g_tp.peri_global.C_g_ideal += curr_alpha * c_g_ideal[peri_global_tech_type];
173010152Satgutier@umich.edu    g_tp.peri_global.C_fringe  += curr_alpha * c_fringe[peri_global_tech_type];
173110152Satgutier@umich.edu    g_tp.peri_global.C_junc    += curr_alpha * c_junc[peri_global_tech_type];
173210152Satgutier@umich.edu    g_tp.peri_global.C_junc_sidewall = 0.25e-15;  // F/micron
173310152Satgutier@umich.edu    g_tp.peri_global.l_phy     += curr_alpha * Lphy[peri_global_tech_type];
173410152Satgutier@umich.edu    g_tp.peri_global.l_elec    += curr_alpha * Lelec[peri_global_tech_type];
173510152Satgutier@umich.edu    g_tp.peri_global.I_on_n    += curr_alpha * I_on_n[peri_global_tech_type];
173610152Satgutier@umich.edu    g_tp.peri_global.R_nch_on  += curr_alpha * Rnchannelon[peri_global_tech_type];
173710152Satgutier@umich.edu    g_tp.peri_global.R_pch_on  += curr_alpha * Rpchannelon[peri_global_tech_type];
173810152Satgutier@umich.edu    g_tp.peri_global.n_to_p_eff_curr_drv_ratio
173910152Satgutier@umich.edu      += curr_alpha * n_to_p_eff_curr_drv_ratio[peri_global_tech_type];
174010152Satgutier@umich.edu    g_tp.peri_global.long_channel_leakage_reduction
174110152Satgutier@umich.edu      += curr_alpha * long_channel_leakage_reduction[peri_global_tech_type];
174210152Satgutier@umich.edu    g_tp.peri_global.I_off_n   += curr_alpha * I_off_n[peri_global_tech_type][g_ip->temp - 300];
174310152Satgutier@umich.edu    g_tp.peri_global.I_off_p   += curr_alpha * I_off_n[peri_global_tech_type][g_ip->temp - 300];
174410152Satgutier@umich.edu    g_tp.peri_global.I_g_on_n   += curr_alpha * I_g_on_n[peri_global_tech_type][g_ip->temp - 300];
174510152Satgutier@umich.edu    g_tp.peri_global.I_g_on_p   += curr_alpha * I_g_on_n[peri_global_tech_type][g_ip->temp - 300];
174610152Satgutier@umich.edu    gmp_to_gmn_multiplier_periph_global += curr_alpha * gmp_to_gmn_multiplier[peri_global_tech_type];
174710152Satgutier@umich.edu
174810152Satgutier@umich.edu    g_tp.sram_cell.Vdd       += curr_alpha * vdd[ram_cell_tech_type];
174910152Satgutier@umich.edu    g_tp.sram_cell.l_phy     += curr_alpha * Lphy[ram_cell_tech_type];
175010152Satgutier@umich.edu    g_tp.sram_cell.l_elec    += curr_alpha * Lelec[ram_cell_tech_type];
175110152Satgutier@umich.edu    g_tp.sram_cell.t_ox      += curr_alpha * t_ox[ram_cell_tech_type];
175210152Satgutier@umich.edu    g_tp.sram_cell.Vth       += curr_alpha * v_th[ram_cell_tech_type];
175310152Satgutier@umich.edu    g_tp.sram_cell.C_g_ideal += curr_alpha * c_g_ideal[ram_cell_tech_type];
175410152Satgutier@umich.edu    g_tp.sram_cell.C_fringe  += curr_alpha * c_fringe[ram_cell_tech_type];
175510152Satgutier@umich.edu    g_tp.sram_cell.C_junc    += curr_alpha * c_junc[ram_cell_tech_type];
175610152Satgutier@umich.edu    g_tp.sram_cell.C_junc_sidewall = 0.25e-15;  // F/micron
175710152Satgutier@umich.edu    g_tp.sram_cell.I_on_n    += curr_alpha * I_on_n[ram_cell_tech_type];
175810152Satgutier@umich.edu    g_tp.sram_cell.R_nch_on  += curr_alpha * Rnchannelon[ram_cell_tech_type];
175910152Satgutier@umich.edu    g_tp.sram_cell.R_pch_on  += curr_alpha * Rpchannelon[ram_cell_tech_type];
176010152Satgutier@umich.edu    g_tp.sram_cell.n_to_p_eff_curr_drv_ratio += curr_alpha * n_to_p_eff_curr_drv_ratio[ram_cell_tech_type];
176110152Satgutier@umich.edu    g_tp.sram_cell.long_channel_leakage_reduction += curr_alpha * long_channel_leakage_reduction[ram_cell_tech_type];
176210152Satgutier@umich.edu    g_tp.sram_cell.I_off_n   += curr_alpha * I_off_n[ram_cell_tech_type][g_ip->temp - 300];
176310152Satgutier@umich.edu    g_tp.sram_cell.I_off_p   += curr_alpha * I_off_n[ram_cell_tech_type][g_ip->temp - 300];
176410152Satgutier@umich.edu    g_tp.sram_cell.I_g_on_n   += curr_alpha * I_g_on_n[ram_cell_tech_type][g_ip->temp - 300];
176510152Satgutier@umich.edu    g_tp.sram_cell.I_g_on_p   += curr_alpha * I_g_on_n[ram_cell_tech_type][g_ip->temp - 300];
176610152Satgutier@umich.edu
176710152Satgutier@umich.edu    g_tp.dram_cell_Vdd      += curr_alpha * curr_vdd_dram_cell;
176810152Satgutier@umich.edu    g_tp.dram_acc.Vth       += curr_alpha * curr_v_th_dram_access_transistor;
176910152Satgutier@umich.edu    g_tp.dram_acc.l_phy     += curr_alpha * Lphy[dram_cell_tech_flavor];
177010152Satgutier@umich.edu    g_tp.dram_acc.l_elec    += curr_alpha * Lelec[dram_cell_tech_flavor];
177110152Satgutier@umich.edu    g_tp.dram_acc.C_g_ideal += curr_alpha * c_g_ideal[dram_cell_tech_flavor];
177210152Satgutier@umich.edu    g_tp.dram_acc.C_fringe  += curr_alpha * c_fringe[dram_cell_tech_flavor];
177310152Satgutier@umich.edu    g_tp.dram_acc.C_junc    += curr_alpha * c_junc[dram_cell_tech_flavor];
177410152Satgutier@umich.edu    g_tp.dram_acc.C_junc_sidewall = 0.25e-15;  // F/micron
177510152Satgutier@umich.edu    g_tp.dram_cell_I_on     += curr_alpha * curr_I_on_dram_cell;
177610152Satgutier@umich.edu    g_tp.dram_cell_I_off_worst_case_len_temp += curr_alpha * curr_I_off_dram_cell_worst_case_length_temp;
177710152Satgutier@umich.edu    g_tp.dram_acc.I_on_n    += curr_alpha * I_on_n[dram_cell_tech_flavor];
177810152Satgutier@umich.edu    g_tp.dram_cell_C        += curr_alpha * curr_c_dram_cell;
177910152Satgutier@umich.edu    g_tp.vpp                += curr_alpha * curr_vpp;
178010152Satgutier@umich.edu    g_tp.dram_wl.l_phy      += curr_alpha * Lphy[dram_cell_tech_flavor];
178110152Satgutier@umich.edu    g_tp.dram_wl.l_elec     += curr_alpha * Lelec[dram_cell_tech_flavor];
178210152Satgutier@umich.edu    g_tp.dram_wl.C_g_ideal  += curr_alpha * c_g_ideal[dram_cell_tech_flavor];
178310152Satgutier@umich.edu    g_tp.dram_wl.C_fringe   += curr_alpha * c_fringe[dram_cell_tech_flavor];
178410152Satgutier@umich.edu    g_tp.dram_wl.C_junc     += curr_alpha * c_junc[dram_cell_tech_flavor];
178510152Satgutier@umich.edu    g_tp.dram_wl.C_junc_sidewall = 0.25e-15;  // F/micron
178610152Satgutier@umich.edu    g_tp.dram_wl.I_on_n     += curr_alpha * I_on_n[dram_cell_tech_flavor];
178710152Satgutier@umich.edu    g_tp.dram_wl.R_nch_on   += curr_alpha * Rnchannelon[dram_cell_tech_flavor];
178810152Satgutier@umich.edu    g_tp.dram_wl.R_pch_on   += curr_alpha * Rpchannelon[dram_cell_tech_flavor];
178910152Satgutier@umich.edu    g_tp.dram_wl.n_to_p_eff_curr_drv_ratio += curr_alpha * n_to_p_eff_curr_drv_ratio[dram_cell_tech_flavor];
179010152Satgutier@umich.edu    g_tp.dram_wl.long_channel_leakage_reduction += curr_alpha * long_channel_leakage_reduction[dram_cell_tech_flavor];
179110152Satgutier@umich.edu    g_tp.dram_wl.I_off_n    += curr_alpha * I_off_n[dram_cell_tech_flavor][g_ip->temp - 300];
179210152Satgutier@umich.edu    g_tp.dram_wl.I_off_p    += curr_alpha * I_off_n[dram_cell_tech_flavor][g_ip->temp - 300];
179310152Satgutier@umich.edu
179410152Satgutier@umich.edu    g_tp.cam_cell.Vdd       += curr_alpha * vdd[ram_cell_tech_type];
179510152Satgutier@umich.edu    g_tp.cam_cell.l_phy     += curr_alpha * Lphy[ram_cell_tech_type];
179610152Satgutier@umich.edu    g_tp.cam_cell.l_elec    += curr_alpha * Lelec[ram_cell_tech_type];
179710152Satgutier@umich.edu    g_tp.cam_cell.t_ox      += curr_alpha * t_ox[ram_cell_tech_type];
179810152Satgutier@umich.edu    g_tp.cam_cell.Vth       += curr_alpha * v_th[ram_cell_tech_type];
179910152Satgutier@umich.edu    g_tp.cam_cell.C_g_ideal += curr_alpha * c_g_ideal[ram_cell_tech_type];
180010152Satgutier@umich.edu    g_tp.cam_cell.C_fringe  += curr_alpha * c_fringe[ram_cell_tech_type];
180110152Satgutier@umich.edu    g_tp.cam_cell.C_junc    += curr_alpha * c_junc[ram_cell_tech_type];
180210152Satgutier@umich.edu    g_tp.cam_cell.C_junc_sidewall = 0.25e-15;  // F/micron
180310152Satgutier@umich.edu    g_tp.cam_cell.I_on_n    += curr_alpha * I_on_n[ram_cell_tech_type];
180410152Satgutier@umich.edu    g_tp.cam_cell.R_nch_on  += curr_alpha * Rnchannelon[ram_cell_tech_type];
180510152Satgutier@umich.edu    g_tp.cam_cell.R_pch_on  += curr_alpha * Rpchannelon[ram_cell_tech_type];
180610152Satgutier@umich.edu    g_tp.cam_cell.n_to_p_eff_curr_drv_ratio += curr_alpha * n_to_p_eff_curr_drv_ratio[ram_cell_tech_type];
180710152Satgutier@umich.edu    g_tp.cam_cell.long_channel_leakage_reduction += curr_alpha * long_channel_leakage_reduction[ram_cell_tech_type];
180810152Satgutier@umich.edu    g_tp.cam_cell.I_off_n   += curr_alpha * I_off_n[ram_cell_tech_type][g_ip->temp - 300];
180910152Satgutier@umich.edu    g_tp.cam_cell.I_off_p   += curr_alpha * I_off_n[ram_cell_tech_type][g_ip->temp - 300];
181010152Satgutier@umich.edu    g_tp.cam_cell.I_g_on_n   += curr_alpha * I_g_on_n[ram_cell_tech_type][g_ip->temp - 300];
181110152Satgutier@umich.edu    g_tp.cam_cell.I_g_on_p   += curr_alpha * I_g_on_n[ram_cell_tech_type][g_ip->temp - 300];
181210152Satgutier@umich.edu
181310152Satgutier@umich.edu    g_tp.dram.cell_a_w    += curr_alpha * curr_Wmemcella_dram;
181410152Satgutier@umich.edu    g_tp.dram.cell_pmos_w += curr_alpha * curr_Wmemcellpmos_dram;
181510152Satgutier@umich.edu    g_tp.dram.cell_nmos_w += curr_alpha * curr_Wmemcellnmos_dram;
181610152Satgutier@umich.edu    area_cell_dram        += curr_alpha * curr_area_cell_dram;
181710152Satgutier@umich.edu    asp_ratio_cell_dram   += curr_alpha * curr_asp_ratio_cell_dram;
181810152Satgutier@umich.edu
181910152Satgutier@umich.edu    g_tp.sram.cell_a_w    += curr_alpha * curr_Wmemcella_sram;
182010152Satgutier@umich.edu    g_tp.sram.cell_pmos_w += curr_alpha * curr_Wmemcellpmos_sram;
182110152Satgutier@umich.edu    g_tp.sram.cell_nmos_w += curr_alpha * curr_Wmemcellnmos_sram;
182210152Satgutier@umich.edu    area_cell_sram += curr_alpha * curr_area_cell_sram;
182310152Satgutier@umich.edu    asp_ratio_cell_sram += curr_alpha * curr_asp_ratio_cell_sram;
182410152Satgutier@umich.edu
182510152Satgutier@umich.edu    g_tp.cam.cell_a_w    += curr_alpha * curr_Wmemcella_cam;//sheng
182610152Satgutier@umich.edu    g_tp.cam.cell_pmos_w += curr_alpha * curr_Wmemcellpmos_cam;
182710152Satgutier@umich.edu    g_tp.cam.cell_nmos_w += curr_alpha * curr_Wmemcellnmos_cam;
182810152Satgutier@umich.edu    area_cell_cam += curr_alpha * curr_area_cell_cam;
182910152Satgutier@umich.edu    asp_ratio_cell_cam += curr_alpha * curr_asp_ratio_cell_cam;
183010152Satgutier@umich.edu
183110152Satgutier@umich.edu    //Sense amplifier latch Gm calculation
183210152Satgutier@umich.edu    mobility_eff_periph_global += curr_alpha * mobility_eff[peri_global_tech_type];
183310152Satgutier@umich.edu    Vdsat_periph_global += curr_alpha * Vdsat[peri_global_tech_type];
183410152Satgutier@umich.edu
183510152Satgutier@umich.edu    //Empirical undifferetiated core/FU coefficient
183610152Satgutier@umich.edu    g_tp.scaling_factor.logic_scaling_co_eff += curr_alpha * curr_logic_scaling_co_eff;
183710152Satgutier@umich.edu    g_tp.scaling_factor.core_tx_density += curr_alpha * curr_core_tx_density;
183810152Satgutier@umich.edu    g_tp.chip_layout_overhead  += curr_alpha * curr_chip_layout_overhead;
183910152Satgutier@umich.edu    g_tp.macro_layout_overhead += curr_alpha * curr_macro_layout_overhead;
184010152Satgutier@umich.edu    g_tp.sckt_co_eff           += curr_alpha * curr_sckt_co_eff;
184110152Satgutier@umich.edu  }
184210152Satgutier@umich.edu
184310152Satgutier@umich.edu
184410152Satgutier@umich.edu  //Currently we are not modeling the resistance/capacitance of poly anywhere.
184510152Satgutier@umich.edu  //Continuous function (or date have been processed) does not need linear interpolation
184610152Satgutier@umich.edu  g_tp.w_comp_inv_p1 = 12.5 * g_ip->F_sz_um;//this was 10 micron for the 0.8 micron process
184710152Satgutier@umich.edu  g_tp.w_comp_inv_n1 =  7.5 * g_ip->F_sz_um;//this was  6 micron for the 0.8 micron process
184810152Satgutier@umich.edu  g_tp.w_comp_inv_p2 =   25 * g_ip->F_sz_um;//this was 20 micron for the 0.8 micron process
184910152Satgutier@umich.edu  g_tp.w_comp_inv_n2 =   15 * g_ip->F_sz_um;//this was 12 micron for the 0.8 micron process
185010152Satgutier@umich.edu  g_tp.w_comp_inv_p3 =   50 * g_ip->F_sz_um;//this was 40 micron for the 0.8 micron process
185110152Satgutier@umich.edu  g_tp.w_comp_inv_n3 =   30 * g_ip->F_sz_um;//this was 24 micron for the 0.8 micron process
185210152Satgutier@umich.edu  g_tp.w_eval_inv_p  =  100 * g_ip->F_sz_um;//this was 80 micron for the 0.8 micron process
185310152Satgutier@umich.edu  g_tp.w_eval_inv_n  =   50 * g_ip->F_sz_um;//this was 40 micron for the 0.8 micron process
185410152Satgutier@umich.edu  g_tp.w_comp_n     = 12.5 * g_ip->F_sz_um;//this was 10 micron for the 0.8 micron process
185510152Satgutier@umich.edu  g_tp.w_comp_p     = 37.5 * g_ip->F_sz_um;//this was 30 micron for the 0.8 micron process
185610152Satgutier@umich.edu
185710152Satgutier@umich.edu  g_tp.MIN_GAP_BET_P_AND_N_DIFFS = 5 * g_ip->F_sz_um;
185810152Satgutier@umich.edu  g_tp.MIN_GAP_BET_SAME_TYPE_DIFFS = 1.5 * g_ip->F_sz_um;
185910152Satgutier@umich.edu  g_tp.HPOWERRAIL = 2 * g_ip->F_sz_um;
186010152Satgutier@umich.edu  g_tp.cell_h_def = 50 * g_ip->F_sz_um;
186110152Satgutier@umich.edu  g_tp.w_poly_contact = g_ip->F_sz_um;
186210152Satgutier@umich.edu  g_tp.spacing_poly_to_contact = g_ip->F_sz_um;
186310152Satgutier@umich.edu  g_tp.spacing_poly_to_poly = 1.5 * g_ip->F_sz_um;
186410152Satgutier@umich.edu  g_tp.ram_wl_stitching_overhead_ = 7.5 * g_ip->F_sz_um;
186510152Satgutier@umich.edu
186610152Satgutier@umich.edu  g_tp.min_w_nmos_ = 3 * g_ip->F_sz_um / 2;
186710152Satgutier@umich.edu  g_tp.max_w_nmos_ = 100 * g_ip->F_sz_um;
186810152Satgutier@umich.edu  g_tp.w_iso       = 12.5*g_ip->F_sz_um;//was 10 micron for the 0.8 micron process
186910152Satgutier@umich.edu  g_tp.w_sense_n   = 3.75*g_ip->F_sz_um; // sense amplifier N-trans; was 3 micron for the 0.8 micron process
187010152Satgutier@umich.edu  g_tp.w_sense_p   = 7.5*g_ip->F_sz_um; // sense amplifier P-trans; was 6 micron for the 0.8 micron process
187110152Satgutier@umich.edu  g_tp.w_sense_en  = 5*g_ip->F_sz_um; // Sense enable transistor of the sense amplifier; was 4 micron for the 0.8 micron process
187210152Satgutier@umich.edu  g_tp.w_nmos_b_mux  = 6 * g_tp.min_w_nmos_;
187310152Satgutier@umich.edu  g_tp.w_nmos_sa_mux = 6 * g_tp.min_w_nmos_;
187410152Satgutier@umich.edu
187510152Satgutier@umich.edu  if (ram_cell_tech_type == comm_dram)
187610152Satgutier@umich.edu  {
187710152Satgutier@umich.edu    g_tp.max_w_nmos_dec = 8 * g_ip->F_sz_um;
187810152Satgutier@umich.edu    g_tp.h_dec          = 8;  // in the unit of memory cell height
187910152Satgutier@umich.edu  }
188010152Satgutier@umich.edu  else
188110152Satgutier@umich.edu  {
188210152Satgutier@umich.edu    g_tp.max_w_nmos_dec = g_tp.max_w_nmos_;
188310152Satgutier@umich.edu    g_tp.h_dec          = 4;  // in the unit of memory cell height
188410152Satgutier@umich.edu  }
188510152Satgutier@umich.edu
188610152Satgutier@umich.edu  g_tp.peri_global.C_overlap = 0.2 * g_tp.peri_global.C_g_ideal;
188710152Satgutier@umich.edu  g_tp.sram_cell.C_overlap   = 0.2 * g_tp.sram_cell.C_g_ideal;
188810152Satgutier@umich.edu  g_tp.cam_cell.C_overlap    = 0.2 * g_tp.cam_cell.C_g_ideal;
188910152Satgutier@umich.edu
189010152Satgutier@umich.edu  g_tp.dram_acc.C_overlap = 0.2 * g_tp.dram_acc.C_g_ideal;
189110152Satgutier@umich.edu  g_tp.dram_acc.R_nch_on = g_tp.dram_cell_Vdd / g_tp.dram_acc.I_on_n;
189210152Satgutier@umich.edu  //g_tp.dram_acc.R_pch_on = g_tp.dram_cell_Vdd / g_tp.dram_acc.I_on_p;
189310152Satgutier@umich.edu
189410152Satgutier@umich.edu  g_tp.dram_wl.C_overlap = 0.2 * g_tp.dram_wl.C_g_ideal;
189510152Satgutier@umich.edu
189610152Satgutier@umich.edu  double gmn_sense_amp_latch = (mobility_eff_periph_global / 2) * g_tp.peri_global.C_ox * (g_tp.w_sense_n / g_tp.peri_global.l_elec) * Vdsat_periph_global;
189710152Satgutier@umich.edu  double gmp_sense_amp_latch = gmp_to_gmn_multiplier_periph_global * gmn_sense_amp_latch;
189810152Satgutier@umich.edu  g_tp.gm_sense_amp_latch = gmn_sense_amp_latch + gmp_sense_amp_latch;
189910152Satgutier@umich.edu
190010152Satgutier@umich.edu  g_tp.dram.b_w = sqrt(area_cell_dram / (asp_ratio_cell_dram));
190110152Satgutier@umich.edu  g_tp.dram.b_h = asp_ratio_cell_dram * g_tp.dram.b_w;
190210152Satgutier@umich.edu  g_tp.sram.b_w = sqrt(area_cell_sram / (asp_ratio_cell_sram));
190310152Satgutier@umich.edu  g_tp.sram.b_h = asp_ratio_cell_sram * g_tp.sram.b_w;
190410152Satgutier@umich.edu  g_tp.cam.b_w =  sqrt(area_cell_cam / (asp_ratio_cell_cam));//Sheng
190510152Satgutier@umich.edu  g_tp.cam.b_h = asp_ratio_cell_cam * g_tp.cam.b_w;
190610152Satgutier@umich.edu
190710152Satgutier@umich.edu  g_tp.dram.Vbitpre = g_tp.dram_cell_Vdd;
190810152Satgutier@umich.edu  g_tp.sram.Vbitpre = vdd[ram_cell_tech_type];
190910152Satgutier@umich.edu  g_tp.cam.Vbitpre = vdd[ram_cell_tech_type];//Sheng
191010152Satgutier@umich.edu  pmos_to_nmos_sizing_r = pmos_to_nmos_sz_ratio();
191110152Satgutier@umich.edu  g_tp.w_pmos_bl_precharge = 6 * pmos_to_nmos_sizing_r * g_tp.min_w_nmos_;
191210152Satgutier@umich.edu  g_tp.w_pmos_bl_eq = pmos_to_nmos_sizing_r * g_tp.min_w_nmos_;
191310152Satgutier@umich.edu
191410152Satgutier@umich.edu
191510152Satgutier@umich.edu  double wire_pitch       [NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES],
191610152Satgutier@umich.edu         wire_r_per_micron[NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES],
191710152Satgutier@umich.edu         wire_c_per_micron[NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES],
191810152Satgutier@umich.edu         horiz_dielectric_constant[NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES],
191910152Satgutier@umich.edu         vert_dielectric_constant[NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES],
192010152Satgutier@umich.edu         aspect_ratio[NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES],
192110152Satgutier@umich.edu         miller_value[NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES],
192210152Satgutier@umich.edu         ild_thickness[NUMBER_INTERCONNECT_PROJECTION_TYPES][NUMBER_WIRE_TYPES];
192310152Satgutier@umich.edu
192410152Satgutier@umich.edu  for (iter=0; iter<=1; ++iter)
192510152Satgutier@umich.edu  {
192610152Satgutier@umich.edu    // linear interpolation
192710152Satgutier@umich.edu    if (iter == 0)
192810152Satgutier@umich.edu    {
192910152Satgutier@umich.edu      tech = tech_lo;
193010152Satgutier@umich.edu      if (tech_lo == tech_hi)
193110152Satgutier@umich.edu      {
193210152Satgutier@umich.edu        curr_alpha = 1;
193310152Satgutier@umich.edu      }
193410152Satgutier@umich.edu      else
193510152Satgutier@umich.edu      {
193610152Satgutier@umich.edu        curr_alpha = (technology - tech_hi)/(tech_lo - tech_hi);
193710152Satgutier@umich.edu      }
193810152Satgutier@umich.edu    }
193910152Satgutier@umich.edu    else
194010152Satgutier@umich.edu    {
194110152Satgutier@umich.edu      tech = tech_hi;
194210152Satgutier@umich.edu      if (tech_lo == tech_hi)
194310152Satgutier@umich.edu      {
194410152Satgutier@umich.edu        break;
194510152Satgutier@umich.edu      }
194610152Satgutier@umich.edu      else
194710152Satgutier@umich.edu      {
194810152Satgutier@umich.edu        curr_alpha = (tech_lo - technology)/(tech_lo - tech_hi);
194910152Satgutier@umich.edu      }
195010152Satgutier@umich.edu    }
195110152Satgutier@umich.edu
195210152Satgutier@umich.edu    if (tech == 180)
195310152Satgutier@umich.edu    {
195410152Satgutier@umich.edu        //Aggressive projections
195510152Satgutier@umich.edu        wire_pitch[0][0] = 2.5 * g_ip->F_sz_um;//micron
195610152Satgutier@umich.edu        aspect_ratio[0][0] = 2.0;
195710152Satgutier@umich.edu        wire_width = wire_pitch[0][0] / 2; //micron
195810152Satgutier@umich.edu        wire_thickness = aspect_ratio[0][0] * wire_width;//micron
195910152Satgutier@umich.edu        wire_spacing = wire_pitch[0][0] - wire_width;//micron
196010152Satgutier@umich.edu        barrier_thickness = 0.017;//micron
196110152Satgutier@umich.edu        dishing_thickness = 0;//micron
196210152Satgutier@umich.edu        alpha_scatter = 1;
196310152Satgutier@umich.edu        wire_r_per_micron[0][0] = wire_resistance(CU_RESISTIVITY, wire_width,
196410152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);//ohm/micron
196510152Satgutier@umich.edu        ild_thickness[0][0] = 0.75;//micron
196610152Satgutier@umich.edu        miller_value[0][0] = 1.5;
196710152Satgutier@umich.edu        horiz_dielectric_constant[0][0] = 2.709;
196810152Satgutier@umich.edu        vert_dielectric_constant[0][0] = 3.9;
196910152Satgutier@umich.edu        fringe_cap = 0.115e-15; //F/micron
197010152Satgutier@umich.edu        wire_c_per_micron[0][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
197110152Satgutier@umich.edu          ild_thickness[0][0], miller_value[0][0], horiz_dielectric_constant[0][0],
197210152Satgutier@umich.edu          vert_dielectric_constant[0][0],
197310152Satgutier@umich.edu          fringe_cap);//F/micron.
197410152Satgutier@umich.edu
197510152Satgutier@umich.edu        wire_pitch[0][1] = 4 * g_ip->F_sz_um;
197610152Satgutier@umich.edu        wire_width = wire_pitch[0][1] / 2;
197710152Satgutier@umich.edu        aspect_ratio[0][1] = 2.4;
197810152Satgutier@umich.edu        wire_thickness = aspect_ratio[0][1] * wire_width;
197910152Satgutier@umich.edu        wire_spacing = wire_pitch[0][1] - wire_width;
198010152Satgutier@umich.edu        wire_r_per_micron[0][1] = wire_resistance(CU_RESISTIVITY, wire_width,
198110152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
198210152Satgutier@umich.edu        ild_thickness[0][1] = 0.75;//micron
198310152Satgutier@umich.edu        miller_value[0][1] = 1.5;
198410152Satgutier@umich.edu        horiz_dielectric_constant[0][1] = 2.709;
198510152Satgutier@umich.edu        vert_dielectric_constant[0][1] = 3.9;
198610152Satgutier@umich.edu        fringe_cap = 0.115e-15; //F/micron
198710152Satgutier@umich.edu        wire_c_per_micron[0][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
198810152Satgutier@umich.edu          ild_thickness[0][1], miller_value[0][1], horiz_dielectric_constant[0][1],
198910152Satgutier@umich.edu          vert_dielectric_constant[0][1],
199010152Satgutier@umich.edu          fringe_cap);
199110152Satgutier@umich.edu
199210152Satgutier@umich.edu        wire_pitch[0][2] = 8 * g_ip->F_sz_um;
199310152Satgutier@umich.edu        aspect_ratio[0][2] = 2.2;
199410152Satgutier@umich.edu        wire_width = wire_pitch[0][2] / 2;
199510152Satgutier@umich.edu        wire_thickness = aspect_ratio[0][2] * wire_width;
199610152Satgutier@umich.edu        wire_spacing = wire_pitch[0][2] - wire_width;
199710152Satgutier@umich.edu        wire_r_per_micron[0][2] = wire_resistance(CU_RESISTIVITY, wire_width,
199810152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
199910152Satgutier@umich.edu        ild_thickness[0][2] = 1.5;
200010152Satgutier@umich.edu        miller_value[0][2] = 1.5;
200110152Satgutier@umich.edu        horiz_dielectric_constant[0][2] = 2.709;
200210152Satgutier@umich.edu        vert_dielectric_constant[0][2] = 3.9;
200310152Satgutier@umich.edu        wire_c_per_micron[0][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
200410152Satgutier@umich.edu          ild_thickness[0][2], miller_value[0][2], horiz_dielectric_constant[0][2], vert_dielectric_constant[0][2],
200510152Satgutier@umich.edu          fringe_cap);
200610152Satgutier@umich.edu
200710152Satgutier@umich.edu        //Conservative projections
200810152Satgutier@umich.edu        wire_pitch[1][0] = 2.5 * g_ip->F_sz_um;
200910152Satgutier@umich.edu        aspect_ratio[1][0]= 2.0;
201010152Satgutier@umich.edu        wire_width = wire_pitch[1][0] / 2;
201110152Satgutier@umich.edu        wire_thickness = aspect_ratio[1][0] * wire_width;
201210152Satgutier@umich.edu        wire_spacing = wire_pitch[1][0] - wire_width;
201310152Satgutier@umich.edu        barrier_thickness = 0.017;
201410152Satgutier@umich.edu        dishing_thickness = 0;
201510152Satgutier@umich.edu        alpha_scatter = 1;
201610152Satgutier@umich.edu        wire_r_per_micron[1][0] = wire_resistance(CU_RESISTIVITY, wire_width,
201710152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
201810152Satgutier@umich.edu        ild_thickness[1][0] = 0.75;
201910152Satgutier@umich.edu        miller_value[1][0] = 1.5;
202010152Satgutier@umich.edu        horiz_dielectric_constant[1][0] = 3.038;
202110152Satgutier@umich.edu        vert_dielectric_constant[1][0] = 3.9;
202210152Satgutier@umich.edu        fringe_cap = 0.115e-15;
202310152Satgutier@umich.edu        wire_c_per_micron[1][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
202410152Satgutier@umich.edu          ild_thickness[1][0], miller_value[1][0], horiz_dielectric_constant[1][0],
202510152Satgutier@umich.edu          vert_dielectric_constant[1][0],
202610152Satgutier@umich.edu          fringe_cap);
202710152Satgutier@umich.edu
202810152Satgutier@umich.edu        wire_pitch[1][1] = 4 * g_ip->F_sz_um;
202910152Satgutier@umich.edu        wire_width = wire_pitch[1][1] / 2;
203010152Satgutier@umich.edu        aspect_ratio[1][1] = 2.0;
203110152Satgutier@umich.edu        wire_thickness = aspect_ratio[1][1] * wire_width;
203210152Satgutier@umich.edu        wire_spacing = wire_pitch[1][1] - wire_width;
203310152Satgutier@umich.edu        wire_r_per_micron[1][1] = wire_resistance(CU_RESISTIVITY, wire_width,
203410152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
203510152Satgutier@umich.edu        ild_thickness[1][1] = 0.75;
203610152Satgutier@umich.edu        miller_value[1][1] = 1.5;
203710152Satgutier@umich.edu        horiz_dielectric_constant[1][1] = 3.038;
203810152Satgutier@umich.edu        vert_dielectric_constant[1][1] = 3.9;
203910152Satgutier@umich.edu        wire_c_per_micron[1][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
204010152Satgutier@umich.edu          ild_thickness[1][1], miller_value[1][1], horiz_dielectric_constant[1][1],
204110152Satgutier@umich.edu          vert_dielectric_constant[1][1],
204210152Satgutier@umich.edu          fringe_cap);
204310152Satgutier@umich.edu
204410152Satgutier@umich.edu        wire_pitch[1][2] = 8 * g_ip->F_sz_um;
204510152Satgutier@umich.edu        aspect_ratio[1][2] = 2.2;
204610152Satgutier@umich.edu        wire_width = wire_pitch[1][2] / 2;
204710152Satgutier@umich.edu        wire_thickness = aspect_ratio[1][2] * wire_width;
204810152Satgutier@umich.edu        wire_spacing = wire_pitch[1][2] - wire_width;
204910152Satgutier@umich.edu        dishing_thickness = 0.1 *  wire_thickness;
205010152Satgutier@umich.edu        wire_r_per_micron[1][2] = wire_resistance(CU_RESISTIVITY, wire_width,
205110152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
205210152Satgutier@umich.edu        ild_thickness[1][2]  = 1.98;
205310152Satgutier@umich.edu        miller_value[1][2]  = 1.5;
205410152Satgutier@umich.edu        horiz_dielectric_constant[1][2]  = 3.038;
205510152Satgutier@umich.edu        vert_dielectric_constant[1][2]  = 3.9;
205610152Satgutier@umich.edu        wire_c_per_micron[1][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
205710152Satgutier@umich.edu          ild_thickness[1][2] , miller_value[1][2], horiz_dielectric_constant[1][2], vert_dielectric_constant[1][2],
205810152Satgutier@umich.edu          fringe_cap);
205910152Satgutier@umich.edu        //Nominal projections for commodity DRAM wordline/bitline
206010152Satgutier@umich.edu        wire_pitch[1][3] = 2 * 0.18;
206110152Satgutier@umich.edu        wire_c_per_micron[1][3] = 60e-15 / (256 * 2 * 0.18);
206210152Satgutier@umich.edu        wire_r_per_micron[1][3] = 12 / 0.18;
206310152Satgutier@umich.edu    }
206410152Satgutier@umich.edu    else if (tech == 90)
206510152Satgutier@umich.edu    {
206610152Satgutier@umich.edu      //Aggressive projections
206710152Satgutier@umich.edu      wire_pitch[0][0] = 2.5 * g_ip->F_sz_um;//micron
206810152Satgutier@umich.edu      aspect_ratio[0][0] = 2.4;
206910152Satgutier@umich.edu      wire_width = wire_pitch[0][0] / 2; //micron
207010152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][0] * wire_width;//micron
207110152Satgutier@umich.edu      wire_spacing = wire_pitch[0][0] - wire_width;//micron
207210152Satgutier@umich.edu      barrier_thickness = 0.01;//micron
207310152Satgutier@umich.edu      dishing_thickness = 0;//micron
207410152Satgutier@umich.edu      alpha_scatter = 1;
207510152Satgutier@umich.edu      wire_r_per_micron[0][0] = wire_resistance(CU_RESISTIVITY, wire_width,
207610152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);//ohm/micron
207710152Satgutier@umich.edu      ild_thickness[0][0] = 0.48;//micron
207810152Satgutier@umich.edu      miller_value[0][0] = 1.5;
207910152Satgutier@umich.edu      horiz_dielectric_constant[0][0] = 2.709;
208010152Satgutier@umich.edu      vert_dielectric_constant[0][0] = 3.9;
208110152Satgutier@umich.edu      fringe_cap = 0.115e-15; //F/micron
208210152Satgutier@umich.edu      wire_c_per_micron[0][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
208310152Satgutier@umich.edu          ild_thickness[0][0], miller_value[0][0], horiz_dielectric_constant[0][0],
208410152Satgutier@umich.edu          vert_dielectric_constant[0][0],
208510152Satgutier@umich.edu          fringe_cap);//F/micron.
208610152Satgutier@umich.edu
208710152Satgutier@umich.edu      wire_pitch[0][1] = 4 * g_ip->F_sz_um;
208810152Satgutier@umich.edu      wire_width = wire_pitch[0][1] / 2;
208910152Satgutier@umich.edu      aspect_ratio[0][1] = 2.4;
209010152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][1] * wire_width;
209110152Satgutier@umich.edu      wire_spacing = wire_pitch[0][1] - wire_width;
209210152Satgutier@umich.edu      wire_r_per_micron[0][1] = wire_resistance(CU_RESISTIVITY, wire_width,
209310152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
209410152Satgutier@umich.edu      ild_thickness[0][1] = 0.48;//micron
209510152Satgutier@umich.edu      miller_value[0][1] = 1.5;
209610152Satgutier@umich.edu      horiz_dielectric_constant[0][1] = 2.709;
209710152Satgutier@umich.edu      vert_dielectric_constant[0][1] = 3.9;
209810152Satgutier@umich.edu      wire_c_per_micron[0][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
209910152Satgutier@umich.edu          ild_thickness[0][1], miller_value[0][1], horiz_dielectric_constant[0][1],
210010152Satgutier@umich.edu          vert_dielectric_constant[0][1],
210110152Satgutier@umich.edu          fringe_cap);
210210152Satgutier@umich.edu
210310152Satgutier@umich.edu      wire_pitch[0][2] = 8 * g_ip->F_sz_um;
210410152Satgutier@umich.edu      aspect_ratio[0][2] = 2.7;
210510152Satgutier@umich.edu      wire_width = wire_pitch[0][2] / 2;
210610152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][2] * wire_width;
210710152Satgutier@umich.edu      wire_spacing = wire_pitch[0][2] - wire_width;
210810152Satgutier@umich.edu      wire_r_per_micron[0][2] = wire_resistance(CU_RESISTIVITY, wire_width,
210910152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
211010152Satgutier@umich.edu      ild_thickness[0][2] = 0.96;
211110152Satgutier@umich.edu      miller_value[0][2] = 1.5;
211210152Satgutier@umich.edu      horiz_dielectric_constant[0][2] = 2.709;
211310152Satgutier@umich.edu      vert_dielectric_constant[0][2] = 3.9;
211410152Satgutier@umich.edu      wire_c_per_micron[0][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
211510152Satgutier@umich.edu          ild_thickness[0][2], miller_value[0][2], horiz_dielectric_constant[0][2], vert_dielectric_constant[0][2],
211610152Satgutier@umich.edu          fringe_cap);
211710152Satgutier@umich.edu
211810152Satgutier@umich.edu      //Conservative projections
211910152Satgutier@umich.edu      wire_pitch[1][0] = 2.5 * g_ip->F_sz_um;
212010152Satgutier@umich.edu      aspect_ratio[1][0]  = 2.0;
212110152Satgutier@umich.edu      wire_width = wire_pitch[1][0] / 2;
212210152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][0] * wire_width;
212310152Satgutier@umich.edu      wire_spacing = wire_pitch[1][0] - wire_width;
212410152Satgutier@umich.edu      barrier_thickness = 0.008;
212510152Satgutier@umich.edu      dishing_thickness = 0;
212610152Satgutier@umich.edu      alpha_scatter = 1;
212710152Satgutier@umich.edu      wire_r_per_micron[1][0] = wire_resistance(CU_RESISTIVITY, wire_width,
212810152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
212910152Satgutier@umich.edu      ild_thickness[1][0]  = 0.48;
213010152Satgutier@umich.edu      miller_value[1][0]  = 1.5;
213110152Satgutier@umich.edu      horiz_dielectric_constant[1][0]  = 3.038;
213210152Satgutier@umich.edu      vert_dielectric_constant[1][0]  = 3.9;
213310152Satgutier@umich.edu      fringe_cap = 0.115e-15;
213410152Satgutier@umich.edu      wire_c_per_micron[1][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
213510152Satgutier@umich.edu          ild_thickness[1][0], miller_value[1][0], horiz_dielectric_constant[1][0],
213610152Satgutier@umich.edu          vert_dielectric_constant[1][0],
213710152Satgutier@umich.edu          fringe_cap);
213810152Satgutier@umich.edu
213910152Satgutier@umich.edu      wire_pitch[1][1] = 4 * g_ip->F_sz_um;
214010152Satgutier@umich.edu      wire_width = wire_pitch[1][1] / 2;
214110152Satgutier@umich.edu      aspect_ratio[1][1] = 2.0;
214210152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][1] * wire_width;
214310152Satgutier@umich.edu      wire_spacing = wire_pitch[1][1] - wire_width;
214410152Satgutier@umich.edu      wire_r_per_micron[1][1] = wire_resistance(CU_RESISTIVITY, wire_width,
214510152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
214610152Satgutier@umich.edu      ild_thickness[1][1]  = 0.48;
214710152Satgutier@umich.edu      miller_value[1][1]  = 1.5;
214810152Satgutier@umich.edu      horiz_dielectric_constant[1][1]  = 3.038;
214910152Satgutier@umich.edu      vert_dielectric_constant[1][1]  = 3.9;
215010152Satgutier@umich.edu      wire_c_per_micron[1][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
215110152Satgutier@umich.edu          ild_thickness[1][1], miller_value[1][1], horiz_dielectric_constant[1][1],
215210152Satgutier@umich.edu          vert_dielectric_constant[1][1],
215310152Satgutier@umich.edu          fringe_cap);
215410152Satgutier@umich.edu
215510152Satgutier@umich.edu      wire_pitch[1][2] = 8 * g_ip->F_sz_um;
215610152Satgutier@umich.edu      aspect_ratio[1][2]  = 2.2;
215710152Satgutier@umich.edu      wire_width = wire_pitch[1][2] / 2;
215810152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][2] * wire_width;
215910152Satgutier@umich.edu      wire_spacing = wire_pitch[1][2] - wire_width;
216010152Satgutier@umich.edu      dishing_thickness = 0.1 *  wire_thickness;
216110152Satgutier@umich.edu      wire_r_per_micron[1][2] = wire_resistance(CU_RESISTIVITY, wire_width,
216210152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
216310152Satgutier@umich.edu      ild_thickness[1][2]  = 1.1;
216410152Satgutier@umich.edu      miller_value[1][2]  = 1.5;
216510152Satgutier@umich.edu      horiz_dielectric_constant[1][2]  = 3.038;
216610152Satgutier@umich.edu      vert_dielectric_constant[1][2]  = 3.9;
216710152Satgutier@umich.edu      wire_c_per_micron[1][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
216810152Satgutier@umich.edu          ild_thickness[1][2] , miller_value[1][2], horiz_dielectric_constant[1][2], vert_dielectric_constant[1][2],
216910152Satgutier@umich.edu          fringe_cap);
217010152Satgutier@umich.edu      //Nominal projections for commodity DRAM wordline/bitline
217110152Satgutier@umich.edu      wire_pitch[1][3] = 2 * 0.09;
217210152Satgutier@umich.edu      wire_c_per_micron[1][3] = 60e-15 / (256 * 2 * 0.09);
217310152Satgutier@umich.edu      wire_r_per_micron[1][3] = 12 / 0.09;
217410152Satgutier@umich.edu    }
217510152Satgutier@umich.edu    else if (tech == 65)
217610152Satgutier@umich.edu    {
217710152Satgutier@umich.edu      //Aggressive projections
217810152Satgutier@umich.edu      wire_pitch[0][0] = 2.5 * g_ip->F_sz_um;
217910152Satgutier@umich.edu      aspect_ratio[0][0]  = 2.7;
218010152Satgutier@umich.edu      wire_width = wire_pitch[0][0] / 2;
218110152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][0]  * wire_width;
218210152Satgutier@umich.edu      wire_spacing = wire_pitch[0][0] - wire_width;
218310152Satgutier@umich.edu      barrier_thickness = 0;
218410152Satgutier@umich.edu      dishing_thickness = 0;
218510152Satgutier@umich.edu      alpha_scatter = 1;
218610152Satgutier@umich.edu      wire_r_per_micron[0][0] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
218710152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
218810152Satgutier@umich.edu      ild_thickness[0][0]  = 0.405;
218910152Satgutier@umich.edu      miller_value[0][0]   = 1.5;
219010152Satgutier@umich.edu      horiz_dielectric_constant[0][0]  = 2.303;
219110152Satgutier@umich.edu      vert_dielectric_constant[0][0]   = 3.9;
219210152Satgutier@umich.edu      fringe_cap = 0.115e-15;
219310152Satgutier@umich.edu      wire_c_per_micron[0][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
219410152Satgutier@umich.edu          ild_thickness[0][0] , miller_value[0][0] , horiz_dielectric_constant[0][0] , vert_dielectric_constant[0][0] ,
219510152Satgutier@umich.edu          fringe_cap);
219610152Satgutier@umich.edu
219710152Satgutier@umich.edu      wire_pitch[0][1] = 4 * g_ip->F_sz_um;
219810152Satgutier@umich.edu      wire_width = wire_pitch[0][1] / 2;
219910152Satgutier@umich.edu      aspect_ratio[0][1]  = 2.7;
220010152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][1]  * wire_width;
220110152Satgutier@umich.edu      wire_spacing = wire_pitch[0][1] - wire_width;
220210152Satgutier@umich.edu      wire_r_per_micron[0][1] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
220310152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
220410152Satgutier@umich.edu      ild_thickness[0][1]  = 0.405;
220510152Satgutier@umich.edu      miller_value[0][1]   = 1.5;
220610152Satgutier@umich.edu      horiz_dielectric_constant[0][1]  = 2.303;
220710152Satgutier@umich.edu      vert_dielectric_constant[0][1]   = 3.9;
220810152Satgutier@umich.edu      wire_c_per_micron[0][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
220910152Satgutier@umich.edu          ild_thickness[0][1], miller_value[0][1], horiz_dielectric_constant[0][1],
221010152Satgutier@umich.edu          vert_dielectric_constant[0][1],
221110152Satgutier@umich.edu          fringe_cap);
221210152Satgutier@umich.edu
221310152Satgutier@umich.edu      wire_pitch[0][2] = 8 * g_ip->F_sz_um;
221410152Satgutier@umich.edu      aspect_ratio[0][2] = 2.8;
221510152Satgutier@umich.edu      wire_width = wire_pitch[0][2] / 2;
221610152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][2] * wire_width;
221710152Satgutier@umich.edu      wire_spacing = wire_pitch[0][2] - wire_width;
221810152Satgutier@umich.edu      wire_r_per_micron[0][2] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
221910152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
222010152Satgutier@umich.edu      ild_thickness[0][2] = 0.81;
222110152Satgutier@umich.edu      miller_value[0][2]   = 1.5;
222210152Satgutier@umich.edu      horiz_dielectric_constant[0][2]  = 2.303;
222310152Satgutier@umich.edu      vert_dielectric_constant[0][2]   = 3.9;
222410152Satgutier@umich.edu      wire_c_per_micron[0][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
222510152Satgutier@umich.edu          ild_thickness[0][2], miller_value[0][2], horiz_dielectric_constant[0][2], vert_dielectric_constant[0][2],
222610152Satgutier@umich.edu          fringe_cap);
222710152Satgutier@umich.edu
222810152Satgutier@umich.edu      //Conservative projections
222910152Satgutier@umich.edu      wire_pitch[1][0] = 2.5 * g_ip->F_sz_um;
223010152Satgutier@umich.edu      aspect_ratio[1][0] = 2.0;
223110152Satgutier@umich.edu      wire_width = wire_pitch[1][0] / 2;
223210152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][0] * wire_width;
223310152Satgutier@umich.edu      wire_spacing = wire_pitch[1][0] - wire_width;
223410152Satgutier@umich.edu      barrier_thickness = 0.006;
223510152Satgutier@umich.edu      dishing_thickness = 0;
223610152Satgutier@umich.edu      alpha_scatter = 1;
223710152Satgutier@umich.edu      wire_r_per_micron[1][0] = wire_resistance(CU_RESISTIVITY, wire_width,
223810152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
223910152Satgutier@umich.edu      ild_thickness[1][0] = 0.405;
224010152Satgutier@umich.edu      miller_value[1][0] = 1.5;
224110152Satgutier@umich.edu      horiz_dielectric_constant[1][0] = 2.734;
224210152Satgutier@umich.edu      vert_dielectric_constant[1][0] = 3.9;
224310152Satgutier@umich.edu      fringe_cap = 0.115e-15;
224410152Satgutier@umich.edu      wire_c_per_micron[1][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
224510152Satgutier@umich.edu          ild_thickness[1][0], miller_value[1][0], horiz_dielectric_constant[1][0], vert_dielectric_constant[1][0],
224610152Satgutier@umich.edu          fringe_cap);
224710152Satgutier@umich.edu
224810152Satgutier@umich.edu      wire_pitch[1][1] = 4 * g_ip->F_sz_um;
224910152Satgutier@umich.edu      wire_width = wire_pitch[1][1] / 2;
225010152Satgutier@umich.edu      aspect_ratio[1][1] = 2.0;
225110152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][1] * wire_width;
225210152Satgutier@umich.edu      wire_spacing = wire_pitch[1][1] - wire_width;
225310152Satgutier@umich.edu      wire_r_per_micron[1][1] = wire_resistance(CU_RESISTIVITY, wire_width,
225410152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
225510152Satgutier@umich.edu      ild_thickness[1][1] = 0.405;
225610152Satgutier@umich.edu      miller_value[1][1] = 1.5;
225710152Satgutier@umich.edu      horiz_dielectric_constant[1][1] = 2.734;
225810152Satgutier@umich.edu      vert_dielectric_constant[1][1] = 3.9;
225910152Satgutier@umich.edu      wire_c_per_micron[1][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
226010152Satgutier@umich.edu          ild_thickness[1][1], miller_value[1][1], horiz_dielectric_constant[1][1], vert_dielectric_constant[1][1],
226110152Satgutier@umich.edu          fringe_cap);
226210152Satgutier@umich.edu
226310152Satgutier@umich.edu      wire_pitch[1][2] = 8 * g_ip->F_sz_um;
226410152Satgutier@umich.edu      aspect_ratio[1][2] = 2.2;
226510152Satgutier@umich.edu      wire_width = wire_pitch[1][2] / 2;
226610152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][2] * wire_width;
226710152Satgutier@umich.edu      wire_spacing = wire_pitch[1][2] - wire_width;
226810152Satgutier@umich.edu      dishing_thickness = 0.1 *  wire_thickness;
226910152Satgutier@umich.edu      wire_r_per_micron[1][2] = wire_resistance(CU_RESISTIVITY, wire_width,
227010152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
227110152Satgutier@umich.edu      ild_thickness[1][2] = 0.77;
227210152Satgutier@umich.edu      miller_value[1][2] = 1.5;
227310152Satgutier@umich.edu      horiz_dielectric_constant[1][2] = 2.734;
227410152Satgutier@umich.edu      vert_dielectric_constant[1][2] = 3.9;
227510152Satgutier@umich.edu      wire_c_per_micron[1][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
227610152Satgutier@umich.edu          ild_thickness[1][2], miller_value[1][2], horiz_dielectric_constant[1][2], vert_dielectric_constant[1][2],
227710152Satgutier@umich.edu          fringe_cap);
227810152Satgutier@umich.edu      //Nominal projections for commodity DRAM wordline/bitline
227910152Satgutier@umich.edu      wire_pitch[1][3] = 2 * 0.065;
228010152Satgutier@umich.edu      wire_c_per_micron[1][3] = 52.5e-15 / (256 * 2 * 0.065);
228110152Satgutier@umich.edu      wire_r_per_micron[1][3] = 12 / 0.065;
228210152Satgutier@umich.edu    }
228310152Satgutier@umich.edu    else if (tech == 45)
228410152Satgutier@umich.edu    {
228510152Satgutier@umich.edu      //Aggressive projections.
228610152Satgutier@umich.edu      wire_pitch[0][0] = 2.5 * g_ip->F_sz_um;
228710152Satgutier@umich.edu      aspect_ratio[0][0]  = 3.0;
228810152Satgutier@umich.edu      wire_width = wire_pitch[0][0] / 2;
228910152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][0]  * wire_width;
229010152Satgutier@umich.edu      wire_spacing = wire_pitch[0][0] - wire_width;
229110152Satgutier@umich.edu      barrier_thickness = 0;
229210152Satgutier@umich.edu      dishing_thickness = 0;
229310152Satgutier@umich.edu      alpha_scatter = 1;
229410152Satgutier@umich.edu      wire_r_per_micron[0][0] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
229510152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
229610152Satgutier@umich.edu      ild_thickness[0][0]  = 0.315;
229710152Satgutier@umich.edu      miller_value[0][0]  = 1.5;
229810152Satgutier@umich.edu      horiz_dielectric_constant[0][0]  = 1.958;
229910152Satgutier@umich.edu      vert_dielectric_constant[0][0]  = 3.9;
230010152Satgutier@umich.edu      fringe_cap = 0.115e-15;
230110152Satgutier@umich.edu      wire_c_per_micron[0][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
230210152Satgutier@umich.edu          ild_thickness[0][0] , miller_value[0][0] , horiz_dielectric_constant[0][0] , vert_dielectric_constant[0][0] ,
230310152Satgutier@umich.edu          fringe_cap);
230410152Satgutier@umich.edu
230510152Satgutier@umich.edu      wire_pitch[0][1] = 4 * g_ip->F_sz_um;
230610152Satgutier@umich.edu      wire_width = wire_pitch[0][1] / 2;
230710152Satgutier@umich.edu      aspect_ratio[0][1]  = 3.0;
230810152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][1] * wire_width;
230910152Satgutier@umich.edu      wire_spacing = wire_pitch[0][1] - wire_width;
231010152Satgutier@umich.edu      wire_r_per_micron[0][1] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
231110152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
231210152Satgutier@umich.edu      ild_thickness[0][1]  = 0.315;
231310152Satgutier@umich.edu      miller_value[0][1]  = 1.5;
231410152Satgutier@umich.edu      horiz_dielectric_constant[0][1]  = 1.958;
231510152Satgutier@umich.edu      vert_dielectric_constant[0][1]  = 3.9;
231610152Satgutier@umich.edu      wire_c_per_micron[0][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
231710152Satgutier@umich.edu          ild_thickness[0][1], miller_value[0][1], horiz_dielectric_constant[0][1], vert_dielectric_constant[0][1],
231810152Satgutier@umich.edu          fringe_cap);
231910152Satgutier@umich.edu
232010152Satgutier@umich.edu      wire_pitch[0][2] = 8 * g_ip->F_sz_um;
232110152Satgutier@umich.edu      aspect_ratio[0][2] = 3.0;
232210152Satgutier@umich.edu      wire_width = wire_pitch[0][2] / 2;
232310152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][2] * wire_width;
232410152Satgutier@umich.edu      wire_spacing = wire_pitch[0][2] - wire_width;
232510152Satgutier@umich.edu      wire_r_per_micron[0][2] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
232610152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
232710152Satgutier@umich.edu      ild_thickness[0][2] = 0.63;
232810152Satgutier@umich.edu      miller_value[0][2]  = 1.5;
232910152Satgutier@umich.edu      horiz_dielectric_constant[0][2]  = 1.958;
233010152Satgutier@umich.edu      vert_dielectric_constant[0][2]  = 3.9;
233110152Satgutier@umich.edu      wire_c_per_micron[0][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
233210152Satgutier@umich.edu          ild_thickness[0][2], miller_value[0][2], horiz_dielectric_constant[0][2], vert_dielectric_constant[0][2],
233310152Satgutier@umich.edu          fringe_cap);
233410152Satgutier@umich.edu
233510152Satgutier@umich.edu      //Conservative projections
233610152Satgutier@umich.edu      wire_pitch[1][0] = 2.5 * g_ip->F_sz_um;
233710152Satgutier@umich.edu      aspect_ratio[1][0] = 2.0;
233810152Satgutier@umich.edu      wire_width = wire_pitch[1][0] / 2;
233910152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][0] * wire_width;
234010152Satgutier@umich.edu      wire_spacing = wire_pitch[1][0] - wire_width;
234110152Satgutier@umich.edu      barrier_thickness = 0.004;
234210152Satgutier@umich.edu      dishing_thickness = 0;
234310152Satgutier@umich.edu      alpha_scatter = 1;
234410152Satgutier@umich.edu      wire_r_per_micron[1][0] = wire_resistance(CU_RESISTIVITY, wire_width,
234510152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
234610152Satgutier@umich.edu      ild_thickness[1][0] = 0.315;
234710152Satgutier@umich.edu      miller_value[1][0] = 1.5;
234810152Satgutier@umich.edu      horiz_dielectric_constant[1][0] = 2.46;
234910152Satgutier@umich.edu      vert_dielectric_constant[1][0] = 3.9;
235010152Satgutier@umich.edu      fringe_cap = 0.115e-15;
235110152Satgutier@umich.edu      wire_c_per_micron[1][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
235210152Satgutier@umich.edu          ild_thickness[1][0], miller_value[1][0], horiz_dielectric_constant[1][0], vert_dielectric_constant[1][0],
235310152Satgutier@umich.edu          fringe_cap);
235410152Satgutier@umich.edu
235510152Satgutier@umich.edu      wire_pitch[1][1] = 4 * g_ip->F_sz_um;
235610152Satgutier@umich.edu      wire_width = wire_pitch[1][1] / 2;
235710152Satgutier@umich.edu      aspect_ratio[1][1] = 2.0;
235810152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][1] * wire_width;
235910152Satgutier@umich.edu      wire_spacing = wire_pitch[1][1] - wire_width;
236010152Satgutier@umich.edu      wire_r_per_micron[1][1] = wire_resistance(CU_RESISTIVITY, wire_width,
236110152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
236210152Satgutier@umich.edu      ild_thickness[1][1] = 0.315;
236310152Satgutier@umich.edu      miller_value[1][1] = 1.5;
236410152Satgutier@umich.edu      horiz_dielectric_constant[1][1] = 2.46;
236510152Satgutier@umich.edu      vert_dielectric_constant[1][1] = 3.9;
236610152Satgutier@umich.edu      fringe_cap = 0.115e-15;
236710152Satgutier@umich.edu      wire_c_per_micron[1][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
236810152Satgutier@umich.edu          ild_thickness[1][1], miller_value[1][1], horiz_dielectric_constant[1][1], vert_dielectric_constant[1][1],
236910152Satgutier@umich.edu          fringe_cap);
237010152Satgutier@umich.edu
237110152Satgutier@umich.edu      wire_pitch[1][2] = 8 * g_ip->F_sz_um;
237210152Satgutier@umich.edu      aspect_ratio[1][2] = 2.2;
237310152Satgutier@umich.edu      wire_width = wire_pitch[1][2] / 2;
237410152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][2] * wire_width;
237510152Satgutier@umich.edu      wire_spacing = wire_pitch[1][2] - wire_width;
237610152Satgutier@umich.edu      dishing_thickness = 0.1 * wire_thickness;
237710152Satgutier@umich.edu      wire_r_per_micron[1][2] = wire_resistance(CU_RESISTIVITY, wire_width,
237810152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
237910152Satgutier@umich.edu      ild_thickness[1][2] = 0.55;
238010152Satgutier@umich.edu      miller_value[1][2] = 1.5;
238110152Satgutier@umich.edu      horiz_dielectric_constant[1][2] = 2.46;
238210152Satgutier@umich.edu      vert_dielectric_constant[1][2] = 3.9;
238310152Satgutier@umich.edu      wire_c_per_micron[1][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
238410152Satgutier@umich.edu          ild_thickness[1][2], miller_value[1][2], horiz_dielectric_constant[1][2], vert_dielectric_constant[1][2],
238510152Satgutier@umich.edu          fringe_cap);
238610152Satgutier@umich.edu      //Nominal projections for commodity DRAM wordline/bitline
238710152Satgutier@umich.edu      wire_pitch[1][3] = 2 * 0.045;
238810152Satgutier@umich.edu      wire_c_per_micron[1][3] = 37.5e-15 / (256 * 2 * 0.045);
238910152Satgutier@umich.edu      wire_r_per_micron[1][3] = 12 / 0.045;
239010152Satgutier@umich.edu    }
239110152Satgutier@umich.edu    else if (tech == 32)
239210152Satgutier@umich.edu    {
239310152Satgutier@umich.edu      //Aggressive projections.
239410152Satgutier@umich.edu      wire_pitch[0][0] = 2.5 * g_ip->F_sz_um;
239510152Satgutier@umich.edu      aspect_ratio[0][0] = 3.0;
239610152Satgutier@umich.edu      wire_width = wire_pitch[0][0] / 2;
239710152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][0] * wire_width;
239810152Satgutier@umich.edu      wire_spacing = wire_pitch[0][0] - wire_width;
239910152Satgutier@umich.edu      barrier_thickness = 0;
240010152Satgutier@umich.edu      dishing_thickness = 0;
240110152Satgutier@umich.edu      alpha_scatter = 1;
240210152Satgutier@umich.edu      wire_r_per_micron[0][0] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
240310152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
240410152Satgutier@umich.edu      ild_thickness[0][0] = 0.21;
240510152Satgutier@umich.edu      miller_value[0][0] = 1.5;
240610152Satgutier@umich.edu      horiz_dielectric_constant[0][0] = 1.664;
240710152Satgutier@umich.edu      vert_dielectric_constant[0][0] = 3.9;
240810152Satgutier@umich.edu      fringe_cap = 0.115e-15;
240910152Satgutier@umich.edu      wire_c_per_micron[0][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
241010152Satgutier@umich.edu          ild_thickness[0][0], miller_value[0][0], horiz_dielectric_constant[0][0], vert_dielectric_constant[0][0],
241110152Satgutier@umich.edu          fringe_cap);
241210152Satgutier@umich.edu
241310152Satgutier@umich.edu      wire_pitch[0][1] = 4 * g_ip->F_sz_um;
241410152Satgutier@umich.edu      wire_width = wire_pitch[0][1] / 2;
241510152Satgutier@umich.edu      aspect_ratio[0][1] = 3.0;
241610152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][1] * wire_width;
241710152Satgutier@umich.edu      wire_spacing = wire_pitch[0][1] - wire_width;
241810152Satgutier@umich.edu      wire_r_per_micron[0][1] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
241910152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
242010152Satgutier@umich.edu      ild_thickness[0][1] = 0.21;
242110152Satgutier@umich.edu      miller_value[0][1] = 1.5;
242210152Satgutier@umich.edu      horiz_dielectric_constant[0][1] = 1.664;
242310152Satgutier@umich.edu      vert_dielectric_constant[0][1] = 3.9;
242410152Satgutier@umich.edu      wire_c_per_micron[0][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
242510152Satgutier@umich.edu          ild_thickness[0][1], miller_value[0][1], horiz_dielectric_constant[0][1], vert_dielectric_constant[0][1],
242610152Satgutier@umich.edu          fringe_cap);
242710152Satgutier@umich.edu
242810152Satgutier@umich.edu      wire_pitch[0][2] = 8 * g_ip->F_sz_um;
242910152Satgutier@umich.edu      aspect_ratio[0][2] = 3.0;
243010152Satgutier@umich.edu      wire_width = wire_pitch[0][2] / 2;
243110152Satgutier@umich.edu      wire_thickness = aspect_ratio[0][2] * wire_width;
243210152Satgutier@umich.edu      wire_spacing = wire_pitch[0][2] - wire_width;
243310152Satgutier@umich.edu      wire_r_per_micron[0][2] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
243410152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
243510152Satgutier@umich.edu      ild_thickness[0][2] = 0.42;
243610152Satgutier@umich.edu      miller_value[0][2] = 1.5;
243710152Satgutier@umich.edu      horiz_dielectric_constant[0][2] = 1.664;
243810152Satgutier@umich.edu      vert_dielectric_constant[0][2] = 3.9;
243910152Satgutier@umich.edu      wire_c_per_micron[0][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
244010152Satgutier@umich.edu          ild_thickness[0][2], miller_value[0][2], horiz_dielectric_constant[0][2], vert_dielectric_constant[0][2],
244110152Satgutier@umich.edu          fringe_cap);
244210152Satgutier@umich.edu
244310152Satgutier@umich.edu      //Conservative projections
244410152Satgutier@umich.edu      wire_pitch[1][0] = 2.5 * g_ip->F_sz_um;
244510152Satgutier@umich.edu      aspect_ratio[1][0] = 2.0;
244610152Satgutier@umich.edu      wire_width = wire_pitch[1][0] / 2;
244710152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][0] * wire_width;
244810152Satgutier@umich.edu      wire_spacing = wire_pitch[1][0] - wire_width;
244910152Satgutier@umich.edu      barrier_thickness = 0.003;
245010152Satgutier@umich.edu      dishing_thickness = 0;
245110152Satgutier@umich.edu      alpha_scatter = 1;
245210152Satgutier@umich.edu      wire_r_per_micron[1][0] = wire_resistance(CU_RESISTIVITY, wire_width,
245310152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
245410152Satgutier@umich.edu      ild_thickness[1][0] = 0.21;
245510152Satgutier@umich.edu      miller_value[1][0] = 1.5;
245610152Satgutier@umich.edu      horiz_dielectric_constant[1][0] = 2.214;
245710152Satgutier@umich.edu      vert_dielectric_constant[1][0] = 3.9;
245810152Satgutier@umich.edu      fringe_cap = 0.115e-15;
245910152Satgutier@umich.edu      wire_c_per_micron[1][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
246010152Satgutier@umich.edu          ild_thickness[1][0], miller_value[1][0], horiz_dielectric_constant[1][0], vert_dielectric_constant[1][0],
246110152Satgutier@umich.edu          fringe_cap);
246210152Satgutier@umich.edu
246310152Satgutier@umich.edu      wire_pitch[1][1] = 4 * g_ip->F_sz_um;
246410152Satgutier@umich.edu      aspect_ratio[1][1] = 2.0;
246510152Satgutier@umich.edu      wire_width = wire_pitch[1][1] / 2;
246610152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][1] * wire_width;
246710152Satgutier@umich.edu      wire_spacing = wire_pitch[1][1] - wire_width;
246810152Satgutier@umich.edu      wire_r_per_micron[1][1] = wire_resistance(CU_RESISTIVITY, wire_width,
246910152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
247010152Satgutier@umich.edu      ild_thickness[1][1] = 0.21;
247110152Satgutier@umich.edu      miller_value[1][1] = 1.5;
247210152Satgutier@umich.edu      horiz_dielectric_constant[1][1] = 2.214;
247310152Satgutier@umich.edu      vert_dielectric_constant[1][1] = 3.9;
247410152Satgutier@umich.edu      wire_c_per_micron[1][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
247510152Satgutier@umich.edu          ild_thickness[1][1], miller_value[1][1], horiz_dielectric_constant[1][1], vert_dielectric_constant[1][1],
247610152Satgutier@umich.edu          fringe_cap);
247710152Satgutier@umich.edu
247810152Satgutier@umich.edu      wire_pitch[1][2] = 8 * g_ip->F_sz_um;
247910152Satgutier@umich.edu      aspect_ratio[1][2] = 2.2;
248010152Satgutier@umich.edu      wire_width = wire_pitch[1][2] / 2;
248110152Satgutier@umich.edu      wire_thickness = aspect_ratio[1][2] * wire_width;
248210152Satgutier@umich.edu      wire_spacing = wire_pitch[1][2] - wire_width;
248310152Satgutier@umich.edu      dishing_thickness = 0.1 *  wire_thickness;
248410152Satgutier@umich.edu      wire_r_per_micron[1][2] = wire_resistance(CU_RESISTIVITY, wire_width,
248510152Satgutier@umich.edu          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
248610152Satgutier@umich.edu      ild_thickness[1][2] = 0.385;
248710152Satgutier@umich.edu      miller_value[1][2] = 1.5;
248810152Satgutier@umich.edu      horiz_dielectric_constant[1][2] = 2.214;
248910152Satgutier@umich.edu      vert_dielectric_constant[1][2] = 3.9;
249010152Satgutier@umich.edu      wire_c_per_micron[1][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
249110152Satgutier@umich.edu          ild_thickness[1][2], miller_value[1][2], horiz_dielectric_constant[1][2], vert_dielectric_constant[1][2],
249210152Satgutier@umich.edu          fringe_cap);
249310152Satgutier@umich.edu      //Nominal projections for commodity DRAM wordline/bitline
249410152Satgutier@umich.edu      wire_pitch[1][3] = 2 * 0.032;//micron
249510152Satgutier@umich.edu      wire_c_per_micron[1][3] = 31e-15 / (256 * 2 * 0.032);//F/micron
249610152Satgutier@umich.edu      wire_r_per_micron[1][3] = 12 / 0.032;//ohm/micron
249710152Satgutier@umich.edu    }
249810152Satgutier@umich.edu    else if (tech == 22)
249910152Satgutier@umich.edu        {
250010152Satgutier@umich.edu          //Aggressive projections.
250110152Satgutier@umich.edu          wire_pitch[0][0] = 2.5 * g_ip->F_sz_um;//local
250210152Satgutier@umich.edu          aspect_ratio[0][0] = 3.0;
250310152Satgutier@umich.edu          wire_width = wire_pitch[0][0] / 2;
250410152Satgutier@umich.edu          wire_thickness = aspect_ratio[0][0] * wire_width;
250510152Satgutier@umich.edu          wire_spacing = wire_pitch[0][0] - wire_width;
250610152Satgutier@umich.edu          barrier_thickness = 0;
250710152Satgutier@umich.edu          dishing_thickness = 0;
250810152Satgutier@umich.edu          alpha_scatter = 1;
250910152Satgutier@umich.edu          wire_r_per_micron[0][0] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
251010152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
251110152Satgutier@umich.edu          ild_thickness[0][0] = 0.15;
251210152Satgutier@umich.edu          miller_value[0][0] = 1.5;
251310152Satgutier@umich.edu          horiz_dielectric_constant[0][0] = 1.414;
251410152Satgutier@umich.edu          vert_dielectric_constant[0][0] = 3.9;
251510152Satgutier@umich.edu          fringe_cap = 0.115e-15;
251610152Satgutier@umich.edu          wire_c_per_micron[0][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
251710152Satgutier@umich.edu            ild_thickness[0][0], miller_value[0][0], horiz_dielectric_constant[0][0], vert_dielectric_constant[0][0],
251810152Satgutier@umich.edu            fringe_cap);
251910152Satgutier@umich.edu
252010152Satgutier@umich.edu          wire_pitch[0][1] = 4 * g_ip->F_sz_um;//semi-global
252110152Satgutier@umich.edu          wire_width = wire_pitch[0][1] / 2;
252210152Satgutier@umich.edu          aspect_ratio[0][1] = 3.0;
252310152Satgutier@umich.edu          wire_thickness = aspect_ratio[0][1] * wire_width;
252410152Satgutier@umich.edu          wire_spacing = wire_pitch[0][1] - wire_width;
252510152Satgutier@umich.edu          wire_r_per_micron[0][1] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
252610152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
252710152Satgutier@umich.edu          ild_thickness[0][1] = 0.15;
252810152Satgutier@umich.edu          miller_value[0][1] = 1.5;
252910152Satgutier@umich.edu          horiz_dielectric_constant[0][1] = 1.414;
253010152Satgutier@umich.edu          vert_dielectric_constant[0][1] = 3.9;
253110152Satgutier@umich.edu          wire_c_per_micron[0][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
253210152Satgutier@umich.edu            ild_thickness[0][1], miller_value[0][1], horiz_dielectric_constant[0][1], vert_dielectric_constant[0][1],
253310152Satgutier@umich.edu            fringe_cap);
253410152Satgutier@umich.edu
253510152Satgutier@umich.edu          wire_pitch[0][2] = 8 * g_ip->F_sz_um;//global
253610152Satgutier@umich.edu          aspect_ratio[0][2] = 3.0;
253710152Satgutier@umich.edu          wire_width = wire_pitch[0][2] / 2;
253810152Satgutier@umich.edu          wire_thickness = aspect_ratio[0][2] * wire_width;
253910152Satgutier@umich.edu          wire_spacing = wire_pitch[0][2] - wire_width;
254010152Satgutier@umich.edu          wire_r_per_micron[0][2] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
254110152Satgutier@umich.edu                          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
254210152Satgutier@umich.edu          ild_thickness[0][2] = 0.3;
254310152Satgutier@umich.edu          miller_value[0][2] = 1.5;
254410152Satgutier@umich.edu          horiz_dielectric_constant[0][2] = 1.414;
254510152Satgutier@umich.edu          vert_dielectric_constant[0][2] = 3.9;
254610152Satgutier@umich.edu          wire_c_per_micron[0][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
254710152Satgutier@umich.edu                          ild_thickness[0][2], miller_value[0][2], horiz_dielectric_constant[0][2], vert_dielectric_constant[0][2],
254810152Satgutier@umich.edu                          fringe_cap);
254910152Satgutier@umich.edu
255010152Satgutier@umich.edu//          //*************************
255110152Satgutier@umich.edu//          wire_pitch[0][4] = 16 * g_ip.F_sz_um;//global
255210152Satgutier@umich.edu//          aspect_ratio = 3.0;
255310152Satgutier@umich.edu//          wire_width = wire_pitch[0][4] / 2;
255410152Satgutier@umich.edu//          wire_thickness = aspect_ratio * wire_width;
255510152Satgutier@umich.edu//          wire_spacing = wire_pitch[0][4] - wire_width;
255610152Satgutier@umich.edu//          wire_r_per_micron[0][4] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
255710152Satgutier@umich.edu//        		  wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
255810152Satgutier@umich.edu//          ild_thickness = 0.3;
255910152Satgutier@umich.edu//          wire_c_per_micron[0][4] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
256010152Satgutier@umich.edu//        		  ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
256110152Satgutier@umich.edu//        		  fringe_cap);
256210152Satgutier@umich.edu//
256310152Satgutier@umich.edu//          wire_pitch[0][5] = 24 * g_ip.F_sz_um;//global
256410152Satgutier@umich.edu//          aspect_ratio = 3.0;
256510152Satgutier@umich.edu//          wire_width = wire_pitch[0][5] / 2;
256610152Satgutier@umich.edu//          wire_thickness = aspect_ratio * wire_width;
256710152Satgutier@umich.edu//          wire_spacing = wire_pitch[0][5] - wire_width;
256810152Satgutier@umich.edu//          wire_r_per_micron[0][5] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
256910152Satgutier@umich.edu//        		  wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
257010152Satgutier@umich.edu//          ild_thickness = 0.3;
257110152Satgutier@umich.edu//          wire_c_per_micron[0][5] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
257210152Satgutier@umich.edu//        		  ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
257310152Satgutier@umich.edu//        		  fringe_cap);
257410152Satgutier@umich.edu//
257510152Satgutier@umich.edu//          wire_pitch[0][6] = 32 * g_ip.F_sz_um;//global
257610152Satgutier@umich.edu//          aspect_ratio = 3.0;
257710152Satgutier@umich.edu//          wire_width = wire_pitch[0][6] / 2;
257810152Satgutier@umich.edu//          wire_thickness = aspect_ratio * wire_width;
257910152Satgutier@umich.edu//          wire_spacing = wire_pitch[0][6] - wire_width;
258010152Satgutier@umich.edu//          wire_r_per_micron[0][6] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
258110152Satgutier@umich.edu//        		  wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
258210152Satgutier@umich.edu//          ild_thickness = 0.3;
258310152Satgutier@umich.edu//          wire_c_per_micron[0][6] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
258410152Satgutier@umich.edu//        		  ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
258510152Satgutier@umich.edu//        		  fringe_cap);
258610152Satgutier@umich.edu          //*************************
258710152Satgutier@umich.edu
258810152Satgutier@umich.edu          //Conservative projections
258910152Satgutier@umich.edu          wire_pitch[1][0] = 2.5 * g_ip->F_sz_um;
259010152Satgutier@umich.edu          aspect_ratio[1][0] = 2.0;
259110152Satgutier@umich.edu          wire_width = wire_pitch[1][0] / 2;
259210152Satgutier@umich.edu          wire_thickness = aspect_ratio[1][0] * wire_width;
259310152Satgutier@umich.edu          wire_spacing = wire_pitch[1][0] - wire_width;
259410152Satgutier@umich.edu          barrier_thickness = 0.003;
259510152Satgutier@umich.edu          dishing_thickness = 0;
259610152Satgutier@umich.edu          alpha_scatter = 1.05;
259710152Satgutier@umich.edu          wire_r_per_micron[1][0] = wire_resistance(CU_RESISTIVITY, wire_width,
259810152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
259910152Satgutier@umich.edu          ild_thickness[1][0] = 0.15;
260010152Satgutier@umich.edu          miller_value[1][0] = 1.5;
260110152Satgutier@umich.edu          horiz_dielectric_constant[1][0] = 2.104;
260210152Satgutier@umich.edu          vert_dielectric_constant[1][0] = 3.9;
260310152Satgutier@umich.edu          fringe_cap = 0.115e-15;
260410152Satgutier@umich.edu          wire_c_per_micron[1][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
260510152Satgutier@umich.edu            ild_thickness[1][0], miller_value[1][0], horiz_dielectric_constant[1][0], vert_dielectric_constant[1][0],
260610152Satgutier@umich.edu            fringe_cap);
260710152Satgutier@umich.edu
260810152Satgutier@umich.edu          wire_pitch[1][1] = 4 * g_ip->F_sz_um;
260910152Satgutier@umich.edu          wire_width = wire_pitch[1][1] / 2;
261010152Satgutier@umich.edu          aspect_ratio[1][1] = 2.0;
261110152Satgutier@umich.edu          wire_thickness = aspect_ratio[1][1] * wire_width;
261210152Satgutier@umich.edu          wire_spacing = wire_pitch[1][1] - wire_width;
261310152Satgutier@umich.edu          wire_r_per_micron[1][1] = wire_resistance(CU_RESISTIVITY, wire_width,
261410152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
261510152Satgutier@umich.edu          ild_thickness[1][1] = 0.15;
261610152Satgutier@umich.edu          miller_value[1][1] = 1.5;
261710152Satgutier@umich.edu          horiz_dielectric_constant[1][1] = 2.104;
261810152Satgutier@umich.edu          vert_dielectric_constant[1][1] = 3.9;
261910152Satgutier@umich.edu          wire_c_per_micron[1][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
262010152Satgutier@umich.edu            ild_thickness[1][1], miller_value[1][1], horiz_dielectric_constant[1][1], vert_dielectric_constant[1][1],
262110152Satgutier@umich.edu            fringe_cap);
262210152Satgutier@umich.edu
262310152Satgutier@umich.edu            wire_pitch[1][2] = 8 * g_ip->F_sz_um;
262410152Satgutier@umich.edu            aspect_ratio[1][2] = 2.2;
262510152Satgutier@umich.edu            wire_width = wire_pitch[1][2] / 2;
262610152Satgutier@umich.edu            wire_thickness = aspect_ratio[1][2] * wire_width;
262710152Satgutier@umich.edu            wire_spacing = wire_pitch[1][2] - wire_width;
262810152Satgutier@umich.edu            dishing_thickness = 0.1 *  wire_thickness;
262910152Satgutier@umich.edu            wire_r_per_micron[1][2] = wire_resistance(CU_RESISTIVITY, wire_width,
263010152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
263110152Satgutier@umich.edu            ild_thickness[1][2] = 0.275;
263210152Satgutier@umich.edu            miller_value[1][2] = 1.5;
263310152Satgutier@umich.edu            horiz_dielectric_constant[1][2] = 2.104;
263410152Satgutier@umich.edu            vert_dielectric_constant[1][2] = 3.9;
263510152Satgutier@umich.edu            wire_c_per_micron[1][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
263610152Satgutier@umich.edu                        ild_thickness[1][2], miller_value[1][2], horiz_dielectric_constant[1][2], vert_dielectric_constant[1][2],
263710152Satgutier@umich.edu                        fringe_cap);
263810152Satgutier@umich.edu            //Nominal projections for commodity DRAM wordline/bitline
263910152Satgutier@umich.edu            wire_pitch[1][3] = 2 * 0.022;//micron
264010152Satgutier@umich.edu            wire_c_per_micron[1][3] = 31e-15 / (256 * 2 * 0.022);//F/micron
264110152Satgutier@umich.edu            wire_r_per_micron[1][3] = 12 / 0.022;//ohm/micron
264210152Satgutier@umich.edu
264310152Satgutier@umich.edu            //******************
264410152Satgutier@umich.edu//            wire_pitch[1][4] = 16 * g_ip.F_sz_um;
264510152Satgutier@umich.edu//            aspect_ratio = 2.2;
264610152Satgutier@umich.edu//            wire_width = wire_pitch[1][4] / 2;
264710152Satgutier@umich.edu//            wire_thickness = aspect_ratio * wire_width;
264810152Satgutier@umich.edu//            wire_spacing = wire_pitch[1][4] - wire_width;
264910152Satgutier@umich.edu//            dishing_thickness = 0.1 *  wire_thickness;
265010152Satgutier@umich.edu//            wire_r_per_micron[1][4] = wire_resistance(CU_RESISTIVITY, wire_width,
265110152Satgutier@umich.edu//            		wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
265210152Satgutier@umich.edu//            ild_thickness = 0.275;
265310152Satgutier@umich.edu//            wire_c_per_micron[1][4] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
265410152Satgutier@umich.edu//            		ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
265510152Satgutier@umich.edu//            		fringe_cap);
265610152Satgutier@umich.edu//
265710152Satgutier@umich.edu//            wire_pitch[1][5] = 24 * g_ip.F_sz_um;
265810152Satgutier@umich.edu//            aspect_ratio = 2.2;
265910152Satgutier@umich.edu//            wire_width = wire_pitch[1][5] / 2;
266010152Satgutier@umich.edu//            wire_thickness = aspect_ratio * wire_width;
266110152Satgutier@umich.edu//            wire_spacing = wire_pitch[1][5] - wire_width;
266210152Satgutier@umich.edu//            dishing_thickness = 0.1 *  wire_thickness;
266310152Satgutier@umich.edu//            wire_r_per_micron[1][5] = wire_resistance(CU_RESISTIVITY, wire_width,
266410152Satgutier@umich.edu//            		wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
266510152Satgutier@umich.edu//            ild_thickness = 0.275;
266610152Satgutier@umich.edu//            wire_c_per_micron[1][5] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
266710152Satgutier@umich.edu//            		ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
266810152Satgutier@umich.edu//            		fringe_cap);
266910152Satgutier@umich.edu//
267010152Satgutier@umich.edu//            wire_pitch[1][6] = 32 * g_ip.F_sz_um;
267110152Satgutier@umich.edu//            aspect_ratio = 2.2;
267210152Satgutier@umich.edu//            wire_width = wire_pitch[1][6] / 2;
267310152Satgutier@umich.edu//            wire_thickness = aspect_ratio * wire_width;
267410152Satgutier@umich.edu//            wire_spacing = wire_pitch[1][6] - wire_width;
267510152Satgutier@umich.edu//            dishing_thickness = 0.1 *  wire_thickness;
267610152Satgutier@umich.edu//            wire_r_per_micron[1][6] = wire_resistance(CU_RESISTIVITY, wire_width,
267710152Satgutier@umich.edu//            		wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
267810152Satgutier@umich.edu//            ild_thickness = 0.275;
267910152Satgutier@umich.edu//            wire_c_per_micron[1][6] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
268010152Satgutier@umich.edu//            		ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
268110152Satgutier@umich.edu//            		fringe_cap);
268210152Satgutier@umich.edu        }
268310152Satgutier@umich.edu
268410152Satgutier@umich.edu    else if (tech == 16)
268510152Satgutier@umich.edu        {
268610152Satgutier@umich.edu          //Aggressive projections.
268710152Satgutier@umich.edu          wire_pitch[0][0] = 2.5 * g_ip->F_sz_um;//local
268810152Satgutier@umich.edu          aspect_ratio[0][0] = 3.0;
268910152Satgutier@umich.edu          wire_width = wire_pitch[0][0] / 2;
269010152Satgutier@umich.edu          wire_thickness = aspect_ratio[0][0] * wire_width;
269110152Satgutier@umich.edu          wire_spacing = wire_pitch[0][0] - wire_width;
269210152Satgutier@umich.edu          barrier_thickness = 0;
269310152Satgutier@umich.edu          dishing_thickness = 0;
269410152Satgutier@umich.edu          alpha_scatter = 1;
269510152Satgutier@umich.edu          wire_r_per_micron[0][0] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
269610152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
269710152Satgutier@umich.edu          ild_thickness[0][0] = 0.108;
269810152Satgutier@umich.edu          miller_value[0][0] = 1.5;
269910152Satgutier@umich.edu          horiz_dielectric_constant[0][0] = 1.202;
270010152Satgutier@umich.edu          vert_dielectric_constant[0][0] = 3.9;
270110152Satgutier@umich.edu          fringe_cap = 0.115e-15;
270210152Satgutier@umich.edu          wire_c_per_micron[0][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
270310152Satgutier@umich.edu            ild_thickness[0][0], miller_value[0][0], horiz_dielectric_constant[0][0], vert_dielectric_constant[0][0],
270410152Satgutier@umich.edu            fringe_cap);
270510152Satgutier@umich.edu
270610152Satgutier@umich.edu          wire_pitch[0][1] = 4 * g_ip->F_sz_um;//semi-global
270710152Satgutier@umich.edu          aspect_ratio[0][1] = 3.0;
270810152Satgutier@umich.edu          wire_width = wire_pitch[0][1] / 2;
270910152Satgutier@umich.edu          wire_thickness = aspect_ratio[0][1] * wire_width;
271010152Satgutier@umich.edu          wire_spacing = wire_pitch[0][1] - wire_width;
271110152Satgutier@umich.edu          wire_r_per_micron[0][1] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
271210152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
271310152Satgutier@umich.edu          ild_thickness[0][1] = 0.108;
271410152Satgutier@umich.edu          miller_value[0][1] = 1.5;
271510152Satgutier@umich.edu          horiz_dielectric_constant[0][1] = 1.202;
271610152Satgutier@umich.edu          vert_dielectric_constant[0][1] = 3.9;
271710152Satgutier@umich.edu          wire_c_per_micron[0][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
271810152Satgutier@umich.edu            ild_thickness[0][1], miller_value[0][1], horiz_dielectric_constant[0][1], vert_dielectric_constant[0][1],
271910152Satgutier@umich.edu            fringe_cap);
272010152Satgutier@umich.edu
272110152Satgutier@umich.edu          wire_pitch[0][2] = 8 * g_ip->F_sz_um;//global
272210152Satgutier@umich.edu          aspect_ratio[0][2] = 3.0;
272310152Satgutier@umich.edu          wire_width = wire_pitch[0][2] / 2;
272410152Satgutier@umich.edu          wire_thickness = aspect_ratio[0][2] * wire_width;
272510152Satgutier@umich.edu          wire_spacing = wire_pitch[0][2] - wire_width;
272610152Satgutier@umich.edu          wire_r_per_micron[0][2] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
272710152Satgutier@umich.edu                          wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
272810152Satgutier@umich.edu          ild_thickness[0][2] = 0.216;
272910152Satgutier@umich.edu          miller_value[0][2] = 1.5;
273010152Satgutier@umich.edu          horiz_dielectric_constant[0][2] = 1.202;
273110152Satgutier@umich.edu          vert_dielectric_constant[0][2] = 3.9;
273210152Satgutier@umich.edu          wire_c_per_micron[0][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
273310152Satgutier@umich.edu                          ild_thickness[0][2], miller_value[0][2], horiz_dielectric_constant[0][2], vert_dielectric_constant[0][2],
273410152Satgutier@umich.edu                          fringe_cap);
273510152Satgutier@umich.edu
273610152Satgutier@umich.edu//          //*************************
273710152Satgutier@umich.edu//          wire_pitch[0][4] = 16 * g_ip.F_sz_um;//global
273810152Satgutier@umich.edu//          aspect_ratio = 3.0;
273910152Satgutier@umich.edu//          wire_width = wire_pitch[0][4] / 2;
274010152Satgutier@umich.edu//          wire_thickness = aspect_ratio * wire_width;
274110152Satgutier@umich.edu//          wire_spacing = wire_pitch[0][4] - wire_width;
274210152Satgutier@umich.edu//          wire_r_per_micron[0][4] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
274310152Satgutier@umich.edu//        		  wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
274410152Satgutier@umich.edu//          ild_thickness = 0.3;
274510152Satgutier@umich.edu//          wire_c_per_micron[0][4] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
274610152Satgutier@umich.edu//        		  ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
274710152Satgutier@umich.edu//        		  fringe_cap);
274810152Satgutier@umich.edu//
274910152Satgutier@umich.edu//          wire_pitch[0][5] = 24 * g_ip.F_sz_um;//global
275010152Satgutier@umich.edu//          aspect_ratio = 3.0;
275110152Satgutier@umich.edu//          wire_width = wire_pitch[0][5] / 2;
275210152Satgutier@umich.edu//          wire_thickness = aspect_ratio * wire_width;
275310152Satgutier@umich.edu//          wire_spacing = wire_pitch[0][5] - wire_width;
275410152Satgutier@umich.edu//          wire_r_per_micron[0][5] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
275510152Satgutier@umich.edu//        		  wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
275610152Satgutier@umich.edu//          ild_thickness = 0.3;
275710152Satgutier@umich.edu//          wire_c_per_micron[0][5] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
275810152Satgutier@umich.edu//        		  ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
275910152Satgutier@umich.edu//        		  fringe_cap);
276010152Satgutier@umich.edu//
276110152Satgutier@umich.edu//          wire_pitch[0][6] = 32 * g_ip.F_sz_um;//global
276210152Satgutier@umich.edu//          aspect_ratio = 3.0;
276310152Satgutier@umich.edu//          wire_width = wire_pitch[0][6] / 2;
276410152Satgutier@umich.edu//          wire_thickness = aspect_ratio * wire_width;
276510152Satgutier@umich.edu//          wire_spacing = wire_pitch[0][6] - wire_width;
276610152Satgutier@umich.edu//          wire_r_per_micron[0][6] = wire_resistance(BULK_CU_RESISTIVITY, wire_width,
276710152Satgutier@umich.edu//        		  wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
276810152Satgutier@umich.edu//          ild_thickness = 0.3;
276910152Satgutier@umich.edu//          wire_c_per_micron[0][6] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
277010152Satgutier@umich.edu//        		  ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
277110152Satgutier@umich.edu//        		  fringe_cap);
277210152Satgutier@umich.edu          //*************************
277310152Satgutier@umich.edu
277410152Satgutier@umich.edu          //Conservative projections
277510152Satgutier@umich.edu          wire_pitch[1][0] = 2.5 * g_ip->F_sz_um;
277610152Satgutier@umich.edu          aspect_ratio[1][0] = 2.0;
277710152Satgutier@umich.edu          wire_width = wire_pitch[1][0] / 2;
277810152Satgutier@umich.edu          wire_thickness = aspect_ratio[1][0] * wire_width;
277910152Satgutier@umich.edu          wire_spacing = wire_pitch[1][0] - wire_width;
278010152Satgutier@umich.edu          barrier_thickness = 0.002;
278110152Satgutier@umich.edu          dishing_thickness = 0;
278210152Satgutier@umich.edu          alpha_scatter = 1.05;
278310152Satgutier@umich.edu          wire_r_per_micron[1][0] = wire_resistance(CU_RESISTIVITY, wire_width,
278410152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
278510152Satgutier@umich.edu          ild_thickness[1][0] = 0.108;
278610152Satgutier@umich.edu          miller_value[1][0] = 1.5;
278710152Satgutier@umich.edu          horiz_dielectric_constant[1][0] = 1.998;
278810152Satgutier@umich.edu          vert_dielectric_constant[1][0] = 3.9;
278910152Satgutier@umich.edu          fringe_cap = 0.115e-15;
279010152Satgutier@umich.edu          wire_c_per_micron[1][0] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
279110152Satgutier@umich.edu            ild_thickness[1][0], miller_value[1][0], horiz_dielectric_constant[1][0], vert_dielectric_constant[1][0],
279210152Satgutier@umich.edu            fringe_cap);
279310152Satgutier@umich.edu
279410152Satgutier@umich.edu          wire_pitch[1][1] = 4 * g_ip->F_sz_um;
279510152Satgutier@umich.edu          wire_width = wire_pitch[1][1] / 2;
279610152Satgutier@umich.edu          aspect_ratio[1][1] = 2.0;
279710152Satgutier@umich.edu          wire_thickness = aspect_ratio[1][1] * wire_width;
279810152Satgutier@umich.edu          wire_spacing = wire_pitch[1][1] - wire_width;
279910152Satgutier@umich.edu          wire_r_per_micron[1][1] = wire_resistance(CU_RESISTIVITY, wire_width,
280010152Satgutier@umich.edu            wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
280110152Satgutier@umich.edu          ild_thickness[1][1] = 0.108;
280210152Satgutier@umich.edu          miller_value[1][1] = 1.5;
280310152Satgutier@umich.edu          horiz_dielectric_constant[1][1] = 1.998;
280410152Satgutier@umich.edu          vert_dielectric_constant[1][1] = 3.9;
280510152Satgutier@umich.edu            wire_c_per_micron[1][1] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
280610152Satgutier@umich.edu            ild_thickness[1][1], miller_value[1][1], horiz_dielectric_constant[1][1], vert_dielectric_constant[1][1],
280710152Satgutier@umich.edu            fringe_cap);
280810152Satgutier@umich.edu
280910152Satgutier@umich.edu            wire_pitch[1][2] = 8 * g_ip->F_sz_um;
281010152Satgutier@umich.edu            aspect_ratio[1][2] = 2.2;
281110152Satgutier@umich.edu            wire_width = wire_pitch[1][2] / 2;
281210152Satgutier@umich.edu            wire_thickness = aspect_ratio[1][2] * wire_width;
281310152Satgutier@umich.edu            wire_spacing = wire_pitch[1][2] - wire_width;
281410152Satgutier@umich.edu            dishing_thickness = 0.1 *  wire_thickness;
281510152Satgutier@umich.edu            wire_r_per_micron[1][2] = wire_resistance(CU_RESISTIVITY, wire_width,
281610152Satgutier@umich.edu                        wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
281710152Satgutier@umich.edu            ild_thickness[1][2] = 0.198;
281810152Satgutier@umich.edu            miller_value[1][2] = 1.5;
281910152Satgutier@umich.edu            horiz_dielectric_constant[1][2] = 1.998;
282010152Satgutier@umich.edu            vert_dielectric_constant[1][2] = 3.9;
282110152Satgutier@umich.edu            wire_c_per_micron[1][2] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
282210152Satgutier@umich.edu                        ild_thickness[1][2], miller_value[1][2], horiz_dielectric_constant[1][2], vert_dielectric_constant[1][2],
282310152Satgutier@umich.edu                        fringe_cap);
282410152Satgutier@umich.edu            //Nominal projections for commodity DRAM wordline/bitline
282510152Satgutier@umich.edu            wire_pitch[1][3] = 2 * 0.016;//micron
282610152Satgutier@umich.edu            wire_c_per_micron[1][3] = 31e-15 / (256 * 2 * 0.016);//F/micron
282710152Satgutier@umich.edu            wire_r_per_micron[1][3] = 12 / 0.016;//ohm/micron
282810152Satgutier@umich.edu
282910152Satgutier@umich.edu            //******************
283010152Satgutier@umich.edu//            wire_pitch[1][4] = 16 * g_ip.F_sz_um;
283110152Satgutier@umich.edu//            aspect_ratio = 2.2;
283210152Satgutier@umich.edu//            wire_width = wire_pitch[1][4] / 2;
283310152Satgutier@umich.edu//            wire_thickness = aspect_ratio * wire_width;
283410152Satgutier@umich.edu//            wire_spacing = wire_pitch[1][4] - wire_width;
283510152Satgutier@umich.edu//            dishing_thickness = 0.1 *  wire_thickness;
283610152Satgutier@umich.edu//            wire_r_per_micron[1][4] = wire_resistance(CU_RESISTIVITY, wire_width,
283710152Satgutier@umich.edu//            		wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
283810152Satgutier@umich.edu//            ild_thickness = 0.275;
283910152Satgutier@umich.edu//            wire_c_per_micron[1][4] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
284010152Satgutier@umich.edu//            		ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
284110152Satgutier@umich.edu//            		fringe_cap);
284210152Satgutier@umich.edu//
284310152Satgutier@umich.edu//            wire_pitch[1][5] = 24 * g_ip.F_sz_um;
284410152Satgutier@umich.edu//            aspect_ratio = 2.2;
284510152Satgutier@umich.edu//            wire_width = wire_pitch[1][5] / 2;
284610152Satgutier@umich.edu//            wire_thickness = aspect_ratio * wire_width;
284710152Satgutier@umich.edu//            wire_spacing = wire_pitch[1][5] - wire_width;
284810152Satgutier@umich.edu//            dishing_thickness = 0.1 *  wire_thickness;
284910152Satgutier@umich.edu//            wire_r_per_micron[1][5] = wire_resistance(CU_RESISTIVITY, wire_width,
285010152Satgutier@umich.edu//            		wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
285110152Satgutier@umich.edu//            ild_thickness = 0.275;
285210152Satgutier@umich.edu//            wire_c_per_micron[1][5] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
285310152Satgutier@umich.edu//            		ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
285410152Satgutier@umich.edu//            		fringe_cap);
285510152Satgutier@umich.edu//
285610152Satgutier@umich.edu//            wire_pitch[1][6] = 32 * g_ip.F_sz_um;
285710152Satgutier@umich.edu//            aspect_ratio = 2.2;
285810152Satgutier@umich.edu//            wire_width = wire_pitch[1][6] / 2;
285910152Satgutier@umich.edu//            wire_thickness = aspect_ratio * wire_width;
286010152Satgutier@umich.edu//            wire_spacing = wire_pitch[1][6] - wire_width;
286110152Satgutier@umich.edu//            dishing_thickness = 0.1 *  wire_thickness;
286210152Satgutier@umich.edu//            wire_r_per_micron[1][6] = wire_resistance(CU_RESISTIVITY, wire_width,
286310152Satgutier@umich.edu//            		wire_thickness, barrier_thickness, dishing_thickness, alpha_scatter);
286410152Satgutier@umich.edu//            ild_thickness = 0.275;
286510152Satgutier@umich.edu//            wire_c_per_micron[1][6] = wire_capacitance(wire_width, wire_thickness, wire_spacing,
286610152Satgutier@umich.edu//            		ild_thickness, miller_value, horiz_dielectric_constant, vert_dielectric_constant,
286710152Satgutier@umich.edu//            		fringe_cap);
286810152Satgutier@umich.edu        }
286910152Satgutier@umich.edu    g_tp.wire_local.pitch    += curr_alpha * wire_pitch[g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287010152Satgutier@umich.edu    g_tp.wire_local.R_per_um += curr_alpha * wire_r_per_micron[g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287110152Satgutier@umich.edu    g_tp.wire_local.C_per_um += curr_alpha * wire_c_per_micron[g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287210152Satgutier@umich.edu    g_tp.wire_local.aspect_ratio  += curr_alpha * aspect_ratio[g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287310152Satgutier@umich.edu    g_tp.wire_local.ild_thickness += curr_alpha * ild_thickness[g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287410152Satgutier@umich.edu    g_tp.wire_local.miller_value   += curr_alpha * miller_value[g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287510152Satgutier@umich.edu    g_tp.wire_local.horiz_dielectric_constant += curr_alpha* horiz_dielectric_constant[g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287610152Satgutier@umich.edu    g_tp.wire_local.vert_dielectric_constant  += curr_alpha* vert_dielectric_constant [g_ip->ic_proj_type][(ram_cell_tech_type == comm_dram)?3:0];
287710152Satgutier@umich.edu
287810152Satgutier@umich.edu    g_tp.wire_inside_mat.pitch     += curr_alpha * wire_pitch[g_ip->ic_proj_type][g_ip->wire_is_mat_type];
287910152Satgutier@umich.edu    g_tp.wire_inside_mat.R_per_um  += curr_alpha* wire_r_per_micron[g_ip->ic_proj_type][g_ip->wire_is_mat_type];
288010152Satgutier@umich.edu    g_tp.wire_inside_mat.C_per_um  += curr_alpha* wire_c_per_micron[g_ip->ic_proj_type][g_ip->wire_is_mat_type];
288110152Satgutier@umich.edu    g_tp.wire_inside_mat.aspect_ratio  += curr_alpha * aspect_ratio[g_ip->ic_proj_type][g_ip->wire_is_mat_type];
288210152Satgutier@umich.edu    g_tp.wire_inside_mat.ild_thickness += curr_alpha * ild_thickness[g_ip->ic_proj_type][g_ip->wire_is_mat_type];
288310152Satgutier@umich.edu    g_tp.wire_inside_mat.miller_value   += curr_alpha * miller_value[g_ip->ic_proj_type][g_ip->wire_is_mat_type];
288410152Satgutier@umich.edu    g_tp.wire_inside_mat.horiz_dielectric_constant += curr_alpha* horiz_dielectric_constant[g_ip->ic_proj_type][g_ip->wire_is_mat_type];
288510152Satgutier@umich.edu    g_tp.wire_inside_mat.vert_dielectric_constant  += curr_alpha* vert_dielectric_constant [g_ip->ic_proj_type][g_ip->wire_is_mat_type];
288610152Satgutier@umich.edu
288710152Satgutier@umich.edu    g_tp.wire_outside_mat.pitch    += curr_alpha * wire_pitch[g_ip->ic_proj_type][g_ip->wire_os_mat_type];
288810152Satgutier@umich.edu    g_tp.wire_outside_mat.R_per_um += curr_alpha*wire_r_per_micron[g_ip->ic_proj_type][g_ip->wire_os_mat_type];
288910152Satgutier@umich.edu    g_tp.wire_outside_mat.C_per_um += curr_alpha*wire_c_per_micron[g_ip->ic_proj_type][g_ip->wire_os_mat_type];
289010152Satgutier@umich.edu    g_tp.wire_outside_mat.aspect_ratio  += curr_alpha * aspect_ratio[g_ip->ic_proj_type][g_ip->wire_os_mat_type];
289110152Satgutier@umich.edu    g_tp.wire_outside_mat.ild_thickness += curr_alpha * ild_thickness[g_ip->ic_proj_type][g_ip->wire_os_mat_type];
289210152Satgutier@umich.edu    g_tp.wire_outside_mat.miller_value   += curr_alpha * miller_value[g_ip->ic_proj_type][g_ip->wire_os_mat_type];
289310152Satgutier@umich.edu    g_tp.wire_outside_mat.horiz_dielectric_constant += curr_alpha* horiz_dielectric_constant[g_ip->ic_proj_type][g_ip->wire_os_mat_type];
289410152Satgutier@umich.edu    g_tp.wire_outside_mat.vert_dielectric_constant  += curr_alpha* vert_dielectric_constant [g_ip->ic_proj_type][g_ip->wire_os_mat_type];
289510152Satgutier@umich.edu
289610152Satgutier@umich.edu    g_tp.unit_len_wire_del = g_tp.wire_inside_mat.R_per_um * g_tp.wire_inside_mat.C_per_um / 2;
289710152Satgutier@umich.edu
289810152Satgutier@umich.edu    g_tp.sense_delay               += curr_alpha *SENSE_AMP_D;
289910152Satgutier@umich.edu    g_tp.sense_dy_power            += curr_alpha *SENSE_AMP_P;
290010152Satgutier@umich.edu//    g_tp.horiz_dielectric_constant += horiz_dielectric_constant;
290110152Satgutier@umich.edu//    g_tp.vert_dielectric_constant  += vert_dielectric_constant;
290210152Satgutier@umich.edu//    g_tp.aspect_ratio              += aspect_ratio;
290310152Satgutier@umich.edu//    g_tp.miller_value              += miller_value;
290410152Satgutier@umich.edu//    g_tp.ild_thickness             += ild_thickness;
290510152Satgutier@umich.edu
290610152Satgutier@umich.edu  }
290710152Satgutier@umich.edu  g_tp.fringe_cap = fringe_cap;
290810152Satgutier@umich.edu
290910152Satgutier@umich.edu  double rd = tr_R_on(g_tp.min_w_nmos_, NCH, 1);
291010152Satgutier@umich.edu  double p_to_n_sizing_r = pmos_to_nmos_sz_ratio();
291110152Satgutier@umich.edu  double c_load = gate_C(g_tp.min_w_nmos_ * (1 + p_to_n_sizing_r), 0.0);
291210152Satgutier@umich.edu  double tf = rd * c_load;
291310152Satgutier@umich.edu  g_tp.kinv = horowitz(0, tf, 0.5, 0.5, RISE);
291410152Satgutier@umich.edu  double KLOAD = 1;
291510152Satgutier@umich.edu  c_load = KLOAD * (drain_C_(g_tp.min_w_nmos_, NCH, 1, 1, g_tp.cell_h_def) +
291610152Satgutier@umich.edu                    drain_C_(g_tp.min_w_nmos_ * p_to_n_sizing_r, PCH, 1, 1, g_tp.cell_h_def) +
291710152Satgutier@umich.edu                    gate_C(g_tp.min_w_nmos_ * 4 * (1 + p_to_n_sizing_r), 0.0));
291810152Satgutier@umich.edu  tf = rd * c_load;
291910152Satgutier@umich.edu  g_tp.FO4 = horowitz(0, tf, 0.5, 0.5, RISE);
292010152Satgutier@umich.edu}
292110152Satgutier@umich.edu
2922