亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gds.java

?? The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
            }            else if (origNodeName != null)            {                errorMsg = "Original GDS name of '" + name + "' was '" + origNodeName + "'";            }            if (errorMsg != null)            {                List<Geometric> geomList = new ArrayList<Geometric>(1);                geomList.add(ni);                errorLogger.logWarning(errorMsg, geomList, null, null, null, null, parent, -1);                System.out.println(errorMsg);            }            if (IOTool.isGDSInExpandsCells() && ni.isCellInstance())                ni.setExpanded();            if (points != null)                ni.setTrace(points);            boolean renamed = false;            if (exportName != null)            {            	if (exportName.endsWith(":"))            		exportName = exportName.substring(0, exportName.length()-1);        		if (parent.findExport(exportName) != null)        		{                    String newName = ElectricObject.uniqueObjectName(exportName, parent, PortProto.class, true);//                    System.out.println("  Warning: Multiple exports called '" + exportName + "' in cell " +//                    	parent.describe(false) + " (renamed to " + newName + ")");                    exportUnify.put(newName, exportName);                    exportName = newName;                    renamed = true;        		}                Export.newInstance(parent, ni.getPortInst(0), exportName);            }            return renamed;        }	}	/**	 * Method to import a library from disk.	 * @param lib the library to fill	 * @return the created library (null on error).	 */	protected Library importALibrary(Library lib)	{		// initialize		arraySimplificationUseful = true;		CellBuilder.init();		theLibrary = lib;		try		{			loadFile();		} catch (IOException e)		{			System.out.println("ERROR reading GDS file");		}		// now build all instances recursively		CellBuilder.buildInstances();		CellBuilder.term();		if (arraySimplificationUseful)		{			System.out.println("NOTE: Found array references that could be simplified to save space and time");			System.out.println("   To simplify arrays, set the 'Input array simplification' in GDS Preferences");		}		return lib;	}	private void initialize()	{		inputScale = IOTool.getGDSInputScale();		layerNodeProto = Generic.tech().drcNode;		theVertices = new Point2D[MAXPOINTS];		for(int i=0; i<MAXPOINTS; i++) theVertices[i] = new Point2D.Double();		recordCount = 0;		// get the array of GDS names		layerNames = new HashMap<Integer,Layer>();		pinLayers = new HashSet<Integer>();		boolean valid = false;		curTech = Technology.getCurrent();		for(Map.Entry<Layer,String> e: curTech.getGDSLayers().entrySet())		{			Layer layer = e.getKey();            String gdsName = e.getValue();            GDSLayers gdsl = GDSLayers.parseLayerString(gdsName);            for(Iterator<Integer> lIt = gdsl.getLayers(); lIt.hasNext(); ) {                Integer lVal = lIt.next();                Integer lay = new Integer(lVal.intValue());                if (layerNames.get(lay) == null) layerNames.put(lay, layer);            }            if (gdsl.getPinLayer() != -1) {                pinLayers.add(new Integer(gdsl.getPinLayer()));                layerNames.put(new Integer(gdsl.getPinLayer()), layer);            }            if (gdsl.getTextLayer() != -1)                layerNames.put(new Integer(gdsl.getTextLayer()), layer);            valid = true;		}		if (!valid)		{			System.out.println("There are no GDS layer names assigned in the " + curTech.getTechName() + " technology");		}	}	private void loadFile()		throws IOException	{		initialize();		getToken();		readHeader();		getToken();		readLibrary();		getToken();		while (isMember(theToken, optionSet))		{			if (theToken == GDS_REFLIBS) readRefLibs(); else				if (theToken == GDS_FONTS) readFonts(); else					if (theToken == GDS_ATTRTABLE) readAttrTable(); else						if (theToken == GDS_GENERATIONS) readGenerations();		}		while (theToken != GDS_UNITS)			getToken();		readUnits();		getToken();		while (theToken != GDS_ENDLIB)		{			readStructure();			getToken();		}	}	private void readHeader()		throws IOException	{		if (theToken != GDS_HEADER) handleError("GDS II header statement is missing");		getToken();		if (theToken != GDS_SHORT_NUMBER) handleError("GDS II version number is not decipherable");		// version "tokenValue16"	}	private void readLibrary()		throws IOException	{		if (theToken != GDS_BGNLIB) handleError("Begin library statement is missing");		getToken();		determineTime();		// creation time		determineTime();		// modification time		if (theToken == GDS_LIBNAME)		{			getToken();			if (theToken != GDS_IDENT) handleError("Library name is missing");		}	}	private void readRefLibs()		throws IOException	{		getToken();		getToken();	}	private void readFonts()		throws IOException	{		getToken();		getToken();	}	private void readAttrTable()		throws IOException	{		getToken();		if (theToken == GDS_IDENT)		{			getToken();		}	}	private void readUnits()		throws IOException	{		if (theToken != GDS_UNITS) handleError("Units statement is missing");		getToken();		if (theToken != GDS_REALNUM) handleError("Units statement has invalid number format");		getToken();		double meterUnit = tokenValueDouble;		double microScale = TextUtils.convertFromDistance(1, curTech, TextUtils.UnitScale.MICRO);		theScale = meterUnit * 1000000.0 * microScale * inputScale;		// round the scale		double shift = 1;		double roundedScale = theScale;		while (roundedScale < 1)		{			roundedScale *= 10;			shift *= 10;		}		roundedScale = DBMath.round(roundedScale) / shift;		theScale = roundedScale;	}	private void showResultsOfCell()	{		System.out.print("**** Cell "+theCell.cell.describe(false)+" has");		if (countBox > 0) System.out.print(" "+countBox+" boxes");		if (countText > 0) System.out.print(" "+countText+" texts");		if (countNode > 0) System.out.print(" "+countNode+" nodes");		if (countPath > 0) System.out.print(" "+countPath+" paths");		if (countShape > 0) System.out.print(" "+countShape+" shapes");		if (countSRef > 0) System.out.print(" "+countSRef+" instances");		if (countARef > 0)			System.out.print(" "+countARef+" arrays with "+countATotal+" elements");		System.out.println();	}	private void readStructure()		throws IOException	{		beginStructure();		getToken();		mergeThisCell = IOTool.isGDSInMergesBoxes();		if (mergeThisCell)		{			// initialize merge if merging this cell    		merge = new PolyMerge();		}		// read the cell		countBox = countText = countNode = countPath = countShape = countSRef = countARef = countATotal = 0;		while (theToken != GDS_ENDSTR)		{            getElement();			getToken();		}		if (TALLYCONTENTS) showResultsOfCell();		if (mergeThisCell)		{			// extract merge information for this cell    		for(Layer layer : merge.getKeySet())    		{    			Layer primLayer = layer;				PrimitiveNode pnp = primLayer.getPureLayerNode();    			List<PolyBase> polys = merge.getMergedPoints(layer, false);    			for(PolyBase poly : polys)    			{    				Rectangle2D box = poly.getBox();    				if (box == null)    				{        				box = poly.getBounds2D();    					Point2D ctr = new EPoint(box.getCenterX(), box.getCenterY());    					// store the trace information    					Point2D [] pPoints = poly.getPoints();    					EPoint [] points = new EPoint[pPoints.length];    					for(int i=0; i<pPoints.length; i++)    					{    						points[i] = new EPoint(pPoints[i].getX(), pPoints[i].getY());    					}    					// store the trace information                        theCell.makeInstance(pnp, ctr, Orientation.IDENT, box.getWidth(), box.getHeight(), points);    				} else    				{    					Point2D ctr = new EPoint(box.getCenterX(), box.getCenterY());                        theCell.makeInstance(pnp, ctr, Orientation.IDENT, box.getWidth(), box.getHeight(), null);    				}    			}    		}		}	}	private void beginStructure()		throws IOException	{		if (theToken != GDS_BGNSTR) handleError("Begin structure statement is missing");		getToken();		determineTime();	// creation time		determineTime();	// modification time		if (theToken != GDS_STRNAME) handleError("Strname statement is missing");		getToken();		if (theToken != GDS_IDENT) handleError("Structure name is missing");		// look for this nodeproto		Cell cell = findCell(tokenString);		if (cell == null)		{			// create the proto			cell = Cell.newInstance(theLibrary, tokenString+View.LAYOUT.getAbbreviationExtension());			if (cell == null) handleError("Failed to create structure");			System.out.println("Reading " + tokenString);			if (Job.getUserInterface().getCurrentCell(theLibrary) == null)				Job.getUserInterface().setCurrentCell(theLibrary, cell);		}        theCell = new CellBuilder(cell);	}	private Cell findCell(String name)	{		return theLibrary.findNodeProto(name);	}	/**	 * Method to create a pure-layer node with a complex outline.	 * @param points the outline description.	 * @param pureType the type of the pure-layer node.	 * @param parent the Cell in which to create the node.	 */	private static void buildComplexNode(List<EPoint> points, NodeProto pureType, Cell parent)	{		EPoint [] pointArray = new EPoint[points.size()];		double lX=0, hX=0, lY=0, hY=0;		for(int i=0; i<points.size(); i++)		{			pointArray[i] = points.get(i);			if (pointArray[i] == null) continue;			if (i == 0)			{				lX = hX = pointArray[i].getX();				lY = hY = pointArray[i].getY();			} else			{				if (pointArray[i].getX() < lX) lX = pointArray[i].getX();				if (pointArray[i].getX() > hX) hX = pointArray[i].getX();				if (pointArray[i].getY() < lY) lY = pointArray[i].getY();				if (pointArray[i].getY() > hY) hY = pointArray[i].getY();			}		}        NodeInst ni = NodeInst.makeInstance(pureType, new Point2D.Double((lX+hX)/2, (lY+hY)/2), hX-lX, hY-lY,        	parent, Orientation.IDENT, null, 0);        if (ni != null)        	ni.setTrace(pointArray);	}	private void getElement()		throws IOException	{		while (isMember(theToken, shapeSet))		{			if (theToken == GDS_AREF)			{				determineARef();			} else if (theToken == GDS_SREF)			{				determineSRef();			} else if (theToken == GDS_BOUNDARY)			{				determineShape();			} else if (theToken == GDS_PATH)			{				determinePath();			} else if (theToken == GDS_NODE)			{				determineNode();			} else if (theToken == GDS_TEXTSYM)			{				determineText();			} else if (theToken == GDS_BOX)			{				determineBox();			}		}		while (theToken == GDS_PROPATTR)			determineProperty();		if (theToken != GDS_ENDEL)		{			showResultsOfCell();			handleError("Element end statement is missing");		}	}	private void determineARef()		throws IOException	{		getToken();		readUnsupported(unsupportedSet);		if (theToken != GDS_SNAME) handleError("Array reference name is missing");		getToken();		// get this nodeproto		getPrototype(tokenString);		getToken();		int angle = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人精品无人区| 久久久久久久久久久久久女国产乱| 午夜精品爽啪视频| 久久久久久久综合| 91麻豆精品国产91久久久| 懂色av中文字幕一区二区三区| 亚洲一本大道在线| 日韩码欧中文字| 国产精品美女视频| 久久久久久麻豆| 精品对白一区国产伦| 欧美美女直播网站| 欧美综合色免费| 色狠狠桃花综合| aaa国产一区| 99久久久精品免费观看国产蜜| 国产一区二区三区高清播放| 看电影不卡的网站| 蜜臀国产一区二区三区在线播放| 午夜激情一区二区| 一区二区三区在线观看网站| 中文字幕国产一区二区| 欧美激情在线一区二区| 国产精品人成在线观看免费| 国产欧美一区视频| 中文字幕精品一区二区精品绿巨人| 欧美电影免费提供在线观看| 欧美成人bangbros| 久久蜜桃av一区精品变态类天堂| 欧美精品一区二区三区高清aⅴ| 日韩亚洲欧美高清| 久久久久97国产精华液好用吗| 久久久三级国产网站| 国产精品亲子伦对白| 亚洲久草在线视频| 图片区小说区国产精品视频| 久久99日本精品| 成人三级在线视频| 精品视频一区三区九区| 欧美变态tickling挠脚心| 国产欧美日韩精品a在线观看| 国产色综合久久| 亚洲电影在线免费观看| 日本不卡一区二区三区高清视频| 国产精品一品视频| 91九色最新地址| 久久一区二区三区国产精品| 亚洲色图第一区| 精品一区二区三区在线视频| a级高清视频欧美日韩| 成人免费精品视频| 欧美精品一级二级三级| 中文欧美字幕免费| 日韩精品一级二级| 91成人免费在线| 国产蜜臀av在线一区二区三区| 一区二区三区在线观看欧美| 国产精品 日产精品 欧美精品| 欧美年轻男男videosbes| 又紧又大又爽精品一区二区| av动漫一区二区| 色老头久久综合| 中文字幕一区二区三区色视频| 久久精品国产久精国产| 欧美一区二区三区视频免费| 亚洲免费观看高清完整版在线观看熊| 韩国三级在线一区| 日韩亚洲欧美综合| 麻豆精品国产传媒mv男同| 欧美日韩国产天堂| 香蕉影视欧美成人| 欧美日韩一区二区不卡| 亚洲一区二区三区四区的| 91亚洲大成网污www| 亚洲人午夜精品天堂一二香蕉| 国产成人av电影在线| 亚洲国产高清在线| av电影在线观看不卡| 亚洲欧美日韩一区| 日本高清视频一区二区| 亚洲激情成人在线| 粉嫩一区二区三区性色av| 国产午夜三级一区二区三| 成人午夜视频免费看| 国产精品萝li| 欧美视频中文一区二区三区在线观看| 亚洲已满18点击进入久久| 在线精品视频免费观看| 午夜精品成人在线视频| 久久亚洲影视婷婷| 国产一二精品视频| 国产精品日日摸夜夜摸av| 欧美无砖砖区免费| 精品综合免费视频观看| 国产精品美女久久久久久久| 91福利小视频| 国产精品99久久久久久有的能看 | 日韩美女视频一区二区| 欧美在线|欧美| 国产综合色视频| 一区二区三区蜜桃网| 精品久久免费看| 在线观看一区日韩| 风流少妇一区二区| 亚洲高清免费视频| 日韩一区在线播放| 精品久久久久香蕉网| 一本色道亚洲精品aⅴ| 美女在线一区二区| 一区二区三区在线视频观看 | 国产精品资源网| 婷婷综合五月天| 亚洲美女电影在线| 亚洲国产精品黑人久久久| 日韩欧美国产一区二区三区| 色婷婷精品久久二区二区蜜臂av | 亚洲成人一区二区在线观看| 中文字幕一区二区三区视频| 国产女人aaa级久久久级| 国产精品福利一区| 日韩欧美一级二级| 4438x亚洲最大成人网| 欧美日韩国产一级二级| 欧美日韩精品一区二区三区| 色婷婷久久99综合精品jk白丝| 91在线云播放| 欧美性大战久久| 欧美午夜理伦三级在线观看| 91福利在线观看| 91精品国产乱码久久蜜臀| 欧美日韩高清在线播放| 91精品国产综合久久小美女| 精品日韩欧美一区二区| 2024国产精品| 亚洲欧美另类图片小说| 亚洲午夜精品久久久久久久久| 一区二区三区美女| 免费视频最近日韩| 国产成人丝袜美腿| 97精品视频在线观看自产线路二| 在线观看日韩高清av| 欧美一区二区国产| 国产精品日日摸夜夜摸av| 亚洲国产精品一区二区www| 青青草国产成人99久久| 成人福利视频网站| 欧美日韩国产区一| 日本一区二区电影| 免费人成在线不卡| 成人av免费在线| 日韩小视频在线观看专区| 国产精品久久久久7777按摩| 日韩av成人高清| 91伊人久久大香线蕉| 精品国产成人系列| 一区二区三区色| 国产一区二区在线观看免费| 91高清在线观看| 中文字幕av一区二区三区高 | 18成人在线视频| 激情av综合网| 91精品国产黑色紧身裤美女| 亚洲狼人国产精品| 精品一区二区三区视频在线观看| 一本高清dvd不卡在线观看| 久久久久9999亚洲精品| 精品一区精品二区高清| 欧美一区二区三区在线| 一区二区三区在线视频免费 | 日韩一区二区三区在线视频| 亚洲精品国产无天堂网2021| 成人午夜电影小说| 国产目拍亚洲精品99久久精品| 久久精品国产秦先生| 久久综合精品国产一区二区三区| 亚洲成人在线免费| 欧美精品第1页| 美国一区二区三区在线播放| 67194成人在线观看| 日本一区中文字幕| 日韩欧美国产一区在线观看| 蜜桃视频在线一区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品69毛片高清亚洲| 日韩三级视频中文字幕| 国产精品99久久久久久似苏梦涵 | 欧美日韩一区高清| 亚洲国产日韩av| 欧美一区二区二区| 六月丁香婷婷久久| 亚洲欧洲国产日韩| 欧美视频一区二区三区四区 | 日韩精品中文字幕在线不卡尤物 | 97精品电影院| 午夜精品久久久久久久99樱桃| 日韩精品一区二区在线| 成人午夜在线播放| 日韩av中文字幕一区二区| 久久久www免费人成精品| 欧洲一区二区三区免费视频|