/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: SpiceTab.java
*
* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
*
* 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.dialogs.options;
import com.sun.electric.lib.LibFile;
import com.sun.electric.tool.io.FileType;
import com.sun.electric.tool.io.output.Spice;
import com.sun.electric.tool.simulation.SimulationTool;
import com.sun.electric.tool.user.dialogs.EDialog;
import com.sun.electric.tool.user.dialogs.OpenFile;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/**
* Class to handle the "Spice" tab of the Preferences dialog.
*/
public class SpiceTab extends PreferencePanel
{
/** Creates new form SpiceTab */
public SpiceTab(Frame parent, boolean modal)
{
super(parent, modal);
initComponents();
// make all text fields select-all when entered
EDialog.makeTextFieldSelectAllOnTab(spiceRunProgram);
EDialog.makeTextFieldSelectAllOnTab(spiceRunProgramArgs);
EDialog.makeTextFieldSelectAllOnTab(useDir);
EDialog.makeTextFieldSelectAllOnTab(spiceHeaderCardExtension);
EDialog.makeTextFieldSelectAllOnTab(spiceHeaderCardFile);
EDialog.makeTextFieldSelectAllOnTab(spiceTrailerCardExtension);
EDialog.makeTextFieldSelectAllOnTab(spiceTrailerCardFile);
}
/** return the panel to use for user preferences. */
public JPanel getUserPreferencesPanel() { return spice; }
/** return the name of this preferences tab. */
public String getName() { return "Spice"; }
/**
* Method called at the start of the dialog.
* Caches current values and displays them in the Spice tab.
*/
public void init()
{
// the top section: writing spice decks
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_2);
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_3);
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_H);
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_P);
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_G);
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_S);
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_O);
spiceEnginePopup.addItem(SimulationTool.SpiceEngine.SPICE_ENGINE_H_ASSURA);
spiceEnginePopup.setSelectedItem(SimulationTool.getSpiceEngine());
spiceLevelPopup.addItem("1");
spiceLevelPopup.addItem("2");
spiceLevelPopup.addItem("3");
spiceLevelPopup.setSelectedItem(SimulationTool.getSpiceLevel());
spiceResistorShorting.addItem("None");
spiceResistorShorting.addItem("Normal only");
spiceResistorShorting.addItem("Normal and Poly");
spiceResistorShorting.setSelectedIndex(SimulationTool.getSpiceShortResistors());
spiceParasitics.addItem(SimulationTool.SpiceParasitics.SIMPLE);
spiceParasitics.addItem(SimulationTool.SpiceParasitics.RC_CONSERVATIVE);
// spiceParasitics.addItem(SimulationTool.SpiceParasitics.RC_PROXIMITY);
spiceParasitics.setSelectedItem(SimulationTool.getSpiceParasiticsLevel());
spiceGlobalTreatment.addItem("No special treatment");
spiceGlobalTreatment.addItem("Use .GLOBAL block");
spiceGlobalTreatment.addItem("Create .SUBCKT ports");
spiceGlobalTreatment.setSelectedIndex(SimulationTool.getSpiceGlobalTreatment().getCode());
String [] libFiles = LibFile.getSpicePartsLibraries();
for(int i=0; i<libFiles.length; i++)
spicePrimitivesetPopup.addItem(libFiles[i]);
spicePrimitivesetPopup.setSelectedItem(SimulationTool.getSpicePartsLibrary());
spiceWritePwrGndSubcircuit.setSelected(SimulationTool.isSpiceWritePwrGndInTopCell());
spiceUseCellParameters.setSelected(SimulationTool.isSpiceUseCellParameters());
spiceWriteTransSizesInLambda.setSelected(SimulationTool.isSpiceWriteTransSizeInLambda());
spiceWriteSubcktTopCell.setSelected(SimulationTool.isSpiceWriteSubcktTopCell());
spiceWriteEndStatement.setSelected(SimulationTool.isSpiceWriteFinalDotEnd());
// bottom of the top section: header and trailer cards
String spiceHeaderCardInitial = SimulationTool.getSpiceHeaderCardInfo();
boolean noHeader = false;
if (spiceHeaderCardInitial.startsWith(Spice.SPICE_NOEXTENSION_PREFIX))
{
noHeader = true;
spiceHeaderCardInitial = spiceHeaderCardInitial.substring(Spice.SPICE_NOEXTENSION_PREFIX.length());
}
if (spiceHeaderCardInitial.length() == 0) noHeader = true;
if (spiceHeaderCardInitial.startsWith(Spice.SPICE_EXTENSION_PREFIX))
{
spiceHeaderCardsWithExtension.setSelected(true);
spiceHeaderCardExtension.setText(spiceHeaderCardInitial.substring(Spice.SPICE_EXTENSION_PREFIX.length()));
} else
{
spiceHeaderCardsFromFile.setSelected(true);
spiceHeaderCardFile.setText(spiceHeaderCardInitial);
}
if (noHeader)
spiceNoHeaderCards.setSelected(true);
String spiceTrailerCardInitial = SimulationTool.getSpiceTrailerCardInfo();
boolean noTrailer = false;
if (spiceTrailerCardInitial.startsWith(Spice.SPICE_NOEXTENSION_PREFIX))
{
noTrailer = true;
spiceTrailerCardInitial = spiceTrailerCardInitial.substring(Spice.SPICE_NOEXTENSION_PREFIX.length());
}
if (spiceTrailerCardInitial.length() == 0) noTrailer = true;
if (spiceTrailerCardInitial.startsWith(Spice.SPICE_EXTENSION_PREFIX))
{
spiceTrailerCardsWithExtension.setSelected(true);
spiceTrailerCardExtension.setText(spiceTrailerCardInitial.substring(Spice.SPICE_EXTENSION_PREFIX.length()));
} else
{
spiceTrailerCardsFromFile.setSelected(true);
spiceTrailerCardFile.setText(spiceTrailerCardInitial);
}
if (noTrailer)
spiceNoTrailerCards.setSelected(true);
spiceBrowseHeaderFile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt) { spiceBrowseHeaderFileActionPerformed(); }
});
spiceBrowseTrailerFile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt) { spiceBrowseTrailerFileActionPerformed(); }
});
// the middle section: running Spice
useDir.setText(SimulationTool.getSpiceRunDir());
useDirCheckBox.setSelected(SimulationTool.getSpiceUseRunDir());
overwriteOutputFile.setSelected(SimulationTool.getSpiceOutputOverwrite());
spiceRunProbe.setSelected(SimulationTool.getSpiceRunProbe());
spiceRunProgram.setText(SimulationTool.getSpiceRunProgram());
spiceRunProgramArgs.setText(SimulationTool.getSpiceRunProgramArgs());
String [] runChoices = SimulationTool.getSpiceRunChoiceValues();
for (int i=0; i<runChoices.length; i++) {
spiceRunPopup.addItem(runChoices[i]);
}
spiceRunPopup.setSelectedItem(SimulationTool.getSpiceRunChoice());
if (spiceRunPopup.getSelectedIndex() == 0) setSpiceRunOptionsEnabled(false);
else setSpiceRunOptionsEnabled(true);
// spiceNetworkDelimiter.setText(SimulationTool.getSpiceExtractedNetDelimiter());
}
private void spiceBrowseTrailerFileActionPerformed()
{
String fileName = OpenFile.chooseInputFile(FileType.ANY, null);
if (fileName == null) return;
spiceTrailerCardFile.setText(fileName);
spiceTrailerCardsFromFile.setSelected(true);
}
private void spiceBrowseHeaderFileActionPerformed()
{
String fileName = OpenFile.chooseInputFile(FileType.ANY, null);
if (fileName == null) return;
spiceHeaderCardFile.setText(fileName);
spiceHeaderCardsFromFile.setSelected(true);
}
/**
* Method called when the "OK" panel is hit.
* Updates any changed fields in the Spice tab.
*/
public void term()
{
// the top section: writing spice deck
SimulationTool.SpiceEngine engine = (SimulationTool.SpiceEngine)spiceEnginePopup.getSelectedItem();
if (SimulationTool.getSpiceEngine() != engine) SimulationTool.setSpiceEngine(engine);
String stringNow = (String)spiceLevelPopup.getSelectedItem();
if (!SimulationTool.getSpiceLevel().equals(stringNow)) SimulationTool.setSpiceLevel(stringNow);
int sr = spiceResistorShorting.getSelectedIndex();
if (sr != SimulationTool.getSpiceShortResistors()) SimulationTool.setSpiceShortResistors(sr);
SimulationTool.SpiceParasitics sp = (SimulationTool.SpiceParasitics)spiceParasitics.getSelectedItem();
if (SimulationTool.getSpiceParasiticsLevel() != sp) SimulationTool.setSpiceParasiticsLevel(sp);
SimulationTool.SpiceGlobal signal = SimulationTool.SpiceGlobal.find(spiceGlobalTreatment.getSelectedIndex());
if (SimulationTool.getSpiceGlobalTreatment() != signal) SimulationTool.setSpiceGlobalTreatment(signal);
stringNow = (String)spicePrimitivesetPopup.getSelectedItem();
if (!SimulationTool.getSpicePartsLibrary().equals(stringNow)) SimulationTool.setSpicePartsLibrary(stringNow);
boolean booleanNow = spiceWritePwrGndSubcircuit.isSelected();
if (SimulationTool.isSpiceWritePwrGndInTopCell() != booleanNow) SimulationTool.setSpiceWritePwrGndInTopCell(booleanNow);
booleanNow = spiceUseCellParameters.isSelected();
if (SimulationTool.isSpiceUseCellParameters() != booleanNow) SimulationTool.setSpiceUseCellParameters(booleanNow);
booleanNow = spiceWriteTransSizesInLambda.isSelected();
if (SimulationTool.isSpiceWriteTransSizeInLambda() != booleanNow) SimulationTool.setSpiceWriteTransSizeInLambda(booleanNow);
booleanNow = spiceWriteSubcktTopCell.isSelected();
if (SimulationTool.isSpiceWriteSubcktTopCell() != booleanNow) SimulationTool.setSpiceWriteSubcktTopCell(booleanNow);
booleanNow = spiceWriteEndStatement.isSelected();
if (SimulationTool.isSpiceWriteFinalDotEnd() != booleanNow) SimulationTool.setSpiceWriteFinalDotEnd(booleanNow);
// bottom of the top section: header and trailer cards
String header = Spice.SPICE_NOEXTENSION_PREFIX;
if (spiceHeaderCardExtension.getText().length() > 0)
header += Spice.SPICE_EXTENSION_PREFIX + spiceHeaderCardExtension.getText(); else
header += spiceHeaderCardFile.getText();
if (spiceHeaderCardsWithExtension.isSelected())
{
header = Spice.SPICE_EXTENSION_PREFIX + spiceHeaderCardExtension.getText();
} else if (spiceHeaderCardsFromFile.isSelected())
{
header = spiceHeaderCardFile.getText();
}
if (!SimulationTool.getSpiceHeaderCardInfo().equals(header)) SimulationTool.setSpiceHeaderCardInfo(header);
String trailer = Spice.SPICE_NOEXTENSION_PREFIX;
if (spiceTrailerCardExtension.getText().length() > 0)
trailer += Spice.SPICE_EXTENSION_PREFIX + spiceTrailerCardExtension.getText(); else
trailer += spiceTrailerCardFile.getText();
if (spiceTrailerCardsWithExtension.isSelected())
{
trailer = Spice.SPICE_EXTENSION_PREFIX + spiceTrailerCardExtension.getText();
} else if (spiceTrailerCardsFromFile.isSelected())
{
trailer = spiceTrailerCardFile.getText();
}
if (!SimulationTool.getSpiceTrailerCardInfo().equals(trailer)) SimulationTool.setSpiceTrailerCardInfo(trailer);
// the middle section: spice run options
stringNow = (String)spiceRunPopup.getSelectedItem();
if (!SimulationTool.getSpiceRunChoice().equals(stringNow)) SimulationTool.setSpiceRunChoice(stringNow);
stringNow = useDir.getText();
if (!SimulationTool.getSpiceRunDir().equals(stringNow)) SimulationTool.setSpiceRunDir(stringNow);
booleanNow = useDirCheckBox.isSelected();
if (SimulationTool.getSpiceUseRunDir() != booleanNow) SimulationTool.setSpiceUseRunDir(booleanNow);
booleanNow = overwriteOutputFile.isSelected();
if (SimulationTool.getSpiceOutputOverwrite() != booleanNow) SimulationTool.setSpiceOutputOverwrite(booleanNow);
booleanNow = spiceRunProbe.isSelected();
if (SimulationTool.getSpiceRunProbe() != booleanNow) SimulationTool.setSpiceRunProbe(booleanNow);
stringNow = spiceRunProgram.getText();
if (!SimulationTool.getSpiceRunProgram().equals(stringNow)) SimulationTool.setSpiceRunProgram(stringNow);
stringNow = spiceRunProgramArgs.getText();
if (!SimulationTool.getSpiceRunProgramArgs().equals(stringNow)) SimulationTool.setSpiceRunProgramArgs(stringNow);
// stringNow = spiceNetworkDelimiter.getText();
// if (!SimulationTool.getSpiceExtractedNetDelimiter().equals(stringNow)) SimulationTool.setSpiceExtractedNetDelimiter(stringNow);
}
/**
* Method called when the factory reset is requested.
*/
public void reset()
{
// the top section: writing spice deck
if (!SimulationTool.getFactorySpiceEngine().equals(SimulationTool.getSpiceEngine()))
SimulationTool.setSpiceEngine(SimulationTool.getFactorySpiceEngine());
if (!SimulationTool.getFactorySpiceLevel().equals(SimulationTool.getSpiceLevel()))
SimulationTool.setSpiceLevel(SimulationTool.getFactorySpiceLevel());
if (SimulationTool.getFactorySpiceShortResistors() != SimulationTool.getSpiceShortResistors())
SimulationTool.setSpiceShortResistors(SimulationTool.getFactorySpiceShortResistors());
if (!SimulationTool.getFactorySpiceParasiticsLevel().equals(SimulationTool.getSpiceParasiticsLevel()))
SimulationTool.setSpiceParasiticsLevel(SimulationTool.getFactorySpiceParasiticsLevel());
if (SimulationTool.getFactorySpiceGlobalTreatment() != SimulationTool.getSpiceGlobalTreatment())
SimulationTool.setSpiceGlobalTreatment(SimulationTool.getFactorySpiceGlobalTreatment());
if (!SimulationTool.getFactorySpicePartsLibrary().equals(SimulationTool.getSpicePartsLibrary()))
SimulationTool.setSpicePartsLibrary(SimulationTool.getFactorySpicePartsLibrary());
if (SimulationTool.isFactorySpiceWritePwrGndInTopCell() != SimulationTool.isSpiceWritePwrGndInTopCell())
SimulationTool.setSpiceWritePwrGndInTopCell(SimulationTool.isFactorySpiceWritePwrGndInTopCell());
if (SimulationTool.isFactorySpiceUseCellParameters() != SimulationTool.isSpiceUseCellParameters())
SimulationTool.setSpiceUseCellParameters(SimulationTool.isFactorySpiceUseCellParameters());
if (SimulationTool.isFactorySpiceWriteTransSizeInLambda() != SimulationTool.isSpiceWriteTransSizeInLambda())
SimulationTool.setSpiceWriteTransSizeInLambda(SimulationTool.isFactorySpiceWriteTransSizeInLambda());
if (SimulationTool.isFactorySpiceWriteSubcktTopCell() != SimulationTool.isSpiceWriteSubcktTopCell())
SimulationTool.setSpiceWriteSubcktTopCell(SimulationTool.isFactorySpiceWriteSubcktTopCell());
if (SimulationTool.isFactorySpiceWriteFinalDotEnd() != SimulationTool.isSpiceWriteFinalDotEnd())
SimulationTool.setSpiceWriteFinalDotEnd(SimulationTool.isFactorySpiceWriteFinalDotEnd());
if (!SimulationTool.getFactorySpiceHeaderCardInfo().equals(SimulationTool.getSpiceHeaderCardInfo()))
SimulationTool.setSpiceHeaderCardInfo(SimulationTool.getFactorySpiceHeaderCardInfo());
if (!SimulationTool.getFactorySpiceTrailerCardInfo().equals(SimulationTool.getSpiceTrailerCardInfo()))
SimulationTool.setSpiceTrailerCardInfo(SimulationTool.getFactorySpiceTrailerCardInfo());
// the middle section: running spice
if (!SimulationTool.getFactorySpiceRunChoice().equals(SimulationTool.getSpiceRunChoice()))
SimulationTool.setSpiceRunChoice(SimulationTool.getFactorySpiceRunChoice());
if (!SimulationTool.getFactorySpiceRunProgram().equals(SimulationTool.getSpiceRunProgram()))
SimulationTool.setSpiceRunProgram(SimulationTool.getFactorySpiceRunProgram());
if (!SimulationTool.getFactorySpiceRunProgramArgs().equals(SimulationTool.getSpiceRunProgramArgs()))
SimulationTool.setSpiceRunProgramArgs(SimulationTool.getFactorySpiceRunProgramArgs());
if (SimulationTool.getFactorySpiceUseRunDir() != SimulationTool.getSpiceUseRunDir())
SimulationTool.setSpiceUseRunDir(SimulationTool.getFactorySpiceUseRunDir());
if (!SimulationTool.getFactorySpiceRunDir().equals(SimulationTool.getSpiceRunDir()))
SimulationTool.setSpiceRunDir(SimulationTool.getFactorySpiceRunDir());
if (SimulationTool.getFactorySpiceOutputOverwrite() != SimulationTool.getSpiceOutputOverwrite())
SimulationTool.setSpiceOutputOverwrite(SimulationTool.getFactorySpiceOutputOverwrite());
if (SimulationTool.getFactorySpiceRunProbe() != SimulationTool.getSpiceRunProbe())
SimulationTool.setSpiceRunProbe(SimulationTool.getFactorySpiceRunProbe());
// if (SimulationTool.getFactorySpiceExtractedNetDelimiter() != SimulationTool.getSpiceExtractedNetDelimiter())
// SimulationTool.setSpiceExtractedNetDelimiter(SimulationTool.getFactorySpiceExtractedNetDelimiter());
}
// enable or disable the spice run options
private void setSpiceRunOptionsEnabled(boolean enabled) {
useDirCheckBox.setEnabled(enabled);
overwriteOutputFile.setEnabled(enabled);
spiceRunProgram.setEnabled(enabled);
spiceRunProgramArgs.setEnabled(enabled);
spiceRunHelp.setEnabled(enabled);
spiceRunProbe.setEnabled(enabled);
useDir.setEnabled(enabled);
if (enabled)
{
// if no use dir specified, disable text box
if (!useDirCheckBox.isSelected()) useDir.setEnabled(false);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
spiceHeader = new javax.swing.ButtonGroup();
spiceTrailer = new javax.swing.ButtonGroup();
spice = new javax.swing.JPanel();
execution = new javax.swing.JPanel();
spiceRunPopup = new javax.swing.JComboBox();
spiceRunProgram = new javax.swing.JTextField();
jLabel17 = new javax.swing.JLabel();
useDirCheckBox = new javax.swing.JCheckBox();
useDir = new javax.swing.JTextField();
overwriteOutputFile = new javax.swing.JCheckBox();
spiceRunHelp = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
spiceRunProgramArgs = new javax.swing.JTextField();
spiceRunProbe = new javax.swing.JCheckBox();
jLabel2 = new javax.swing.JLabel();
writingSpice = new javax.swing.JPanel();
upperLeft = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
spiceEnginePopup = new javax.swing.JComboBox();
spiceLevelPopup = new javax.swing.JComboBox();
jLabel13 = new javax.swing.JLabel();
spicePrimitivesetPopup = new javax.swing.JComboBox();
epicFrame = new javax.swing.JPanel();
spiceResistorShorting = new javax.swing.JComboBox();
jLabel4 = new javax.swing.JLabel();
spiceParasitics = new javax.swing.JComboBox();
jLabel6 = new javax.swing.JLabel();
spiceGlobalTreatment = new javax.swing.JComboBox();
upperRight = new javax.swing.JPanel();
spiceWriteEndStatement = new javax.swing.JCheckBox();
spiceWriteTransSizesInLambda = new javax.swing.JCheckBox();
spiceUseCellParameters = new javax.swing.JCheckBox();
spiceWriteSubcktTopCell = new javax.swing.JCheckBox();
spiceWritePwrGndSubcircuit = new javax.swing.JCheckBox();
modelCards = new javax.swing.JPanel();
spiceHeaderCardExtension = new javax.swing.JTextField();
spiceNoHeaderCards = new javax.swing.JRadioButton();
spiceHeaderCardsWithExtension = new javax.swing.JRadioButton();
spiceHeaderCardsFromFile = new javax.swing.JRadioButton();
spiceNoTrailerCards = new javax.swing.JRadioButton();
spiceTrailerCardsWithExtension = new javax.swing.JRadioButton();
spiceTrailerCardsFromFile = new javax.swing.JRadioButton();
spiceHeaderCardFile = new javax.swing.JTextField();
spiceBrowseHeaderFile = new javax.swing.JButton();
spiceTrailerCardExtension = new javax.swing.JTextField();
spiceTrailerCardFile = new javax.swing.JTextField();
spiceBrowseTrailerFile = new javax.swing.JButton();
jSeparator4 = new javax.swing.JSeparator();
jSeparator5 = new javax.swing.JSeparator();
setTitle("Spice Preferences");
setName(""); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
getContentPane().setLayout(new java.awt.GridBagLayout());
spice.setToolTipText("Options for Spice deck generation");
spice.setLayout(new java.awt.GridBagLayout());
execution.setBorder(javax.swing.BorderFactory.createTitledBorder("Running Spice"));
execution.setLayout(new java.awt.GridBagLayout());
spiceRunPopup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
spiceRunPopupActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 4, 0);
execution.add(spiceRunPopup, gridBagConstraints);
spiceRunProgram.setColumns(8);
spiceRunProgram.setMinimumSize(new java.awt.Dimension(100, 20));
spiceRunProgram.setPreferredSize(new java.awt.Dimension(92, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
execution.add(spiceRunProgram, gridBagConstraints);
jLabel17.setText("Run program:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 2, 4, 4);
execution.add(jLabel17, gridBagConstraints);
useDirCheckBox.setText("Use dir:");
useDirCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
useDirCheckBoxActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
execution.add(useDirCheckBox, gridBagConstraints);
useDir.setColumns(8);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
execution.add(useDir, gridBagConstraints);
overwriteOutputFile.setText("Overwrite existing output file (no prompts)");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
execution.add(overwriteOutputFile, gridBagConstraints);
spiceRunHelp.setText("Help");
spiceRunHelp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
spiceRunHelpActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
execution.add(spiceRunHelp, gridBagConstraints);
jLabel3.setText("With args:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
execution.add(jLabel3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
execution.add(spiceRunProgramArgs, gridBagConstraints);
spiceRunProbe.setText("Run probe");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 3;
execution.add(spiceRunProbe, gridBagConstraints);
jLabel2.setText("After writing deck:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0);
execution.add(jLabel2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
spice.add(execution, gridBagConstraints);
writingSpice.setBorder(javax.swing.BorderFactory.createTitledBorder("Writing Spice Deck"));
writingSpice.setLayout(new java.awt.GridBagLayout());
upperLeft.setLayout(new java.awt.GridBagLayout());
jLabel5.setText("Parasitics:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0);
upperLeft.add(jLabel5, gridBagConstraints);
jLabel1.setText("Spice engine:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0);
upperLeft.add(jLabel1, gridBagConstraints);
jLabel9.setText("Spice level:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0);
upperLeft.add(jLabel9, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
upperLeft.add(spiceEnginePopup, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
upperLeft.add(spiceLevelPopup, gridBagConstraints);
jLabel13.setText("Spice primitive set:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0);
upperLeft.add(jLabel13, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
upperLeft.add(spicePrimitivesetPopup, gridBagConstraints);
epicFrame.setLayout(new java.awt.GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 2;
upperLeft.add(epicFrame, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
upperLeft.add(spiceResistorShorting, gridBagConstraints);
jLabel4.setText("Resistor shorting:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0);
upperLeft.add(jLabel4, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
upperLeft.add(spiceParasitics, gridBagConstraints);
jLabel6.setText("Globals:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 0);
upperLeft.add(jLabel6, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
upperLeft.add(spiceGlobalTreatment, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
writingSpice.add(upperLeft, gridBagConstraints);
upperRight.setLayout(new java.awt.GridBagLayout());
spiceWriteEndStatement.setText("Write .end statement");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
upperRight.add(spiceWriteEndStatement, gridBagConstraints);
spiceWriteTransSizesInLambda.setText("Write trans sizes in units");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
upperRight.add(spiceWriteTransSizesInLambda, gridBagConstraints);
spiceUseCellParameters.setText("Use cell parameters");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
upperRight.add(spiceUseCellParameters, gridBagConstraints);
spiceWriteSubcktTopCell.setText("Write .subckt for top cell");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
upperRight.add(spiceWriteSubcktTopCell, gridBagConstraints);
spiceWritePwrGndSubcircuit.setText("Write VDD/GND in top cell");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
upperRight.add(spiceWritePwrGndSubcircuit, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
writingSpice.add(upperRight, gridBagConstraints);
modelCards.setLayout(new java.awt.GridBagLayout());
spiceHeaderCardExtension.setColumns(5);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 0.5;
modelCards.add(spiceHeaderCardExtension, gridBagConstraints);
spiceHeader.add(spiceNoHeaderCards);
spiceNoHeaderCards.setText("No Header cards");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
modelCards.add(spiceNoHeaderCards, gridBagConstraints);
spiceHeader.add(spiceHeaderCardsWithExtension);
spiceHeaderCardsWithExtension.setText("Use Header cards from files with extension:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
modelCards.add(spiceHeaderCardsWithExtension, gridBagConstraints);
spiceHeader.add(spiceHeaderCardsFromFile);
spiceHeaderCardsFromFile.setText("Use Header cards from file:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
modelCards.add(spiceHeaderCardsFromFile, gridBagConstraints);
spiceTrailer.add(spiceNoTrailerCards);
spiceNoTrailerCards.setText("No Trailer cards");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 7;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
modelCards.add(spiceNoTrailerCards, gridBagConstraints);
spiceTrailer.add(spiceTrailerCardsWithExtension);
spiceTrailerCardsWithExtension.setText("Use Trailer cards from files with extension:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
modelCards.add(spiceTrailerCardsWithExtension, gridBagConstraints);
spiceTrailer.add(spiceTrailerCardsFromFile);
spiceTrailerCardsFromFile.setText("Use Trailer cards from File:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
modelCards.add(spiceTrailerCardsFromFile, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 0.5;
modelCards.add(spiceHeaderCardFile, gridBagConstraints);
spiceBrowseHeaderFile.setText("Browse");
spiceBrowseHeaderFile.setMinimumSize(new java.awt.Dimension(78, 20));
spiceBrowseHeaderFile.setPreferredSize(new java.awt.Dimension(78, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridheight = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
modelCards.add(spiceBrowseHeaderFile, gridBagConstraints);
spiceTrailerCardExtension.setColumns(5);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 0.5;
modelCards.add(spiceTrailerCardExtension, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 6;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 0.5;
modelCards.add(spiceTrailerCardFile, gridBagConstraints);
spiceBrowseTrailerFile.setText("Browse");
spiceBrowseTrailerFile.setMinimumSize(new java.awt.Dimension(78, 20));
spiceBrowseTrailerFile.setPreferredSize(new java.awt.Dimension(78, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 6;
gridBagConstraints.gridheight = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
modelCards.add(spiceBrowseTrailerFile, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(2, 0, 2, 0);
modelCards.add(jSeparator4, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(2, 0, 2, 0);
modelCards.add(jSeparator5, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
writingSpice.add(modelCards, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
spice.add(writingSpice, gridBagConstraints);
getContentPane().add(spice, new java.awt.GridBagConstraints());
pack();
}// </editor-fold>//GEN-END:initComponents
private void spiceRunPopupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_spiceRunPopupActionPerformed
if (spiceRunPopup.getSelectedIndex() == 0) setSpiceRunOptionsEnabled(false); else
setSpiceRunOptionsEnabled(true);
}//GEN-LAST:event_spiceRunPopupActionPerformed
private void spiceRunHelpActionPerformed(ActionEvent evt) {//GEN-FIRST:event_spiceRunHelpActionPerformed
String [] message ={"IMPORTANT: This executes a single program with the given arguments. It does NOT run a command-line command.",
"For example, 'echo blah > file' will NOT work. Encapsulate it in a script if you want to do such things.",
"-----------------",
"The following variables are available to use in the program name and arguments:",
" ${WORKING_DIR}: The current working directory",
" ${USE_DIR}: The path entered in the 'Use Directory' field, if specified (defaults to WORKING_DIR)",
" ${FILEPATH}: The full path of the output file",
" ${FILENAME}: The output file name (with extension)",
" ${FILENAME_NO_EXT}: The output file name (without extension)",
"Example: Program: \"hspice\". Arguments: \"${FILEPATH}\"" };
JOptionPane.showMessageDialog(this, message, "Spice Run Help", JOptionPane.INFORMATION_MESSAGE);
}//GEN-LAST:event_spiceRunHelpActionPerformed
private void useDirCheckBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_useDirCheckBoxActionPerformed
// enable use dir field
useDir.setEnabled(useDirCheckBox.isSelected());
}//GEN-LAST:event_useDirCheckBoxActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt)//GEN-FIRST:event_closeDialog
{
setVisible(false);
dispose();
}//GEN-LAST:event_closeDialog
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel epicFrame;
private javax.swing.JPanel execution;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel9;
private javax.swing.JSeparator jSeparator4;
private javax.swing.JSeparator jSeparator5;
private javax.swing.JPanel modelCards;
private javax.swing.JCheckBox overwriteOutputFile;
private javax.swing.JPanel spice;
private javax.swing.JButton spiceBrowseHeaderFile;
private javax.swing.JButton spiceBrowseTrailerFile;
private javax.swing.JComboBox spiceEnginePopup;
private javax.swing.JComboBox spiceGlobalTreatment;
private javax.swing.ButtonGroup spiceHeader;
private javax.swing.JTextField spiceHeaderCardExtension;
private javax.swing.JTextField spiceHeaderCardFile;
private javax.swing.JRadioButton spiceHeaderCardsFromFile;
private javax.swing.JRadioButton spiceHeaderCardsWithExtension;
private javax.swing.JComboBox spiceLevelPopup;
private javax.swing.JRadioButton spiceNoHeaderCards;
private javax.swing.JRadioButton spiceNoTrailerCards;
private javax.swing.JComboBox spiceParasitics;
private javax.swing.JComboBox spicePrimitivesetPopup;
private javax.swing.JComboBox spiceResistorShorting;
private javax.swing.JButton spiceRunHelp;
private javax.swing.JComboBox spiceRunPopup;
private javax.swing.JCheckBox spiceRunProbe;
private javax.swing.JTextField spiceRunProgram;
private javax.swing.JTextField spiceRunProgramArgs;
private javax.swing.ButtonGroup spiceTrailer;
private javax.swing.JTextField spiceTrailerCardExtension;
private javax.swing.JTextField spiceTrailerCardFile;
private javax.swing.JRadioButton spiceTrailerCardsFromFile;
private javax.swing.JRadioButton spiceTrailerCardsWithExtension;
private javax.swing.JCheckBox spiceUseCellParameters;
private javax.swing.JCheckBox spiceWriteEndStatement;
private javax.swing.JCheckBox spiceWritePwrGndSubcircuit;
private javax.swing.JCheckBox spiceWriteSubcktTopCell;
private javax.swing.JCheckBox spiceWriteTransSizesInLambda;
private javax.swing.JPanel upperLeft;
private javax.swing.JPanel upperRight;
private javax.swing.JTextField useDir;
private javax.swing.JCheckBox useDirCheckBox;
private javax.swing.JPanel writingSpice;
// End of variables declaration//GEN-END:variables
}