Run time reusability in object-oriented schematic capture
Object-orientation provides for reusability through encapsulation, inheritence and aggregation. Reusable elements such as classes and components can support extensible systems that enable the addition of new types of object. One context where extensibility can be applied is electronic circuit design, where systems can usefully enable the design and simulation of new electronic components. A useful tool in this domain is the graphical schematic capture interface that allows a circuit designer to place and connect together the symbolic representations of electronic components. The resulting circuit schematic may then be 'captured' and converted to code form for simulation or synthesis. An extensible schematic capture system for VHDL-AMS mixed mode (analogue and digital) code generation has been built using an object-oriented design based on a reflective architecture. It shields the circuit designer from complexity in the underlying hardware description language while enabling new component types to be created with the maximum reuse of existing objects. Polymorphism, a defining feature of object-oriented systems, is used to provide this flexibility and power, not only in design pattersn and code mechanisms but also as a conceptual approach. The system has been specifically designd to allow for extensibility at run time, so that new types of component can be modelled, integrated into circuit schematics and included in the code generation phase as one seamless process. The definition of new components is largely automated via a visual programming interface with only some behavioural definitions required using VHDL-AMS code. This functionality is supported by a reflective architecture that removes the need for code rebuilding, thus overcoming problems such as tool dependency, code bloat and time required for recompilation. Component objects represented this way are semantically polymorphic in their external behaviours, both visually and in their code representation, without relying on a traditional single classification hierarchy. This use of polymorphism as a conceptual approach rather than simply as an aspect of implementation provides a schematic capture interface of great flexibility and transparency.