Product Documentation
OCEAN Reference
Product Version IC23.1, September 2023

12


OCEAN Distributed Processing Commands

The Open Command Environment for Analysis (OCEAN) distributed processing commands let you run OCEAN jobs across a collection of computer systems.

This chapter contains information on the following commands:

This chapter also provides sample OCEAN scripts that optimally use these commands. See the section Sample Scripts.

For detailed information on distributed processing, refer to Virtuoso Analog Distributed Processing Option User Guide.

deleteJob

deleteJob( 
t_jobName 
[ t_jobName2 t_jobName3t_jobNameN ]
) 
=> t / nil

Description

Removes a job or series of jobs from the text-based job monitor.

Deleted jobs are no longer listed in the job monitor. The deleteJob command applies only to ended jobs.

Arguments

t_jobName

Name used to identify the job.

t_jobname2t_jobnameN

Additional jobs that you want to delete.

Value Returned

t

The specified job or series of job is removed.

nil

Prints an error message.

Examples

Deletes the myckt job.

deleteJob( 'myckt) 
=> t

digitalHostMode

digitalHostMode(
{ 'local | 'remote } 
) 
=> t / nil

Description

,Specifies whether the digital simulator will run locally or on a remote host for mixed-signal simulation.

Arguments

'local

Sets the simulation to run locally on the user’s machine.

'remote

Sets the simulation to run on a remote host. If you use this argument, you must specify the host name by using the digitalHostName command.

Value Returned

t

The digital simulator is run as specified.

nil

Prints an error message.

Examples

Sets the digital simulator to run locally on the user’s host.

digitalHostMode( 'local )
=> t

digitalHostName

digitalHostName( 
t_name
) 
=> t / nil

Description

Specifies the name of the remote host for the digital simulator, for mixed-signal simulations.

When you use the digitalHostMode('remote) command, use this command to specify the name of the remote host.

Arguments

t_name

Name used to identify the host for the digital simulator.

Value Returned

t

The specified name is set for the remote host.

nil

Prints an error message.

Examples

Indicates that the digital simulator runs on the host called digitalhost.

digitalHostName( "digitalhost" )
=> t

hostMode

hostMode( 
{ 'local | 'remote | 'distributed } 
) 
=> t / nil

Description

Sets the simulation host mode.

The default value for hostMode is specified in the asimenv.startup file with the hostMode environment variable.

Arguments

'local

Sets the simulation to run locally on the user’s machine.

'remote

Sets the simulation to run on a remote host queue. For this release, the remote host is specified in the .cdsenv file.

'distributed

Sets the simulation to run using the distributed processing software.

Value Returned

t

The specified simulation host mode is set.

nil

Prints an error message.

Examples

Enables distributed processing on the current host.

hostMode( 'distributed ) 
=> t

hostName

hostName( 
t_name 
) 
=> t / nil

Description

Specifies the name of the remote host.

When you use the hostMode('remote) command, use this command to specify the name of the remote host.

Arguments

t_name

Name used to identify the remote host.

Value Returned

t

The specified name for the remote host is set.

nil

Prints an error message.

Examples

Specifies that the host called remotehost is to be used for remote simulation.

hostName( "remotehost" )
=> t

killJob

killJob( 
t_jobName [ t_jobName2 t_jobName3t_jobNameN ]
) 
=> t / nil

Description

Stops processing of a job or a series of jobs.

The job might still show up in the job monitor, but it cannot be restarted. Use the deleteJob command to remove the job name from the job server and job monitor.

Arguments

t_jobName

Name used to identify the job.

t_jobname2t_jobnameN

Additional jobs that you want to stop.

Value Returned

t

The processing of teh specified job or the series of job is stopped.

nil

Prints an error message.

Examples

Stops the job called myckt. If the job is in the queue and has not started running yet, it is deleted from the queue.

killJob( 'myckt ) 
=> t

monitor

monitor(
[ ?taskMode s_taskMode ] 
) 
=> t / nil

Description

Monitors the jobs submitted to the distributed system.

Arguments

s_taskMode

When not nil, multitask jobs are expanded to show individual jobs. A multitask job is one that contains several related jobs.

Value Returned

t

The jobs submitted to the distributed system are monitored.

nil

Prints an error message.

Examples

Displays the name, host, and queue for all pending tasks sorted on a queue name.

monitor( ?taskMode t )
=> t

remoteDir

remoteDir(
t_path
) 
=> t / nil

Description

Specifies the project directory on the remote host to be used for remote simulation.

When you use the hostMode('remote) command, use this command to specify the project directory on the remote host.

Arguments

t_path

Specifies the path to the project directory on the remote host to be used for remote simulation.

Value Returned

t

The specified project directory is used for remote simulation.

nil

Prints an error message.

Examples

Specifies that the project directory is ~/simulation.

remoteDir( "~/simulation" )
=> t

resumeJob

resumeJob(
t_jobName [ t_jobName2 t_jobName3t_jobNameN ]
) 
=> t / nil

Description

Resumes the processing of a previously suspended job or series of jobs. The resumeJob command applies only to jobs that are suspended.

Arguments

t_jobName

Name used to identify the job.

t_jobName2t_jobNameN

Additional jobs that you want to resume.

Value Returned

t

The processing of a previously suspended job or series of jobs is resumed.

nil

Prints an error message.

Examples

Resumes the myckt job that was halted with the suspendJob command.

resumeJob( 'myckt ) 
=> t

suspendJob

suspendJob(
t_jobName [ t_jobName2 t_jobName3t_jobNameN ]
) 
=> t / nil

Description

Suspends the processing of a job or series of jobs. The suspendJob command applies only to jobs that are pending or running.

Arguments

t_jobName

Name used to identify the job.

t_jobName2t_jobnameN

Additional jobs that you want to suspend.

Value Returned

t

The processing of a job or series of jobs is suspended.

nil

Prints an error message.

Examples

Suspends the job called myckt.

suspendJob( 'myckt ) 
=> t

wait

wait(
[ ?queue t_queueName ] 
jobName [ jobName2 jobName3jobNameN ]
) 
=> t / nil

Description

Postpones processing of a script until the specified jobs are completed. This command is ignored if distributed processing is not available.

The wait command is highly useful when you use the non-blocking mode of distributed processing and you want to do some post-processing, such as selecting and viewing results after a job is completed. The wait command is not required when you use the blocking mode of distributed processing.

Arguments

?queue t_queueName

The name of queue on which job launched by wait is submitted.

t_jobName

Name used to identify the job. The job name is user defined or system generated, depending on how the user submitted the job.

t_jobName2t_jobnameN

Additional jobs that you want to postpone.

Value Returned

t

Processing of a script is postponed until the specified jobs are completed.

nil

Prints an error message.

Examples

Postpones execution of all subsequent OCEAN commands until the job myckt1 completes.

wait( 'myckt1 ) 
=> t

Job launched by wait is submitted on lnx64 queue that postpones the execution of all subsequent OCEAN commands until the job job0 completes.

wait( ?queue "lnx64" 'job0 )
=> t

Sample Scripts

This section provides sample scripts for the following:

To submit multiple jobs and show the use of the dependentOn argument in one job

This script can be used to submit multiple jobs while using the dependentOn argument in one of these jobs.

; set up the environment for the jobs
simulator( 'spectre )
hostMode( 'distributed )
design( "/home/simulation/test2/spectre/schematic/netlist/netlist")
resultsDir( "/home/simulation/test2/spectre/schematic" )
analysis('tran ?stop "5u" )
temp( 27 )
jobList = nil
; starting first job
jobList = append1( jobList run( ?queue "test" ?host "menaka" ) )
analysis('tran ?stop "50u")
; starting second job
jobList = append1( jobList run(?jobName "job_2" ?queue "test" ?host "menaka"))
analysis('tran ?stop "10u")
; starting third job, which is dependent on job_2
jobList= append1(jobList run(?jobName "disable" ?queue "test" ?dependentOn
                symbolToString(car(last(jobList)))))
; wait for all the jobs to complete
wait((append1 last(jobList) nil))
; open and plot the results of the jobs
openResults( car(last(jobList)))
selectResult( 'tran )
newWindow()
plot(getData("/net61") )
openResults( nth(1 jobList))
selectResult('tran)
newWindow()
plot(getData("/net61") )

To set up and run a simple analysis in blocking mode and select results

; set up the environment for Simple Analysis
simulator( 'spectre )
hostMode( 'distributed )
design(
"/home/amit/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist" )
resultsDir( "/home/Artist446/simulation/ampTest/spectre/schematic" )
modelFile(
'("/home/Artist446/Models/myModels.scs" "")
)
analysis( 'tran ?stop "3u" )
desVar( "CAP" 0.8p )
temp( 27 )
; submit the job in blocking mode, to the queue test and machine menaka
run(?queue "test" ?host "menaka" ?block t)
; select and plot the results
selectResult( 'tran )
plot(getData("/out"))

To set up and run a parametric analysis in blocking mode and select results

; set up the environment for parametric analysis.
simulator( 'spectre )
hostMode( 'distributed )
design(
"/home/amit/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist")
resultsDir( "/home/amit/Artist446/simulation/ampTest/spectre/schematic"
)
modelFile(
 '("/home/amit/Artist446/Models/myModels.scs" "")
)
analysis('tran ?stop "3u"  )
desVar(   "CAP" 0.8p    )
temp( 27 )
paramAnalysis("CAP" ?values ’(1e-13 2.5e-13 4e-13 ))
; submit the job in blocking mode, to the queue test and machine menaka
paramRun(?queue "fast" ?host "menaka" ?block t)
; select and plot the results
selectResult( 'tran )
plot(getData("/out") )

To submit multiple jobs without using wait or selecting results

; set up the environment for the jobs
simulator( 'spectre )
hostMode( 'distributed )
design( 
"/home/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist")
resultsDir( "/home/Artist446/simulation/ampTest/spectre/schematic" )
modelFile(
'("/home/Artist446/Models/myModels.scs" "")
)
; setup and submit first job
analysis('tran ?stop "3u"  )
desVar(   "CAP" 0.8p    )
temp( 27 )
run(?queue "SUN5_5032" ?host "menaka")
; setup and submit second job
analysis('ac ?start "1M"  ?stop "2M"  )
analysis('tran ?stop "3u"  )
desVar(   "CAP" 0.8p    )
temp( 27 )
run(?queue "SUN5_5032" ?host "menaka")

To submit multiple jobs using wait and selection of results

; set up the environment for the jobs
simulator( 'spectre )
hostMode( 'distributed )
design( 
"/home/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist")
resultsDir( "/home/Artist446/simulation/ampTest/spectre/schematic" )
modelFile(
 '("/home/Artist446/Models/myModels.scs" "")
)
; initialize jobList to nil
jobList = nil
; setup and submit first job
analysis('tran ?stop "3u"  )
desVar(   "CAP" 0.8p    )
temp( 27 )
jobList = append1( jobList run(?queue "SUN5_5032" ?host "menaka") )
; setup and submit second job
analysis(’ac ?start "1M"  ?stop "2M"  )
analysis(’tran ?stop "3u"  )
desVar(   "CAP" 0.8p    )
temp( 27 )
jobList = append1( jobList run(?queue "SUN5_5032" ?host "menaka"))
; wait for both the jobs to finish
wait( (append1 jobList nil) )
; open and plot the result of first job
openResults( (car jobList))
selectResult( 'tran )
plot(getData("/out") )
; open and plot the result of second job
openResults( (cadr jobList))
selectResult( 'tran )
plot(getData("/out") )
selectResult( ’ac )
plot(getData("/out") )
; delete the jobs
foreach( x jobList deleteJob( x ) )


Return to top
 ⠀
X