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

📄 gem.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			{				new Technology.NodeLayer(TA_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, box_7)			});		tp_node.addPrimitivePorts(new PrimitivePort[]			{				PrimitivePort.newInstance(this, tp_node, new ArcProto [] {Temporal_arc}, "temporal", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())			});		tp_node.setFunction(PrimitiveNode.Function.PIN);		tp_node.setArcsWipe();		tp_node.setArcsShrink();		/** Cause-Pin */		PrimitiveNode cp_node = PrimitiveNode.newInstance("Cause-Pin", this, 1, 1, null,			new Technology.NodeLayer []			{				new Technology.NodeLayer(CA_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, box_7)			});		cp_node.addPrimitivePorts(new PrimitivePort[]			{				PrimitivePort.newInstance(this, cp_node, new ArcProto [] {Causal_arc}, "cause", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())			});		cp_node.setFunction(PrimitiveNode.Function.PIN);		cp_node.setArcsWipe();		cp_node.setArcsShrink();		/** Prereq-Pin */		PrimitiveNode pp_node = PrimitiveNode.newInstance("Prereq-Pin", this, 1, 1, null,			new Technology.NodeLayer []			{				new Technology.NodeLayer(PA_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, box_7)			});		pp_node.addPrimitivePorts(new PrimitivePort[]			{				PrimitivePort.newInstance(this, pp_node, new ArcProto [] {Prerequisite_arc}, "prereq", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())			});		pp_node.setFunction(PrimitiveNode.Function.PIN);		pp_node.setArcsWipe();		pp_node.setArcsShrink();		/** Nondet-Pin */		PrimitiveNode np_node = PrimitiveNode.newInstance("Nondet-Pin", this, 1, 1, null,			new Technology.NodeLayer []			{				new Technology.NodeLayer(NA_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, box_7)			});		np_node.addPrimitivePorts(new PrimitivePort[]			{				PrimitivePort.newInstance(this, np_node, new ArcProto [] {Nondeterministic_arc}, "nondet", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())			});		np_node.setFunction(PrimitiveNode.Function.PIN);		np_node.setArcsWipe();		np_node.setArcsShrink();		/** Fork-Pin */		PrimitiveNode fp_node = PrimitiveNode.newInstance("Fork-Pin", this, 1, 1, null,			new Technology.NodeLayer []			{				new Technology.NodeLayer(FA_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, box_7)			});		fp_node.addPrimitivePorts(new PrimitivePort[]			{				PrimitivePort.newInstance(this, fp_node, new ArcProto [] {Nondeterministic_fork_arc}, "fork", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())			});		fp_node.setFunction(PrimitiveNode.Function.PIN);		fp_node.setArcsWipe();		fp_node.setArcsShrink();		/** Element */		e_node = PrimitiveNode.newInstance("Element", this, 8, 8, null,			new Technology.NodeLayer []			{				new Technology.NodeLayer(E_lay, 0, Poly.Type.CIRCLE, Technology.NodeLayer.POINTS, box_7)			});		e_node.addPrimitivePorts(new PrimitivePort[]			{				PrimitivePort.newInstance(this, e_node, new ArcProto [] {General_arc, Temporal_arc, Causal_arc, Prerequisite_arc, Nondeterministic_arc, Nondeterministic_fork_arc}, "port1", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.fromLeft(2), EdgeV.fromCenter(0.5), EdgeH.fromLeft(2), EdgeV.fromCenter(0.5)),				PrimitivePort.newInstance(this, e_node, new ArcProto [] {General_arc, Temporal_arc, Causal_arc, Prerequisite_arc, Nondeterministic_arc, Nondeterministic_fork_arc}, "port2", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.fromLeft(2), EdgeV.fromCenter(-0.5), EdgeH.fromLeft(2), EdgeV.fromCenter(-0.5)),				PrimitivePort.newInstance(this, e_node, new ArcProto [] {General_arc, Temporal_arc, Causal_arc, Prerequisite_arc, Nondeterministic_arc, Nondeterministic_fork_arc}, "port3", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.fromLeft(2), EdgeV.fromCenter(-1.5), EdgeH.fromLeft(2), EdgeV.fromCenter(-1.5)),				PrimitivePort.newInstance(this, e_node, new ArcProto [] {General_arc, Temporal_arc, Causal_arc, Prerequisite_arc, Nondeterministic_arc, Nondeterministic_fork_arc}, "port4", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.fromLeft(2), EdgeV.fromCenter(-2.5), EdgeH.fromLeft(2), EdgeV.fromCenter(-2.5))			});		e_node.setFunction(PrimitiveNode.Function.UNKNOWN);		/** Group */		PrimitiveNode g_node = PrimitiveNode.newInstance("Group", this, 10, 10, null,			new Technology.NodeLayer []			{				new Technology.NodeLayer(E_lay, 0, Poly.Type.CLOSED, Technology.NodeLayer.BOX, box_6)			});		g_node.addPrimitivePorts(new PrimitivePort[]			{				PrimitivePort.newInstance(this, g_node, new ArcProto [] {General_arc, Temporal_arc, Causal_arc, Prerequisite_arc, Nondeterministic_arc, Nondeterministic_fork_arc}, "group", 0,180, 0, PortCharacteristic.UNKNOWN,					EdgeH.makeLeftEdge(), EdgeV.makeBottomEdge(), EdgeH.makeRightEdge(), EdgeV.makeTopEdge())			});		g_node.setFunction(PrimitiveNode.Function.UNKNOWN);        // Building information for palette        nodeGroups = new Object[9][2];        int count = -1;        nodeGroups[++count][0] = General_arc; nodeGroups[count][1] = gp_node;        nodeGroups[++count][0] = Temporal_arc; nodeGroups[count][1] = tp_node;        nodeGroups[++count][0] = Causal_arc; nodeGroups[count][1] = cp_node;        nodeGroups[++count][0] = Prerequisite_arc; nodeGroups[count][1] = pp_node;        nodeGroups[++count][0] = Nondeterministic_arc; nodeGroups[count][1] = np_node;        nodeGroups[++count][0] = Nondeterministic_fork_arc; nodeGroups[count][1] = fp_node;        nodeGroups[++count][0] = Technology.SPECIALMENUCELL; nodeGroups[count][1] = e_node;        nodeGroups[++count][0] = Technology.SPECIALMENUMISC; nodeGroups[count][1] = g_node;        nodeGroups[++count][0] = Technology.SPECIALMENUPURE;                //Foundry        newFoundry(Foundry.Type.NONE, null);	};	//**************************************** METHODS ****************************************	/**	 * Method to return a list of Polys that describe a given NodeInst.	 * This method overrides the general one in the Technology object	 * because of the unusual primitives in this Technology.	 * @param ni the NodeInst to describe.	 * @param electrical true to get the "electrical" layers.	 * This makes no sense for Schematics primitives.	 * @param reasonable true to get only a minimal set of contact cuts in large contacts.	 * This makes no sense for Schematics primitives.	 * @param primLayers an array of NodeLayer objects to convert to Poly objects.	 * @param layerOverride the layer to use for all generated polygons (if not null).	 * @return an array of Poly objects.	 */    @Override	protected Poly [] getShapeOfNode(NodeInst ni, boolean electrical, boolean reasonable, Technology.NodeLayer [] primLayers, Layer layerOverride)	{		if (ni.getProto() == e_node)		{			Technology.NodeLayer [] eventLayers = new Technology.NodeLayer[6];			eventLayers[0] = new Technology.NodeLayer(E_lay, 0, Poly.Type.CIRCLE, Technology.NodeLayer.POINTS, box_7);			String title = "";			Variable varTitle = ni.getVar(ELEMENT_NAME);			if (varTitle != null) title = varTitle.getPureValue(-1);			eventLayers[1] = new Technology.NodeLayer(E_lay, 0, Poly.Type.TEXTCENT, Technology.NodeLayer.POINTS, new Technology.TechPoint[] {				new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.fromTop(1))});			eventLayers[1].setMessage(title);			String event1 = "";			Variable varEvent1 = ni.getVar(EVENT_1);			if (varEvent1 != null) event1 = varEvent1.getPureValue(-1);			eventLayers[2] = new Technology.NodeLayer(E_lay, 0, Poly.Type.TEXTLEFT, Technology.NodeLayer.POINTS, new Technology.TechPoint[] {				new Technology.TechPoint(EdgeH.fromLeft(2), EdgeV.fromCenter(0.5))});			eventLayers[2].setMessage(event1);			String event2 = "";			Variable varEvent2 = ni.getVar(EVENT_2);			if (varEvent2 != null) event2 = varEvent2.getPureValue(-1);			eventLayers[3] = new Technology.NodeLayer(E_lay, 0, Poly.Type.TEXTLEFT, Technology.NodeLayer.POINTS, new Technology.TechPoint[] {				new Technology.TechPoint(EdgeH.fromLeft(2), EdgeV.fromCenter(-0.5))});			eventLayers[3].setMessage(event2);			String event3 = "";			Variable varEvent3 = ni.getVar(EVENT_3);			if (varEvent3 != null) event3 = varEvent3.getPureValue(-1);			eventLayers[4] = new Technology.NodeLayer(E_lay, 0, Poly.Type.TEXTLEFT, Technology.NodeLayer.POINTS, new Technology.TechPoint[] {				new Technology.TechPoint(EdgeH.fromLeft(2), EdgeV.fromCenter(-1.5))});			eventLayers[4].setMessage(event3);			String event4 = "";			Variable varEvent4 = ni.getVar(EVENT_4);			if (varEvent4 != null) event4 = varEvent4.getPureValue(-1);			eventLayers[5] = new Technology.NodeLayer(E_lay, 0, Poly.Type.TEXTLEFT, Technology.NodeLayer.POINTS, new Technology.TechPoint[] {				new Technology.TechPoint(EdgeH.fromLeft(2), EdgeV.fromCenter(-2.5))});			eventLayers[5].setMessage(event4);			primLayers = eventLayers;		}		return super.getShapeOfNode(ni, electrical, reasonable, primLayers, layerOverride);	}}

⌨️ 快捷键说明

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