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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gds.java

?? The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
            name = makeUniqueName(cell, cellNames);            cellNames.put(cell, name);        }		outputName(HDR_STRNAME, name, IOTool.getGDSCellNameLenMax());	}	/**	 * Method to output date information	 */	private void outputDate(Date val)	{		short [] date = new short[6];		Calendar cal = Calendar.getInstance();		cal.setTime(val);		int year = cal.get(Calendar.YEAR) - 1900;		date[0] = (short)year;		date[1] = (short)cal.get(Calendar.MONTH);		date[2] = (short)cal.get(Calendar.DAY_OF_MONTH);		date[3] = (short)cal.get(Calendar.HOUR);		date[4] = (short)cal.get(Calendar.MINUTE);		date[5] = (short)cal.get(Calendar.SECOND);		outputShortArray(date, 6);	}	/**	 * Write a simple header, with a fixed length	 * Enter with the header as argument, the routine will output	 * the count, the header, and the argument (if present) in p1.	 */	private void outputHeader(short header, int p1)	{		int type = header & BYTEMASK;		short count = 4;		if (type != DTYP_NONE)		{			switch (header)			{				case HDR_HEADER:				case HDR_LAYER:				case HDR_DATATYPE:				case HDR_TEXTTYPE:				case HDR_STRANS:				case HDR_PRESENTATION:					count = 6;					break;				case HDR_BGNSTR:				case HDR_BGNLIB:					count = HDR_N_BGNLIB;					break;				case HDR_UNITS:					count = HDR_N_UNITS;					break;				default:					System.out.println("No entry for header " + header);					return;			}		}		outputShort(count);		outputShort(header);		if (type == DTYP_NONE) return;		if (count == 6) outputShort((short)p1);		if (count == 8) outputInt(p1);	}	/**	 * Add a name (STRNAME, LIBNAME, etc.) to the file. The header	 * to be used is in header; the string starts at p1	 * if there is an odd number of bytes, then output the 0 at	 * the end of the string as a pad. The maximum length of string is "max"	 */	private void outputName(short header, String p1, int max)	{		outputString(p1, header, max);	}	/**	 * Method to output an angle as part of a STRANS	 */	private void outputAngle(int ang)	{		double gdfloat = ang / 10.0;		outputShort(HDR_N_ANGLE);		outputShort(HDR_ANGLE);		outputDouble(gdfloat);	}	/**	 * Method to output a magnification as part of a STRANS	 */	private void outputMag(double scale)	{		outputShort(HDR_N_MAG);		outputShort(HDR_MAG);		outputDouble(scale);	}	/**	 * Method to output the pairs of XY points to the file	 */ 	private void outputBoundary(PolyBase poly, int layerNumber, int layerType)	{		Point2D [] points = poly.getPoints();		// remove redundant points		Point2D [] newPoints = new Point2D[points.length];		int count = 0;		newPoints[count++] = points[0];		for(int i=1; i<points.length; i++)		{			if (points[i].equals(points[i-1])) continue;			newPoints[count++] = points[i];		}		points = newPoints;		if (count > MAXPOINTS)		{//			getbbox(poly, &lx, &hx, &ly, &hy);//			if (hx-lx > hy-ly)//			{//				if (polysplitvert((lx+hx)/2, poly, &side1, &side2)) return;//			} else//			{//				if (polysplithoriz((ly+hy)/2, poly, &side1, &side2)) return;//			}//			outputBoundary(side1, layerNumber);//			outputBoundary(side2, layerNumber);//			freepolygon(side1);//			freepolygon(side2);			return;		}		int start = 0;		for(;;)		{			// look for a closed section			int sofar = start+1;			for( ; sofar<count; sofar++)				if (points[sofar].getX() == points[start].getX() && points[sofar].getY() == points[start].getY()) break;			if (sofar < count) sofar++;			outputHeader(HDR_BOUNDARY, 0);			outputHeader(HDR_LAYER, layerNumber);			outputHeader(HDR_DATATYPE, layerType);			outputShort((short)(8 * (sofar+1) + 4));			outputShort(HDR_XY);			for (int i = start; i <= sofar; i++)			{				int j = i;				if (i == sofar) j = 0;				outputInt(scaleDBUnit(points[j].getX()));				outputInt(scaleDBUnit(points[j].getY()));			}			outputHeader(HDR_ENDEL, 0);			if (sofar >= count) break;			count -= sofar;			start = sofar;		}	}	private void outputPath(PolyBase poly, int layerNumber, int layerType)	{		outputHeader(HDR_PATH, 0);		outputHeader(HDR_LAYER, layerNumber);		outputHeader(HDR_DATATYPE, layerType);		Point2D [] points = poly.getPoints();		int count = 8 * points.length + 4;		outputShort((short)count);		outputShort(HDR_XY);		for (int i = 0; i < points.length; i ++)		{			outputInt(scaleDBUnit(points[i].getX()));			outputInt(scaleDBUnit(points[i].getY()));		}		outputHeader(HDR_ENDEL, 0);	}	/**	 * Method to add one byte to the file	 */	private void outputByte(byte val)	{		dataBufferGDS[bufferPosition++] = val;		if (bufferPosition >= DSIZE)		{			try			{				dataOutputStream.write(dataBufferGDS, 0, DSIZE);			} catch (IOException e)			{				System.out.println("End of file reached while writing GDS");			}			blockCount++;			bufferPosition = 0;		}	}    private int scaleDBUnit(double dbunit) {        // scale according to technology        double scaled = scaleFactor*dbunit;        // round to nearest nanometer        int unit = (int)Math.round(scaled);        return unit;    }	/*************************** GDS LOW-LEVEL OUTPUT ROUTINES ***************************/	/**	 * Method to add a 2-byte integer to the output	 */	private void outputShort(short val)	{		outputByte((byte)((val>>8)&BYTEMASK));		outputByte((byte)(val&BYTEMASK));	}	/**	 * Method to add a 4-byte integer to the output	 */	private void outputInt(int val)	{		outputShort((short)(val>>16));		outputShort((short)val);	}	/**	 * Method to add an array of 2 byte integers to the output.	 * @param ptr the array.	 * @param n the array length.	 */	private void outputShortArray(short [] ptr, int n)	{		for (int i = 0; i < n; i++) outputShort(ptr[i]);	}	/**	 * Method to add an array of 4 byte integers or floating numbers to the output.	 * @param ptr the array.	 * @param n the array length.	 *///	private void outputIntArray(int [] ptr, int n)//	{//		for (int i = 0; i < n; i++) outputInt(ptr[i]);//	}    private void outputString(String str, short header) {        // The usual maximum length for string is 512, though names etc may need to be shorter        outputString(str, header, 512);    }    /**     * String of n bytes, starting at ptr     * Revised 90-11-23 to convert to upper case (SRP)     */    private void outputString(String str, short header, int max) {        int j = str.length();        if (j > max) j = max;        // round up string length to the nearest integer        if ((j % 2) != 0) {            j = (j / 2)*2 + 2;        }        // pad with a blank        outputShort((short)(4+j));        outputShort(header);        assert( (j%2) == 0);		int i = 0;		if (IOTool.isGDSOutUpperCase())		{			// convert to upper case			for( ; i<str.length(); i++)				outputByte((byte)Character.toUpperCase(str.charAt(i)));		} else		{			for( ; i<str.length(); i++)				outputByte((byte)str.charAt(i));		}		for ( ; i < j; i++)			outputByte((byte)0);	}	/**	 * Method to write a GDSII representation of a double.	 * New conversion code contributed by Tom Valine <tomv@transmeta.com>.	 * @param data the double to process.	 */	public void outputDouble(double data)	{		if (data == 0.0)		{			for(int i=0; i<8; i++) outputByte((byte)0);			return;		}		BigDecimal reg = new BigDecimal(data).setScale(64, BigDecimal.ROUND_HALF_EVEN);		boolean negSign = false;		if (reg.doubleValue() < 0)		{			negSign = true;			reg = reg.negate();		}		int exponent = 64;		for(; (reg.doubleValue() < 0.0625) && (exponent > 0); exponent--)			reg = reg.multiply(new BigDecimal(16.0));		if (exponent == 0) System.out.println("Exponent underflow");		for(; (reg.doubleValue() >= 1) && (exponent < 128); exponent++)			reg = reg.divide(new BigDecimal(16.0), BigDecimal.ROUND_HALF_EVEN);		if (exponent > 127) System.out.println("Exponent overflow");		if (negSign) exponent |= 0x00000080;		BigDecimal f_mantissa = reg.subtract(new BigDecimal(reg.intValue()));		for(int i = 0; i < 56; i++)			f_mantissa = f_mantissa.multiply(new BigDecimal(2.0));		long mantissa = f_mantissa.longValue();		ByteArrayOutputStream baos = new ByteArrayOutputStream();		baos.write(exponent);		for(int i = 6; i >= 0; i--)			baos.write((int)((mantissa >> (i * 8)) & 0xFF));		byte [] result = baos.toByteArray();		for(int i=0; i<8; i++) outputByte(result[i]);	}//	/**//	 * Method to write a GDSII representation of a double.//	 * Original C-Electric code (no longer used).//	 * @param data the double to process.//	 *///	private void outputDouble(double a)//	{//		int [] ret = new int[2];////		// handle default//		if (a == 0)//		{//			ret[0] = 0x40000000;//			ret[1] = 0;//			outputIntArray(ret, 2);//			return;//		}////		// identify sign//		double temp = a;//		boolean negsign = false;//		if (temp < 0)//		{//			negsign = true;//			temp = -temp;//		}////		// establish the excess-64 exponent value//		int exponent = 64;////		// scale the exponent and mantissa//		for (; temp < 0.0625 && exponent > 0; exponent--) temp *= 16.0;////		if (exponent == 0) System.out.println("Exponent underflow");////		for (; temp >= 1 && exponent < 128; exponent++) temp /= 16.0;////		if (exponent > 127) System.out.println("Exponent overflow");////		// set the sign//		if (negsign) exponent |= 0x80;////		// convert temp to 7-byte binary integer//		double top = temp;//		for (int i = 0; i < 24; i++) top *= 2;//		int highmantissa = (int)top;//		double frac = top - highmantissa;//		for (int i = 0; i < 32; i++) frac *= 2;//		ret[0] = highmantissa | (exponent<<24);//		ret[1] = (int)frac;//		outputIntArray(ret, 2);//	}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区在线播放| 日韩av一区二区在线影视| 亚洲欧美日韩人成在线播放| 亚洲欧洲精品天堂一级 | 夜夜精品视频一区二区| 尤物av一区二区| 一级女性全黄久久生活片免费| 一级做a爱片久久| 天天爽夜夜爽夜夜爽精品视频| 日本不卡中文字幕| 国产一区二区在线观看免费| 成人高清在线视频| 欧美三级乱人伦电影| 日韩欧美成人一区二区| 亚洲欧美日韩国产另类专区| 欧美国产日本韩| 亚洲成人www| 国产成人啪免费观看软件| 99热国产精品| 精品美女一区二区三区| 亚洲私人黄色宅男| 国产专区欧美精品| 欧美主播一区二区三区美女| 国产亚洲欧洲一区高清在线观看| 亚洲国产毛片aaaaa无费看| 国产精品一卡二| 91精品一区二区三区久久久久久| 欧美激情在线一区二区三区| 婷婷成人激情在线网| 不卡免费追剧大全电视剧网站| 日韩精品中午字幕| 性欧美疯狂xxxxbbbb| 99精品国产99久久久久久白柏| 精品少妇一区二区三区| 亚洲国产中文字幕| av高清久久久| 中文字幕一区二区三中文字幕| 久久精品久久久精品美女| 欧美日韩一区高清| 亚洲一区二区三区在线看| 成人黄页在线观看| 久久久精品免费免费| 黄页网站大全一区二区| 日韩你懂的在线观看| 免费人成网站在线观看欧美高清| 在线免费观看不卡av| 亚洲愉拍自拍另类高清精品| 91色婷婷久久久久合中文| 中文字幕一区二区在线播放| 91免费视频网址| 亚洲免费伊人电影| 精品视频在线看| 日韩成人一区二区| 日韩欧美色电影| 日韩av一区二区在线影视| 精品日韩一区二区| 国产一区二区福利视频| 国产日本一区二区| 色天使久久综合网天天| 亚洲香蕉伊在人在线观| 精品国产成人在线影院| 成人黄色国产精品网站大全在线免费观看| 日本一区二区免费在线观看视频| 丰满岳乱妇一区二区三区| 亚洲国产精品ⅴa在线观看| 久久久精品国产99久久精品芒果| 国产精品国产三级国产有无不卡 | 精品国产3级a| 成人高清免费观看| 亚洲福利电影网| 日韩精品一区二区三区中文不卡| 国产**成人网毛片九色| 亚洲国产日日夜夜| 国产网红主播福利一区二区| 欧美三级资源在线| gogogo免费视频观看亚洲一| 日韩精品一二三| 中文字幕在线不卡一区二区三区| 欧美福利视频导航| av亚洲精华国产精华精| 久久se精品一区二区| 亚洲女女做受ⅹxx高潮| 国产午夜精品美女毛片视频| 欧美无乱码久久久免费午夜一区| 99久久国产综合色|国产精品| 日本一不卡视频| 亚洲一区二区三区三| 国产精品国产三级国产| 精品国产在天天线2019| 欧美日韩一区二区欧美激情 | 亚洲综合无码一区二区| 国产欧美精品一区二区色综合朱莉 | 国产女人18水真多18精品一级做| 欧美高清hd18日本| 91极品视觉盛宴| 99视频超级精品| www.欧美精品一二区| 国产精品123| 欧美在线观看一二区| 不卡一卡二卡三乱码免费网站| 国产成人免费在线| 国产精品18久久久久久久久久久久| 久久精工是国产品牌吗| 日韩电影在线免费看| 麻豆国产精品视频| 精品一区二区在线看| 韩日欧美一区二区三区| 国产成人午夜高潮毛片| 国产福利一区二区三区视频| 国产mv日韩mv欧美| 99天天综合性| 欧美日韩一级大片网址| 日韩一区二区免费高清| 精品免费日韩av| 国产精品不卡在线观看| 一区二区免费在线播放| 婷婷开心久久网| 国产一区二区伦理| 成人中文字幕合集| 国产高清在线观看免费不卡| 91麻豆6部合集magnet| 91精品麻豆日日躁夜夜躁| 2022国产精品视频| 日韩毛片精品高清免费| 日韩av二区在线播放| 成人av在线网| 3d动漫精品啪啪一区二区竹菊 | √…a在线天堂一区| 亚洲成人久久影院| 国产一区二区主播在线| 91官网在线观看| 国产亚洲精品bt天堂精选| 亚洲人成7777| 国产精品综合视频| 欧美在线视频你懂得| 国产蜜臀97一区二区三区| 亚洲综合区在线| 欧美亚洲国产bt| 精品福利一二区| 午夜伊人狠狠久久| 成人午夜激情影院| 精品成人一区二区| 日韩精品成人一区二区三区| 色婷婷综合久久久久中文| 久久综合九色综合97_久久久| 丝袜亚洲精品中文字幕一区| 在线免费一区三区| 亚洲欧美在线观看| 成人一区二区三区在线观看| 国产亚洲欧美日韩日本| 国产自产v一区二区三区c| 日韩美一区二区三区| 日韩精品每日更新| 91精品国产91久久久久久一区二区 | 欧美三级视频在线观看| 亚洲日本va午夜在线影院| 粉嫩久久99精品久久久久久夜| 精品福利一区二区三区免费视频| 极品少妇xxxx精品少妇偷拍 | 日韩午夜在线观看| 热久久一区二区| 久久久亚洲精品一区二区三区| 韩国视频一区二区| 精品久久国产字幕高潮| 久久精品国内一区二区三区| 久久人人爽爽爽人久久久| 国产一区二区三区免费在线观看 | 久久久亚洲国产美女国产盗摄| 国产精品白丝av| 国产精品视频第一区| 99久久久久免费精品国产| 亚洲欧美日韩系列| 五月激情六月综合| 91久久精品一区二区二区| 国产亚洲午夜高清国产拍精品| av电影在线观看不卡 | 亚洲成人综合在线| 91精品国产品国语在线不卡| 国内精品自线一区二区三区视频| 国产亚洲va综合人人澡精品| 色哟哟欧美精品| 狠狠色丁香婷综合久久| 自拍偷拍欧美激情| 日韩一区二区电影在线| 顶级嫩模精品视频在线看| 亚洲第一主播视频| 欧美国产日韩亚洲一区| 欧美日韩和欧美的一区二区| 国产不卡在线视频| 奇米影视7777精品一区二区| 亚洲天堂免费看| 精品av综合导航| 日韩午夜激情视频| 91免费观看视频| 成人黄色电影在线| 韩国精品久久久| 日本女人一区二区三区| 亚洲激情网站免费观看| 1000精品久久久久久久久| 久久久久久电影|