The circuit object organisation library
Bernard Gunther · 2002
The Circuit Object Organisation Library is a C++ class library for developing continuously executing circuit generator programs used in real-time, adaptive reconfigurable computing applications. A C++ program linked with COOL can execute autonomously, since COOL provides a high-speed place and route facility for realising fine grained FPGA circuits from object-oriented structural descriptions. With COOL the need for separate hardware description and software programming languages disappears. The class inheritance concept is used to define specialised circuits, composed of gate, port, and wire objects. An applications programming interface borrowing from graphical user interface toolkits, automatic storage reclamation, and use of operator overloading make circuit description intuitive and relatively accessible to developers without a strong hardware background. COOL features constructive placement algorithms, and a two-stage router that minimises average run time, yet handles difficult routes via a last-resort Lee maze router. Preliminary tests reveal that COOL can realise circuits at rates of tens of thousands of gates per second on a low-end PC.