|
|
|
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.
|
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.