Browse Prior Art Database

Method to Improve Debugging Microcode Running on a Microengine Inside a Network Processor

IP.com Disclosure Number: IPCOM000008839D
Publication Date: 2002-Jul-17
Document File: 3 page(s) / 31K

Publishing Venue

The IP.com Prior Art Database

Abstract

Disclosed is a method for debugging network processor software at the microengine level. Benefits include easy implementation and improved debugging speed.

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 71% of the total text.

Method to Improve Debugging Microcode Running on a Microengine Inside a Network Processor

Disclosed is a method for debugging network processor software at the microengine level. Benefits include easy implementation and improved debugging speed.

Background

Network processors are used in a variety of networking applications, and contain microengines that process packets in the data plane. The microengines process packets that arrive from a network interface in two ways:

 

  • processing the packets and forwarding them to the output network interface
  • sending the packets to the control plane for further processing

Figure 1 shows a typical packet flow. The debugging process on microengines is tedious. In addition, identifying the value of a variable or where  code is running during development/near production is very difficult.

General Description

To produce a message, microcode is used to place a short string into a known section of memory. The disclosed method reserves 12 words of memory per microengine. The disclosed method’s format is as follows:

Thread number

10 character string

Number of values (0 means none)

Value

After filling these locations, it interrupts the core CPU with a “Debug Interrupt” message. At this point, a debug task in the core CPU services the request and outputs the following message (see Figure 2):

“ME <number>” “Thread <number>”  “String”   “Value”

Here the string can be in QOS, at Lookup, or elsewhere.

The disclosed method is useful in finding the flow of the c...