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

📄 techeditwizarddata.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        l.skill = name;        l.resistance = 1;        l.capacitance = 0;        l.edgeCapacitance = 0;//            if (layer.getPseudoLayer() != null)//                l.pseudoLayer = layer.getPseudoLayer().getName();        // if pureLayerNode is false, pureLayerPortArc must be false        assert(pureLayerNode || !pureLayerPortArc);        if (pureLayerNode) {            l.pureLayerNode = new Xml.PureLayerNode();            l.pureLayerNode.name = name + "-Node";            l.pureLayerNode.style = Poly.Type.FILLED;            l.pureLayerNode.size.addLambda(scaledValue(width.v));            l.pureLayerNode.port = "Port_" + name;/*            l.pureLayerNode.size.addRule(width.rule, 1);*/            if (pureLayerPortArc)                l.pureLayerNode.portArcs.add(name);//            for (ArcProto ap: pureLayerNode.getPort(0).getConnections()) {//                if (ap.getTechnology() != tech) continue;//                l.pureLayerNode.portArcs.add(ap.getName());//            }        }        layers.add(l);        layer_width.put(l, width);        return l;    }    /**     * Method to create the XML version of NodeLayer     */    private Xml.NodeLayer makeXmlNodeLayer(double lx, double hx, double ly, double hy, Xml.Layer lb, Poly.Type style,                                            boolean electricalLayers)    {        Xml.NodeLayer nl = new Xml.NodeLayer();        nl.layer = lb.name;        nl.style = style;        nl.inLayers = true;        nl.inElectricalLayers = electricalLayers;        nl.representation = Technology.NodeLayer.BOX;        nl.lx.k = -1; nl.hx.k = 1; nl.ly.k = -1; nl.hy.k = 1;        nl.lx.addLambda(-lx); nl.hx.addLambda(hx); nl.ly.addLambda(-ly); nl.hy.addLambda(hy);        return nl;    }        private Xml.NodeLayer makeXmlMulticut(Xml.Layer lb, double sizeRule, double sepRule, double sepRule2D) {        Xml.NodeLayer nl = new Xml.NodeLayer();        nl.layer = lb.name;        nl.style = Poly.Type.FILLED;        nl.inLayers = nl.inElectricalLayers = true;        nl.representation = Technology.NodeLayer.MULTICUTBOX;        nl.lx.k = -1; nl.hx.k = 1; nl.ly.k = -1; nl.hy.k = 1;//        nl.sizeRule = sizeRule;        nl.sizex = sizeRule;        nl.sizey = sizeRule;        nl.sep1d = sepRule;        nl.sep2d = sepRule2D;        return nl;            }    /**     * Method to create the XML versio nof PrimitivePort     * @return     */    private Xml.PrimitivePort makeXmlPrimitivePort(String name, int portAngle, int portRange, int portTopology,                                                   EPoint minFullSize, double lx, double hx, double ly, double hy,                                                   List<String> portArcs)    {        Xml.PrimitivePort ppd = new Xml.PrimitivePort();        double lambdaX = (minFullSize != null) ? minFullSize.getLambdaX() : 0;        double lambdaY = (minFullSize != null) ? minFullSize.getLambdaY() : 0;        ppd.name = name;        ppd.portAngle = portAngle;        ppd.portRange = portRange;        ppd.portTopology = portTopology;        ppd.lx.k = -1; //getLeft().getMultiplier()*2;        ppd.lx.addLambda(DBMath.round(lx + lambdaX*ppd.lx.k));        ppd.hx.k = 1; //getRight().getMultiplier()*2;        ppd.hx.addLambda(DBMath.round(hx + lambdaX*ppd.hx.k));        ppd.ly.k = -1; // getBottom().getMultiplier()*2;        ppd.ly.addLambda(DBMath.round(ly + lambdaY*ppd.ly.k));        ppd.hy.k = 1; // getTop().getMultiplier()*2;        ppd.hy.addLambda(DBMath.round(hy + lambdaY*ppd.hy.k));        if (portArcs != null) {            for (String s: portArcs)            {                ppd.portArcs.add(s);            }        }        return ppd;    }    /**     * Leave as oublic for the regression.     * @param fileName     * @throws IOException     */    public void dumpXMLFile(String fileName)        throws IOException    {        Xml.Technology t = new Xml.Technology();        t.techName = getTechName();        t.shortTechName = getTechName();        t.description = getTechDescription();        t.minNumMetals = t.maxNumMetals = t.defaultNumMetals = getNumMetalLayers();        t.scaleValue = getStepSize();        t.scaleRelevant = true;//        t.scaleRelevant = isScaleRelevant();        t.defaultFoundry = "NONE";        t.minResistance = 1.0;        t.minCapacitance = 0.1;        // LAYER COLOURS		Color [] metal_colour = new Color[]		{			new Color(0,150,255),   // cyan/blue			new Color(148,0,211),   // purple			new Color(255,215,0),   // yellow			new Color(132,112,255), // mauve			new Color(255,160,122), // salmon			new Color(34,139,34),   // dull green			new Color(178,34,34),   // dull red			new Color(34,34,178),   // dull blue			new Color(153,153,153), // light gray			new Color(102,102,102)  // dark gray		};		Color poly_colour = new Color(255,155,192);   // pink		Color diff_colour = new Color(107,226,96);    // light green		Color via_colour = new Color(205,205,205);    // lighter gray		Color contact_colour = new Color(40,40,40);   // darker gray		Color nplus_colour = new Color(224,238,224);		Color pplus_colour = new Color(224,224,120);		Color nwell_colour = new Color(140,140,140);        // Five transparent colors: poly_colour, diff_colour, metal_colour[0->2]        Color[] colorMap = {poly_colour, diff_colour, metal_colour[0], metal_colour[1], metal_colour[2]};        for (int i = 0; i < colorMap.length; i++) {            Color transparentColor = colorMap[i];            t.transparentLayers.add(transparentColor);        }        // Layers        List<Xml.Layer> metalLayers = new ArrayList<Xml.Layer>();        List<Xml.Layer> viaLayers = new ArrayList<Xml.Layer>();        Map<Xml.Layer,WizardField> layer_width = new LinkedHashMap<Xml.Layer,WizardField>();        int[] nullPattern = new int[] {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,            0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};        int cifNumber = 0;        for (int i = 0; i < num_metal_layers; i++)        {            // Adding the metal            int metalNum = i + 1;            double opacity = (75 - metalNum * 5)/100.0;            int metLayHigh = i / 10;            int metLayDig = i % 10;            int r = metal_colour[metLayDig].getRed() * (10-metLayHigh) / 10;            int g = metal_colour[metLayDig].getGreen() * (10-metLayHigh) / 10;            int b = metal_colour[metLayDig].getBlue() * (10-metLayHigh) / 10;            int tcol = 0;            int[] pattern = null;            switch (metLayDig)            {                case 0: tcol = 3;   break;                case 1: tcol = 4;   break;                case 2: tcol = 5;   break;                case 3: pattern = new int[] {0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000,   //                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000,   //                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000,   //                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000,   //                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000,   //                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000,   //                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000,   //                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x0000}; break;                case 4: pattern = new int[] { 0x8888,   // X   X   X   X                        0x1111,   //    X   X   X   X                        0x2222,   //   X   X   X   X                        0x4444,   //  X   X   X   X                        0x8888,   // X   X   X   X                        0x1111,   //    X   X   X   X                        0x2222,   //   X   X   X   X                        0x4444,   //  X   X   X   X                        0x8888,   // X   X   X   X                        0x1111,   //    X   X   X   X                        0x2222,   //   X   X   X   X                        0x4444,   //  X   X   X   X                        0x8888,   // X   X   X   X                        0x1111,   //    X   X   X   X                        0x2222,   //   X   X   X   X                        0x4444};                    break;                case 5: pattern = new int[] { 0x1111,   //    X   X   X   X                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x1111,   //    X   X   X   X                        0x5555,   //  X X X X X X X X                        0x1111,   //    X   X   X   X                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x1111,   //    X   X   X   X                        0x5555,   //  X X X X X X X X                        0x1111,   //    X   X   X   X                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x1111,   //    X   X   X   X                        0x5555,   //  X X X X X X X X                        0x1111,   //    X   X   X   X                        0xFFFF,   // XXXXXXXXXXXXXXXX                        0x1111,   //    X   X   X   X                        0x5555};                    break;                case 6: pattern =  new int[] { 0x8888,   // X   X   X   X                        0x4444,   //  X   X   X   X                        0x2222,   //   X   X   X   X                        0x1111,   //    X   X   X   X                        0x8888,   // X   X   X   X                        0x4444,   //  X   X   X   X                        0x2222,   //   X   X   X   X                        0x1111,   //    X   X   X   X                        0x8888,   // X   X   X   X                        0x4444,   //  X   X   X   X                        0x2222,   //   X   X   X   X                        0x1111,   //    X   X   X   X                        0x8888,   // X   X   X   X                        0x4444,   //  X   X   X   X                        0x2222,   //   X   X   X   X                        0x1111};                    break;                case 7: pattern =  new int[] { 0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888,   // X   X   X   X                        0x0000,   //                        0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888,   // X   X   X   X                        0x0000,   //                        0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888,   // X   X   X   X                        0x0000,   //                        0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888,   // X   X   X   X                        0x0000};                    break;                case 8: pattern =  new int[] {0x0000,   //                        0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888,   // X   X   X   X                        0x0000,   //                        0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888,   // X   X   X   X                        0x0000,   //                        0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888,   // X   X   X   X                        0x0000,   //                        0x2222,   //   X   X   X   X                        0x0000,   //                        0x8888};  // X   X   X   X                    break;                case 9: pattern

⌨️ 快捷键说明

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