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

📄 signal.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: Signal.java * * Copyright (c) 2005 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.simulation;import java.awt.geom.Rectangle2D;/** * Class to define the basic parts of a signal in the simulation waveform window. * This is a superclass for specific signal types: Measurement and TimedSignal * (which has under it DigitalSignal and AnalogSignal). */public abstract class Signal{	/** the name of this signal */									private String signalName;	/** the context of this signal (qualifications to name) */		private String signalContext;	/** the range of values in the X and Y axes */					protected Rectangle2D bounds;	/** the left and right X values */								protected double leftEdge, rightEdge;	public void finished()	{	}	/**	 * Method to return the Analysis in which this signal resides.	 * @return the Analysis in which this signal resides.	 */	public abstract Analysis getAnalysis();	/**	 * Method to set the name and context of this simulation signal.	 * The name does not include any hierarchical path information: it is just a simple name.	 * The context is the hierarchical path to the signal, and it usually contains	 * instance names of cells farther up the hierarchy, all separated by dots.	 * @param signalName the name of this simulation signal.	 * @param signalContext the context of this simulation signal.	 */	public void setSignalName(String signalName, String signalContext)	{		this.signalName = signalName;		this.signalContext = signalContext;		getAnalysis().nameSignal(this, getFullName());	}	/**	 * Method to return the name of this simulation signal.	 * The name does not include any hierarchical path information: it is just a simple name.	 * @return the name of this simulation signal.	 */	public String getSignalName() { return signalName; }	/**	 * Method to return the context of this simulation signal.	 * The context is the hierarchical path to the signal, and it usually contains	 * instance names of cells farther up the hierarchy, all separated by dots.	 * @param signalContext the context of this simulation signal.	 */	public void setSignalContext(String signalContext) { this.signalContext = signalContext; }	/**	 * Method to return the context of this simulation signal.	 * The context is the hierarchical path to the signal, and it usually contains	 * instance names of cells farther up the hierarchy, all separated by dots.	 * @return the context of this simulation signal.	 * If there is no context, this returns null.	 */	public String getSignalContext() { return signalContext; }	/**	 * Method to return the full name of this simulation signal.	 * The full name includes the context, if any.	 * @return the full name of this simulation signal.	 */	public String getFullName()	{		if (signalContext != null) return signalContext + getAnalysis().getStimuli().getSeparatorChar() + signalName;		return signalName;	}	/**	 * Method to return a list of control points associated with this signal.	 * Control points are places where the user has added stimuli to the signal (set a level or strength).	 * These points can be selected for change of the stimuli.	 * Note that the control point structures are not stored on this object because that would consume	 * too much memory for such little-used information.	 * Instead, the control point data is stored in HashMaps on the Stimuli.	 * @return an array of times where there are control points.	 * Null if no control points are defined.	 */	public Double [] getControlPoints() { return getAnalysis().getStimuli().getControlPoints(this); }	/**	 * Method to clear the list of control points associated with this signal.	 * Control points are places where the user has added stimuli to the signal (set a level or strength).	 * These points can be selected for change of the stimuli.	 * Note that the control point structures are not stored on this object because that would consume	 * too much memory for such little-used information.	 * Instead, the control point data is stored in HashMaps on the Stimuli.	 */	public void clearControlPoints() { getAnalysis().getStimuli().clearControlPoints(this); }	/**	 * Method to add a new control point to the list on this signal.	 * Control points are places where the user has added stimuli to the signal (set a level or strength).	 * These points can be selected for change of the stimuli.	 * Note that the control point structures are not stored on this object because that would consume	 * too much memory for such little-used information.	 * Instead, the control point data is stored in HashMaps on the Stimuli.	 * @param time the time of the new control point.	 */	public void addControlPoint(double time)	{		getAnalysis().getStimuli().addControlPoint(this, time);	}	/**	 * Method to remove control points the list on this signal.	 * Control points are places where the user has added stimuli to the signal (set a level or strength).	 * These points can be selected for change of the stimuli.	 * Note that the control point structures are not stored on this object because that would consume	 * too much memory for such little-used information.	 * Instead, the control point data is stored in HashMaps on the Stimuli.	 * @param time the time of the control point to delete.	 */	public void removeControlPoint(double time)	{		getAnalysis().getStimuli().removeControlPoint(this, time);	}	/**	 * Method to compute the time and value bounds of this simulation signal.	 * @return a Rectangle2D that has time bounds in the X part and	 * value bounds in the Y part.	 * For digital signals, the Y part is simply 0 to 1.	 */	public Rectangle2D getBounds()	{		if (bounds == null)		{			calcBounds();		}		return bounds;	}	/**	 * Method to return the leftmost X coordinate of this simulation signal.	 * This value may not be the same as the minimum-x of the bounds, because	 * the data may not be monotonically increasing (may run backwards, for example).	 * @return the leftmost X coordinate of this simulation signal.	 */	public double getLeftEdge()	{		if (bounds == null)			calcBounds();		return leftEdge;	}	/**	 * Method to return the rightmost X coordinate of this simulation signal.	 * This value may not be the same as the maximum-x of the bounds, because	 * the data may not be monotonically increasing (may run backwards, for example).	 * @return the rightmost X coordinate of this simulation signal.	 */	public double getRightEdge()	{		if (bounds == null)			calcBounds();		return rightEdge;	}	protected void calcBounds() {}}

⌨️ 快捷键说明

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