Lines Matching defs:cell_

37     void CellMacros::addNor2(StdCell* cell_, const String& name_, 
43 cell_->createLoad(name_ + "_CgA1");
44 cell_->createLoad(name_ + "_CgA2");
45 cell_->createLoad(name_ + "_CdZN");
46 cell_->createDriver(name_ + "_RonZN", sizable_);
49 ElectricalLoad* gate_a1_load = cell_->getLoad(name_ + "_CgA1");
50 ElectricalLoad* gate_a2_load = cell_->getLoad(name_ + "_CgA2");
51 ElectricalLoad* drain_load = cell_->getLoad(name_ + "_CdZN");
52 ElectricalDriver* zn_drive = cell_->getDriver(name_ + "_RonZN");
53 ElectricalNet* a1_net = cell_->getNet(a1_net_);
54 ElectricalNet* a2_net = cell_->getNet(a2_net_);
55 ElectricalNet* zn_net = cell_->getNet(zn_net_);
68 void CellMacros::updateNor2(StdCell* cell_, const String& name_, double normalized_size_)
70 ASSERT(normalized_size_ >= 0.0, "[Error] " + cell_->getInstanceName() +
74 const TechModel* tech = cell_->getTechModel();
88 cell_->getGenProperties()->set(name_ + "_GatePitches", 2 * folds);
91 double nmos_width = std::max(calculateNmosWidth(cell_, 1, 2, 1) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
92 double pmos_width = std::max(calculatePmosWidth(cell_, 1, 2, 2) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
99 cell_->getGenProperties()->set(name_ + "_LeakagePower_00", leakage_power_00);
100 cell_->getGenProperties()->set(name_ + "_LeakagePower_01", leakage_power_01);
101 cell_->getGenProperties()->set(name_ + "_LeakagePower_10", leakage_power_10);
102 cell_->getGenProperties()->set(name_ + "_LeakagePower_11", leakage_power_11);
111 double cell_height = cell_->getTotalHeight();
118 cell_->getLoad(name_ + "_CgA1")->setLoadCap(c_g);
119 cell_->getLoad(name_ + "_CgA2")->setLoadCap(c_g);
120 cell_->getLoad(name_ + "_CdZN")->setLoadCap(c_d + wire_cap);
121 cell_->getDriver(name_ + "_RonZN")->setOutputRes(r_on);
127 cell_->getGenProperties()->set(name_ + "_ZN_Flip", zn_flip_energy);
128 cell_->getGenProperties()->set(name_ + "_A1_Flip", a1_flip_energy);
129 cell_->getGenProperties()->set(name_ + "_A2_Flip", a2_flip_energy);
137 void CellMacros::addNand2(StdCell* cell_, const String& name_,
143 cell_->createLoad(name_ + "_CgA1");
144 cell_->createLoad(name_ + "_CgA2");
145 cell_->createLoad(name_ + "_CdZN");
146 cell_->createDriver(name_ + "_RonZN", sizable_);
149 ElectricalLoad* gate_a1_load = cell_->getLoad(name_ + "_CgA1");
150 ElectricalLoad* gate_a2_load = cell_->getLoad(name_ + "_CgA2");
151 ElectricalLoad* drain_load = cell_->getLoad(name_ + "_CdZN");
152 ElectricalDriver* zn_drive = cell_->getDriver(name_ + "_RonZN");
153 ElectricalNet* a1_net = cell_->getNet(a1_net_);
154 ElectricalNet* a2_net = cell_->getNet(a2_net_);
155 ElectricalNet* zn_net = cell_->getNet(zn_net_);
168 void CellMacros::updateNand2(StdCell* cell_, const String& name_, double normalized_size_)
170 ASSERT(normalized_size_ >= 0.0, "[Error] " + cell_->getInstanceName() +
174 const TechModel* tech = cell_->getTechModel();
188 cell_->getGenProperties()->set(name_ + "_GatePitches", 2 * folds);
191 double nmos_width = std::max(calculateNmosWidth(cell_, 2, 1, 2) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
192 double pmos_width = std::max(calculatePmosWidth(cell_, 2, 1, 1) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
199 cell_->getGenProperties()->set(name_ + "_LeakagePower_00", leakage_power_00);
200 cell_->getGenProperties()->set(name_ + "_LeakagePower_01", leakage_power_01);
201 cell_->getGenProperties()->set(name_ + "_LeakagePower_10", leakage_power_10);
202 cell_->getGenProperties()->set(name_ + "_LeakagePower_11", leakage_power_11);
213 double cell_height = cell_->getTotalHeight();
220 cell_->getLoad(name_ + "_CgA1")->setLoadCap(c_g);
221 cell_->getLoad(name_ + "_CgA2")->setLoadCap(c_g);
222 cell_->getLoad(name_ + "_CdZN")->setLoadCap(c_d + wire_cap);
223 cell_->getDriver(name_ + "_RonZN")->setOutputRes(r_on);
229 cell_->getGenProperties()->set(name_ + "_ZN_Flip", zn_flip_energy);
230 cell_->getGenProperties()->set(name_ + "_A1_Flip", a1_flip_energy);
231 cell_->getGenProperties()->set(name_ + "_A2_Flip", a2_flip_energy);
239 void CellMacros::addInverter(StdCell* cell_, const String& name_,
245 cell_->createLoad(name_ + "_CgA");
246 cell_->createLoad(name_ + "_CdZN");
247 cell_->createDriver(name_ + "_RonZN", sizable_);
250 ElectricalLoad* gate_load = cell_->getLoad(name_ + "_CgA");
251 ElectricalLoad* drain_load = cell_->getLoad(name_ + "_CdZN");
252 ElectricalDriver* out_drive = cell_->getDriver(name_ + "_RonZN");
253 ElectricalNet* a_net = cell_->getNet(a_net_);
254 ElectricalNet* zn_net = cell_->getNet(zn_net_);
266 void CellMacros::updateInverter(StdCell* cell_, const String& name_, double normalized_size_)
268 ASSERT(normalized_size_ >= 0.0, "[Error] " + cell_->getInstanceName() +
272 const TechModel* tech = cell_->getTechModel();
285 cell_->getGenProperties()->set(name_ + "_GatePitches", folds);
288 double nmos_width = std::max(calculateNmosWidth(cell_, 1, 1, 1) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
289 double pmos_width = std::max(calculatePmosWidth(cell_, 1, 1, 1) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
294 cell_->getGenProperties()->set(name_ + "_LeakagePower_0", leakage_power_0);
295 cell_->getGenProperties()->set(name_ + "_LeakagePower_1", leakage_power_1);
303 double cell_height = cell_->getTotalHeight();
310 cell_->getLoad(name_ + "_CgA")->setLoadCap(c_g);
311 cell_->getLoad(name_ + "_CdZN")->setLoadCap(c_d + wire_cap);
312 cell_->getDriver(name_ + "_RonZN")->setOutputRes(r_on);
318 cell_->getGenProperties()->set(name_ + "_ZN_Flip", zn_flip_energy);
319 cell_->getGenProperties()->set(name_ + "_A_Flip", a_flip_energy);
329 void CellMacros::addTristate(StdCell* cell_, const String& name_,
334 cell_->createLoad(name_ + "_CgA");
335 cell_->createLoad(name_ + "_CgOE");
336 cell_->createLoad(name_ + "_CgOEN");
337 cell_->createLoad(name_ + "_CdZN");
338 cell_->createDriver(name_ + "_RonZN", sizable_);
341 ElectricalLoad* gate_a_load = cell_->getLoad(name_ + "_CgA");
342 ElectricalLoad* gate_oe_load = cell_->getLoad(name_ + "_CgOE");
343 ElectricalLoad* gate_oen_load = cell_->getLoad(name_ + "_CgOEN");
344 ElectricalLoad* drain_load = cell_->getLoad(name_ + "_CdZN");
345 ElectricalDriver* out_drive = cell_->getDriver(name_ + "_RonZN");
346 ElectricalNet* a_net = cell_->getNet(a_net_);
347 ElectricalNet* oe_net = cell_->getNet(oe_net_);
348 ElectricalNet* oen_net = cell_->getNet(oen_net_);
349 ElectricalNet* zn_net = cell_->getNet(zn_net_);
365 void CellMacros::updateTristate(StdCell* cell_, const String& name_, double normalized_size_)
367 ASSERT(normalized_size_ >= 0.0, "[Error] " + cell_->getInstanceName() +
371 const TechModel* tech = cell_->getTechModel();
386 cell_->getGenProperties()->set(name_ + "_GatePitches", 2 * folds);
389 double nmos_width = std::max(calculateNmosWidth(cell_, 2, 2, 2) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
390 double pmos_width = std::max(calculatePmosWidth(cell_, 2, 2, 2) * normalized_size_ / folds, (double) tech->get("Gate->MinWidth"));
403 cell_->getGenProperties()->set(name_ + "_LeakagePower_010_0", leakage_power_010_0);
404 cell_->getGenProperties()->set(name_ + "_LeakagePower_010_1", leakage_power_010_1);
405 cell_->getGenProperties()->set(name_ + "_LeakagePower_011_0", leakage_power_011_0);
406 cell_->getGenProperties()->set(name_ + "_LeakagePower_011_1", leakage_power_011_1);
407 cell_->getGenProperties()->set(name_ + "_LeakagePower_100_1", leakage_power_100_1);
408 cell_->getGenProperties()->set(name_ + "_LeakagePower_101_0", leakage_power_101_0);
422 double cell_height = cell_->getTotalHeight();
429 cell_->getLoad(name_ + "_CgA")->setLoadCap(c_g_a);
430 cell_->getLoad(name_ + "_CgOE")->setLoadCap(c_g_oe);
431 cell_->getLoad(name_ + "_CgOEN")->setLoadCap(c_g_oen);
432 cell_->getLoad(name_ + "_CdZN")->setLoadCap(c_d + wire_cap);
433 cell_->getDriver(name_ + "_RonZN")->setOutputRes(r_on);
440 cell_->getGenProperties()->set(name_ + "_ZN_Flip", zn_flip_energy);
441 cell_->getGenProperties()->set(name_ + "_A_Flip", a_flip_energy);
442 cell_->getGenProperties()->set(name_ + "_OE_Flip", oe_flip_energy);
443 cell_->getGenProperties()->set(name_ + "_OEN_Flip", oen_flip_energy);
453 double CellMacros::calculateNmosWidth(const StdCell* cell_, unsigned int max_stacked_nmos_, unsigned int max_stacked_pmos_, unsigned int current_stacked_nmos_)
456 const TechModel* tech = cell_->getTechModel();
465 double pn_ratio = cell_->getPToNRatio();
466 double active_height = cell_->getActiveHeight();
475 double CellMacros::calculatePmosWidth(const StdCell* cell_, unsigned int max_stacked_nmos_, unsigned int max_stacked_pmos_, unsigned int current_stacked_pmos_)
478 const TechModel* tech = cell_->getTechModel();
487 double pn_ratio = cell_->getPToNRatio();
488 double active_height = cell_->getActiveHeight();