📄 toolmenu.java
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: ToolMenu.java * * Copyright (c) 2003 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.user.menus;import static com.sun.electric.tool.user.menus.EMenuItem.SEPARATOR;import com.sun.electric.database.geometry.EPoint;import com.sun.electric.database.geometry.GeometryHandler;import com.sun.electric.database.geometry.Poly;import com.sun.electric.database.hierarchy.Cell;import com.sun.electric.database.hierarchy.Export;import com.sun.electric.database.hierarchy.HierarchyEnumerator;import com.sun.electric.database.hierarchy.Library;import com.sun.electric.database.hierarchy.Nodable;import com.sun.electric.database.hierarchy.View;import com.sun.electric.database.id.CellUsage;import com.sun.electric.database.network.Netlist;import com.sun.electric.database.network.Network;import com.sun.electric.database.network.NetworkTool;import com.sun.electric.database.prototype.NodeProto;import com.sun.electric.database.prototype.PortCharacteristic;import com.sun.electric.database.prototype.PortProto;import com.sun.electric.database.text.TextUtils;import com.sun.electric.database.topology.ArcInst;import com.sun.electric.database.topology.Connection;import com.sun.electric.database.topology.NodeInst;import com.sun.electric.database.topology.PortInst;import com.sun.electric.database.variable.DisplayedText;import com.sun.electric.database.variable.EditWindow_;import com.sun.electric.database.variable.ElectricObject;import com.sun.electric.database.variable.EvalJavaBsh;import com.sun.electric.database.variable.TextDescriptor;import com.sun.electric.database.variable.VarContext;import com.sun.electric.database.variable.Variable;import com.sun.electric.lib.LibFile;import com.sun.electric.technology.DRCTemplate;import com.sun.electric.technology.Foundry;import com.sun.electric.technology.Layer;import com.sun.electric.technology.PrimitiveNode;import com.sun.electric.technology.PrimitivePort;import com.sun.electric.technology.Technology;import com.sun.electric.technology.technologies.Generic;import com.sun.electric.technology.technologies.Schematics;import com.sun.electric.tool.Job;import com.sun.electric.tool.JobException;import com.sun.electric.tool.Tool;import com.sun.electric.tool.compaction.Compaction;import com.sun.electric.tool.drc.AssuraDrcErrors;import com.sun.electric.tool.drc.CalibreDrcErrors;import com.sun.electric.tool.drc.DRC;import com.sun.electric.tool.drc.MTDRCLayoutTool;import com.sun.electric.tool.erc.ERCAntenna;import com.sun.electric.tool.erc.ERCWellCheck;import com.sun.electric.tool.extract.Connectivity;import com.sun.electric.tool.extract.LayerCoverageTool;import com.sun.electric.tool.extract.ParasiticTool;import com.sun.electric.tool.generator.PadGenerator;import com.sun.electric.tool.generator.ROMGenerator;import com.sun.electric.tool.generator.cmosPLA.PLA;import com.sun.electric.tool.generator.layout.GateLayoutGenerator;import com.sun.electric.tool.generator.layout.TechType;import com.sun.electric.tool.generator.layout.fill.StitchFillJob;import com.sun.electric.tool.io.FileType;import com.sun.electric.tool.io.input.LibraryFiles;import com.sun.electric.tool.io.input.Simulate;import com.sun.electric.tool.io.output.GenerateVHDL;import com.sun.electric.tool.io.output.Spice;import com.sun.electric.tool.io.output.Verilog;import com.sun.electric.tool.logicaleffort.LENetlister;import com.sun.electric.tool.logicaleffort.LETool;import com.sun.electric.tool.ncc.AllSchemNamesToLay;import com.sun.electric.tool.ncc.Ncc;import com.sun.electric.tool.ncc.NccCrossProbing;import com.sun.electric.tool.ncc.NccJob;import com.sun.electric.tool.ncc.NccOptions;import com.sun.electric.tool.ncc.Pie;import com.sun.electric.tool.ncc.SchemNamesToLay;import com.sun.electric.tool.ncc.basic.NccCellAnnotations;import com.sun.electric.tool.ncc.basic.NccUtils;import com.sun.electric.tool.ncc.netlist.NccNetlist;import com.sun.electric.tool.ncc.result.NccResult;import com.sun.electric.tool.ncc.result.NccResults;import com.sun.electric.tool.ncc.result.equivalence.Equivalence;import com.sun.electric.tool.routing.AutoStitch;import com.sun.electric.tool.routing.Maze;import com.sun.electric.tool.routing.MimicStitch;import com.sun.electric.tool.routing.River;import com.sun.electric.tool.routing.Routing;import com.sun.electric.tool.routing.SeaOfGates;import com.sun.electric.tool.sc.GetNetlist;import com.sun.electric.tool.sc.Maker;import com.sun.electric.tool.sc.Place;import com.sun.electric.tool.sc.Route;import com.sun.electric.tool.sc.SilComp;import com.sun.electric.tool.simulation.Simulation;import com.sun.electric.tool.user.CompileVHDL;import com.sun.electric.tool.user.Highlight2;import com.sun.electric.tool.user.Highlighter;import com.sun.electric.tool.user.User;import com.sun.electric.tool.user.dialogs.FastHenryArc;import com.sun.electric.tool.user.dialogs.FillGenDialog;import com.sun.electric.tool.user.dialogs.OpenFile;import com.sun.electric.tool.user.ncc.HighlightEquivalent;import com.sun.electric.tool.user.ui.EditWindow;import com.sun.electric.tool.user.ui.TextWindow;import com.sun.electric.tool.user.ui.TopLevel;import com.sun.electric.tool.user.ui.WindowFrame;import java.awt.Color;import java.awt.event.KeyEvent;import java.awt.geom.Point2D;import java.net.URL;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import javax.swing.JOptionPane;import javax.swing.KeyStroke;/** * Class to handle the commands in the "Tools" pulldown menu. */public class ToolMenu { static EMenu makeMenu() { /****************************** THE TOOLS MENU ******************************/ // mnemonic keys available: B F H JK PQ XYZ return new EMenu("_Tools", //------------------- DRC // mnemonic keys available: B EFG IJK MNOPQR UVWXYZ new EMenu("_DRC", new EMenuItem("Check _Hierarchically", KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0)) { public void run() { Cell cell = Job.getUserInterface().needCurrentCell(); // Multi-threaded code is only available for layout if (DRC.isMultiThreaded() && cell.isLayout()) { new MTDRCLayoutTool(cell, true, null).startJob(); } else { DRC.checkDRCHierarchically(cell, null, null, GeometryHandler.GHMode.ALGO_SWEEP, false); } }}, new EMenuItem("Check _Selection Hierarchically") { public void run() { EditWindow_ wnd = Job.getUserInterface().getCurrentEditWindow_(); if (wnd == null) return; DRC.checkDRCHierarchically(wnd.getCell(), wnd.getHighlightedEObjs(true, true), wnd.getHighlightedArea(), GeometryHandler.GHMode.ALGO_SWEEP, false); }}, new EMenuItem("Check Area _Coverage") { public void run() { LayerCoverageTool.layerCoverageCommand(WindowFrame.needCurCell(), GeometryHandler.GHMode.ALGO_SWEEP, true); }}, new EMenuItem("_List Layer Coverage on Cell") { public void run() { layerCoverageCommand(LayerCoverageTool.LCMode.AREA, GeometryHandler.GHMode.ALGO_SWEEP); }}, SEPARATOR, new EMenuItem("Import _Assura DRC Errors for Current Cell...") { public void run() { importAssuraDrcErrors(); }}, new EMenuItem("Import Calibre _DRC Errors for Current Cell...") { public void run() { importCalibreDrcErrors(); }}, SEPARATOR, new EMenuItem("Export DRC Deck...") { public void run() { exportDRCDeck(); }}, new EMenuItem("Import DRC Deck...") { public void run() { importDRCDeck(); }}), //------------------- Simulation (Built-in) // mnemonic keys available: B JK N PQ XYZ new EMenu("Simulation (Built-in)", Simulation.hasIRSIM() ? new EMenuItem("IRSI_M: Simulate Current Cell") { public void run() { Simulation.startSimulation(Simulation.IRSIM_ENGINE, false, null, null); }} : null, Simulation.hasIRSIM() ? new EMenuItem("IRSIM: _Write Deck...") { public void run() { FileMenu.exportCommand(FileType.IRSIM, true); }} : null, Simulation.hasIRSIM() ? new EMenuItem("_IRSIM: Simulate Deck...") { public void run() { Simulation.startSimulation(Simulation.IRSIM_ENGINE, true, null, null); }} : null, Simulation.hasIRSIM() ? SEPARATOR : null, new EMenuItem("_ALS: Simulate Current Cell") { public void run() { Simulation.startSimulation(Simulation.ALS_ENGINE, false, null, null); }}, Simulation.hasFLEET() ? SEPARATOR : null, Simulation.hasFLEET() ? Simulation.FLEETMenu() : null, SEPARATOR, new EMenuItem("Set Signal _High at Main Time", KeyStroke.getKeyStroke('V', 0)) { public void run() { Simulation.setSignalHigh(); }}, new EMenuItem("Set Signal _Low at Main Time", KeyStroke.getKeyStroke('G', 0)) { public void run() { Simulation.setSignalLow(); }}, new EMenuItem("Set Signal Un_defined at Main Time", KeyStroke.getKeyStroke('X', 0)) { public void run() { Simulation.setSignalX(); }}, new EMenuItem("Set Clock on Selected Signal...") { public void run() { Simulation.setClock(); }}, SEPARATOR, new EMenuItem("_Update Simulation Window") { public void run() { Simulation.update(); }}, new EMenuItem("_Get Information about Selected Signals") { public void run() { Simulation.showSignalInfo(); }}, SEPARATOR, new EMenuItem("_Clear Selected Stimuli") { public void run() { Simulation.removeSelectedStimuli(); }}, new EMenuItem("Clear All Stimuli _on Selected Signals") { public void run() { Simulation.removeStimuliFromSignal(); }}, new EMenuItem("Clear All S_timuli") { public void run() { Simulation.removeAllStimuli(); }}, SEPARATOR, new EMenuItem("_Save Stimuli to Disk...") { public void run() { Simulation.saveStimuli(); }}, new EMenuItem("_Restore Stimuli from Disk...") { public void run() { Simulation.restoreStimuli(); }}), //------------------- Simulation (SPICE) // mnemonic keys available: AB IJK NO QR VWXYZ new EMenu("Simulation (_Spice)", new EMenuItem("Write Spice _Deck...") { public void run() { FileMenu.exportCommand(FileType.SPICE, true); }}, new EMenuItem("Write _CDL Deck...") { public void run() { FileMenu.exportCommand(FileType.CDL, true); }}, new EMenuItem("Plot Spice _Listing...") { public void run() { Simulate.plotSpiceResults(); }}, new EMenuItem("Plot Spice _for This Cell") { public void run() { Simulate.plotSpiceResultsThisCell(); }}, new EMenuItem("Set Spice _Model...") { public void run() { Simulation.setSpiceModel(); }}, new EMenuItem("Add M_ultiplier") { public void run() { addMultiplierCommand(); }}, new EMenuItem("Add Flat Cod_e") { public void run() { makeTemplate(Spice.SPICE_CODE_FLAT_KEY); }}, SEPARATOR, new EMenuItem("Set Generic Spice _Template") { public void run() { makeTemplate(Spice.SPICE_TEMPLATE_KEY); }}, new EMenuItem("Set Spice _2 Template") { public void run() { makeTemplate(Spice.SPICE_2_TEMPLATE_KEY); }}, new EMenuItem("Set Spice _3 Template") { public void run() { makeTemplate(Spice.SPICE_3_TEMPLATE_KEY); }}, new EMenuItem("Set _HSpice Template") { public void run() { makeTemplate(Spice.SPICE_H_TEMPLATE_KEY); }}, new EMenuItem("Set _PSpice Template") { public void run() { makeTemplate(Spice.SPICE_P_TEMPLATE_KEY); }}, new EMenuItem("Set _GnuCap Template") { public void run() { makeTemplate(Spice.SPICE_GC_TEMPLATE_KEY); }}, new EMenuItem("Set _SmartSpice Template") { public void run() { makeTemplate(Spice.SPICE_SM_TEMPLATE_KEY); }}, new EMenuItem("Set Assura CDL Template") { public void run() { makeTemplate(Spice.SPICE_A_TEMPLATE_KEY); }}, new EMenuItem("Set Calibre Spice Template") { public void run() { makeTemplate(Spice.SPICE_C_TEMPLATE_KEY); }}, new EMenuItem("Set Netlist Cell From File") { public void run() { makeTemplate(Spice.SPICE_NETLIST_FILE_KEY); }}), //------------------- Simulation (Verilog) // mnemonic keys available: AB EFGHIJKLMNO QRS U WXYZ new EMenu("Simulation (_Verilog)", new EMenuItem("Write _Verilog Deck...") { public void run() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -