1         Installation & configuration

Can I run Stateye V.4 m files on my computer without installing Stateye V.4 Installer Package ?

State: informative

In case you cannot or don't want to install the full Stateye V.4 package, you can download the scripts and the binaries which MATLAB will make use of when executing Stateye V4 m files. Just copy the downloaded scripts and binaries to directories on your local computer and reference those directories in your CBF-XML, e.g:
<settings scriptdirectory="/scripts" bindirectory="/bin">
Alternatively, you could manually add the respective directories to your MATLAB path.
Then you can run any generated Stateye V.4 m file. Please also refer to the documentation for details.
Please note: if you don't install the full package, you will not have CBF-Elaborator and Smatrix-Helper available locally. You can use
Stateye V.4.0 WebLaborator as a replacement for CBF-Elaborator from any computer with internet access.

Can I use Stateye V.4 on non-Windows systems?

State: informative

For non-Windows systems, you might download the scripts and sourcecode archive in oder to compile your own binaries appropriate for your system.
Then copy the the downloaded scripts and your own binaries to directories on your local computer and reference those directories in your CBF-XML, e.g:
<settings scriptdirectory="/scripts" bindirectory="/bin">
Alternatively, you could manually add the respective directories to your MATLAB path.
Then you can run any generated Stateye V.4 m file. Please also refer to the documentation for details.
Please note: if you don't install the full package, you will not have CBF-Elaborator and Smatrix-Helper available locally. You can use
Stateye V.4.0 WebLaborator as a replacement for CBF-Elaborator from any computer with internet access.

Why do I receive a "network error" when trying to install Stateye V.4 Installer Package?

State: informative

This error typically occurs when executing an installer file (.msi) which is located on a shared network drive. Please place the installer package into a folder of your local Windows PC to which you have sufficient access permissions.
It should always be possible to execute the installer package from your Windows Desktop, if you have sufficient permissions for installing software at all.

Do I have to uninstall older versions of Stateye before installing Stateye V.4?

State: informative

Any older version of Stateye V.4 has to be removed from your system before you can install a new package.
However, you may keep totally different Stateye Versions (like 3.x).

How can I uninstall Stateye V.4?

State: informative

It is strongly recommended that the package be uninstalled by the same user who originally installed it.There are two options for the removal of an installed Stateye V.4 package from your system:
You can either select the appropriate Start menu item or run the "Add/Remove Software" option from the Windows control panel.
Physically, the installer package will only install files to the Stateye installation directory (typically the "stateye" directory located in your "programs" folder on your local Windows drive). Though you could delete all files from here to remove Stateye, this is not recommended in order to avoid inconsistencies within the internal Windows database containing all installed software.  

What is the difference between "remove" and "repair" when uninstalling Stateye V.4?

State: informative

For some internal Windows Installer reasons you will see radio boxes when uninstalling the package, allowing the selection of either "repair Stateye" or "remove Stateye". In any case, the Stateye package will be removed from your system - independent of your selection - whenever you continue with the uninstall process at that point.

Installing Stateye for use with MATLAB R13 on MS Windows

State: informative

When using Stateye with MATLAB R13 on MS Windows, you need to add the directory of the Stateye binaries to your Windows environment (system) path to let MATLAB find all required DLLs. It is not sufficient to add this to the MATLAB path, which will be done automatically by the generated m scripts, if possible.
To add a directory to your system path, go to Start -> Settings -> Control Panel -> System -> Advanced tab -> environment variables, and add the full directory name of the binaries to the end of the "Path" variable.
Having installed the full package, you can check the location of the binaries by opening CBF-Elaborator and selecting "About" from the Help menu. If you have only downloaded binaries and scripts and copied them to the target PC manually, use the directory to which you copied the binary files.

Compilation of UNIX sources, makefile issues

State: under investigation

The UNIX sources have been tested for successful compilation under (a) 32/64bit linux, Redhat with kernel 2.4.21 using gcc 3.2.3 and (b) 32bit linux, Suse 9.2 with kernel 2.6.x using gcc 3.2.3.
There seem to be some issues with other configurations, these are currently being investigated.

2         Stateye V.4 Windows applications

Can I open and edit arbitrary XML files using CBF-Elaborator?

State: informative

No, CBF-Elaborator is no XML editor. CBF-Elaborator is used to elaborate CBF-XML files (i.e. convert XML files which comply with Stateye V.4 CBF-XML syntax, see documentation, to MATLAB m files).
CBF-XML files opened within CBF-Elaborator will be converted at once, if possible. There are several additional options, e.g. for batch processing.
In order to edit XML files, you may use any text editor or, of course, special XML editors which offer a lot of additional functionality, e.g.
archiTAG XRay .
However, it is suggested using Stateye-GUI for editing Stateye project files. It will guide you through the input of the required parameters and offers an integrated elaborator, please refer to the documentation for details.

Can I open and edit arbitrary XML files using Stateye-GUI?

State: informative

No, Stateye-GUI is solely designed to work on Stateye CBF-XML files (project files). You cannot open or edit files which do not comply with the Stateye CBF-XML format. However, Stateye-GUI offers a XML import feature which can try to retrieve Stateye obect from any XML code snippet.

Is there a predefined default path for the output files?

State: informative

By default the output is placed into the directory from which the MATLAB m-file is executed (MATLAB working directory), if no other output location is specified by the user. Stateye does not write output data to the Stateye installation path as this might not be accessible for every user and as Stateye installation files and project data should not be mixed up. However, the user can define a specific output location in the GUI (settings tab)or in XML:
data     outputdirectory="./dataout"     />
  <graphics outputdirectory="./graphicsout" />

What's the correct number format resp. syntax for parameters? 

State: informative

Generally speaking, Stateye keeps to international english format, irrespective of the PC's system settings, thus using the dot '.' as decimal point. This is required for correct interworking of MATLAB and the Windows components.
Stateye Elaborator, GUI and CBF-XML do not support any other character as decimal point!
Note: also the output files will always keep to this international format, so that the CSV files can be opened by a spreadsheet application correctly if the latter is set to international format, too.
Additionally, many parameters allow entry of several values or range definitions ("sweeps"), e.g.:

  • discrete values: baudrate="5e9;11e9" or channel="channel1;channel2"
  • range: width="50:5:60"

As a consequence, all parameter values are handled as strings, and the GUI cannot check the validity at the time of data input as it does not perform plausibility checks. Wrong parameter definitions may result in errors at the time of elaboration or at runtime of the m code in MATLAB.

The GUI main windows sometimes disappears after having acknowledged a message box. 

State: informative

In fact, the GUI main window sometimes is sent to the background as soon as a message box dialog button has been clicked by the user. However, the application is still running. We are working on this issue and have removed a lot of situations of such kind.

In Stateye GUI, what's the difference between "project validation" and "elaboration"?
From a user’s point of view, the two steps “validate” and “elaborate” could be combined to one.

State: informative

Any elaboration (m-code generation) will internally check the validity of input data with respect to the elaboration process (e.g. object references), i.e. any elaboration automatically performs a validation of project data.
On the other hand, "validation" is some kind of a partial, leightweight elaboration only without m code generation. The validation step is optional and not required. However, if a project is made up of a lot of sweeps and objects, the output m-file might grow very large. In this case, a validation without m-code generation is helpful in order to only check the project data, as it saves the time for the full m-code generation and its corresponding display in the GUI.

In Stateye GUI, sometimes the help text for object parameters is not fully displayed.

State: informative

If help information cannot be fully displayed, you can resize the help text area with the mouse by means of moving the separator bar:

In Stateye GUI, how di I use the specific data type editors within the object’s property grid?

State: informative

Some data input fields allow free text input, others provide specific editors, typically drop-down-lists to select option from, or a S-parameter matrix port mapping editor. To open the editor, click into the iput field. Thus an editor indicator will be displayed to the right of the input field (if applicable):

Clicking the indicator will open the specific editor, e.g. the drop-down-list.

Tip: in case of drop-down-lists (e.g. boolean selection for true/false), each double-clicking the filed will loop through the availble options.

In Stateye GUI, I can only select from a fixed list of object references. I would like to enter several object IDs in order to let Stateye analysis sweep through all of them.

State: informative

Generally, Stateye-GUI will take care that you can only enter object names of existing objects in case an object reference is required to be set. As a consequence, the GUI will offer a drop-down-list with existing object IDs.

However, Stateye allows to sweep through several objects separated by semicolons. In order to suppor this in the GUI, you can switch such drop-down-lists to a free text entry mode to allow free text input in addition to the selection from the list (option from the Tools-menu).

Thus you will be able to type in any text, e.g. object IDs separated by semicolons.

However, it is now your task to make sure that you do not enter invalid object IDs.


After changing the output directory in the output options of Stteye GUI, there might still be files written to another directory not specified by the user.

State: informative

The output directory path can be set for data and graphics independently. If the directory setting is only changed for eiher data or graphics, but not for both data an graphics output, the output might be written to different directories for data and graphics.

From a GUI handling point of view, you can select output data and output graphics in the GUI list view simultaneously and then change the value for both parameters at the same time, if desired.

In any case, the output directory for data and graphics are two different parameters which can (and need to) be set independently.



3         Stateye V.4 core algorithms

Is there a way to use linear equalizer in Stateye V.4?

State: informative

Yes, you can use the standard filter smatrix, but have to manually enter the pole zero positions.

Is the automatic adaptation of filters based on curve fitting?

State: informative

The curve fitting is based on the OIF standard requirements, i.e. for a number of given frequency points, find the pole zero positions that minimise the square error of the absolute amplitude of the Sdd21 for a given channel.

Is it possible to cascade the linear equalizer with the DFE and enjoy the benefits of both filters?

State: informative

Yes, this is possible. However, the optimisation of the linear equalisation is not including the DFE. Only transmit emphasis is optimised including the DFE.
This option is not impossible and can be done using directly MATLAB. It requires a loop around the entire S-matrix-, channel- and eye-calculation which might be very slow. So it is not supported by CBF-Elaborator.

What about modeling the non-linear transfer functions inherent in fiber optic transceivers within the channel as in earlier Stateye versions?

State: informative

The support of non-linear transfer functions was not included in V.4.0, mainly because it was not a requirement in the OIF requirements contract. Currently, there is open source developments ongoing to enable the support of non-linear time correlation, such as 8b10b and DCD, however, no current plans are in place for the optical domain. This does not mean that no such developments could take place, just simply that they have not been discussed.

What are the receiver objects' attributes "eye", "tj", "dj" and "q" used for?

State: informative

The receiver attribute "eye" defines the minimum required vertical eye opening. Using this parameter a decision is made on the compliance of the analyzed system with reference to the minimum required vertical eye opening.
Similarly, the attributes "tj", "dj", "q" describe required values used for the decision on jitter compliance of the system after a successful analysis run.
All these attributes do not influence any receiver characteristics/properties, as far as analysis is concerned - they are only used for compliance check at the end of an analysis run.
The results of the compliance check will finally be displayed and/or saved in the corresponding output file:
jitterCompliant = true means: jitter compliance requirements met by the analyzed system
eyeCompliant = true means: eye compliance requirements met by the analyzed system
fullyCompliant = jitterCompliant AND eyeCompliant

What is the transmitter attribute "emphasis" intended for?

State: informative

Basically the emphasis attribute is a string consisting of one or more parameters separated by blanks.
The emphasis string describes an arbitrary baud spaced n-tap transmitter. The string should contain the pre-taps followed by the main (center) tap and finally the post-taps in their correct time sequence.
Please refer to the full Stateye documentation (PDF) for details on how to set this attribute correctly.

With Stateye V4.2.0, an optional mask was introduced to be plotted into the eye diagram. How can this mask be switched off?

State: resolved with V.4.2.1
please upgrade

With Stateye V.4.2.1, a new XML attribute “showmask” (node <output> <graphics>) was introduced:

This attribute (which is also available at the GUI) is used to control the display of the mask within the eye diagram. Per default, the mask is now switched off.

What is the corect way of mapping ports for crosstalk agressors?
Would you map FEXT as (3,4 -> 5,6) and NEXT as (7,8 -> 5,6)? Or does Stateye not distinguish between NEXT and FEXt and you would map everything as in the first picture?

State: informative

This depends a little on whether you wish to cascade matrices or not.

  • If you don't want to cascade the channel with anything else but a simple return loss model, then each crosstalk aggressor is mapped into a different smatrix and there shouldn't be any difference between FEXT and NEXT, e.g.
    • Victim transmitter is (1,2)
    • Victim receiver is (5,6)
    • Aggressor transmiter is (3,4)
    • Aggressor receiver is (7,8)

NEXT or FEXT is then described by (3,4)->(5,6), and the additional reflected energy from the aggressor's receiver to the victims's receiver is described as (7,8)->(5,6)

  • But if you now want to cascade a measured channel with for example a connector model then things must change:

                   Channel         Connector

Vic_Tx    =   (1,2)(5,6)   x   (1,2)(5,6)       = Vic_Rx

Agg_Rx =   (3,4)(7,8)       (3,4)(7,8)       = Agg_Tx

If you were now using this cascaded matrix, you would also have to change the channel description. Per default the aggressor transmitter is expected on (3,4) and the aggressor receiver on (7,8), and this must be changed. Firstly you must enable the "all seeing eye" and then in the channel object description where the smatrix is reference you must change:

txp_xt = 7

txn_xt = 8

rxp_xt = 3

rxn_xt = 4

How is the summation of crosstalk aggressors done?
The transfer functions are being summed – but what is a simple analogy to measurements in the lab? Is it power sum, volatage sum, RSS, …?

State: informative

Crosstalk aggressors are linearly superimposed on the victim channel. i.e if my aggressors pulse response on the victim is 5mV, and the victim pulse response is 100mV, then the resulting signal is 95mV.

However, looking at multiple crosstalk aggressors statistically the result of the statistical eye appears different, even though the underlying calculation is still linear.
Example: I have a victim which shows a statistical eye opening of 100mV and I add an crosstalk aggressor, and the eye closes to 95mV at 1e-12. If I add the same crosstalk aggressor again, I will not get an eye opening of 90mV, but something more like 100mV - sqrt(2) * 5mV. This is simply because the pulses are statistically adding. It's sort of an RSS, if you like.

Stateye V.4 cannot read S-parameter files with zero padding already present, due to restrictions in the cascade algorithm.

State: informative

Stateye pads the differential frequency response before ifft. However, it cannot read padded S-parameter files, as cascading would not be possible with such padded files.

Inother words, Stateye  now does the padding itself (see release notes to V.4.2.2). But you cannot pre-pad the files before feeding them into Stateye.

The padding is hiden from the user, as the use model is taking either directly measured data, or data from ADS.

Note: the differential frequnecy response is calculated from the finally cascaded matrices.

Analysis of channel with very low loss

State: informative

Care must be taken when performing analysis of channels with very low loss. The minimum frequency point in the S-parameter files must be sufficient as to enable the edge rate to be defined by the cascade transmitter/receiver filter.

4         Error messages & workarounds

There are some general incompatibilities with MATLAB versions lower than V.7.0.4 (R14).

State: resolved with V.4.0.2
please upgrade

As of V.4.0.2, Stateye supports MATLAB R13, too.

Why do I sometimes receive a misleading MATLAB error messages, e.g. about the 'timestamp' variable?

State: informative

The Stateye m code generated by the elaborator uses try-catch-blocks for exception handling in order to have MATLAB try to finish an analysis even in case of an error. If a first "root cause" error has occurred in one of those try-catch blocks, you might receive a misleading MATLAB message about some other error, e.g. concerning the use of 'timestamp'. Usually, the cause of the error is the first error within the try-catch-block, but not the one shown in the MATLAB error message. Please try to locate the real error earlier in the diary file or in the MATLAB command window. You might find it in a message immediately after a 'catch' (which means that an error was caught by MATLAB). 

Why do I receive an error message about MEX files/modules which cannot be loaded in MATLAB?

State: informative

This normally means that MATLAB cannot locate the Stateye binary files automatically. Please set the appropriate attribute "bindirectory" in the settings section of your CBL-XML files to the directory in which the binaries are located or add the directory permanently to the MATLAB path.
Having installed the full package, you can check the location of the binaries by opening CBF-Elaborator and selecting "About" from the Help menu. If you have only downloaded binaries and scripts and copied them to the target PC manually, use the directory to which you copied the binary files.
In case you are running Stateye on MATLAB R13 on MS Windows, please refer to "Installing Stateye for use with MATLAB R13 on MS Windows" above.

There appears to be a MATLAB memory overflow during repeated analysis runs with large S files.

State: informative

This is a MATLAB bug with currently no workaround. It can occur with a large number of analysis runs executed one after another, e.g. with sweeps, particularly with large S-parameter files or a lot of crosstalk aggressors.

Closing MATLAB (MATLAB GUI) and reopening MATLAB helps to run Stateye m-files without problems again.

With Stateye V.4.2.0, the new settings node paramater “splitruns” was introduced: The new attribute is used to split resulting m code into separate files which do not contain more than as many analysis runs as specified by this parameter. This helps creating m files which do not exceed MATLAB’s capacities with respect to memory allocation (detected memory leaks in MATLAB).
If Stateye-GUI detects that splitting the output file is desired by the user, …

·         the GUI will prompt the user to confirm this and then save the resulting m code to several individually executable fragments
(instead of one large single m file).

·         offer the user to create a Windows batch file
which can be used to automatically open MATLAB, run a fragment and close MATLAB again for each single fragment.

This will permit to execute a large amount of analysis runs one after another with automatically restarting MATLAB in between in order to avoid MATLAB’s memory leaks.