19 Signal Content

This chapter describes some basic principles of how signals are represented in impulse. These are not necessary for the use of impulse, but convey a better understanding.

Signals and Samples

Signals are value changes (samples) in relation to a specific domain (e.g., time), which can be represented in a real application as log or trace data over time, a transformation result over frequency or statistical data over an index.

Discrete or Continuous

Value changes (samples) can be at any point (discrete), even several at one point, or continuously at a fixed rate.

Domain

This could be time, date, frequency, index, voltage, current or generic etc.

Streams

Signals may grow over time to support online data visualization.

Relations and Labels

Signal samples may have a relation to a position in the same signal or any other signal. Labels may also be attached to a sample.

Grouped Samples

Samples may be grouped, for example, transactions where at least two samples (start and end) cover a period.

Markers

Signals may contain markers (Eclipse bookmarks, tasks and annotations).

Signal Types

• Logic

Logic values consist of 1...N bits. The bits are stored as 2-, 4- or 16-state data (normally nine states are used).

Typical uses cases: Digital simulation, logic analyzers.

• Event/ Enumeration

Enumeration values consist of an integer value and its text representation.

Typical uses cases: Digital simulation, logic analyzers, logs and traces.

• Integer

Integer value of any size.

Typical uses cases: Digital simulation, scopes, logs and traces.

• Float

32- or 64-bit real values.

Typical uses cases: Analouge simulation, scopes, logs and traces.

• Text

Text values of any size.

Typical uses cases: Logs.

• Arrays

Arrays of Text, Integer, Float and Enumeration.
• Struct

Structured data with elements of type Text, Integer, Float, Binary and Enumeration.

Typical uses cases: Logs , traces.

• Binary

Binary data of any size.

Typical uses cases: Image data.

H100 Attach - How to read my record file (wave file, log, trace,..)
• impulse supports a lot of different file formats. To get an overview of your installed readers, open the Preferences view and navigate to impulse->Serializers.
• To open a Workspace resource, double-click the record file (or use the context menu of the file).
• Some readers require a configuration (e.g. CSV, PatternLog,..).
1. Open the Preferences view and navigate to impulse->Serializers (or use the "Reload" button menu);
• To re-load a file with a different configuration,
2. Select the configuration to re-load the file.
H101 Attach - What to do if my file type is not supported
• If your file is not loaded (not identified as an impulse record file), first check our website if you need to install another extension (Products) to get the file supported.
• If the file type is supported but not identified, please check if your file has the correct extension. See H102 to change the file extension.
• If the file type is not supported, there are 4 options:
1. If your file is a text log file with multiple text pattern, try the Pattern Log Reader (defines the content, using regular expressions).
2. You can implement a reader in Java language (check the extension documentation)
4. In case of reading signal data from a signal port (e.g. TCP, Memory, Serial Interface,..), you can use the Scripted Reader.
H102 Attach - How to change the file extension for a supported record type

impulse identifies a resource file by its extension and its content data. To change the file extension for a support record type:

1. Open the Preferences view and enter General->Content Types;
2. Open Element->Record and select the impulse content type (e.g. VCD Record)
3. Press "Add" beside the field "File Associations";
4. Enter the extension and press "OK".
H103 Attach - How to reload my file
1. Click the "Reload" button in the viewers toolbar;
To re-load a file with a different configuration,
2. Select the configuration to re-load the file.

Record contents

Wave files, logs and traces

Independent from its source and type, impulse organizes all signal data by using these elements:

Record

The top-level element, usually the content of a file, or the resulting input of a port.

Scope

An organisation element (like a folder) to group signals.

Signal

An indexed sequence of signal samples (containing values of different type), organized along a domain base (e.g. time).

Proxy

A signal that contains the identical content of a another signal, and therefore contains only a link to that signal (simulation wave file often contains identical signals).

Record

Represents a group of signals and scopes as a whole. Stands usually for a wave file (if you make the child elements of a wave file visible in the Project Explorer, you will find all its scopes and signals).

The possible child elements are:

• Scope (Can be a module, subsystem,...)
• Signals
• Signal Proxies (references to other signals)

Scope

A Scope is a generic element used by the reader to organize the elements in a useful way, usually inspired by the wave file (module, subsystem, processes,..). Scopes do not have any other meaning.

Scopes consist of:

• Name: Name of the new scope.
• Description: Scope description (just informational).

The possible child elements are:

• Scope
• Signals
• Signal Proxy

Signals

A signal can contain up to 2^31 samples.

A signal contains:

• Name: Name of the signal.
• Description: Signal description (just comments).
• Process Type: Signals may be discrete or continuous.
• Signal Type: One of the defined signal types (SignalType. ...).
• Signal Descriptor: The signal descriptor contains additional information about the signal.
• Domain Base: The domain base represents the the minimum distance between two samples (e.g. ns or ps).
• Samples: List of value changes (up to 2^31 samples).
• Relations and Labels (Attachments) : Each sample may have multiple attachments. Currently there are relations and labels.
• Markers :The marker concept is a known feature of eclipse. impulse allows users to add markers (bookmarks, tasks and annotation) to any signal at any domain position.

Process Type

Signals may be discrete or continuous. Discrete means that each sample can be at any position of the given domain base with the restriction:

position(sample(idx)) <= position(sample(idx+1)

Continuous signal have a start, end and rate indicator. Therefor the position of each sample is definite. Discrete signal just have start and end indicators. Each sample contains the delta position to its predecessor.

Signal Type

impulse supports the following signal types:

• Logic (1..N bits — the bits are stored as 2-state, 4-state or 16-state data (usually nine states are used).
• Float (32-bit or 64-bit), Float arrays
• Integer (any length), Integer arrays
• Event (Enumeration), Event arrays
• Text (any length), Text arrays
• Structure (unlimited members per structure: Text/Binary/Integer/Float/Enumeration)
• Transaction Event (a group of structures — a transaction can consist of multiple events)
• Binary (can contain images,… )

Struct signals can be used for logs, transaction, chart data, gant events, and ... . A struct sample is a combination of key value pairs (members), with values of type string , integer, float and enum.

Signal Descriptor

• Content Specifier: The 'meaning' of the data;
• Scale specifier: The scale of the signal (e.g. array size or bits of a signal);
• Format specifier: Textual representation of the data value (e.g hexadecimal).

The signal descriptor is usally given in the following form:

'content specifier'<'optional format and scale specifier'>

Optional format and scale specifier:

• df='format specifer'
• bits='bit length'
• dim='array dimension'

Examples:

• default<>
• default<df=None>
• default<bits=16,df=Binary> (for logic signal type)
• default<dim=2,df=Event>    ( for array types)
• state<df=None>
• event<df=Text>

Domain base

The domain class of a signal can be time, frequency, index, etc. The domain base represents the minimum distance between two samples (e.g. ns or ps). The domain position is the product of the domain base and a 64-bit signed integer value.

• Time, frequency, etc., define the multiple domain classes used in Impulse.
• The actual domain base has an additional unit, depending on the domain class, e.g. milliseconds, seconds, nanoseconds, etc. for the time domain class.
• impulse uses 64-bit signed integer values as domain values (the multiple of its domain base).

Domain Classes:

• TimeBase
• FrequencyBase
• VoltsBase
• AmpsBase
• FloatBase
• IndexBase
• DateBase
• UnknownBase

The first four domain classes (Time,Frequency,Volts, Amps) represent physical quantities. FloatBase is similar to the first one, but does not point to a physical unit. IndexBase assumes a simple index as domain base.

DateBase represents the date as milliseconds after January 1, 1970 00:00:00 GMT. Its three domain bases (dateTime, time, timeMs) just differ in different representations.

• dateTime: Date + current time (excluding milliseconds)
• time: Current time (excluding milliseconds)
• timeMs: Current time (including milliseconds)

TimeBase:

ys, ys10, ys100, zs, zs10, zs100, as, as10, as100, fs, fs10, fs100, ps, ps10, ps100, ns, ns10, ns100, us, us10, us100, ms, ms10, ms100, s, s10, s100, ks, ks10, ks100, Ms, Ms10, Ms100, Gs, Gs10, Gs100, Ts, Ts10, Ts100, Ps, Ps10, Ps100, Es, Es10, Es100, Zs, Zs10, Zs100, Ys;

FrequencyBase:

yHz, yHz10, yHz100, zHz, zHz10, zHz100, aHz, aHz10, aHz100, fHz, fHz10, fHz100, pHz, pHz10, pHz100, nHz, nHz10, nHz100, uHz, uHz10, uHz100, mHz, mHz10, mHz100, Hz, Hz10, Hz100, kHz, kHz10, kHz100, MHz, MHz10, MHz100, GHz, GHz10, GHz100, THz, THz10, THz100, PHz, PHz10, PHz100, EHz, EHz10, EHz100, ZHz, ZHz10, ZHz100, YHz;

VoltsBase:

yV, yV10, yV100, zV, zV10, zV100, aV, aV10, aV100, fV, fV10, fV100, pV, pV10, pV100, nV, nV10, nV100, uV, uV10, uV100, mV, mV10, mV100, V, V10, V100, kV, kV10, kV100, MV, MV10, MV100, GV, GV10, GV100, TV, TV10, TV100, PV, PV10, PV100, EV, EV10, EV100, ZV, ZV10, ZV100, YV;

AmpsBase:

yA, yA10, yA100, zA, zA10, zA100, aA, aA10, aA100, fA, fA10, fA100, pA, pA10, pA100, nA, nA10, nA100, uA, uA10, uA100, mA, mA10, mA100, A, A10, A100, kA, kA10, kA100, MA, MA10, MA100, GA, GA10, GA100, TA, TA10, TA100, PA, PA10, PA100, EA, EA10, EA100, ZA, ZA10, ZA100, YA;

FloatBase:

yX, yX10, yX100, zX, zX10, zX100, aX, aX10, aX100, fX, fX10, fX100, pX, pX10, pX100, nX, nX10, nX100, uX, uX10, uX100, mX, mX10, mX100, X, X10, X100, kX, kX10, kX100, MX, MX10, MX100, GX, GX10, GX100, TX, TX10, TX100, PX, PX10, PX100, EX, EX10, EX100, ZX, ZX10, ZX100, YX;

IndexBase:

n;

DateBase:

dateTime, time, timeMs;

Samples

Each sample can be a none value or non-none value of a given signal type. Additionally each sample may have a tag.

Samples may be grouped and layered, for example, transactions where at least two samples (start and end) cover a period. Grouping means that that all events of a group have the same group id and an order descriptor (first, intermediate {multiple, optional}, last). Layering means that each group (defined in the first event) has a layer id (0..255). This layer id may be used to draw parallel transactions in raws.

Associations and Labels

Markers are a concept for user annotations. Associations and Labels on the other side, are an integral part of the signal and are bound to its samples.

• Association: Adds a curve with textual information from a given sample to any other signal at a relative position.
• Label: Adds a text and symbol relative to given sample.

Markers

The marker concept is a known feature of eclipse. impulse allows users to add markers (bookmarks, tasks and annotation) to any signal at any domain position. If you add a bookmark to a signal, you will find that bookmark in the bookmark view of eclipse. If you double-click on the bookmark in that view, eclipse will open the record that contains the bookmark and set the cursor to its position.

Signal Proxies

Proxies are used to share equal signal data between different logical or physical signals. They are links that give an existing signal a new name or an existence somewhere else within the record hierarchy.

Members (Arrays and Struct signal type)

Struct signals are made of members. Each member has:

• Name: The members name;
• Member Type: Data type of the member (Text/Binary/Integer/Float/Enumeration);
• Content Specifier: The meaning of the data;
• Format Specifier: Textual representation of the data value.

Arrays may have members too. In this case, the members dont have a type information are optional and informative.

Signal Content Specifier

Content definitions can be found as part of signal and member descriptors. The content describes what the actual data contains (e.g if binary data contains an image or if an enumeration contains and event or state).

This information may be used:

• Informative;
• For presentation purpose: e.g. a  Gantt plot from a struct signal uses the member with "state" content descriptor as input;
• For templates: Templates can be used to create plots from sigals bases on the content desciptor.

The following standard descriptors are defined (ISample class).

` public static final String CONTENT_DEFAULT = "default"; public static final String CONTENT_GANTT = "gantt"; public static final String CONTENT_TRANSACTION = "transaction"; public static final String CONTENT_LOG = "log"; public static final String CONTENT_CHART = "chart"; public static final String CONTENT_IMAGE = "image"; public static final String CONTENT_STATE = "state"; public static final String CONTENT_EVENT = "event"; public static final String CONTENT_EVENTPARM = "evtparam"; public static final String CONTENT_LABEL = "label";   `

Format Specifier

The format specifier defines the textual representation of sample values in plots and value table.

Value format specifier:

• Default: Take default value;
• None: No textual representation;
• Binary: Binary value;
• Octal: Octal value;
• ASCII: ASCII replresentation;
• Decimal; Decimal value;
• Text; Text value;
• Event; Event value (text and integer);
• Boolean; Boolean value;
• UserDec0-7: Numerical representation defined in the format preferences;

Sample information specifier:

Instead of the sample value, you might want to display the following sample information:

• Index: Index of the sample;
• ΔDomain: Domain delta;
• ΔValue: Value delta;
• Group: Group information (Grouped Samples);
• Order: Order information (Grouped Samples);

Multiple value specifier (in case of arrays and struct values):

• Default: Take the default representation;
• Values only: Values only;
• Key/Values; Pairs of key and value;
• Member 0-3; Display member x only;

technical software and tooling