TPU Simulator Release Notes for all builds of V3.20

ASH WARE – Embedded Software Tools since 1994

TPU Simulator Release Notes for all builds of V3.20

V3.20A New Features and Fixed Bugs

New features:

Overview: This release adds the following capabilities.

  • TPU Simulation engine optimized; ~2.6X faster in IDLE and 2X faster in BUSY conditions.
  • Vastly improved logic analyzer window
  • Vastly improved trace window
  • Added "context" capability allowing interacting between logic analyzer window and trace window.

Status: Implemented.


Bug1: TPU simulation engine scheduler bug

Overview: The scheduler fails to properly perform a NEG_SGL if ALL of the following conditions are met. In the following case the scheduler will freeze until some other channel generates a new service request AND the service request of the new channel is ignored.

  • The chan_reg is changed to a new channel.
  • The new channel's SGL bit is cleared.
  • The new channel has a pending match.
  • The pending match is cleared with a neg_mrl on the very last instruction.
  • A new match is generated with a write_mer one the very last instruction.
  • No other channel of the new channels priority is pending.

Status: This has been fixed.


Bug 2: Goto Time Slot Transition Fails When Logic Analyzer Windows is Open

Overview: The "Goto Time Slot Transition" command causes a TPU Simulation Engine to execute until the next Time Slot Transition. This is accessed either from the Goto menu or using the hotkey. When a logic analyzer window is active this command causes a "zoom out" function in the logic analyzer window rather than a Time Slot Transition..

Status: This has been fixed.


Bug 3: Channel window title incorrect when set to channels 12 through 15.

Overview: The default channel window automatically tracks the active channel such that the information that is displayed represents the currently active channel. It is possible to "lock" a channel window unto a particular channel by right clicking the mouse and selecting a channel number. Such a locked windows displays the channel number 9 at the top of the window. For channels 12 through 15, the title incorrectly displayed channels 13 through 16..

Status: This has been fixed.


Bug 4: Default directory is incorrect in write_coverage_file(); script command.

Overview: The write_coverage_file(); script command allows the user to generate a file that contains the coverage statistics. This directory where this file gets saved should default to the same directory as the project file. Instead, the default directory is the current working directory, which is generally c:\ASH WARE\. .

Status: This has been fixed.

Bug 5: The CPU32 simulator's MULU and MULS opcodes are broken when the long format (4-byte) is used in conjunction with a single register result.


 Overview: The CPU32 supports a special "long format" in which the opcode is 4-bytes instead of 2 bytes for both MUL and DIV instructions. This format is used to generate dual register results, such as a 64-bit multiply result stored into D1:D0. It turns out that this special long format can also be used to generate a 32-bit result, even the the normal short format (2-byte) opcode would be sufficient. In the case of a single register result from the long format the wrong destination register gets written.

Status: This has been fixed.

 


Bug 6: Channel Servicing can be missed.

Overview: If there is a pre-existing match that is deteceted due to a neg_mrl on the last instruction in a state, AND in a state in which the channel register has changed such that the chan_reg channel would be scheduled, the the schedular missed that channel's servicing..

Status: This has been fixed.


Bug 7: Comment not allowed in #define line in a script file

Overview: C++ style "//" comments not allowed in #define preprocessor directive.

Status: This has been fixed.


Bug 8: Full 96-bit timing precision not rendered correctly

Overview: The system stores and manipulates time to 96 bits of precision. The basic timing unit is one femto second. When this same time is rendered into a trace buffer or logic analyzer, only about 60 bits were maintained, causing apparant (though not "true") rounding errors. For instance, the lowest significant digits of the following "true" time "666,777,888,999.976,124 uS", appear as follows, "666,777,888,999.976,074 uS", giving an "apparant" 50 ps of rounding error.

Status: This has been fixed.

V3.20B New Features and Fixed Bugs

Bug1: Fatal Internal Diagnostic Error

Overview: MtDt reports the following.

""Internal diagnostics has detected the following bug: Maximum Symbol Size exceeded, LocalVariables::output_symbol_data() This is fatal, sorry. Please report this bug to the factory. Hit 'Cancel' to bypass messages for a second.."

This error would occur when debugging host/cpu code with the local variable window, or the watch window, and a C struct variable greater than 256 bytes was encountered.

Status: This has been fixed. Structures up to 128Kb in size are now supported.

V3.20C New Features and Fixed Bugs

Bug1: Leading underscores not accepted as preprocessor #defines in the script commands file.

Overview: MtDt is unable to parse script files that have a leading underscore on the replacement #define text.

For example, this works.

#define ENTRY_FUNCTION_ 5

But this does not work

#define _ENTRY_FUNCTION_ 5

Status: TBD.


Bug2: TCR2 divide by 56 prescaler divide is not supported in TPU3..

Overview: TBD.

Discussion TBD.

Status: TBD.