/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: SpiceTab.java
*
* Copyright (c) 2004 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.dialogs.options;
import com.sun.electric.database.text.TextUtils;
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.Simulation;
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
{
private enum SpiceOutFormat
{
Standard, Raw, RawSmart, RawLT, Epic;
}
/** Creates new form SpiceTab */
public SpiceTab(Frame parent, boolean modal)
{
super(parent, modal);
initComponents();
// make all text fields select-all when entered
EDialog.makeTextFieldSelectAllOnTab(epicText);
EDialog.makeTextFieldSelectAllOnTab(spiceRunProgram);
EDialog.makeTextFieldSelectAllOnTab(spiceRunProgramArgs);
EDialog.makeTextFieldSelectAllOnTab(useDir);
EDialog.makeTextFieldSelectAllOnTab(spiceHeaderCardExtension);
EDialog.makeTextFieldSelectAllOnTab(spiceHeaderCardFile);
EDialog.makeTextFieldSelectAllOnTab(spiceTrailerCardExtension);
EDialog.makeTextFieldSelectAllOnTab(spiceTrailerCardFile);
EDialog.makeTextFieldSelectAllOnTab(spiceNetworkDelimiter);
}
/** 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(Simulation.SpiceEngine.SPICE_ENGINE_2);
spiceEnginePopup.addItem(Simulation.SpiceEngine.SPICE_ENGINE_3);
spiceEnginePopup.addItem(Simulation.SpiceEngine.SPICE_ENGINE_H);
spiceEnginePopup.addItem(Simulation.SpiceEngine.SPICE_ENGINE_P);
spiceEnginePopup.addItem(Simulation.SpiceEngine.SPICE_ENGINE_G);
spiceEnginePopup.addItem(Simulation.SpiceEngine.SPICE_ENGINE_S);
spiceEnginePopup.addItem(Simulation.SpiceEngine.SPICE_ENGINE_H_ASSURA);
spiceEnginePopup.setSelectedItem(Simulation.getSpiceEngine());
spiceLevelPopup.addItem("1");
spiceLevelPopup.addItem("2");
spiceLevelPopup.addItem("3");
spiceLevelPopup.setSelectedItem(Simulation.getSpiceLevel());
spiceResistorShorting.addItem("None");
spiceResistorShorting.addItem("Normal only");
spiceResistorShorting.addItem("Normal and Poly");
spiceResistorShorting.setSelectedIndex(Simulation.getSpiceShortResistors());
spiceParasitics.addItem(Simulation.SpiceParasitics.SIMPLE);
spiceParasitics.addItem(Simulation.SpiceParasitics.RC_CONSERVATIVE);
// spiceParasitics.addItem(Simulation.SpiceParasitics.RC_PROXIMITY);
spiceParasitics.setSelectedItem(Simulation.getSpiceParasiticsLevel());
spiceGlobalTreatment.addItem("No special treatment");
spiceGlobalTreatment.addItem("Use .GLOBAL block");
spiceGlobalTreatment.addItem("Create .SUBCKT ports");
spiceGlobalTreatment.setSelectedIndex(Simulation.getSpiceGlobalTreatment().getCode());
String [] libFiles = LibFile.getSpicePartsLibraries();
for(int i=0; i<libFiles.length; i++)
spicePrimitivesetPopup.addItem(libFiles[i]);
spicePrimitivesetPopup.setSelectedItem(Simulation.getSpicePartsLibrary());
spiceWritePwrGndSubcircuit.setSelected(Simulation.isSpiceWritePwrGndInTopCell());
spiceUseCellParameters.setSelected(Simulation.isSpiceUseCellParameters());
spiceWriteTransSizesInLambda.setSelected(Simulation.isSpiceWriteTransSizeInLambda());
spiceWriteSubcktTopCell.setSelected(Simulation.isSpiceWriteSubcktTopCell());
spiceWriteEndStatement.setSelected(Simulation.isSpiceWriteFinalDotEnd());
// bottom of the top section: header and trailer cards
String spiceHeaderCardInitial = Simulation.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 = Simulation.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(Simulation.getSpiceRunDir());
useDirCheckBox.setSelected(Simulation.getSpiceUseRunDir());
overwriteOutputFile.setSelected(Simulation.getSpiceOutputOverwrite());
spiceRunProbe.setSelected(Simulation.getSpiceRunProbe());
spiceRunProgram.setText(Simulation.getSpiceRunProgram());
spiceRunProgramArgs.setText(Simulation.getSpiceRunProgramArgs());
String [] runChoices = Simulation.getSpiceRunChoiceValues();
for (int i=0; i<runChoices.length; i++) {
spiceRunPopup.addItem(runChoices[i]);
}
spiceRunPopup.setSelectedItem(Simulation.getSpiceRunChoice());
if (spiceRunPopup.getSelectedIndex() == 0) setSpiceRunOptionsEnabled(false);
else setSpiceRunOptionsEnabled(true);
// the bottom section: reading spice output
spiceOutputFormatPopup.addItem(SpiceOutFormat.Standard);
spiceOutputFormatPopup.addItem(SpiceOutFormat.Raw);
spiceOutputFormatPopup.addItem(SpiceOutFormat.RawSmart);
spiceOutputFormatPopup.addItem(SpiceOutFormat.RawLT);
spiceOutputFormatPopup.addItem(SpiceOutFormat.Epic);
spiceOutputFormatPopup.setSelectedItem(SpiceOutFormat.valueOf(Simulation.getSpiceOutputFormat()));
epicText.setText(String.valueOf(Simulation.getSpiceEpicMemorySize()));
spiceNetworkDelimiter.setText(Simulation.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
Simulation.SpiceEngine engine = (Simulation.SpiceEngine)spiceEnginePopup.getSelectedItem();
if (Simulation.getSpiceEngine() != engine) Simulation.setSpiceEngine(engine);
String stringNow = (String)spiceLevelPopup.getSelectedItem();
if (!Simulation.getSpiceLevel().equals(stringNow)) Simulation.setSpiceLevel(stringNow);
int sr = spiceResistorShorting.getSelectedIndex();
if (sr != Simulation.getSpiceShortResistors()) Simulation.setSpiceShortResistors(sr);
Simulation.SpiceParasitics sp = (Simulation.SpiceParasitics)spiceParasitics.getSelectedItem();
if (Simulation.getSpiceParasiticsLevel() != sp) Simulation.setSpiceParasiticsLevel(sp);
Simulation.SpiceGlobal signal = Simulation.SpiceGlobal.find(spiceGlobalTreatment.getSelectedIndex());
if (Simulation.getSpiceGlobalTreatment() != signal) Simulation.setSpiceGlobalTreatment(signal);
stringNow = (String)spicePrimitivesetPopup.getSelectedItem();
if (!Simulation.getSpicePartsLibrary().equals(stringNow)) Simulation.setSpicePartsLibrary(stringNow);
boolean booleanNow = spiceWritePwrGndSubcircuit.isSelected();
if (Simulation.isSpiceWritePwrGndInTopCell() != booleanNow) Simulation.setSpiceWritePwrGndInTopCell(booleanNow);
booleanNow = spiceUseCellParameters.isSelected();
if (Simulation.isSpiceUseCellParameters() != booleanNow) Simulation.setSpiceUseCellParameters(booleanNow);
booleanNow = spiceWriteTransSizesInLambda.isSelected();
if (Simulation.isSpiceWriteTransSizeInLambda() != booleanNow) Simulation.setSpiceWriteTransSizeInLambda(booleanNow);
booleanNow = spiceWriteSubcktTopCell.isSelected();
if (Simulation.isSpiceWriteSubcktTopCell() != booleanNow) Simulation.setSpiceWriteSubcktTopCell(booleanNow);
booleanNow = spiceWriteEndStatement.isSelected();
if (Simulation.isSpiceWriteFinalDotEnd() != booleanNow) Simulation.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 (!Simulation.getSpiceHeaderCardInfo().equals(header)) Simulation.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 (!Simulation.getSpiceTrailerCardInfo().equals(trailer)) Simulation.setSpiceTrailerCardInfo(trailer);
// the middle section: spice run options
stringNow = (String)spiceRunPopup.getSelectedItem();
if (!Simulation.getSpiceRunChoice().equals(stringNow)) Simulation.setSpiceRunChoice(stringNow);
stringNow = useDir.getText();
if (!Simulation.getSpiceRunDir().equals(stringNow)) Simulation.setSpiceRunDir(stringNow);
booleanNow = useDirCheckBox.isSelected();
if (Simulation.getSpiceUseRunDir() != booleanNow) Simulation.setSpiceUseRunDir(booleanNow);
booleanNow = overwriteOutputFile.isSelected();
if (Simulation.getSpiceOutputOverwrite() != booleanNow) Simulation.setSpiceOutputOverwrite(booleanNow);
booleanNow = spiceRunProbe.isSelected();
if (Simulation.getSpiceRunProbe() != booleanNow) Simulation.setSpiceRunProbe(booleanNow);
stringNow = spiceRunProgram.getText();
if (!Simulation.getSpiceRunProgram().equals(stringNow)) Simulation.setSpiceRunProgram(stringNow);
stringNow = spiceRunProgramArgs.getText();
if (!Simulation.getSpiceRunProgramArgs().equals(stringNow)) Simulation.setSpiceRunProgramArgs(stringNow);
// the bottom section: reading spice output
SpiceOutFormat formatVal = (SpiceOutFormat)spiceOutputFormatPopup.getSelectedItem();
if (!Simulation.getSpiceOutputFormat().equals(formatVal)) Simulation.setSpiceOutputFormat(formatVal.name());
if (formatVal == SpiceOutFormat.Epic)
Simulation.setSpiceEpicMemorySize(TextUtils.atoi(epicText.getText()));
stringNow = spiceNetworkDelimiter.getText();
if (!Simulation.getSpiceExtractedNetDelimiter().equals(stringNow)) Simulation.setSpiceExtractedNetDelimiter(stringNow);
}
/**
* Method called when the factory reset is requested.
*/
public void reset()
{
// the top section: writing spice deck
if (!Simulation.getFactorySpiceEngine().equals(Simulation.getSpiceEngine()))
Simulation.setSpiceEngine(Simulation.getFactorySpiceEngine());
if (!Simulation.getFactorySpiceLevel().equals(Simulation.getSpiceLevel()))
Simulation.setSpiceLevel(Simulation.getFactorySpiceLevel());
if (Simulation.getFactorySpiceShortResistors() != Simulation.getSpiceShortResistors())
Simulation.setSpiceShortResistors(Simulation.getFactorySpiceShortResistors());
if (!Simulation.getFactorySpiceParasiticsLevel().equals(Simulation.getSpiceParasiticsLevel()))
Simulation.setSpiceParasiticsLevel(Simulation.getFactorySpiceParasiticsLevel());
if (Simulation.getFactorySpiceGlobalTreatment() != Simulation.getSpiceGlobalTreatment())
Simulation.setSpiceGlobalTreatment(Simulation.getFactorySpiceGlobalTreatment());
if (!Simulation.getFactorySpicePartsLibrary().equals(Simulation.getSpicePartsLibrary()))
Simulation.setSpicePartsLibrary(Simulation.getFactorySpicePartsLibrary());
if (Simulation.isFactorySpiceWritePwrGndInTopCell() != Simulation.isSpiceWritePwrGndInTopCell())
Simulation.setSpiceWritePwrGndInTopCell(Simulation.isFactorySpiceWritePwrGndInTopCell());
if (Simulation.isFactorySpiceUseCellParameters() != Simulation.isSpiceUseCellParameters())
Simulation.setSpiceUseCellParameters(Simulation.isFactorySpiceUseCellParameters());
if (Simulation.isFactorySpiceWriteTransSizeInLambda() != Simulation.isSpiceWriteTransSizeInLambda())
Simulation.setSpiceWriteTransSizeInLambda(Simulation.isFactorySpiceWriteTransSizeInLambda());
if (Simulation.isFactorySpiceWriteSubcktTopCell() != Simulation.isSpiceWriteSubcktTopCell())
Simulation.setSpiceWriteSubcktTopCell(Simulation.isFactorySpiceWriteSubcktTopCell());
if (Simulation.isFactorySpiceWriteFinalDotEnd() != Simulation.isSpiceWriteFinalDotEnd())
Simulation.setSpiceWriteFinalDotEnd(Simulation.isFactorySpiceWriteFinalDotEnd());
if (!Simulation.getFactorySpiceHeaderCardInfo().equals(Simulation.getSpiceHeaderCardInfo()))
Simulation.setSpiceHeaderCardInfo(Simulation.getFactorySpiceHeaderCardInfo());
if (!Simulation.getFactorySpiceTrailerCardInfo().equals(Simulation.getSpiceTrailerCardInfo()))
Simulation.setSpiceTrailerCardInfo(Simulation.getFactorySpiceTrailerCardInfo());
// the middle section: running spice
if (!Simulation.getFactorySpiceRunChoice().equals(Simulation.getSpiceRunChoice()))
Simulation.setSpiceRunChoice(Simulation.getFactorySpiceRunChoice());
if (!Simulation.getFactorySpiceRunProgram().equals(Simulation.getSpiceRunProgram()))
Simulation.setSpiceRunProgram(Simulation.getFactorySpiceRunProgram());
if (!Simulation.getFactorySpiceRunProgramArgs().equals(Simulation.getSpiceRunProgramArgs()))
Simulation.setSpiceRunProgramArgs(Simulation.getFactorySpiceRunProgramArgs());
if (Simulation.getFactorySpiceUseRunDir() != Simulation.getSpiceUseRunDir())
Simulation.setSpiceUseRunDir(Simulation.getFactorySpiceUseRunDir());
if (!Simulation.getFactorySpiceRunDir().equals(Simulation.getSpiceRunDir()))
Simulation.setSpiceRunDir(Simulation.getFactorySpiceRunDir());
if (Simulation.getFactorySpiceOutputOverwrite() != Simulation.getSpiceOutputOverwrite())
Simulation.setSpiceOutputOverwrite(Simulation.getFactorySpiceOutputOverwrite());
if (Simulation.getFactorySpiceRunProbe() != Simulation.getSpiceRunProbe())
Simulation.setSpiceRunProbe(Simulation.getFactorySpiceRunProbe());
// the bottom section: reading spice output
if (!Simulation.getFactorySpiceOutputFormat().equals(Simulation.getSpiceOutputFormat()))
Simulation.setSpiceOutputFormat(Simulation.getFactorySpiceOutputFormat());
if (Simulation.getFactorySpiceEpicMemorySize() != Simulation.getSpiceEpicMemorySize())
Simulation.setSpiceEpicMemorySize(Simulation.getFactorySpiceEpicMemorySize());
if (Simulation.getFactorySpiceExtractedNetDelimiter() != Simulation.getSpiceExtractedNetDelimiter())
Simulation.setSpiceExtractedNetDelimiter(Simulation.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();
readingOutput = new javax.swing.JPanel();
jLabel10 = new javax.swing.JLabel();
spiceOutputFormatPopup = new javax.swing.JComboBox();
epicLabel = new javax.swing.JLabel();
epicText = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
spiceNetworkDelimiter = new javax.swing.JTextField();
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());
readingOutput.setBorder(javax.swing.BorderFactory.createTitledBorder("Reading Spice Output"));
readingOutput.setLayout(new java.awt.GridBagLayout());
jLabel10.setText("Output format:");
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);
readingOutput.add(jLabel10, gridBagConstraints);
spiceOutputFormatPopup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
spiceOutputFormatPopupActionPerformed(evt);
}
});
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, 2, 0, 4);
readingOutput.add(spiceOutputFormatPopup, gridBagConstraints);
epicLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
epicLabel.setText("Epic reader memory size: ");
epicLabel.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
readingOutput.add(epicLabel, gridBagConstraints);
epicText.setColumns(8);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 4);
readingOutput.add(epicText, gridBagConstraints);
jLabel7.setText("Extracted network delimiter character:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
readingOutput.add(jLabel7, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 4);
readingOutput.add(spiceNetworkDelimiter, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
spice.add(readingOutput, gridBagConstraints);
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 spiceOutputFormatPopupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_spiceOutputFormatPopupActionPerformed
boolean vis = spiceOutputFormatPopup.getSelectedItem() == SpiceOutFormat.Epic;
epicLabel.setEnabled(vis);
epicText.setEnabled(vis);
}//GEN-LAST:event_spiceOutputFormatPopupActionPerformed
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.JLabel epicLabel;
private javax.swing.JTextField epicText;
private javax.swing.JPanel execution;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
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 jLabel7;
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 readingOutput;
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.JTextField spiceNetworkDelimiter;
private javax.swing.JRadioButton spiceNoHeaderCards;
private javax.swing.JRadioButton spiceNoTrailerCards;
private javax.swing.JComboBox spiceOutputFormatPopup;
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
}