SRC® Code Development & Debugging Tools and

Optimization

 

CODE DEVELOPMENT TOOLS

The Carte Programming Environment supports co-development of programs written to run on microprocessors and FPGA-based MAP® processors. The MAP compiler compiles codes into configuration bit-streams that configure the MAP processor. The Intel compiler compiles codes for the microprocessor.

 

Code intended to be compiled for the MAP processor is written as separate subprograms and collected into a single logic block by the Carte Programming Environment through the code in-lining process. The subprograms are called from routines executing on the microprocessor, as well as from other MAP routines. This technique permits hierarchical code development and code reuse. It also permits expressing greater parallelism within code blocks and permits optimizations across subprogram boundaries. The Carte Programming Environment then provides support for integrating the microprocessor routines, MAP routines, and libraries into a single Unified Executable that contains the microprocessor instructions, MAP logic, and all required library routines to manage the control of the program.

 

DEBUGGING TOOLS

The Carte Programming Environment fully supports co-development of software and hardware functional units through the use of debugger and hardware simulation tools. With the Carte Programming Environment managing both the microprocessor code as well as the simulation code, applications execute seamlessly in hardware or simulation environments.

 

The SRC Carte Programming Environment creates program executables that support source-level debugging through the Intel® debugger, or any microprocessor-oriented code development tools.

 

In debugger mode, a program is executed entirely in the microprocessor. The routines coded for the MAP processor are source line unchanged but retargeted for the microprocessor. This mode of development permits highly productive algorithm development and debugging. A MAP routine that is developed using debugger mode will execute correctly when retargeted to the MAP processor.

 

Because the Carte Programming Environment creates executables that can be used in conjunction with Verilog/VHDL simulators such as VCS™ from Synopsys®, programmers who are developing algorithms that use application specific functional units (ASFs) written in Verilog or VHDL have additional debugging services available to them.

 

OPTIMIZING

Parallelism

The MAP compiler creates optimized logic for the MAP with performance being achieved through creation of pipelined logic blocks and concurrent execution of parallel logic blocks.

 

Code segments can be tagged as parallel or critical regions using SRC pragmas and directives. The MAP compiler performs data dependency analysis to provide optimized pipelines from code loops and is capable of optimizing the use of On-Board Memory to prevent loop slowdowns. All pipelined loops generate logic targeted to produce results at each clock cycle. However, the compiler is capable of adapting to data dependencies and adjusting the pipeline as is appropriate.

 

Managing the Memory Hierarchy

Function calls to Carte data prefetch routines permit the programmer to explicitly manage data movement into and out of the MAP processor. Data prefetch units permit fetching and storing data using complex striding, scatter/gather, and compressed data prefetch that can be synchronously or asynchronously controlled within a MAP routine.

 

A low-latency data streaming functional unit allows data to feed computation without storing into intermediate memory. Within a MAP routine, the programmer can explicitly allocate arrays to On-Board Memory Banks and on-chip dual ported Block RAM. Data movement is optimized by the MAP compiler to avoid load/store operations within the pipelined code blocks using data registers and wires created by the compiler.

 

Application Specific Functional (ASF) Units

The Carte Programming Environment provides functional units for the standard operators supported within the C and Fortran languages. These include arithmetic and logical operators, and math functions. Additionally, a user can add ASF units, invoking them as function calls within the MAP routine.

 

An ASF is written using a hardware definition language such as Verilog or VHDL and permits creation of optimized hardware that yields maximum performance. For example, non-standard floating point precision arithmetic functional units could be defined and used within the MAP routine as function calls.

 

back to top