Using EDA Databases: Milkyway & OpenAccess



Similar documents
The GoldenGate Working Group

Rapid Software Development with OpenAccess. Dean Marvin Exec Director, Product Development

Interoperability Developer s Forum. Milkyway Developer s Track April 1, 2003

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Python, C++ and SWIG

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Java CPD (I) Frans Coenen Department of Computer Science

02 B The Java Virtual Machine

First Java Programs. V. Paúl Pauca. CSC 111D Fall, Department of Computer Science Wake Forest University. Introduction to Computer Science

Lesson 06: Basics of Software Development (W02D2

CS 106 Introduction to Computer Science I

Introduction Our choice Example Problem Final slide :-) Python + FEM. Introduction to SFE. Robert Cimrman

Chapter 1 Java Program Design and Development

Visualisation in the Google Cloud

Written by the Red Hat Eclipse Engineering Team Revision 3. October 2003

The Decaffeinated Robot

AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping

Generating Automated Test Scripts for AltioLive using QF Test

Design Compiler Graphical Create a Better Starting Point for Faster Physical Implementation

How To Design A Chip Layout

IRF2000 IWL3000 SRC1000 Application Note - Develop your own Apps with OSGi - getting started

CS506 Web Design and Development Solved Online Quiz No. 01

Example of Standard API

System Structures. Services Interface Structure

Engineering Change Order (ECO) Support in Programmable Logic Design

Embedded Software development Process and Tools: Lesson-3 Host and Target Machines

Andreas Burghart 6 October 2014 v1.0

Chapter 13: Program Development and Programming Languages

Chapter 3.2 C++, Java, and Scripting Languages. The major programming languages used in game development.

CSC230 Getting Starting in C. Tyler Bletsch

CS 253: Intro to Systems Programming

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

CHAPTER 1 ENGINEERING PROBLEM SOLVING. Copyright 2013 Pearson Education, Inc.

Introduction (Apps and the Android platform)

A Sample OFBiz application implementing remote access via RMI and SOAP Table of contents

Chapter 12 Programming Concepts and Languages

Freescale Semiconductor, I

In Memory Accelerator for MongoDB

Raima Database Manager Version 14.0 In-memory Database Engine

Test Driven Development of Embedded Systems Using Existing Software Test Infrastructure

Web Applications Testing

COS 333: Advanced Programming Techniques

An Incomplete C++ Primer. University of Wyoming MA 5310

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

To Java SE 8, and Beyond (Plan B)

Software: Systems and. Application Software. Software and Hardware. Types of Software. Software can represent 75% or more of the total cost of an IS.

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

Linux. Reverse Debugging. Target Communication Framework. Nexus. Intel Trace Hub GDB. PIL Simulation CONTENTS

How to Design and Create Your Own Custom Ext Rep

BarTender Integration Methods. Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER

Lecture 1 Introduction to Android

1. Overview of Nios II Embedded Development

Introduction to Native Android Development with NDK

Pro/INTRALINK Curriculum Guide

Apache Thrift and Ruby

How To Develop Android On Your Computer Or Tablet Or Phone

Comparative Analysis of Open Source Automated Software Testing Tools: Selenium, Sikuli and Watir

Memory Systems. Static Random Access Memory (SRAM) Cell

Using IRDB in a Dot Net Project

Choosing the First Educational Programming Language

A Generic Network Interface Architecture for a Networked Processor Array (NePA)

Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder

Fundamentals of Programming and Software Development Lesson Objectives

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

aaps algacom Account Provisioning System

Python for Series 60 Platform

What is ODBC? Database Connectivity ODBC, JDBC and SQLJ. ODBC Architecture. More on ODBC. JDBC vs ODBC. What is JDBC?

Introduction to the. Barracuda Embedded Web-Server

Jonathan Worthington Scarborough Linux User Group

Overview 1. Document Objectives 1. Document Organization 1. Preparation before VIP-280/VIP-320 administration 1

CSCI E 98: Managed Environments for the Execution of Programs

Easing embedded Linux software development for SBCs

CS Software Engineering for Scientific Computing. Lecture 25:Mixed Language Programming.

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

1 File Processing Systems

ARM Cortex-A9 MPCore Multicore Processor Hierarchical Implementation with IC Compiler

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

Instructor: Betty O Neil

What Perl Programmers Should Know About Java

Problem Solving. Software Engineering. Behavior. OCD in a Nutshell. Behavior. Objects Operations Algorithm. Object-Centered Design

STM32JAVA. Embedded Java Solutions for STM32

Gizmo, a lightweight open source web proxy Rachel Engel : June, 2009

University of Texas at Dallas. Department of Electrical Engineering. EEDG Application Specific Integrated Circuit Design

Agent Languages. Overview. Requirements. Java. Tcl/Tk. Telescript. Evaluation. Artificial Intelligence Intelligent Agents

Designing a Schematic and Layout in PCB Artist

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

CSC 551: Web Programming. Spring 2004

The Clean programming language. Group 25, Jingui Li, Daren Tuzi

TATJA: A Test Automation Tool for Java Applets

Modern Web Application Framework Python, SQL Alchemy, Jinja2 & Flask

Pre-tested System-on-Chip Design. Accelerates PLD Development

ECE 122. Engineering Problem Solving with Java

Quartus II Software Design Series : Foundation. Digitale Signalverarbeitung mit FPGA. Digitale Signalverarbeitung mit FPGA (DSF) Quartus II 1

Java Application Developer Certificate Program Competencies

Conference Paper. Distributed Performance Systems using HTML5 and Rails. Dr. Jesse Allison 1.

PIE. Internal Structure

High-Level Synthesis for FPGA Designs

Designing with Exceptions. CSE219, Computer Science III Stony Brook University

Transcription:

Using EDA Databases: Milkyway & OpenAccess Enabling and Using Scripting Languages with Milkyway and OpenAccess Don Amundson Khosro Khakzadi 2006 LSI Logic Corporation 1

Outline History Choice Of Scripting Language When To Use Scripting Language When Not To Use Scripting Language Python For OpenAccess & Milkyway Summary Something Completely Different Backup Slides 2

History Internal CAD Commercial CAD 2006 LSI Logic Corporation 3

History Flexstream LSI Internal CAD LSI Proprietary CAD system Data base API written in C Data base functions return error code that must be checked after each function call Global variables, Memory management LSI Internal Common API Written in C++ Use C++ exception rather that check return code Abstraction layer to hide the data base Main objective was to substantially reduce porting cost of internal tools when data base changes Python wrappers written for the common API To provide rapid prototyping capability Ease of use for Engineers LSI Proprietary CAD system flavor of this API developed Python wrappers are basically free Implementation is a number of #include s 4

History Third party CAD Synopsys (Avant!) Same characteristics as LSI Proprietary CAD system Data base API (Milkyway) written in C Data base functions return error code Applications must manage memory allocated by API At the time certain operations not available in C (scheme only) Milkyway Flavor of LSI Common API Same motivation as LSI Internal Common API - Written in C++ - Object oriented - Use C++ exception rather that check return code - Abstraction layer to hide the data base - Substantially reduce porting cost of internal tools Python wrappers are basically free - Implementation is a number of #include s Other Flavors Of LSI Common API Minor porting cost This allowed existing programs written for LSI Proprietary CAD system to port by simply including new header files and recompiling. Minor changes to the program startup and run time environment specific code. 5

History Third party CAD API Based Applications API Layer (App side) API Layer (DB side) GUI Forms API API OpenAccess V1 3 rd Party Database LSI Database Utilities Tcl/Tk 6

History Third party CAD API Based Applications OpenAccess 2.0 GUI Forms Decided to Natively Adopt OA 2.x As Common API Utilities Tcl/Tk 7

Choice of Scripting Language PYTHON TCL JAVA 2006 LSI Logic Corporation 8

PYTHON 9

Choice of Scripting Language PYTHON Python Reasons LSI chose Python More proficient in python than Tcl. Python is an object oriented language, this results in a easy and clean mapping to class based languages such as C++ Easy to learn thus ideal to use by engineers who may not be interested in hard core programming Python provides you with a good environment for quickly developing an initial prototype http://www.amk.ca/python/howto/advocacy http://www.python.org/workshops/2000-01/proceedings/papers/elkner/pyyhs.html 10

Choice of Scripting Language TCL TCL Reasons LSI chose Python Like Python, Tcl is usable as an application extension language, as well as a stand-alone programming language. However, Tcl, which traditionally stores all data as strings, is weak on data structures http://python.fyxm.net/doc/essays/comparisons.html Better suited for pure script programming and good choice for command interpreters. Tcl scripts can be useful and efficient if they grow to no larger than a few pages, and if they manage a relatively small amount of data. http://www.networkcomputing.com/unixworld/tutorial/005/005.html#others 11

Choice of Scripting Language JAVA Java Reasons LSI chose Python Java was in its infancy. (Circa 1996) Java will be the choice for LSI in the future. Java's design is friendlier to glue languages than C. Both Java's type safety and the existence of a reflection API make it reasonably easy to automatically generate wrappers that allow Python programmers to access Java packages. http://www.python.org/workshops/1997-10/proceedings/hugunin.html With availability of open source development tools such as Eclipse we believe JAVA will become the scripting language of choice at LSI. Eclipse http://www.eclipse.org/ - Eclipse is an open source community whose projects are focused on providing an extensible development platform and application frameworks for building software. 12

When To Use Scripting Language Data Base Conversion Data Base Browser Prototype Software Small Tasks 2006 LSI Logic Corporation 13

When To Use Scripting Language Milkyway To OpenAccess MW to OA Python App 5:50 min OA to MW Python App 16 sec In Memory Interpretive Translators Python Interface Milkyway Python Interface OpenAccess File Based Compiled Translators DEF Interface DEF Interface DEF DEF Interface DEF Interface File 5:15 min 75k gates + 3 rams DEF DEF File File 3:02 min + HAND edits 14

Milkyway CHIP CELL OpenAccess 15

When to use scripting language Browse Milkyway 16

17

When to use scripting language Browse OpenAccess 18

When Not To Use Scripting Language Complex Data Structures Complex Algorithm Maintenance 2006 LSI Logic Corporation 19

When not to use scripting language Cycle intensive programs such as DRC, Placement or Routing. These may be prototyped in a language like python but will not be useful in production Example Flexstream to Milkyway Not the same problem as Milkyway to OA Different connectivity model requires converting edge connected shapes to center line connected shapes DRC algorithm FlexStream 1.0 Avant! 20

When not to use scripting language Flexstream to Milkyway Insert WIRE 21

Python For OpenAccess & Milkyway 2006 LSI Logic Corporation 22

Python For Milkyway Milkyway Flavor of LSI Internal Common AP Difficult to write Python wrappers for Milkyway API Common API makes writing python wrappers relatively easy string AvantNet :: Name() const { if (!ObjectId() ) return string(); // Return empty String char * name = NULL; // Milkyway MWXDb_Get_name() will allocate memory // for the net name, so this method is responsible for the memory int32 rc = MWXDb_Get_Net_name ( CellId(), ObjectId(), &name ); if (!AvantApiMWXError(rc,"Find Net Name") ) // throw exception or issue error message return string(); // if in message mode string result = name; free(name); // Further, certain names (i.e. layer names) may not be freed. return result ; } Python wrappers ( for the Common API ) Usable for any data base static PyObject* PySdbNet_get_name(PySdbNetObject *ob,pyobject* args) { if (!PySdbLibraryObjectValidate(ob->v.Container().Library())) return NULL; return PyString_FromCString(ob->v.Name()); } 23

Python For Milkyway Python Wrapper (Milkyway Flavor of API) #define PDPY_AVANTI_API #include "so_sdb_avant.h #include "pdpy_net_c.h (#define SdbNet AvantNet) 24

Python for OpenAccess Code is auto-generated directly from header files We considered SWIG and BOOST PYTHON Reduce maintenance with code updates Each OA type maps to a real Python type Python API matches C++ API as much as possible API Header Files Code Generator Hint Information Extension Code 25

SUMMARY 2006 LSI Logic Corporation 26

SUMMARY PYTHON & TCL Are used extensively at LSI Both provide an interpreted high-level programming environment. Widely available and well supported. Free Python has been historically used as the primary scripting language for programs performing complex operations on large data bases Familiarity. Easy to manage large programs. Rapid prototyping Component gluing Flexibility, Interactivity, Debugging, Testing, etc. TCL has been historically used as embedded command processor for applications. Works well when program is small, the amount of data being managed is small & the data structures map well to strings. Not particularly easy to code programs that need to perform complex operations on large data bases, using complex data structures. 27

SUMMARY JAVA LSI Common API was developed when JAVA was in its infancy JAVA is very well supported and its feature set is growing at a much faster rate than Tcl or Python. Productivity gains achieved through Eclipse are such that we may not have a choice but to move to JAVA. LSI is considering developing JAVA wrappers for OpenAccess 2.2.x. 28

THANK YOU 2006 LSI Logic Corporation 29

And Now For Something Completely Different Can you guess the following language? Hint :! English class HELLO_WORLD create make feature make is do io.put_string ("Hello, world!%n") end end 30