 has the following components: A microcode development environment, which under a unified GUI allows the editing and debug- ging of code, including setting breakpoints, single-stepping program execution, and obtaining access to internal resources. Features of this environment include a code editor, a view of memory and register contents, performance charting, macro recording, and script execution. The microcode development environment can be used to develop and debug code that runs on both the NP-1 sim- ulator and the actual NP-1 chip. A simulator that is able to provide cycle-accurate simulation of the NP-1 for code functionality test- ing and performance optimization. An assembler and preprocessor that generates optimized code for execution on the NP-1 network processor. The NPU assembly is interleaved with high-level macros. A C compiler is now available as well, although to create the most optimized code, the assembler is usually preferable. A subroutine library that contains the source code of many common networking tasks that the com- pany provides with the intention of helping customers simplify and accelerate their code development. An applications library that contains reference code, which customers can consult or use to imple- ment high-level applications when designing new networking platforms and services. EZchip offers reference code for applications such as layer 2 switching, MPLS, IP routing, Network Address Translation (NAT), and URL-based load balancing. A frame generator, which is essentially a GUI-based tool that guides the software engineer through the process of creating frames, layer by layer. It allows for the easy generation of frames of differ- ent types, protocols, and user-defined fields. A structure generator, which is another GUI-based tool that enables the definition of data structures used by EZchip's NP-1 network processor for forwarding and policy table lookups (such as hash and trees), their keys, and all associated result information. Among the company's development tools, we s