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

📄 exportmismatch.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
字号:
/* -*- tab-width: 4 -*-** Electric(tm) VLSI Design System** File: ExportMismatch.java** Copyright (c) 2003 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.user.ncc;import java.io.Serializable;import java.util.ArrayList;import java.util.List;import java.util.Set;import com.sun.electric.database.hierarchy.Cell;import com.sun.electric.database.variable.VarContext;import com.sun.electric.tool.ncc.result.NetObjReport;import com.sun.electric.tool.ncc.result.PortReport;import com.sun.electric.tool.ncc.result.NetObjReport.NetObjReportable;import com.sun.electric.tool.ncc.result.PortReport.PortReportable;/** * This class is an abstract superclass for Export mismatches */ public abstract class ExportMismatch implements Serializable {       /** Cell names     */ protected String desingNames[] = new String[2];    /** Compared Cells */ protected Cell[] cells = new Cell[2];    /** Conetexts      */ protected VarContext[] contexts = new VarContext[2];        /** is this a topology mismatch? */ protected boolean topologyMatch;    /** is this a name mismatch?     */ protected boolean nameMatch;        /** is this mismatch valid only when topology mismatch?      *  Used to avoid duplication with suggested matches which are      *  given when topology matches */    protected boolean validOnlyWhenTopologyMismatch;    public ExportMismatch() { init(); }        public ExportMismatch(String name1, String name2) {        desingNames[0] = name1;        desingNames[1] = name2;        init();    }        private void init() {        topologyMatch = true;        nameMatch = true;         validOnlyWhenTopologyMismatch = false;            }        /**     * Get Cell name     * @param index  Cell index: 0 or 1     * @return Cell name for the given index or null if index is invalid     */    public String getName(int index) {        if (index != 0 && index != 1) return null;        return desingNames[index];    }        /**     * Set names of the compared Cels (designs). Has no effect on the names      * stored in the Cells themselves.     * @param name1  new name for the first design      * @param name2  new name for the second design     */    public void setNames(String name1, String name2) {        desingNames[0] = name1;        desingNames[1] = name2;    }            /**     * Get Cell with the given design index.     * @param index  design index: 0 or 1     * @return  Cell with the given index or null if index is invalid     */    public Cell getCell(int index) {        if (index != 0 && index != 1) return null;        return cells[index];    }        /**     * Set compared Cells (designs).      * @param cell1  new first design Cell      * @param cell2  new second design Cell     */    public void setCells(Cell cell1, Cell cell2) {        cells[0] = cell1;        cells[1] = cell2;    }        /**     * Get Context with the given design index.     * @param index  design index: 0 or 1     * @return  Context with the given index or null if index is invalid     */    public VarContext getContext(int index) {        if (index != 0 && index != 1) return null;                return contexts[index];    }    /**     * Set Contexts of the compared Cells (designs).      * @param cnxt1  new Context for the first Cell      * @param cnxt2  new Context for the second Cell     */    public void setContexts(VarContext cnxt1, VarContext cnxt2) {        contexts[0] = cnxt1;        contexts[1] = cnxt2;    }        public boolean isTopologyMatch() { return topologyMatch; }    public void setTopologyMatch(boolean topologyMatch) {        this.topologyMatch = topologyMatch;    }    public boolean isNameMatch()     { return nameMatch; }    public void setNameMatch(boolean nameMatch) {        this.nameMatch = nameMatch;    }        public boolean isValidOnlyWhenTopologyMismatch() {        return validOnlyWhenTopologyMismatch;    }    public void setValidOnlyWhenTopologyMismatch(boolean valid) {        validOnlyWhenTopologyMismatch = valid;    }        /**     * This class implements a zero-to-one, zero-to-many, one-to-many, and     * many-to-many Export mismatch.      */    public static class MultiMatch extends ExportMismatch{    	static final long serialVersionUID = 0;        /** Lists of mismatched exports in each Cells.         * The stored objects are Ports on which mismatched Exports are */        private final List<PortReport> ports[] = new List[2];                public MultiMatch() {        	ports[0] = new ArrayList<PortReport>();        	ports[1] = new ArrayList<PortReport>();        }        /**         * Add a mismatched Port.          * @param listIndex  Cell index         * @param port  Port to add         */        public void add(int listIndex, PortReportable port) {            ports[listIndex].add(new PortReport(port));        }                /**         * Add all mismatched Ports in the proviede set          * @param listIndex  Cell index         * @param portSet  Ports to add         */        public void add(int listIndex, Set<PortReportable> portSet) {        	for (PortReportable p : portSet) ports[listIndex].add(new PortReport(p));        }                /**         * Get all Ports for a given Cell          * @param index  Cell index         * @return the list with all Posrt for the Cell with the given index          */        public List<PortReport> getAll(int index) {return ports[index];}    }            /**     * This class is a container for a suggested Export match.        */    public static class NameMismatch extends ExportMismatch {    	static final long serialVersionUID = 0;        /** Mismatched Export in the first design */ private PortReport exp1;        /** Suggested match in the second design  */ private NetObjReport exp2;                                                     // exp2 is Port or Wire                public NameMismatch() {            nameMatch = false;            topologyMatch = true;        }        public NameMismatch(String name1, String name2) {            desingNames[0] = name1;            desingNames[1] = name2;            nameMatch = false;            topologyMatch = true;        }        public PortReport   getFirstExport() { return exp1; }        public NetObjReport getSuggestion()  { return exp2; }                public void setFirstExport(PortReportable exp1)     {         	this.exp1 = new PortReport(exp1);         }        public void setSuggestion(NetObjReportable exp2) {         	this.exp2 = NetObjReport.newNetObjReport(exp2);         }    }    /**     * This class is a container for a topological Export mismatch.      * It also might have a suggested Export match.        */    public static class TopologyMismatch extends ExportMismatch{    	static final long serialVersionUID = 0;        /** Mismatched Exports           */ private PortReport exp1, exp2;        /** Suggestion in the 2nd design */ private NetObjReport sug = null;                                            // sug is Port or Wire                public TopologyMismatch() {            nameMatch = true;            topologyMatch = false;        }        public TopologyMismatch(String name1, String name2) {            desingNames[0] = name1;            desingNames[1] = name2;            nameMatch = true;            topologyMatch = false;        }        public PortReport   getFirstExport()  { return exp1; }        public PortReport   getSecondExport() { return exp2; }        public NetObjReport getSuggestion()   { return sug;  }                public void setFirstExport(PortReportable exp1){        	this.exp1 = new PortReport(exp1);         }                public void setSecondExport(PortReportable exp2) {        	this.exp2 = new PortReport(exp2);         }        public void setSuggestion(NetObjReportable sug) {         	this.sug = NetObjReport.newNetObjReport(sug);         }    }    }

⌨️ 快捷键说明

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