IsSpice4 | IntuScope | ICAP | Sample | The Integration Module Interface


General

Automation of applications using the ActiveX (formerly OLE) enables you to control the ICAP suite of applications using the following interfaces. For more information, see How OLE 2 Enhances Interoperability in EDA Tools.
 

Automation Methods And Properties Common to ICAPS, IsSpice4, and IntuScope

Application

    LPDISPATCH GetApplication();
     
    Returns the IDispatch of the application object.

FullName

    CString GetFullName();
     
    Returns the complete path and name of the application. As an example this function would return D:\SPICE4\ICAPS.EXE for the ICAPS application. The case of the return string is not guaranteed.

Name

    CString GetName();
     
    Returns the name of the application only. As an example this function would return ICAPS.EXE for the ICAPS application. The case of the return string is not guaranteed.

Parent

    LPDISPATCH GetParent();
     
    Similar to GetApplication

Visible

    void SetVisible(BOOL bNewValue);
    BOOL GetVisible();
     
    The Visible property will display the main window of the application when passed TRUE, or return the current visible state of the application.

Version

    CString GetVersion();
    Returns the version of the application.

DefaultFilePath (to be implemented in future versions)

    void SetDefaultFilePath(BSTR* newValue);
    CString GetDefaultFilePath();

Caption (to be implemented in future versions)

    void SetCaption(BSTR* newValue);
    CString GetCaption();

CircuitName (to be implemented in future versions)

    void SetCircuitName(BSTR* newValue);
    CString GetCircuitName();

CircuitFullName (to be implemented in future versions)

    void SetCircuitFullName(BSTR* newValue);
    CString GetCircuitFullName();
     
    The property will set the currently active project for the ICAPS application only once.

IsSpice4 | IntuScope | Sample | Top


ICAPS Methods

Quit

    void Quit();
     
    Initiates the Quit sequence for the application. The application will not actually terminate until all reference counts go to zero. (Reference count check can be missed in some cases.)

Simulate

    void Simulate();
     
    The result of this method depends on the state of IsSpice4. If IsSpice4 is not running a simulation is started for the circuit passed to ICAPS using CircuitFullName. If IsSpice4 is running it is brought to the foreground.

ForceSimulate

    void ForceSimulate();
     
    This method will start a new simulation on the circuit passed to ICAPS using CircuitFullName regardless of the state of IsSpice4

Scope

    void Scope();
     
    If IntuScope is not running it is started for the circuit passed to ICAPS using CircuitFullName. If IntuScope is running it is brought to the foreground.

Schematic

    void Schematic();
     
    Since the original intent of this interface was to replace the schematic will any other. This methods has no useful meaning to anyone other than Intusoft. Future versions may call the active object with moniker IIM to run a method called Schematic that will switch to whatever the IIM wants.

EditText

void EditText();

    If the text editor is not running it is started for the circuit passed to ICAPS using CircuitFullName. If it is running it is brought to the foreground.

HelpForDevice

    void HelpForDevice(BSTR* pbstr);
     
    In the current version the help file IsSyntax.hlp located in the same directory as ICAPS.EXE is opened and the appropriate help screen is displayed. If this file does not exist this method operates as in previous versions.
    In previous versions this method invokes the text editor's help system and pass it the correct index of the help screen that corresponds to the reference designator passed as the argument. If there is no help screen for the reference designation passed, or the string is empty, the IsSpice4 help contents is displayed.

ReleaseScopeAdvise

    void ReleaseScopeAdvise();
     
    This method is used to release any IDispatch set for IntuScope. This is explained in more detail in the Advisory section.

ReleaseSpiceAdvise

    void ReleaseSpiceAdvise();
     
    This method is used to release any IDispatch set for IsSpice4. This is explained in more detail in the Advisory section.

ICAPS Properties

Include

    void SetInclude(BOOL bNewValue);
    BOOL GetInclude();
    The library include function of ICAPS is controlled by this property. If set to FALSE all library including functions are disabled. This property corresponds to the Include Libraries option. See the getting Started manual for more information.

Param

    void SetParam(BOOL bNewValue);
    BOOL GetParam();
     
    The subcircuit parameter passing function of ICAPS is controlled by this property. If set to FALSE no subcircuit parameters will be evaluated. This property corresponds to the Evaluate Parameters option. See the getting Started manual for more information.

CloseOpenedApps

    void SetCloseOpenedApps(BOOL bNewValue);
    BOOL GetCloseOpenedApps();
     
    When this property is set to TRUE only one Intusoft application can be run at a time. This property should seldom be set to FALSE. This property corresponds to the Close Opened Applications option. See the Getting Started manual for more information.

SimPause

    void SetSimPause(BOOL bNewValue);
    BOOL GetSimPause();
     
    When this property is set to TRUE the simulator will stop after each simulation and display the Simulation Control dialog. This property corresponds to the Simulator Pause option. See the Getting Started manual for more information.

NomMonte

    void SetNomMonte(BOOL bNewValue);
    BOOL GetNomMonte();
     
    This property is only used during a Monte Carlo analysis. It corresponds to the Nominal Monte Carlo option. See the IsSpice4 User's Guide for more details.

Monte

    void SetMonte(BOOL bNewValue);
    BOOL GetMonte();
     
    This property is only used during a Monte Carlo analysis. It sets the state of the Monte Carlo option. See the IsSpice4 User's Guide for more details.

Lots

    void SetLots(long nNewValue);
    long GetLots();
     
    This property is only used during a Monte Carlo analysis. It sets the number of lots. See the IsSpice4 User's Guide for more details.

Cases

    void SetCases(long nNewValue);
    long GetCases();
     
    This property is only used during a Monte Carlo analysis. It sets the number of cases. See the IsSpice4 User's Guide for more details.

ParamAfterMonte

    void SetParamAfterMonte(BOOL bNewValue);
    BOOL GetParamAfterMonte();
     
    This property is only used during a Monte Carlo analysis. It corresponds to the Param After Monte option. See the IsSpice4 User's Guide for more details.

FirstOpt

    void SetFirstOpt(BOOL bNewValue);
    BOOL GetFirstOpt();
     
    This property is only used during a Optimization, or Parameter Sweeping, analysis. It corresponds to the First Optimizer option. See the IsSpice4 User's Guide for more details.

Opt

    void SetOpt(BOOL bNewValue);
    BOOL GetOpt();
     
    This property is only used during a Optimization, or Parameter Sweeping, analysis. It corresponds to the Optimizer option. See the IsSpice4 User's Guide for more details.

ParamAfterOpt

    void SetParamAfterOpt(BOOL bNewValue);
    BOOL GetParamAfterOpt();
     
    This property is only used during a Optimization, or Parameter Sweeping, analysis. It corresponds to the Param After Optimizer option. See the IsSpice4 User's Guide for more details.

ScopeAdvise

    void SetScopeAdvise(LPDISPATCH* newValue);
    LPDISPATCH GetScopeAdvise();
     
    This property is used to control the IDispatch of the application used for data processing. See the Advisory section for more details

SpiceAdvise

    void SetSpiceAdvise(LPDISPATCH* newValue);
    LPDISPATCH GetSpiceAdvise();
     
    This property is used to control the IDispatch of the application used for simulation. See the Advisory section for more details

Advisory

ICAPS is used to control the flow of information between all applications that comprise an ICAP package. OLE Automation is only one of a number of communication schemes employed by ICAPS. In order to protect the user of the interface from as much garbage collection as possible the IDispatchs of IntuScope and IsSpice4 are registered with ICAPS when each application starts and is released when the application terminates.

By using the get property of the ScopeAdvise an external application can guarantee that if an IDispatch is returned that IntuScope, or IsSpice4, is running and set to the same project as the rest of the ICAP package. The external application that obtains the an IDispatch using these advisory connections should release the IDispatch as soon as possible.

There are further restrictions on this type of communication scheme that are beyond the scope of this document. In future versions it may be necessary to change this scheme.

IsSpice4 | ICAPS | Sample | Top


IntuScope Methods And Properties

(These methods and properties will not be enhanced. Only bug fixes)

AnalysisType

    void SetAnalysisType(long nNewValue);
    long GetAnalysisType();
    This property is used to set the analysis type that IntuScope is set to. Before displaying a plot is is a good idea to set the analysis type.
    The valid values are;
    0 Transient Analysis
    1 AC Analysis
    2 DC Analysis
    3 Noise Analysis

Plot

    void Plot(BSTR* pbstr, long lType, long lParam);
    This method plots a vector defined by the arguments for the selected analysis type. The first argument is the name of the item to be plotted. This can be one of two types defined by the lType parameter. If lType is set to 0 the name passed as pbstr is interpreted as a net. If lType is set to 1 the name passed as pbstr is interpreted as a device. The final parameter defines the desired parameter to plot for the item passed as pbstr. Valid values are
    Voltage 0
    Current 1
    Power 2
    Future versions will expand this list to include all support internal device parameters. See the IsSpice4 User's Guide for information about internally computed device parameters.

ICAPS | IntuScope | Sample | Top


IsSpice4 Methods And Properties

Properties

ScriptOutput

CString GetScriptOutput();
 
When an ICL script is run it displays output to the Output window. When an OLE Automation object is controlling IsSpice4 the output normally sent to the output window is sent to a buffer instead. This buffer is cleared at the beginning of the DoScript and DoRemoteScript methods. Use this property to get the output from an ICL script. No output will be sent to IsSpice4's output window. (read-only)

ScriptErr

CString GetScriptErr();
 
Similar to ScriptOutput except the contents of the error and status window are sent to the buffer. (read-only)

RemoteCommandFlag

BOOL GetRemoteCommandFlag();
 
A remote script is sent to IsSpice4 for simulation in parallel with the execution of the other applications in the ICAP package. This property is set to TRUE when the remote script has completed and the contents of the ScriptError, or ScriptOutput can be read. (read-only)

Methods

DoScript

void DoScript(BSTR* pbstr);
 
Unlike the remote ICL script the DoScript method will execute the passed ICL script in IsSpice4 and not return control to other applications until the script is complete. For small scripts this is efficient. However, if the script is lengthy it is wise to use the DoRemoteScript method.

DoRemoteScript

void DoRemoteScript(BSTR* pbstr);
 
This method sends a script to be processed by IsSpice4 without waiting for the results. The RemoteCommandFlag is set to FALSE at the start and not set to TRUE until the simulation is complete.

Simulate

void Simulate(BSTR* pbstr);
 
This method is not implemented in this version.

IsSpice4 | IntuScope | Sample | Top


The Example IMTST Application

Overview

download the IMTST example now (77k bytes)

The IMTST application is a VC++ 5 dialog based application. It is coded to use only the sample.cir SPICE netlist located in the IMTST project directory. It is designed to cover all of the possible methods and properties that are commonly used. After installing the example software simply open the project file, compile and run the application. The following dialog will be displayed;



System Menu

The System menu contains three functions, Move, Close, and About.

File Menu

The File menu contains only one function, Exit, that performs the same function as the Close function found in the System menu

Actions Menu

This menu items here test the main methods of ICAPS. A one-to-one correlation from menu item to function exist so the code should be easy to follow. These functions represent what we consider to be the first level of integration. That is, from an external application any of the ICAP programs can be initialized to a common project and started.

Test Menu

The items in this menu are split into two submenus, Cross probe and Alter. These two submenus represent the second and third level of integration.

The cross probing function is tested using examples of the two types of items that are common to all schematics, nets and devices. There are two additional combo boxes that are used to select the analysis type and plot parameter to be displayed during cross probing. One main Cross Probe function performs all of the "integration" connection. The individual functions linked to the menu are used to error check. This represents the second level of integration. One in which the only communication is out from the schematic to the data processor, IntuScope.

The Alter category represents what we consider to be the more complicated third level of integration. It implements "bi-directional communication" between the schematic and the ICAP package. It also requires some knowledge of the Interactive Command language, ICL, of IsSpice4. The exposed methods make sole use of the ICL to perform the simulation tasks requested.

The Integration Module Interface

For those occasions when an application cannot directly access the functionality of the ICAP interface an intermediate application must be provided to control the flow of information. This intermediate application is called the Integration Module. Its purpose is to implement the interfaces of two, or more, applications and make sure that each is provided the correct information in its "native form", much the same as an interpreter at the United Nations.

The IMTST application performs this task by exposing an OLE Automation interface. CIMinterface is a class derived from CCmdTarget to perform the task of translation. The interface is registered using an Item Moniker, with the OLE running object table. By using this moniker another application can interface to the running instance of the IMTST application. Using this CIMinterface class to expose methods and properties an interface is create that can be customized to fit into most scenarios.

Top