Skip to main content
Skip table of contents

Subcanvas - BundlePackets

Bundle Packets

Overview

In support of this Subcanvas feature, a new tuning command was added to AWECore which facilitates fast loading of Subcanvases. The command PFID_BundlePackets has the structure:

CODE
txPacket[0] = (Size << 16) | PFID_BundlePackets;
txPacket[1] = objectID
txPacket[2] = numPackets
txPacket[3] = PAYLOAD[0]
txPacket[4] = PAYLOAD[1]
…
txPacket[2+N] = PAYLOAD[N-1]
txPacket[3+N] = CRC

The PAYLOAD contains an array of AWB commands. It has multiple commands and as many commands as will fit are included. objectID specifies which Subcanvas module to load the AWB payload to. numPackets specifies how many individual command packets are in the PAYLOAD.

When this message is received, AWECore:

  • Searches the list of modules and finds the matching objectID

  • Verifies that it is a Subcanvas

  • Calls awe_loadAWBfromArray() to execute all of the internal commands

If the objectID = 0xFFFFFFFF, then the packets are loaded by the top-level system

Details

The process of creating the Bundle Packets is illustrated in the figure below. It starts with an unencrypted AWB file on the left hand side. The individual commands in the AWB are extracted and then combined to form bundle packets. The size of each Bundle Packet has to be less than the (Tuning Buffer Size – 4) words. Only whole packets are combined – we never split packets between bundles. The size of the final Bundle Packets will vary based on the sizes of the internal packets.

The next step is to encrypt the Bundle Packets. This is optional but makes the contents opaque. Finally, the encrypted PAYLOAD is combined with the 4 additional words in bold.

txPacket[0] = (Size << 16) | PFID_BundlePackets;

txPacket[1] = objectID

txPacket[2] = numPackets

txPacket[3] = PAYLOAD[0]

txPacket[4] = PAYLOAD[1]

txPacket[3+N] = CRC

txPacket[2+N] = PAYLOAD[N-1]

The final result is an AWB file which is slightly larger than the original but has fewer total commands. The header information in the AWB is unencrypted (shown in green) and can flow through an Audio Weaver system using standard packet handling.

Bundle Packet Loading Speed

Loading the AWB with Bundle Packets has speed advantages compared to the traditional method of loading packet by packet. This applies to SOCs where there is some overhead for each tuning packet sent through the system. The Audio Weaver tuning format has many small messages and combining them into clusters speeds up the loading process.

Here is an example of the reduction in messages that can be achieved using bundle packets. We analyzed a large design with 4100 non-virtual modules. The AWB was 326 kybtes in size and had a total of 10,183 total message packets. When bundling with different tuning buffer sizes, we reduced the total message count as follows:

264 word: 360 bundles

512 word: 177 bundles

1024 word: 84 bundles

2048 word: 42 bundles

4096 word: 21 bundles

This will result in a huge speedup in the loading time of the design.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.