Create your own Netlist with "gnetlist" - HOWTO Peter Kaiser, die.kaisers@t-online.de November 2003 04th, 2003 This document is released under GNU FDL (http://www.gnu.org/) Copyright (c) 2003 Peter Kaiser. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-CoverTexts. Revision history: Version 1.0 Subject of change: added: erste Zeile jede weitere Zeile changed: deleted: by: Table of Contents 1. Introduction 2. 2.1. . . 1. Introduction When I started with gEDA, I did not know anything about the programing language "Scheme", but I wanted to write my own netlister for gschem. On my way, I started looking in the Internet, went to libraries, looked at the source code and finally started up with some test programs. The interested reader will find in this document useful sources for learning scheme and roadmap how to create a simple netlist. 2. Getting Information about Scheme and Guile Scheme was originally developed at the Massachusit Institute of Technology (MIT) by ??. The official web page is: http://... Books For beginners, ... Reference Books What is Guile? 3. Data Structure in the Memory To get a impression, what's going on when a netlist is created, use the verbose mode of gnetlist. If you don't have a schematic, copy "xxx" from the /usr/share/gEDA/examples directory. It's always good to learn with a easy and short example: gnetlist -v -o geda xxx.sch Sit back, relax and watch how the database is built up. 4. Make your First Steps in Interactive Mode Scheme remembers me at Basic. I had my first contact with computers, 25 years ago, with Basic. The user can enter commands, like arithmetic operation, on the command line and gets imediatly response from the computer. Exactly the same is possible with Scheme. To start gnetlist in interactive mode enter: gnetlist -i Scheme is coming up with a prompt. Now try: (display ("Hello gnetlist user")) or: (define x 4) (display x) (define y=x+2)??? (display y) Now it's time to look at the internal data structure. Please try: (display packages) "packages" is a variable of the type "text list"??. It is defined in: /usr/share/gEDA/scheme/gnetlist.scm look at this file and you will find further variables and functions. Other predefined variables are: (display all-nets) (display all-unique-nets) Another interesting example is: (display (get-device "R1")) Look at the brackets. "get-device" is a function, not a variable. Other interesting predefined functions in gnetlist.scm are: <...> If you need a property, and don't find a function in gnetlist.scm, you can copy a similar function to a separate file in your current working directory. Modify the file to your needs and type: (source )??? 4. Create your own netlist The best way to create your own netlister is to write it in a file and use the source?? command in interactive mode. Debug?? Finally, when the job is done, copy your netlister to: /usr/share/gEDA/scheme The name must look like: gnet_.scm Good luck and have fun.