How to display PRBS Error counters on the screen and in real-time using the Exported VIAVI Test Center Tcl scripts?
Knowledge Base - FAQ
How to display PRBS Error counters on the screen and in real-time using the Exported VIAVI Test Center Tcl scripts?
Since, the exported script run based on the way the command sequencer configured. Please follow the steps to modify the script to meet above requirement
1. Edit the _logic.tcl
2. Modify the procedure run () where the sequencer executed to run the configuration
a. Subscribe to analyzerportresults (if you have selected port results, then this may automatically subscribed by the application) as shown below
# Subscribe to results for result query VIAVI-0002-analyzerportresults
set hPortResults [stc::subscribe -parent [lindex [stc::get system1 -children-Project] 0] \
-resultParent " [lindex [stc::get system1 -children-Project] 0] " \
-configType analyzer \
-resultType analyzerportresults \
-filterList "" ]
b. Add a while loop and
i. Sequencer start
ii. Display the required counts inside the loop as shown in the below example
Also please see the attachment for complete script
proc run {} {
# Subscribe to results for result query VIAVI-0002-analyzerportresults
set hPortResults [stc::subscribe -parent [lindex [stc::get system1 -children-Project] 0] \
-resultParent " [lindex [stc::get system1 -children-Project] 0] " \
-configType analyzer \
-resultType analyzerportresults \
-filterList "" ]
# Start the sequencer
#stc::perform sequencerStart
# Wait for sequencer to finish
#stc::waituntilcomplete
set seq [lindex [stc::get system1 -children-sequencer] 0] ;# get the sequencer handle
stc::perform sequencerStart
while {[stc::get $seq -state] != "IDLE"} {
#puts "Current state: [stc::get $seq -state] Current command: [stc::get $seq -currentCommand]"
foreach hPrbsResults [stc::get $hPortResults -ResultHandleList] {
# Place the results into an array for easy access.
array set aPrbs [stc::get $hPrbsResults]
puts "PrbsBitErrorCount: $aPrbs(-PrbsBitErrorCount)\t PrbsBitErrorRate $aPrbs(-PrbsBitErrorRate)\
\t PrbsBitErrorRatio $aPrbs(-PrbsBitErrorRatio)\t PrbsErrorFrameCount $aPrbs(-PrbsErrorFrameCount)\
\t PrbsErrorFrameRate $aPrbs(-PrbsErrorFrameRate)\tPrbsFillOctetCount $aPrbs(-PrbsFillOctetCount)\
\t PrbsFillOctetRate $aPrbs(-PrbsFillOctetRate)"
puts "\n\n\n"
}
stc::sleep 1
if {[stc::get $seq -state] == "PAUSE"} {
puts "Current state: [stc::get $seq -state] Current command: [stc::get $seq -currentCommand]"
break
}
}
if {[stc::get $seq -state] == "IDLE"} {
puts "Sequencer is stopped!"
}
# check the sequencer status and test state
set sqrHandle [stc::get System1 -Children-Sequencer]
set sqrStatus [stc::get $sqrHandle -Status]
set sqrTestState [stc::get $sqrHandle -TestState]
if { $sqrStatus eq "" } {
return $sqrTestState
} else {
return $sqrStatus
}
} // end of procedure run
You may able to display other Real time counters as shown in the sample