Rapid Software Development with OpenAccess Dean Marvin Exec Director, Product Development
Presentation Overview Conditions for rapid OA development Discussion of development styles C++ object oriented Rapid prototype Hybrid scripting Enterprise OA environment Visualization Database extension Blended scripting
Conditions for rapid OA development Fast database with C/C++ access Script access to database Graphical viewing of database Debugging environment and Mixed-language code development
Conditions for rapid OA development Fast database with C/C++ Proven performance in C/C++ High capacity Efficient in-memory and on-disk representations Script access to database TCL shipped with OA Python available from LSI contribution Ability to wrap using almost any language
Conditions for rapid OA development Visualization In the end, it s all about the user Need to see what s there Browse available information graphically Debugging environment Three debugging styles Debug print statements Gdb Code review All three styles are supported
Conditions for rapid OA development Mixed-code development Different languages address difference stages/styles Object oriented (top down) Rapid prototype (bottom up) Hybrid development Need Support of libraries from multiple languages Develop at multiple levels to get done quickly This is the most important ingredient! Doing everything in one language just isn t quick enough
Style: C++ Object Oriented Design Traditional EDA development Speed is crucial Know what you want to do Solid algorithm Well developed specification Examples Synthesis Equivalence checking Place & Route Layout verification Timing analysis
C++ / OO Methodology on OA Start with a spec Design top-level objects Decompose functionality and create next level objects Repeat As you touch design objects, inherit from OA to implement functionality Use AppDefs to store auxiliary data persistently
Style: Rapid prototype Don t know exactly how you want to do something at the beginning Speed is not critical (at least initially) Some simple user interface is required Incremental design Examples Netlisting Flow management Simple parsers Report generation and data display Design exploration and basic checking
Rapid prototyping on OA Scripting language Tcl/Tk Python/PyQt Multiple ways to do it Develop interactively Cut and paste from previous functionality Successive refinement Object oriented design using Python After the application is working, replace timing critical sections with C/C++ Easiest using Python since Python OA object model closely maps to C++ OA object model
Style: Hybrid development Mix of the previous styles Develop what you know is hard in C++ as an engine Timing/parasitic reduction Physical data generation Physical data validation Create a script wrapper interface to the engine Hand-generated wrappers SWIG (www.swig.org) SIP (www.riverbankcomputing.co.uk) Application development with scripting language using engines Advantages Still rapid development Reusable and separately maintained engines Allows parallel development
Hybrid development on OA Cell-based timing aware checking Timing engine built on OA Topology analyzer engine on OA Design checks themselves written in Python/TCL Cell layout optimization Cell layout generator on OA Router based on OA Input metal pitch, power grid and router preferences Write algorithm in script to run experiments on optimization cell height and pin locations Illustrative purposes only, not a product announcement
Enterprise OA Blends the innovation of OA with the enterprise-class extensions Graphical browsing Functional extensions via plugins User interface framework via Qt OA extension engines Integrated scripting environment
Qt Menus and OpenGL Rendering Layout with Connectivity Satellite View Custom Overlays Generated Schematics Hierarchy Browser Property Editor Timing View with Cross Probing Tcl/Python/.. Command line: Applications via C++ and Scripting plug-ins
Qt Menus & OpenGL Rendering Desktop, Menus, Windows, Browsers, Control Schematic Generation RTL & Gates Schematic Display Layout Display Cross Probing Enter Func. Bindkeys Selection Window, File, & Color Managers API API API API API Rocket Design Environment Verilog/VHDL RTL Enterprise OA Development System TCL Python C++ SDC Model API Plug-in Socket Functions & Timing Customer Applications in C++ or TCL, Python Scripting API API API API OpenAccess Graphics sub-system Verilog/VHDL RTL & Netlist SDC Constraints Liberty OpenAccess LEF/DEF GDSII SPEF
Conclusion Rapid development on OA is possible and supported in an enterprise OA environment Extending OA to be more than a repository of design data is a reality The requirement for diverse and blended code development under OA is being met