📄 oalefoutsite.cpp
字号:
// *****************************************************************************// *****************************************************************************// LefOutSite.cpp//// This file contains the member functions for the LefOutSite class.//// *****************************************************************************// Except as specified in the OpenAccess terms of use of Cadence or Silicon// Integration Initiative, this material may not be copied, modified,// re-published, uploaded, executed, or distributed in any way, in any medium,// in whole or in part, without prior written permission from Cadence.//// Copyright 2002-2005 Cadence Design Systems, Inc.// All Rights Reserved.//// $Author: mhahn $// $Revision: 1.20 $// $Date: 2005/01/04 03:26:27 $// $State: Exp $// *****************************************************************************// *****************************************************************************#include "oaLefDef.h"BEGIN_LEFDEF_NAMESPACE// *****************************************************************************// LefOutSite::LefOutSite()// LefOutSite::~LefOutSite()//// This is the default constructor for the LefOutSite class// *****************************************************************************LefOutSite::LefOutSite(LefOut &lefOutIn): lefOut(lefOutIn){ lefOutIn.lefOutSite = this;}LefOutSite::~LefOutSite(){}// *****************************************************************************// LefOutSite::write()//// This function outputs all siteDef information for this siteDef.// *****************************************************************************voidLefOutSite::write(oaSiteDef *siteDefIn){ siteDef = siteDefIn; oaString siteName; siteDef->getName(siteName); lefOut.output("SITE %s\n", (const char*) siteName); lefOut.incIndent(); writeClass(); if (siteDef->getType() == oacArraySiteDefType) { writePattern(); } writeSymmetry(); writeSize(); lefOut.decIndent(); lefOut.output("END %s\n\n", (const char*) siteName);}// *****************************************************************************// LefOutSite::writeClass()//// This function outputs the class for this siteDef.// *****************************************************************************voidLefOutSite::writeClass(){ oaString classStr = siteDef->getSiteDefType().getName(); classStr.toUpper(); lefOut.output("CLASS %s ;\n", (const char*) classStr);}// *****************************************************************************// LefOutSite::writeSymmetry()//// This function outputs the symmetry for this siteDef// *****************************************************************************voidLefOutSite::writeSymmetry(){ oaString symmetry; if (siteDef->isSymmetricInX()) { symmetry += " X"; } if (siteDef->isSymmetricInY()) { symmetry += " Y"; } if (siteDef->isSymmetricInRot()) { symmetry += " R90"; } if (!symmetry.isEmpty()) { lefOut.output("SYMMETRY%s ;\n", (const char*) symmetry); }}// *****************************************************************************// LefOutSite::writeSize()//// This function outputs the size for this siteDef// *****************************************************************************voidLefOutSite::writeSize(){ lefOut.output("SIZE %.11g BY %.11g ;\n", lefOut.dbuToUU(oaInt4(siteDef->getWidth())), lefOut.dbuToUU(oaInt4(siteDef->getHeight())));}// *****************************************************************************// LefOutSite::writePattern()//// This function outputs the size for this siteDef// *****************************************************************************voidLefOutSite::writePattern(){ oaSitePattern pattern; ((oaArraySiteDef*) siteDef)->getSitePattern(pattern); lefOut.output("ROWPATTERN"); for (oaUInt4 i = 0; i < pattern.getNumElements(); i++) { oaString os; switch (pattern[i].transform().orient()) { case oacR0: os = "N"; break; case oacR90: os = "W"; break; case oacR180: os = "S"; break; case oacR270: os = "E"; break; case oacMY: os = "FN"; break; case oacMYR90: os = "FE"; break; case oacMX: os = "FS"; break; case oacMXR90: os = "FW"; } lefOut.outNoIndent(" %s %s", (const char*) pattern[i].siteName(), (const char*) os); } lefOut.output(" ;\n");}END_LEFDEF_NAMESPACE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -