⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oalefin.cpp

📁 openaccess读def,lef文件所用的源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	    setConstraint(getDefaultRules(), oacValidRoutingLayers, v);	}    }    if (viaDefArray.getNumElements()) {	v = getConstraint(getDefaultRules(), oacValidRoutingVias);		if (v && v->getType() == oacViaDefArrayValueType) {	    oaViaDefArray   array;	    ((oaViaDefArrayValue*) v)->get(array);	    if (viaDefArray != array) {		((oaViaDefArrayValue*) v)->set(viaDefArray);	    }	} else {	    v = oaViaDefArrayValue::create(tech(), viaDefArray);	    setConstraint(getDefaultRules(), oacValidRoutingVias, v);	}    }}// *****************************************************************************// LefIn::postProcessLayers()// // This	function does various postProcessing operations	on layers.// At the moment:// Remove any remaining	minimumcut rules from metal layers.// *****************************************************************************voidLefIn::postProcessLayers(){    oaIter<oaLayer> layerIter(tech()->getLayers());    oaLayer	    *layer;        while (layer = layerIter.getNext())	{	if (layer->getType() !=	oacPhysicalLayerType) {	    continue;	}	oaPhysicalLayer	*pLayer	= (oaPhysicalLayer*) layer;	if (pLayer->getMaterial() == oacMetalMaterial) {	    // Destroy any remaining NumCut rules on metal layers	    oaConstraintDef *def = oaLayerConstraintDef::get(oacMinNumCut);	    oaConstraint  *c = oaLayerConstraint::find(getFoundryRules(), 						       layer->getNumber(),						       (oaLayerConstraintDef*) def);	    if (c) {		c->destroy();	    }		    def = oaLayerConstraintDef::get(oacMinProtrusionNumCut);	    c = oaLayerConstraint::find(getFoundryRules(), layer->getNumber(),					(oaLayerConstraintDef*) def);	    	    if (c) {		c->destroy();	    }	}    }}// *****************************************************************************// LefIn::close()// // This	function saves and closes the technology database and the file.// *****************************************************************************voidLefIn::close(){    LefDefIn::close();}// *****************************************************************************// LefIn::getLefInGeomPin()// LefIn::getLefInGeomObs()// LefIn::getLefInLayer()// LefIn::getLefInMacro()// LefIn::getLefInPin()// LefIn::getLefInSite()// LefIn::getLefInVia()// LefIn::getLefInViaRule()//// These functions return the helper classes. If they do not exist, they are// created here.// *****************************************************************************LefInGeomPin*LefIn::getLefInGeomPin(){    if (!lefInGeomPin) {	lefInGeomPin = new LefInGeomPin(*this);    }    return lefInGeomPin;}LefInGeomObs*LefIn::getLefInGeomObs(){    if (!lefInGeomObs) {	lefInGeomObs = new LefInGeomObs(*this);    }    return lefInGeomObs;}LefInLayer*LefIn::getLefInLayer(){    if (!lefInLayer) {	lefInLayer = new LefInLayer(*this);    }    return lefInLayer;}LefInMacro*LefIn::getLefInMacro(){    if (!lefInMacro) {	lefInMacro = new LefInMacro(*this);    }    return lefInMacro;}LefInNDR*LefIn::getLefInNDR(){    if (!lefInNDR) {	lefInNDR = new LefInNDR(*this);    }    return lefInNDR;}LefInPin*LefIn::getLefInPin(){    if (!lefInPin) {	lefInPin = new LefInPin(*this);    }    return lefInPin;}LefInSite*LefIn::getLefInSite(){    if (!lefInSite) {	lefInSite = new LefInSite(*this);    }    return lefInSite;}LefInVia*LefIn::getLefInVia(){    if (!lefInVia) {	lefInVia = new LefInVia(*this);    }    return lefInVia;}LefInViaRule*LefIn::getLefInViaRule(){    if (!lefInViaRule) {	lefInViaRule = new LefInViaRule(*this);    }    return lefInViaRule;}// *****************************************************************************// LefIn::<...>CB// // These static	functions are required since the CAT parser only// accepts pointers to functions, and no pointers to member functions.// These functions call	their virtual equivalent on the	translator class.// *****************************************************************************intLefIn::cbVersion(lefrCallbackType_e	cbType,		   double		data,		   lefiUserData		userData){    try	{	((LefIn*) userData)->parseVersion(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbCaseSensitive(lefrCallbackType_e cbType,			 int		    data,			 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseCaseSensitive(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbWireExtension(lefrCallbackType_e cbType,			 const char	    *data,			 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseWireExtension(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbBusBitChars(lefrCallbackType_e	  cbType,		       const char	    *data,		       lefiUserData	    userData){    try	{	((LefIn*) userData)->parseBusBitChars(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbDividerChar(lefrCallbackType_e	  cbType,		       const char	    *data,		       lefiUserData	    userData){    try	{	((LefIn*) userData)->parseDividerChar(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbUnits(lefrCallbackType_e cbType,		 lefiUnits	    *data,		 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseUnits(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbManufacturingGrid(lefrCallbackType_e	cbType,			     double		data,			     lefiUserData	userData){    try	{	((LefIn*) userData)->parseManufacturingGrid(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbUseMinSpacing(lefrCallbackType_e cbType,			 lefiUseMinSpacing  *data,			 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseUseMinSpacing(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbClearanceMeasure(lefrCallbackType_e	cbType,			    const char		*data,			    lefiUserData	userData){    try	{	((LefIn*) userData)->parseClearanceMeasure(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbProp(lefrCallbackType_e  cbType,		lefiProp	    *data,		lefiUserData	    userData){    try	{	((LefIn*) userData)->parseProp(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbAntennaInput(lefrCallbackType_e  cbType,			double		    data,			lefiUserData	    userData){    try	{	((LefIn*) userData)->parseAntennaInput(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbAntennaOutput(lefrCallbackType_e cbType,			 double		    data,			 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseAntennaOutput(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbAntennaInout(lefrCallbackType_e  cbType,			double		    data,			lefiUserData	    userData){    try	{	((LefIn*) userData)->parseAntennaInout(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbInputAntenna(lefrCallbackType_e  cbType,			double		    data,			lefiUserData	    userData){    try	{	((LefIn*) userData)->parseInputAntenna(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbOutputAntenna(lefrCallbackType_e cbType,			 double		    data,			 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseOutputAntenna(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbInoutAntenna(lefrCallbackType_e  cbType,			double		    data,			lefiUserData	    userData){    try	{	((LefIn*) userData)->parseInoutAntenna(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbLayer(lefrCallbackType_e cbType,		 lefiLayer	    *data,		 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseLayer(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbMaxViaStack(lefrCallbackType_e	  cbType,		       lefiMaxStackVia	    *data,		       lefiUserData	    userData){    try	{	((LefIn*) userData)->parseMaxViaStack(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbVia(lefrCallbackType_e	  cbType,	       lefiVia		    *data,	       lefiUserData	    userData){    try	{	((LefIn*) userData)->parseVia(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbViaRule(lefrCallbackType_e	cbType,		   lefiViaRule		*data,		   lefiUserData		userData){    try	{	((LefIn*) userData)->parseViaRule(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbSpacing(lefrCallbackType_e	cbType,		   lefiSpacing		*data,		   lefiUserData		userData){    try	{	((LefIn*) userData)->parseSpacing(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbNonDefaultRule(lefrCallbackType_e	cbType,			  lefiNonDefault	*ndrData,			  lefiUserData		userData){    try	{	((LefIn*)userData)->parseNonDefaultRule(ndrData);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbSite(lefrCallbackType_e  cbType,		lefiSite	    *data,		lefiUserData	    userData){    try	{	((LefIn*) userData)->parseSite(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbMacroBegin(lefrCallbackType_e	  cbType,		      const char	    *data,		      lefiUserData	    userData){    try	{	((LefIn*) userData)->parseMacroBegin(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbMacro(lefrCallbackType_e cbType,		 lefiMacro	    *data,		 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseMacro(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbPin(lefrCallbackType_e	  cbType,	       lefiPin		    *data,	       lefiUserData	    userData){    try	{	((LefIn*) userData)->parsePin(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}intLefIn::cbObstruction(lefrCallbackType_e	  cbType,		       lefiObstruction	    *data,		       lefiUserData	    userData){    try	{	((LefIn*) userData)->parseObstruction(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}    intLefIn::cbDensity(lefrCallbackType_e cbType,		 lefiDensity	    *data,		 lefiUserData	    userData){    try	{	((LefIn*) userData)->parseDensity(data);    } catch (oaException    &err) {	((LefIn*) userData)->error(cGeneric, (const char*) err.getMsg());    }    return PARSE_OK;}    END_LEFDEF_NAMESPACE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -