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

📄 techeditwizarddata.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    void setNPlusOverhangDiff(WizardField v) { nplus_overhang_diff = v; }    WizardField getNPlusOverhangPoly() { return nplus_overhang_poly; }    void setNPlusOverhangPoly(WizardField v) { nplus_overhang_poly = v; }	WizardField getNPlusSpacing() { return nplus_spacing; }	void setNPlusSpacing(WizardField v) { nplus_spacing = v; }	WizardField getPPlusWidth() { return pplus_width; }	void setPPlusWidth(WizardField v) { pplus_width = v; }	WizardField getPPlusOverhangDiff() { return pplus_overhang_diff; }	void setPPlusOverhangDiff(WizardField v) { pplus_overhang_diff = v; }	WizardField getPPlusOverhangPoly() { return pplus_overhang_poly; }	void setPPlusOverhangPoly(WizardField v) { pplus_overhang_poly = v; }	WizardField getPPlusSpacing() { return pplus_spacing; }	void setPPlusSpacing(WizardField v) { pplus_spacing = v; }	WizardField getNWellWidth() { return nwell_width; }	void setNWellWidth(WizardField v) { nwell_width = v; }	WizardField getNWellOverhangDiffP() { return nwell_overhang_diff_p; }	void setNWellOverhangDiffP(WizardField v) { nwell_overhang_diff_p = v; }	WizardField getNWellOverhangDiffN() { return nwell_overhang_diff_n; }	void setNWellOverhangDiffN(WizardField v) { nwell_overhang_diff_n = v; }	WizardField getNWellSpacing() { return nwell_spacing; }	void setNWellSpacing(WizardField v) { nwell_spacing = v; }	// METAL RULES	WizardField [] getMetalWidth() { return metal_width; }	void setMetalWidth(int met, WizardField value) { metal_width[met] = value; }	WizardField [] getMetalSpacing() { return metal_spacing; }	void setMetalSpacing(int met, WizardField value) { metal_spacing[met] = value; }	// VIA RULES	WizardField [] getViaSize() { return via_size; }	void setViaSize(int via, WizardField value) { via_size[via] = value; }	WizardField [] getViaSpacing() { return via_spacing; }	void setViaSpacing(int via, WizardField value) { via_spacing[via] = value; }	WizardField [] getViaArraySpacing() { return via_array_spacing; }	void setViaArraySpacing(int via, WizardField value) { via_array_spacing[via] = value; }	WizardField [] getViaOverhangInline() { return via_overhang_inline; }	void setViaOverhangInline(int via, WizardField value) { via_overhang_inline[via] = value; }	// ANTENNA RULES	public double getPolyAntennaRatio() { return poly_antenna_ratio; }	void setPolyAntennaRatio(double v) { poly_antenna_ratio = v; }	public double [] getMetalAntennaRatio() { return metal_antenna_ratio; }	void setMetalAntennaRatio(int met, double value) { metal_antenna_ratio[met] = value; }	// GDS-II LAYERS	int getGDSDiff() { return gds_diff_layer; }	void setGDSDiff(int l) { gds_diff_layer = l; }	int getGDSPoly() { return gds_poly_layer; }	void setGDSPoly(int l) { gds_poly_layer = l; }	int getGDSNPlus() { return gds_nplus_layer; }	void setGDSNPlus(int l) { gds_nplus_layer = l; }	int getGDSPPlus() { return gds_pplus_layer; }	void setGDSPPlus(int l) { gds_pplus_layer = l; }	int getGDSNWell() { return gds_nwell_layer; }	void setGDSNWell(int l) { gds_nwell_layer = l; }	int getGDSContact() { return gds_contact_layer; }	void setGDSContact(int l) { gds_contact_layer = l; }	int [] getGDSMetal() { return gds_metal_layer; }	void setGDSMetal(int met, int l) { gds_metal_layer[met] = l; }	int [] getGDSVia() { return gds_via_layer; }	void setGDSVia(int via, int l) { gds_via_layer[via] = l; }	int getGDSMarking() { return gds_marking_layer; }	void setGDSMarking(int l) { gds_marking_layer = l; }	private String errorInData()	{		// check the General data		if (tech_name == null || tech_name.length() == 0) return "General panel: No technology name";		if (stepsize == 0) return "General panel: Invalid unit size";		// check the Active data		if (diff_width.v == 0) return "Active panel: Invalid width";		// check the Poly data		if (poly_width.v == 0) return "Poly panel: Invalid width";		// check the Gate data		if (gate_width.v == 0) return "Gate panel: Invalid width";		if (gate_length.v == 0) return "Gate panel: Invalid length";		// check the Contact data		if (contact_size.v == 0) return "Contact panel: Invalid size";		// check the Well/Implant data		if (nplus_width.v == 0) return "Well/Implant panel: Invalid NPlus width";		if (pplus_width.v == 0) return "Well/Implant panel: Invalid PPlus width";		if (nwell_width.v == 0) return "Well/Implant panel: Invalid NWell width";		// check the Metal data		for(int i=0; i<num_metal_layers; i++)			if (metal_width[i].v == 0) return "Metal panel: Invalid Metal-" + (i+1) + " width";		// check the Via data		for(int i=0; i<num_metal_layers-1; i++)			if (via_size[i].v == 0) return "Via panel: Invalid Via-" + (i+1) + " size";		return null;	}	/************************************** IMPORT RAW NUMBERS FROM DISK **************************************/	/**	 * Method to import data from a file to this object.	 * @return true on success; false on failure.	 */	boolean importData()	{		String fileName = OpenFile.chooseInputFile(FileType.ANY, "Technology Wizard File");		if (fileName == null) return false;        return importData(fileName);    }    /**     * Method to import data from a given file to this object. It is also in the regression so     * keep the access.     * @param fileName the name of the file to import.     * @return true on success; false on failure.     */    public boolean importData(String fileName)    {        URL url = TextUtils.makeURLToFile(fileName);		try		{			URLConnection urlCon = url.openConnection();			InputStreamReader is = new InputStreamReader(urlCon.getInputStream());			LineNumberReader lineReader = new LineNumberReader(is);			for(;;)			{				String buf = lineReader.readLine();				if (buf == null) break;				buf = buf.trim();				if (buf.length() == 0 || buf.startsWith("#")) continue;				// parse the assignment				if (buf.startsWith("$") || buf.startsWith("@"))				{					int spacePos = buf.indexOf(' ');					int equalsPos = buf.indexOf('=');					if (equalsPos < 0)					{						Job.getUserInterface().showErrorMessage("Missing '=' on line " + lineReader.getLineNumber(),							"Syntax Error In Technology File");						break;					}					if (spacePos < 0) spacePos = equalsPos; else						spacePos = Math.min(spacePos, equalsPos);					String varName = buf.substring(1, spacePos);					int semiPos = buf.indexOf(';');					if (semiPos < 0)					{						Job.getUserInterface().showErrorMessage("Missing ';' on line " + lineReader.getLineNumber(),							"Syntax Error In Technology File");						break;					}					equalsPos++;					while (equalsPos < semiPos && buf.charAt(equalsPos) == ' ') equalsPos++;					String varValue = buf.substring(equalsPos, semiPos);					// now figure out what to assign					if (varName.equalsIgnoreCase("tech_libname")) { } else					if (varName.equalsIgnoreCase("tech_name")) setTechName(stripQuotes(varValue)); else					if (varName.equalsIgnoreCase("tech_description")) setTechDescription(stripQuotes(varValue)); else					if (varName.equalsIgnoreCase("num_metal_layers")) setNumMetalLayers(TextUtils.atoi(varValue)); else                    if (varName.equalsIgnoreCase("pwell_process")) setPWellProcess(Boolean.valueOf(varValue)); else                    if (varName.equalsIgnoreCase("horizontal_transistors")) setHorizontalTransistors(Boolean.valueOf(varValue)); else                    if (varName.equalsIgnoreCase("stepsize")) setStepSize(TextUtils.atoi(varValue)); else					if (varName.equalsIgnoreCase("diff_width")) diff_width.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("diff_width_rule")) diff_width.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("diff_poly_overhang")) diff_poly_overhang.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("diff_poly_overhang_rule")) diff_poly_overhang.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("diff_contact_overhang")) diff_contact_overhang.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("diff_contact_overhang_rule")) diff_contact_overhang.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("diff_spacing")) diff_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("diff_spacing_rule")) diff_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("poly_width")) poly_width.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("poly_width_rule")) poly_width.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("poly_endcap")) poly_endcap.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("poly_endcap_rule")) poly_endcap.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("poly_spacing")) poly_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("poly_spacing_rule")) poly_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("poly_diff_spacing")) poly_diff_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("poly_diff_spacing_rule")) poly_diff_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("gate_length")) gate_length.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("gate_length_rule")) gate_length.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("gate_width")) gate_width.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("gate_width_rule")) gate_width.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("gate_spacing")) gate_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("gate_spacing_rule")) gate_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("gate_contact_spacing")) gate_contact_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("gate_contact_spacing_rule")) gate_contact_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("contact_size")) contact_size.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("contact_size_rule")) contact_size.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("contact_spacing")) contact_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("contact_spacing_rule")) contact_spacing.rule = stripQuotes(varValue); else                    if (varName.equalsIgnoreCase("contact_array_spacing")) contact_array_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("contact_array_spacing_rule")) contact_array_spacing.rule = stripQuotes(varValue); else                    if (varName.equalsIgnoreCase("contact_metal_overhang_inline_only")) contact_metal_overhang_inline_only.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("contact_metal_overhang_inline_only_rule")) contact_metal_overhang_inline_only.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("contact_metal_overhang_all_sides")) contact_metal_overhang_all_sides.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("contact_metal_overhang_all_sides_rule")) contact_metal_overhang_all_sides.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("contact_poly_overhang")) contact_poly_overhang.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("contact_poly_overhang_rule")) contact_poly_overhang.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("polycon_diff_spacing")) polycon_diff_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("polycon_diff_spacing_rule")) polycon_diff_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("nplus_width")) nplus_width.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nplus_width_rule")) nplus_width.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("nplus_overhang_diff")) nplus_overhang_diff.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nplus_overhang_diff_rule")) nplus_overhang_diff.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("nplus_overhang_poly")) nplus_overhang_poly.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nplus_overhang_poly_rule")) nplus_overhang_poly.rule = stripQuotes(varValue); else                    if (varName.equalsIgnoreCase("nplus_spacing")) nplus_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nplus_spacing_rule")) nplus_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("pplus_width")) pplus_width.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("pplus_width_rule")) pplus_width.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("pplus_overhang_diff")) pplus_overhang_diff.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("pplus_overhang_diff_rule")) pplus_overhang_diff.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("pplus_overhang_poly")) pplus_overhang_poly.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("pplus_overhang_poly_rule")) pplus_overhang_poly.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("pplus_spacing")) pplus_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("pplus_spacing_rule")) pplus_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("nwell_width")) nwell_width.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nwell_width_rule")) nwell_width.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("nwell_overhang_diff_p")) nwell_overhang_diff_p.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nwell_overhang_diff_rule_p")) nwell_overhang_diff_p.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("nwell_overhang_diff_n")) nwell_overhang_diff_n.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nwell_overhang_diff_rule_n")) nwell_overhang_diff_n.rule = stripQuotes(varValue); else                    if (varName.equalsIgnoreCase("nwell_spacing")) nwell_spacing.v = TextUtils.atof(varValue); else					if (varName.equalsIgnoreCase("nwell_spacing_rule")) nwell_spacing.rule = stripQuotes(varValue); else					if (varName.equalsIgnoreCase("metal_width")) fillWizardArray(varValue, metal_width, num_metal_layers, false); else					if (varName.equalsIgnoreCase("metal_width_rule")) fillWizardArray(varValue, metal_width, num_metal_layers, true); else					if (varName.equalsIgnoreCase("metal_spacing")) fillWizardArray(varValue, metal_spacing, num_metal_layers, false); else					if (varName.equalsIgnoreCase("metal_spacing_rule")) fillWizardArray(varValue, metal_spacing, num_metal_layers, true); else					if (varName.equalsIgnoreCase("via_size")) fillWizardArray(varValue, via_size, num_metal_layers-1, false); else					if (varName.equalsIgnoreCase("via_size_rule")) fillWizardArray(varValue, via_size, num_metal_layers-1, true); else					if (varName.equalsIgnoreCase("via_spacing")) fillWizardArray(varValue, via_spacing, num_metal_layers-1, false); else					if (varName.equalsIgnoreCase("via_spacing_rule")) fillWizardArray(varValue, via_spacing, num_metal_layers-1, true); else					if (varName.equalsIgnoreCase("via_array_spacing")) fillWizardArray(varValue, via_array_spacing, num_metal_layers-1, false); else					if (varName.equalsIgnoreCase("via_array_spacing_rule")) fillWizardArray(varValue, via_array_spacing, num_metal_layers-1, true); else					if (varName.equalsIgnoreCase("via_overhang_inline")) fillWizardArray(varValue, via_overhang_inline, num_metal_layers-1, false); else					if (varName.equalsIgnoreCase("via_overhang_inline_rule")) fillWizardArray(varValue, via_overhang_inline, num_metal_layers-1, true); else					if (varName.equalsIgnoreCase("poly_antenna_ratio")) setPolyAntennaRatio(TextUtils.atof(varValue)); else					if (varName.equalsIgnoreCase("metal_antenna_ratio")) metal_antenna_ratio = makeDoubleArray(varValue); else					if (varName.equalsIgnoreCase("gds_diff_layer")) setGDSDiff(TextUtils.atoi(varValue)); else					if (varName.equalsIgnoreCase("gds_poly_layer")) setGDSPoly(TextUtils.atoi(varValue)); else					if (varName.equalsIgnoreCase("gds_nplus_layer")) setGDSNPlus(TextUtils.atoi(varValue)); else					if (varName.equalsIgnoreCase("gds_pplus_layer")) setGDSPPlus(TextUtils.atoi(varValue)); else					if (varName.equalsIgnoreCase("gds_nwell_layer")) setGDSNWell(TextUtils.atoi(varValue)); else					if (varName.equalsIgnoreCase("gds_contact_layer")) setGDSContact(TextUtils.atoi(varValue)); else					if (varName.equalsIgnoreCase("gds_metal_layer")) gds_metal_layer = makeIntArray(varValue); else					if (varName.equalsIgnoreCase("gds_via_layer")) gds_via_layer = makeIntArray(varValue); else					if (varName.equalsIgnoreCase("gds_marking_layer")) setGDSMarking(TextUtils.atoi(varValue)); else					{						Job.getUserInterface().showErrorMessage("Unknown keyword '" + varName + "' on line " + lineReader.getLineNumber(),							"Syntax Error In Technology File");						break;					}				}			}			lineReader.close();		} catch (IOException e)		{			System.out.println("Error reading " + fileName);			return false;		}

⌨️ 快捷键说明

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