Abstract :
Few people disagree with the fact that today about 80% of a system is software running on a “platform” of general purpose or custom processors (CPU and/or DSP) tightly coupled with unique dedicated hardware. This makes C (or C++) an obvious candidate for a system level design language. Without good hardware/software partitioning tools and support for C-based hardware design, the software content may have to increase by necessity. With the right hardware support a system team has the flexibility to make cost, performance, power trade-offs and decide later in the game how much of the system is software and how much is hardware. Another issue is legacy software and hardware. Legacy C software is well understood but legacy hardware is usually only available as RTL (Verilog or VHDL) at best. Therefore the ideal system level design language is C (or C++) based, accommodates hardware design but also co-exists with the vast legacy of Verilog and VHDL based re-usable hardware. CoWare N2C is practical solution, used in real life design around the world, that a) preserves the C software development paradigm for software people, b) adds the necessary clocking to C to enable hardware designers to move C functionality into a hardware architecture, and c) co-exists C for co-design and co-simulation) with existing hardware in Verilog or VHDL
Keywords :
C language; C++ language; hardware description languages; hardware-software codesign; software development management; C software development paradigm; C++; C-based hardware design; CoWare N2C; RTL; VHDL; Verilog; cost; flexibility; legacy software; legacy software and hardware; performance; power trade-off; real life design; system level design; Clocks; Costs; Digital signal processing; Hardware design languages; Programming; Software design; Software performance; Software systems; Software tools; System-level design;