📄 techeditwizarddata.java
字号:
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 + -