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

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

?? quick.java

?? The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: Quick.java * * Copyright (c) 2004 Sun Microsystems and Static Free Software * * Electric(tm) is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Electric(tm) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Electric(tm); see the file COPYING.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */package com.sun.electric.tool.drc;import com.sun.electric.database.geometry.*;import com.sun.electric.database.hierarchy.Cell;import com.sun.electric.database.hierarchy.Export;import com.sun.electric.database.hierarchy.HierarchyEnumerator;import com.sun.electric.database.hierarchy.Nodable;import com.sun.electric.database.network.Netlist;import com.sun.electric.database.network.Network;import com.sun.electric.database.prototype.NodeProto;import com.sun.electric.database.prototype.PortOriginal;import com.sun.electric.database.prototype.PortProto;import com.sun.electric.database.text.TextUtils;import com.sun.electric.database.topology.ArcInst;import com.sun.electric.database.topology.Geometric;import com.sun.electric.database.topology.NodeInst;import com.sun.electric.database.topology.PortInst;import com.sun.electric.database.topology.RTBounds;import com.sun.electric.database.variable.VarContext;import com.sun.electric.database.variable.Variable;import com.sun.electric.technology.*;import com.sun.electric.technology.technologies.Generic;import com.sun.electric.tool.Job;import com.sun.electric.tool.user.ErrorLogger;import java.awt.geom.AffineTransform;import java.awt.geom.Area;import java.awt.geom.Point2D;import java.awt.geom.Rectangle2D;import java.util.*;/** * This is the "quick" DRC which does full hierarchical examination of the circuit. * <P> * The "quick" DRC works as follows: *    It first examines every primitive node and arc in the cell *        For each layer on these objects, it examines everything surrounding it, even in subcells *            R-trees are used to limit search. *            Where cell instances are found, the contents are examined recursively *    It next examines every cell instance in the cell *        All other instances within the surrounding area are considered *            When another instance is found, the two instances are examined for interaction *                A cache is kept of instance pairs in specified configurations to speed-up arrays *            All objects in the other instance that are inside the bounds of the first are considered *                The other instance is hierarchically examined to locate primitives in the area of consideration *            For each layer on each primitive object found in the other instance, *                Examine the contents of the first instance for interactions about that layer * <P> * Since Electric understands connectivity, it uses this information to determine whether two layers * are connected or not.  However, if such global connectivity is propagated in the standard Electric * way (placing numbers on exports, descending into the cell, and pulling the numbers onto local networks) * then it is not possible to decompose the DRC for multiple processors, since two different processors * may want to write global network information on the same local networks at once. * <P> * To solve this problem, the "quick" DRC determines how many instances of each cell exist.  For every * network in every cell, an array is built that is as large as the number of instances of that cell. * This array contains the global network number for that each instance of the cell.  The algorithm for * building these arrays is quick (1 second for a million-transistor chip) and the memory requirement * is not excessive (8 megabytes for a million-transistor chip).  It uses the CheckInst and CheckProto * objects. * @author  Steve Rubin, Gilda Garreton */public class Quick{	private HashMap<NodeInst,CheckInst> checkInsts = null;    private HashMap<Cell,CheckProto> checkProtos = null;	private HashMap<Network,Integer[]> networkLists = null;	private HashMap<Layer,DRCTemplate> minAreaLayerMap = new HashMap<Layer,DRCTemplate>();    // For minimum area checking	private HashMap<Layer,DRCTemplate> enclosedAreaLayerMap = new HashMap<Layer,DRCTemplate>();    // For enclosed area checking    private HashMap<Layer,DRCTemplate> spacingLayerMap = new HashMap<Layer,DRCTemplate>();    // to detect holes using the area function    private HashMap<Layer,DRCTemplate> slotSizeLayerMap = new HashMap<Layer,DRCTemplate>();    // For max length checking    private DRC.CheckDRCJob job; // Reference to running job	private HashMap<Cell,Cell> cellsMap = new HashMap<Cell,Cell>(); // for cell caching    private HashMap<Geometric,Geometric> nodesMap = new HashMap<Geometric,Geometric>(); // for node caching    private GeometryHandler.GHMode mergeMode = GeometryHandler.GHMode.ALGO_SWEEP; // .ALGO_QTREE;    private Map<Layer,NodeInst> od2Layers = new HashMap<Layer,NodeInst>(3);  /** to control OD2 combination in the same die according to foundries */	public Quick(DRC.CheckDRCJob j, GeometryHandler.GHMode mode)	{		this.job = j;        this.mergeMode = mode;	}    private List<InstanceInter> instanceInteractionList = new ArrayList<InstanceInter>();	/** a NodeInst that is too tiny for its connection. */		private NodeInst tinyNodeInst;	/** the other Geometric in "tiny" errors. */				private Geometric tinyGeometric;	/** for tracking the time of good DRC. */					private HashSet<Cell> goodSpacingDRCDate = new HashSet<Cell>();	/** for tracking cells that need to clean good DRC vars */	private HashSet<Cell> cleanSpacingDRCDate = new HashSet<Cell>();	/** for tracking the time of good DRC. */					private HashSet<Cell> goodAreaDRCDate = new HashSet<Cell>();	/** for tracking cells that need to clean good DRC vars */	private HashSet<Cell> cleanAreaDRCDate = new HashSet<Cell>();	/** Top cell for DRC */                                     private Cell topCell;    /** Miscellanous data for DRC */                            private DRC.ReportInfo reportInfo;//    /* for figuring out which layers are valid for DRC */    // To speed up the layer process    private ValidationLayers validLayers;    public static ErrorLogger checkDesignRules(ErrorLogger errorLog, Cell cell, Geometric[] geomsToCheck, boolean[] validity,                                               Rectangle2D bounds)    {        if (errorLog == null) errorLog = DRC.getDRCErrorLogger(true, false, null);        return checkDesignRules(errorLog, cell, geomsToCheck, validity, bounds, null,                GeometryHandler.GHMode.ALGO_SWEEP, false);    }    /**	 * This is the entry point for DRC.	 *	 * Method to do a hierarchical DRC check on cell "cell".	 * If "count" is zero, check the entire cell.	 * If "count" is nonzero, only check that many instances (in "nodesToCheck") and set the	 * entry in "validity" TRUE if it is DRC clean.	 * @param bounds if null, check entire cell. If not null, only check area in bounds.     * @param drcJob	 * @param onlyArea     * @return ErrorLogger containing the information	 */	public static ErrorLogger checkDesignRules(ErrorLogger errorLog, Cell cell, Geometric[] geomsToCheck, boolean[] validity,                                               Rectangle2D bounds, DRC.CheckDRCJob drcJob, GeometryHandler.GHMode mode, boolean onlyArea)	{		Quick q = new Quick(drcJob, mode);        return q.doCheck(errorLog, cell, geomsToCheck, validity, bounds, onlyArea);	}    // returns the number of errors found	private ErrorLogger doCheck(ErrorLogger errorLog, Cell cell, Geometric[] geomsToCheck, boolean[] validity,                                Rectangle2D bounds, boolean onlyArea)	{		// Check if there are DRC rules for particular tech        Technology tech = cell.getTechnology();		DRCRules rules = DRC.getRules(tech);        // if checking specific instances, adjust options and processor count        int count = (geomsToCheck != null) ? geomsToCheck.length : 0;        reportInfo = new DRC.ReportInfo(errorLog, tech, (count > 0));        ErrorLogger errorLogger = errorLog;        // caching bits        System.out.println("Running DRC with " + DRC.explainBits(reportInfo.activeSpacingBits));		// Nothing to check for this particular technology		if (rules == null || rules.getNumberOfRules() == 0) return errorLogger;	    topCell = cell; /* Especially important for minArea checking */		// cache valid layers for this technology        validLayers = new ValidationLayers(reportInfo.errorLogger, topCell, rules);		// clean out the cache of instances	    instanceInteractionList.clear();		// determine maximum DRC interaction distance//		worstInteractionDistance = DRC.getWorstSpacingDistance(tech, -1);	    // determine if min area must be checked (if any layer got valid data)	    minAreaLayerMap.clear();	    enclosedAreaLayerMap.clear();        spacingLayerMap.clear();        slotSizeLayerMap.clear();	    cellsMap.clear();	    nodesMap.clear();	    // No incremental neither per Cell	    if (!DRC.isIgnoreAreaChecking() && reportInfo.errorTypeSearch != DRC.DRCCheckMode.ERROR_CHECK_CELL)	    {		    for(Iterator<Layer> it = tech.getLayers(); it.hasNext(); )			{				Layer layer = it.next();				// Storing min areas				DRCTemplate minAreaRule = DRC.getMinValue(layer, DRCTemplate.DRCRuleType.MINAREA);				if (minAreaRule != null)					minAreaLayerMap.put(layer, minAreaRule);				// Storing enclosed areas				DRCTemplate enclosedAreaRule = DRC.getMinValue(layer, DRCTemplate.DRCRuleType.MINENCLOSEDAREA);				if (enclosedAreaRule != null)					enclosedAreaLayerMap.put(layer, enclosedAreaRule);                // Storing spacing rules                DRCTemplate spaceRule = DRC.getSpacingRule(layer, null, layer, null, true, -1, -1.0, -1.0); // UCONSPA, CONSPA or SPACING                if (spaceRule != null)                    spacingLayerMap.put(layer, spaceRule);                // Storing slot sizes				DRCTemplate slotRule = DRC.getMinValue(layer, DRCTemplate.DRCRuleType.SLOTSIZE);				if (slotRule != null)					slotSizeLayerMap.put(layer, slotRule);			}            if (onlyArea)            {                int numErrors = checkMinAreaSlow(cell);                if (numErrors == 0)                    goodAreaDRCDate.add(cell);                else                    cleanAreaDRCDate.add(cell);                System.out.println("Missing update in dates");                return errorLogger;            }        }		// initialize all cells for hierarchical network numbering		checkProtos = new HashMap<Cell,CheckProto>();		checkInsts = new HashMap<NodeInst,CheckInst>();		// initialize cells in tree for hierarchical network numbering		Netlist netlist = cell.getNetlist();		CheckProto cp = checkEnumerateProtos(cell, netlist);		// now recursively examine, setting information on all instances		cp.hierInstanceCount = 1;		reportInfo.checkTimeStamp = 0;		checkEnumerateInstances(cell);		// now allocate space for hierarchical network arrays		//int totalNetworks = 0;		networkLists = new HashMap<Network,Integer[]>();        for (Map.Entry<Cell,CheckProto> e : checkProtos.entrySet())		{			Cell libCell = e.getKey();			CheckProto subCP = e.getValue();			if (subCP.hierInstanceCount > 0)			{				// allocate net number lists for every net in the cell				for(Iterator<Network> nIt = subCP.netlist.getNetworks(); nIt.hasNext(); )				{					Network net = nIt.next();					Integer [] netNumbers = new Integer[subCP.hierInstanceCount];					for(int i=0; i<subCP.hierInstanceCount; i++) netNumbers[i] = new Integer(0);					networkLists.put(net, netNumbers);					//totalNetworks += subCP.hierInstanceCount;				}			}			for(Iterator<NodeInst> nIt = libCell.getNodes(); nIt.hasNext(); )			{				NodeInst ni = nIt.next();				NodeProto np = ni.getProto();				if (!ni.isCellInstance()) continue;				// ignore documentation icons				if (ni.isIconOfParent()) continue;				CheckInst ci = checkInsts.get(ni);				CheckProto ocp = getCheckProto((Cell)np);				ci.offset = ocp.totalPerCell;			}			reportInfo.checkTimeStamp++;			for(Iterator<NodeInst> nIt = libCell.getNodes(); nIt.hasNext(); )			{				NodeInst ni = nIt.next();				NodeProto np = ni.getProto();				if (!ni.isCellInstance()) continue;				// ignore documentation icons				if (ni.isIconOfParent()) continue;				CheckProto ocp = getCheckProto((Cell)np);				if (ocp.timeStamp != reportInfo.checkTimeStamp)				{					CheckInst ci = checkInsts.get(ni);					ocp.timeStamp = reportInfo.checkTimeStamp;					ocp.totalPerCell += subCP.hierInstanceCount * ci.multiplier;				}			}		}		// now fill in the hierarchical network arrays		reportInfo.checkTimeStamp = 0;		int checkNetNumber = 1;		HashMap<Network,Integer> enumeratedNets = new HashMap<Network,Integer>();		for(Iterator<Network> nIt = cp.netlist.getNetworks(); nIt.hasNext(); )		{			Network net = nIt.next();			enumeratedNets.put(net, new Integer(checkNetNumber));			checkNetNumber++;		}		checkEnumerateNetworks(cell, cp, 0, enumeratedNets);		if (count <= 0)			System.out.println("Found " + checkNetNumber + " networks");		// now search for DRC exclusion areas        reportInfo.exclusionMap.clear();		accumulateExclusion(cell);		// now do the DRC        int logsFound = 0;//        int totalErrors = 0;		if (count == 0)		{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区二区| 8x福利精品第一导航| 天天av天天翘天天综合网| 久久综合九色综合欧美98| 欧美亚洲国产一区二区三区| 国产传媒一区在线| 美女一区二区视频| 亚洲制服丝袜一区| 自拍av一区二区三区| 国产色综合一区| 欧美不卡视频一区| 91精品黄色片免费大全| 91久久国产最好的精华液| 豆国产96在线|亚洲| 捆绑紧缚一区二区三区视频| 亚洲国产va精品久久久不卡综合| 国产精品网曝门| 国产欧美一区二区精品仙草咪| 欧美一区二区三区在线电影| 在线免费观看成人短视频| 大陆成人av片| 国产一区二区三区久久悠悠色av| 日本不卡一区二区三区高清视频| 亚洲精品v日韩精品| 三级欧美在线一区| 亚洲综合一区在线| 亚洲精选一二三| 亚洲精品写真福利| 亚洲欧洲三级电影| 国产精品久久久久久妇女6080| 久久色在线视频| 精品精品国产高清a毛片牛牛 | 午夜激情一区二区三区| **性色生活片久久毛片| 中文字幕亚洲一区二区va在线| 国产精品国产三级国产有无不卡| 久久久精品人体av艺术| 国产欧美日韩在线| 国产调教视频一区| 国产精品高潮呻吟| 亚洲美女在线国产| 一区二区日韩电影| 亚洲国产sm捆绑调教视频| 日韩高清在线不卡| 久草热8精品视频在线观看| 美女国产一区二区三区| 国产一区二区在线视频| 国产风韵犹存在线视精品| 国产成人在线电影| 97aⅴ精品视频一二三区| 色欧美片视频在线观看| 欧美午夜一区二区| 91精品国产入口| 久久久综合视频| 中文字幕一区免费在线观看| 亚洲欧美精品午睡沙发| 亚洲国产日韩综合久久精品| 秋霞电影一区二区| 国产精品18久久久久久久久久久久 | 国产精品久久久久久久久久免费看| 亚洲国产精品二十页| 亚洲欧美日韩国产一区二区三区| 亚洲一卡二卡三卡四卡| 免费高清在线一区| 国产二区国产一区在线观看| 色综合一区二区| 日韩一区二区三区四区 | 午夜久久久久久| 精品一区二区三区免费播放| 风间由美中文字幕在线看视频国产欧美| 99re在线精品| 欧美一二三区在线| 亚洲国产精品激情在线观看| 亚洲午夜av在线| 激情综合色综合久久| 97精品久久久久中文字幕| 国产精品天干天干在观线| 亚洲人成网站精品片在线观看| 五月天一区二区| 国产成人精品在线看| 91视频免费播放| 欧美成人精品3d动漫h| 国产精品美女一区二区在线观看| 午夜精品福利在线| 国产福利不卡视频| 正在播放亚洲一区| 国产精品久久久久婷婷| 蜜桃视频第一区免费观看| av激情成人网| 日韩欧美成人一区二区| 亚洲精品日韩专区silk| 麻豆一区二区在线| 在线观看一区二区视频| 国产日产亚洲精品系列| 日韩国产欧美在线视频| 91女人视频在线观看| 欧美精品一区二区精品网| 一区二区三区精品视频| 国产成人亚洲精品青草天美| 欧美一区二区三区在线视频| 亚洲人成在线观看一区二区| 国内精品免费**视频| 欧美无人高清视频在线观看| 中文字幕第一页久久| 国内不卡的二区三区中文字幕| 91福利区一区二区三区| 国产人成一区二区三区影院| 国产精品无圣光一区二区| 欧美婷婷六月丁香综合色| 欧美日韩免费观看一区二区三区 | 欧美一区日韩一区| 亚洲精品成人a在线观看| 福利一区在线观看| 精品国产麻豆免费人成网站| 日韩和欧美一区二区| 一本大道av伊人久久综合| 欧美韩国一区二区| 国产一区二区视频在线播放| 日韩视频一区二区三区在线播放| 亚洲成在线观看| 在线观看一区日韩| 亚洲乱码国产乱码精品精小说 | 日韩一区二区影院| 日韩av中文在线观看| 欧美三级电影网站| 亚洲国产精品久久一线不卡| 91蜜桃免费观看视频| 国产精品传媒入口麻豆| 床上的激情91.| 国产精品无人区| eeuss鲁片一区二区三区| 国产精品黄色在线观看| 99久久夜色精品国产网站| 国产精品毛片高清在线完整版| 成人性生交大片| 国产精品久久久一本精品| 丁香亚洲综合激情啪啪综合| 国产精品日产欧美久久久久| 99久久免费国产| 艳妇臀荡乳欲伦亚洲一区| 欧美亚州韩日在线看免费版国语版 | 久久综合精品国产一区二区三区| 极品少妇一区二区| 久久久亚洲国产美女国产盗摄| 国产一本一道久久香蕉| 午夜电影网一区| 这里只有精品电影| 久久www免费人成看片高清| 久久久亚洲精品一区二区三区| 国产成人精品影视| 自拍偷在线精品自拍偷无码专区| 在线免费av一区| 亚洲一区二区偷拍精品| 日韩一区二区三区免费看 | 精品制服美女久久| 久久色在线观看| 99精品在线免费| 亚洲国产精品久久人人爱蜜臀 | 日本一区免费视频| 色综合久久天天综合网| 日韩中文字幕区一区有砖一区 | 国产精品国产自产拍在线| 中文字幕一区二区三区乱码在线 | 国产一区二区三区久久悠悠色av| 亚洲成人动漫精品| 亚洲一区二区三区四区五区中文 | 亚洲制服欧美中文字幕中文字幕| 欧美人狂配大交3d怪物一区| 麻豆视频观看网址久久| 亚洲国产成人午夜在线一区 | 久久一日本道色综合| 99免费精品在线| 日日摸夜夜添夜夜添亚洲女人| 久久这里只有精品6| 一本大道av一区二区在线播放| 免费的成人av| 国产精品欧美久久久久一区二区| 欧美三级中文字| 国产电影精品久久禁18| 亚洲福利视频一区| 国产女人18水真多18精品一级做| 欧美性猛交xxxx黑人交| 国产精品一区二区在线播放 | 成人国产精品免费观看动漫| 亚洲国产视频一区二区| 中文一区二区完整视频在线观看| 在线观看一区不卡| 国产麻豆成人精品| 午夜免费久久看| 日韩理论在线观看| 久久综合色之久久综合| 欧洲一区在线观看| 成人免费视频视频在线观看免费| 亚洲国产成人va在线观看天堂| 国产精品色婷婷| 精品剧情v国产在线观看在线| 欧美色男人天堂| 91免费看视频| 高清不卡一区二区| 狠狠久久亚洲欧美|