[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
gEDA-cvs: CVS update: .cvsignore
User: ahvezda
Date: 06/08/21 22:56:15
Added: . .cvsignore 001geda_documentation.html
001geda_faq-attribs.html 001geda_faq-gnetlist.html
001geda_faq-gsch2pcb.html 001geda_faq-gschem.html
001geda_faq-simulation.html 001geda_faq.html
001geda_glossary.html 001geda_gschem_mp.html
001geda_gschem_ug.html 001geda_hse_howto.html
001geda_installation.html 001geda_kig_howto.html
001geda_pcb-quick_reference.html
001geda_pcb_tips.html 001geda_scg.html
001geda_tasks.html 001geda_todos.html
001geda_usage.html Makefile.am
docs_20060124_gschem_ug_app_a.html
docs_20060124_gschem_ug_app_b.html
docs_20060124_gschem_ug_app_c.html
docs_20060124_gschem_ug_components_symbols_objects_attributes.html
docs_20060124_gschem_ug_electrical_connectivity.html
docs_20060124_gschem_ug_how_to_ask_questions.html
docs_20060124_gschem_ug_installing_gschem.html
docs_20060124_gschem_ug_resources.html
docs_20060124_gschem_ug_the_main_window.html
docs_20060124_gschem_ug_the_status_window.html
geda_bom_readme.html geda_covered_mp.html
geda_covered_rv.html geda_csygas.html
geda_cygwin.html geda_documentation.html
geda_eagle_pcb_netlister_readme.html
geda_example_hsm.html geda_example_usbjtag.html
geda_faq-attribs.html geda_faq-gnetlist.html
geda_faq-gsch2pcb.html geda_faq-gschem.html
geda_faq-simulation.html geda_faq.html
geda_fbabgapp.html geda_fc1.html geda_fc2.html
geda_fc3.html geda_fc4.html
geda_file_format_spec.html
geda_footprint_creation.html
geda_gattrib_readme.html geda_gerbv_mp.html
geda_gerbv_pnp_readme.html geda_gfdl.html
geda_glossary.html geda_gnetlist_mp.html
geda_gnetlist_ug.html geda_grcsan.html
geda_grenum_mp.html geda_gsch2pcb_readme.html
geda_gschem2pcb_readme.html geda_gschem_mp.html
geda_gschem_ug.html geda_gsymcheck_mp.html
geda_gtkwave_lxt2miner_mp.html
geda_gtkwave_lxt2vcd_mp.html geda_gtkwave_mp.html
geda_gtkwave_mvl2lxt_mp.html
geda_gtkwave_mvl2vcd_mp.html
geda_gtkwave_tex2vcd_mp.html
geda_gtkwave_tla2vcd_mp.html
geda_gtkwave_vcd2lxt2_mp.html
geda_gtkwave_vcd2lxt_mp.html
geda_gtkwave_vcd2vzt_mp.html
geda_gtkwave_vzt2vcd_mp.html
geda_gtkwave_vztminer_mp.html geda_hse_howto.html
geda_icarus_anc.html geda_icarus_extensions.html
geda_icarus_glossary.html geda_icarus_ieee1364.html
geda_icarus_mp.html geda_icarus_opcodes.html
geda_icarus_quick_start.html
geda_icarus_readme.html geda_icarus_vpi_mp.html
geda_icarus_vpi_within_vvp.html
geda_icarus_vvp_runtime.html
geda_icarus_vvp_simulation.html
geda_icarus_xilinx_hints.html geda_icarus_xnf.html
geda_igarus_fpga_lcg.html geda_installation.html
geda_installed_plugins.html geda_kig_howto.html
geda_master_attributes_list.html
geda_mcalc_readme.html geda_na_howto.html
geda_ngnutmeg_mp.html geda_ngsconvert_mp.html
geda_ngspice_mp.html geda_olib_readme.html
geda_pcb-quick_reference.html geda_pcb.html
geda_pcb_mp.html geda_pcb_tips.html
geda_pcb_ug.html geda_scg.html geda_sdb_howto.html
geda_sn_readme.html geda_ssan.html
geda_style_guide.html geda_suse_10.html
geda_suse_9.html geda_syntax_features.html
geda_systemc_netlister_readme.html geda_tasks.html
geda_todos.html geda_tragesym_readme.html
geda_usage.html geda_vams_netlister_readme.html
geda_verilog_netlister_readme.html
geda_vhdl_netlister_readme.html geda_wcalc_mp.html
geda_wcalc_readme.html geda_wcalc_stdio_mp.html
index.html start_es.html start_fr.html
Log:
First checkin of the wiki snapshot, prep work for new version of gEDA/gaf
Revision Changes Path
1.1 eda/geda/gaf/docs/wiki/.cvsignore
Index: .cvsignore
===================================================================
Makefile
Makefile.in
1.1 eda/geda/gaf/docs/wiki/001geda_documentation.html
Index: 001geda_documentation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:documentation.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:documentation.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:documentation.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:documentation.fr?do=export_raw" />
<meta name="date" content="2006-08-11T17:42:32-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#documentation_en_ligne_de_la_suite_d_outils_geda" class="toc">Documentation en ligne de la Suite d'Outils gEDA</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#for_document_authors" class="toc">For document authors</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gschem_-_saisie_de_schemas" class="toc">gschem - Saisie de Schémas</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gnetlist_-_netlister" class="toc">gnetlist - Netlister</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gsymcheck_-_symbol_checker" class="toc">gsymcheck - Symbol Checker</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#utils_-_geda_utilities" class="toc">utils - gEDA Utilities</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#examples" class="toc">Examples</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#attribute_file_format_details" class="toc">Attribute/File Format Details</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#spice" class="toc">SPICE</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#ngspice" class="toc">ngspice</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gnucap" class="toc">gnucap</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gspiceui" class="toc">gSpiceUI</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#pcb" class="toc">PCB</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gerbv" class="toc">gerbv</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#icarus_verilog" class="toc">Icarus Verilog</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gtkwave" class="toc">GTKWave</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#wcalc" class="toc">Wcalc</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#mcalc" class="toc">mcalc</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#covered" class="toc">covered</a></span></div></li></ul>
</div>
</div>
<h1><a name="documentation_en_ligne_de_la_suite_d_outils_geda" id="documentation_en_ligne_de_la_suite_d_outils_geda">Documentation en ligne de la Suite d'Outils gEDA</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-64] -->
<h2><a name="for_document_authors" id="for_document_authors">For document authors</a></h2>
<div class="level2">
<p>
New features are available for document authors:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:syntax_features" class="wikilink1" title="geda:syntax_features">Syntax features</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:installed_plugins" class="wikilink1" title="geda:installed_plugins">Installed plugins</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:style_guide" class="wikilink1" title="geda:style_guide">Style Guide</a> – A work in progress, please contribute</div>
</li>
</ul>
</div>
<!-- SECTION [65-273] -->
<h2><a name="gschem_-_saisie_de_schemas" id="gschem_-_saisie_de_schemas">gschem - Saisie de Schémas</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="001geda_gschem_ug.html" class="wikilink2" title="geda:gschem_ug.fr">Guide de l'Utilisateur gschem</a> – En cours, vous pouvez participer</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_gschem_mp.html" class="wikilink2" title="geda:gschem_mp.fr">page de manuel gschem</a></div>
</li>
<li class="level1"><div class="li"> <a href="001geda_scg.html" class="wikilink2" title="geda:scg.fr">Guide de la Création de Symbole</a></div>
</li>
<li class="level1"><div class="li"> <a href="001geda_hse_howto.html" class="wikilink2" title="geda:hse_howto.fr">Hooks/Scheme Extension HOWTO</a></div>
</li>
<li class="level1"><div class="li"> <a href="001geda_kig_howto.html" class="wikilink2" title="geda:kig_howto.fr">HOWTO du Keymapping dans gschem</a></div>
</li>
</ul>
</div>
<!-- SECTION [274-620] -->
<h2><a name="gnetlist_-_netlister" id="gnetlist_-_netlister">gnetlist - Netlister</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gnetlist_ug" class="wikilink1" title="geda:gnetlist_ug">gnetlist User's Guide</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gnetlist_mp" class="wikilink1" title="geda:gnetlist_mp">gnetlist man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:sdb_howto" class="wikilink1" title="geda:sdb_howto">Spice netlisting (SDB) HOWTO</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:na_howto" class="wikilink1" title="geda:na_howto">net= attribute mini-HOWTO</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:ssan" class="wikilink1" title="geda:ssan">Switcap Symbols and Netlister</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:sn_readme" class="wikilink1" title="geda:sn_readme">Switcap netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:fbabgapp" class="wikilink1" title="geda:fbabgapp">Forward/Backward Annotation Between gEDA and Pads PowerPCB</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:grcsan" class="wikilink1" title="geda:grcsan">gEDA RF Cascade Symbols and Netlister</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:bom_readme" class="wikilink1" title="geda:bom_readme">Bill of Material netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gschem2pcb_readme" class="wikilink1" title="geda:gschem2pcb_readme">gschem2pcb README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:verilog_netlister_readme" class="wikilink1" title="geda:verilog_netlister_readme">Verilog netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:vhdl_netlister_readme" class="wikilink1" title="geda:vhdl_netlister_readme">VHDL netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:vams_netlister_readme" class="wikilink1" title="geda:vams_netlister_readme">VAMS netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:systemc_netlister_readme" class="wikilink1" title="geda:systemc_netlister_readme">SystemC netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:eagle_pcb_netlister_readme" class="wikilink1" title="geda:eagle_pcb_netlister_readme">Eagle PCB netlister README</a></div>
</li>
</ul>
</div>
<!-- SECTION [621-1493] -->
<h2><a name="gsymcheck_-_symbol_checker" id="gsymcheck_-_symbol_checker">gsymcheck - Symbol Checker</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gsymcheck_mp" class="wikilink1" title="geda:gsymcheck_mp">gsymcheck man-page</a></div>
</li>
</ul>
</div>
<!-- SECTION [1494-1578] -->
<h2><a name="utils_-_geda_utilities" id="utils_-_geda_utilities">utils - gEDA Utilities</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gsch2pcb_readme" class="wikilink1" title="geda:gsch2pcb_readme">gsch2pcb (gschem to PCB) README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">gsch2pcb tutorial</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:tragesym_readme" class="wikilink1" title="geda:tragesym_readme">tragesym (symbol generator) README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/tragesym/tragesym.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/tragesym/tragesym.html" rel="nofollow">tragesym Tutorial</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:olib_readme" class="wikilink1" title="geda:olib_readme">olib (OrCAD (TM) converter) README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:grenum_mp" class="wikilink1" title="geda:grenum_mp">grenum man-page</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gattrib_readme" class="wikilink1" title="geda:gattrib_readme">gattrib README</a> – note</div>
</li>
</ul>
</div>
<!-- SECTION [1579-2087] -->
<h2><a name="examples" id="examples">Examples</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:example_hsm" class="wikilink1" title="geda:example_hsm">Hierarchical SPICE model</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:example_usbjtag" class="wikilink1" title="geda:example_usbjtag">Example USB-based JTAG interface</a> – note</div>
</li>
</ul>
</div>
<!-- SECTION [2088-2237] -->
<h2><a name="attribute_file_format_details" id="attribute_file_format_details">Attribute/File Format Details</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:master_attributes_list" class="wikilink1" title="geda:master_attributes_list">Master Attributes List</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:file_format_spec" class="wikilink1" title="geda:file_format_spec">sym/sch File Format Specification</a></div>
</li>
</ul>
</div>
<!-- SECTION [2238-2403] -->
<h1><a name="spice" id="spice">SPICE</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/tools/gnucap/papers/al-davis-dissertation.pdf" class="urlextern" title="http://www.geda.seul.org/tools/gnucap/papers/al-davis-dissertation.pdf" rel="nofollow">Implicit Mixed-Mode Simulation of VLSI Circuits</a> by Albert Tatum Davis (1991)<br/>
Please report if this <acronym title="Uniform Resource Locator">URL</acronym> goes dead.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.brorson.com/gEDA/SPICE/intro.html" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/intro.html" rel="nofollow">Circuit Simulation using gEDA and SPICE - HOWTO</a> (<acronym title="HyperText Markup Language">HTML</acronym> version)<br/>
by Stuart Brorson (20 December 2004).<br/>
Please report if this <acronym title="Uniform Resource Locator">URL</acronym> is not the latest version.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.brorson.com/gEDA/HOWTO/gEDA_Spice_HOWTO-20050103.pdf" class="urlextern" title="http://www.brorson.com/gEDA/HOWTO/gEDA_Spice_HOWTO-20050103.pdf" rel="nofollow">Circuit Simulation using gEDA and SPICE - HOWTO</a> (<acronym title="Portable Document Format">PDF</acronym> version)<br/>
by Stuart Brorson ( 5 January 2005).</div>
</li>
</ul>
<p>
Testing:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:csygas" class="wikilink1" title="geda:csygas">Circuit Simulation using gEDA and SPICE - HOWTO</a> – Done converting. Please comment on this conversion to a wiki-format.</div>
</li>
</ul>
</div>
<!-- SECTION [2404-3153] -->
<h1><a name="ngspice" id="ngspice">ngspice</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf" class="urlextern" title="http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf" rel="nofollow">NGSPICE User Manual</a> – describes ngspice-rework-17, Draft Version 0.2<br/>
Please report if this <acronym title="Uniform Resource Locator">URL</acronym> is not the appropriated version, or if it goes dead.</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:ngspice_mp" class="wikilink1" title="geda:ngspice_mp">ngspice man-page</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:ngnutmeg_mp" class="wikilink1" title="geda:ngnutmeg_mp">ngnutmeg man-page</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:ngsconvert_mp" class="wikilink1" title="geda:ngsconvert_mp">ngsconvert man-page</a> – note</div>
</li>
</ul>
</div>
<!-- SECTION [3154-3576] -->
<h1><a name="gnucap" id="gnucap">gnucap</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/tools/gnucap/gnucap-man.pdf" class="urlextern" title="http://www.geda.seul.org/tools/gnucap/gnucap-man.pdf" rel="nofollow">The Gnu Circuit Analysis Package Users manual</a> – January 21,2004 version</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/tools/gnucap/papers/gnucap-model-compiler.pdf" class="urlextern" title="http://www.geda.seul.org/tools/gnucap/papers/gnucap-model-compiler.pdf" rel="nofollow">The Gnucap Model Compiler</a></div>
</li>
</ul>
</div>
<!-- SECTION [3577-3837] -->
<h1><a name="gspiceui" id="gspiceui">gSpiceUI</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/shared/gEDA-20060124/Documents/gSpiceUI/gSpiceUI.html" class="urlextern" title="file:///shared/gEDA-20060124/Documents/gSpiceUI/gSpiceUI.html" rel="nofollow">GNU Spice GUI</a></div>
</li>
</ul>
</div>
<!-- SECTION [3838-3945] -->
<h1><a name="pcb" id="pcb">PCB</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:pcb_ug" class="wikilink2" title="geda:pcb_ug">Pcb-1.99q</a> – gEDA Suite version 20060123</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:footprint_creation" class="wikilink2" title="geda:footprint_creation">footprint_creation</a> – Stuart Brorson’s document, is this the latest?</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:pcb_mp" class="wikilink1" title="geda:pcb_mp">PCB man-page</a></div>
</li>
<li class="level1"><div class="li"></div>
</li>
<li class="level1"><div class="li"> <a href="http://pcb.sourceforge.net/manual.html" class="urlextern" title="http://pcb.sourceforge.net/manual.html" rel="nofollow">Recent development shapshot manuals and the current CVS version manual</a></div>
</li>
</ul>
</div>
<!-- SECTION [3946-4262] -->
<h1><a name="gerbv" id="gerbv">gerbv</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gerbv_mp" class="wikilink1" title="geda:gerbv_mp">gerbv man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gerbv_pnp_readme" class="wikilink1" title="geda:gerbv_pnp_readme">Searching for Parts and marking them on screen (in gerbv)</a></div>
</li>
</ul>
</div>
<!-- SECTION [4263-4408] -->
<h1><a name="icarus_verilog" id="icarus_verilog">Icarus Verilog</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_quick_start" class="wikilink1" title="geda:icarus_quick_start">Getting Started with Icarus Verilog</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_mp" class="wikilink1" title="geda:icarus_mp">Icarus Verilog compiler man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_vpi_mp" class="wikilink1" title="geda:icarus_vpi_mp">Compile front end for VPI modules man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_vvp_runtime" class="wikilink1" title="geda:icarus_vvp_runtime">Icarus Verilog vvp runtime engine man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_readme" class="wikilink1" title="geda:icarus_readme">The Icarus Verilog Compilation System</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:igarus_fpga_lcg" class="wikilink1" title="geda:igarus_fpga_lcg">FPGA Loadable Code Generator for Icarus Verilog</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_xilinx_hints" class="wikilink1" title="geda:icarus_xilinx_hints">Xilinx Hints</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_xnf" class="wikilink1" title="geda:icarus_xnf">Xilinx Netlist Format</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_ieee1364" class="wikilink1" title="geda:icarus_ieee1364">Icarus Verilog vs. IEEE1364</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_anc" class="wikilink1" title="geda:icarus_anc">Icarus Attribute Naming Conventions</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_extensions" class="wikilink1" title="geda:icarus_extensions">Icarus Verilog Extensions</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_glossary" class="wikilink1" title="geda:icarus_glossary">Icarus Verilog Glossary</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_opcodes" class="wikilink1" title="geda:icarus_opcodes">Executable Instruction Opcodes</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_vpi_within_vvp" class="wikilink1" title="geda:icarus_vpi_within_vvp">VPI_within_VVP</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:icarus_vvp_simulation" class="wikilink1" title="geda:icarus_vvp_simulation">VVP Simulation Engine</a></div>
</li>
</ul>
</div>
<!-- SECTION [4409-5334] -->
<h1><a name="gtkwave" id="gtkwave">GTKWave</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://home.nc.rr.com/gtkwave/" class="urlextern" title="http://home.nc.rr.com/gtkwave/" rel="nofollow">Welcome to GTKWave</a> – Now for version 3.0 (the promoted version 1.3)</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_mp" class="wikilink1" title="geda:gtkwave_mp">Visualization tool for VCD, LXT, and VZT files (gtkwave)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_lxt2miner_mp" class="wikilink1" title="geda:gtkwave_lxt2miner_mp">Data mining of LXT2 files (lxt2miner)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_lxt2vcd_mp" class="wikilink1" title="geda:gtkwave_lxt2vcd_mp">Coverts LXT2 files to VCD (lxt2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_mvl2lxt_mp" class="wikilink1" title="geda:gtkwave_mvl2lxt_mp">Coverts MVLSIM AET files to LXT (mvl2lxt)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_mvl2vcd_mp" class="wikilink1" title="geda:gtkwave_mvl2vcd_mp">Coverts MVLSIM AET files to VCD (mvl2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_tex2vcd_mp" class="wikilink1" title="geda:gtkwave_tex2vcd_mp">Coverts TEXSIM AET files to VCD (tex2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_tla2vcd_mp" class="wikilink1" title="geda:gtkwave_tla2vcd_mp">Converts TLA to VCD or LST files (tla2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt_mp" class="wikilink1" title="geda:gtkwave_vcd2lxt_mp">Converts VCD files to interlaced or linear LXT files (vcd2lxt)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt2_mp" class="wikilink1" title="geda:gtkwave_vcd2lxt2_mp">Converts VCD files to LXT2 files (vcd2lxt2)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_vcd2vzt_mp" class="wikilink1" title="geda:gtkwave_vcd2vzt_mp">Converts VCD files to VZT files
(vcd2vzt)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_vzt2vcd_mp" class="wikilink1" title="geda:gtkwave_vzt2vcd_mp">Coverts VZT files to VCD (vzt2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:gtkwave_vztminer_mp" class="wikilink1" title="geda:gtkwave_vztminer_mp">Data mining of VZT files (vztminer)</a></div>
</li>
</ul>
</div>
<!-- SECTION [5335-6366] -->
<h1><a name="wcalc" id="wcalc">Wcalc</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:wcalc_readme" class="wikilink1" title="geda:wcalc_readme">Wcalc README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:wcalc_mp" class="wikilink1" title="geda:wcalc_mp">Wcalc man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:wcalc_stdio_mp" class="wikilink1" title="geda:wcalc_stdio_mp">stdio Wcalc man-page</a></div>
</li>
</ul>
</div>
<!-- SECTION [6367-6513] -->
<h1><a name="mcalc" id="mcalc">mcalc</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://mcalc.sourceforge.net/" class="urlextern" title="http://mcalc.sourceforge.net/" rel="nofollow">Microstrip Analysis/Synthesis Calculator</a> – latest documentation from sourceforge</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:mcalc_readme" class="wikilink1" title="geda:mcalc_readme">mcalc README</a></div>
</li>
</ul>
</div>
<!-- SECTION [6514-6693] -->
<h1><a name="covered" id="covered">covered</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://covered.sourceforge.net/user/index.html" class="urlextern" title="http://covered.sourceforge.net/user/index.html" rel="nofollow">covered User Manual</a> – link to latest covered documentation on sourceforge</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:covered_rv" class="wikilink2" title="geda:covered_rv">covered Report Viewer</a> – available in the Help menu of the <acronym title="Graphical User Interface">GUI</acronym> report utility</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/wiki/geda:covered_mp" class="wikilink1" title="geda:covered_mp">covered man-page</a></div>
</li>
</ul>
</div>
<!-- SECTION [6694-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_faq-attribs.html
Index: 001geda_faq-attribs.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-attribs.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-attribs.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-attribs.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-attribs.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_faq-gnetlist.html
Index: 001geda_faq-gnetlist.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-gnetlist.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-gnetlist.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-gnetlist.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-gnetlist.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_faq-gsch2pcb.html
Index: 001geda_faq-gsch2pcb.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-gsch2pcb.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-gsch2pcb.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-gsch2pcb.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-gsch2pcb.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_faq-gschem.html
Index: 001geda_faq-gschem.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-gschem.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-gschem.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-gschem.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-gschem.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_faq-simulation.html
Index: 001geda_faq-simulation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-simulation.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-simulation.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-simulation.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-simulation.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_faq.html
Index: 001geda_faq.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq.fr?do=export_raw" />
<meta name="date" content="2006-08-11T18:05:11-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#faq_geda" class="toc">FAQ gEDA</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#qu_est_ce_que_le_projet_geda" class="toc">Qu'est ce que le projet gEDA?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_is_geda_gaf_and_how_does_it_relate_to_geda" class="toc">What is gEDA/gaf and how does it relate to gEDA?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_is_the_geda_suite" class="toc">What is the gEDA suite?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#why_what_makes_geda_so_different_from_other_eda_tools" class="toc">Why? What makes gEDA so different from other EDA tools?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#why_does_the_geda_suite_seem_like_a_collection_of_random_programs_and_not_a_single_integrated_application" class="toc">Why does the gEDA Suite seem like a collection of random programs, and not a single integrated application?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#so_which_is_better_a_suite_i.e._confederacy_of_programs_or_an_integrated_application" class="toc">So which is better, a suite (i.e. confederacy) of programs or an integrated application?</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#suite_confederacy_pros" class="toc">Suite (confederacy) pros:</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#suite_confederacy_cons" class="toc">Suite (confederacy) cons:</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#monolithic_application_pros" class="toc">Monolithic application pros:</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#monolithic_application_cons" class="toc">Monolithic application cons:</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#what_license_does_geda_use" class="toc">What license does gEDA use?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#where_can_i_get_more_information_about_and_download_geda" class="toc">Where can I get more information about and download gEDA?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#okay_how_do_i_start_using_geda" class="toc">Okay, how do I start using gEDA?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="faq_geda" id="faq_geda">FAQ gEDA</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-24] -->
<h2><a name="qu_est_ce_que_le_projet_geda" id="qu_est_ce_que_le_projet_geda">Qu'est ce que le projet gEDA?</a></h2>
<div class="level2">
<p>
Le projet gEDA travaille à produire une suite <acronym title="GNU General Public License">GPL</acronym> complète d’outils EDA (<em class="u">E</em>lectronic <em class="u">D</em>esign <em class="u">A</em>utomation). Ces outils sont utilisés pour la conception de circuits électriques, la saisie de schémas, la simulation, le prototypage et la production. Le projet gEDA offre actuellement une suite mature dâ??applications de logiciels libres pour la conception électronique, incluant le la saisie de schémas, la gestion dâ??attributs, la génération de bill of materials (BOM), le netlisting dans plus de 20 formats de netlist, la simulation analogique et numérique et le placement sur circuit imprimé « printed circuit board (PCB) ».
</p>
<p>
The originator of gEDA project is Ales Hvezda. The gEDA project has grown quite a bit, since the Spring of 1998. It is no longer one person producing tools. Instead, there are many people involved. A few people are contributing to the original tools, while others are doing their own development on their own tools. So, gEDA does not refer to the original tools anymore (those tools now stand on their own now), but instead it refers to all the projects which are free and are somehow associated with this webpage or the geda-dev/geda-user mailing lists. By associating with gEDA, free software authors do not give up any control over their tools, but they gain a community which cares about quality and free (as in freedom) EDA tools.
</p>
<p>
gEDA can be pronounced â??gee-daahhhâ?? (rhymes with cheetah) or â??g-dahhh (short g).
</p>
</div>
<!-- SECTION [25-1540] -->
<h2><a name="what_is_geda_gaf_and_how_does_it_relate_to_geda" id="what_is_geda_gaf_and_how_does_it_relate_to_geda">What is gEDA/gaf and how does it relate to gEDA?</a></h2>
<div class="level2">
<p>
gaf stands for â??<em class="u">g</em>schem <em class="u">a</em>nd <em class="u">f</em>riendsâ??. It is a subset of the entire tool suite grouped together under the gEDA name. gEDA/gaf is a collection of tools which currently includes:
</p>
<ul>
<li class="level1"><div class="li"> gschem: A schematic capture program</div>
</li>
<li class="level1"><div class="li"> gnetlist: A netlist generation program</div>
</li>
<li class="level1"><div class="li"> gsymcheck: A syntax checker for schematic symbols</div>
</li>
<li class="level1"><div class="li"> gattrib: A spreadsheet programm that manipulates the properties of symbols of a schematic</div>
</li>
<li class="level1"><div class="li"> libgeda: Libraries for gschem gnetlist and gsymcheck</div>
</li>
<li class="level1"><div class="li"> gsch2pcb: Forward annotation from your schematic to layout using <a href="http://geda.seul.org/wiki/geda:pcb" class="wikilink2" title="geda:pcb">PCB</a>.</div>
</li>
<li class="level1"><div class="li"> some minor utils</div>
</li>
</ul>
<p>
The gEDA/gaf tools share a common file format (.sch) and also share a common link library (libgeda.so). The gEDA/gaf source distribution can be found on this website (geda.seul.org).
</p>
<p>
Even though gaf is very much a part of gEDA, the gEDA name does not necessarily only apply to gaf â?? tools gathered under the â??gEDAâ?? moniker include many other programs. Indeed, gEDA refers to <strong>any</strong> <acronym title="GNU General Public License">GPL</acronym>‘d EDA tool which decides to associate itself with the gEDA website/mailing list. Important examples of gEDA tools include the layout program <a href="http://geda.seul.org/wiki/geda:pcb" class="wikilink2" title="geda:pcb">PCB</a>, the Verilog complier <a href="http://www.icarus.com/eda/verilog/" class="urlextern" title="http://www.icarus.com/eda/verilog/" rel="nofollow">Icarus Verilog</a>, the analog circuit simulator <a href="http://www.gnucap.org/" class="urlextern" title="http://www.gnucap.org/" rel="nofollow">gnucap</a>, and the open-source SPICE simulator <a href="http://www.ngspice.org/" class="urlextern" title="http://www.ngspice.org/" rel="nofollow">ngspice</a>. Many other gEDA programs also exist.
</p>
<p>
For historical reasons, on <a href="http://freshmeat.net/" class="urlextern" title="http://freshmeat.net/" rel="nofollow">freshmeat</a> gaf is known as the package â??gEDAâ??.
</p>
</div>
<!-- SECTION [1541-3089] -->
<h2><a name="what_is_the_geda_suite" id="what_is_the_geda_suite">What is the gEDA suite?</a></h2>
<div class="level2">
<p>
The gEDA suite is a CDROM image (.iso) created by Stuart Brorson to make it easier to install all the various tools that are part of, associated with, or just plain work with the gEDA projectâ??s software. The vision is that the tools collected on the gEDA suite CDROM constitute a coherent, complete, open-source design environment gathered into one convenient download. Currently the gEDA suite CDROM includes:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/" class="urlextern" title="http://geda.seul.org/tools/" rel="nofollow">gEDA/gaf</a> â?? schematic capture and netlisting</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/ngspice" class="urlextern" title="http://geda.seul.org/tools/ngspice" rel="nofollow">ngspice</a> â?? SPICE simulation</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gnucap" class="urlextern" title="http://geda.seul.org/tools/gnucap" rel="nofollow">gnucap</a> â?? Analog simulation</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gspiceui" class="urlextern" title="http://geda.seul.org/tools/gspiceui" rel="nofollow">gspiceui</a> â?? <acronym title="Graphical User Interface">GUI</acronym> front end for ngspice/gnucap</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/pcb" class="urlextern" title="http://geda.seul.org/tools/pcb" rel="nofollow">pcb</a> â?? PCB layout</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gerbv" class="urlextern" title="http://geda.seul.org/tools/gerbv" rel="nofollow">gerbv</a> â?? Gerber viewer</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/icarus" class="urlextern" title="http://geda.seul.org/tools/icarus" rel="nofollow">Icarus Verilog</a> â?? Verilog simulator</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gtkwave" class="urlextern" title="http://geda.seul.org/tools/gtkwave" rel="nofollow">GTKWave</a> â?? Digitial waveform viewer</div>
</li>
<li class="level1"><div class="li"> <a href="http://wcalc.sourceforge.net/" class="urlextern" title="http://wcalc.sourceforge.net/" rel="nofollow">wcalc</a> â?? Transmission line and electromagnetic structure analysis</div>
</li>
</ul>
<p>
At the center of the gEDA suite CDROM is an easy to use installer that automates the building and installing of all the various packages from source â?? making it easy to install the whole suite for the first time user. The gEDA suite CDROM image is available from the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">download</a> page. <strong>Note: The installer works only with Linux!</strong>
</p>
</div>
<!-- SECTION [3090-4612] -->
<h2><a name="why_what_makes_geda_so_different_from_other_eda_tools" id="why_what_makes_geda_so_different_from_other_eda_tools">Why? What makes gEDA so different from other EDA tools?</a></h2>
<div class="level2">
<p>
Tools in the gEDA suite and associated tools have the following characteristics:
</p>
<ul>
<li class="level1"><div class="li"> Free in the monetary sense (no cost).</div>
</li>
<li class="level1"><div class="li"> All the file formats and all the source codes are available via the <acronym title="GNU General Public License">GPL</acronym> license. This license grants specific rights to the authors and users of <acronym title="GNU General Public License">GPL</acronym>‘d software.</div>
</li>
<li class="level1"><div class="li"> Independence from any one vendor. All gEDA tools come with full source. You can change, improve, port, and even distribute (if you follow the terms of the <acronym title="GNU General Public License">GPL</acronym>) the tools.</div>
</li>
<li class="level1"><div class="li"> No mechanism is used to restrict the use of the tools (like making use of hard disk serial numbers or ethernet addresses to force the software to only run on one machine).</div>
</li>
<li class="level1"><div class="li"> No arbitrary, marketeering-driven limitations. Free versions of commercial tools usually include capricious limitations (i.e. limited design size, inability to print, inability to export netlists, etc.) which cripple the program, and force the serious user to buy the real tool. In contrast, the gEDA tools are fully-featured, and do not arbitrarily impose limits on design as a way of extracting money from you.</div>
</li>
<li class="level1"><div class="li"> Legacy design protection. Since the software will always run forever (because of above), gEDA tool design files will always be viewable/editable (with the right versions of the software).</div>
</li>
<li class="level1"><div class="li"> Open design flow. This means that the tools talk to each other via known and documented means (files / APIs). It is easy to replace a tool or augment the tools with something else if you so desire.</div>
</li>
<li class="level1"><div class="li"> Stability - Bugs which cause crashes are investigated immediately and fixed as soon as possible.</div>
</li>
<li class="level1"><div class="li"> Minimize bloat and unnecessary features.</div>
</li>
<li class="level1"><div class="li"> Run on as many platforms as possible. For gEDA/gaf: GNU/Linux, various other Unix systems.</div>
</li>
<li class="level1"><div class="li"> Developed in an open (no secrets) fashion.</div>
</li>
<li class="level1"><div class="li"> Strive to be documented.</div>
</li>
</ul>
<p>
gEDA may not have all the latest cutting edge features found in other packages and may be viewed sometimes as being on the trailing edge of EDA technology, but the tools are becoming useful to a lot of people because the above mentioned reasons.
</p>
</div>
<!-- SECTION [4613-6695] -->
<h2><a name="why_does_the_geda_suite_seem_like_a_collection_of_random_programs_and_not_a_single_integrated_application" id="why_does_the_geda_suite_seem_like_a_collection_of_random_programs_and_not_a_single_integrated_application">Why does the gEDA Suite seem like a collection of random programs, and not a single integrated application?</a></h2>
<div class="level2">
<p>
The gEDA suite is indeed a confederacy of somewhat independent programs. This happened for reasons of history: Ales Hvezda started the gEDA project more or less on his own. The original vision was to produce an end-to-end software suite for creating PC boards so that robotics hobbiests could design their own boards. However, as the gEDA project progressed the large magnitude of this task became clear â?? and coding many of the proposed apps had not even begun!
</p>
<p>
Meanwhile, other software developers â?? with their own independently written applications â?? found the gEDA project vision compelling. The authors of those applications joined Ales and contributed their programs to the gEDA project. Amongst the contributed projects was â??pcbâ??, a ten year old (at that time) PCB layout program. With the contribution of â??pcbâ??, gEDAâ??s originally planned layout tool â??gpcbâ?? was scuttled. At the same time, other developers contributed analog and digital simulators, waveform viewers, and so on.
</p>
<p>
In this way the gEDA suite came together. It is not shared code, or a common user interface which distinguishes the gEDA suite. Rather, the shared vision of an open-source EDA environment is the thread which holds the project together. Today, the gEDA Suite is a collection of many different programs contributed by many different authors. The apps strive to work together, and usually succeed. But the separate beginnings of each program in the suite are still observable. Nonetheless, with a little work the various components of the suite are interoperable, and many people have completed quite complex board designs using the gEDA suite.
</p>
</div>
<!-- SECTION [6696-8466] -->
<h2><a name="so_which_is_better_a_suite_i.e._confederacy_of_programs_or_an_integrated_application" id="so_which_is_better_a_suite_i.e._confederacy_of_programs_or_an_integrated_application">So which is better, a suite (i.e. confederacy) of programs or an integrated application?</a></h2>
<div class="level2">
<p>
This is ultimately a matter of religion. Iâ??ll summarize some of the pros and cons (as I see them) of each approach here.
</p>
</div>
<!-- SECTION [8467-8690] -->
<h3><a name="suite_confederacy_pros" id="suite_confederacy_pros">Suite (confederacy) pros:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> You can use â??best of breedâ?? applications for each part of the design flow. That is, you can use the standard gEDA flow gschem â?? gsch2pcb â?? pcb to create a PC Board. However, if you think that the open-source application â??pcbâ?? stinks, you can use the flow gschem â?? gnetlist â?? Protel (for example). Recall that gnetlist can output more than twenty different netlist formats! Moreover, if you donâ??t like one component of the flow, you can write another tool to replace it. Now at this time it is true that only a single application generally exists to perform a particular task. However, this situation will likely change with time â?? witness the forking of the â??pcbâ?? project, the contributed netlister <a href="http://www.viasic.com/opensource/" class="urlextern" title="http://www.viasic.com/opensource/" rel="nofollow">gnetman</a>, as well as the <a href="http://web.comhem.se/~u31829222/" class="urlextern" title="http://web.comhem.se/~u31829222/" rel="nofollow">HEC</a> project. As a general rule, the suite approach offers the greatest freedom to the user.</div>
</li>
<li class="level1"><div class="li"> The design flow has a lot of natural breakpoints. These occur where one design tool completes its job and writes out a file (i.e. gschem writes out a .sch file, or gnetlist writes out a SPICE netlist). At this point, you can easily break into the flow and write scripts which process and/or munge the design data. For big, advanced designs, this is a real advantage to the â??design suiteâ?? approach. This advantage may appeal only to the â??power userâ??, but note itâ??s importance: professional-grade EDA suites (Synopsys, Xilinx) also work the same way.</div>
</li>
<li class="level1"><div class="li"> Usage of an applications suite can be automated using a Makefile, or even a <acronym title="Practical Extraction and Report Language">Perl</acronym> script. ASIC designers do this all the time with their design and synthesis tools. Some gEDA users have publically disclosed (on the e-mail list) that they do this too, and point to it as an important feature of the gEDA suite.</div>
</li>
<li class="level1"><div class="li"> Scalability: A monolithic application is almost always developed by a lone developer who has a single-minded vision for his program. This developer can enforce stylistic and UI standards throughout all his tools. The problem with this is that a single developer â?? even one who is uniquely gifted â?? can only write one (or a couple of) parts of an EDA application. Therefore, any open-source, monolithic EDA app will likely always be limited in scope & features by the abilities of a single developer. (I would love to be proven wrong on this point. I welcome counter-examples, but none have come to my attention as of this writing.) On the other hand, a confederacy of developers working independently on their own apps â?? but meanwhile contributing to a greater whole â?? can create a very large and capable EDA enviornment indeed.</div>
</li>
</ul>
</div>
<!-- SECTION [8691-11362] -->
<h3><a name="suite_confederacy_cons" id="suite_confederacy_cons">Suite (confederacy) cons:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> More confusing to newbies, since they donâ??t know the flow right off the bat. That is, they actually need to <acronym title="Read The Fine Manual">RTFM</acronym> to know what tool to run next. Good documentation helps (thatâ??s why youâ??re reading this), but documentation is always second choice behind developing an intuitive application interface.</div>
</li>
<li class="level1"><div class="li"> Different programs have different UI conventions (i.e. menu organization is different, keyboard or mouse bindings are different). This can be uncomfortable to those who arenâ??t familiar with the programs.</div>
</li>
<li class="level1"><div class="li"> Since no assumptions are made about the design flow, schematic symbols are necessarily <a href="http://geda.seul.org/wiki/geda:faq-gschem#what_s_this_business_about_heavy_vs._light_symbols" class="wikilink1" title="geda:faq-gschem">light</a>. This forces the user to spend more time attaching e.g. footprint attributes to his design. Moreover, the user must spend more time actually researching which footprints to use. However, a good suite (like the gEDA suite) will offer multiple methods to perform this task (e.g. gattrib, <acronym title="Practical Extraction and Report Language">Perl</acronym> scripts to populate footprints, etc.).</div>
</li>
<li class="level1"><div class="li"> Some developers are more energetic than others, or have more free time. Therefore, some programs in a suite will be more developed (and less buggy) than others. Unfortunately, a single buggy program in a suite can unfairly taint a new userâ??s perception of the entire suite.</div>
</li>
</ul>
</div>
<!-- SECTION [11363-12696] -->
<h3><a name="monolithic_application_pros" id="monolithic_application_pros">Monolithic application pros:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> A single, unified design environment is easier for newbies to grasp. UI conventions may be harmonized. The tool might be intuitive enough that it can be driven without needing to <acronym title="Read The Fine Manual">RTFM</acronym>.</div>
</li>
<li class="level1"><div class="li"> Schematic capture symbols can be heavy, so less work is required in attaching attributes to each symbol in a schematic.</div>
</li>
</ul>
</div>
<!-- SECTION [12697-13049] -->
<h3><a name="monolithic_application_cons" id="monolithic_application_cons">Monolithic application cons:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Not infinitely scalable. One developer canâ??t do everything, no matter how smart. Therefore, a monolithic app will never approach the size or power of a suite developed by a confederacy of programmers.</div>
</li>
<li class="level1"><div class="li"> Lack of choice. If the developer doesnâ??t like your way of doing things, you have no choice. Even if you submit patches to enable your way of performing a task, there is a chance the main developer will ignore or reject your patches. This is probably not an issue for newbies, but for â??power usersâ?? it represents a problem.</div>
</li>
<li class="level1"><div class="li"> Risk. If the apps developer quits, the code becomes abandoned, and the users suffer. This effectively happened to the program <a href="http://sourceforge.net/projects/xtrkcad" class="urlextern" title="http://sourceforge.net/projects/xtrkcad" rel="nofollow">XTrkCAD</a>, a CAD program for designing model railroads. The author of this program quit developing it, but thankfully placed his stuff on Sourceforge so that the program wouldnâ??t simply disappear. Unfortunately, without the original developerâ??s involvement, the code languished. Patches contributed to the project went to /dev/null. Eventually, a coalition of concerned user/developers created a <a href="http://xtrkcad-fork.sourceforge.net/" class="urlextern" title="http://xtrkcad-fork.sourceforge.net/" rel="nofollow">fork</a> of the code to enable further development. However, work on the forked code has been piecemeal and sporadic. (Hopefully, this will change someday.) Meanwhile, for the ordinary user, the fact that the original developer quit represents a catastrophe.</div>
</li>
</ul>
</div>
<!-- SECTION [13050-14497] -->
<h2><a name="what_license_does_geda_use" id="what_license_does_geda_use">What license does gEDA use?</a></h2>
<div class="level2">
<p>
All of the tools and associated files in gEDA will be released under the GNU General Public License version 2 (<acronym title="GNU General Public License">GPL</acronym>), from Free Software Foundation
</p>
<p>
From the license:
</p>
<p>
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
</p>
<p>
This cannot be stressed enough: <strong>gEDA is GPLed software</strong>. Therefore nothing proprietary can be distributed with gEDA like part libraries from proprietary EDA products. Conversion program for proprietary libraries will be available, but any converted files which are part of a proprietary product must never find their way into gEDA. Contributed files must be GPLable (or be placed under another free license). Please keep this in mind if you wish to contribute something.
</p>
<p>
Even though the focus of gEDA is GPLed software, other software licenses are more than welcome to be mixed with the existing software, just as long as they are compatible with the <acronym title="GNU General Public License">GPL</acronym>.
</p>
</div>
<!-- SECTION [14498-15776] -->
<h2><a name="where_can_i_get_more_information_about_and_download_geda" id="where_can_i_get_more_information_about_and_download_geda">Where can I get more information about and download gEDA?</a></h2>
<div class="level2">
<p>
The official website is <a href="http://geda.seul.org/" class="urlextern" title="http://geda.seul.org/" rel="nofollow">gEDA Project</a> hosted by the <a href="http://www.seul.org/" class="urlextern" title="http://www.seul.org/" rel="nofollow">SEUL Project</a>. The European mirror is at <a href="http://ftp.sunet.se/geda/" class="urlextern" title="http://ftp.sunet.se/geda/" rel="nofollow">European gEDA Project mirror</a> hosted by Swedish University Network - Sweden, Nothern Europe.
</p>
<p>
There are several mailing lists. Please look at the mailing listâ??s <a href="http://geda.seul.org/mailinglist" class="urlextern" title="http://geda.seul.org/mailinglist" rel="nofollow">info page</a> for how to subscribe and post.
</p>
<p>
You can download all the software, including the gEDA suite CDROM from the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">download</a> page.
</p>
<p>
You can find the latest set of documentation on the toplevel <a href="http://geda.seul.org/docs/" class="urlextern" title="http://geda.seul.org/docs/" rel="nofollow">documentation</a> page.
</p>
<p>
Come to the Free EDA Users Group (Freedog) meeeting in Cambridge, MA. The meeting is at 7PM on the first Wednesday of each month at the <a href="http://www.starbucks.com/retail/locator/MapResults.aspx?a=1&StoreKey=93728&IC_O=42.3599350625432%3a-71.1021394862385%3a32%3a02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD1_O=&GAD2_O=&GAD3_O=02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD4_O=&radius=5&countryID=244&dataSource=MapPoint.NA" class="urlextern" title="http://www.starbucks.com/retail/locator/MapResults.aspx?a=1&StoreKey=93728&IC_O=42.3599350625432%3a-71.1021394862385%3a32%3a02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD1_O=&GAD2_O=&GAD3_O=02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD4_O=&radius=5&countryID=244&dataSource=MapPoint.NA" rel="nofollow">Kendal Square Starbucks</a>.
</p>
</div>
<!-- SECTION [15777-16977] -->
<h2><a name="okay_how_do_i_start_using_geda" id="okay_how_do_i_start_using_geda">Okay, how do I start using gEDA?</a></h2>
<div class="level2">
<p>
The most important thing to do is to read and understand Bill Wilsonâ??s excellent <a href="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">gschem -> gsch2pcb -> PCB</a> tutorial. This should get you started.
</p>
<p>
Also be sure to check out the other <a href="http://geda.seul.org/docs" class="urlextern" title="http://geda.seul.org/docs" rel="nofollow">gEDA documentation</a>. An installation guide is contained in this Wiki, as is some general information about how to use the tools. Spend some time browsing, download the gEDA Suite, and try it out for yourself!
</p>
</div>
<!-- SECTION [16978-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_glossary.html
Index: 001geda_glossary.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:glossary.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:glossary.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:glossary.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:glossary.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_gschem_mp.html
Index: 001geda_gschem_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gschem_mp.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gschem_mp.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gschem_mp.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gschem_mp.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_gschem_ug.html
Index: 001geda_gschem_ug.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gschem_ug.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gschem_ug.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gschem_ug.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gschem_ug.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_hse_howto.html
Index: 001geda_hse_howto.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:hse_howto.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:hse_howto.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:hse_howto.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:hse_howto.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_installation.html
Index: 001geda_installation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:installation.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:installation.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:installation.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:installation.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_kig_howto.html
Index: 001geda_kig_howto.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:kig_howto.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:kig_howto.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:kig_howto.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:kig_howto.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_pcb-quick_reference.html
Index: 001geda_pcb-quick_reference.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:pcb-quick_reference.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:pcb-quick_reference.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:pcb-quick_reference.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:pcb-quick_reference.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_pcb_tips.html
Index: 001geda_pcb_tips.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:pcb_tips.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:pcb_tips.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:pcb_tips.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:pcb_tips.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_scg.html
Index: 001geda_scg.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:scg.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:scg.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:scg.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:scg.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_tasks.html
Index: 001geda_tasks.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:tasks.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:tasks.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:tasks.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:tasks.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_todos.html
Index: 001geda_todos.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:todos.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:todos.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:todos.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:todos.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/001geda_usage.html
Index: 001geda_usage.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:usage.fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:usage.fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:usage.fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:usage.fr?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/Makefile.am
Index: Makefile.am
===================================================================
## $Id: Makefile.am,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
##
docname=wiki
docsdir = @GEDADOCDIR@/$(docname)
EXTRA_DIST = @datawiki@
install-data-hook:
( $(INSTALL) -d $(DESTDIR)$(docsdir); \
for i in $(EXTRA_DIST); do \
base=`dirname $$i`; \
if [ "$$base" != "." ]; then \
$(INSTALL) -d $(DESTDIR)$(docsdir)/$$base; \
fi; \
type=`file $$i | grep -i directory`; \
if [ "$$type" = "" ]; then \
$(INSTALL_DATA) $$i $(DESTDIR)$(docsdir)/$$i; \
fi; \
done )
uninstall-hook:
( for i in $(EXTRA_DIST); do \
rm -f $(DESTDIR)$(docsdir)/$$i; \
done; )
-rmdir $(DESTDIR)$(docsdir)
clean-local:
rm -f *~
maintainer-clean-local:
rm -f *~
dist-clean-local:
rm -f *~
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_app_a.html
Index: docs_20060124_gschem_ug_app_a.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:app_a</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_a?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_a?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_a?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_app_b.html
Index: docs_20060124_gschem_ug_app_b.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:app_b</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_b?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_b?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_b?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_app_c.html
Index: docs_20060124_gschem_ug_app_c.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:app_c</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_c?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_c?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:app_c?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_components_symbols_objects_attributes.html
Index: docs_20060124_gschem_ug_components_symbols_objects_attributes.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:components_symbols_objects_attributes</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:components_symbols_objects_attributes?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:components_symbols_objects_attributes?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:components_symbols_objects_attributes?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_electrical_connectivity.html
Index: docs_20060124_gschem_ug_electrical_connectivity.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:electrical_connectivity</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:electrical_connectivity?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:electrical_connectivity?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:electrical_connectivity?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_how_to_ask_questions.html
Index: docs_20060124_gschem_ug_how_to_ask_questions.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:how_to_ask_questions</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:how_to_ask_questions?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:how_to_ask_questions?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:how_to_ask_questions?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_installing_gschem.html
Index: docs_20060124_gschem_ug_installing_gschem.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:installing_gschem</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:installing_gschem?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:installing_gschem?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:installing_gschem?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_resources.html
Index: docs_20060124_gschem_ug_resources.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:resources</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:resources?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:resources?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:resources?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_the_main_window.html
Index: docs_20060124_gschem_ug_the_main_window.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:the_main_window</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:the_main_window?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:the_main_window?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:the_main_window?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/docs_20060124_gschem_ug_the_status_window.html
Index: docs_20060124_gschem_ug_the_status_window.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>docs:20060124:gschem_ug:the_status_window</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:the_status_window?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=docs:20060124:gschem_ug" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:the_status_window?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/docs:20060124:gschem_ug:the_status_window?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_bom_readme.html
Index: geda_bom_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:bom_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:bom_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:bom_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:bom_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:19:09-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="bill_of_material_netlister_readme" id="bill_of_material_netlister_readme">Bill of Material netlister README</a></h1>
<div class="level1">
<pre class="code">README for
BOM - Bill Of Materials generater for gnetlist.
--------------------------------------------------------------------------
I (Matt) put together a quick bill of materials generator for gnetlist.
It takes a configuration file which tells it what attributes you want
netlisted (i.e. vendor, part number).
This is a sample config file:
device
label
name
Just call it with
gnetlist -g bom -o test.bom test.sch
The config file must be called "attribs" and be in the pwd, because
there is no way to pass arguments to the netlister (at least that I
could find).
Eventually I'd like to integrate this with some sort of a database for
production purposes. Let me know if you are interested in helping or
have any ideas.
Matt
matt@xxxxxxxxx
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_covered_mp.html
Index: geda_covered_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:covered_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:covered_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:covered_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:covered_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:50:40-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="covered_man-page" id="covered_man-page">covered man-page</a></h1>
<div class="level1">
<pre class="code">Covered(1) Code Analysis Covered(1)
NAME
Covered - Verilog Code Coverage Analyzer
SYNTAX
covered [<options>] score [<options>]
covered [<options>] merge [<options>] <existing_database>
<database_to_merge>
covered [<options>] report [<options>] <database_file>
DESCRIPTION
Covered is a Verilog code coverage analysis tool that can be useful for
determining how well a diagnostic test suite is covering the design
under test. Covered reads in the Verilog design files and a VCD or LXT
formatted dumpfile from a diagnostic run and generates a database file
called a Coverage Description Database (CDD) file, using the score com-
mand. This file can be merged with other CDD files from the same
design to create accummulated coverage, using the merge command. Once
a CDD file is created, the user can use Covered to generate various
human-readable coverage reports in an ASCII format or use Covered�s GUI
to interactively look at coverage results, using the report command.
Additionally, as part of Covered�s score command, race condition possi-
bilities are found in the design files and can be either ignored,
flagged as warnings or flagged as errors. By specifying race condi-
tions as errors, Covered can also be used as a race condition checker.
GLOBAL OPTIONS
These options are placed immediately after the keyword covered in the
command-line. They can be used for any command (with the exception of
-v and -h) and have the same effect in each case.
-D Debug. Display information helpful for debugging tool problems.
Note: This option is now only available when covered is built
with the --enable-debug configuration option.
-h Help. Display this usage information.
-Q Quiet mode. Causes all output to be suppressed.
-v Version. Display current Covered version.
COMMANDS
score Parses Verilog files and VCD/LXT dumpfiles to create database
file used for merging and reporting.
merge Merges two database files into one.
report Generates human-readable coverage reports from database file or
starts the coverage report GUI.
SCORE COMMAND
The following options are valid for the score command:
-D define_name
Defines the specified name to 1.
-D define_name=value
Defines the specified name to the specified value.
-e block_name
Name of module, task, function or named begin/end block to not
score. Causes all subblocks in the Verilog tree under this
block to also not be scored.
-ea Excludes all always blocks from being considered for coverage.
-ec Excludes all continuous assignments from being considered for
coverage.
-ei Excludes all initial blocks from being considered for coverage.
-F module_name=(in_expr,)out_expr
Indicates to the parser where to find the FSM located in module
module_name which has an input state expression called in_expr
and output state expression called out_expr. If in_expr is not
specified, out_expr is used as both the input and output state
expression.
-f filename
Name of file containing additional arguments to parse.
-h Displays this help information.
-I directory
Directory to find included Verilog files.
-i instance_name
Verilog hierarchical reference to the module that is at the top
of the tree to be scored. This option is necessary if module to
verify coverage is not the top-level module in the design. If
not specified, -t value is used.
-lxt filename
Name of LXT/LXT2 dumpfile to score design with. If this or the
-vcd option is not used, Covered will only create an initial CDD
file from the design and will not attempt to score the design.
-o database
Name of database to write coverage information to. If not spec-
ified, the output database filename will be "cov.cdd".
-p filename
Overrides default filename used to store intermediate preproces-
sor output.
-P parameter_scope=value
Performs a defparam on the specified parameter with value.
-r(S|W|E)
Specifies action to take when race condition checking finds
problems in design (-rS = Silent, -rW = Warning, -rE = Error).
-S Outputs simulation statistics after simulation has completed.
This information is currently only useful for the developers of
Covered.
-t top-level module
Specifies the module name of the top-most module that will be
measured. Note that this module does not need to be the
top-most module in the simulator. This field is required for
all calls to the score command.
-ts number
When scoring occurs, this option allows the user to see how far
the simulator has progressed by outputting the current timestep
to standard output. The value of number specifies how many
timesteps are allowed to be simulated before outputting the cur-
rent timestep (results in less calls to output stream).
-T min|typ|max
Specifies which value to use when encountering a delay expres-
sion in the form: min:typ:max. If this option is not speci-
fied, �typ� select is used by default.
-v filename
Name of specific Verilog file to score.
-vcd filename
Name of VCD dumpfile to score design with. If this or the -lxt
option is not used, Covered will only create an initial CDD file
from the design and will not attempt to score the design.
-y directory
Directory to find unspecified Verilog files.
+libext+.extension(+.extension)*+
Extensions of Verilog files to allow in scoring.
MERGE COMMAND
The following options are valid for the merge command:
-h Displays this help information.
-o filename
File to output new database to. If this argument is not speci-
fied, the existing_database is used as the output database name.
REPORT COMMAND
The following options are valid with the report command:
-c If -v is specified, displays covered line, toggle and combina-
tional cases. Default is to display uncovered information.
-d (s|d|v)
Level of detail to provide in coverage report information (s =
summary, d = detailed, v = verbose). Default is summary.
-h Displays this help information.
-i Provides coverage information for instances instead of module.
-m [l][t][c][f][r]
Type(s) of metrics to report. Default is ltcf.
-o filename
File to output report information to. Default is standard out-
put.
-v Deprecated. Replaced by �-d d� or �-d v�.
-view Starts the GUI interface for interactive coverage reporting.
-w (number)
Specifies the maximum line width (in characters) that can be
used to output Verilog information. If this option is not spec-
ified, all Verilog code in the report will retain the same for-
matting as was specified in the original Verilog code. If this
option is specified, Verilog code will be formatted to use as
much of the current line as possible, wrapping text when the
line reaches the maximum line width. The default maximum line
width is 115 characters (this value is used if no number is
specified with the -w option). If a number is specified with
the -w option, this value is used for the maximum line width.
AUTHORS
Trevor Williams <trevorw@xxxxxxxxxxx>
Arpan Sen <arpan_sen@xxxxxxxxx>
SEE ALSO
For more information on how to use the Covered code coverage tool,
please consult the on-line User�s Guide at http://covered.source-
forge.net/user/index.html.
Trevor Williams covered-20060218 Covered(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_covered_rv.html
Index: geda_covered_rv.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:covered_rv</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:covered_rv?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:covered_rv?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:covered_rv?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_csygas.html
Index: geda_csygas.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:csygas</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:csygas?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:csygas?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:csygas?do=export_raw" />
<meta name="date" content="2006-05-08T16:21:23-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#circuit_simulation_using_geda_and_spice_-_howto" class="toc">Circuit Simulation using gEDA and SPICE - HOWTO</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#introduction" class="toc">Introduction</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#target_audience_for_this_howto" class="toc">Target audience for this HOWTO</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#acknowledgements" class="toc">Acknowledgements</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#the_big_picturethe_design_flow_in_geda" class="toc">The big picture: the design flow in gEDA</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#overview_of_spice_usage_with_geda" class="toc">Overview of SPICE usage with gEDA</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#detailed_design_simulation_flow_summary" class="toc">Detailed design/simulation flow summary</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#preliminary_workpreparing_your_symbols_and_spice_files" class="toc">Preliminary work: preparing your symbols and SPICE files</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#configuring_your_symbols" class="toc">Configuring your symbols</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#configuring_your_spice_files" class="toc">Configuring your SPICE files</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#creating_your_circuitschematic_capture" class="toc">Creating your circuit: schematic capture</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#gschem_attributes_for_spice_netlisting" class="toc">Gschem attributes for spice netlisting</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#component_attributes_and_meanings" class="toc">Component attributes and meanings</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#refdes_conventions" class="toc">refdes conventions</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#passives" class="toc">Passives</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#passives_with_additional_attributes" class="toc">Passives with additional attributes</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#passives_for_semiconductor_design" class="toc">Passives for semiconductor design</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#transistors_and_diodes" class="toc">Transistors and diodes</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#actives_--_integrated_circuits" class="toc">Actives -- integrated circuits</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#independent_sources" class="toc">Independent sources</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#dependent_sources" class="toc">Dependent sources</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#spice_components" class="toc">SPICE components</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#handling_hierarchical_models" class="toc">Handling hierarchical models</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#spice_netlist_generation" class="toc">SPICE netlist generation</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#using_gnetlist" class="toc">Using gnetlist</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#creating_the_netlist_using_gnetlist_and_spice-sdb" class="toc">Creating the netlist using gnetlist and spice-sdb</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#common_netlisting_problems" class="toc">Common netlisting problems</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#spice_simulation" class="toc">SPICE simulation</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#ltspice" class="toc">LTSpice</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#ngspice" class="toc">Ngspice</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#tclspice" class="toc">Tclspice</a></span></div></li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_a" class="toc">Appendix A</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_b" class="toc">Appendix B</a></span></div></li></ul>
</div>
</div>
<h1><a name="circuit_simulation_using_geda_and_spice_-_howto" id="circuit_simulation_using_geda_and_spice_-_howto">Circuit Simulation using gEDA and SPICE - HOWTO</a></h1>
<div class="level1">
<p>
Stuart Brorson<br/>
Electroniscript, inc.<br/>
sdb@xxxxxxxxxxxxxxxxxxx<br/>
<br/>
5th January 2006
</p>
<p>
<strong>abstract</strong><br/>
Linux will become an increasingly popular engineering platform in the future. Professional-quality CAD applications for circuit design are becoming available from programmers within the free-software community. For electronics, the gEDA suite is the preferred tool set for circuit design. Analog circuit simulation using SPICE is also now available on Linux. This HOWTO describes the design flow employed to perform SPICE simulations using gEDA tools on Linux.
</p>
<p>
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 2 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site (<a href="http://www.fsf.org/" class="urlextern" title="http://www.fsf.org/" rel="nofollow">http://www.fsf.org/</a>) by writing to: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. <a href="#fn__1" name="fnt__1" id="fnt__1" class="fn_top" onmouseover="fnt('1', this, event);">1)</a>.
</p>
</div>
<!-- SECTION [1-1357] -->
<h2><a name="introduction" id="introduction">Introduction</a></h2>
<div class="level2">
<p>
Modern engineering is a computer-intensive discipline. Like professionals in other engineering disciplines, electrical engineers and electronics designers are heavy users of all kinds of CAD software, including software for circuit design and simulation, as well as PCB and chip production. Electrical engineers have a special name for the CAD software they use: EDA, which stands for “Electronic Design Automation”. Under this rubric fall many different kinds of CAD software. For example, during the front-end stages of a design, an electrical engineer will use a program called a “schematic capture” package to enter his design into the computer. A schematic capture program is basically a specialized drawing program incorporating symbols used in creating a circuit design. After drawing his schematic, the electrical engineer may choose to simulate the behavior of his circuit in order to verify that his design will work as desired. The most popular program for this purpose is SPICE (Simulation Program with Integrated Circuit Emphasis), which was developed at Berkeley starting in the 1970s, and is widely available in multiple forms today. SPICE is now considered a fundamental engineering tool, and is an essential part of the repertoire of most practicing engineers.
</p>
<p>
The <a href="http://www.geda.seul.org/" class="urlextern" title="http://www.geda.seul.org/" rel="nofollow">gEDA project</a> is an open-source effort to create a <acronym title="GNU General Public License">GPL</acronym>‘ed EDA suite running on Linux. GEDA has developed to the point where the power and quality of the tools is quite high; using the gEDA suite, you can now create complex SPICE netlists (files) incorporating vendor model files. You can then use various simulators running on Linux to perform SPICE simulations of your netlists. The purpose of this document is to explain how to use the gEDA tools (typically running on GNU/Linux) to perform SPICE simulations. In particular, this HOWTO documents the usage of <strong>spice-sdb</strong>, which is an advanced backend for the gEDA netlister (<strong>gnetlist</strong>) used to create SPICE netlists. <strong>spice-sdb</strong> is bundled with the gEDA tool suite; if you have installed gEDA, you are ready to create SPICE netlists. This HOWTO also provides advice about using ngspice/tclspice and/or LTSpice to simulate a circuit netlisted with <strong>spice-sdb</strong>.
</p>
</div>
<!-- SECTION [1358-3623] -->
<h3><a name="target_audience_for_this_howto" id="target_audience_for_this_howto">Target audience for this HOWTO</a></h3>
<div class="level3">
<p>
This HOWTO is not a tutorial about circuit design or SPICE simulation. Rather, it is designed to help the practicing engineer begin using gEDA to perform SPICE simulations on the Linux platform. Therefore, I assume that you are already familiar with electronic design, the mechanics of schematic capture using EDA tools, and SPICE simulation in general. I also assume that you are reasonably familiar with the GNU/Linux operating system and its development environment. Finally, I assume that you have already installed gEDA, and know how to use it. If you need to come up to speed on any of these subjects, further information is available at the following websites:
</p>
<ul>
<li class="level1"><div class="li"> The gEDA project: <a href="http://www.geda.seul.org/" class="urlextern" title="http://www.geda.seul.org" rel="nofollow">http://www.geda.seul.org</a></div>
</li>
<li class="level1"><div class="li"> SPICE3 syntax and commands: <a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/" rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/</a></div>
</li>
<li class="level1"><div class="li"> Ngspice: <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/" rel="nofollow">http://ngspice.sourceforge.net/</a></div>
</li>
<li class="level1"><div class="li"> Tclspice: <a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/" rel="nofollow">http://tclspice.sourceforge.net/</a></div>
</li>
<li class="level1"><div class="li"> LTSpice: <a href="http://www.linear.com/software/" class="urlextern" title="http://www.linear.com/software/" rel="nofollow">http://www.linear.com/software/</a></div>
</li>
<li class="level1"><div class="li"> Spice on Linux resources: <a href="http://www.brorson.com/gEDA/SPICE/" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/" rel="nofollow">http://www.brorson.com/gEDA/SPICE/</a></div>
</li>
<li class="level1"><div class="li"> Free Dog – The Free EDA Users Group: <a href="http://www.freeedaug.org/" class="urlextern" title="http://www.freeedaug.org/" rel="nofollow">http://www.freeedaug.org/</a></div>
</li>
</ul>
</div>
<!-- SECTION [3624-4807] -->
<h3><a name="acknowledgements" id="acknowledgements">Acknowledgements</a></h3>
<div class="level3">
<p>
This document does not live in isolation. Several active members of the free EDA community were instrumental in helping me to creat this HOWTO. First and foremost, Paolo Nenzi, the author of ngspice, took my original HOWTO and turned it into a Lyx document which I could then make a DocBook. Thanks, Paolo, for helping with this HOWTO, and more importantly, thanks for all the great work on ngspice! Also at the top of the list stands Ales Hvezda, who is the driving force behind the gEDA project. Without Ales, none of this would have been possible; his contribution of <strong>gschem</strong> is invaluable. Thanks, Ales, for creating gEDA and distributing it worldwide under the <acronym title="GNU General Public License">GPL</acronym> – you’ve started a revolution! Stefan Jones deserves a deep thank-you for his work on tclspice, and his graceous support and integration efforts when I submitted patches to the tclspice project. I should also thank W. Kazubski and S. Gieltjes – they wrote the original SPICE netlisters upon which I based gnet-spice-sdb.scm. I also want to thank Ken Healy for contributing the netlist sorting patch, and Peter Kaiser for pushing me to include some features useful for chip simulation. Peter also deserves thanks for writing some of the device-oriented sections of this document. Finally, I should acknolwedge the contributions and suggestions I receive from readers of the geda-user e-mail list. The beauty of free software is that it encourages collaboration, which means that the end product is greater than what one individual could acheive alone.
</p>
</div>
<!-- SECTION [4808-6362] -->
<h3><a name="the_big_picturethe_design_flow_in_geda" id="the_big_picturethe_design_flow_in_geda">The big picture: the design flow in gEDA</a></h3>
<div class="level3">
<p>
In EDA, the concept of “design flow” is important. GEDA is a suite of tools used to do electronic design – it is not a single application. “Design flow” refers to the order in which you use the tools to acheive your goal. Depending upon whether you are doing analog or digital design, designing boards or chips, the type of files required by the manufacturer of your boards, and a number of other factors, you will use different tools from the gEDA suite to acheive your goal.
</p>
<p>
A flow diagram of the gEDA design flow is shown in the figure below. The diagram shows a simple flow suitable for designing, simulating, and laying out PC boards. As can be seen, the simulation activitiy (blue blocks) is a loop. That is, you create your design and simulate it repeatedly until it behaves according to your desired specifications. <a href="_detail/geda_geda_flow.html" class="media" title="geda:geda_flow.png"><img src="_media/geda_geda_flow.png" class="mediacenter" alt="" /></a> The design flow used in gEDA. Shown under “simulation” are several different types of simulator available. In this HOWTO, we are interested only in the SPICE variants (e.g. ngspice, tclspice).
</p>
</div>
<!-- SECTION [6363-7459] -->
<h3><a name="overview_of_spice_usage_with_geda" id="overview_of_spice_usage_with_geda">Overview of SPICE usage with gEDA</a></h3>
<div class="level3">
<p>
Conceptually, SPICE simulation in gEDA proceeds via the following steps:
</p>
<ol>
<li class="level1"><div class="li"> Creation and gathering of schematic symbols and SPICE model files. Often, the SPICE model files are obtained from your component vendor. You can generally find most models by checking the component vendor’s website.</div>
</li>
<li class="level1"><div class="li"> Schematic capture using symbols and SPICE models created in step 1.</div>
</li>
<li class="level1"><div class="li"> Netlist generation from the schematic created in step 2.</div>
</li>
<li class="level1"><div class="li"> SPICE simulation of the circuit described by the netlist created in step 3.</div>
</li>
</ol>
<p>
These steps are illustrated by the blue boxes in the flow diagram above.
</p>
<p>
To create a SPICE netlist, the netlister (<strong>gnetlist</strong>) iterates through the entire schematic and looks at several parts of each component’s symbol in order to create a blob of SPICE code. In general, each component can generate one or more lines of SPICE code. Component information needed by the netlister is held in two places:
</p>
<ol>
<li class="level1"><div class="li"> The symbol itself, in the attribute, which is attached when the symbol is created, and is typically accessed through the symbol editor.</div>
</li>
<li class="level1"><div class="li"> In attributes manually attached to the component during schematic capture using <strong>gschem</strong>.</div>
</li>
</ol>
<p>
Since there are two places the netlister looks for information, <strong><em>you must make sure that the required information is available in both places</em></strong>.
</p>
</div>
<!-- SECTION [7460-8803] -->
<h3><a name="detailed_design_simulation_flow_summary" id="detailed_design_simulation_flow_summary">Detailed design/simulation flow summary</a></h3>
<div class="level3">
<p>
The detailed steps required to design and simulate a circuit using gEDA look like this:
</p>
<ol>
<li class="level1"><div class="li"> Schematic symbol creation with correct <strong><code>device</code></strong> attribute. (Usually, the symbols have already been created with the correct <strong><code>device</code></strong> attribute, but if you are having problems, it doesn’t hurt to check them.)</div>
</li>
<li class="level1"><div class="li"> Schematic capture using <strong>gschem</strong>.</div>
</li>
<li class="level1"><div class="li"> Assignment of SPICE attributes (<strong><code>value</code></strong>, <strong><code>model</code></strong>, <strong><code>file</code></strong>, <strong><code>type</code></strong>, , etc.) to components using <strong>gschem</strong> or <strong>gattrib</strong>.</div>
</li>
<li class="level1"><div class="li"> Assignment of <strong><code>refdes</code></strong> using e.g. <strong>refdes_renum</strong>.</div>
</li>
<li class="level1"><div class="li"> Creation of netlist using: <strong><code>gnetlist -g spice-sdb</code></strong></div>
</li>
<li class="level1"><div class="li"> Check netlist for correctness (manually open and inspect netlist).</div>
</li>
<li class="level1"><div class="li"> Run spice using a simulator such as <strong>LTSpice</strong>, <strong>ngspice</strong>, or <strong>tclspice</strong>.</div>
</li>
<li class="level1"><div class="li"> Plot/analyze results (often plotting/analysis tools are incorporated in the simulator).</div>
</li>
<li class="level1"><div class="li"> If you are not happy with your circuit’s performance as revealed by simulation, go back to step 2, fix it using <strong>gschem</strong> and iterate.</div>
</li>
</ol>
<p>
The purpose of this HOWTO is to provide the detailed understanding necessary to successfully navigate this process.
</p>
</div>
<!-- SECTION [8804-9983] -->
<h2><a name="preliminary_workpreparing_your_symbols_and_spice_files" id="preliminary_workpreparing_your_symbols_and_spice_files">Preliminary work: preparing your symbols and SPICE files</a></h2>
<div class="level2">
<p>
When you create schematic symbols for inclusion into your schematic, you must make sure that certain built-in attributes are correctly configured. The steps outlined below are done by editing the symbol itself using the symbol editor in <strong>gschem</strong>, or by editing the symbol file itself using a text editor.
</p>
</div>
<!-- SECTION [9984-10360] -->
<h3><a name="configuring_your_symbols" id="configuring_your_symbols">Configuring your symbols</a></h3>
<div class="level3">
</div>
<h4><a name="identifying_the_component_to_the_netlister" id="identifying_the_component_to_the_netlister">Identifying the component to the netlister</a></h4>
<div class="level4">
<p>
The SPICE netlister can recognize any particular symbol in two ways:
</p>
<ol>
<li class="level1"><div class="li"> The symbol’s <strong><code>device</code></strong> attribute, and</div>
</li>
<li class="level1"><div class="li"> The symbol’s <strong><code>refdes</code></strong>.</div>
</li>
</ol>
<p>
Both of these attributes are attached to the symbol when the symbol is created.
</p>
<p>
Each symbol has a <strong><code>device</code></strong> attribute attached to it. The <strong><code>device</code></strong> attribute is the first thing the netlister examines when processing the symbol. There are a number of devices which are native to the netlister, meaning that the netlister knows exactly how to deal with these types of devices. Native device types include <strong>RESISTOR</strong>, <strong>CAPACITOR</strong>, <strong>NPN_TRANSISTOR</strong>, etc. The entire list of native devices is present in <a href="#appendix_a" title="geda:csygas ↵" class="wikilink1">Appendix A</a> - Native components and their attributes.
</p>
<p>
The <strong><code>device</code></strong> attribute is hidden during normal use of <strong>gschem</strong>. Most often, the symbol’s creator has already given the symbol the correct <strong><code>device</code></strong> attribute. However, because the <strong><code>device</code></strong> attribute is hidden from the ordinary user, it can sometimes cause problems with SPICE netlist creation when it is set to an unexpected value. To view the <strong><code>device</code></strong> attribute, go into the symbol editor (select the symbol to edit, and do <strong><em>Hierarchy</em></strong> → <strong><em>down symbol</em></strong>, and turn on invisible attributes (<strong><em>Edit</em></strong> → <strong><em>show/hide inv text</em></strong>). If the <strong><code>device</code></strong> attribute is incorrect, you may change it by editing the symbol itself using a text editor.
</p>
<p>
If a symbol is not native (i.e. the netlister doesn’t recognize it as a built-in type), the netlister relies upon the first letter of the <strong><code>refdes</code></strong> to determine how to process the symbol. The <strong><code>refdes</code></strong> prefix is also built into the symbol when it is created. Example <strong><code>refdes</code></strong> prefixes are <strong>R</strong> for resistors, <strong>C</strong> for capacitors, <strong>Q</strong> for transistors, etc. <strong><code>refdes</code></strong> prefixes correct for SPICE are listed in <a href="#appendix_a" title="geda:csygas ↵" class="wikilink1">Appendix A</a> - Native components and their attributes. Note that relying upon the <strong><code>refdes</code></strong> to identify the component for SPICE is not foolproof – for example, the netlister cannot distinguish between NPN and PNP transistors based upon the <strong><code>refdes</code></strong>. Therefore, it is always best to use a native <strong><code>device</code></strong> in your symbols.
</p>
</div>
<h4><a name="setting_the_pin_order" id="setting_the_pin_order">Setting the pin order</a></h4>
<div class="level4">
<p>
The netlister emits a components pins in the order set by the <strong><code>pinseq</code></strong> attribute. Note that this is not the same as the physical pin location. To set the <strong><code>pinseq</code></strong> attribute, first determine the pin ordering you want. SPICE uses a specific pin order for many components, including diodes and transistors. For example, a bipolar transistor’s pins listed in CBE order. Another example: if your symbol is meant to represent an IC modeled with a vendor’s <strong><code>.subckt</code></strong>, the order of the connections to the subcircuit is set by the <strong><code>.subckt</code></strong> line in the file.
</p>
<p>
Once you know the order in which to emit the pins, simply set the <strong><code>pinseq</code></strong> attribute with the correct order for the part. This will ensure that the part’s pins are emitted in the correct order.
</p>
</div>
<!-- SECTION [10361-13440] -->
<h3><a name="configuring_your_spice_files" id="configuring_your_spice_files">Configuring your SPICE files</a></h3>
<div class="level3">
<p>
Files holding complicated SPICE models or other SPICE code may be incorporated into the final SPICE netlist by including appropriate symbols into the schematic. SPICE model files are usually obtained from component vendors. Dealing with these files is straightforward. However, some issues should be kept in mind when preparing models for use during schematic capture:
</p>
<ul>
<li class="level1"><div class="li"> It is usually prudent to place these files into a dedicated directory distinct from the symbol directories.</div>
</li>
<li class="level1"><div class="li"> <em>Make sure that the SPICE files pin assignments correctly correspond to the pins as defined in the component’s symbol!</em> This is hard to over-emphasize. The order in which pins are listed in a .subckt file do not necessarily correspond to the physical pin ordering of the part. As described above, pins are emitted from the netlister in the order given by the <strong><code>pinseq</code></strong> attribute.</div>
</li>
<li class="level1"><div class="li"> <em>Make sure that the last character in a SPICE model file is a carriage return.</em> If no carriage return exists, then the next component listed in the netlist may be placed on the same line as the last line of the SPICE model file.</div>
</li>
</ul>
</div>
<!-- SECTION [13441-14587] -->
<h2><a name="creating_your_circuitschematic_capture" id="creating_your_circuitschematic_capture">Creating your circuit: schematic capture</a></h2>
<div class="level2">
<p>
Schematic capture is the process by which one uses a special-purpose drawing program to draw a schematic diagram of the circuit under design. In the gEDA environment, the schematic capture program is called <strong>gschem</strong>. I assume you already know how to use <strong>gschem</strong>. If not, consult the documentation available at the gEDA website: <a href="http://www.geda.seul.org/" class="urlextern" title="http://www.geda.seul.org/" rel="nofollow">http://www.geda.seul.org/</a>. For the purposes of creating SPICE netlists, you must use <strong>gschem</strong> to attach attributes to components, and possibly also incorporate other SPICE directives into your netlist. After you are done with schematic capture, you create the SPICE netlist by running gEDA’s netlister <strong>gnetlist</strong> on your design.
</p>
</div>
<!-- SECTION [14588-15311] -->
<h3><a name="gschem_attributes_for_spice_netlisting" id="gschem_attributes_for_spice_netlisting">Gschem attributes for spice netlisting</a></h3>
<div class="level3">
<p>
There are several ways that spice attributes may be associated with a component using <strong>gschem</strong>. The way you choose to do this depends upon many factors, including the type of component, and the size and format of the SPICE model.
</p>
</div>
<!-- SECTION [15312-15593] -->
<h3><a name="component_attributes_and_meanings" id="component_attributes_and_meanings">Component attributes and meanings</a></h3>
<div class="level3">
<p>
The following attributes are meaningful for SPICE netlisting, and may be attached from within <strong>gschem</strong>:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: The reference designator of the component. Valid values depend upon the component type and are given in <a href="#appendix_a" title="geda:csygas ↵" class="wikilink1">Appendix A</a> - Native components and their attributes.</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong>: For passives, this is the component value. For actives, this is the type (model no.) of the component (e.g. 2N3904, uA741). When a model for an active is instantiated separately from the component itself, the <strong><code>value</code></strong> attribute holds the name of the spice model.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model</code></strong>: This holds a one line spice model for the component.</div>
</li>
<li class="level1"><div class="li"> <strong><code>file</code></strong>: This holds the name of a file. Typically, this is a file holding e.g. a SPICE .MODEL, .SUBCKT, or other SPICE code.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong>: This holds the name of the spice model referred to in a .MODEL or .SUBCKT statement. <strong><code>model-name</code></strong> is mainly used to identify the spice model name in the symbol <strong><code>spice-model-1.sym</code></strong>. Active components should call out this name in the <strong><code>device</code></strong> attribute to associate the component with its particular spice model or subcircuit.</div>
</li>
<li class="level1"><div class="li"> <strong><code>type</code></strong>: This specifies the type of component and is used by spice when interpreting the model parameters. Valid values depend upon the device being modeled.</div>
</li>
</ul>
</div>
<!-- SECTION [15594-16953] -->
<h3><a name="refdes_conventions" id="refdes_conventions">refdes conventions</a></h3>
<div class="level3">
<p>
As a prerequisite to handling SPICE-related attributes, the SPICE netlister requires that all components must have a <strong><code>refdes</code></strong> attached to them. The <strong><code>refdes</code></strong> may be attached either by hand (which is laborious), or using the program <strong>refdes_renum</strong> included in the gEDA distribution.
</p>
<p>
Note that the first letter of the <strong><code>refdes</code></strong> must correspond to the appropriate letter for spice simulation. The <strong><code>refdes</code></strong> convention is given in the appendix.
</p>
</div>
<!-- SECTION [16954-17448] -->
<h3><a name="passives" id="passives">Passives</a></h3>
<div class="level3">
</div>
<h4><a name="basic_passives" id="basic_passives">Basic passives</a></h4>
<div class="level4">
<p>
The most basic components which one encounters in SPICE are passive components like resistors and capacitors which have numeric values, but no other modeling attributes. In this case the following attributes must be filled in:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: The correct <strong><code>refdes</code></strong> for the component.</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong>: For passives, this is the numeric value of the component (e.g. 100pF). For actives, this attribute may be filled in, but if no model attribute is available elsewhere in the schematic, the value is not used (in SPICE netlisting, anyway).</div>
</li>
<li class="level1"><div class="li"> If only a <strong><code>refdes</code></strong> and <strong><code>value</code></strong> attribute are encountered, the netlister will write a single line into the output file.</div>
</li>
</ul>
</div>
<h4><a name="example_resistor" id="example_resistor">Example resistor:</a></h4>
<div class="level4">
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong> = R2</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong> = 220</div>
</li>
</ul>
<p>
SPICE line generated: <strong><code>R2 0 4 220</code></strong>
</p>
<p>
(note that “0” and “4” correspond to the net nodes connected to the component, and are generated automatically by <strong>gnetlist</strong>.)
</p>
</div>
<h4><a name="example_capacitor" id="example_capacitor">Example capacitor:</a></h4>
<div class="level4">
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong> = C22</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong> = 1UF</div>
</li>
</ul>
<p>
SPICE line generated: <strong><code>C22 4 23 1UF</code></strong>
</p>
</div>
<!-- SECTION [17449-18544] -->
<h3><a name="passives_with_additional_attributes" id="passives_with_additional_attributes">Passives with additional attributes</a></h3>
<div class="level3">
<p>
Oftentimes, passive components have additional attributes attached to them for spice simulation. Examples of such attributes are temperature coefficients (for resistors) and initial conditions (for reactive components). These additional components may be incorporated into the SPICE file by simply attaching them to the component’s <strong><code>model</code></strong> attribute. Specifically, the required attributes are:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: Correct component <strong><code>refdes</code></strong>.</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong>: Numerical component <strong><code>value</code></strong>, as always.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model</code></strong>: One line string holding additional parameters, formatted as a valid SPICE string.</div>
</li>
</ul>
<p>
This string is placed after the component value in the line generated by gnetlist. Therefore, it is important to format the string placed in the <strong><code>model</code></strong> line to be valid SPICE code. Otherwise, you will risk causing the SPICE simulator to barf.
</p>
</div>
<h4><a name="example_resistor1" id="example_resistor1">Example resistor:</a></h4>
<div class="level4">
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong> = R5</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong> = 1MEG</div>
</li>
<li class="level1"><div class="li"> <strong><code>model</code></strong> = TC=0.001,0.015</div>
</li>
</ul>
<p>
SPICE line generated: <strong><code>R2 0 4 220 TC=0.001,0.015</code></strong>
</p>
</div>
<!-- SECTION [18545-19630] -->
<h3><a name="passives_for_semiconductor_design" id="passives_for_semiconductor_design">Passives for semiconductor design</a></h3>
<div class="level3">
<p>
The values for resistors and capacitors are often given as dimensions in an ASIC design. SPICE takes from the technology library the typical value per square and calculates the actual value in Ohm or Farad by itself. Therefor the following attributes are required:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: The correct refdes for the component.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong>: corresponds to the model in the technology library.</div>
</li>
<li class="level1"><div class="li"> <strong><code>w</code></strong>, <strong><code>l</code></strong>: dimensions of the device.</div>
</li>
</ul>
<p>
The technology library must be included with an <strong><code>.include</code></strong> line in the SPICE input file.
</p>
</div>
<h4><a name="example_semiconductor_resistor" id="example_semiconductor_resistor">Example semiconductor resistor:</a></h4>
<div class="level4">
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong> = R6</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong> = rpoly</div>
</li>
<li class="level1"><div class="li"> <strong><code>w</code></strong> = 3u</div>
</li>
<li class="level1"><div class="li"> <strong><code>l</code></strong> = 100u</div>
</li>
</ul>
<p>
SPICE line generated: <strong><code>R6 0 5 rpoly w=3u l=100u</code></strong>
</p>
</div>
<h4><a name="example_semiconductor_resistor_model" id="example_semiconductor_resistor_model">Example semiconductor resistor model:</a></h4>
<div class="level4">
<ul>
<li class="level1"><div class="li"> model rpoly R rsh=300</div>
</li>
</ul>
<p>
This should be part of the technology library from your ASIC vendor.
</p>
</div>
<!-- SECTION [19631-20557] -->
<h3><a name="transistors_and_diodes" id="transistors_and_diodes">Transistors and diodes</a></h3>
<div class="level3">
<p>
Transistors and diodes are generally accompanied by a device-specific model. Each model attempts to capture the detailed nonlinear dynamics of its particular device; otherwise, SPICE simulation is pointless. The SPICE model may be either a short, one-line string of parameters, or a multi-line set of SPICE parameters. A typical one-line parameter string is a short list of parameters describing a small-signal diode. Typical multi-line models come from component vendors, who often provide models for their components in a text file. Since there are two broad formats of SPICE information, there are two approaches to incorporating these parameters into the schematic:
</p>
</div>
<h4><a name="one_line_string_of_spice_parameters" id="one_line_string_of_spice_parameters">One line string of SPICE parameters</a></h4>
<div class="level4">
<p>
To incorporate a one line string of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: Correct component <strong><code>refdes</code></strong>.</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong>: The model number or part number of the component.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong>: The name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a <strong><code>value</code></strong> attribute to the component, this parameter is optional.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model</code></strong>: One line string holding additional parameters. Do not place the model parameters in parentheses – <strong>gnetlist</strong> will do this for you.</div>
</li>
</ul>
</div>
<h4><a name="example_diode" id="example_diode">Example diode:</a></h4>
<div class="level4">
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong> = D5</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong> = 1N1004</div>
</li>
<li class="level1"><div class="li"> <strong><code>model</code></strong> = IS=0.5UA RS=6 BV=5.20</div>
</li>
</ul>
<p>
SPICE lines generated: <strong><code>D5 2 6 1N1004 MODEL 1N1004 D (IS=0.5UA RS=6 BV=5.20)</code></strong>
</p>
</div>
<h4><a name="spice_model_file" id="spice_model_file">SPICE model file</a></h4>
<div class="level4">
<p>
To incorporate a file-full of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: Correct component <strong><code>refdes</code></strong>.</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong>: The model number or part number of the component.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong>: the name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a <strong><code>value</code></strong> attribute to the component, this parameter is optional.</div>
</li>
<li class="level1"><div class="li"> <strong><code>file</code></strong>: The file name of the SPICE model which you wish to incorporate into the netlist. This file name may specify either a relative or an absolute path, but it is probably better to use an absolute path to avoid problems if you ever move your schematic directory.</div>
</li>
</ul>
<p>
Note that you need to make sure that the model name held in your SPICE model file is the same as the <strong><code>value</code></strong> or <strong><code>model-name</code></strong> attributes you attached to the component. It is also a good idea to verify that the pin assignments in the model file correspond to the pin assignments made by the component symbol.
</p>
</div>
<!-- SECTION [20558-23258] -->
<h3><a name="actives_--_integrated_circuits" id="actives_--_integrated_circuits">Actives -- integrated circuits</a></h3>
<div class="level3">
<p>
Integrated circuits are incorporated into the netlist similarly to transistors and diodes. As such, you may incorporate the spice information either as a one-line parameter string, or as a model file.
</p>
</div>
<h4><a name="one_line_string_of_spice_parameters1" id="one_line_string_of_spice_parameters1">One line string of SPICE parameters</a></h4>
<div class="level4">
<p>
To incorporate a one line string of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: Correct component <strong><code>refdes</code></strong>.</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong>: The model number or part number of the component.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong>: the name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a <strong><code>value</code></strong> attribute to the component, this parameter is optional.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model</code></strong>: One line string holding additional parameters. Do not place the model parameters in parentheses – <strong>gnetlist</strong> will do this for you.</div>
</li>
</ul>
</div>
<h4><a name="spice_.model_or_.subckt_file" id="spice_.model_or_.subckt_file">SPICE .MODEL or .SUBCKT file</a></h4>
<div class="level4">
<p>
To incorporate a file-full of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>refdes</code></strong>: Correct component <strong><code>refdes</code></strong>. <em>Note that if the file holds a .MODEL, the</em> <strong><code>refdes</code></strong> <em>should start with U; if the file holds a .SUBCKT, the refdes should start with X.</em> The netlister checks for the file type and tries to “do the right thing”, but problems can arise if you don’t follow this rule.</div>
</li>
<li class="level1"><div class="li"> <strong><code>value</code></strong>: The model number or part number of the component.</div>
</li>
<li class="level1"><div class="li"> <strong><code>model-name</code></strong>: The name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a <strong><code>value</code></strong> attribute to the component, this parameter is optional.</div>
</li>
<li class="level1"><div class="li"> <strong><code>file</code></strong>: The name of the file holding the SPICE .MODEL or .SUBCKT which you wish to incorporate into the netlist. This file name may specify either a relative or an absolute path, but it is probably better to use an absolute path to avoid problems if you ever move your schematic directory.</div>
</li>
</ul>
<p>
Note that you need to make sure that the model name held in your SPICE model file is the same as the <strong><code>value</code></strong> or <strong><code>model-name</code></strong> attributes you attached to the component. It is also a good idea to verify that the pin assignments in the model file correspond to the pin assignments made by the component symbol.
</p>
</div>
<!-- SECTION [23259-25602] -->
<h3><a name="independent_sources" id="independent_sources">Independent sources</a></h3>
<div class="level3">
<p>
There are two independent sources: voltage sources and current sources. For incorporation into a SPICE netlist, they both work the same way. To incorporate an independent source into your SPICE netlist, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Place the independent source on your schematic. (Do <strong><em>Add</em></strong> → <strong><em>Component</em></strong> → <strong><em>spice</em></strong> → <strong><independent source name>.sym</strong>)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: V? or I?</div>
</li>
<li class="level2"><div class="li"> <strong><code>value</code></strong>: A one line string in SPICE format describing the source.</div>
</li>
</ul>
</li>
</ol>
</div>
<!-- SECTION [25603-26176] -->
<h3><a name="dependent_sources" id="dependent_sources">Dependent sources</a></h3>
<div class="level3">
<p>
There are four dependent sources:
</p>
<p>
This section remains TBD.
</p>
</div>
<!-- SECTION [26177-26266] -->
<h3><a name="spice_components" id="spice_components">SPICE components</a></h3>
<div class="level3">
</div>
<h4><a name="spice_model_block" id="spice_model_block">Spice model block</a></h4>
<div class="level4">
<p>
In certain situations, you may wish to embed a spice model block directly into your schematic. This is done when you have several devices with a “value” attribute calling out for a spice model. Depending upon whether the spice block is one line or multi-line, you may embed the code in one of two ways:
</p>
</div>
<h4><a name="one_line_spice_model" id="one_line_spice_model">One line SPICE model:</a></h4>
<div class="level4">
<ol>
<li class="level1"><div class="li"> Place a spice model block on your schematic. (Do <strong><em>Add</em></strong> → <strong><em>Component</em></strong> → <strong><em>spice</em></strong> → <strong>spice-model-1.sym</strong>)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: A?</div>
</li>
<li class="level2"><div class="li"> <strong><code>model</code></strong>: model name (i.e. the model name used in the components being modeled)</div>
</li>
<li class="level2"><div class="li"> <strong><code>type</code></strong>: One of the valid spice component types defined in the spice <acronym title="specification">spec</acronym>.</div>
</li>
<li class="level2"><div class="li"> <strong><code>value</code></strong>: The corresponding one-line spice model</div>
</li>
</ul>
</li>
</ol>
</div>
<h4><a name="multi-line_spice_model" id="multi-line_spice_model">Multi-line SPICE model:</a></h4>
<div class="level4">
<ol>
<li class="level1"><div class="li"> Place a spice model block on your schematic.(Do <strong><em>Add</em></strong> → <strong><em>Component</em></strong> → <strong><em>spice</em></strong> → <strong>spice-model-1.sym</strong>)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: A?</div>
</li>
<li class="level2"><div class="li"> <strong><code>model</code></strong>: model name</div>
</li>
<li class="level2"><div class="li"> <strong><code>file</code></strong>: Name of file holding SPICE model code (i.e. .MODEL or .SUBCKT).</div>
</li>
</ul>
</li>
</ol>
</div>
<h4><a name="include_block" id="include_block">Include block</a></h4>
<div class="level4">
<p>
The include block places a .INCLUDE directive into your netlist.
</p>
<ol>
<li class="level1"><div class="li"> Place a spice model block on your schematic. (Do <strong><em>Add</em></strong> → <strong><em>Component</em></strong> → <strong><em>spice</em></strong> → <strong>spice-include-1.sym</strong>)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: A?</div>
</li>
<li class="level2"><div class="li"> <strong><code>file</code></strong>: Name of file to include.</div>
</li>
</ul>
</li>
</ol>
</div>
<h4><a name="spice_directive_block" id="spice_directive_block">SPICE directive block</a></h4>
<div class="level4">
<p>
Placing a SPICE directive block into your schematic creates an arbitrary block of SPICE code in the netlist. The directive may be either statements held in a file, or a one-line string held in the <strong><code>model</code></strong> attribute. The netlister will simply dump the contents of the string or the file into your netlist verbatim. Examples of situations where this is useful include:
</p>
<ul>
<li class="level1"><div class="li"> .TEMP statement</div>
</li>
<li class="level1"><div class="li"> .IC statement</div>
</li>
<li class="level1"><div class="li"> Other SPICE statements for which <strong>gschem</strong> has no symbol.</div>
</li>
</ul>
<p>
To place a SPICE directive on your schematic, do:
</p>
<ol>
<li class="level1"><div class="li"> Place a SPICE directive block on your schematic. (Do <strong><em>Add</em></strong> → <strong><em>Component</em></strong> → <strong><em>spice</em></strong> → <strong>spice-directive-1.sym</strong>)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: A?</div>
</li>
<li class="level2"><div class="li"> <strong><code>file</code></strong>: Name of file to include.</div>
</li>
</ul>
</li>
</ol>
</div>
<!-- SECTION [26267-28676] -->
<h3><a name="handling_hierarchical_models" id="handling_hierarchical_models">Handling hierarchical models</a></h3>
<div class="level3">
<p>
In SPICE modeling, there are often situations where you wish to create a schematic representation of some particular component as a .SUBCKT, and then embed that component’s model in a higher level schematic. A common example might be as follows: You are doing a microwave simulation, and want to use a capacitor model which includes parasitic inductances and resistances, as well as the capacitance. Capacitor manufacturers often supply a printed schematic showing a circuit topology incorporating parasitics, and specify values for the parasitics. You would like to draw the capacitor model using gschem, netlist it to create a .SUBCKT, and then use the .SUBCKT to model capacitors in a higher lever schematic.
</p>
<p>
Since this kind of task is very common in SPICE simulation, <strong>gnet-spice-sdb</strong> now supports it (starting with rev 20030331). To create a lower level .SUBCKT and use it in a higher level schematic, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Draw the schematic of the lower level component (e.g. the capacitor + parasitics) using <strong>gschem</strong>.</div>
</li>
<li class="level1"><div class="li"> On the lower level schematic, place a <strong><code>spice-subcircuit-LL</code></strong> block (<strong>spice-subcircuit-LL-1.sym</strong>). This alerts the netlister that the schematic is a Lower Level .SUBCKT. Attach the following attributes to the symbol:<br/>
<br/>
* <strong><code>model-name</code></strong> = cap_with_parasitics<br/>
<br/>
(Of course, “cap_with_parasitics” is the example we use here. Use your own model name in your schematic.) Upon netlisting, this schematic symbol will cause the netlist to insert “.SUBCKT cap_with_parasitics” into the first line of the netlist file.</div>
</li>
<li class="level1"><div class="li"> On the lower level schematic, attach a <strong><code>spice-subcircuit-IO</code></strong> symbol (<strong>spice-subcircuit-IO-1.sym</strong>) to each IO net (i.e. connection to the upper level). Number the refdeses of the IO symbols in the same order as you would like the IO nets to be listed in the .SUBCKT line in the output file. (i.e. P1 = first, P2 = second, etc.)</div>
</li>
<li class="level1"><div class="li"> When you are done with the lower level schematic, netlist it in the usual way. For example, if your schematic is called <strong><code>cap_with_parasitics.sch</code></strong>, netlist it by saying: <br/>
<br/>
<strong><code>gnetlist -g spice-sdb -o cap_with_parasitics.cir cap_with_parasitics.sch</code></strong><br/>
<br/>
This will dump the SPICE netlist into the file called “<strong>cap_with_parasitics.cir</strong>“. Visually inspect the .cir file to make sure that netlisting worked correctly.</div>
</li>
<li class="level1"><div class="li"> Next, create a symbol for the upper level schematic which will point to the .SUBCKT. Note that the symbol must have a starting with the letter “X”. To ensure that this happens, do the following:</div>
<ul>
<li class="level2"><div class="li"> Use <strong>gschem</strong> to draw the symbol. I usually draw a box around a model symbol to distinguish it from a normal component. Make any other annotations desired.</div>
</li>
<li class="level2"><div class="li"> In the symbol, make sure that the pins are ordered identically to the order in which you have placed the pins in the .SUBCKT. This is done by editing the symbol with a text editor and setting the <strong><code>pinseq</code></strong> attribute. The netlister will output the pins in the order determined by the <strong><code>pinseq</code></strong> attribute.</div>
</li>
<li class="level2"><div class="li"> Using a text editor, give the symbol a <strong><code>device</code></strong> attribute like “capacitor-model”. Do <strong>not</strong> assign the symbol one of the native device types listed in the appendix! The goal is to create a symbol whose <strong><code>refdes</code></strong> starts with “X”, and if the <strong><code>device</code></strong> is a recognized type, this will not happen.</div>
</li>
<li class="level2"><div class="li"> Using a text editor, give the symbol the <strong><code>refdefs</code></strong> attribute “X?”</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Create the upper level schematic. Place your newly created symbol on the schematic as many times as required and wire up the schematic in the usual way.</div>
</li>
<li class="level1"><div class="li"> To point your symbol to the lower level .SUBCKT, double click on the symbol and set the following attributes:<br/>
<br/>
* <strong><code>file</code></strong> = cap_with_parasitics.cir<br/>
* <strong><code>model-name</code></strong> = cap_with_parasitics<br/>
<br/>
as well as any other attributes required (e.g. <strong><code>refdes</code></strong>).</div>
</li>
<li class="level1"><div class="li"> Now netlist your upper level schematic the usual way. The contents of each .SUBCKT file is dumped into the main netlist. Inspect your netlist visually using a text editor to ensure that it is correct. It is a good idea to pay particular attention to the following:</div>
<ul>
<li class="level2"><div class="li"> Verify that the ordering of the nets connecting the upper level netlist to the lower level .SUBCKT is correct.</div>
</li>
<li class="level2"><div class="li"> Make sure that the upper level model-name and the lower level model name (on the .SUBCKT declaration line) are the same.</div>
</li>
</ul>
</li>
</ol>
<p>
Once the netlist is created, you may simulate your design using any SPICE simulator desired. Some simulators running on Linux are covered below.
</p>
</div>
<!-- SECTION [28677-33217] -->
<h2><a name="spice_netlist_generation" id="spice_netlist_generation">SPICE netlist generation</a></h2>
<div class="level2">
</div>
<!-- SECTION [33218-33254] -->
<h3><a name="using_gnetlist" id="using_gnetlist">Using gnetlist</a></h3>
<div class="level3">
<p>
Once the schematic is captured, a SPICE netlist can be generated running gEDA’s command-line program <strong>gnetlist</strong> on the schematic files. <strong>gnetlist</strong> is architected in two sections: a front-end processor written in C which reads in the .sch file and creates from it an internal, generic representation of your design, and a back-end netlister written in SCHEME. Using this architecture, <strong>gnetlist</strong> is highly customizable; different SCHEME backends are used to write out different netlist formats. The beauty of this scheme (pun intended) is that gEDA users can easily write their own netlisters to suit their own applications. The back-end Scheme file which implements advanced SPICE netlisting is called <strong><code>gnet-spice-sdb.scm</code></strong>, and it lives in the <strong><code>${PREFIX}/geda/share/gEDA/scheme</code></strong> directory.
</p>
<p>
<strong>gnetlist</strong> with <strong>spice-sdb</strong> is invoked from the command line in the following way: <strong><code>gnetlist [OPTIONS] -g spice-sdb filename1 ... filenameN</code></strong>. The following command-line options are available with spice-sdb:
</p>
<pre class="code">-i Interactive scheme mode
-I Put .INCLUDE <filename> in output file instead of model file's contents
-q Quiet mode
-l filename Load scheme file before loading backend
-m filename Load scheme file after loading backend, but still before executing procedure
-g proc Scheme procedure to execute (i.e. spice-sdb)
-o filename Output netlist filename
-c string Execute string as a scheme script
-v Verbose mode on
-s Sort output netlist (for Gnucap)</pre>
</div>
<!-- SECTION [33255-34815] -->
<h3><a name="creating_the_netlist_using_gnetlist_and_spice-sdb" id="creating_the_netlist_using_gnetlist_and_spice-sdb">Creating the netlist using gnetlist and spice-sdb</a></h3>
<div class="level3">
<p>
Creating a netlist from a schematic is easy. To generate a SPICE netlist, just do the following:
</p>
<ul>
<li class="level1"><div class="li"> Save your schematic to <<strong><code>filename.sch</code></strong>></div>
</li>
<li class="level1"><div class="li"> Create the SPICE netlist by doing “<strong><code>gnetlist -g spice-sdb <filename.sch></code></strong>“. The output is a netlist held in the file <strong><code>output.net</code></strong>. Alternatively, if you wish to give your output file a different name, set the output name using the <strong>-o</strong> switch. For example:<br/>
<br/>
<strong><code>gnetlist -g spice-sdb -o amplifier.cir amplifier.sch</code></strong><br/>
<br/>
takes the design schematic called “<strong><code>amplifier.sch</code></strong>” and outputs a SPICE netlist named “<strong><code>amplifier.cir</code></strong>“.</div>
</li>
<li class="level1"><div class="li"> Inspect your SPICE netlist using a text editor. Verify that there are no missing attributes or other netlist problems.</div>
</li>
</ul>
</div>
<!-- SECTION [34816-35609] -->
<h3><a name="common_netlisting_problems" id="common_netlisting_problems">Common netlisting problems</a></h3>
<div class="level3">
<p>
The following list attempts to catalog common problems with the netlist and the associated fixes:
</p>
<ul>
<li class="level1"><div class="li"> ERROR_INVALID_<acronym title="Personal Identification Number">PIN</acronym>:<br/>
This can happen if the symbol’s <strong><code>pinseq</code></strong> attributes don’t start at 1, or have gaps in the numbering. This must be fixed by editing the symbol itself in a text editor.</div>
</li>
<li class="level1"><div class="li"> ERROR: In procedure caddr:<br/>
This error is quite common. It usually occurs when you forget to add a mandatory attribute. To rectify the problem, try running gnetlist in verbose mode (<strong><code>gnetlist -v -g spice-sdb <filename.sch></code></strong>). The netlister will stop processing and bomb out at the part with the missing attribute. Having therefore identified the offending part, you can re-open the schematic in gnetlist and fix the attributes.</div>
</li>
</ul>
<p>
Finally, remember that it is important to manually inspect your SPICE netlist prior to using it in simulation. Please keep in mind that the netlister is still “beta” quality, and some problems may still exist in netlist generation.
</p>
</div>
<!-- SECTION [35610-36615] -->
<h2><a name="spice_simulation" id="spice_simulation">SPICE simulation</a></h2>
<div class="level2">
<p>
There are several options for doing SPICE simulations under GNU/Linux; I will highlight three:
</p>
<ul>
<li class="level1"><div class="li"> <strong>LTSpice</strong>, which is a freeware SPICE simulator originally released by Linear Technologies as a component selection/design tool running under Windows. Because its SPICE engine is very fast and powerful, it has become a popular SPICE simulator amongst hobbyists and design engineers who prefer to use free tools. Originally written for Windows, LTSpice has been tweaked to run under GNU/Linux using wine; I recommend using it if you need a robust, professional-quality SPICE simulator.</div>
</li>
<li class="level1"><div class="li"> <strong>Ngspice</strong>, which is the “official” SPICE simulator of the gEDA suite. Ngspice is a revival of the SPICE 3 code for Linux. It provides a simulation engine, a command-line driven front-end, and the capability to plot simulation results graphically under the X Windows System. Ngspice is Linux-native and open-source. It is the SPICE of choice for those who want to do SPICE simulations easily on Linux, or want to hack and improve SPICE’s internals.</div>
</li>
<li class="level1"><div class="li"> <strong>Tclspice</strong>, is a fork off the ngspice development path. Tclspice is a superset of ngspice which (in theory) exports the SPICE command set to a TCL <acronym title="Application Programming Interface">API</acronym>, allowing you to embed SPICE analyses into a TCL program. This is useful for automating a design optimization, amongst other things. Tclspice is the simulator to use if you are interested in advanced, scripted design.</div>
</li>
</ul>
<p>
There is also a <acronym title="GNU General Public License">GPL</acronym>‘ed simulator called <strong>gnucap</strong>, which is based upon (or is the descendant of) Al’s Circuit Simulator (<strong><code>ACS</code></strong>). I haven’t used it very much; information about gnucap is therefore TBD.
</p>
</div>
<!-- SECTION [36616-38268] -->
<h3><a name="ltspice" id="ltspice">LTSpice</a></h3>
<div class="level3">
<p>
LTSpice was written by Mike Englehardt and others at Linear Technologies, and is given away by LinearTech as a design aid for engineers wishing to simulate the performance of LinearTech’s switch mode power supply controllers. The package incorporates a schematic capture front end, fast and powerful SPICE engine, and the capability for plotting the results of many different types of SPICE analysis. Personally, I think the schematic capture front-end is hard to use and clunky; <strong>gschem</strong> knocks its socks off for ease of use and features. However, the SPICE engine and analysis stuff in LTSpice is simply great.
</p>
<p>
LTSpice was originally developed to run under Windows, but Mike has tweaked it so that it runs fairly well on GNU/Linux under wine. (Only the help menu system is broken – the rest of the package runs well). Another good feature of LTSpice is that it is well supported – Mike reads the newsgroup <strong><code>sci.electronics.cad</code></strong> regularly and is generally happy to help people who experience problems with it. Therefore, despite its Windoze heritage, I recommend LTSpice as a powerful, professional-quality simulation and analysis back end for gEDA.
</p>
</div>
<h4><a name="installation_and_configuration_of_ltspice" id="installation_and_configuration_of_ltspice">Installation and configuration of LTSpice</a></h4>
<div class="level4">
<p>
To install and configure LTSpice, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Download and install wine. I have had success using Wine-20030219. Later versions probably also work.</div>
</li>
<li class="level1"><div class="li"> Download LTSpice. It is available under <a href="http://www.linear.com/software" class="urlextern" title="http://www.linear.com/software" rel="nofollow">http://www.linear.com/software</a> under the name SwitcherCAD-III.</div>
</li>
<li class="level1"><div class="li"> Run the LTSpice installer under wine.</div>
</li>
</ol>
</div>
<h4><a name="running_ltspice_with_geda_designs" id="running_ltspice_with_geda_designs">Running LTSpice with gEDA designs</a></h4>
<div class="level4">
<p>
LTSpice can read a file holding a gEDA SPICE netlist. I have had success doing LTSpice simulations in the following way:
</p>
<ol>
<li class="level1"><div class="li"> First of all, make sure that you are logged in as a normal user – Wine doesn’t like to run when invoked by root.</div>
</li>
<li class="level1"><div class="li"> Create a file in your project directory called “Simulation.cmd”. In this file place your spice analysis commands (e.g. .OP, .AC, .DC, etc.)</div>
</li>
<li class="level1"><div class="li"> Place a SPICE include block into your schematic. For the file attribute, type in “Simulation.cmd”.</div>
</li>
<li class="level1"><div class="li"> Netlist your design.</div>
</li>
<li class="level1"><div class="li"> Create a link from your netlist <strong><code>output.net</code></strong> and a netlist in the directory in which SwCADIII lives. Make the netlist suffix <strong><code>.cir</code></strong>. For example:<br/>
<br/>
ln -s ${DESIGN_HOME}/output.net ${WINE_HOME}/.wine/fake_windows/Program Files/LTC/SwCADIII/MyDesign.cir<br/>
<br/>
</div>
</li>
<li class="level1"><div class="li"> Run LTSpice: cd into the directory where SwCADIII lives and say “<strong><code>wine scad3.exe</code></strong>”</div>
</li>
<li class="level1"><div class="li"> From the SwCADIII <acronym title="Graphical User Interface">GUI</acronym>, do: <strong><em>File</em></strong> → <strong><em>Open</em></strong> → <strong><em>(files of type netlist [.cir])</em></strong>, and select your file.</div>
</li>
<li class="level1"><div class="li"> Run the simulator by clicking on the run button, or doing: <strong><em>Simulate</em></strong> → <strong><em>Run</em></strong>.</div>
</li>
<li class="level1"><div class="li"> Select the variables to graph, and then click OK. SwCADIII does the rest of the work.</div>
</li>
</ol>
<p>
Naturally, it is very important to play around with LTSpice to understand how to use it effectively, but the above description should suffice to get you started.
</p>
</div>
<!-- SECTION [38269-41208] -->
<h3><a name="ngspice" id="ngspice">Ngspice</a></h3>
<div class="level3">
<p>
Ngspice was started at the University of Rome “La Sapienza” by Paolo Nenzi as an attempt to create a <acronym title="GNU General Public License">GPL</acronym>‘ed version of the standard Berkeley SPICE version 3 by re-writing the entire SPICE package. Plans were also laid to create better, more robust computational algorithms for the simulation engine. More information is available at the ngspice website: <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/" rel="nofollow">http://ngspice.sourceforge.net/</a>. In light of his lofty plans, what Paolo did, however, was a little different: He took the SPICE 3 code which had been floating around the internet for many years, refactored it, and hacked the build system so that it would compile using the normal GNU make procedure. This was a major achievement for which Paolo deserves great praise. Unfortunately, from the look of the webpage, development on <strong>ngspice</strong> seems to have ceased at the end of 2001. Indeed, development did slow down considerably after 2001, but recently Paolo has been working on <strong>ngspice</strong> again. He released the latest version, <strong>ngspice-rework-15</strong>, in February 2004. This version is available only on the Sourceforge download page; Paolo hasn’t updated the rest of the project’s website.
</p>
</div>
<h4><a name="installation_and_configuration_of_ngspice" id="installation_and_configuration_of_ngspice">Installation and configuration of ngspice</a></h4>
<div class="level4">
<p>
I generally find it best to download, configure, and compile the source of <strong>ngspice</strong> instead of trying to install a binary package. That’s the approach I outline here.
</p>
</div>
<h4><a name="downloading_the_source_code" id="downloading_the_source_code">Downloading the source code</a></h4>
<div class="level4">
<p>
Get the latest distribution from: <a href="http://sourceforge.net/projetcs/ngspice" class="urlextern" title="http://sourceforge.net/projetcs/ngspice" rel="nofollow">http://sourceforge.net/projetcs/ngspice</a>. Make sure that you get the latest version for best performance and the most features. As of May 2004, the latest release is <strong>ngspice-rework-15</strong>. Install the source in the place you typically put your sources. I like to keep my gEDA sources in a separate directory, for example <strong><code>/usr/local/geda/sources/ngspice</code></strong>. You might adopt a similar system.
</p>
</div>
<h4><a name="extracting_the_source_code" id="extracting_the_source_code">Extracting the source code</a></h4>
<div class="level4">
<p>
The source code you downloaded is distributed in a “tarball”, a compressed archive. You have to extract archived files by doing:
</p>
<pre class="code">user@host:~$ cd <directory where you want to extract the source>
user@host:~sources$ tar -xvzf </path/to/package.tar.gz>
user@host:~sources$ cd <extracted dir></pre>
<p>
At this point you are in the top level directory of ngspice. Read the usual files, like <strong><code>README</code></strong>, and <strong><code>INSTALL</code></strong>, to learn about the simulator and the installation process. Reading <strong><code>NOTES</code></strong> file is also a good idea; it holds information valuable if you want to hack or debug features present in ngspice.
</p>
</div>
<h4><a name="configuration_and_compilation_of_ngspice" id="configuration_and_compilation_of_ngspice">Configuration and compilation of ngspice.</a></h4>
<div class="level4">
<p>
Ngspice uses the typical “<strong><code>configure && make && make install</code></strong>” sequence used by other GNU software. There are numerous configure time options available for ngspice. A complete listing with attendant documentation is TBD; the best way to see them all is to look at <strong><code>configure.ac</code></strong> itself. Many of the configure time options pertain to debugging the simulator, or are to enable experimental analyses. For newbies, three configure time options are worth mentioning:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>–enable-xspice</code></strong>: This flag compiles in support for XSpice extensions. These extensions allow you to define devices whose behavior is given by arbitrary “code models”. Arguably, the most important code model is <strong><code>spice2poly</code></strong>, which is a model which translates SPICE2 style POLY constructs into an XSpice model usable by SPICE 3.</div>
</li>
<li class="level1"><div class="li"> <strong><code>–with-readline</code></strong>: This flag compiles GNU readline support into <strong>ngspice</strong>, which means that you can use emacs-style key commands, as well as the arrow keys to move around in the command line interface (CLI). Without this feature, the command line interface can be hostile, meaning that if you make a mistake in typing a long command, you have no choice but to type it all over again. Paolo discourages use of the readline feature because it mixes <acronym title="GNU General Public License">GPL</acronym> code (readline) with BSD code (<strong>ngspice</strong>), but he left the option open to other to decide for themselves how pure they wanted to be.</div>
</li>
<li class="level1"><div class="li"> <strong><code>–prefix</code></strong>: This flag point to the base directory where you want your binaries to be installed.</div>
</li>
</ul>
<p>
Before you run configure, you should check the options you want to include, a brief description is given in appendix TBD. Once ready type:
</p>
<pre class="code">user@host:~sources/<tld>$./configure --enable-xspice --with-readline --prefix=/usr/local/geda <other configure options></pre>
<p>
Of course, “<strong><code>–prefix=</code></strong>” should point to the place where you put <strong>your</strong> gEDA stuff. After issuing the command, your simulator is configured and ready to be compiled. Compilation is straightforward:
</p>
<pre class="code">user@host:~sources/<tld>$ make && make install</pre>
<p>
As always, you will probably need to be root in order to install the packages in a public directory, in such case you should do:
</p>
<pre class="code">user@host:~sources/<tld>$ make
user@host:~sources/<tld>$ su -c make install</pre>
</div>
<h4><a name="testing_the_installation" id="testing_the_installation">Testing the installation</a></h4>
<div class="level4">
<p>
At this point, you should be able to use ngspice. You can test your installation by trying one of the test circuits held in the tests directory. I recommend running the TransImpedanceAmp test, since it tests the SPICE2 POLY functionality.
</p>
</div>
<h4><a name="using_ngspice" id="using_ngspice">Using ngspice</a></h4>
<div class="level4">
<p>
Running ngspice is very simple. Just issue the command:
</p>
<pre class="code">user@host:~$ ngspice filename.net</pre>
<p>
at the unix command prompt, and ngspice will load the SPICE netlist called <strong><code>filename.net</code></strong> into its workspace, and leave you at an ngspice command prompt. You can run the simulator by saying “run”. Your results will be stored in SPICE vectors for later printing or plotting. The command set available to you is documented at: <a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5" rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5</a>
</p>
<p>
To make use of the SPICE2 POLY codemodel, you need to load it into <strong>ngspice</strong> <strong><em class="u">before</em></strong> you load your netlist. (If you load it after loading your netlist, POLYs in your netlist are not translated, and therefore won’t be simulated correctly.) To load the codemodel, just say:
</p>
<pre class="code">codemodel /usr/local/geda/lib/spice/spice2poly.cm</pre>
<p>
(or wherever you put your codemodels) at the ngspice prompt. Note that you must provide the <strong>absolute path</strong> to the location of the codemodel; ngspice isn’t smart enough to look for it in any default locations. (Also note that you should specify the location where <strong><code>spice2poly.cm</code></strong> lives on your machine; the path above is for mine).
</p>
<p>
A better way to read in the <strong><code>spice2poly</code></strong> codemodel is to include it in the ngspice initialization file, <strong><code>spinit</code></strong>. The initialization file lives in the directory <strong><code>/usr/local/geda/share/ng-spice-rework/scripts</code></strong> (or where ever you placed your gEDA installation). Other ngspice customizations may also be placed into the <strong><code>spinit</code></strong> file.
</p>
</div>
<!-- SECTION [41209-47913] -->
<h3><a name="tclspice" id="tclspice">Tclspice</a></h3>
<div class="level3">
<p>
While the main branch of ngspice development hibernated in 2002, some friendly people at MultiGig Ltd. (<a href="http://www.multigig.com/" class="urlextern" title="http://www.multigig.com/" rel="nofollow">http://www.multigig.com/</a>) were busy developing a branch of ngspice which they called <strong>tclspice</strong>. Tclspice is a superset of ngspice in which much of the SPICE command set is exported as an <acronym title="Application Programming Interface">API</acronym> to TCL. The purpose of this is to facilitate scripting of SPICE analyses. This is a very powerful tool: With tclspice you can write a TCL script which runs a loop, tweaks component values, runs an analysis, and then evaluates the circuit performance with the tweaked components before looping again. Obviously, this ability can be used to perform automated, multi-dimensional circuit optimization. When complete, tclspice might possibly become a “killer-app” for open-source EDA.
</p>
</div>
<h4><a name="downloading_installing_and_building_tclspice" id="downloading_installing_and_building_tclspice">Downloading, installing, and building tclspice</a></h4>
<div class="level4">
<p>
Tclspice’s project homepage is at: <a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/" rel="nofollow">http://tclspice.sourceforge.net/</a>. The tclspice source lives at <a href="http://sourceforge.net/projects/tclspice" class="urlextern" title="http://sourceforge.net/projects/tclspice" rel="nofollow">http://sourceforge.net/projects/tclspice</a>. Download and installation of tclspice follow the same steps as those detailed for ngspice above. Since tclspice is a superset of ngspice, you can install ngspice alone from the tclspice sources if desired. To build the entire package requires a couple of extra steps. Here, I present a series of steps which will build both ngspice (the stand-alone, CLI driven program) and the TCL <acronym title="Application Programming Interface">API</acronym> from the tclspice source.
</p>
<p>
Before building tclspice, you need to have the following packages already installed:
</p>
<ul>
<li class="level1"><div class="li"> TclX (tclx8.3.5 works for me.)</div>
</li>
<li class="level1"><div class="li"> tclreadline (tclreadline-2.1.0 works for me.)</div>
</li>
<li class="level1"><div class="li"> BLT for TCL (blt2.4z works for me.)</div>
</li>
<li class="level1"><div class="li"> TCL/Tk (8.4.3. works for me)</div>
</li>
</ul>
<p>
If you don’t have these packages already on your Linux box, you need to get and build them. Note that building TclX requires having the sources for TCL and Tk, so you will also need to get those sources if you don’t have them installed already. I am running successfully with TCL/Tk 8.4.3, although 8.3.X versions are also supposed to work. Also, if you want to run spice in the background you need to recompile TCL and Tk to enable thread support if they haven’t got it enabled already (redhat packages haven’t).
</p>
<p>
Assuming you have downloaded and installed the additional packages mentioned above, the following steps will build both ngspice and the TCL <acronym title="Application Programming Interface">API</acronym> on your machine:
</p>
<pre class="code">user@host:~sources/<tld>$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda
user@host:~sources/<tld>$ make && make install (this makes and installs regular old ngspice)
user@host:~sources/<tld>$ ./configure --enable-xspice --prefix=/usr/local/geda --enable-tcl --enable-experimental --disable-shared
user@host:~sources/<tld>$ make tcl && make install-tcl</pre>
<p>
As always, you will probably need to be root in order to install the packages in a public directory, in such case you should do:
</p>
<pre class="code">user@host:~sources/<tld>$ su -c make install
user@host:~sources/<tld>$ su -c make install-tcl</pre>
<p>
to install your packages. Now you will be ready to write TCL scripts which incorporate SPICE commands. Information about using tclspice is given below. Finally, if you are interested in hacking tclspice (or even if you are not), it’s a good idea to read the <strong><code>NOTES</code></strong> file living in the top source directory for a couple of useful pointers.
</p>
</div>
<h4><a name="use_of_tclspice" id="use_of_tclspice">Use of tclspice</a></h4>
<div class="level4">
<p>
Tclspice is designed to export SPICE commands to TCL programs. To use tclspice, you just need to say “<strong><code>package require spice</code></strong>” at the beginning of your TCL program. Thereafter, to invoke a SPICE command, you just call it in the spice namespace. For example, the following TCL program will read in a SPICE netlist, command a transient analysis, run the simulation, and then plot the voltage observed over time on net Vout:
</p>
<pre class="code">#! tclsh
package require spice
spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm
spice::source netlistname.cir
spice::tran 0.1ns 40ns
spice::run
spice::plot Vout
puts "All done now!"</pre>
<p>
Note that since tclspice doesn’t read the ngspice initialization file <strong><code>spinit</code></strong>, you will need to put any initialization commands directly into the TCL program. For example, in the above example we read the spice2poly codemodel directly into the workspace. Many other commands are also available; the entire tclspice commandset is documented at: <a href="http://tclspice.sourceforge.net/docs/tclspice_com.html" class="urlextern" title="http://tclspice.sourceforge.net/docs/tclspice_com.html" rel="nofollow">http://tclspice.sourceforge.net/docs/tclspice_com.html</a>
</p>
</div>
<h4><a name="tclspice_problems" id="tclspice_problems">Tclspice problems</a></h4>
<div class="level4">
<p>
A major problem with tclspice (which was inherited from ngspice) is that it leaks memory. Therefore, the time over which you may run a simulation is limited. This means that if you want to do an optimization by looping through a circuit many, many times, you may run out of memory before your program has completed its optimization. This is a known issue with tclspice, and efforts are underway to plug the leaks.
</p>
<p>
Meanwhile, there are some workarounds which can be used on moderate-sized designs to facilitate long optimization runs. One method I have employed is to have the optimizer write its current state into a file after every circuit analysis, and read its starting state from the same file. The optimizer also stores the current list of best components in another file, and reads this file at the start of every run. Then, I have a TCL program called <strong><code>TaskMgr.tcl</code></strong> which runs in a loop; at each iteration of the loop it forks a child process to run the optimizer. Meanwhile, the parent process waits for 5 minutes (a heuristically determined time), and then issues a “KILL” signal to the child before looping and starting the optimizer again. This way, the optimizer never runs long enough to consume all the memory in my machine. The <strong><code>TaskMgr.tcl</code></strong> program is shown here:
</p>
<pre class="code">#! tclsh
package require Tclx
while {1} {
set PID [fork]
if {$PID} {
# Parent
after 300000
puts "About to kill child PID = $PID . . . ."
kill $PID
wait $PID
} else {
# Child
source Optimize.tcl
# If we ever get through this, we can print out the following:
error "We are done now!!!!!!"
}
}</pre>
<p>
Note that <strong><code>TaskMgr.tcl</code></strong> needs the TclX package you already installed to run tclspice. Also, you may want to change the wait time to a different value depending upon the memory and speed of your machine. Finally, the parent has to wait on $PID because that causes the child process’s corpse to be taken off the Linux kernel’s task list when it dies. Otherwise, you will end up with a lot of zombie processes lurking around your machine as the optimizer runs – a long optimization could turn your system into “the night of the living dead”!
</p>
<p>
This method of waiting a specific amount of time for the child process is preferable if a single analysis run takes a relatively short time compared to the time required to eat all memory in the machine. If the analysis time is comparable to the time taken to eat all memory in the machine, a better approach is to have the parent keep track of the analysis state, kick off a single analysis run, and then have the run terminate after every iteration. Whether this is preferable depends upon the size and complexity of your design; you may want to experiment with your analysis to see just how long it takes and how much memory it consumes. I have found that a design comprised of six op amps (with corresponding vendor models) and 50 or so passives will run in under 10 seconds on a PIII 333MHz with 128MB RAM. Therefore, your design must be very big before a single analysis will eat a significant amount of RAM.
</p>
</div>
<!-- SECTION [47914-55445] -->
<h1><a name="appendix_a" id="appendix_a">Appendix A</a></h1>
<div class="level1">
<p>
<strong>Native components and their attributes</strong>
</p>
<p>
Presented in table 1 are the devices and associated attributes used with spice-sdb. Bold faced attributes are required, normal typeface attributes are optional. Note that the <strong><code>device</code></strong> attribute is invisible, and is normally attached to the symbol when it is created. The other attributes are attached to the symbol during schematic capture using <strong>gschem</strong>.
</p>
<p>
When dealing with simple actives (diodes, transistors) having SPICE models held in files, you only need to set the <strong><code>model-name</code></strong> and <strong><code>file</code></strong> attributes; you don’t need to set the <strong><code>model</code></strong> attribute. However, if your simple active has a one-line SPICE model which you wish to enter directly into the schematic, then set the <strong><code>model</code></strong> and <strong><code>model-name</code></strong> attribures; you don’t need to set the <strong><code>file</code></strong> attribute.
</p>
<table class="inline">
<tr>
<th>device</th><th>refdes</th><th>value</th><th>model</th><th>file</th><th>model-name</th><th>type</th><th>comment</th>
</tr>
<tr>
<td>RESISTOR</td><td class="centeralign"> R? </td><td class="centeralign"> (4) </td><td class="centeralign"> (2) </td><td class="centeralign"> - </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (11) </td>
</tr>
<tr>
<td>CAPACITOR</td><td class="centeralign"> C? </td><td class="centeralign"> (4) </td><td class="centeralign"> (3) </td><td class="centeralign"> - </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (11) </td>
</tr>
<tr>
<td>POLARIZED_CAPACITOR</td><td class="centeralign"> C? </td><td class="centeralign"> (4) </td><td class="centeralign"> (3) </td><td class="centeralign"> - </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (11) </td>
</tr>
<tr>
<td>INDUCTOR</td><td class="centeralign"> L? </td><td class="centeralign"> (4) </td><td class="centeralign"> (3) </td><td class="centeralign"> - </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (11) </td>
</tr>
<tr>
<td>SPICE-ccvs</td><td class="centeralign"> H? </td><td class="centeralign"> (5) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="rightalign"> </td>
</tr>
<tr>
<td>SPICE-cccs</td><td class="centeralign"> F? </td><td class="centeralign"> (5) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="rightalign"> </td>
</tr>
<tr>
<td>SPICE-vscs</td><td class="centeralign"> E? </td><td class="centeralign"> (5) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="rightalign"> </td>
</tr>
<tr>
<td>SPICE-vccs</td><td class="centeralign"> G? </td><td class="centeralign"> (5) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="rightalign"> </td>
</tr>
<tr>
<td>SPICE-nullor</td><td class="centeralign"> E? </td><td class="centeralign"> (5) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="rightalign"> </td>
</tr>
<tr>
<td>DIODE</td><td class="centeralign"> D? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>PMOS_TRANSISTOR</td><td class="centeralign"> M? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>NMOS_TRANSISTOR</td><td class="centeralign"> M? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>PNP_TRANSISTOR</td><td class="centeralign"> Q? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>NPN_TRANSISTOR</td><td class="centeralign"> Q? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>PFET_TRANSISTOR</td><td class="centeralign"> J? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>NFET_TRANSISTOR</td><td class="centeralign"> J? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>MESFET_TRANSISTOR</td><td class="centeralign"> B? </td><td class="centeralign"> Part number </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> Model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>IC</td><td class="centeralign"> U? </td><td class="centeralign"> Part number </td><td class="rightalign"> </td><td class="centeralign"> .model file name </td><td class="centeralign"> Name of model </td><td class="centeralign"> - </td><td class="centeralign"> For IC with .model file </td>
</tr>
<tr>
<td>IC</td><td class="centeralign"> X? </td><td class="centeralign"> Part number </td><td class="rightalign"> </td><td class="centeralign"> .subckt file name </td><td class="centeralign"> Name of .subckt </td><td class="centeralign"> - </td><td class="centeralign"> For IC with .subckt file </td>
</tr>
<tr>
<td>model</td><td class="centeralign"> A? </td><td class="centeralign"> - </td><td class="centeralign"> One line SPICE model </td><td class="centeralign"> .model file name </td><td class="centeralign"> (9) </td><td class="centeralign"> (10) </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>include</td><td class="centeralign"> A? </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> .include file name </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> (13) </td>
</tr>
<tr>
<td>options</td><td class="centeralign"> A? </td><td class="centeralign"> (8) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> (13) </td>
</tr>
<tr>
<td>directive</td><td class="centeralign"> A? </td><td class="centeralign"> (1) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> (12) </td>
</tr>
<tr>
<td>VOLTAGE_SOURCE</td><td class="centeralign"> V? </td><td class="centeralign"> (6) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> Independent voltage source </td>
</tr>
<tr>
<td>CURRENT_SOURCE</td><td class="centeralign"> I? </td><td class="centeralign"> (7) </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> - </td><td class="centeralign"> Independent current source </td>
</tr>
</table>
<br />
<p>
(1) One line string holding SPICE statements for inclusion in netlist<br/>
(2) One line of SPICE model parameters (e.g. TC, etc.)<br/>
(3) One line of SPICE model parameters (e.g. IC, POLY, etc.)<br/>
(4) Component numeric value<br/>
(5) String describing source behavior<br/>
(6) One line string holding voltage source behavior<br/>
(7) One line string holding current source behavior<br/>
(8) line of options to include<br/>
(9) Name of model pointed to by other components<br/>
(10) Corresponding SPICE model type (valid types given below)<br/>
(11) Model parameters are placed inside parentheses after component value<br/>
(12) For modeling, one must include either model or file<br/>
(13) Places .include directive in SPICE netlist<br/>
</p>
<p>
“Native to the netlister” means that there is a corresponding blob of scheme code which knows exactly how to handle these components and is guaranteed (almost) to generate correct spice code. Symbols having “device” attributes not on the above list are handled using the scheme function “spice-sdb:write-default-component”, which looks at the refdes of the component to make a decision about how to treat the component. In general, this function will “do the right thing” when generating spice code, but it is not guaranteed. In particular, this function cannot distinguish between N and P type transistors, and will generate an <unknown> type for the .MODEL string in the netlist. This will probably cause your SPICE simulator to barf. Therefore, it is best to make sure that all devices used have the proper “device” attribute.
</p>
</div>
<!-- SECTION [55446-60117] -->
<h1><a name="appendix_b" id="appendix_b">Appendix B</a></h1>
<div class="level1">
<p>
<strong>Valid “type” values.</strong>
</p>
<p>
The “type” attribute is a flag signaling the spice engine the component type, and prepares it to accept model parameters specific to that component type. The following values are valid SPICE “type”s:
</p>
<table class="inline">
<tr>
<th class="centeralign"> Component </th><th class="centeralign"> “type” </th><th class="centeralign"> Comment </th>
</tr>
<tr>
<td class="centeralign"> RESISTOR </td><td class="centeralign"> RES </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> CAPACITOR </td><td class="centeralign"> CAP </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> POLARIZED_CAPACITOR </td><td class="centeralign"> CAP </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> INDUCTOR </td><td class="centeralign"> IND </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> DIODE </td><td class="centeralign"> D </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> PMOS_TRANSISTOR </td><td class="centeralign"> PMOS </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> NMOS_TRANSISTOR </td><td class="centeralign"> NMOS </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> PNP_TRANSISTOR </td><td class="centeralign"> PNP </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> NPN_TRANSISTOR </td><td class="centeralign"> NPN </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> PFET_TRANSISTOR </td><td class="centeralign"> PJF </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> NFET_TRANSISTOR </td><td class="centeralign"> NJF </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> MESFET_TRANSISTOR </td><td class="centeralign"> - </td><td class="rightalign"> </td>
</tr>
</table>
<br />
<p>
Table 2: Valid “type” attributes for components.
</p>
</div>
<!-- SECTION [60118-] --><div class="footnotes">
<div class="fn"><a href="#fnt__1" id="fn__1" name="fn__1" class="fn_bot">1)</a>
This HOWTO is released under the GNU Free Documentation License thanks to the generosity of Electroniscript, inc. The most recent copy can always be found at <a href="http://www.brorson.com/gEDA/HOWTO/" class="urlextern" title="http://www.brorson.com/gEDA/HOWTO/" rel="nofollow">http://www.brorson.com/gEDA/HOWTO/</a></div>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_cygwin.html
Index: geda_cygwin.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:cygwin</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:cygwin?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:cygwin?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:cygwin?do=export_raw" />
<meta name="date" content="2006-06-27T09:50:25-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="installing_geda_gaf_on_windows_-_the_cygwin_way" id="installing_geda_gaf_on_windows_-_the_cygwin_way">Installing gEDA/gaf on Windows - the Cygwin way</a></h1>
<div class="level1">
<p>
This guide describes one way to build gEDA/gaf (gschem and friends) on the Windows operating system. It uses Cygwin as the layer between Windows and the *nix world (ie gcc, make, bash etc...).
</p>
</div>
<!-- SECTION [1-257] -->
<h2><a name="instructions" id="instructions">Instructions</a></h2>
<div class="level2">
<p>
1. Download and run setup.exe from cygwin website: <a href="http://www.cygwin.com/" class="urlextern" title="http://www.cygwin.com" rel="nofollow">http://www.cygwin.com</a>.
</p>
<p>
In the package selection dialog, select the following packages:
</p>
<p>
(Hint: press the “view” button once to arrange the list in alphabetical order)
</p>
<pre class="code">atk-devel
file
gcc
gtk2-x11-devel
guile-devel
make
pango-devel
patchutils
pcre-devel
pcre-doc
pkg-config
xorg-x11-devel
xorg-x11-fscl
xterm</pre>
<p>
2. Append these lines to your .bash_profile:
</p>
<pre class="code">export LD_LIBRARY_PATH=$HOME/geda/lib:$LD_LIBRARY_PATH
export PATH=$HOME/geda/bin:$PATH
export PKG_CONFIG_PATH=$HOME/geda/lib/pkgconfig:$PKG_CONFIG_PATH</pre>
<p>
Update your environment:
</p>
<pre class="code">$ source .bash_profile</pre>
<p>
3. Go to the <a href="http://www.geda.seul.org/sources.html" class="urlextern" title="http://www.geda.seul.org/sources.html" rel="nofollow">gEDA sources download page</a>.
</p>
<p>
From the gEDA/gaf group, download <strong>only</strong> the packages which have a date as its version (like 20060123). The necessary dependencies where already installed in step 1.
</p>
<p>
4. Download <a href="http://sourceforge.net/tracker/download.php?group_id=161080&atid=818428&file_id=182795&aid=1511658" class="urlextern" title="http://sourceforge.net/tracker/download.php?group_id=161080&atid=818428&file_id=182795&aid=1511658" rel="nofollow">cygwin.patch</a> in the same folder as the above.
</p>
<p>
5. Go to the download directory and type:
</p>
<pre class="code">$ make open
$ patch -p1 < cygwin.patch
$ make install
( ...patience... )</pre>
<p>
6. Now, to properly view the documentation from the help menu of gschem:
</p>
<p>
Locate the executables of your browser and <acronym title="Portable Document Format">PDF</acronym> reader and create links from /usr/bin. Examples:
</p>
<pre class="code">$ ln -s "c:\Program Files\Internet Explorer\iexplore.exe" /usr/bin/iexplore
$ ln -s "c:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" /usr/bin/acroread</pre>
<p>
Try:
</p>
<pre class="code">$ iexplore
( Microsoft Internet Explorer appears )
$ acroread
( Adobe Acrobat Reader appears )
$ gschemdoc -m
( gEDA/gaf documentation appears )</pre>
<p>
7. Finally, before running gschem:
</p>
<pre class="code">$ startx</pre>
<p>
Have fun!
</p>
</div>
<!-- SECTION [258-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_documentation.html
Index: geda_documentation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:documentation</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:documentation?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:documentation?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:documentation?do=export_raw" />
<meta name="date" content="2006-05-20T12:37:40-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_tool_suite_on-line_documentation" class="toc">gEDA Tool Suite on-line documentation</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#for_document_authors" class="toc">For document authors</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gschem_-_schematic_capture" class="toc">gschem - Schematic Capture</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gnetlist_-_netlister" class="toc">gnetlist - Netlister</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gsymcheck_-_symbol_checker" class="toc">gsymcheck - Symbol Checker</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#utils_-_geda_utilities" class="toc">utils - gEDA Utilities</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#examples" class="toc">Examples</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#attribute_file_format_details" class="toc">Attribute/File Format Details</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#spice" class="toc">SPICE</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#ngspice" class="toc">ngspice</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gnucap" class="toc">gnucap</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gspiceui" class="toc">gSpiceUI</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#pcb" class="toc">PCB</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gerbv" class="toc">gerbv</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#icarus_verilog" class="toc">Icarus Verilog</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#gtkwave" class="toc">GTKWave</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#wcalc" class="toc">Wcalc</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#mcalc" class="toc">mcalc</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#covered" class="toc">covered</a></span></div></li></ul>
</div>
</div>
<h1><a name="geda_tool_suite_on-line_documentation" id="geda_tool_suite_on-line_documentation">gEDA Tool Suite on-line documentation</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-53] -->
<h2><a name="for_document_authors" id="for_document_authors">For document authors</a></h2>
<div class="level2">
<p>
New features are available for document authors:
</p>
<ul>
<li class="level1"><div class="li"> <a href="geda_syntax_features.html" class="wikilink1" title="geda:syntax_features">Syntax features</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_installed_plugins.html" class="wikilink1" title="geda:installed_plugins">Installed plugins</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_style_guide.html" class="wikilink1" title="geda:style_guide">Style Guide</a> – A work in progress, please contribute</div>
</li>
</ul>
</div>
<!-- SECTION [54-262] -->
<h2><a name="gschem_-_schematic_capture" id="gschem_-_schematic_capture">gschem - Schematic Capture</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="geda_gschem_ug.html" class="wikilink1" title="geda:gschem_ug">gschem User's Guide</a> – In transition, please comment</div>
</li>
<li class="level1"><div class="li"> <a href="geda_gschem_mp.html" class="wikilink1" title="geda:gschem_mp">gschem man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_scg.html" class="wikilink1" title="geda:scg">Symbol Creation Guide</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_hse_howto.html" class="wikilink1" title="geda:hse_howto">Hooks/Scheme Extension HOWTO</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_kig_howto.html" class="wikilink1" title="geda:kig_howto">Keymapping in gschem HOWTO</a></div>
</li>
</ul>
</div>
<!-- SECTION [263-558] -->
<h2><a name="gnetlist_-_netlister" id="gnetlist_-_netlister">gnetlist - Netlister</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="geda_gnetlist_ug.html" class="wikilink1" title="geda:gnetlist_ug">gnetlist User's Guide</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gnetlist_mp.html" class="wikilink1" title="geda:gnetlist_mp">gnetlist man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_sdb_howto.html" class="wikilink1" title="geda:sdb_howto">Spice netlisting (SDB) HOWTO</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_na_howto.html" class="wikilink1" title="geda:na_howto">net= attribute mini-HOWTO</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_ssan.html" class="wikilink1" title="geda:ssan">Switcap Symbols and Netlister</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_sn_readme.html" class="wikilink1" title="geda:sn_readme">Switcap netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_fbabgapp.html" class="wikilink1" title="geda:fbabgapp">Forward/Backward Annotation Between gEDA and Pads PowerPCB</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_grcsan.html" class="wikilink1" title="geda:grcsan">gEDA RF Cascade Symbols and Netlister</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_bom_readme.html" class="wikilink1" title="geda:bom_readme">Bill of Material netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gschem2pcb_readme.html" class="wikilink1" title="geda:gschem2pcb_readme">gschem2pcb README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_verilog_netlister_readme.html" class="wikilink1" title="geda:verilog_netlister_readme">Verilog netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_vhdl_netlister_readme.html" class="wikilink1" title="geda:vhdl_netlister_readme">VHDL netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_vams_netlister_readme.html" class="wikilink1" title="geda:vams_netlister_readme">VAMS netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_systemc_netlister_readme.html" class="wikilink1" title="geda:systemc_netlister_readme">SystemC netlister README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_eagle_pcb_netlister_readme.html" class="wikilink1" title="geda:eagle_pcb_netlister_readme">Eagle PCB netlister README</a></div>
</li>
</ul>
</div>
<!-- SECTION [559-1431] -->
<h2><a name="gsymcheck_-_symbol_checker" id="gsymcheck_-_symbol_checker">gsymcheck - Symbol Checker</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="geda_gsymcheck_mp.html" class="wikilink1" title="geda:gsymcheck_mp">gsymcheck man-page</a></div>
</li>
</ul>
</div>
<!-- SECTION [1432-1516] -->
<h2><a name="utils_-_geda_utilities" id="utils_-_geda_utilities">utils - gEDA Utilities</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="geda_gsch2pcb_readme.html" class="wikilink1" title="geda:gsch2pcb_readme">gsch2pcb (gschem to PCB) README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">gsch2pcb tutorial</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_tragesym_readme.html" class="wikilink1" title="geda:tragesym_readme">tragesym (symbol generator) README</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/tragesym/tragesym.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/tragesym/tragesym.html" rel="nofollow">tragesym Tutorial</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_olib_readme.html" class="wikilink1" title="geda:olib_readme">olib (OrCAD (TM) converter) README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_grenum_mp.html" class="wikilink1" title="geda:grenum_mp">grenum man-page</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="geda_gattrib_readme.html" class="wikilink1" title="geda:gattrib_readme">gattrib README</a> – note</div>
</li>
</ul>
</div>
<!-- SECTION [1517-2025] -->
<h2><a name="examples" id="examples">Examples</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="geda_example_hsm.html" class="wikilink1" title="geda:example_hsm">Hierarchical SPICE model</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="geda_example_usbjtag.html" class="wikilink1" title="geda:example_usbjtag">Example USB-based JTAG interface</a> – note</div>
</li>
</ul>
</div>
<!-- SECTION [2026-2175] -->
<h2><a name="attribute_file_format_details" id="attribute_file_format_details">Attribute/File Format Details</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="geda_master_attributes_list.html" class="wikilink1" title="geda:master_attributes_list">Master Attributes List</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_file_format_spec.html" class="wikilink1" title="geda:file_format_spec">sym/sch File Format Specification</a></div>
</li>
</ul>
</div>
<!-- SECTION [2176-2341] -->
<h1><a name="spice" id="spice">SPICE</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/tools/gnucap/papers/al-davis-dissertation.pdf" class="urlextern" title="http://www.geda.seul.org/tools/gnucap/papers/al-davis-dissertation.pdf" rel="nofollow">Implicit Mixed-Mode Simulation of VLSI Circuits</a> by Albert Tatum Davis (1991)<br/>
Please report if this <acronym title="Uniform Resource Locator">URL</acronym> goes dead.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.brorson.com/gEDA/SPICE/intro.html" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/intro.html" rel="nofollow">Circuit Simulation using gEDA and SPICE - HOWTO</a> (<acronym title="HyperText Markup Language">HTML</acronym> version)<br/>
by Stuart Brorson (20 December 2004).<br/>
Please report if this <acronym title="Uniform Resource Locator">URL</acronym> is not the latest version.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.brorson.com/gEDA/HOWTO/gEDA_Spice_HOWTO-20050103.pdf" class="urlextern" title="http://www.brorson.com/gEDA/HOWTO/gEDA_Spice_HOWTO-20050103.pdf" rel="nofollow">Circuit Simulation using gEDA and SPICE - HOWTO</a> (<acronym title="Portable Document Format">PDF</acronym> version)<br/>
by Stuart Brorson ( 5 January 2005).</div>
</li>
</ul>
<p>
Testing:
</p>
<ul>
<li class="level1"><div class="li"> <a href="geda_csygas.html" class="wikilink1" title="geda:csygas">Circuit Simulation using gEDA and SPICE - HOWTO</a> – Done converting. Please comment on this conversion to a wiki-format.</div>
</li>
</ul>
</div>
<!-- SECTION [2342-3091] -->
<h1><a name="ngspice" id="ngspice">ngspice</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf" class="urlextern" title="http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf" rel="nofollow">NGSPICE User Manual</a> – describes ngspice-rework-17, Draft Version 0.2<br/>
Please report if this <acronym title="Uniform Resource Locator">URL</acronym> is not the appropriated version, or if it goes dead.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_ngspice_mp.html" class="wikilink1" title="geda:ngspice_mp">ngspice man-page</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="geda_ngnutmeg_mp.html" class="wikilink1" title="geda:ngnutmeg_mp">ngnutmeg man-page</a> – note</div>
</li>
<li class="level1"><div class="li"> <a href="geda_ngsconvert_mp.html" class="wikilink1" title="geda:ngsconvert_mp">ngsconvert man-page</a> – note</div>
</li>
</ul>
</div>
<!-- SECTION [3092-3514] -->
<h1><a name="gnucap" id="gnucap">gnucap</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/tools/gnucap/gnucap-man.pdf" class="urlextern" title="http://www.geda.seul.org/tools/gnucap/gnucap-man.pdf" rel="nofollow">The Gnu Circuit Analysis Package Users manual</a> – January 21,2004 version</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/tools/gnucap/papers/gnucap-model-compiler.pdf" class="urlextern" title="http://www.geda.seul.org/tools/gnucap/papers/gnucap-model-compiler.pdf" rel="nofollow">The Gnucap Model Compiler</a></div>
</li>
</ul>
</div>
<!-- SECTION [3515-3775] -->
<h1><a name="gspiceui" id="gspiceui">gSpiceUI</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/shared/gEDA-20060124/Documents/gSpiceUI/gSpiceUI.html" class="urlextern" title="file:///shared/gEDA-20060124/Documents/gSpiceUI/gSpiceUI.html" rel="nofollow">GNU Spice GUI</a></div>
</li>
</ul>
</div>
<!-- SECTION [3776-3883] -->
<h1><a name="pcb" id="pcb">PCB</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="geda_pcb_ug.html" class="wikilink2" title="geda:pcb_ug">Pcb-1.99q</a> – gEDA Suite version 20060123</div>
</li>
<li class="level1"><div class="li"> <a href="geda_footprint_creation.html" class="wikilink2" title="geda:footprint_creation">footprint_creation</a> – Stuart Brorson’s document, is this the latest?</div>
</li>
<li class="level1"><div class="li"> <a href="geda_pcb_mp.html" class="wikilink1" title="geda:pcb_mp">PCB man-page</a></div>
</li>
<li class="level1"><div class="li"></div>
</li>
<li class="level1"><div class="li"> <a href="http://pcb.sourceforge.net/manual.html" class="urlextern" title="http://pcb.sourceforge.net/manual.html" rel="nofollow">Recent development shapshot manuals and the current CVS version manual</a></div>
</li>
</ul>
</div>
<!-- SECTION [3884-4200] -->
<h1><a name="gerbv" id="gerbv">gerbv</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="geda_gerbv_mp.html" class="wikilink1" title="geda:gerbv_mp">gerbv man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gerbv_pnp_readme.html" class="wikilink1" title="geda:gerbv_pnp_readme">Searching for Parts and marking them on screen (in gerbv)</a></div>
</li>
</ul>
</div>
<!-- SECTION [4201-4346] -->
<h1><a name="icarus_verilog" id="icarus_verilog">Icarus Verilog</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="geda_icarus_quick_start.html" class="wikilink1" title="geda:icarus_quick_start">Getting Started with Icarus Verilog</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_mp.html" class="wikilink1" title="geda:icarus_mp">Icarus Verilog compiler man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_vpi_mp.html" class="wikilink1" title="geda:icarus_vpi_mp">Compile front end for VPI modules man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_vvp_runtime.html" class="wikilink1" title="geda:icarus_vvp_runtime">Icarus Verilog vvp runtime engine man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_readme.html" class="wikilink1" title="geda:icarus_readme">The Icarus Verilog Compilation System</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_igarus_fpga_lcg.html" class="wikilink1" title="geda:igarus_fpga_lcg">FPGA Loadable Code Generator for Icarus Verilog</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_xilinx_hints.html" class="wikilink1" title="geda:icarus_xilinx_hints">Xilinx Hints</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_xnf.html" class="wikilink1" title="geda:icarus_xnf">Xilinx Netlist Format</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_ieee1364.html" class="wikilink1" title="geda:icarus_ieee1364">Icarus Verilog vs. IEEE1364</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_anc.html" class="wikilink1" title="geda:icarus_anc">Icarus Attribute Naming Conventions</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_extensions.html" class="wikilink1" title="geda:icarus_extensions">Icarus Verilog Extensions</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_glossary.html" class="wikilink1" title="geda:icarus_glossary">Icarus Verilog Glossary</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_opcodes.html" class="wikilink1" title="geda:icarus_opcodes">Executable Instruction Opcodes</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_vpi_within_vvp.html" class="wikilink1" title="geda:icarus_vpi_within_vvp">VPI_within_VVP</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_icarus_vvp_simulation.html" class="wikilink1" title="geda:icarus_vvp_simulation">VVP Simulation Engine</a></div>
</li>
</ul>
</div>
<!-- SECTION [4347-5272] -->
<h1><a name="gtkwave" id="gtkwave">GTKWave</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://home.nc.rr.com/gtkwave/" class="urlextern" title="http://home.nc.rr.com/gtkwave/" rel="nofollow">Welcome to GTKWave</a> – Now for version 3.0 (the promoted version 1.3)</div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_mp.html" class="wikilink1" title="geda:gtkwave_mp">Visualization tool for VCD, LXT, and VZT files (gtkwave)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_lxt2miner_mp.html" class="wikilink1" title="geda:gtkwave_lxt2miner_mp">Data mining of LXT2 files (lxt2miner)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_lxt2vcd_mp.html" class="wikilink1" title="geda:gtkwave_lxt2vcd_mp">Coverts LXT2 files to VCD (lxt2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_mvl2lxt_mp.html" class="wikilink1" title="geda:gtkwave_mvl2lxt_mp">Coverts MVLSIM AET files to LXT (mvl2lxt)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_mvl2vcd_mp.html" class="wikilink1" title="geda:gtkwave_mvl2vcd_mp">Coverts MVLSIM AET files to VCD (mvl2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_tex2vcd_mp.html" class="wikilink1" title="geda:gtkwave_tex2vcd_mp">Coverts TEXSIM AET files to VCD (tex2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_tla2vcd_mp.html" class="wikilink1" title="geda:gtkwave_tla2vcd_mp">Converts TLA to VCD or LST files (tla2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_vcd2lxt_mp.html" class="wikilink1" title="geda:gtkwave_vcd2lxt_mp">Converts VCD files to interlaced or linear LXT files (vcd2lxt)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_vcd2lxt2_mp.html" class="wikilink1" title="geda:gtkwave_vcd2lxt2_mp">Converts VCD files to LXT2 files (vcd2lxt2)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_vcd2vzt_mp.html" class="wikilink1" title="geda:gtkwave_vcd2vzt_mp">Converts VCD files to VZT files
(vcd2vzt)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_vzt2vcd_mp.html" class="wikilink1" title="geda:gtkwave_vzt2vcd_mp">Coverts VZT files to VCD (vzt2vcd)</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_gtkwave_vztminer_mp.html" class="wikilink1" title="geda:gtkwave_vztminer_mp">Data mining of VZT files (vztminer)</a></div>
</li>
</ul>
</div>
<!-- SECTION [5273-6304] -->
<h1><a name="wcalc" id="wcalc">Wcalc</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="geda_wcalc_readme.html" class="wikilink1" title="geda:wcalc_readme">Wcalc README</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_wcalc_mp.html" class="wikilink1" title="geda:wcalc_mp">Wcalc man-page</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda_wcalc_stdio_mp.html" class="wikilink1" title="geda:wcalc_stdio_mp">stdio Wcalc man-page</a></div>
</li>
</ul>
</div>
<!-- SECTION [6305-6451] -->
<h1><a name="mcalc" id="mcalc">mcalc</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://mcalc.sourceforge.net/" class="urlextern" title="http://mcalc.sourceforge.net/" rel="nofollow">Microstrip Analysis/Synthesis Calculator</a> – latest documentation from sourceforge</div>
</li>
<li class="level1"><div class="li"> <a href="geda_mcalc_readme.html" class="wikilink1" title="geda:mcalc_readme">mcalc README</a></div>
</li>
</ul>
</div>
<!-- SECTION [6452-6631] -->
<h1><a name="covered" id="covered">covered</a></h1>
<div class="level1">
<ul>
<li class="level1"><div class="li"> <a href="http://covered.sourceforge.net/user/index.html" class="urlextern" title="http://covered.sourceforge.net/user/index.html" rel="nofollow">covered User Manual</a> – link to latest covered documentation on sourceforge</div>
</li>
<li class="level1"><div class="li"> <a href="geda_covered_rv.html" class="wikilink2" title="geda:covered_rv">covered Report Viewer</a> – available in the Help menu of the <acronym title="Graphical User Interface">GUI</acronym> report utility</div>
</li>
<li class="level1"><div class="li"> <a href="geda_covered_mp.html" class="wikilink1" title="geda:covered_mp">covered man-page</a></div>
</li>
</ul>
</div>
<!-- SECTION [6632-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_eagle_pcb_netlister_readme.html
Index: geda_eagle_pcb_netlister_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:eagle_pcb_netlister_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:eagle_pcb_netlister_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:eagle_pcb_netlister_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:eagle_pcb_netlister_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:22:43-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="eagle_pcb_netlister_readme" id="eagle_pcb_netlister_readme">Eagle PCB netlister README</a></h1>
<div class="level1">
<pre class="code">Basic information about the Eagle PCB backend and sch2eaglepos.sh
gnet-eagle.scm
The script uses the component's package, footprint, value, and (if no
value) device attributes, as well as the netlist, to generate an Eagle
script that will add and connect all components. It also introduces a
"lib" attribute, which specifies the Eagle library where the footprint
can be found...if a "lib" attribute is not set for a component, then
the library defaults to "smd-ipc" (the default Eagle surface mount library).
sch2eaglepos.sh
I am also including a simple shell script that I wrote which has saved
me hours by extracting the relative locations of the parts from a
gschem schematic, and generating an Eagle script to place the
components in the same relative locations on the layout. By default
all packages are piled on top of each other, and with a large design
it takes a long time to sort out which cap bypasses which IC, etc.
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_example_hsm.html
Index: geda_example_hsm.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:example_hsm</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:example_hsm?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:example_hsm?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:example_hsm?do=export_raw" />
<meta name="date" content="2006-05-08T15:55:06-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="hierarchical_spice_model" id="hierarchical_spice_model">Hierarchical SPICE model</a></h1>
<div class="level1">
<p>
If you installed the gEDA Tool Suite from the distribution CD-ROM, then you should have this example of a hierarchical analog RF SPICE model in the:<br/>
<strong><code>{source_install_path}geda-sources/gedagaf/geda-examples-20060123/RF_Amp</code></strong> <br/>
directory.
</p>
<pre class="code">This README created 3.31.2003
--------------------- Contents of directories -----------------------
This directory holds the schematics and associated materials for a
SPICE model of Agilent's MSA-2643 bipolar amp. The model was obtained
from Agilent's datasheet 5980-2396E. The directory structure is as
follows:
RF_Amp (base directory)
MSA-2643.sch -- schematic of stuff inside device package (as shown in
p. 7 of datasheet. Note that I have not included the transmission
lines in this schematic because no value of Z was included in the data
sheet. (Yes, it's probably 50 ohms, but including them was a
sideshow compared to my main intent: build a hierarchical model of an
RF circuit.)
MSA-2643.cir -- netlisted circuit ready for SPICE simulation.
Q1.sch -- schematic model of Q1 MSA-26 transistor shown on p. 8 of datasheet.
Q1.cir -- netlisted circuit holding .SUBCKT model of Q1.
Q2.sch -- schematic model of Q2 MSA-26 transistor shown on p. 8 of datasheet.
Q2.cir -- netlisted circuit holding .SUBCKT model of Q2.
README -- this file.
Simulation.cmd -- a file holding SPICE analysis commands which is read
at simulation time by the SPICE simulator.
5980-2396E.pdf -- Agilent datasheet about the MSA-2643.
./model/
BJTM1_Q1.mod -- text-based SPICE model of BJT1 used in Q1 .SUBCKT
DiodeM1_Q1.mod -- text-based SPICE model of diode M1 used in Q1 .SUBCKT
DiodeM2_Q1.mod -- SPICE model of diode M2 used in Q1 .SUBCKT
DiodeM3_Q1.mod -- SPICE model of diode M3 used in Q1 .SUBCKT
(similar files for Q2 models. . . .)
These models were obtained from parameters give in p. 8 of the datasheet.
./sym/
BJT_Model.sym
spice-subcircuit-IO-1.sym
spice-subcircuit-LL-1.sym
Q_Model.sym -- symbol pointing to lower level models placed on upper
level schematic.
------------ Usage of hierarchical spice models ---------------------
This project exemplifies construction of a hierarchical SPICE
simulation using gEDA. The project is built in the following way:
1. Use a text editor to create .mod files containing SPICE models of
the transistors and diodes on p. 8 of the datasheet.
2. Create Q1 and Q2 transistor model schematics using gschem. Place
the .SUBCKT SPICE block on the schematic to alert the netlister that
the schematic is a lower level .SUBCKT for incorporation into other
schematics. Place spice-IO pads on the schematic to instantiate the
IOs. Make sure to number the spice-IO pads in the same order as you
wish them to appear in the .SUBCKT line in the .cir.
3. Generate the .SUBCKT netlist by saying:
gnetlist -g spice-sdb -o Q1.cir Q1.sch
gnetlist -g spice-sdb -o Q2.cir Q2.sch
4. Create a symbol for Q1.cir and Q2.cir which will be dropped onto
the higher lever schematic. Name the symbol Q_Model.sym. Set the
symbol "DEVICE" attribute = NPN_TRANSISTOR_subcircuit. This causes
the netlister to use "write-default-component" to write out the SPICE
line for the component. Make sure that the "REFDES" attribute is X?
and not Q? -- this enables the .SUBCKT file to be attached to the
device.
5. Create the higher layer schematic MSA-2643.sch. Place
two copies of Q_Model.sym onto the schematic, corresponding to Q1 and
Q2. Make Q1 point to its model by setting the following attributes:
model-name: Q1_MSA26F
file: Q1.cir
Do the same for Q2.
6. Create the rest of the higher layer schematic the usual way. Make
sure to place a spice-include block on the schematic and point it to
"Simulation.cmd". Place any analysis commands (e.g. .DC, .AC, .TRAN,
etc.) into the file "Simulation.cmd".
7. Netlist the higher layer design:
gnetlist -g spice-sdb -o MSA-2643.cir MSA-2643.sch
8. The circuit may be simulated by any desired SPICE simulation
and analysis package, e.g. LTSpice.
-------------------- Contact ----------------------------
Documentation and other materials relevant to SPICE simulation under
gEDA lives at http://www.brorson.com/gEDA/SPICE
For inquiries or bug reports, please contact me:
Stuart Brorson
mailto:sdb@xxxxxxxxxx
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_example_usbjtag.html
Index: geda_example_usbjtag.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:example_usbjtag</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:example_usbjtag?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:example_usbjtag?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:example_usbjtag?do=export_raw" />
<meta name="date" content="2006-05-08T15:56:04-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="example_usb-based_jtag_interface" id="example_usb-based_jtag_interface">Example USB-based JTAG interface</a></h1>
<div class="level1">
<p>
If you installed the gEDA Tool Suite from the distribution CD-ROM, then you should have this example of a USB-based JTAG interface in the:<br/>
<strong><code>{source-code_installation_path}geda-sources/gedagaf/geda-examples-20060123/gTAG</code></strong> <br/>
directory.
</p>
<pre class="code"> gTAG - USB to JTAG interface
============================
This is the README file for the schematic of gTAG.
Short description
-----------------
gTAG is an interface to connect your USB port of computer to talk
to your circuits which talks JTAG.
Copyright
---------
These schematics is (C) by Stefan Petersen (spe@xxxxxxxxxxxxxx) and
released under GPL (see the attached file COPYING). GPL is mainly
written for software, ie intellectual property in electronic form.
By making this schematic an intellectual property in electronic
form gTAG schematics can be covered by GPL.
How?
----
These schematics are made with gschem and netlists are then generated
with gnetlist. Both gschem and gnetlist are part of gEDA
(http://www.geda.seul.org/).
Files
-----
The distribution of the schematics of gTAG should consist of:
* README - this file.
* COPYING - GPL copyright notice.
* crdist.sh - shell script used to generate the tar.gz.
* ChangeLog - tries to scribble down what has changed between versions.
* Four component symbols:
- 7414-1.sym - Original 7414 from gschem without power attributes.
- max882.sym - 5-to-3.3 V converter.
- cy7c64603-52nc.sym - USB microcontroller from Cypress.
- sn75240pw.sym - Surge supressor for USB
- copyleft.sym - Symbol with GPL text for all schematics.
* Five schematics with four symbols:
- gTAG.sch.sch - Toplevel schematic for gTAG
- gTAG-jtagio.[sym/sch]
- gTAG-ucont.[sym/sch]
- gTAG-consio.[sym/sch]
- gTAG-psu.[sym/sch]
* gEDA rc-files for this project:
- commonrc - contains common declarations for both gschem and gnetlist
- gnetlistrc - gnetlist specific and and calls commonrc
- gschemrc - gschem specific and and calls commonrc
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_faq-attribs.html
Index: geda_faq-attribs.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-attribs</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-attribs?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-attribs?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-attribs?do=export_raw" />
<meta name="date" content="2006-05-06T16:37:02-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#bom_generation" class="toc">BOM generation</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#i_have_created_a_new_design._how_do_i_create_a_bom" class="toc">I have created a new design. How do I create a BOM?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#drcs" class="toc">DRCs</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_check_my_schematics" class="toc">How do I check my schematics?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_see_the_drc_output_in_the_screen_without_writing_to_a_file" class="toc">How do I see the DRC output in the screen, without writing to a file?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#i_want_to_disable_some_of_the_schematic_drc_checks._how_can_i_do_it" class="toc">I want to disable some of the schematic DRC checks. How can I do it?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#can_i_include_the_drc_checking_into_a_makefile_and_stop_when_errors_or_warnings_are_found" class="toc">Can I include the DRC checking into a Makefile and stop when errors or warnings are found?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#there_are_some_warnings_in_my_design_i_m_aware_of._can_i_ignore_the_warnings_in_the_return_value" class="toc">There are some warnings in my design I'm aware of. Can I ignore the warnings in the return value?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#attribute_management" class="toc">Attribute management</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#help_my_design_has_hundreds_of_components_and_it_s_a_pain_to_use_gschem_to_attach_all_my_attributes" class="toc">Help! My design has hundreds of components, and it's a pain to use gschem to attach all my attributes!</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_know_what_footprint_name_to_use_for_layout_using_pcb" class="toc">How do I know what footprint name to use for layout using PCB?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="bom_generation" id="bom_generation">BOM generation</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-30] -->
<h2><a name="i_have_created_a_new_design._how_do_i_create_a_bom" id="i_have_created_a_new_design._how_do_i_create_a_bom">I have created a new design. How do I create a BOM?</a></h2>
<div class="level2">
<p>
There are as many ways to export a BOM from your design as there are gEDA developers. Indeed, there are five or six different backends for gnetlist which enable you to export a BOM. Therefore, itâ??s easy for the newbie to be confused about which approach to use. A good, simple, and reasonably complete method is this:
</p>
<ul>
<li class="level1"><div class="li"> Create a file called â??attribsâ?? in your project directory. In this file, place each attrib whose value you wish to export on a separate line. Hereâ??s an example:<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">value
Mfr
Mfr_PN
Vendor
Vendor_PN</font></pre></div>
</li>
<li class="level1"><div class="li"> Netlist your design using the following command:<br/>
<br/>
<code>gnetlist -v -g bom2 -o MyDesign.bom MyDesign.sch</code> <br/>
<br/>
Note that the <strong><code>-v</code></strong> flag will provide a verbose spew telling you what is going in gnetlist while it is running. This can be useful if you need to diagnose a problem with netlisting.</div>
</li>
<li class="level1"><div class="li"> With this command, gnetlist will dump a BOM into the file â??MyDesign.bomâ??. The BOM items will be separated using a â??:â?? (colon) character. You may then read this file into any spreadsheet program. Make sure to import the BOM as a .csv file, and specify the â??:â?? character as the item separator.</div>
</li>
</ul>
<p>
Many other methods to create BOMs exist. Perhaps other geda-users will post their favorite methods here?!?!?
</p>
</div>
<!-- SECTION [31-1355] -->
<h1><a name="drcs" id="drcs">DRCs</a></h1>
<div class="level1">
</div>
<!-- SECTION [1356-1374] -->
<h2><a name="how_do_i_check_my_schematics" id="how_do_i_check_my_schematics">How do I check my schematics?</a></h2>
<div class="level2">
<p>
You can check your schematics using the drc2 gnetlistâ??s backend. It will check your schematics for some common errors, like duplicate references, unconnected pins, unused slots and more.
</p>
<p>
Run the drc2 backend with the following command:
</p>
<pre class="code">gnetlist -g drc2 -o MyDesign.drc MyDesign.sch</pre>
<p>
With this command, the DRC output is written into the file â??MyDesign.drcâ??. You can then view this file with a text editor and see the DRC warnings and errors.
</p>
</div>
<!-- SECTION [1375-1879] -->
<h2><a name="how_do_i_see_the_drc_output_in_the_screen_without_writing_to_a_file" id="how_do_i_see_the_drc_output_in_the_screen_without_writing_to_a_file">How do I see the DRC output in the screen, without writing to a file?</a></h2>
<div class="level2">
<p>
Run the drc2 backend with the following command:
</p>
<pre class="code">gnetlist -g drc2 -o - MyDesign.sch</pre>
<p>
This way, you will see the DRC output directly in your screen.
</p>
</div>
<!-- SECTION [1880-2123] -->
<h2><a name="i_want_to_disable_some_of_the_schematic_drc_checks._how_can_i_do_it" id="i_want_to_disable_some_of_the_schematic_drc_checks._how_can_i_do_it">I want to disable some of the schematic DRC checks. How can I do it?</a></h2>
<div class="level2">
<p>
The drc2 backend is highly configurable. You have to put some special commands into a file and use the â??-lâ?? option of gnetlist with it.
</p>
<p>
The most common commands are:
</p>
<ul>
<li class="level1"><div class="li"> (define dont-check-non-numbered-parts 1) ;; Disable the non-numbered parts check</div>
</li>
<li class="level1"><div class="li"> (define dont-check-duplicated-references 1) ;; Disable the duplicate references check</div>
</li>
<li class="level1"><div class="li"> (define dont-check-one-connection-nets 1) ;; Disable the check for nets with only one connection.</div>
</li>
<li class="level1"><div class="li"> (define dont-check-pintypes-of-nets 1) ;; Disable the pintype check</div>
</li>
<li class="level1"><div class="li"> (define dont-check-not-driven-nets 1) ;; Disable the driven net check</div>
</li>
<li class="level1"><div class="li"> (define dont-check-unconnected-pins 1) ;; Disable the unconnected pins check</div>
</li>
<li class="level1"><div class="li"> (define dont-check-duplicated-slots 1) ;; Disable the duplicated slots check</div>
</li>
<li class="level1"><div class="li"> (define dont-check-unused-slots 1) ;; Disable the unused slots check</div>
</li>
<li class="level1"><div class="li"> (define dont-check-slots 1) ;; Disable slot number check</div>
</li>
<li class="level1"><div class="li"> (define action-unused-slots #\w) ;; Output an unused slots as a warning</div>
</li>
<li class="level1"><div class="li"> (define action-unused-slots #\e) ;; Output an unused slots as an error</div>
</li>
<li class="level1"><div class="li"> (define action-unused-slots #\c) ;; An unused slot is OK.</div>
</li>
<li class="level1"><div class="li"> (define case_insensitive 1) ;; Do all checks case insensitive</div>
</li>
</ul>
<p>
There are some other advanced commands, to modify the DRC matrix and the pintype which can drive a net. See the backend file â??gnet-drc2.scmâ?? with a text editor. At the beginning there is the available documentation.
</p>
<p>
Copy the above lines you want into a file (for example â??drc_rules.txtâ??), one per line, and run the drc checker:
</p>
<pre class="code">gnetlist -g drc2 -l drc_rules.txt -o MyDesign.drc MyDesign.sch</pre>
<p>
With this command, the DRC output is written into the file â??MyDesign.drcâ??. You can then view this file with a text editor and see the DRC warnings and errors.
</p>
</div>
<!-- SECTION [2124-3952] -->
<h2><a name="can_i_include_the_drc_checking_into_a_makefile_and_stop_when_errors_or_warnings_are_found" id="can_i_include_the_drc_checking_into_a_makefile_and_stop_when_errors_or_warnings_are_found">Can I include the DRC checking into a Makefile and stop when errors or warnings are found?</a></h2>
<div class="level2">
<p>
Yes. The drc2 backend will return an error if there are errors or warnings, so you can add the following to your Makefile:
</p>
<pre class="code">$(objects).drc : $(objects).sch
gnetlist -g drc2 $(objects).sch -o $(objects).drc</pre>
<p>
If you are going to simulate your design, then you can add the following to your Makefile:
</p>
<pre class="code">$(objects).cir : $(objects).sch $(objects).drc
grep -v ERROR $(objects).drc >/dev/null 2>&1
gnetlist -g spice-sdb $(objects).sch -o $(objects).cir</pre>
<p>
If not, please use the above example and adapt it to your own workflow.
</p>
</div>
<!-- SECTION [3953-4630] -->
<h2><a name="there_are_some_warnings_in_my_design_i_m_aware_of._can_i_ignore_the_warnings_in_the_return_value" id="there_are_some_warnings_in_my_design_i_m_aware_of._can_i_ignore_the_warnings_in_the_return_value">There are some warnings in my design I'm aware of. Can I ignore the warnings in the return value?</a></h2>
<div class="level2">
<p>
Use the â??-O ignore-warnings-in-return-valueâ?? option:
</p>
<pre class="code">gnetlist -g drc2 -o - MyDesign.sch -O ignore-warnings-in-return-value</pre>
<p>
Do this with caution! You will be missing all the warnings!
</p>
</div>
<!-- SECTION [4631-4942] -->
<h1><a name="attribute_management" id="attribute_management">Attribute management</a></h1>
<div class="level1">
</div>
<!-- SECTION [4943-4978] -->
<h2><a name="help_my_design_has_hundreds_of_components_and_it_s_a_pain_to_use_gschem_to_attach_all_my_attributes" id="help_my_design_has_hundreds_of_components_and_it_s_a_pain_to_use_gschem_to_attach_all_my_attributes">Help! My design has hundreds of components, and it's a pain to use gschem to attach all my attributes!</a></h2>
<div class="level2">
<p>
The answer here is the gEDA/gaf utility â??gattribâ??. Gattrib is an attribute editor for gEDA. It reads your .sch file(s) and creates a spreadsheet showing all components, nets, and pins in rows, with the associated attributes listed in the columns. Gattrib allows you to add, modify, or delete attributes outside of gschem, and then save the .sch files back out. Hereâ??s a screenshot:
</p>
<p>
<a href="_detail/geda_faq_attrib.html" class="media" title="geda:faq_attrib.jpg"><img src="_media/geda_faq_attrib.jpg" class="media" title="faq_attrib.jpg" alt="faq_attrib.jpg" /></a>
</p>
<p>
Note that gattrib is the gEDA Projectâ??s current answer to the question of heavy symbols. That is, rather than putting all attributes (such as SPICE model files, footprint names, manufacturer part nos and the like), you are encouraged to put this information into your schematic using gattrib, where it is visible and easily manipulable with gattrib.
</p>
<p>
When using gattrib, make sure you exit gschem first. Gattrib and gschem both save your work into the same file, so you should have only one program running at a time to avoid conflicts. There is no lockfile mechanism in gEDA/gaf (yet), so itâ??s your responsibility to avoid conflicts.
</p>
</div>
<!-- SECTION [4979-6148] -->
<h2><a name="how_do_i_know_what_footprint_name_to_use_for_layout_using_pcb" id="how_do_i_know_what_footprint_name_to_use_for_layout_using_pcb">How do I know what footprint name to use for layout using PCB?</a></h2>
<div class="level2">
<p>
<a href="geda_pcb_tips.html" class="wikilink1" title="geda:pcb_tips">Answered here</a>.
</p>
</div>
<!-- SECTION [6149-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_faq-gnetlist.html
Index: geda_faq-gnetlist.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-gnetlist</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-gnetlist?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-gnetlist?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-gnetlist?do=export_raw" />
<meta name="date" content="2006-05-08T16:39:15-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#gnetlist_build_run-time_problems" class="toc">Gnetlist build/run-time problems</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#the_gnetlist_bom_backend_does_not_work._what_is_wrong" class="toc">The gnetlist bom backend does not work. What is wrong?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#some_gnetlist_backends_overflow_the_stack._how_do_i_solve_this" class="toc">Some gnetlist backends overflow the stack. How do I solve this?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gnetlist_has_created_a_netlist_with_duplicate_pins" class="toc">gnetlist has created a netlist with duplicate pins!?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="gnetlist_build_run-time_problems" id="gnetlist_build_run-time_problems">Gnetlist build/run-time problems</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-47] -->
<h2><a name="the_gnetlist_bom_backend_does_not_work._what_is_wrong" id="the_gnetlist_bom_backend_does_not_work._what_is_wrong">The gnetlist bom backend does not work. What is wrong?</a></h2>
<div class="level2">
<p>
If when running gnetlist like this:
</p>
<pre class="code">gnetlist -g bom filename.sch</pre>
<p>
and gnetlist outputs an error message like:
</p>
<pre class="code">Loading schematic [filename.sch]
ERROR: In procedure open-file:
ERROR: No such file or directory: â??attribsâ??</pre>
<p>
then you need to create a file called â??attribsâ?? in the current directory which contains the attributes which you want inside the bom file. An example of this file would be: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">refdes
device
value</font></pre>
</p>
</div>
<!-- SECTION [48-576] -->
<h2><a name="some_gnetlist_backends_overflow_the_stack._how_do_i_solve_this" id="some_gnetlist_backends_overflow_the_stack._how_do_i_solve_this">Some gnetlist backends overflow the stack. How do I solve this?</a></h2>
<div class="level2">
<p>
If you get an error message like:
</p>
<pre class="code">ERROR: Stack overflow</pre>
<p>
when running certain larger sized schematics through some of the backends, then add the following to a <strong><code>~/.gEDA/gnetlistrc</code></strong> or a local <strong><code>gnetlistrc</code></strong> (in the current working directory):
</p>
<pre class="code">(debug-options (list 'stack 200000))
(eval-options (list 'stack 200000))</pre>
<p>
If this does not work, then edit the appropriate backend (usually named: gnet-backend_name.scm) and put the above lines at the top of this file. The gnetlist backends can be found in <strong><code>${prefix}/share/gEDA/scheme</code></strong>. Also send an e-mail to geda-dev reminding the developers to fix this. Remember, you must subscribe to geda-dev before you post to the geda-dev e-mail list.
</p>
</div>
<!-- SECTION [577-1382] -->
<h2><a name="gnetlist_has_created_a_netlist_with_duplicate_pins" id="gnetlist_has_created_a_netlist_with_duplicate_pins">gnetlist has created a netlist with duplicate pins!?</a></h2>
<div class="level2">
<p>
There has been at least one report of the following message coming from PCB after loading up a netlist created by gnetlist:
</p>
<pre class="code">28: Error! Element R117 pin 2 appears multiple times in the netlist file.
29: Error! Element C167 pin 2 appears multiple times in the netlist file.</pre>
<p>
What has happened is gnetlist (really libgeda) created two nets instead of one. This happens when you draw two nets that cross each other and a pin connecting to the intersection of the two crossing nets. Note the cross nets are not connected together. A schematic which demonstrates this looks like this:
</p>
<p>
<a href="_detail/geda_ambiguous1.html" class="media" title="geda:ambiguous1.png"><img src="_media/geda_ambiguous1.png" class="media" alt="" /></a>
</p>
<p>
The developers are debating whether or not this is a bug in gnetlist, but for now make sure your net connections, especially those that involve pins connecting to the middle of other nets, are explicitly drawn. Here is how the above connection should be drawn to netlist properly:
</p>
<p>
<a href="_detail/geda_ambiguous1_fixed.html" class="media" title="geda:ambiguous1_fixed.png"><img src="_media/geda_ambiguous1_fixed.png" class="media" alt="" /></a>
</p>
</div>
<!-- SECTION [1383-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_faq-gsch2pcb.html
Index: geda_faq-gsch2pcb.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-gsch2pcb</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-gsch2pcb?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-gsch2pcb?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-gsch2pcb?do=export_raw" />
<meta name="date" content="2006-08-21T21:10:54-0400" />
<meta name="robots" content="noindex,nofollow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#gsch2pcb" class="toc">gsch2pcb</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#where_is_the_gsch2pcb_tutorial" class="toc">Where is the gsch2pcb tutorial?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#where_can_i_download_gsch2pcb" class="toc">Where can I download gsch2pcb?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gsch2pcb_can_t_find_some_of_my_footprints_or_errors_out._what_can_i_do_to_diagnose_my_problem" class="toc">gsch2pcb can't find some of my footprints, or errors out. What can I do to diagnose my problem?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="gsch2pcb" id="gsch2pcb">gsch2pcb</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-24] -->
<h2><a name="where_is_the_gsch2pcb_tutorial" id="where_is_the_gsch2pcb_tutorial">Where is the gsch2pcb tutorial?</a></h2>
<div class="level2">
<p>
Currently, the best information about this is contained in Bill Wilsonâ??s <a href="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">outstanding tutorial</a>. <br/>
<span class="hilited">This page will grow later to contain answers to FAQs posted on the geda-user list.</span>
</p>
</div>
<!-- SECTION [25-327] -->
<h2><a name="where_can_i_download_gsch2pcb" id="where_can_i_download_gsch2pcb">Where can I download gsch2pcb?</a></h2>
<div class="level2">
<p>
gsch2pcb is part of gEDA/gaf, in the utils. It is normally installed by default (along with everything else) if you install the entirety of gEDA/gaf. If you donâ??t have it installed on your machine for some reason you can either download the utils tarball from:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">http://geda.seul.org/download.html</a></div>
</li>
</ul>
<p>
or grab it directly from <acronym title="Concurrent Versions System">CVS</acronym> at:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://cvs.seul.org/viewcvs/viewcvs.cgi/eda/geda/gaf/utils/src/" class="urlextern" title="http://cvs.seul.org/viewcvs/viewcvs.cgi/eda/geda/gaf/utils/src/" rel="nofollow">http://cvs.seul.org/viewcvs/viewcvs.cgi/eda/geda/gaf/utils/src/</a></div>
</li>
</ul>
</div>
<!-- SECTION [328-783] -->
<h2><a name="gsch2pcb_can_t_find_some_of_my_footprints_or_errors_out._what_can_i_do_to_diagnose_my_problem" id="gsch2pcb_can_t_find_some_of_my_footprints_or_errors_out._what_can_i_do_to_diagnose_my_problem">gsch2pcb can't find some of my footprints, or errors out. What can I do to diagnose my problem?</a></h2>
<div class="level2">
<p>
Try running gsch2pcb in double verbose mode: â??gsch2pcb -v -vâ??. This will produce lots of spew telling you where gsch2pcb is looking while it tries to find footprints. It will also tell you where it does find the footprints it uses.
</p>
</div>
<!-- SECTION [784-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_faq-gschem.html
Index: geda_faq-gschem.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-gschem</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-gschem?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-gschem?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-gschem?do=export_raw" />
<meta name="date" content="2006-08-12T12:22:50-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#gschem_installation_run-time_problems" class="toc">Gschem installation/run-time problems</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#gschem_segfaults_when_i_delete_components_on_fc5_and_other_linux_distributions_is_there_a_work-around" class="toc">Gschem segfaults when I delete components on FC5 (and other Linux distributions)! Is there a work-around?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#after_installation_gschem_does_not_work_what_could_be_wrong" class="toc">After installation gschem does not work!? What could be wrong?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#add_components_offers_no_symbols_what_can_i_do_about_it" class="toc">"Add Components" offers no symbols! What can I do about it?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#gschem_usage" class="toc">Gschem usage</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_move_a_component" class="toc">How do I move a component?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_change_the_size_of_the_text_on_a_symbol" class="toc">How do I change the size of the text on a symbol?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#is_there_an_explicit_no_connect_symbol_that_i_can_should_place_in_the_schematic_to_prevent_gnetlist_from_thinking_i_ve_forgotten_a_connection" class="toc">Is there an explicit "no connect" symbol that I can/should place in the schematic to prevent gnetlist from thinking I've forgotten a connection?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_print_schematics_from_the_command_line" class="toc">How do I print schematics from the command line?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_get_color_postscript_png_output" class="toc">How can I get color postscript/PNG output?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_get_black_and_white_postscript_png_output" class="toc">How can I get black and white postscript/PNG output?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_insert_schematics_into_my_latex_document" class="toc">How can I insert schematics into my LaTex document?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_split_postscript_output_over_multiple_pages" class="toc">How can I split postscript output over multiple pages?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_unlock_a_locked_component" class="toc">How do I unlock a locked component</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#gschem_configuration_customization" class="toc">Gschem configuration/customization</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_change_the_default_size_of_floating_text" class="toc">How can I change the default size of floating text?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_have_a_different_background_color_other_than_black" class="toc">How can I have a different background color other than black?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_get_refdes_automatically_numbered_when_i_draw_a_schematic" class="toc">How can I get refdes automatically numbered when I draw a schematic?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_are_the_mouse_bindings_in_gschem" class="toc">What are the mouse bindings in gschem?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#information_on_gschem_symbols" class="toc">Information on gschem symbols</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#what_s_this_business_about_heavy_vs._light_symbols" class="toc">What's this business about heavy vs. light symbols?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#i_am_using_a_symbol_out_of_the_library._how_come_it_s_not_aligned_to_the_grid" class="toc">I am using a symbol out of the library. How come it's not aligned to the grid?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_promote_an_invisible_symbol_attribute_into_the_schematic" class="toc">How do I promote an invisible symbol attribute into the schematic?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_should_i_do_about_power_pins_on_my_symbolsmake_them_visible_explicit_or_invisible_implicit" class="toc">What should I do about power pins on my symbols: Make them visible (explicit) or invisible (implicit)?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#is_there_a_specification_or_manual_for_creating_gschem_symbols_where_is_it" class="toc">Is there a specification or manual for creating gschem symbols? Where is it?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="gschem_installation_run-time_problems" id="gschem_installation_run-time_problems">Gschem installation/run-time problems</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-53] -->
<h2><a name="gschem_segfaults_when_i_delete_components_on_fc5_and_other_linux_distributions_is_there_a_work-around" id="gschem_segfaults_when_i_delete_components_on_fc5_and_other_linux_distributions_is_there_a_work-around">Gschem segfaults when I delete components on FC5 (and other Linux distributions)! Is there a work-around?</a></h2>
<div class="level2">
<p>
This bug seems to have appeared for users of Fedora Core 5 (and other linux distributions that use glib 2.10.x). The bug has been fixed by the developers and the bug fix will appear in the next version of gEDA/gaf.
</p>
<p>
In the mean time, you can work around this bug by setting the environment variable G_SLICE to â??always-mallocâ??. Specifically, before you run gschem, do this:
</p>
<p>
bash:
</p>
<pre class="code">export G_SLICE=always-malloc</pre>
<p>
csh:
</p>
<pre class="code">setenv G_SLICE always-malloc</pre>
</div>
<!-- SECTION [54-648] -->
<h2><a name="after_installation_gschem_does_not_work_what_could_be_wrong" id="after_installation_gschem_does_not_work_what_could_be_wrong">After installation gschem does not work!? What could be wrong?</a></h2>
<div class="level2">
<p>
If you run gschem and you get a window without a menu bar, no colors, and the program terminates when you press a key with the following message:
</p>
<pre class="code">ERROR: Unbound variable: current-keymap</pre>
<p>
Or you get errors like this:
</p>
<pre class="code">Gtk-CRITICAL : file gtkpixmap.c: line 97 (gtk_pixmap_new): assertion `val != NULLâ?? failed.
Gtk-CRITICAL : file gtkpixmap.c: line 97 (gtk_pixmap_new): assertion `val != NULLâ?? failed.
Tried to get an invalid color: 0
Tried to get an invalid color: 7
Tried to get an invalid color: 0
Tried to get an invalid color: 7</pre>
<p>
then gschem is not finding an rc file. There are two required rc files. The first is <strong><code>system-gschemrc</code></strong> and the second is <strong><code>system-commonrc</code></strong>.
</p>
<ul>
<li class="level1"><div class="li"> The system-gschemrc rc file should be installed when you install gschem and typically resides in <strong><code>${prefix}/share/gEDA/system-gschemrc</code></strong>. <strong><code>${prefix}</code></strong> is where you installed gschem (usually <strong><code>/usr</code></strong> or <strong><code>/usr/local</code></strong> or <strong><code>$HOME/geda</code></strong>). This file can also be installed in /etc/gEDA (the .debs packages do this).</div>
</li>
<li class="level1"><div class="li"> The system-commonrc rc file should be installed when you install the symbol library for gEDA/gaf. It resides in <strong><code>${prefix}/share/gEDA/system-commonrc</code></strong>. This file can also be installed in <strong><code>/etc/gEDA</code></strong> (the .debs packages do this). This file is not loaded directly by gschem. It is loaded by a â??(load ...)â?? in the system-gschemrc rc file.</div>
</li>
</ul>
<p>
Make sure these file are installed. The gschem.log file (which is created everytime you run gschem) holds valuable debugging information which should help in determining what is wrong. Check this file for where gschem is looking for the rc files.
</p>
<p>
Also, some older releases of gEDA/gaf had some bugs when the rc files were installed in other locations (other that <strong><code>${prefix}/share/gEDA</code></strong>), so please upgrade to a more current release.
</p>
</div>
<!-- SECTION [649-2572] -->
<h2><a name="add_components_offers_no_symbols_what_can_i_do_about_it" id="add_components_offers_no_symbols_what_can_i_do_about_it">"Add Components" offers no symbols! What can I do about it?</a></h2>
<div class="level2">
<p>
Make sure that at least one of your config files contains a valid path to a symbol library. At startup, gschem checks for the following config files (on a Debian system):
</p>
<ol>
<li class="level1"><div class="li"> system gafrc file: <code>/etc/gEDA/system-gafrc</code></div>
</li>
<li class="level1"><div class="li"> user gafrc file: <code>~/.gEDA/gafrc</code></div>
</li>
<li class="level1"><div class="li"> local gafrc file: <code>$PWD/gafrc</code></div>
</li>
<li class="level1"><div class="li"> system gschemrc file: <code>/etc/gEDA/system-gschemrc</code></div>
</li>
<li class="level1"><div class="li"> user gschemrc file: <code>~/.gEDA/gschemrc</code></div>
</li>
<li class="level1"><div class="li"> local gschemrc file: <code>$PWD/gschemrc]</code></div>
</li>
</ol>
<p>
All of these config files may or may not append paths to the library search list. If a config file conatins the command
</p>
<pre class="code">(reset-component-library)</pre>
<p>
the library search path will be emptied. Order is obviously important, as this command will erase any previously appended paths.
</p>
</div>
<!-- SECTION [2573-3377] -->
<h1><a name="gschem_usage" id="gschem_usage">Gschem usage</a></h1>
<div class="level1">
</div>
<!-- SECTION [3378-3405] -->
<h2><a name="how_do_i_move_a_component" id="how_do_i_move_a_component">How do I move a component?</a></h2>
<div class="level2">
<p>
Newbies with long-time Windows experience often ask this question. Here are three ways to easily move components with gschem:
</p>
<p>
One:
</p>
<ol>
<li class="level1"><div class="li"> Grab the component with the middle mouse button. The component will follow the cursor around as you move it.</div>
</li>
<li class="level1"><div class="li"> To place the component, release the middle mouse button. The component will stay where you placed it.</div>
</li>
</ol>
<p>
Two:
</p>
<ol>
<li class="level1"><div class="li"> Select the component by clicking it with the left mouse button. The component will highlight.</div>
</li>
<li class="level1"><div class="li"> Hit the â??Mâ?? key on the keyboard. The component will now follow the cursor around as you move it.</div>
</li>
<li class="level1"><div class="li"> To place the component, click the left mouse button. The component will stay where you placed it.</div>
</li>
</ol>
<p>
Three:
</p>
<ol>
<li class="level1"><div class="li"> Select the component by clicking it with the left mouse button. The component will highlight.</div>
</li>
<li class="level1"><div class="li"> Click the right mouse button. A pop-up menu will appear.</div>
</li>
<li class="level1"><div class="li"> With the left mouse button, click on the â??moveâ?? option in the pop-up menu.</div>
</li>
<li class="level1"><div class="li"> Click on the component with the left mouse button. The component will now follow the cursor around as you move it.</div>
</li>
<li class="level1"><div class="li"> To place the component, click the left mouse button. The component will stay where you placed it.</div>
</li>
</ol>
</div>
<!-- SECTION [3406-4580] -->
<h2><a name="how_do_i_change_the_size_of_the_text_on_a_symbol" id="how_do_i_change_the_size_of_the_text_on_a_symbol">How do I change the size of the text on a symbol?</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Select the symbol.</div>
</li>
<li class="level1"><div class="li"> Right click â?? down symbol (or do Hierarchy â?? down symbol). This takes you to the symbol editor.</div>
</li>
<li class="level1"><div class="li"> Select the pinnumber you want to change.</div>
</li>
<li class="level1"><div class="li"> Do Edit â?? Edit Text (or type keyboard shortcut “ex”).</div>
</li>
<li class="level1"><div class="li"> Change the font size in the pop-up box.</div>
</li>
<li class="level1"><div class="li"> Repeat for all desired text elements.</div>
</li>
<li class="level1"><div class="li"> File â?? save</div>
</li>
<li class="level1"><div class="li"> Right click â?? up (or Hierarchy â?? Up). Now you are back in the schematic editor.</div>
</li>
<li class="level1"><div class="li"> With the symbol still selected do Edit â?? Update component (or use the keyboard shortcut â??epâ??). If this doesnâ??t work, just delete the symbol and reload it.</div>
</li>
</ol>
<p>
More generally, you can use this procedure to edit anything on a symbol. (Substitute â??Edit Textâ?? for your desired edit, of course.)
</p>
</div>
<!-- SECTION [4581-5371] -->
<h2><a name="is_there_an_explicit_no_connect_symbol_that_i_can_should_place_in_the_schematic_to_prevent_gnetlist_from_thinking_i_ve_forgotten_a_connection" id="is_there_an_explicit_no_connect_symbol_that_i_can_should_place_in_the_schematic_to_prevent_gnetlist_from_thinking_i_ve_forgotten_a_connection">Is there an explicit "no connect" symbol that I can/should place in the schematic to prevent gnetlist from thinking I've forgotten a connection?</a></h2>
<div class="level2">
<p>
Answer: misc â?? nc-left, nc-right, nc-top, nc-bottom.
</p>
<p>
Caution: occassionally this may create a net called â??no_connectâ?? (or â??NC??”) which may lead to no-connect pins being connected together in gnetlist â?? which you probably _donâ??t_ want to happen.
</p>
</div>
<!-- SECTION [5372-5788] -->
<h2><a name="how_do_i_print_schematics_from_the_command_line" id="how_do_i_print_schematics_from_the_command_line">How do I print schematics from the command line?</a></h2>
<div class="level2">
<p>
Running the script <strong><code>gschem-print.scm</code></strong> will create the Postscript file that is specified on the command line.
</p>
<p>
The command line below creates a Postscript file from a schematic file (replace MY_SCH with the name of your schematic and GEDA_SCHEME_DIR with the name of the directory where your gEDA scheme files are installed):
</p>
<pre class="code">gschem -p -oMY_SCH.ps -sGEDA_SCHEME_DIR/gschem-print.scm MY_SCH.sch</pre>
<p>
The BASH script below, which I name <strong><code>gschem-print</code></strong>, creates a Postscript file for each schematic file that is specified on the command line and then outputs each Postscript file to the default printer:
</p>
<pre class="code">#!/bin/bash
# gschem options
# -oPS_FILENAME output to Postscript file PS_FILENAME
# -sSCRIPT_FILENAME run script SCRIPT_FILENAME
# -p autoplace windows
for name in $*
do
base=â??${name%.*}â??
gschem -p -o$base.ps -sGEDA_SCHEME_DIR/gschem-print.scm $base.sch
lpr -P$PRINTER $base.ps
done</pre>
</div>
<!-- SECTION [5789-6774] -->
<h2><a name="how_can_i_get_color_postscript_png_output" id="how_can_i_get_color_postscript_png_output">How can I get color postscript/PNG output?</a></h2>
<div class="level2">
<p>
Edit the <strong><code>system-gschemrc</code></strong> file or place the following into a <strong><code>gschemrc</code></strong> file (either <strong><code>~/.gEDA/gschemrc</code></strong> or a <strong><code>gschemrc</code></strong> file in the local directory where you invoke gschem):
</p>
<pre class="code">(output-color "enabled") ; for color postscript output
(image-color "enabled") ; for color PNG output (enabled by default)</pre>
<p>
To control the background of the PS output, change the following line in either gschem-darkbg (for the default black colored background) or gschem-lightbg (for the alternative light colored background):
</p>
<pre class="code">(output-color-background 16 "black" "null" "0 0 0" 0 0 0)</pre>
<p>
The â??0 0 0â?? is the RGB components (between 0..1) for the background color of the PS output.
</p>
<p>
To control the background of the <acronym title="Portable Network Graphics">PNG</acronym> output, change the following line in either gschem-darkbg (for the default black colored background) or gschem-lightbg (for the alternative light colored background):
</p>
<pre class="code">(background-color 0 "grey94" "null" "1 1 1" 255 255 255)</pre>
<p>
The 255 255 255 are the RGB components for the background color of the <acronym title="Portable Network Graphics">PNG</acronym> image.
</p>
</div>
<!-- SECTION [6775-7906] -->
<h2><a name="how_can_i_get_black_and_white_postscript_png_output" id="how_can_i_get_black_and_white_postscript_png_output">How can I get black and white postscript/PNG output?</a></h2>
<div class="level2">
<p>
For black and white PS output, place the following into a gschemrc file:
</p>
<pre class="code">(output-color "disabled") ; for monochrome postscript output</pre>
<p>
For black and white <acronym title="Portable Network Graphics">PNG</acronym> images, place the following into a gschemrc file:
</p>
<pre class="code">(image-color "disabled") ; for monochromoe PNG output</pre>
</div>
<!-- SECTION [7907-8272] -->
<h2><a name="how_can_i_insert_schematics_into_my_latex_document" id="how_can_i_insert_schematics_into_my_latex_document">How can I insert schematics into my LaTex document?</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Print the schematic to a file. This will be generic postscript (*.ps).</div>
</li>
<li class="level1"><div class="li"> Convert the postscript file to epsi with the tool ps2epsi. This is a script from the ghostscript suite.</div>
</li>
<li class="level1"><div class="li"> Include usepackage{graphicx} to the preamble of your latex document. Use the comand includegraphics to place your schematic.</div>
</li>
</ol>
<p>
A simple example:
</p>
<pre class="code">\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{image}
\includegraphics[width=100mm]{ModulPID.epsi}
\end{image}
\end{document}</pre>
</div>
<!-- SECTION [8273-8836] -->
<h2><a name="how_can_i_split_postscript_output_over_multiple_pages" id="how_can_i_split_postscript_output_over_multiple_pages">How can I split postscript output over multiple pages?</a></h2>
<div class="level2">
<p>
gschem does not provide this functionality internally, however there is a program called â??posterâ?? which does exactly this. It can be downloaded from either <a href="http://www.gnu.org/directory/poster.html" class="urlextern" title="http://www.gnu.org/directory/poster.html" rel="nofollow">here</a> (GNU) or <a href="http://printing.kde.org/downloads/" class="urlextern" title="http://printing.kde.org/downloads/" rel="nofollow">here</a> (KDE Print).
</p>
</div>
<!-- SECTION [8837-9181] -->
<h2><a name="how_do_i_unlock_a_locked_component" id="how_do_i_unlock_a_locked_component">How do I unlock a locked component</a></h2>
<div class="level2">
<p>
When a component is locked it is unselectable using the middle mouse button however it is selectable using a window select. To window select a component click and hold the left mouse button and drag the mouse to create a rectangular region containing the component to be unlocked. Execute the command <strong><em>Edit</em></strong> <strong>â??</strong> <strong><em>unLock</em></strong> to unlock the component.
</p>
</div>
<!-- SECTION [9182-9591] -->
<h1><a name="gschem_configuration_customization" id="gschem_configuration_customization">Gschem configuration/customization</a></h1>
<div class="level1">
<p>
Gschem is configurable in more ways than can be describe here. Look at “system-gschemrc” for suggestions what else can be done.
</p>
</div>
<!-- SECTION [9592-9769] -->
<h2><a name="how_can_i_change_the_default_size_of_floating_text" id="how_can_i_change_the_default_size_of_floating_text">How can I change the default size of floating text?</a></h2>
<div class="level2">
<p>
Put
</p>
<pre class="code">(text-size 10)</pre>
<p>
into your gschemrc and replace “10” with your favorite size.
</p>
</div>
<!-- SECTION [9770-9928] -->
<h2><a name="how_can_i_have_a_different_background_color_other_than_black" id="how_can_i_have_a_different_background_color_other_than_black">How can I have a different background color other than black?</a></h2>
<div class="level2">
<p>
Edit the system-gschemrc file and near the top you will find lines like:
</p>
<pre class="code">;
; Start of color section
;
; Load up a color scheme has a light (almost white) background
; Comment out the first line and comment in the second line for a
; dark (black) background. The dark background is the original look.
;
(load (string-append gedadatarc "/gschem-darkbg")) ; dark background
;(load (string-append gedadatarc "/gschem-lightbg")) ; light background</pre>
<p>
Comment out the <strong><code>darkbg</code></strong> line (with a ;) and comment in the <strong><code>lightbg</code></strong> line. This will give you a light background instead of a black background. It also adjust all the other colors to be compatible with a light background.
</p>
<p>
If you want more control over the colors, please edit <strong><code>${prefix}/share/gEDA/gschem-darkbg</code></strong> or <strong><code>${prefix}/share/gEDA/gschem-lightbg</code></strong> or create your own file and load it in the <strong><code>system-gschemrc</code></strong> file.
</p>
<p>
<acronym title="In my humble opinion">IMHO</acronym>, a black background is easier on the eyes for long periods of time.
</p>
</div>
<!-- SECTION [9929-10992] -->
<h2><a name="how_can_i_get_refdes_automatically_numbered_when_i_draw_a_schematic" id="how_can_i_get_refdes_automatically_numbered_when_i_draw_a_schematic">How can I get refdes automatically numbered when I draw a schematic?</a></h2>
<div class="level2">
<p>
Edit the system-gschemrc file or place the following into a gschemrc file (either <strong><code>~/.gEDA/gschemrc</code></strong> or a <strong><code>gschemrc</code></strong> file in the local directory where you invoke gschem):
</p>
<pre class="code">(load "$YOUR_INSTALL_PATH/share/gEDA/scheme/auto-uref.scm") ; load the autonumbering script
(add-hook! add-component-hook auto-uref) ; autonumber when adding a component
(add-hook! copy-component-hook auto-uref) ; autonumber when copying a component</pre>
<p>
Please substitute $YOUR_INSTALL_PATH by the path where geda is installed.
</p>
</div>
<!-- SECTION [10993-11636] -->
<h2><a name="what_are_the_mouse_bindings_in_gschem" id="what_are_the_mouse_bindings_in_gschem">What are the mouse bindings in gschem?</a></h2>
<div class="level2">
<p>
By default you get:
</p>
<ul>
<li class="level1"><div class="li"> Left mouse button is used for picking and drawing</div>
</li>
<li class="level1"><div class="li"> Middle mouse button is either move object (just hold down the middle button over an object and move the mouse) or copy object (ALT key held down while holding down the middle button over object and move the mouse).</div>
</li>
<li class="level1"><div class="li"> Right mouse button is a popup menu.</div>
</li>
</ul>
<p>
You can change the middle button by adding the following to a gschemrc file:
</p>
<pre class="code">(middle-button "action") ;default binding, move or copy an object</pre>
<p>
or:
</p>
<pre class="code">(middle-button "stroke") ;draw mouse gestures/strokes (must install libstroke to enable</pre>
<p>
or:
</p>
<pre class="code">(middle-button "repeat") ;repeat the last command executed</pre>
<p>
You can change the right button by adding the following to a gschemrc file:
</p>
<pre class="code">(third-button "popup") ;default binding, show a popup menu</pre>
<p>
or:
</p>
<pre class="code">(third-button "mousepan") ;use the mouse to pan around the schematic</pre>
<p>
For more information on these options, please see the <strong><code>${install_prefix}/share/gEDA/system-gschemrc</code></strong> file.
</p>
</div>
<!-- SECTION [11637-12722] -->
<h1><a name="information_on_gschem_symbols" id="information_on_gschem_symbols">Information on gschem symbols</a></h1>
<div class="level1">
</div>
<!-- SECTION [12723-12767] -->
<h2><a name="what_s_this_business_about_heavy_vs._light_symbols" id="what_s_this_business_about_heavy_vs._light_symbols">What's this business about heavy vs. light symbols?</a></h2>
<div class="level2">
<p>
This nomenclature arose from a discussion which frequently appears on the geda-user and geda-dev mailing lists. A light symbol is one which contains very few built-in attributes in the symbol itself. It requires that the user attach almost all attributes at the schematic level (e.g. using either gschem or gattrib). A heavy symbol is one which contains many attributes (such as package footprints, SPICE model names, etc.) built into the symbol file itself. A heavy symbol therefore requires very little attribute attachment at the schematic level â?? you just place it and youâ??re done.
</p>
<p>
The debate between proponents of heavy and light symbols is very detailed and involved. In caricature, proponents of heavy symbols belive that they provide better integration between gschem and PCB since the important layout attributes (such as <a href="geda_pcb_tips.html" class="wikilink1" title="geda:pcb_tips">footprint name</a>) are already built into the symbol. This is considered a good thing for new users (noobs) who just want to design a simple board and donâ??t appreciate or donâ??t care about the zillions of variations that even a simple resistor might have (e.g. different footprint, TCR, precision, material composition, etc). Proponents of light symbols prefer to deal with attributes at the schematic level because they believe it to be more flexible. They are quick to point out that a library of heavy symbols will quickly grow into the thousands of parts with grotesquely long names trying to distinguish between the different variations of the part. They also point out that the utility �����gattribâ?? is the preferred tool for dealing with attributes at the schematic level (i.e. in the .sch file).
</p>
<p>
GEDA/gaf, as default configured, uses light symbols, although it can be configured to use heavy symbols. For further information, you may read these dicussions from the geda-user mailing list:
</p>
<p>
<a href="http://archives.seul.org/geda/user/Jun-2005/msg00001.html" class="urlextern" title="http://archives.seul.org/geda/user/Jun-2005/msg00001.html" rel="nofollow">http://archives.seul.org/geda/user/Jun-2005/msg00001.html</a> <a href="http://archives.seul.org/geda/dev/Oct-2005/msg00043.html" class="urlextern" title="http://archives.seul.org/geda/dev/Oct-2005/msg00043.html" rel="nofollow">http://archives.seul.org/geda/dev/Oct-2005/msg00043.html</a>
</p>
</div>
<!-- SECTION [12768-14912] -->
<h2><a name="i_am_using_a_symbol_out_of_the_library._how_come_it_s_not_aligned_to_the_grid" id="i_am_using_a_symbol_out_of_the_library._how_come_it_s_not_aligned_to_the_grid">I am using a symbol out of the library. How come it's not aligned to the grid?</a></h2>
<div class="level2">
<p>
The symbols in the symbol library, like those available at the <a href="http://www.gedasymbols.org/" class="urlextern" title="http://www.gedasymbols.org" rel="nofollow"> gedasymbols </a> website are contributed by users just like you. Some people use different grid settings than other people (e.g. 50mil vs. 100mil). If you discover a symbol which seems to be off the grid, try reducing your grid spacing, move the symbol so that it sits on <strong>your</strong> grid, then revert to your preferred grid settings.
</p>
<p>
Yes, the gEDA docs suggest that you use a 100mil grid spacing. But everybody likes to do things their own way, and there is no overall symbol dictator to enforce the rules on contributed symbols. Therefore, you just need to be aware of this possibility.
</p>
</div>
<!-- SECTION [14913-15690] -->
<h2><a name="how_do_i_promote_an_invisible_symbol_attribute_into_the_schematic" id="how_do_i_promote_an_invisible_symbol_attribute_into_the_schematic">How do I promote an invisible symbol attribute into the schematic?</a></h2>
<div class="level2">
<p>
Most attributes living in the symbol do not get promoted to the schematic unless they are visible. To promote invisible symbol attributes, look for the following keywords in the system-gschemrc file:
</p>
<pre class="code">(attribute-promotion â??enabledâ??);
(promote-invisible â??disabledâ??) ; â?? This one
(keep-invisible â??enabledâ??)</pre>
<p>
Add to your gschemrc file:
</p>
<pre class="code">(promote-invisible â??enabledâ??)</pre>
<p>
and you will get all the attributes promoted. The â??keep-invisibleâ?? keyword will keep hidden those attributes that are hidden in the symbol file.
</p>
</div>
<!-- SECTION [15691-16326] -->
<h2><a name="what_should_i_do_about_power_pins_on_my_symbolsmake_them_visible_explicit_or_invisible_implicit" id="what_should_i_do_about_power_pins_on_my_symbolsmake_them_visible_explicit_or_invisible_implicit">What should I do about power pins on my symbols: Make them visible (explicit) or invisible (implicit)?</a></h2>
<div class="level2">
<p>
In the past, digital logic circuits often hid the power pin, and attached power nets using an attribute inside the symbol. Modern thought is that this is a bad practice (although religious wars still occasionally rage about this topic).
</p>
<p>
Itâ??s marginally OK for an old logic circuit which is all 5V TTL to have hidden power and GND pins. If you only have +5V on your board, then hiding the power pin can simplify your schematic somewhat. However, few designers design such circuits nowadays; 5V TTL (and 5V CMOS) are rapidly becoming antique technologies.
</p>
<p>
Itâ??s always been unacceptable to hide the power pins on analog chips. First, analog often has multiple power connections (VCC, VEE) which need to be explicitly drawn out. Second, good design practice is to place decoupling caps on each and every power pin. Sometimes one places an inductor in series with power also. Since these should be drawn into the schematic, it is best done by attaching them to an explicit power pin. Therefore, one should never use hidden power pins for analog symbols.
</p>
<p>
New logic circuits often use multiple supplies for different chip sections (OVDD, DVDD, etc). It is also typical to have several logic families on a single board (5V, 3.3V etc.). Therefore, itâ??s best to explicitly place and wire the power pins on the symbol. Hidden power pins are a recipe for disaster since you can all too easily misconnect a 5V part to a 3.3V power net, for example.
</p>
<p>
To paraphrase Nancy Reagan: Just say â??noâ?? to hidden power pins.
</p>
<p>
That said, it may still be usefull to detach the power pins from the functional part of the symbol. To do so, define a seperate power symbol and give it the same <a href="http://geda.seul.org/wiki/geda:glossary" class="wikilink1" title="geda:glossary">refdes</a> as the functional part. A run of gsch2pcb will treat the siblings properly as one single component. As neither gschem nor gsch2pcb explicitely know that the component is only complete with both symbols defined, you have to check yourself. With this workaround, you can draw all power related circuitry in one corner of the schematic where it does not interfere with the signal nets. In many cases this is advantageous with analog circuits.
</p>
</div>
<!-- SECTION [16327-18584] -->
<h2><a name="is_there_a_specification_or_manual_for_creating_gschem_symbols_where_is_it" id="is_there_a_specification_or_manual_for_creating_gschem_symbols_where_is_it">Is there a specification or manual for creating gschem symbols? Where is it?</a></h2>
<div class="level2">
<p>
Yes. It is the <a href="geda_scg.html" class="wikilink1" title="geda:scg">Symbol Creation Guide</a>.
</p>
</div>
<!-- SECTION [18585-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_faq-simulation.html
Index: geda_faq-simulation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq-simulation</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq-simulation?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq-simulation?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq-simulation?do=export_raw" />
<meta name="date" content="2006-05-06T17:10:37-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#simulation" class="toc">Simulation</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#i_want_to_simulate_my_analog_circuit_design._what_are_my_options" class="toc">I want to simulate my analog circuit design. What are my options?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_about_tclspice_what_is_it_should_i_use_it" class="toc">What about tclspice? What is it? Should I use it?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#isn_t_there_a_nice_graphical_schematic_capture_front_end_so_i_can_just_place_components_and_press_a_simulate_button" class="toc">Isn't there a nice graphical (schematic capture) front end so I can just place components and press a "simulate" button?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_create_my_schematic_to_facilitate_analog_simulation" class="toc">How do I create my schematic to facilitate analog simulation?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#which_spice_netlister_backend_to_gnetlist_should_i_use_there_are_several_of_them" class="toc">Which spice netlister backend to gnetlist should I use? There are several of them. . . .</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_about_if_i_want_to_use_gnucap_can_i_use_spice-sdb_to_create_my_gnucap_netlists" class="toc">How about if I want to use gnucap, can I use spice-sdb to create my gnucap netlists?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#why_not_reuse_my_simulation_schematic_for_layout" class="toc">Why not reuse my simulation schematic for layout?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="simulation" id="simulation">Simulation</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-25] -->
<h2><a name="i_want_to_simulate_my_analog_circuit_design._what_are_my_options" id="i_want_to_simulate_my_analog_circuit_design._what_are_my_options">I want to simulate my analog circuit design. What are my options?</a></h2>
<div class="level2">
<p>
Within the cannonical gEDA Suite apps there are two analog circuit simulators: ngspice and gnucap. In (slightly) more detail:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/" rel="nofollow">Ngspice</a> is a port/clean-up of classical SPICE 3f5 to the GNU/Linux platform. It is fully functional, includes the XSpice extensions (such as SPICE 2 POLY constructs), and the CIDER framework.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.gnucap.org/" class="urlextern" title="http://www.gnucap.org/" rel="nofollow">Gnucap</a> is a new circuit simulator written from the ground up. It offers the ability to perform event-driven â?? as well as continuous time â?? simulations. It is the work of Al Davis, Professor of Electrical Engineering at Kettering University. If you wish to download it, make sure you grab the latest version, available through the â??developement releasesâ?? link on the gnucap website.</div>
</li>
</ul>
<p>
Both are CLI (command line interface) programs, meaning that you intereact with the simulator by typing commands at a command line. It also means that you need to learn the simulator-specific command set.
</p>
<p>
If you prefer a graphical interface, the new gEDA app GSpiceUI provides a nice <acronym title="Graphical User Interface">GUI</acronym> front-end to drive the simulation programs. However, GSpiceUI is not a complete schematic-to-simulation-output simulator like LTSpice or PSpice. Rather, it just provides a <acronym title="Graphical User Interface">GUI</acronym> menu which helps you navigate the commands you need to perform your ngspice/gnucap simulation.
</p>
</div>
<!-- SECTION [26-1444] -->
<h2><a name="what_about_tclspice_what_is_it_should_i_use_it" id="what_about_tclspice_what_is_it_should_i_use_it">What about tclspice? What is it? Should I use it?</a></h2>
<div class="level2">
<p>
<a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/" rel="nofollow">Tclspice</a> was a fork off the ngspice development path. It was begun in the 2002 timeframe. In principle, tclspice would export the SPICE command set to a TCL <acronym title="Application Programming Interface">API</acronym>, allowing you to embed SPICE analyses into a TCL program. This vision is certainly very attractive since TCL is a powerful scripting language â?? much more powerful than the scripting constructs available from within SPICE itself. Using TCL, one could imagine writing complex circuit optimizers, adding behavioral elements to a simulation, and finally gaining control over SPICEâ??s graphical output.
</p>
<p>
As it turns out, this goal was partially met â?? with tclspice you can indeed do something like this:
</p>
<pre class="code">#! tclsh
package require spice
spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm
spice::source netlistname.cir
spice::tran 0.1ns 40ns
spice::run
spice::plot Vout
puts "All done now!"</pre>
<p>
Unfortunately, tclspice lacks certain important features, like providing you a return code which tells you whether your simulation actually worked or errored out instead. Also, the graphics functionality never seemed to work (at least for me ... and the developers admit that the graphics stink). Converting TCL variables to and from SPICE vectors never seemed to work â?? again at least for me. Finally, ngspice (at least) has a lot of memory leaks, making long simulation runs difficult. Therefore, tclspice doesnâ??t meet the promise it originally held out: a convenient, scriptable way to drive SPICE simulations.
</p>
<p>
Developement on tclspice effectively stopped in 2004. Perhaps some day somebody will pick it up again. In the meantime, the main <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/" rel="nofollow">ngspice</a> development branch has picked up the tclspice features if you want them (they require separate configuration options), and the code is fresher.
</p>
</div>
<!-- SECTION [1445-3373] -->
<h2><a name="isn_t_there_a_nice_graphical_schematic_capture_front_end_so_i_can_just_place_components_and_press_a_simulate_button" id="isn_t_there_a_nice_graphical_schematic_capture_front_end_so_i_can_just_place_components_and_press_a_simulate_button">Isn't there a nice graphical (schematic capture) front end so I can just place components and press a "simulate" button?</a></h2>
<div class="level2">
<p>
No. The best you can do is use GSpiceUI.
</p>
</div>
<!-- SECTION [3374-3548] -->
<h2><a name="how_do_i_create_my_schematic_to_facilitate_analog_simulation" id="how_do_i_create_my_schematic_to_facilitate_analog_simulation">How do I create my schematic to facilitate analog simulation?</a></h2>
<div class="level2">
<p>
The usual design path is â??gschemâ?? â?? â??gnetlist -g spice-sdbâ?? â?? [â??ngspiceâ?? | â??gnucapâ??]. You need to attach attributes to the components in your schematic to provide attributes needed by SPICE/Gnucap. You can also attach attributes using gattrib.
</p>
<p>
The <a href="geda_csygas.html" class="wikilink1" title="geda:csygas">Circuit Simulation using gEDA and SPICE - HOWTO</a> describes all this in great detail.
</p>
<p>
Some <a href="http://www.brorson.com/gEDA/SPICE/" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/" rel="nofollow">SPICE resources</a> will help you understand how to use spice-sdb.
</p>
</div>
<!-- SECTION [3549-4101] -->
<h2><a name="which_spice_netlister_backend_to_gnetlist_should_i_use_there_are_several_of_them" id="which_spice_netlister_backend_to_gnetlist_should_i_use_there_are_several_of_them">Which spice netlister backend to gnetlist should I use? There are several of them. . . .</a></h2>
<div class="level2">
<p>
Use spice-sdb. It is by far the most advanced and feature rich. The others are there only for reasons of history. Note that spice-sdb is an extension of one of the other SPICE backends, so you arenâ??t missing anything by using spice-sdb.
</p>
</div>
<!-- SECTION [4102-4442] -->
<h2><a name="how_about_if_i_want_to_use_gnucap_can_i_use_spice-sdb_to_create_my_gnucap_netlists" id="how_about_if_i_want_to_use_gnucap_can_i_use_spice-sdb_to_create_my_gnucap_netlists">How about if I want to use gnucap, can I use spice-sdb to create my gnucap netlists?</a></h2>
<div class="level2">
<p>
Yes. Also, you can draw your schematic using gnucap directives available in the â??spiceâ?? symbol directory.
</p>
</div>
<!-- SECTION [4443-4650] -->
<h2><a name="why_not_reuse_my_simulation_schematic_for_layout" id="why_not_reuse_my_simulation_schematic_for_layout">Why not reuse my simulation schematic for layout?</a></h2>
<div class="level2">
<p>
Newbies commonly want to create a single schematic for both design simulation/validation as well as layout. This vision seems very attractive at first, since your layout will have been tested & validated before committing it to FR-4. However, the devil is in the details; using a single schematic for simulation and layout usually doesnâ??t work for the following reasons:
</p>
<ul>
<li class="level1"><div class="li"> Components required for simulation and layout are normally very different. For example, simulation often requires a schematic holding a bunch of SPICE-related devices such as voltage sources, dependent sources, SPICE directives, and so on. On the other hand, layout requires non-SPICEable components such as connectors, logic devices, and even things like voltage regulators which might have no SPICE models available, but will pollute your SPICE netlist, possibly making the netlister and the simulator unhappy.</div>
</li>
<li class="level1"><div class="li"> Some real electronic components donâ??t have built-in SPICE models. There are plenty of components which donâ??t have native SPICE models like potentiometers, transformers, thermistors, EMI filters, logic gates, crystals, vacuum tubes, and on and on. Therefore, if your design uses any of these components, you must mock up the device using an equivalent circuit for simulation. This makes it very difficult to reuse the simulation schematic for layout.</div>
</li>
<li class="level1"><div class="li"> Usually, you only really need to simulate a subset of your design. For example, you might want to simulate the behavior of a filter or oscillator circuit, but donâ??t care about (or canâ??t simulate) your power supply, glue logic, or other part of your design. If you insist upon creating a SPICE model for these circuit subsections, you might need to jump through a lot of hoops â?? and do a lot of unnecessary hard work â?? in order to find or create SPICE models for parts of your design which arenâ??t important.</div>
</li>
</ul>
<p>
Therefore, I (SDB) normally recommend that you shouldnâ??t try too hard to use the same schematic for simulation and for layout. If you can do it, great! But usually you canâ??t.
</p>
<p>
Personally, I tend to create SPICE models of only the critical analog sections of my design. A larger project might therefore have a couple of simulation schematics validating a couple of analog subcircuits. Besides the simulation scheamtics, Iâ??ll have a main schematic which is used for layout.
</p>
</div>
<!-- SECTION [4651-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_faq.html
Index: geda_faq.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:faq</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:faq?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:faq?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:faq?do=export_raw" />
<meta name="date" content="2006-05-08T16:37:10-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_faq" class="toc">gEDA FAQ</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#what_is_the_geda_project" class="toc">What is the gEDA project?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_is_geda_gaf_and_how_does_it_relate_to_geda" class="toc">What is gEDA/gaf and how does it relate to gEDA?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_is_the_geda_suite" class="toc">What is the gEDA suite?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#why_what_makes_geda_so_different_from_other_eda_tools" class="toc">Why? What makes gEDA so different from other EDA tools?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#why_does_the_geda_suite_seem_like_a_collection_of_random_programs_and_not_a_single_integrated_application" class="toc">Why does the gEDA Suite seem like a collection of random programs, and not a single integrated application?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#so_which_is_better_a_suite_i.e._confederacy_of_programs_or_an_integrated_application" class="toc">So which is better, a suite (i.e. confederacy) of programs or an integrated application?</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#suite_confederacy_pros" class="toc">Suite (confederacy) pros:</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#suite_confederacy_cons" class="toc">Suite (confederacy) cons:</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#monolithic_application_pros" class="toc">Monolithic application pros:</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#monolithic_application_cons" class="toc">Monolithic application cons:</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#what_license_does_geda_use" class="toc">What license does gEDA use?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#where_can_i_get_more_information_about_and_download_geda" class="toc">Where can I get more information about and download gEDA?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#okay_how_do_i_start_using_geda" class="toc">Okay, how do I start using gEDA?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_faq" id="geda_faq">gEDA FAQ</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-24] -->
<h2><a name="what_is_the_geda_project" id="what_is_the_geda_project">What is the gEDA project?</a></h2>
<div class="level2">
<p>
The gEDA project is working on producing a full <acronym title="GNU General Public License">GPL</acronym>‘d suite of EDA (<em class="u">E</em>lectronic <em class="u">D</em>esign <em class="u">A</em>utomation) tools. These tools are used for electrical circuit design, schematic capture, simulation, prototyping, and production. Currently, the gEDA project offers a mature suite of free software applications for electronics design, including schematic capture, attribute management, bill of materials (BOM) generation, netlisting into over 20 netlist formats, analog and digital simulation, and printed circuit board (PCB) layout.
</p>
<p>
The originator of gEDA project is Ales Hvezda. The gEDA project has grown quite a bit, since the Spring of 1998. It is no longer one person producing tools. Instead, there are many people involved. A few people are contributing to the original tools, while others are doing their own development on their own tools. So, gEDA does not refer to the original tools anymore (those tools now stand on their own now), but instead it refers to all the projects which are free and are somehow associated with this webpage or the geda-dev/geda-user mailing lists. By associating with gEDA, free software authors do not give up any control over their tools, but they gain a community which cares about quality and free (as in freedom) EDA tools.
</p>
<p>
gEDA can be pronounced â??gee-daahhhâ?? (rhymes with cheetah) or â??g-dahhh (short g).
</p>
</div>
<!-- SECTION [25-1420] -->
<h2><a name="what_is_geda_gaf_and_how_does_it_relate_to_geda" id="what_is_geda_gaf_and_how_does_it_relate_to_geda">What is gEDA/gaf and how does it relate to gEDA?</a></h2>
<div class="level2">
<p>
gaf stands for â??<em class="u">g</em>schem <em class="u">a</em>nd <em class="u">f</em>riendsâ??. It is a subset of the entire tool suite grouped together under the gEDA name. gEDA/gaf is a collection of tools which currently includes:
</p>
<ul>
<li class="level1"><div class="li"> gschem: A schematic capture program</div>
</li>
<li class="level1"><div class="li"> gnetlist: A netlist generation program</div>
</li>
<li class="level1"><div class="li"> gsymcheck: A syntax checker for schematic symbols</div>
</li>
<li class="level1"><div class="li"> gattrib: A spreadsheet programm that manipulates the properties of symbols of a schematic</div>
</li>
<li class="level1"><div class="li"> libgeda: Libraries for gschem gnetlist and gsymcheck</div>
</li>
<li class="level1"><div class="li"> gsch2pcb: Forward annotation from your schematic to layout using <a href="geda_pcb.html" class="wikilink2" title="geda:pcb">PCB</a>.</div>
</li>
<li class="level1"><div class="li"> some minor utils</div>
</li>
</ul>
<p>
The gEDA/gaf tools share a common file format (.sch) and also share a common link library (libgeda.so). The gEDA/gaf source distribution can be found on this website (geda.seul.org).
</p>
<p>
Even though gaf is very much a part of gEDA, the gEDA name does not necessarily only apply to gaf â?? tools gathered under the â??gEDAâ?? moniker include many other programs. Indeed, gEDA refers to <strong>any</strong> <acronym title="GNU General Public License">GPL</acronym>‘d EDA tool which decides to associate itself with the gEDA website/mailing list. Important examples of gEDA tools include the layout program <a href="geda_pcb.html" class="wikilink2" title="geda:pcb">PCB</a>, the Verilog complier <a href="http://www.icarus.com/eda/verilog/" class="urlextern" title="http://www.icarus.com/eda/verilog/" rel="nofollow">Icarus Verilog</a>, the analog circuit simulator <a href="http://www.gnucap.org/" class="urlextern" title="http://www.gnucap.org/" rel="nofollow">gnucap</a>, and the open-source SPICE simulator <a href="http://www.ngspice.org/" class="urlextern" title="http://www.ngspice.org/" rel="nofollow">ngspice</a>. Many other gEDA programs also exist.
</p>
<p>
For historical reasons, on <a href="http://freshmeat.net/" class="urlextern" title="http://freshmeat.net/" rel="nofollow">freshmeat</a> gaf is known as the package â??gEDAâ??.
</p>
</div>
<!-- SECTION [1421-2969] -->
<h2><a name="what_is_the_geda_suite" id="what_is_the_geda_suite">What is the gEDA suite?</a></h2>
<div class="level2">
<p>
The gEDA suite is a CDROM image (.iso) created by Stuart Brorson to make it easier to install all the various tools that are part of, associated with, or just plain work with the gEDA projectâ??s software. The vision is that the tools collected on the gEDA suite CDROM constitute a coherent, complete, open-source design environment gathered into one convenient download. Currently the gEDA suite CDROM includes:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/" class="urlextern" title="http://geda.seul.org/tools/" rel="nofollow">gEDA/gaf</a> â?? schematic capture and netlisting</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/ngspice" class="urlextern" title="http://geda.seul.org/tools/ngspice" rel="nofollow">ngspice</a> â?? SPICE simulation</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gnucap" class="urlextern" title="http://geda.seul.org/tools/gnucap" rel="nofollow">gnucap</a> â?? Analog simulation</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gspiceui" class="urlextern" title="http://geda.seul.org/tools/gspiceui" rel="nofollow">gspiceui</a> â?? <acronym title="Graphical User Interface">GUI</acronym> front end for ngspice/gnucap</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/pcb" class="urlextern" title="http://geda.seul.org/tools/pcb" rel="nofollow">pcb</a> â?? PCB layout</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gerbv" class="urlextern" title="http://geda.seul.org/tools/gerbv" rel="nofollow">gerbv</a> â?? Gerber viewer</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/icarus" class="urlextern" title="http://geda.seul.org/tools/icarus" rel="nofollow">Icarus Verilog</a> â?? Verilog simulator</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/tools/gtkwave" class="urlextern" title="http://geda.seul.org/tools/gtkwave" rel="nofollow">GTKWave</a> â?? Digitial waveform viewer</div>
</li>
<li class="level1"><div class="li"> <a href="http://wcalc.sourceforge.net/" class="urlextern" title="http://wcalc.sourceforge.net/" rel="nofollow">wcalc</a> â?? Transmission line and electromagnetic structure analysis</div>
</li>
</ul>
<p>
At the center of the gEDA suite CDROM is an easy to use installer that automates the building and installing of all the various packages from source â?? making it easy to install the whole suite for the first time user. The gEDA suite CDROM image is available from the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">download</a> page. <strong>Note: The installer works only with Linux!</strong>
</p>
</div>
<!-- SECTION [2970-4492] -->
<h2><a name="why_what_makes_geda_so_different_from_other_eda_tools" id="why_what_makes_geda_so_different_from_other_eda_tools">Why? What makes gEDA so different from other EDA tools?</a></h2>
<div class="level2">
<p>
Tools in the gEDA suite and associated tools have the following characteristics:
</p>
<ul>
<li class="level1"><div class="li"> Free in the monetary sense (no cost).</div>
</li>
<li class="level1"><div class="li"> All the file formats and all the source codes are available via the <acronym title="GNU General Public License">GPL</acronym> license. This license grants specific rights to the authors and users of <acronym title="GNU General Public License">GPL</acronym>‘d software.</div>
</li>
<li class="level1"><div class="li"> Independence from any one vendor. All gEDA tools come with full source. You can change, improve, port, and even distribute (if you follow the terms of the <acronym title="GNU General Public License">GPL</acronym>) the tools.</div>
</li>
<li class="level1"><div class="li"> No mechanism is used to restrict the use of the tools (like making use of hard disk serial numbers or ethernet addresses to force the software to only run on one machine).</div>
</li>
<li class="level1"><div class="li"> No arbitrary, marketeering-driven limitations. Free versions of commercial tools usually include capricious limitations (i.e. limited design size, inability to print, inability to export netlists, etc.) which cripple the program, and force the serious user to buy the real tool. In contrast, the gEDA tools are fully-featured, and do not arbitrarily impose limits on design as a way of extracting money from you.</div>
</li>
<li class="level1"><div class="li"> Legacy design protection. Since the software will always run forever (because of above), gEDA tool design files will always be viewable/editable (with the right versions of the software).</div>
</li>
<li class="level1"><div class="li"> Open design flow. This means that the tools talk to each other via known and documented means (files / APIs). It is easy to replace a tool or augment the tools with something else if you so desire.</div>
</li>
<li class="level1"><div class="li"> Stability - Bugs which cause crashes are investigated immediately and fixed as soon as possible.</div>
</li>
<li class="level1"><div class="li"> Minimize bloat and unnecessary features.</div>
</li>
<li class="level1"><div class="li"> Run on as many platforms as possible. For gEDA/gaf: GNU/Linux, various other Unix systems.</div>
</li>
<li class="level1"><div class="li"> Developed in an open (no secrets) fashion.</div>
</li>
<li class="level1"><div class="li"> Strive to be documented.</div>
</li>
</ul>
<p>
gEDA may not have all the latest cutting edge features found in other packages and may be viewed sometimes as being on the trailing edge of EDA technology, but the tools are becoming useful to a lot of people because the above mentioned reasons.
</p>
</div>
<!-- SECTION [4493-6575] -->
<h2><a name="why_does_the_geda_suite_seem_like_a_collection_of_random_programs_and_not_a_single_integrated_application" id="why_does_the_geda_suite_seem_like_a_collection_of_random_programs_and_not_a_single_integrated_application">Why does the gEDA Suite seem like a collection of random programs, and not a single integrated application?</a></h2>
<div class="level2">
<p>
The gEDA suite is indeed a confederacy of somewhat independent programs. This happened for reasons of history: Ales Hvezda started the gEDA project more or less on his own. The original vision was to produce an end-to-end software suite for creating PC boards so that robotics hobbiests could design their own boards. However, as the gEDA project progressed the large magnitude of this task became clear â?? and coding many of the proposed apps had not even begun!
</p>
<p>
Meanwhile, other software developers â?? with their own independently written applications â?? found the gEDA project vision compelling. The authors of those applications joined Ales and contributed their programs to the gEDA project. Amongst the contributed projects was â??pcbâ??, a ten year old (at that time) PCB layout program. With the contribution of â??pcbâ??, gEDAâ??s originally planned layout tool â??gpcbâ?? was scuttled. At the same time, other developers contributed analog and digital simulators, waveform viewers, and so on.
</p>
<p>
In this way the gEDA suite came together. It is not shared code, or a common user interface which distinguishes the gEDA suite. Rather, the shared vision of an open-source EDA environment is the thread which holds the project together. Today, the gEDA Suite is a collection of many different programs contributed by many different authors. The apps strive to work together, and usually succeed. But the separate beginnings of each program in the suite are still observable. Nonetheless, with a little work the various components of the suite are interoperable, and many people have completed quite complex board designs using the gEDA suite.
</p>
</div>
<!-- SECTION [6576-8346] -->
<h2><a name="so_which_is_better_a_suite_i.e._confederacy_of_programs_or_an_integrated_application" id="so_which_is_better_a_suite_i.e._confederacy_of_programs_or_an_integrated_application">So which is better, a suite (i.e. confederacy) of programs or an integrated application?</a></h2>
<div class="level2">
<p>
This is ultimately a matter of religion. Iâ??ll summarize some of the pros and cons (as I see them) of each approach here.
</p>
</div>
<!-- SECTION [8347-8570] -->
<h3><a name="suite_confederacy_pros" id="suite_confederacy_pros">Suite (confederacy) pros:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> You can use â??best of breedâ?? applications for each part of the design flow. That is, you can use the standard gEDA flow gschem â?? gsch2pcb â?? pcb to create a PC Board. However, if you think that the open-source application â??pcbâ?? stinks, you can use the flow gschem â?? gnetlist â?? Protel (for example). Recall that gnetlist can output more than twenty different netlist formats! Moreover, if you donâ??t like one component of the flow, you can write another tool to replace it. Now at this time it is true that only a single application generally exists to perform a particular task. However, this situation will likely change with time â?? witness the forking of the â??pcbâ?? project, the contributed netlister <a href="http://www.viasic.com/opensource/" class="urlextern" title="http://www.viasic.com/opensource/" rel="nofollow">gnetman</a>, as well as the <a href="http://web.comhem.se/~u31829222/" class="urlextern" title="http://web.comhem.se/~u31829222/" rel="nofollow">HEC</a> project. As a general rule, the suite approach offers the greatest freedom to the user.</div>
</li>
<li class="level1"><div class="li"> The design flow has a lot of natural breakpoints. These occur where one design tool completes its job and writes out a file (i.e. gschem writes out a .sch file, or gnetlist writes out a SPICE netlist). At this point, you can easily break into the flow and write scripts which process and/or munge the design data. For big, advanced designs, this is a real advantage to the â??design suiteâ?? approach. This advantage may appeal only to the â??power userâ??, but note itâ??s importance: professional-grade EDA suites (Synopsys, Xilinx) also work the same way.</div>
</li>
<li class="level1"><div class="li"> Usage of an applications suite can be automated using a Makefile, or even a <acronym title="Practical Extraction and Report Language">Perl</acronym> script. ASIC designers do this all the time with their design and synthesis tools. Some gEDA users have publically disclosed (on the e-mail list) that they do this too, and point to it as an important feature of the gEDA suite.</div>
</li>
<li class="level1"><div class="li"> Scalability: A monolithic application is almost always developed by a lone developer who has a single-minded vision for his program. This developer can enforce stylistic and UI standards throughout all his tools. The problem with this is that a single developer â?? even one who is uniquely gifted â?? can only write one (or a couple of) parts of an EDA application. Therefore, any open-source, monolithic EDA app will likely always be limited in scope & features by the abilities of a single developer. (I would love to be proven wrong on this point. I welcome counter-examples, but none have come to my attention as of this writing.) On the other hand, a confederacy of developers working independently on their own apps â?? but meanwhile contributing to a greater whole â?? can create a very large and capable EDA enviornment indeed.</div>
</li>
</ul>
</div>
<!-- SECTION [8571-11242] -->
<h3><a name="suite_confederacy_cons" id="suite_confederacy_cons">Suite (confederacy) cons:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> More confusing to newbies, since they donâ??t know the flow right off the bat. That is, they actually need to <acronym title="Read The Fine Manual">RTFM</acronym> to know what tool to run next. Good documentation helps (thatâ??s why youâ??re reading this), but documentation is always second choice behind developing an intuitive application interface.</div>
</li>
<li class="level1"><div class="li"> Different programs have different UI conventions (i.e. menu organization is different, keyboard or mouse bindings are different). This can be uncomfortable to those who arenâ??t familiar with the programs.</div>
</li>
<li class="level1"><div class="li"> Since no assumptions are made about the design flow, schematic symbols are necessarily <a href="http://geda.seul.org/wiki/geda:faq-gschem#what_s_this_business_about_heavy_vs._light_symbols" class="wikilink1" title="geda:faq-gschem">light</a>. This forces the user to spend more time attaching e.g. footprint attributes to his design. Moreover, the user must spend more time actually researching which footprints to use. However, a good suite (like the gEDA suite) will offer multiple methods to perform this task (e.g. gattrib, <acronym title="Practical Extraction and Report Language">Perl</acronym> scripts to populate footprints, etc.).</div>
</li>
<li class="level1"><div class="li"> Some developers are more energetic than others, or have more free time. Therefore, some programs in a suite will be more developed (and less buggy) than others. Unfortunately, a single buggy program in a suite can unfairly taint a new userâ??s perception of the entire suite.</div>
</li>
</ul>
</div>
<!-- SECTION [11243-12576] -->
<h3><a name="monolithic_application_pros" id="monolithic_application_pros">Monolithic application pros:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> A single, unified design environment is easier for newbies to grasp. UI conventions may be harmonized. The tool might be intuitive enough that it can be driven without needing to <acronym title="Read The Fine Manual">RTFM</acronym>.</div>
</li>
<li class="level1"><div class="li"> Schematic capture symbols can be heavy, so less work is required in attaching attributes to each symbol in a schematic.</div>
</li>
</ul>
</div>
<!-- SECTION [12577-12929] -->
<h3><a name="monolithic_application_cons" id="monolithic_application_cons">Monolithic application cons:</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Not infinitely scalable. One developer canâ??t do everything, no matter how smart. Therefore, a monolithic app will never approach the size or power of a suite developed by a confederacy of programmers.</div>
</li>
<li class="level1"><div class="li"> Lack of choice. If the developer doesnâ??t like your way of doing things, you have no choice. Even if you submit patches to enable your way of performing a task, there is a chance the main developer will ignore or reject your patches. This is probably not an issue for newbies, but for â??power usersâ?? it represents a problem.</div>
</li>
<li class="level1"><div class="li"> Risk. If the apps developer quits, the code becomes abandoned, and the users suffer. This effectively happened to the program <a href="http://sourceforge.net/projects/xtrkcad" class="urlextern" title="http://sourceforge.net/projects/xtrkcad" rel="nofollow">XTrkCAD</a>, a CAD program for designing model railroads. The author of this program quit developing it, but thankfully placed his stuff on Sourceforge so that the program wouldnâ??t simply disappear. Unfortunately, without the original developerâ??s involvement, the code languished. Patches contributed to the project went to /dev/null. Eventually, a coalition of concerned user/developers created a <a href="http://xtrkcad-fork.sourceforge.net/" class="urlextern" title="http://xtrkcad-fork.sourceforge.net/" rel="nofollow">fork</a> of the code to enable further development. However, work on the forked code has been piecemeal and sporadic. (Hopefully, this will change someday.) Meanwhile, for the ordinary user, the fact that the original developer quit represents a catastrophe.</div>
</li>
</ul>
</div>
<!-- SECTION [12930-14377] -->
<h2><a name="what_license_does_geda_use" id="what_license_does_geda_use">What license does gEDA use?</a></h2>
<div class="level2">
<p>
All of the tools and associated files in gEDA will be released under the GNU General Public License version 2 (<acronym title="GNU General Public License">GPL</acronym>), from Free Software Foundation
</p>
<p>
From the license:
</p>
<p>
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
</p>
<p>
This cannot be stressed enough: <strong>gEDA is GPLed software</strong>. Therefore nothing proprietary can be distributed with gEDA like part libraries from proprietary EDA products. Conversion program for proprietary libraries will be available, but any converted files which are part of a proprietary product must never find their way into gEDA. Contributed files must be GPLable (or be placed under another free license). Please keep this in mind if you wish to contribute something.
</p>
<p>
Even though the focus of gEDA is GPLed software, other software licenses are more than welcome to be mixed with the existing software, just as long as they are compatible with the <acronym title="GNU General Public License">GPL</acronym>.
</p>
</div>
<!-- SECTION [14378-15656] -->
<h2><a name="where_can_i_get_more_information_about_and_download_geda" id="where_can_i_get_more_information_about_and_download_geda">Where can I get more information about and download gEDA?</a></h2>
<div class="level2">
<p>
The official website is <a href="http://geda.seul.org/" class="urlextern" title="http://geda.seul.org/" rel="nofollow">gEDA Project</a> hosted by the <a href="http://www.seul.org/" class="urlextern" title="http://www.seul.org/" rel="nofollow">SEUL Project</a>. The European mirror is at <a href="http://ftp.sunet.se/geda/" class="urlextern" title="http://ftp.sunet.se/geda/" rel="nofollow">European gEDA Project mirror</a> hosted by Swedish University Network - Sweden, Nothern Europe.
</p>
<p>
There are several mailing lists. Please look at the mailing listâ??s <a href="http://geda.seul.org/mailinglist" class="urlextern" title="http://geda.seul.org/mailinglist" rel="nofollow">info page</a> for how to subscribe and post.
</p>
<p>
You can download all the software, including the gEDA suite CDROM from the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">download</a> page.
</p>
<p>
You can find the latest set of documentation on the toplevel <a href="http://geda.seul.org/docs/" class="urlextern" title="http://geda.seul.org/docs/" rel="nofollow">documentation</a> page.
</p>
<p>
Come to the Free EDA Users Group (Freedog) meeeting in Cambridge, MA. The meeting is at 7PM on the first Wednesday of each month at the <a href="http://www.starbucks.com/retail/locator/MapResults.aspx?a=1&StoreKey=93728&IC_O=42.3599350625432%3a-71.1021394862385%3a32%3a02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD1_O=&GAD2_O=&GAD3_O=02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD4_O=&radius=5&countryID=244&dataSource=MapPoint.NA" class="urlextern" title="http://www.starbucks.com/retail/locator/MapResults.aspx?a=1&StoreKey=93728&IC_O=42.3599350625432%3a-71.1021394862385%3a32%3a02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD1_O=&GAD2_O=&GAD3_O=02139+(postal+code)%2c+Massachusetts%2c+United+States&GAD4_O=&radius=5&countryID=244&dataSource=MapPoint.NA" rel="nofollow">Kendal Square Starbucks</a>.
</p>
</div>
<!-- SECTION [15657-16857] -->
<h2><a name="okay_how_do_i_start_using_geda" id="okay_how_do_i_start_using_geda">Okay, how do I start using gEDA?</a></h2>
<div class="level2">
<p>
The most important thing to do is to read and understand Bill Wilsonâ??s excellent <a href="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">gschem -> gsch2pcb -> PCB</a> tutorial. This should get you started.
</p>
<p>
Also be sure to check out the other <a href="http://geda.seul.org/docs" class="urlextern" title="http://geda.seul.org/docs" rel="nofollow">gEDA documentation</a>. An installation guide is contained in this Wiki, as is some general information about how to use the tools. Spend some time browsing, download the gEDA Suite, and try it out for yourself!
</p>
</div>
<!-- SECTION [16858-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_fbabgapp.html
Index: geda_fbabgapp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:fbabgapp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:fbabgapp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:fbabgapp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:fbabgapp?do=export_raw" />
<meta name="date" content="2006-04-21T12:35:05-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#forward_backward_annotation_between_geda_gaf_and_pads_powerpcb" class="toc">Forward/Backward Annotation Between gEDA/gaf and PADS PowerPCB</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#forward_annotation_of_geda_schematic_changes_to_pads_powerpcb_layout" class="toc">Forward Annotation of gEDA Schematic Changes to PADS PowerPCB Layout</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#detailed_forward_annotation_procedure" class="toc">Detailed Forward Annotation Procedure</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#back_annotation_of_pads_powerpcb_layout_changes_to_geda_schematic" class="toc">Back Annotation of PADS PowerPCB Layout Changes to gEDA Schematic</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#detailed_backannotation_procedure" class="toc">Detailed Backannotation Procedure</a></span></div></li></ul>
</li></ul>
</li></ul>
</div>
</div>
<h1><a name="forward_backward_annotation_between_geda_gaf_and_pads_powerpcb" id="forward_backward_annotation_between_geda_gaf_and_pads_powerpcb">Forward/Backward Annotation Between gEDA/gaf and PADS PowerPCB</a></h1>
<div class="level1">
<p>
by: Dan McMahill
</p>
<p>
This document is released under <a href="http://www.gnu.org/copyleft/fdl.html" class="urlextern" title="http://www.gnu.org/copyleft/fdl.html" rel="nofollow">GFDL</a>
</p>
<p>
March 6th, 2003
</p>
</div>
<!-- SECTION [1-191] -->
<h2><a name="forward_annotation_of_geda_schematic_changes_to_pads_powerpcb_layout" id="forward_annotation_of_geda_schematic_changes_to_pads_powerpcb_layout">Forward Annotation of gEDA Schematic Changes to PADS PowerPCB Layout</a></h2>
<div class="level2">
</div>
<!-- SECTION [192-272] -->
<h2><a name="overview" id="overview">Overview</a></h2>
<div class="level2">
<p>
Forward annotation is the process of updating a layout to reflect changes made in the schematic. This process is used when, for example, a new component is added to a schematic and needs to be included in the layout. This section describes how to forward annotate changes in a gEDA schematic to a PADS PowerPCB layout.<br/>
PADS implements forward annotation through the use of an ECO (Engineering Change Order) file. The ECO file describes the differences between a current design and the desired design. PADS generates the ECO file by performing a netlist comparison between a new netlist file and the netlist contained in the current layout.
</p>
</div>
<!-- SECTION [273-936] -->
<h2><a name="detailed_forward_annotation_procedure" id="detailed_forward_annotation_procedure">Detailed Forward Annotation Procedure</a></h2>
<div class="level2">
<p>
This procedure assumes you have a board layout open in PADS and that you have made your schematic changes in gschem. For the purposes of illustration, assume your schematic is split into two pages in the files pg1.sch and pg2.sch.
</p>
<ul>
<li class="level1"><div class="li"> Create an updated PADS netlist by running:<br/>
<strong><code>gnetlist -g pads -o mynet.asc pg1.sch pg2.sch</code></strong><br/>
This will create the netlist file <strong><code>mynet.asc</code></strong>.</div>
</li>
<li class="level1"><div class="li"> Make a backup copy of your PADS layout in case things fail in a destructive way.</div>
</li>
<li class="level1"><div class="li"> From within PADS, choose the “Tools → Compare Netlist” menu item and choose the following options in the form:</div>
</li>
</ul>
<table class="inline">
<tr>
<td>original design to compare</td><td>use current PCB design</td>
</tr>
<tr>
<td>new design with changes</td><td>mynet.asc</td>
</tr>
<tr>
<td>â??</td><td>generate differences report</td>
</tr>
<tr>
<td>â??</td><td>generate eco file</td>
</tr>
<tr>
</tr>
<tr>
<td colspan="2">comparison options</td>
</tr>
<tr>
<td>â??</td><td>compare only ECO registered parts</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">attribute comparison level</td>
</tr>
<tr>
<td>â??</td><td>ignore all attributes</td>
</tr>
</table>
<br />
<p>
Click the OK button to create the ECO file.
</p>
<ul>
<li class="level1"><div class="li"> Examine the ECO file to make sure it looks ok (the ECO file is a text file which can be viewed with any text editor).</div>
</li>
<li class="level1"><div class="li"> From within PADS, choose the “File → Import...” menu item. Locate and choose the ECO file created previously.</div>
</li>
</ul>
</div>
<!-- SECTION [937-2135] -->
<h2><a name="back_annotation_of_pads_powerpcb_layout_changes_to_geda_schematic" id="back_annotation_of_pads_powerpcb_layout_changes_to_geda_schematic">Back Annotation of PADS PowerPCB Layout Changes to gEDA Schematic</a></h2>
<div class="level2">
<p>
Backannotation is the process of updating schematics to reflect changes made in the layout. This process is used, for example, when the reference designators have been renumbered on the layout, when pins have been swapped (e.g., on an AND gate), or slots have been swapped (e.g., on a multi-gate package). This section describes how to backannotate changes in a PADS PowerPCB layout to a gEDA schematic. The PADS PowerPCB tool supports three types of schematic backannotation:
</p>
<ol>
<li class="level1"><div class="li"> Reference designator changes. This is often times used at the end of a layout to give components which are geographically close a set of reference designators which are numerically close.</div>
</li>
<li class="level1"><div class="li"> Slot swapping. This is commonly found in digital designs where there may be multiple identical gates in a single package. For example, you may wish to swap which slot is used in a hex inverter.</div>
</li>
<li class="level1"><div class="li"> Pin swapping. During layout, the designer may wish to swap equivalent pins on a chip. For example, the two inputs on a NAND gate.</div>
</li>
</ol>
<p>
Currently only reference designator changes are automatically processed by the PADS to gschem backannotation tool. The slot and pin swapping changes are provided in a report which the schematic designer must use to manually correct the schematic.
</p>
</div>
<!-- SECTION [2136-3463] -->
<h3><a name="detailed_backannotation_procedure" id="detailed_backannotation_procedure">Detailed Backannotation Procedure</a></h3>
<div class="level3">
<p>
This procedure assumes you have a board layout open in PADS. For the purposes of illustration, assume your schematic is split into two pages in the files pg1.sch and pg2.sch.
</p>
<ul>
<li class="level1"><div class="li"> Create an up to date PADS netlist by running:<br/>
<strong><code>gnetlist -g pads -o mynet.asc pg1.sch pg2.sch</code></strong><br/>
This will create the netlist file <strong><code>mynet.asc</code></strong>.</div>
</li>
<li class="level1"><div class="li"> From within PADS, choose the “Tools → Compare Netlist” menu item and choose the following options in the form:</div>
</li>
</ul>
<table class="inline">
<tr>
<td>original design to compare</td><td>mynet.asc</td>
</tr>
<tr>
<td>new design with changes</td><td>use current PCB design</td>
</tr>
<tr>
<td>â??</td><td>generate differences report</td>
</tr>
<tr>
<td>â??</td><td>generate eco file</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">comparison options</td>
</tr>
<tr>
<td>â??</td><td>compare only ECO registered parts</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">attribute comparison level</td>
</tr>
<tr>
<td>â??</td><td>ignore all attributes</td>
</tr>
</table>
<br />
<p>
Click the OK button to create the ECO file.
</p>
<ul>
<li class="level1"><div class="li"> Examine the ECO file to make sure it looks ok (the ECO file is a text file which can be viewed with any text editor).</div>
</li>
<li class="level1"><div class="li"> Make a backup copy of your gEDA schematic files in case things fail in a destructive way.</div>
</li>
<li class="level1"><div class="li"> Run:<br/>
<strong><code>pads_backannotate file.eco pg1.sch pg2.sch | tee backanno.log</code></strong><br/>
where <strong><code>file.eco</code></strong> is the name of the ECO file created previously and <strong><code>pg1.sch</code></strong> and <strong><code>pg2.sch</code></strong> are all of your schematic pages. This will apply the reference designator change portion of the ECO file and also generate a list of pin and slot swapping which must be performed by hand. The file <strong><code>backanno.log</code></strong> will contain a log of the session that can be refered to when performing the pin and slot swapping.</div>
</li>
</ul>
</div>
<!-- SECTION [3464-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_fc1.html
Index: geda_fc1.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:fc1</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:fc1?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:fc1?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:fc1?do=export_raw" />
<meta name="date" content="2006-05-05T23:14:34-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#installer_2005080x_on_fedora_core_1_install_notes" class="toc">Installer 2005080X on Fedora Core 1 install notes</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#prerequisites" class="toc">Prerequisites:</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#problems" class="toc">Problems:</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="installer_2005080x_on_fedora_core_1_install_notes" id="installer_2005080x_on_fedora_core_1_install_notes">Installer 2005080X on Fedora Core 1 install notes</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-64] -->
<h2><a name="prerequisites" id="prerequisites">Prerequisites:</a></h2>
<div class="level2">
<p>
When you install FC1, make sure you install the â??workstationâ?? version, and not the â??desktopâ?? version. (You are presented with this choice when you first install the distribution off of the distribution media.) The â??workstationâ?? version includes important header files and other tools which are necessary to build many components of the gEDA Suite using the installer.
</p>
</div>
<!-- SECTION [65-472] -->
<h2><a name="problems" id="problems">Problems:</a></h2>
<div class="level2">
<p>
The installer has been thoroughly tested on this platform. No problems are known, and none have been reported.
</p>
</div>
<!-- SECTION [473-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_fc2.html
Index: geda_fc2.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:fc2</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:fc2?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:fc2?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:fc2?do=export_raw" />
<meta name="date" content="2006-05-05T23:13:35-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#installer_2005080x_on_fedora_core_2_install_notes" class="toc">Installer 2005080X on Fedora Core 2 install notes</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#prerequisites" class="toc">Prerequisites:</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#problems" class="toc">Problems:</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="installer_2005080x_on_fedora_core_2_install_notes" id="installer_2005080x_on_fedora_core_2_install_notes">Installer 2005080X on Fedora Core 2 install notes</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-64] -->
<h2><a name="prerequisites" id="prerequisites">Prerequisites:</a></h2>
<div class="level2">
<p>
When you install FC2, make sure you install the â??workstationâ?? version, and not the â??desktopâ?? version. (You are presented with this choice when you first install the distribution off of the distribution media.) The â??workstationâ?? version includes important header files and other tools which are necessary to build many components of the gEDA Suite using the installer.
</p>
</div>
<!-- SECTION [65-472] -->
<h2><a name="problems" id="problems">Problems:</a></h2>
<div class="level2">
<p>
The installer has been thoroughly tested on this platform. No problems are known, and none have been reported.
</p>
</div>
<!-- SECTION [473-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_fc3.html
Index: geda_fc3.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:fc3</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:fc3?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:fc3?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:fc3?do=export_raw" />
<meta name="date" content="2006-05-05T23:12:19-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#installer_2005080x_on_fedora_core_3_install_notes" class="toc">Installer 2005080X on Fedora Core 3 install notes</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#prerequisites" class="toc">Prerequisites:</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#problems" class="toc">Problems:</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="installer_2005080x_on_fedora_core_3_install_notes" id="installer_2005080x_on_fedora_core_3_install_notes">Installer 2005080X on Fedora Core 3 install notes</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-64] -->
<h2><a name="prerequisites" id="prerequisites">Prerequisites:</a></h2>
<div class="level2">
<p>
When you install FC3, make sure you install the â??workstationâ?? version, and not the â??desktopâ?? version. (You are presented with this choice when you first install the distribution off of the distribution media.) The â??workstationâ?? version includes important header files and other tools which are necessary to build many components of the gEDA Suite using the installer.
</p>
</div>
<!-- SECTION [65-472] -->
<h2><a name="problems" id="problems">Problems:</a></h2>
<div class="level2">
<p>
No problems are known, and none have been reported.
</p>
</div>
<!-- SECTION [473-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_fc4.html
Index: geda_fc4.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:fc4</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:fc4?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:fc4?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:fc4?do=export_raw" />
<meta name="date" content="2006-05-05T23:09:06-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#installer_2005080x_on_fedora_core_4_install_notes" class="toc">Installer 2005080X on Fedora Core 4 install notes</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#prerequisites" class="toc">Prerequisites:</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#problems" class="toc">Problems:</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="installer_2005080x_on_fedora_core_4_install_notes" id="installer_2005080x_on_fedora_core_4_install_notes">Installer 2005080X on Fedora Core 4 install notes</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-64] -->
<h2><a name="prerequisites" id="prerequisites">Prerequisites:</a></h2>
<div class="level2">
<p>
When you install FC4, make sure you install the â??workstationâ?? version, and not the â??desktopâ?? version. (You are presented with this choice when you first install the distribution off of the distribution media.) The â??workstationâ?? version includes important header files and other tools which are necessary to build many components of the gEDA Suite using the installer.
</p>
<p>
Also, the following additional RPMs are required:
</p>
<ul>
<li class="level1"><div class="li"> guile-1.6.7-devel</div>
</li>
<li class="level1"><div class="li"> gettext-XX-devel.</div>
</li>
<li class="level1"><div class="li"> compat-gcc-3.2.3-47.fc4.i386.rpm</div>
</li>
<li class="level1"><div class="li"> compat-gcc-32-c++-3.2.3-47.fc4.i386.rpm</div>
</li>
<li class="level1"><div class="li"> compat-libstdc++-33-0:3.2.3-47.fc4.i386.rpm (installed automatically when g++ is installed by rpm)</div>
</li>
</ul>
<p>
These RPMs are not automatically installed by RedHatâ??s installer; you need to install them manually. The devel packages live on the 4th FC4 disk. The gcc compatability compiler lives on the 3rd FC4 disk. Install all these packages before trying to build the gEDA Suite.
</p>
<p>
Before installing the gEDA Suite on an FC4 system, you should set the CC environment variable to point to gcc32. This is explained further in the â??Problemsâ?? section below.
</p>
</div>
<!-- SECTION [65-1201] -->
<h2><a name="problems" id="problems">Problems:</a></h2>
<div class="level2">
<p>
The 200508XX installer will fail on FC4 systems. There seem to be several independent problems:
</p>
<ol>
<li class="level1"><div class="li"> The installer doesnâ??t find guile, even though it comes pre-installed on the platform.<br/>
The problem here is that the installer tries to find guile by issuing the â??guile-configâ?? command. This command lives in the guile-devel RPM which is not installed by default (see above). To fix the problem, install the guile-devel RPM which lives on the FC4 install CD no. 4.</div>
</li>
<li class="level1"><div class="li"> The installer doesnâ??t find gettext, even though it comes pre-installed on the platform. Gettext is used by gschem, so this error is raised during the configure stage for gschem.<br/>
Again, the gettext header files live in the gettext-devel RPM which is not installed by default (see above). To fix this problem, install the gettext-devel RPM which lives on the FC4 install CD no. 4.</div>
</li>
<li class="level1"><div class="li"> Many different applications (e.g. GTKWave, GSpiceUI, Icarus Verilog) fail during compilation. The error message typically says something about a problem involving a â??typeâ??.</div>
</li>
</ol>
<p>
This problem obtains because FC4 incorporates the new gcc-4.0 compiler. Gcc-4.0 incorporates much stricter type checking than the older gcc versions. This has caused many open-source applications to fail to compile.
</p>
<p>
Fortunately, RedHat still provides the older version of gcc on the FC4 disks. This version of gcc is called â??gcc32â??. It is not installed as part of the normal installation, so you must install it yourself. The RPM lives on the FC4 install media, disk 3, and is called â??compat-gcc-32-3.2.3-47.fc4.i386.rpmâ??. Allow rpm to install any dependencies it finds.
</p>
<p>
A similar situation holds for the C++ compiler g++. You need to install the older version too; get it on the FC4 disk 4. It is called â??compat-gcc-32-c++-3.2.3-47.fc4.i386.rpmâ??. Also install any dependencies found by rpm when you install these pacakges.
</p>
<p>
Once they are installed, set the gcc environment variables as follows:
</p>
<p>
for bash:
</p>
<pre class="code">export CC=gcc32
export CXX=g++32</pre>
<p>
for csh:
</p>
<pre class="code">setenv CC gcc32
setenv CXX g++32</pre>
<p>
and then run the installer. Make sure you run the installer from the same window as where you set the CC environment variable!
</p>
</div>
<!-- SECTION [1202-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_file_format_spec.html
Index: geda_file_format_spec.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:file_format_spec</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:file_format_spec?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:file_format_spec?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:file_format_spec?do=export_raw" />
<meta name="date" content="2006-08-21T21:18:08-0400" />
<meta name="robots" content="noindex,nofollow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_gaf_file_format_document" class="toc">gEDA/gaf File Format Document</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#coordinate_space" class="toc">Coordinate Space</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#filenames" class="toc">Filenames</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#object_types" class="toc">Object types</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#version" class="toc">version</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#line" class="toc">line</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#picture" class="toc">picture</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#box" class="toc">box</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#circle" class="toc">circle</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#arc" class="toc">arc</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#text" class="toc">text</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#net" class="toc">net</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#bus" class="toc">bus</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pin" class="toc">pin</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#component" class="toc">component</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#font" class="toc">font</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#colors" class="toc">Colors</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#attributes" class="toc">Attributes</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#embedded_components" class="toc">Embedded Components</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#document_revision_history" class="toc">Document Revision History</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_gaf_file_format_document" id="geda_gaf_file_format_document">gEDA/gaf File Format Document</a></h1>
<div class="level1">
<p>
by: Ales V. Hvezda, ahvezda@xxxxxxxxxxxxx
</p>
<p>
This document is released under <a href="http://www.gnu.org/copyleft/fdl.html" class="urlextern" title="http://www.gnu.org/copyleft/fdl.html" rel="nofollow">GFDL</a>
</p>
<p>
December 31st, 2003
</p>
</div>
<!-- SECTION [1-187] -->
<h2><a name="overview" id="overview">Overview</a></h2>
<div class="level2">
<p>
This file is the official documentation for the file formats in gEDA/gaf (gschem And Friends). The primary file format used in gEDA/gaf is the schematic/symbol format. Files which end with .sch or .sym are schematics or symbol files. Until there is another file type in gEDA/gaf, then this document will only cover the symbol/schematic file format.<br/>
This file format document is current as of gEDA/gaf version 20040111. This document covers file format version 1.<br/>
Note, this file format and any other file formats associated with gEDA are placed under the General Public License (<acronym title="GNU General Public License">GPL</acronym>) version 2.0. The gEDA/gaf symbol and schematic file format is Copyright (C) 1998-2004 Ales Hvezda.
</p>
</div>
<!-- SECTION [188-896] -->
<h2><a name="coordinate_space" id="coordinate_space">Coordinate Space</a></h2>
<div class="level2">
<p>
All coordinates are in mils (1/1000 or an inch). This is an arbitrary decision. Remember in there is no concept of physical lengths/dimensions in schematics and symbols (for schematic capture only).<br/>
</p>
<ul>
<li class="level1"><div class="li"> Origin is in lower left hand corner.</div>
</li>
<li class="level1"><div class="li"> The size of the coordinate space is unlimited, but it is recommended that all objects stay within (120.0, 90.0) (x, y inches).</div>
</li>
<li class="level1"><div class="li"> It is generally advisable to have positive x and y coordinates, however, negative coordinates work too, but not recommended.</div>
</li>
</ul>
<p>
The following figure shows how the coordinate space is setup:
</p>
<table class="inline">
<tr>
<td><a href="_detail/geda_coordinatespace.html" class="media" title="geda:coordinatespace.jpg"><img src="_media/geda_coordinatespace.jpg" class="mediaright" title=":geda:coordinatespace.jpg " alt=":geda:coordinatespace.jpg " /></a></td>
</tr>
</table>
<br />
<p>
X axis increases going to the right. Y axis increase going up. Coordinate system is landscape and corresponds to a sheet of paper turned on its side.
</p>
</div>
<!-- SECTION [897-1703] -->
<h2><a name="filenames" id="filenames">Filenames</a></h2>
<div class="level2">
<p>
Symbols end in .sym. The only symbol filename convention that is used in gEDA/gaf is that if there are multiple instances of a symbol with the same name (like a 7400), then a -1, -2, -3, ... -N suffix is added to the end of the filename. Example: 7400-1.sym, 7400-2.sym, 7400-3.sym...<br/>
Schematics end in .sch. There used to be a schematic filename convention (adding a -1 .. -N to the end of the basename), but this convention is now obsolete. Schematic filenames can be anything that makes sense to the creator.
</p>
</div>
<!-- SECTION [1704-2240] -->
<h2><a name="object_types" id="object_types">Object types</a></h2>
<div class="level2">
<p>
A schematic/symbol file for gEDA/gaf consists of:
</p>
<ul>
<li class="level1"><div class="li"> A version (v) as the first item in the file. This is required.</div>
</li>
<li class="level1"><div class="li"> Any number of objects and the correct data. Objects are specified by an “object type”</div>
</li>
<li class="level1"><div class="li"> Most objects are a single line, however text objects are two lines long.</div>
</li>
<li class="level1"><div class="li"> No blank lines at the end of the file (these are ignored by the tools)</div>
</li>
<li class="level1"><div class="li"> For all enumerated types in the gEDA/gaf file formats, the field takes on the numeric value.</div>
</li>
</ul>
<p>
The “object type” id is a single letter and this id must start in the first column. The object type id is case sensitive.<br/>
The schematic and symbol files share the same file layout. A symbol is nothing more than a collection of primitive objects (lines, boxes, circles, arcs, text, and pins). A schematic is a collection of symbols (components), nets, and buses.<br/>
The following sections describe the specifics of each recognized object type. Each section has the name of the object, which file type (sch/sym) the object can appear in, the format of the data, a description of each individual field, details and caveats of the fields, and finally an example with description.<br/>
For information on the color index (which is used in practically all objects), see the Color section.
</p>
</div>
<!-- SECTION [2241-3504] -->
<h3><a name="version" id="version">version</a></h3>
<div class="level3">
<p>
Valid in: Schematic and Symbol files<br/>
<strong><code>type version</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>v</td>
</tr>
<tr>
<td>version</td><td>int</td><td>version of gEDA/gaf that wrote this file</td>
</tr>
<tr>
<td>fileformat_version</td><td>int</td><td>gEDA/gaf file format version number</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> The type is a lower case “v” (as in Victor).</div>
</li>
<li class="level1"><div class="li"> This object must be in every file used or created by the gEDA/gaf tools.</div>
</li>
<li class="level1"><div class="li"> The format of the first version field is YYYYMMDD.</div>
</li>
<li class="level1"><div class="li"> The version number is not an arbitrary timestamp. Do not make up a version number and expect the tools to behave properly.</div>
</li>
<li class="level1"><div class="li"> The “version of gEDA/gaf that wrote this file” was used in all versions of gEDA/gaf up to 20030921 as the file formats version. This field should no longer be used to determine the file format. It is used for information purposes only now.</div>
</li>
<li class="level1"><div class="li"> Starting at and after gEDA/gaf version 20031004, the fileformat version field is used to determine the file format version. All file format code should key off of this field.</div>
</li>
<li class="level1"><div class="li"> fileformat version increases when the file format changes.</div>
</li>
<li class="level1"><div class="li"> The starting point for fileformat version is 1.</div>
</li>
<li class="level1"><div class="li"> fileformat version is just an integer with no minor number.</div>
</li>
<li class="level1"><div class="li"> Valid versions include: 19990601, 19990610, 19990705, 19990829, 19990919, 19991011, 20000220, 20000704, 20001006, 20001217, 20010304, 20010708, 20010722, 20020209, 20020414, 20020527, 20020825, 20021103, 20030223, 20030525, 20030901, 20040111, 20040710, 20041228, 20050313, 20050820, 20060123, 20060821</div>
</li>
<li class="level1"><div class="li"> <acronym title="Concurrent Versions System">CVS</acronym> or test versions (should not be used): 20030921, 20031004, 20031019, 20031231, 20050814</div>
</li>
<li class="level1"><div class="li"> Keep in mind that each of the above listed versions might have had file format variations. This document only covers the last version’s file format.</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">v 20040111 1</pre>
</div>
<!-- SECTION [3505-5249] -->
<h3><a name="line" id="line">line</a></h3>
<div class="level3">
<p>
Valid in: Schematic and Symbol files<br/>
<strong><code>type x1 y1 x2 y2 color width capstyle dashstyle dashlength dashspace</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>L</td>
</tr>
<tr>
<td>x1</td><td>int/mils</td><td>First X coordinate</td>
</tr>
<tr>
<td>y1</td><td>int/mils</td><td>First Y coordinate</td>
</tr>
<tr>
<td>x2</td><td>int/mils</td><td>Second X coordinate</td>
</tr>
<tr>
<td>y2</td><td>int/mils</td><td>Second Y coordinate</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
<tr>
<td>width</td><td>int/mils</td><td>Width of line</td>
</tr>
<tr>
<td>capstyle</td><td>int</td><td>Line cap style</td>
</tr>
<tr>
<td>dashstyle</td><td>int</td><td>Type of dash style</td>
</tr>
<tr>
<td>dashlength</td><td>int</td><td>Length of dash</td>
</tr>
<tr>
<td>dashspace</td><td>int</td><td>Space inbetween dashes</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> The capstyle is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> END NONE = 0</div>
</li>
<li class="level2"><div class="li"> END SQUARE = 1</div>
</li>
<li class="level2"><div class="li"> END ROUND = 2</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The dashstyle is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> TYPE SOLID = 0</div>
</li>
<li class="level2"><div class="li"> TYPE DOTTED = 1</div>
</li>
<li class="level2"><div class="li"> TYPE DASHED = 2</div>
</li>
<li class="level2"><div class="li"> TYPE CENTER = 3</div>
</li>
<li class="level2"><div class="li"> TYPE PHANTOM = 4</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The dashlength parameter is not used for TYPE SOLID and TYPE DOTTED. This parameter should take on a value of -1 in these cases.</div>
</li>
<li class="level1"><div class="li"> The dashspace paramater is not used for TYPE SOLID. This parameter should take on a value of -1 in these case.</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">L 23000 69000 28000 69000 3 40 0 1 -1 75</pre>
<p>
A line segment from (23000, 69000) to (28000, 69000) with color index 3, 40 mils thick, no cap, dotted line style, and with a spacing of 75 mils in between each dot.
</p>
</div>
<!-- SECTION [5250-6484] -->
<h3><a name="picture" id="picture">picture</a></h3>
<div class="level3">
<p>
Valid in: Schematic and Symbol files<br/>
<strong><code>type x1 y1 width height angle ratio mirrored embedded
filename
encoded picture data
encoded picture end</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>G</td>
</tr>
<tr>
<td>x</td><td>int/mils</td><td>Lower left X coordinate</td>
</tr>
<tr>
<td>y</td><td>int/mils</td><td>Lower left Y coordinate</td>
</tr>
<tr>
<td>width</td><td>int/mils</td><td>Width of the picture</td>
</tr>
<tr>
<td>height</td><td>int/mils</td><td>Height of the picture</td>
</tr>
<tr>
<td>angle</td><td>int/degrees</td><td>Angle of the picture</td>
</tr>
<tr>
<td>mirrored</td><td>char</td><td>Mirrored or normal picture</td>
</tr>
<tr>
<td>embedded</td><td>char</td><td>Embedded or link to the picture file</td>
</tr>
<tr>
<td>filename</td><td>string</td><td>path and filename of a not embedded picture</td>
</tr>
<tr>
<td>encoded picture data</td><td>string</td><td>Serialized picture encoded using base64</td>
</tr>
<tr>
<td>encoded picture end</td><td>string</td><td>A line containing only a dot character</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> This object is a picture object. The first line contains all the picture parameters, and the second line is the path and filename of the picture. The filename is not used if the picture is embedded.</div>
</li>
<li class="level1"><div class="li"> The angle of the picture can only take on one of the following values: 0, 90, 180, 270.</div>
</li>
<li class="level1"><div class="li"> The mirrored field is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> NOT MIRRORED = 0</div>
</li>
<li class="level2"><div class="li"> MIRRORED = 1</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The embedded field is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> NOT EMBEDDED = 0</div>
</li>
<li class="level2"><div class="li"> EMBEDDED = 1 (not yet supported)</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The encoded picture and encoded picture end fields are only in the file if the picture is embedded in the schematic:</div>
<ul>
<li class="level2"><div class="li"> encoded picture data: This is a multiple line field. The picture is serialized and then encoded using base64. This way the encoded data uses only printable characters. This field is the result of these two operations.</div>
</li>
<li class="level2"><div class="li"> encoded picture end : A line containing only a single dot ‘.’ character marks the end of the encoded picture data.</div>
</li>
</ul>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">G 16900 35800 1400 2175 0 6.435331e-01 0 0
../bitmaps/logo.jpg</pre>
<p>
A picture object with the lower left corner at (16900, 35800). The width of the image is 1400 mils, and its height is 2175 mils (i.e.: the ratio is 0.6353). The picture rotation is 0 degrees and the picture is not mirrored, neither embedded.<br/>
The picture path and filename is showed in the second line.<br/>
Example:<br/>
</p>
<pre class="code">G 16900 35800 1400 2175 0 6.435331e-01 0 1
../bitmaps/logo.jpg
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.</pre>
<p>
A picture object with the lower left corner at (16900, 35800). The width of the image is 1400 mils, and its height is 2175 mils (i.e.: the ratio is 0.6353).<br/>
The picture rotation is 0 degrees, it is not mirrored, and it is embedded.<br/>
The picture path and filename is showed in the second line. Since this is an embedded picture, the filename and path are not used.<br/>
The encoded picture data is only an example (it is not real data). The last line containing a single dot ‘.’ character marks the end of the encoded picture data.
</p>
</div>
<!-- SECTION [6485-9270] -->
<h3><a name="box" id="box">box</a></h3>
<div class="level3">
<p>
Valid in: Schematic and Symbol files<br/>
<strong><code>type x y width height color width capstyle dashtype dashlength dashspace
filltype fillwidth angle1 pitch1 angle2 pitch2</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>B</td>
</tr>
<tr>
<td>x</td><td>int/mils</td><td>Lower left hand X coordinate</td>
</tr>
<tr>
<td>y</td><td>int/mils</td><td>Lower left hand Y coordinate</td>
</tr>
<tr>
<td>width</td><td>int/mils</td><td>Width of the box (x direction)</td>
</tr>
<tr>
<td>height</td><td>int/mils</td><td>Height of the box (y direction)</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
<tr>
<td>width</td><td>int/mils</td><td>Width of lines</td>
</tr>
<tr>
<td>capstyle</td><td>int/mils</td><td>Line cap style</td>
</tr>
<tr>
<td>dashstyle</td><td>int</td><td>Type of dash style</td>
</tr>
<tr>
<td>dashlength</td><td>int/mils</td><td>Length of dash</td>
</tr>
<tr>
<td>dashspace</td><td>int/mils</td><td>Space inbetween dashes</td>
</tr>
<tr>
<td>filltype</td><td>int</td><td>Type of fill</td>
</tr>
<tr>
<td>fillwidth</td><td>int/mils</td><td>Width of the fill lines</td>
</tr>
<tr>
<td>angle1</td><td>int/degrees</td><td>First angle of fill</td>
</tr>
<tr>
<td>pitch1</td><td>int/mils</td><td>First pitch/spacing of fill</td>
</tr>
<tr>
<td>angle2</td><td>int/degrees</td><td>Second angle of fill</td>
</tr>
<tr>
<td>pitch2</td><td>int/mils</td><td>Second pitch/spacing of fill</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> The capstyle is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> END NONE = 0</div>
</li>
<li class="level2"><div class="li"> END SQUARE = 1</div>
</li>
<li class="level2"><div class="li"> END ROUND = 2</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The dashstyle is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> TYPE SOLID = 0</div>
</li>
<li class="level2"><div class="li"> TYPE DOTTED = 1</div>
</li>
<li class="level2"><div class="li"> TYPE DASHED = 2</div>
</li>
<li class="level2"><div class="li"> TYPE CENTER = 3</div>
</li>
<li class="level2"><div class="li"> TYPE PHANTOM = 4</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The dashlength parameter is not used for TYPE SOLID and TYPE DOTTED. This parameter should take on a value of -1 in these cases.</div>
</li>
<li class="level1"><div class="li"> The dashspace paramater is not used for TYPE SOLID. This parameter should take on a value of -1 in these case.</div>
</li>
<li class="level1"><div class="li"> The filltype parameter is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> FILLING HOLLOW = 0</div>
</li>
<li class="level2"><div class="li"> FILLING FILL = 1</div>
</li>
<li class="level2"><div class="li"> FILLING MESH = 2</div>
</li>
<li class="level2"><div class="li"> FILLING HATCH = 3</div>
</li>
<li class="level2"><div class="li"> FILLING VOID = 4 unused</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> If the filltype is 0 (FILLING HOLLOW), then all the fill parameters should take on a value of -1.</div>
</li>
<li class="level1"><div class="li"> The fill type FILLING FILL is a solid color fill.</div>
</li>
<li class="level1"><div class="li"> The two pairs of pitch and spacing control the fill or hatch if the fill type is FILLING MESH.</div>
</li>
<li class="level1"><div class="li"> Only the first pair of pitch and spacing are used if the fill type is FILLING HATCH.</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">B 33000 67300 2000 2000 3 60 0 2 75 50 0 -1 -1 -1 -1 -1</pre>
<p>
A box with the lower left hand corner at (33000, 67300) and a width and height of (2000, 2000), color index 3, line width of 60 mils, no cap, dashed line type, dash length of 75 mils, dash spacing of 50 mils, no fill, rest parameters unset.
</p>
</div>
<!-- SECTION [9271-11477] -->
<h3><a name="circle" id="circle">circle</a></h3>
<div class="level3">
<p>
Valid in: Schematic and Symbol files<br/>
<strong><code>type x y radius color width capstyle dashtype dashlength dashspace
filltype fillwidth angle1 pitch1 angle2 pitch2</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>V</td>
</tr>
<tr>
<td>x</td><td>int/mils</td><td>Center X coordinate</td>
</tr>
<tr>
<td>y</td><td>int/mils</td><td>Center Y coordinate</td>
</tr>
<tr>
<td>radius</td><td>int/mils</td><td>Radius of the circle</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
<tr>
<td>width</td><td>int/mils</td><td>Width of circle line</td>
</tr>
<tr>
<td>capstyle</td><td>int/mils</td><td>0 unused</td>
</tr>
<tr>
<td>dashstyle</td><td>int</td><td>Type of dash style</td>
</tr>
<tr>
<td>dashlength</td><td>int/mils</td><td>Length of dash</td>
</tr>
<tr>
<td>dashspace</td><td>int/mils</td><td>Space inbetween dashes</td>
</tr>
<tr>
<td>filltype</td><td>int</td><td>Type of fill</td>
</tr>
<tr>
<td>fillwidth</td><td>int/mils</td><td>Width of the fill lines</td>
</tr>
<tr>
<td>angle1</td><td>int/degrees</td><td>First angle of fill</td>
</tr>
<tr>
<td>pitch1</td><td>int/mils</td><td>First pitch/spacing of fill</td>
</tr>
<tr>
<td>angle2</td><td>int/degrees</td><td>Second angle of fill</td>
</tr>
<tr>
<td>pitch2</td><td>int/mils</td><td>Second pitch/spacing of fill</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> The dashstyle is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> TYPE SOLID = 0</div>
</li>
<li class="level2"><div class="li"> TYPE DOTTED = 1</div>
</li>
<li class="level2"><div class="li"> TYPE DASHED = 2</div>
</li>
<li class="level2"><div class="li"> TYPE CENTER = 3</div>
</li>
<li class="level2"><div class="li"> TYPE PHANTOM = 4</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The dashlength parameter is not used for TYPE SOLID and TYPE DOTTED. This parameter should take on a value of -1 in these cases.</div>
</li>
<li class="level1"><div class="li"> The dashspace paramater is not used for TYPE SOLID. This parameter should take on a value of -1 in these case.</div>
</li>
<li class="level1"><div class="li"> The filltype parameter is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> FILLING HOLLOW = 0</div>
</li>
<li class="level2"><div class="li"> FILLING FILL = 1</div>
</li>
<li class="level2"><div class="li"> FILLING MESH = 2</div>
</li>
<li class="level2"><div class="li"> FILLING HATCH = 3</div>
</li>
<li class="level2"><div class="li"> FILLING VOID = 4 unused</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> If the filltype is 0 (FILLING HOLLOW), then all the fill parameters should take on a value of -1.</div>
</li>
<li class="level1"><div class="li"> The fill type FILLING FILL is a solid color fill.</div>
</li>
<li class="level1"><div class="li"> The two pairs of pitch and spacing control the fill or hatch if the fill type is FILLING MESH.</div>
</li>
<li class="level1"><div class="li"> Only the first pair of pitch and spacing are used if the fill type is FILLING HATCH.</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">V 38000 67000 900 3 0 0 2 75 50 2 10 20 30 90 50</pre>
<p>
A circle with the center at (38000, 67000) and a radius of 900 mils, color index 3, line width of 0 mils (smallest size), no cap, dashed line type, dash length of 75 mils, dash spacing of 50 mils, mesh fill, 10 mils thick mesh lines, first mesh line: 20 degrees, with a spacing of 30 mils, second mesh line: 90 degrees, with a spacing of 50 mils.
</p>
</div>
<!-- SECTION [11478-13603] -->
<h2><a name="arc" id="arc">arc</a></h2>
<div class="level2">
<p>
Valid in: Schematic and Symbol files<br/>
<strong><code>type x y radius startangle sweepangle color width capstyle dashtype
dashlength dashspace</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>A</td>
</tr>
<tr>
<td>x</td><td>int/mils</td><td>Center X coordinate</td>
</tr>
<tr>
<td>y</td><td>int/mils</td><td>Center Y coordinate</td>
</tr>
<tr>
<td>radius</td><td>int/mils</td><td>Radius of the arc</td>
</tr>
<tr>
<td>startangle</td><td>int/degrees</td><td>Starting angle of the arc</td>
</tr>
<tr>
<td>sweepangle</td><td>int/degrees</td><td>Amount the arc sweeps</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
<tr>
<td>width</td><td>int/mils</td><td>Width of circle line</td>
</tr>
<tr>
<td>capstyle</td><td>int</td><td>Cap style</td>
</tr>
<tr>
<td>dashstyle</td><td>int</td><td>Type of dash style</td>
</tr>
<tr>
<td>dashlength</td><td>int/mils</td><td>Length of dash</td>
</tr>
<tr>
<td>dashspace</td><td>int/mils</td><td>Space inbetween dashes</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> The startangle can be negative, but not recommended.</div>
</li>
<li class="level1"><div class="li"> The sweepangle can be negative, but not recommended.</div>
</li>
<li class="level1"><div class="li"> The capstyle is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> END NONE = 0</div>
</li>
<li class="level2"><div class="li"> END SQUARE = 1</div>
</li>
<li class="level2"><div class="li"> END ROUND = 2</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The dashstyle is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> TYPE SOLID = 0</div>
</li>
<li class="level2"><div class="li"> TYPE DOTTED = 1</div>
</li>
<li class="level2"><div class="li"> TYPE DASHED = 2</div>
</li>
<li class="level2"><div class="li"> TYPE CENTER = 3</div>
</li>
<li class="level2"><div class="li"> TYPE PHANTOM = 4</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The dashlength parameter is not used for TYPE SOLID and TYPE DOTTED. This parameter should take on a value of -1 in these cases.</div>
</li>
<li class="level1"><div class="li"> The dashspace paramater is not used for TYPE SOLID. This parameter should take on a value of -1 in these case.</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">A 30600 75000 2000 0 45 3 0 0 3 75 50</pre>
<p>
An arc with the center at (30600, 75000) and a radius of 2000 mils, a starting angle of 0, sweeping 45 degrees, color index 3, line width of 0 mils (smallest size), no cap, center line type, dash length of 75 mils, dash spacing of 50 mils.
</p>
</div>
<!-- SECTION [13604-15121] -->
<h3><a name="text" id="text">text</a></h3>
<div class="level3">
<p>
Valid in: Schematic and Symbol files<br/>
<strong><code>type x y color size visibility show name value angle alignment num lines
string line 1
string line 2
string line 3
...
string line N</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>T</td>
</tr>
<tr>
<td>x</td><td>int/mils</td><td>First X coordinate</td>
</tr>
<tr>
<td>y</td><td>int/mils</td><td>First Y coordinate</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
<tr>
<td>size</td><td>int/points</td><td>Size of text</td>
</tr>
<tr>
<td>visibility</td><td>int</td><td>Visibility of text</td>
</tr>
<tr>
<td>show_name_value</td><td>int</td><td>Attribute visibility control</td>
</tr>
<tr>
<td>angle</td><td>int/degrees</td><td>Angle of the text</td>
</tr>
<tr>
<td>alignment</td><td>int</td><td>Alignment/origin of the text</td>
</tr>
<tr>
<td>num_lines</td><td>int</td><td>Number of lines of text (1 based)</td>
</tr>
<tr>
<td>string line 1 ... N</td><td>string</td><td>The text strings, on a seperate line</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> This object is a multi line object. The first line contains all the text parameters and the subsequent lines are the text strings.</div>
</li>
<li class="level1"><div class="li"> There must be exactly num lines of text following the T ... string.</div>
</li>
<li class="level1"><div class="li"> The maximum length of any single text string is 1024, however there is no limit to the number of text string lines.</div>
</li>
<li class="level1"><div class="li"> The minimum size is 2 points (1/72 of an inch).</div>
</li>
<li class="level1"><div class="li"> There is no maximum size.</div>
</li>
<li class="level1"><div class="li"> The coordinate pair is the origin of the text item.</div>
</li>
<li class="level1"><div class="li"> The visibility field is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> INVISIBLE = 0</div>
</li>
<li class="level2"><div class="li"> VISIBLE = 1</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The show name value is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> SHOW NAME VALUE = 0 (show both name and value of an attribute)</div>
</li>
<li class="level2"><div class="li"> SHOW VALUE = 1 (show only the value of an attribute)</div>
</li>
<li class="level2"><div class="li"> SHOW NAME = 2 (show only the name of an attribute)</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The show name value field is only valid if the string is an attribute (string has to be in the form: name=value to be considered an attribute).</div>
</li>
<li class="level1"><div class="li"> The angle of the text can only take on one of the following values: 0, 90, 180, 270. A value of 270 will always generate upright text.</div>
</li>
<li class="level1"><div class="li"> The alignment/origin field controls the relative location of the origin.</div>
</li>
<li class="level1"><div class="li"> The alignment field can take a value from 0 to 8.</div>
</li>
<li class="level1"><div class="li"> The num_lines field always starts at 1.</div>
</li>
<li class="level1"><div class="li"> The num_lines field was added starting with file format version 1. Past versions (0 or earlier) only supported single line text objects.<br/>
The following diagram shows what the values for the alignment field mean:</div>
</li>
</ul>
<table class="inline">
<tr>
<td> <a href="_detail/geda_fileformat_textgraphic.html" class="media" title="geda:fileformat_textgraphic.jpg"><img src="_media/geda_fileformat_textgraphic.jpg" class="media" title="fileformat_textgraphic.jpg" alt="fileformat_textgraphic.jpg" /></a> </td>
</tr>
</table>
<br />
<p>
Example:<br/>
</p>
<pre class="code">T 16900 35800 3 10 1 0 0 0 1
Text string!</pre>
<p>
A text object with the origin at (16900, 35800), color index 3, 10 points in size, visible, attribute ags not valid (not an attribute), origin at lower left, string: Text string!
</p>
<p>
Example:<br/>
</p>
<pre class="code">T 16900 35800 3 10 1 0 0 0 5
Text string line 1
Text string line 2
Text string line 3
Text string line 4
Text string line 5</pre>
<p>
This is a similar text object as the above example, however here there are five lines of text.
</p>
</div>
<!-- SECTION [15122-17765] -->
<h3><a name="net" id="net">net</a></h3>
<div class="level3">
<p>
Valid in: Schematic files ONLY<br/>
<strong><code>type x1 y1 x2 y2 color</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type char N</td>
</tr>
<tr>
<td>x1</td><td>int/mils</td><td>First X coordinate</td>
</tr>
<tr>
<td>y1</td><td>int/mils</td><td>First Y coordinate</td>
</tr>
<tr>
<td>x2</td><td>int/mils</td><td>Second X coordinate</td>
</tr>
<tr>
<td>y2</td><td>int/mils</td><td>Second Y coordinate</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> Nets can only appear in schematic files.</div>
</li>
<li class="level1"><div class="li"> You cannot have a zero length net (the tools will throw them away).</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">N 12700 29400 32900 29400 4</pre>
<p>
A net segment from (12700, 29400) to (32900, 29400) with color index 4.
</p>
</div>
<!-- SECTION [17766-18291] -->
<h3><a name="bus" id="bus">bus</a></h3>
<div class="level3">
<p>
Valid in: Schematic files ONLY<br/>
<strong><code>type x1 y1 x2 y2 color ripperdir</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type char U</td>
</tr>
<tr>
<td>x1</td><td>int/mils</td><td>First X coordinate</td>
</tr>
<tr>
<td>y1</td><td>int/mils</td><td>First Y coordinate</td>
</tr>
<tr>
<td>x2</td><td>int/mils</td><td>Second X coordinate</td>
</tr>
<tr>
<td>y2</td><td>int/mils</td><td>Second Y coordinate</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
<tr>
<td>ripperdir</td><td>int</td><td>Direction of bus rippers</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> The ripperdir field for an brand new bus is 0.</div>
</li>
<li class="level1"><div class="li"> The ripperdir field takes on a value of 1 or -1 when a net is connected to the bus for the first time. This value indicates the direction of the ripper symbol. The ripper direction is set to the same value for the entire life of the bus object.</div>
</li>
<li class="level1"><div class="li"> Buses can only appear in schematic files.</div>
</li>
<li class="level1"><div class="li"> You cannot have a zero length bus (the tools will throw them away).</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">U 27300 37400 27300 35300 3 0</pre>
<p>
A bus segment from (27300, 37400) to (27300, 35300) with color index 3 and no nets have been connected to this bus segment.
</p>
</div>
<!-- SECTION [18292-19223] -->
<h3><a name="pin" id="pin">pin</a></h3>
<div class="level3">
<p>
Valid in: Symbol files ONLY<br/>
<strong><code>type x1 y1 x2 y2 color pintype whichend</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>P</td>
</tr>
<tr>
<td>x1</td><td>int/mils</td><td>First X coordinate</td>
</tr>
<tr>
<td>y1</td><td>int/mils</td><td>First Y coordinate</td>
</tr>
<tr>
<td>x2</td><td>int/mils</td><td>Second X coordinate</td>
</tr>
<tr>
<td>y2</td><td>int/mils</td><td>Second Y coordinate</td>
</tr>
<tr>
<td>color</td><td>int</td><td>Color index</td>
</tr>
<tr>
<td>pintype</td><td>int</td><td>Type of pin</td>
</tr>
<tr>
<td>whichend</td><td>int</td><td>Specifies the active end</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> The pintype is an enumerated type:</div>
<ul>
<li class="level2"><div class="li"> NORMAL <acronym title="Personal Identification Number">PIN</acronym> = 0</div>
</li>
<li class="level2"><div class="li"> BUS <acronym title="Personal Identification Number">PIN</acronym> = 1 unused</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> The whichend specifies which end point of the pin is the active connection port. Only this end point can have other pins or nets connected to it.</div>
</li>
<li class="level1"><div class="li"> To make the first end point active, whichend should be 0, else to specify the other end, whichend should be 1.</div>
</li>
<li class="level1"><div class="li"> Pins can only appear in symbol files.</div>
</li>
<li class="level1"><div class="li"> You cannot have a zero length pen (the tools will throw them away).</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">P 0 200 200 200 1 0 0</pre>
<p>
A pin from (0, 200) to (200, 200) with color index 1, a regular pin, and the first point being the active connection end.
</p>
</div>
<!-- SECTION [19224-20220] -->
<h3><a name="component" id="component">component</a></h3>
<div class="level3">
<p>
Valid in: Schematic files ONLY<br/>
<strong><code>type x y selectable angle mirror basename</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type char C</td>
</tr>
<tr>
<td>x</td><td>int/mils</td><td>Origin X coordinate</td>
</tr>
<tr>
<td>y</td><td>int/mils</td><td>Origin Y coordinate</td>
</tr>
<tr>
<td>selectable</td><td>int</td><td>Selectable flag</td>
</tr>
<tr>
<td>angle</td><td>int/degrees</td><td>Angle of the component</td>
</tr>
<tr>
<td>mirror</td><td>int</td><td>Mirror around Y axis</td>
</tr>
<tr>
<td>basename</td><td>string</td><td>The filename of the component</td>
</tr>
</table>
<br />
<p>
The selectable field is either 1 for selectable or 0 if not selectable.
</p>
<ul>
<li class="level1"><div class="li"> The angle field can only take on the following values: 0, 90, 180, 270.</div>
</li>
<li class="level1"><div class="li"> The angle field can only be positive.</div>
</li>
<li class="level1"><div class="li"> The mirror flag is 0 if the component is not mirrored (around the Y axis).</div>
</li>
<li class="level1"><div class="li"> The mirror flag is 1 if the component is mirrored (around the Y axis).</div>
</li>
<li class="level1"><div class="li"> The just basename is the filename of the component. This filename is not the full path.</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">C 18600 19900 1 0 0 7400-1.sym</pre>
<p>
A component whos origin is at (18600,19900), is selectable, not rotated, not mirrored, and the basename of the component is 7400-1.sym.
</p>
</div>
<!-- SECTION [20221-21223] -->
<h3><a name="font" id="font">font</a></h3>
<div class="level3">
<p>
Valid in: Special font files ONLY<br/>
<strong><code>type character width flag</code></strong>
</p>
<table class="inline">
<tr>
<th>Field</th><th>Type/unit</th><th>Description</th>
</tr>
<tr>
<td>type</td><td>char</td><td>F</td>
</tr>
<tr>
<td>character</td><td>char</td><td>The character being defined</td>
</tr>
<tr>
<td>width</td><td>int/mils</td><td>Width of the character (mils)</td>
</tr>
<tr>
<td>flag</td><td>int</td><td>Special space flag</td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> This is a special tag and should ONLY show up in font definition files.</div>
</li>
<li class="level1"><div class="li"> If the font character being defined is the space character (32) then flag should be 1, otherwise 0.</div>
</li>
</ul>
<p>
Example:<br/>
</p>
<pre class="code">F 11 1</pre>
<p>
The above font definition is for the space character.
</p>
</div>
<!-- SECTION [21224-21744] -->
<h2><a name="colors" id="colors">Colors</a></h2>
<div class="level2">
<p>
In the gEDA/gaf schematic and symbol file format colors are specified via an integer index. The relationship between integer and color is based on object type. Each object type typically has one or more colors. Here is a table of color index to object type:
</p>
<table class="inline">
<tr>
<th>Color</th><th>Index</th><th>Object type</th>
</tr>
<tr>
<td>0</td><td>BACKGROUND_COLOR</td>
</tr>
<tr>
<td>1</td><td><acronym title="Personal Identification Number">PIN</acronym>_COLOR</td>
</tr>
<tr>
<td>2</td><td>NET_ENDPOINT_COLOR</td>
</tr>
<tr>
<td>3</td><td>GRAPHIC_COLOR</td>
</tr>
<tr>
<td>4</td><td>NET_COLOR</td>
</tr>
<tr>
<td>5</td><td>ATTRIBUTE_COLOR</td>
</tr>
<tr>
<td>6</td><td>LOGIC_BUBBLE_COLOR</td>
</tr>
<tr>
<td>7</td><td>GRID_COLOR</td>
</tr>
<tr>
<td>8</td><td>DETACHED_ATTRIBUTE_COLOR</td>
</tr>
<tr>
<td>9</td><td>TEXT_COLOR</td>
</tr>
<tr>
<td>10</td><td>BUS_COLOR</td>
</tr>
<tr>
<td>11</td><td>SELECT_COLOR</td>
</tr>
<tr>
<td>12</td><td>BOUNDINGBOX_COLOR</td>
</tr>
<tr>
<td>13</td><td>ZOOM_BOX_COLOR</td>
</tr>
<tr>
<td>14</td><td>STROKE_COLOR</td>
</tr>
<tr>
<td>15</td><td>LOCK_COLOR</td>
</tr>
<tr>
<td>16</td><td>OUTPUT_BACKGROUND_COLOR</td>
</tr>
</table>
<br />
<p>
The actual color associated with the color index is defined on a per tool bases. Objects are typically assigned their corresponding color index, but it is permissible (sometimes) to assign other color index values to different object types.
</p>
</div>
<!-- SECTION [21745-22622] -->
<h2><a name="attributes" id="attributes">Attributes</a></h2>
<div class="level2">
<p>
Attributes are enclosed in f g and can only be text. Attributes are text items which take on the form name=value. If it doesn’t have name=value, it’s not an attribute. Attributes are attached to the previous object. Here’s an example:
</p>
<pre class="code">P 988 500 1300 500 1
f
T 1000 570 5 8 1 1 0
pinseq=3
T 1000 550 5 8 1 1 0
pinnumber=3
g</pre>
<p>
The object is a pin which has an attribute pinnumber=3 and pinseq=3 (name=value). You can have multiple text objects (both the T ... and text string are required) in between the f g. As of 20021103, you can only attached text items as attributes. Attaching other object types as attributes is unsupported.<br/>
You can also have “toplevel” attributes. These attributes are not attached to any object, but instead are just text objects that take on the form name=value.<br/>
These attributes are useful when you need to convey some info about a schematic page or symbol and need the netlister to have access to this info.
</p>
</div>
<!-- SECTION [22623-23598] -->
<h2><a name="embedded_components" id="embedded_components">Embedded Components</a></h2>
<div class="level2">
<p>
Embedded components are components which have all of their definition stored within the schematic file. When a users place a component onto a schematic page, they have the option of making the component embedded. Other than storing all the symbol information inside of the schematic, an embedded component is just any other component. Embedded components are defined as:
</p>
<pre class="code">C 18600 21500 1 0 0 EMBEDDED555-1.sym
[
...
... Embedded primitive objects
...
]</pre>
<p>
In the example above, <strong>555-1.sym</strong> is the component. The EMBEDDED tag and the [ ] are the distinguishing characteristics of embedded components. <strong>componentname.sym</strong> must exist in one of the specified component-libraries if you want to unembed the component.
</p>
</div>
<!-- SECTION [23599-24358] -->
<h2><a name="document_revision_history" id="document_revision_history">Document Revision History</a></h2>
<div class="level2">
<table class="inline">
<tr>
<td>November 30th, 2002</td><td>Created fleformats.tex from fleformats.html.</td>
</tr>
<tr>
<td>December 1st, 2002</td><td>Continued work on this document.</td>
</tr>
<tr>
<td>October 4th, 2003</td><td>Added new file format version flag info.</td>
</tr>
<tr>
<td>October 19th, 2003</td><td>Added num lines text field.</td>
</tr>
</table>
<br />
</div>
<!-- SECTION [24359-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_footprint_creation.html
Index: geda_footprint_creation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:footprint_creation</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:footprint_creation?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:footprint_creation?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:footprint_creation?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gattrib_readme.html
Index: geda_gattrib_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gattrib_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gattrib_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gattrib_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gattrib_readme?do=export_raw" />
<meta name="date" content="2006-04-23T07:27:23-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gattrib_readme" id="gattrib_readme">gattrib README</a></h1>
<div class="level1">
<pre class="code">******************************************************************
************* DANGER!! Read the entirety of this **************
************ README before you try runing gattrib! *************
******************************************************************
INTRODUCTION
Gattrib is gEDA's attribute editor. It reads a set of gschem .sch
files (schematic files), and creates a spreadsheet showing all
components in rows, with the associated component attributes listed in
the columns. It allows the user to add, modify, or delete component
attributes outside of gschem, and then save the .sch files back
out. When it is completed, it will allow the user to edit attributes
attached to components, nets, and pins. (Currently, only component
attribute editing is implemented; pin attributes are displayed only,
and net attributes are TBD.)
Gattrib is useful in situations where you need to view, add, modify,
or delete a number of attributes all at once. It saves you the pain
of clicking on each component and repeatedly using gschem's attribute
editor to modify component attributes. For example, if you create a
large design with generic components, and then later want to attach
"footprint" attributes to your components, it is a real hassle to do
so using gschem. In this situation, you can run gattrib on your
design files to attach the "footprint" attributes all at once using an
easy-to-use spreadsheet.
WARNING NOTE: Gattrib is currently PRE-ALPHA SOFTWARE!
It has been tested on several designs, but is not garuanteed to work.
It may even trash your design! Therefore, if you wish to try gattrib
out, please create a backup copy of your design before you run it!
------------------------------------------------------------------
USAGE
You can invoke gattrib on your design from the command line in the
following way:
gattrib my_design_*.sch
(This assumes you have a multi-page design with file names
"my_design_1.sch", "my_design_2.sch", etc.) Gattrib will then read in
your design, and present you with a spreadsheet showing all components
and associated attributes.
You can also just run gattrib, and specify the input files using the
file->open dialog box.
To edit your attributes, just edit the cells in the spreadsheet.
To save your design, just select "save" from the command menu. Note
that no checks are currently done when you select save. Be careful!
To quit, just select "quit" from the command menu. Note that
currently no checks thet you have saved your design are done when you
quit.
If you want to add an entirely new attribute to your design (i.e. one
which doesn't exist on any component), you must first attach at least
one instance of that attribute to a component using gschem. Then you
can use gattrib to attach the attribute to the remaining components.
(The reason for this is that gattrib creates its spreadsheet columns
based upon all attributes it finds when reading in the design.
Therefore, to create a column for a new attribute, you need to make
sure that that new attribute pre-exists in the design.) In the future,
you will be able to add new attribute columns directly from gattrib,
but this feature is currently unimplemented.
------------------------------------------------------------------
FEATURES
The following features are currently implemented:
* .sch file read in from command line.
* .sch file read in from menu.
* .sch file save out from menu.
* Component attribute editing (of course).
* Pin attribute viewing.
* Quit from menu.
The following features are currently unimplemented, but will be
incorporated at some future date:
* Throw up "Are you sure" dialog boxes upon selecting "save" and
"quit" from menu.
* Alphabetic sort of rows. (Should happen automatically upon read-in
of design.)
* Editing of net attributes (important for setting routing
attributes).
* Adding/deleting attribute columns (to add/delete entire sets of
attributes from a design.)
* Search/replace of individual attributes.
* Search for component refdeses & netnames.
* Set/view component & net visibility (through options pull-down
menu). Currently, visibility is "invisible", and both name & value
are displayed (if you turn on the visibility).
Note that if you select unimplemented features from the menu, nothing
will happen.
------------------------------------------------------------------
INSTALLATION
To install gattrib, place the tarball in the directory where your gEDA
sources live. Then do:
tar -zxvf geda-gattrib-20040806.tar.gz
cd geda-gattrib-20040806
./configure --prefix=/path/to/your/geda/stuff
make
make install
Note that you may need to set some environment variables first. If
your compilation barfs, try setting these (for csh):
setenv LD_LIBRARY_PATH /usr/local/geda/lib:$LD_LIBRARY_PATH
setenv PATH /usr/local/geda/bin:$PATH
setenv PKG_CONFIG_PATH /usr/local/geda/lib/pkgconfig:$PKG_CONFIG_PATH
------------------------------------------------------------------
CREDITS/CONTACT:
Gattrib was cobbled together by Stuart Brorson starting in December
2003 from parts culled from GtkSheet (GTK+Extra) and gEDA. Please
mail bug reports to: sdb@xxxxxxxxxx
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gerbv_mp.html
Index: geda_gerbv_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gerbv_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gerbv_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gerbv_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gerbv_mp?do=export_raw" />
<meta name="date" content="2006-05-07T16:33:09-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gerbv_man-page" id="gerbv_man-page">gerbv man-page</a></h1>
<div class="level1">
<pre class="code">gerbv(1) cvs-20051023 gerbv(1)
NAME
gerbv - Gerber Viewer
SYNOPSIS
gerbv [OPTIONS] [gerberfile[s]]
DESCRIPTION
gerbv is a viewer for Gerber files. Gerber files is generated from dif-
ferent PCB CAD programs and are sent to subcontractors to actually make
the PCB. gerbv also supports Excellon/NC drill files.
OPTIONS
Warning! On some platforms, which hasn�t long option available, only
short options are available.
gerbv Options
-V|--version Prints the version number of gerbv and exits.
-h|--help
Prints a brief usage guide.
-l <filename>|--log=<filename>
All error messages etc are stored in a file with filename <file-
name>.
-t <filename>|--tools=<filename>
Read Excellon tools from the file <filename>.
--geometry=<width>x<height>[<+->x-position[<+->y-position]]
Sets the the size of the window. X-position and y-position are
currently ignored by gerbv.
-p <project filename>|--project=<project filename>
Load a stored project. Please note that the project file must be
stored in the same directory as the gerber files.
GTK Options
--gtk-module=MODULE Load an additional GTK module
--g-fatal-warnings
Make all warnings fatal
--gtk-debug=FLAGS
GTK debugging flags to set
--gtk-no-debug=FLAGS
GTK debugging flags to unset
--gdk-debug=FLAGS
GDK debugging flags to set
--gdk-no-debug=FLAGS
GDK debugging flags to unset
--display=DISPLAY
X display to use
--sync Make X call synchronous
--no-xshm
Don�t use X shared memory extension
--name=NAME
Program name as used by the window manager
--class=CLASS
Program class as used by the window manager
GENERAL
When you start gerbv you can give the files to be loaded on the command
line, either as each file separated with a space or by using wildcards.
The user interface is graphical. Simply press left mouse button and the
image will pan as you move the mouse. To manipulate a layer, right-
click on one of the rightmost buttons. That will bring up a pop-up menu
where you can select what you want to do with that layer (load file,
change color, etc).
If you hold the mouse button over one the rightmost button a tooltips
will show you the name of the file loaded on that layer.
Default of concurrently loaded files are 20 layers. You can change this
during configure with:
./configure with-maxfiles=<number>
ACTIVATION AND DEACTIVATION OF LAYERS
You can load several files at one time. You can then turn displaying of
the layers on and off by clicking on one of the rightmost buttons.
You can also control this from the keyboard. Press Alt, enter the num-
ber on the layer you want activate/deactivate on the numerical keypad
and then release the Alt key.
ZOOMING
Zooming can be handled by either menu choices, keypressing, middle
mouse button or scroll wheel. If you press Alt+I you will zoom in and
if you press Alt+O you will zoom out.If you press middle mouse button
you will zoom out, and if you press Shift and middle mouse button you
will zoom in. Scroll wheel works if you enabled that in your X server
and mapped it to button 4 and 5. You can also zoom in by pressing z and
zoom out by pressing shift+z (ie Z). You can make the image fit by
pressing f (there is also a menu alternativ for this).
You can also do zooming by outline. Press right mouse button, draw,
release. The dashed line shows how the zooming will be dependent on
the resolution of the window. The non-dashed outline will show what you
actually selected. If you change your mind when started to mark out-
line, you can always abort by pressing escape. By holding down the
shift key when you press the right mouse button, you will select an
area where the point you started at will be the center of your selec-
tion.
MEASUREMENTS
You can do measurement on the image displayed. By pressing shift, the
cursor changes to a plus. By using left mouse button you can draw the
lines that you want to measure. The result of the last measurement is
also displayed on the statusbar. All measurements are in the drawing
until you either zoom, pan or press the escape key.
The statusbar shows the current mouse position on the layer in the same
coordinates as in the file. Ie if you have (0,0) in the middle of the
image in the gerber files, the statusbar will show (0,0) at the same
place.
SUPERIMPOSING
When you load several Gerber files, you can display them "on top of
each other", ie superimposing. The general way to display them are that
upper layers cover the layers beneath, which is called copy (GTK+
terms).
The other ways selectable are and, or, xor and invert. They map
directly to corresponding functions in GTK. In GTK they are described
as: "For colored images, only GDK_COPY, GDK_XOR and GDK_INVERT are gen-
erally useful. For bitmaps, GDK_AND and GDK_OR are also useful."
PROJECTS
gerbv can also handle projects. A project consist of bunch of loaded
layers with their resp. color and the background color. The easiest way
to create a project is to load all files you want into the layer you
want, set all the colors etc and do a "Save Project As...".
You load a project either from the menu bar or by using the commandline
switches -p or --project.
Currently there is a limit in that the project file must be in the same
directory as the gerber files to be loaded.
SCHEME
The project files are simple Scheme programs that is interpreted by a
built in Scheme interpreter. The Scheme interpreter is TinyScheme and
needs a Scheme program called init.scm to initialize itself. The search
path for init.scm is (in the following order)
/usr/local/gEDA-20060124/share/gerbv/scheme/share/gerbv/scheme/, the
directory with the executable gerbv, the directory gerbv was invoked
from and finally according to the environment variable
GERBV_SCHEMEINIT.
TOOLS FILE
Not every Excellon drill file is self-sufficient. Some CADs produce
.drd files where tools are only referenced, but never defined (such as
what diameter of the tool is.) Eagle CAD is one of such CADs, and there
are more since many board houses require Tools files.
A Tools file is a plain text file which you create in an editor. Each
line of the file describes one tool (the name and the diameter, in
inches):
T01 0.024
T02 0.040
...
These are the same tools (T01 etc.) that are used in the Drill file. A
standard practice with Eagle is to create an empty Tools file, run the
CAM processor, and the error report tells you which tools you "forgot".
Then you put these tools into the file and rerun the CAM processor.
You load a tool file by using the commandline switches -t or --tools.
The file can have any name you wish, but Eagle expects the file type to
be ".drl", so it makes sense to keep it this way. Some board houses are
still using CAM software from DOS era, so you may want to excercise
caution before going beyond the 8.3 naming convention.
When gerbv reads the Tools file it also checks that there are no dupli-
cate definitions of tools. This does happen from time to time as you
edit the file by hand, especially if you, during design, add or remove
parts from the board and then have to add new tools into the Tools
file. The duplicate tools are a very serious error which will stop
(HOLD) your board until you fix the Tools file and maybe the Excellon
file. gerbv will detect duplicate tools if they are present, and will
exit immediately to indicate such a fatal error in a very obvious way.
A message will also be printed to standard error.
If your Excellon file does not contain tool definitions then gerbv will
preconfigure the tools by deriving the diameter of the drill bit from
the tool number. This is probably not what you want, and you will see
warnings printed on the console.
ENVIRONMENT
GERBV_SCHEMEINIT
Defines where the init.scm file is stored. Used by scheme inter-
preter, which is used by the project reader.
AUTHOR
Stefan Petersen (spetm at users.sourceforge.net): Overall hacker and project leader
Andreas Andersson (e92_aan at e.kth.se): Drill file support and general hacking
Anders Eriksson (aenfaldor at users.sourceforge.net) : X and GTK+ ideas and hacking
COPYRIGHT
Copyright �© 2001-2004 Stefan Petersen
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version Feb 8th, 2004 gerbv(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gerbv_pnp_readme.html
Index: geda_gerbv_pnp_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gerbv_pnp_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gerbv_pnp_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gerbv_pnp_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gerbv_pnp_readme?do=export_raw" />
<meta name="date" content="2006-05-07T16:30:11-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="searching_for_parts_and_marking_them_on_screen_in_gerbv" id="searching_for_parts_and_marking_them_on_screen_in_gerbv">Searching for Parts and marking them on screen (in gerbv)</a></h1>
<div class="level1">
<pre class="code">Searching for Parts and marking them on screen (in gerbv)
THIS FUNCTIONALITY IS ONLY AVAILABLE WHEN COMPILING GERBV AGAINST GTK2!
Please direct any comments, suggestions etc. to Juergen <juergenhaas@xxxxxxx>
=============================================================================
*** Support for Pick and Place files: ***
*** csv-style files with/without quotes ***
*** the following delimiters are supported ';' ':' '|' ',' ***
----------------------------------------------------------------------------
----------------------------------------------------------------------------
A pick and place file has 11 columns (the first two lines a file in gerbv/examplei
are shown here) and looks like this:
Designator:Footprint:Mid X:Mid Y:Ref X:Ref Y:Pad X:Pad Y:Layer:Rotation:Comment
R29:0805_REFL:25.4mm:72.644mm:25.4mm:72.644mm:25.4mm:71.6788mm:T:90.00:1K/1%
----------------------------------------------------------------------------
Some instructions for the first time user:
after loading a PNP file a new dialog will come up offering various option of
selecting and graphically marking electronic parts.
Three modes of selecting items do exist:
1)enter any search phrase and hit enter
(See also paragraph "SCROLLING" further down)
-Generally under linux regexp expressions are used such as ".*" i.e. '*'
-All matches will be marked in the list AND on the screen
-if you press ESC or press <ENTER> on an empty line it will deselect all
items
-if you had a selection already and you would like to add single items
one by one, just hold down CTRL key while you left-click on the desired
fields
2)just simply use left click combined with Shift and/or CTRL for manual
mouse driven selections
Pressing right button of mouse will not only select but also draw item on
selected layer
3)if you have pressed <ENTER> on an empty phrase you first of all will deselect
anything which was selected and you can then enter the so-called "assembly
mode" by left clicking on an item and afterwards pressing space as often as
desired, while the select parts dialog is active. The selection will move
down the list one by one displaying the selected part in the window
automatically (with the corresponding layer being active).
Alternatively 1:
If you had more than one item selected and you did not clear the selections list
by <ENTER> on an empty phrase, only the first item will be taken into account
and all others will be deselected.
Alternatively 2:
You can of course also select an item by clicking on it, pressing space will
then proceed as described
This mode also features arrows Up/Down selection, where arrow Up will reverse
the action of arrow Down/Spacebar. Furthermore, holding SHIFT while pressing
arrow Up/Down will increase the selection in either direction
-------------------------
More Features:
4)Inversion of selection:
pressing this button at any given time inverts the selection concerning the
whole list and upon clicking Mark button this new selection will be drawn
onto screen.
5)Top/bottom selection
General: press mark to mark selections on screen, after choosing to select
top or bottom parts.
a)in existing selection will only remove non wanted items
(e.g. all bottom parts if you press "top parts") from selection
b)if there is no selection, all top or all bottoms parts are selected
6)Choose available layers for marking selected parts from drop-down list
HINT: if pick and place file is loaded last, already occupied layers
will not be in the drop-down list
-------------------------------------------------------------------
Hint 1:
right click functionality to know Part description.
After you have graphically marked a number of parts (say all resistors) you can
right click onto a part which is selected in the scroll-down list of available
parts in the search dialog.
Its designator, comment and footprint are then shown in the statusbar and in the log window.
This comes in handy if there are many parts you want to look at, but e.g. you already
know a fault has occurred only on one side of the board.
-------------------------------------------------------------------
Hint 2:
SCROLLING (in the dialog window)
Scrolling generally only occurs, if search for comments is not activated AND
also whenever enter is hit the list will bescrolled to the first hit,
regardless of the search mode.
The use of BackSpace is supported.
If you decide to select an entry from the list of completions offered, then the
scrolling will only occur once you press enter.
Example:
imagine you are looking for an element labelled EU3:
If you hit the first key (E) to enter a search phrase in the entry field, the
list will be scrolled to the first element matching this key (E), also entering
a subsequent key (U) will then further refine that and scroll to the first
element with EU etc.
====================================================================</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gfdl.html
Index: geda_gfdl.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gfdl</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gfdl?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gfdl?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gfdl?do=export_raw" />
<meta name="date" content="2006-04-20T03:16:39-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gnu_free_documentation_license" id="gnu_free_documentation_license">GNU Free Documentation License</a></h1>
<div class="level1">
<pre class="code"> GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as "you". You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (Thus, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (c) YEAR YOUR NAME.
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-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_glossary.html
Index: geda_glossary.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:glossary</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:glossary?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:glossary?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:glossary?do=export_raw" />
<meta name="date" content="2006-05-07T01:11:00-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="glossary_of_geda_and_eda_terms" id="glossary_of_geda_and_eda_terms">Glossary of gEDA (and EDA) terms</a></h1>
<div class="level1">
<p>
The design of electronics involves a host of specific terms. Some words have a meaning that only vaguely resembles the use in everyday life. This glossary aims to be a dictionary of terms specific to the gEDA suite, as well as to the larger world of CAD for electronics. Unfortunately there is no universal naming scheme for concepts in the area of electronic design. The glossary will give hints on how things are called in other design suites.
</p>
<p>
<span class="hilited">(Wiki-authors: Please insert new terms according to the alphabet)</span>
</p>
<ul>
<li class="level1"><div class="li"> <strong>annular ring</strong>: The annular ring, sometimes also called <strong>annulus</strong>, is a diameter of copper that needs to be placed arround metalized holes like pads and vias. The minimum size of the annular ring is specified by the pcb-fab. A common requirements is 16 mil larger than the hole.</div>
</li>
<li class="level1"><div class="li"> <strong>design flow</strong>: The order or stages through which you take your design as you progress from initial concept, through schematic capture, attribute attachment, netlisting, and layout. One typically uses different tools to accomplish different tasks during the design process. The gEDA Suite uses entirely separate programs for different stages of the flow; each tool in the suite reads the output file produced by the previous tool, and writes a file to be read by the next tool in the flow. The gEDA design flow for designing a PCB is illustrated <a href="http://geda.seul.org/dokuwiki/doku.php?id=geda:usage#what_does_the_design_flow_in_geda_look_like" class="urlextern" title="http://geda.seul.org/dokuwiki/doku.php?id=geda:usage#what_does_the_design_flow_in_geda_look_like" rel="nofollow">here</a>. Note that the design flow for different tasks might look different. For example, if your goal is to simulate your circuit, you will use a different flow than that shown in the link above. Finally, other â?? usually simpler â?? PCB design tools use a monolithic approach in which one single program (albeit with different edit modes) is used for the entire design. Which approach is better usually is a matter of personal religion.</div>
</li>
<li class="level1"><div class="li"> <strong>footprint</strong>: The pattern of metal and silkscreen which defines where you place a component on a PCB. Footprints are the placed by the user onto the PC board during the â??placementâ?? phase of PCB layout (using e.g. the open-source tool PCB). A footprint is also sometimes called called a â??decalâ?? (PADS), or a â??land-patternâ??.</div>
</li>
<li class="level1"><div class="li"> <strong>net</strong>: A net is the representation of a wire, or electrical connection in your schematic diagram. It is basically a line connecting two symbol pins. The term â??netâ?? is also sometimes used loosely to talk about an electical connection (via a wire or PCB trace) in a real circuit. Some schematic capture tools call a net a â??wireâ??.</div>
</li>
<li class="level1"><div class="li"> <strong>netlist</strong>: A netlist is an text file representation of your circuit which emphasizes the connections between the different circuit elements, perhaps independently of the physical packages constituting the actual components in the circuit.</div>
</li>
<li class="level1"><div class="li"> <strong>pad</strong>: A pad is the patch of copper to which a SMD-component is to be soldered. Although pads are usually square, they can also be rounded.</div>
</li>
<li class="level1"><div class="li"> <strong>pin</strong>: A pin is a hole in the printed circuit that allows to connect a wired component. In many cases the hole is clad with copper by the pcb-fab.</div>
</li>
<li class="level1"><div class="li"> <strong>pcb</strong>: In the context of gEDA this acronm has two distict meanings:</div>
<ol>
<li class="level2"><div class="li"> An abbreviation of â??printed circuit boardâ??. This is the actual hardware that is used to connect electronic components. It is also sometimes called a â??printed wiring boardâ?? (PWB), although this usage may be dying out.</div>
</li>
<li class="level2"><div class="li"> A powerfull, open-source tool used to design the layout of a printed circuit board. The output of the gaf tools can be used as an input to pcb.(<a href="http://pcb.sourceforge.net/index.html" class="urlextern" title="http://pcb.sourceforge.net/index.html" rel="nofollow">homepage of pcb</a>)</div>
</li>
</ol>
</li>
<li class="level1"><div class="li"> <strong>rats nest</strong>: The lines drawn on the pcb working area that hint which pads still need need to be connected with tracks. Unlike the actual tracks the rats nest are straight lines. If multiple pads are involved in a net, pcb tries to draw rats nests with the shortest possible length.</div>
</li>
<li class="level1"><div class="li"> <strong>refdes</strong>: Short for â??reference designatorâ??. The unique designator (or name) of a component. The gEDA tools rely on the refdefs to organize the components internally. Therefore, for successful creation of a printed circuit board every component has to be linked with a refdes. Usually, the refdes consists of a few upper case letters and a digit. Examples: R1, R2, U115, CONN3. (Protel: â??Designatorâ??)</div>
</li>
<li class="level1"><div class="li"> <strong>slot</strong>: Some components contain multiple, identical devices inside a signal package. The IOs for each component are mapped to different pin sets on the package. A classic example is the TTL 7400 quad nand gate. Gschem (like other schematic capture packages) handles this type of component by allowing you to draw four separate nand gate symbols, and then selecting which <strong>slot</strong> each symbol should have by attaching a slot attribute to the symbol. In the example of the 7400 quad nand, you would select <strong><code>slot=1</code></strong> for the first appearance of the symbol, slot=2 for the second appearance, and so on. Note that in gschem you need to attach power nets to a slotted component only <strong>once</strong>. (Other schematic capture programs like Orcad require you to attach common nets â?? like power nets â?? on each instantiation of the slotted symbol.)</div>
</li>
<li class="level1"><div class="li"> <strong>symbol</strong>: A symbol is the representation of a particular component in your schematic diagram. The classic examples are squiggley lines for resistors (in US usage anyway), or a triangle for an op-amp. Using a schematic capture program (e.g. gschem) you place symbols on your board, and then wire them up to create a representation of your circuit.</div>
</li>
<li class="level1"><div class="li"> <strong>via</strong>: A via is a metalized hole that is meant to electrically connect different layers of the pcb. Usually, vias are as small as possible to save valuable real estate on the pcb.</div>
</li>
</ul>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gnetlist_mp.html
Index: geda_gnetlist_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gnetlist_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gnetlist_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gnetlist_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gnetlist_mp?do=export_raw" />
<meta name="date" content="2006-04-20T03:17:37-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gnetlist_man-page" id="gnetlist_man-page">gnetlist man-page</a></h1>
<div class="level1">
<pre class="code">gnetlist(1) 20031231 gnetlist(1)
NAME
gnetlist - gEDA/gaf Netlist extraction/generation
SYNOPSIS
gnetlist [-i] [-I] [-q] [-s] [-v] [-l schem_file] [-m schem_file ] [-g
guile_procedure] [-c scheme_string ] [-o output_filename] schematic1
[... schematicN]
DESCRIPTION
gnetlist is the netlist extraction/generation program which is part
gEDA (GPL Electronic Design Automation) toolset. This program takes a
schematic for its input and outputs a netlist.
gnetlist depends heavily on guile (a scheme based scripting language).
It uses guile to define the output format. Basically gnetlist reads a
schematic, creates an internal representation of the various connec-
tions, and then a guile script extracts the connections into some
netlist format.
gnetlist is very much so a work in progress. Currently it supports the
following backends:
1) Allegro netlist format (-g allegro)
2) BAE netlist format (-g bae)
3) BOM / BOM2 - Bill of Materials (-g bom and -g bom2)
4) Partslist 1,2,3 - More Bill of Materials (-g partslist[1-3])
5) DRC - Start of a design rule checker (-g drc)
6) DRC2 - A second design rule checker (-g drc2)
7) gEDA - native format, mainly used for testing (-g geda)
8) Gossip netlist format (-g gossip)
9) PADS netlist format (-g pads)
10) PCB / PCBboard (-g PCB and -g PCBboard)
11) gsch2pcb backend (-g gsch2pcb)
12) ProtelII netlist format (-g protelII)
13) Spice compatible netlist format (-g spice)
14) Enhanced spice compatible netlist format (-g spice-sdb)
15) Switcap netlist format (-g switcap)
16) Tango netlist format (-g tango)
17) Verilog code (-g verilog)
18) VHDL code (-g vhdl)
19) VIPEC netlist format (-g vipec)
20) Bartels Autoengineer netlist format (-g bae)
21) GOSSIP system simulation system netlist format (-g gossip)
22) MAXASCII netlist format (-g maxascii)
23) VHDL-AMS netlist format (-g vams)
24) Futurenet2 netlist format (-g futurenet2 )
25) SWITCAP switched capacitor simulator netlist format (-g
switcap )
26) RF Cascade netlist format (-g cascade )
27) RACAL-REDAC netlist format (-g redac )
28) PCB actions file for forward annotating pin/pad names from
schematic to layout (-g pcbpins)
For more info on these formats please look at the README.*
Please read the official (non-existant) documentation on how to use
gnetlist, since this man page just describes the command line arguments
and a few examples on how to run gnetlist.
OPTIONS
gnelist accepts the following options:
-q Quiet mode on. This mode turns off all warnings/notes/mes-
sages. (optional)
-v Verbose mode on. This mode gives as much feedback to the user
as possible. (optional)
-g guile_procedure
Specify the guile procedure which is executed to create the
netlist.
-o output_filename
Specify the filename which will contain the netlist generated
by gnetlist. If this option is not specified the default file-
name is "output.net".
-l scheme_file
Specify a filename which contains scheme code to be loaded and
execute before any backend is loaded or any guile procedure
(using -g flag) is executed. This flag can be specified multi-
ple times and can be used to pass information to backends.
-m scheme_file
Specify a filename which contains scheme code to be loaded and
execute after the backend is loaded but still before any guile
procedure (using -g flag) is executed. This flag can be speci-
fied multiple times and can be used to pass information to
backends. This flag, for example, allows the user to override
variables inside of the backends (such as paths).
-c string
Pass the specified string to the guile interpreter. This
allows you to execute arbitrary guile scripts from the command
line. Be sure to surround the string with either single or
double quotes to satisfy your shell. The string is execute
before any init or netlist backend scheme code is loaded or
executed.
-I Put .INCLUDE <filename> in output file instead of model fileâ??s
contents.
-i Interactive mode. After the schematic is read in and parsed
then go into interactive mode. Interactive mode allows the
user to execute guile procedures directly.
-s Sort output netlist (for Gnucap)
schematic1 [... schematicN]
At least one schematic file must be specified. If multiple
schematics are specified then they are sequentially read in and
parsed with the assumption that they are all part of the same
design. It is important that the schematic(s) follow all the
options (ie last).
EXAMPLES
These examples assume that you have a stack_1.sch in the current direc-
tory.
gnetlist requires that at least one schematic to be specified on the
command line:
./gnetlist stack_1.sch
This is not very useful since it does not direct gnetlist to do
anything.
Specify a guile procedure name to get gnetlist to output a netlist:
./gnetlist -g geda stack_1.sch
The netlist output will be written to a file called "output.net"
in the current working directory.
You can specify the output filename by using the -o flag:
./gnetlist -g geda stack_1.sch -o stack.netlist
The spice backend is run against the schematic(s) if you specify
-g spice and the tango backend is run if you specify -g tango.
To interact with the guile interpreter:
./gnetlist -i stack_1.sch
You will get a prompt where you can execute guile procedures.
To get a more verbose feedback as to what gnetlist is doing run
with the -v flag:
./gnetlist -v -g geda stack_1.sch
ENVIRONMENT
No environment variables are used.
AUTHOR
Ales Hvezda and many others
SEE ALSO
gschem(1), gsymcheck(1)
COPYRIGHT
Copyright © 1999-2004 Ales Hvezda
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version December 31st, 2003 gnetlist(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gnetlist_ug.html
Index: geda_gnetlist_ug.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gnetlist_ug</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gnetlist_ug?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gnetlist_ug?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gnetlist_ug?do=export_raw" />
<meta name="date" content="2006-04-20T17:52:52-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_gnetlist_users_guide" class="toc">gEDA gnetlist Users Guide</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#introduction" class="toc">Introduction</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#installation" class="toc">Installation</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#running_gnetlist" class="toc">Running gnetlist</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#schematic_symbol_requirements" class="toc">Schematic / symbol requirements</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#symbol_requirements" class="toc">Symbol requirements</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#schematic_requirements" class="toc">Schematic requirements</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#random_notes" class="toc">Random notes</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#hierarchy_support" class="toc">Hierarchy Support</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#specific_backend_info" class="toc">Specific backend info</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#scheme_backend_api" class="toc">Scheme backend API</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#overview1" class="toc">Overview</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#entry_point" class="toc">Entry Point</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#initialization_of_the_backend" class="toc">Initialization of the Backend</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#net_name_and_reference_designator_aliasing" class="toc">Net Name and Reference Designator Aliasing</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#debugging_hints" class="toc">Debugging Hints</a></span></div></li></ul>
</li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_gnetlist_users_guide" id="geda_gnetlist_users_guide">gEDA gnetlist Users Guide</a></h1>
<div class="level1">
<p>
by: Ales Hvezda
</p>
<p>
This document is released under <a href="http://www.gnu.org/copyleft/fdl.html" class="urlextern" title="http://www.gnu.org/copyleft/fdl.html" rel="nofollow">GFDL</a>
</p>
<p>
September 21st, 2003
</p>
</div>
<!-- SECTION [1-158] -->
<h2><a name="introduction" id="introduction">Introduction</a></h2>
<div class="level2">
<p>
This document describes how to use <strong>gnetlist</strong>. This document and <strong>gnetlist</strong> in general are pretty ALPHA, so keep that in mind as you use it to generate netlists. As all engineers know, it is very important that you do not blindly trust tools, assuming that they will always create correct output. <strong>gnetlist</strong> is certainly no exception to this rule. It is very important that you verify *every* netlists you create. As with most programs (including all the programs in gEDA), <strong>gnetlist</strong> comes with NO WARRANTY. Blah, I hate having to say that, but I’m hoping that this warning will keep the user from assuming that <strong>gnetlist</strong> generates perfect netlists. Though if you find a bug, please let <strong>ahvezda@xxxxxxxxxxxxx</strong> know.<br/>
This document is very rough, so please e-mail all corrections to <strong>ahvezda@xxxxxxxxxxxxx</strong> or file a bug report on the gEDA homepage at <a href="http://www.geda.seul.org/" class="urlextern" title="http://www.geda.seul.org" rel="nofollow">http://www.geda.seul.org</a>. Thanks!
</p>
</div>
<!-- SECTION [159-1087] -->
<h2><a name="overview" id="overview">Overview</a></h2>
<div class="level2">
<p>
<strong>gnetlist</strong> is the gEDA netlister. It takes as input schematic files and produces a netlist. A netlist is a textual representation of a schematic. This textual representation has all of the connections between devices completely resolved. This means that all the connections associated with a net are grouped together. The netlister also handles hierarchies of schematics.<br/>
<strong>gnetlist</strong> has a very exible architecture. The main program, which is written in C, reads in a schematic (using routines from libgeda) and creates an internal representation of the schematic data. This internal representation is then manipulated by a backend which is responsible for writing the various netlist formats. The backend for each netlist format is written in scheme (specifically Guile). This architecture not only allows for an infinite number of netlist formats, but also allows the netlister to generate other reports (like bill of material lists).<br/>
As of 20001006 <strong>gnetlist</strong> has scheme backends to support the following netlist formats:
</p>
<ol>
<li class="level1"><div class="li"> PCB & PCBboard - UNIX PCB netlist format.</div>
</li>
<li class="level1"><div class="li"> Allegro netlist format</div>
</li>
<li class="level1"><div class="li"> BAE netlist format</div>
</li>
<li class="level1"><div class="li"> BOM & BOM2 - Bill of Material generators</div>
</li>
<li class="level1"><div class="li"> DRC - Start of a design rule checker</div>
</li>
<li class="level1"><div class="li"> gEDA - the native format of gEDA, mainly used for testing</div>
</li>
<li class="level1"><div class="li"> Gossip netlist format</div>
</li>
<li class="level1"><div class="li"> PADS netlist format</div>
</li>
<li class="level1"><div class="li"> ProtelII netlist format</div>
</li>
<li class="level1"><div class="li"> Spice compatible netlist format</div>
</li>
<li class="level1"><div class="li"> Tango netlist format</div>
</li>
<li class="level1"><div class="li"> Verilog code</div>
</li>
<li class="level1"><div class="li"> VHDL code</div>
</li>
<li class="level1"><div class="li"> VIPEC netlist format</div>
</li>
<li class="level1"><div class="li"> VAMS - VHDL-AMS netlist format</div>
</li>
</ol>
<p>
This list is constantly growing. Several lacking features (as of 20001006) are: no support for buses, error detection and reporting is fairly limited, and ... (many more).
</p>
</div>
<!-- SECTION [1088-2791] -->
<h2><a name="installation" id="installation">Installation</a></h2>
<div class="level2">
<p>
Hopefully by now you have already installed <strong>gnetlist</strong> on your machine. This document does not cover installation. You can verify the installation by running:
</p>
<pre class="code">libgeda-config --version
gesym-config --version
which gnetlist
ldd `which gnetlist`</pre>
<p>
The first two should return the version of the installed tools (libgeda and the symbol library) and the next command should return the path to the <strong>gnetlist</strong> binary. The final command (only on Unix-like operating systems which include the ldd utility for listing dynamic dependencies of executable files or shared objects) will return which libraries are linked to <strong>gnetlist</strong>; all of the request libraries must be found for <strong>gnetlist</strong> to run. If these commands do not return the expected results, then most likely the gEDA tools are not installed properly. Please see the appropriate INSTALL docs (which came with the distribution) for more info on installing the gEDA tools.
</p>
</div>
<!-- SECTION [2792-3759] -->
<h2><a name="running_gnetlist" id="running_gnetlist">Running gnetlist</a></h2>
<div class="level2">
<p>
It is very easy to run <strong>gnetlist</strong>. <strong>gnetlist</strong> is a pure command line interface so there is no pesky <acronym title="Graphical User Interface">GUI</acronym> to get in the way <img src="lib/images/smileys/icon_smile.gif" class="middle" alt=":-)" /> For a list of command line arguments please run <code>gnetlist -h</code>.<br/>
You need to specify the following two parameters to run gnetlists:
</p>
<ul>
<li class="level1"><div class="li"> <strong>-g pro</strong>c (this specifies which backend to run against the schematics)</div>
</li>
<li class="level1"><div class="li"> <strong>filename.sch</strong> (this specifies the schematic files)</div>
</li>
</ul>
<p>
You can specify multiple schematics on the command line. The default filename for the generated netlist goes into “<strong>output.net</strong>” You can change this default location by using the <strong>-o filename</strong> option.<br/>
A few examples on running <strong>gnetlist</strong>:
</p>
<pre class="code">gnetlist -g geda -o stack.net stack_1.sch</pre>
<p>
(output netlist (in <strong>stack.net</strong>) for <strong>stack_1.sch</strong> using the gEDA native format)
</p>
<p>
There are also a few debugging flags. The first one is the <strong>-v</strong> flag which enables verbose mode. Verbose mode outputs a whole bunch of information on what <strong>gnetlist</strong> is doing as well a dump of the internal representation. The <strong>-i</strong> flag which puts <strong>gnetlist</strong> into a interactive mode is very useful in debugging scheme backends and typically is not used by the end user.<br/>
For a detailed list of command line arguments please see the <strong>gnetlist</strong> man page.
</p>
</div>
<!-- SECTION [3760-5041] -->
<h2><a name="schematic_symbol_requirements" id="schematic_symbol_requirements">Schematic / symbol requirements</a></h2>
<div class="level2">
<p>
This section describes what schematics/symbols need to have to be usable with <strong>gnetlist</strong>. In order for <strong>gnetlist</strong> to work correctly, both the schematics and supporting symbols must be correct. Basically these requirements consist of attribute specification. Attributes are used through out the gEDA system to represent information. Attributes are the only way of adding information to components, nets, pins, etc... For more detailed information about the attributes mentioned in this document, please see the <a href="geda_master_attributes_list.html" class="wikilink1" title="geda:master_attributes_list">Master Attributes List</a> document.
</p>
</div>
<!-- SECTION [5042-5666] -->
<h3><a name="symbol_requirements" id="symbol_requirements">Symbol requirements</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> All symbols must have a <code>device=</code> attribute.</div>
</li>
<li class="level1"><div class="li"> All pins must have the <code>pin#=#</code> attribute. This attribute will eventually change form, but for now it is required as <code>pin#=#</code></div>
</li>
<li class="level1"><div class="li"> All pin should also have a <code>pinlabel=</code> attribute.</div>
</li>
<li class="level1"><div class="li"> For symbols which are slotted you also need the <code>slot=</code> attribute, for each slot a <code>slot#=#</code> attribute, and the <code>numslots=#</code> attribute. Slotting will also change in the near future, but for now it should be specified as above.</div>
</li>
<li class="level1"><div class="li"> For any power/gnd/arbitrary you need to put <code>net=</code> attributes inside the symbol. See the netattrib.txt document for more info.</div>
</li>
<li class="level1"><div class="li"> You can supply default values for various parameters (this is dependent on which backend you use) by taking advantage of the attribute “promotion” mechanism. See below for more info as well as the gschem documentation.</div>
</li>
<li class="level1"><div class="li"> For symbols which you want the netlister to completely ignore use the <code>graphical=1</code> attribute</div>
</li>
<li class="level1"><div class="li"> For more tips on symbols, please see the <a href="http://geda.seul.org/wiki/geda:scg" class="wikilink1" title="geda:scg">Symbol Creation Guide</a>.</div>
</li>
</ul>
</div>
<!-- SECTION [5667-6712] -->
<h3><a name="schematic_requirements" id="schematic_requirements">Schematic requirements</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Most importantly, every component you want to show up in a netlist must have a <code>refdes=</code> attribute. This is <strong>VERY</strong> important. <strong>gnetlist</strong> should warn you if you have a component which doesn’t have a <code>refdes=</code>, but there have been bugs which do not cause this warning.</div>
</li>
<li class="level1"><div class="li"> You can label all nets using the <code>label=</code> attribute. You only need to attach this label to one net segment (of an electrically connected net) for all the net segments to inherit the label.</div>
</li>
<li class="level1"><div class="li"> You can have multiple schematics in a design (which is actually a confusing term since it means many different things to people). To use multiple schematics to create a single netlist, just specify them on the <strong>gnetlist</strong> command line.</div>
</li>
<li class="level1"><div class="li"> If you name nets the same, then these nets will be electrically connected. Same net names spawn all the specified schematics.</div>
</li>
<li class="level1"><div class="li"> There are quite a few issues that deal with hierarchy please see the hierarchy section below.</div>
</li>
</ul>
</div>
<!-- SECTION [6713-7689] -->
<h3><a name="random_notes" id="random_notes">Random notes</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Attributes which are not attached to anything and are inside a symbol are “promoted” to the outside of the symbol when the symbol is placed inside a schematic (in gschem). These promoted attributes are always looked at/for first before going into the symbol. So, in other words, if there is an attribute with the same name is inside a symbol and attached to the outside of the instantiated component, then the outside attribute takes precedence.</div>
</li>
</ul>
</div>
<!-- SECTION [7690-8163] -->
<h2><a name="hierarchy_support" id="hierarchy_support">Hierarchy Support</a></h2>
<div class="level2">
<p>
TBA
</p>
</div>
<!-- SECTION [8164-8198] -->
<h2><a name="specific_backend_info" id="specific_backend_info">Specific backend info</a></h2>
<div class="level2">
<p>
TBA
</p>
</div>
<!-- SECTION [8199-8237] -->
<h2><a name="scheme_backend_api" id="scheme_backend_api">Scheme backend API</a></h2>
<div class="level2">
<p>
Please note that this section is still under construction. The information here should be correct, but it is not complete.
</p>
</div>
<!-- SECTION [8238-8392] -->
<h3><a name="overview1" id="overview1">Overview</a></h3>
<div class="level3">
<p>
<strong>gnetlist</strong> operates by loading the schematic database from the .sch files, building an internal representation and then calling a function specific to the desired output netlist type which performs the actual netlisting. Each <strong>gnetlist</strong> backend is contained in a file called gnet-<backend>.scm. Where <backend> is the name of the particular backend. For example, gnet-switcap.scm contains the code used by “gnetlist -g switcap” and gnet-drc.scm contains the code used by “gnetlist -g drc”. The backends are written in the Scheme programming language. The particular implementation of scheme is guile which stands for GNU’s Ubiquitous Intelligent Language for Extensions. More information about guile may be found at <a href="http://www.gnu.org/software/guile/guile.html" class="urlextern" title="http://www.gnu.org/software/guile/guile.html" rel="nofollow">http://www.gnu.org/software/guile/guile.html</a>.
</p>
</div>
<!-- SECTION [8393-9182] -->
<h3><a name="entry_point" id="entry_point">Entry Point</a></h3>
<div class="level3">
<p>
Each netlist backend is required to provide a function whose name matches the netlist type. For example, the switcap backend contained in gnet-switcap.scm must provide a function called “switcap”. That is the function which <strong>gnetlist</strong> will call to initiate the netlisting. The entry point function is given a single argument which is the filename for the output netlist. Typically the first thing a netlister does is to open the output file for writing.<br/>
The following excerpt from the switcap backend shows the start of the entry point function and shows the output file being opened. At the end of the function, the output file is closed.
</p>
<pre class="code">;; ---------------------------------------
;; Switcap netlist generation -- top level
;; ---------------------------------------
(define switcap
(lambda (output-filename)
(let ((port (open-output-file output-filename)))
;; rest of netlisting goes here
;; close the output file and return
(close-output-port port))))</pre>
</div>
<!-- SECTION [9183-10192] -->
<h3><a name="initialization_of_the_backend" id="initialization_of_the_backend">Initialization of the Backend</a></h3>
<div class="level3">
<p>
After opening the output netlist, any specific initializations which must be done for the particular netlist are done. In the switcap example, we must initialize a net name and reference designator (refdes) aliasing database. This is because switcap has more restrictive requirements on its net names than gschem does. In addition, the reference designators in a switcap netlist have special requirements. To deal with this situation, <strong>gnetlist</strong> provides some general purpose functions which rename nets and reference designators to comply with the target netlist requirements. More details on this later. For now, just note that the switcap backend uses the following code:
</p>
<pre class="code">;; initialize the net-name aliasing
(gnetlist:build-net-aliases switcap:map-net-names
all-unique-nets)
;; initialize the refdes aliasing
(gnetlist:build-refdes-aliases switcap:map-refdes
packages)</pre>
<p>
The other initialization which is typically done, although not required by all netlist types, is to output some sort of header. This header may be explicitly contained in the entry point function or it may be contained in its own function for code clarity. In the switcap backend, the call is:
</p>
<pre class="code">(switcap:write-top-header port)</pre>
<p>
Note that the convention is for any backend specific functions to have their names prefixed by the backend name. For example all switcap specific functions begin with “switcap:”. Functions which are available to all backends and provided by <strong>gnetlist</strong> are prefixed by “gnetlist:”.<br/>
The definition of “switcap:write-top-header” is
</p>
<pre class="code">;;
;; Switcap netlist header
;;
(define switcap:write-top-header
(lambda (port)
(display
"/* Switcap netlist produced by gnetlist (part of gEDA) */\n"
port)
(display
"/* See http://www.geda.seul.org for more information. */\n"
port)
(display
"/* Switcap backend written by Dan McMahill */\n"
port)
(display "\n\n" port)
)
)</pre>
<p>
The entry point function continues by calling functions for each section in the output netlist. The variable “packages” is predefined by <strong>gnetlist</strong> to be a list of all components in the design and “all-unique-nets” is a list of all the nets in the design. The various functions used by the backend for each section in the netlist will use these variables. For example, the main part of the switcap netlist which contains the components and their connectivity is written to the output file with
</p>
<pre class="code">(switcap:write-netlist port packages)</pre>
</div>
<!-- SECTION [10193-12761] -->
<h3><a name="net_name_and_reference_designator_aliasing" id="net_name_and_reference_designator_aliasing">Net Name and Reference Designator Aliasing</a></h3>
<div class="level3">
<p>
It is common for a target netlist type to have a more restrictive requirement for the net names than gschem does. For example, there may be restrictions on length, allowed characters, or case. To address this issue, <strong>gnetlist</strong> provides a net name aliasing feature. To use this feature, the function “gnetlist:build-netaliases” is called as part of the initialization section of the entry point function.<br/>
For example in the switcap backend,
</p>
<pre class="code">;; initialize the net-name aliasing
(gnetlist:build-net-aliases switcap:map-net-names
all-unique-nets)</pre>
<p>
The function “switcap:map-net-names” is a backend specific (switcap in this case) function which accepts a gschem net name as an argument and returns a modified net name which meets the requirements for the output netlist format. In the case of switcap, the requirement is ground must be called “0”, nets may have no more than 7 characters, and the netlist is not case sensitive.
</p>
<pre class="code">;; This procedure takes a net name as determined by
;; gnetlist and modifies it to be a valid SWITCAP net name.
;;
(define switcap:map-net-names
(lambda (net-name)
(let ((rx (make-regexp "^unnamed_net"))
(net-alias net-name)
)
;; XXX we should use a dynamic regexp based on the
;; current value for the unnamed net base string.
(cond
;; Change "GND" to "0"
((string=? net-name "GND") (set! net-alias "0"))
;; remove the 'unnamed_net' part
((regexp-exec rx net-name)
(set! net-alias (substring net-name 11)))
(else net-name)
)
;; Truncate to 7 characters
(if (> (string-length net-alias) 7)
(set! net-alias (substring net-alias 0 7))
)
;; Convert to all upper case
(string-upcase net-alias)
)
)
)</pre>
<p>
The function “gnetlist:build-net-aliases” creates a database which later on lets you look up the output net name from the gschem net name or the gschem net name from the output net name. In addition it does the very important task of ensuring that no shorts are created by modifying the net names. As an example suppose you had a net called “MyNet” and another called “mynet” in the schematic. Those are unique but after converting both to upper case they become a single net. “gnetlist:build-net-aliases” will detect this condition and issue an error and stop netlisting.<br/>
Now that the database has been initialized, the netlister simply uses
</p>
<pre class="code">(gnetlist:alias-net somenet)</pre>
<p>
to retrive the netlist net name from the gschem net name.<br/>
A similar set of functions are provided for reference designator aliasing.
</p>
</div>
<!-- SECTION [12762-15433] -->
<h3><a name="debugging_hints" id="debugging_hints">Debugging Hints</a></h3>
<div class="level3">
<p>
A useful debugging tool is to run <strong>gnetlist</strong> in interactive mode. This is done by using the “-i” option to <strong>gnetlist</strong>. This will give you a shell where you may enter scheme commands. This provides a simple way to examine various variables and try out various functions.<br/>
An example of running <strong>gnetlist</strong> in interactive mode is shown below.
</p>
<pre class="code">% gnetlist -i ../../gnetlist/examples/switcap/*.sch
gEDA/gnetlist version 20041228
gEDA/gnetlist comes with ABSOLUTELY NO WARRANTY; see COPYING for more details.
This is free software, and you are welcome to redistribute it under certain
conditions; please see the COPYING file for more details.
Loading schematic [../../gnetlist/examples/switcap/analysis.sch]
Loading schematic [../../gnetlist/examples/switcap/ckt.sch]
Loading schematic [../../gnetlist/examples/switcap/clocks.sch]
gnetlist> all-unique-nets
("unnamed_net6" "unnamed_net5" "unnamed_net4" "OUT" "unnamed_net3"
"unnamed_net2" "unnamed_net1" "GND")
gnetlist> packages
("TIMING" "CLK1" "S7" "S8" "S6" "S5" "C3" "S4" "C2" "C1" "E1" "S3"
"S1" "V1" "S2" "OPTIONS" "TITLE" "ANA1")
gnetlist> (quit)
%</pre>
</div>
<!-- SECTION [15434-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_grcsan.html
Index: geda_grcsan.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:grcsan</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:grcsan?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:grcsan?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:grcsan?do=export_raw" />
<meta name="date" content="2006-04-24T05:02:46-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_gaf_rf_cascade_symbols_and_netlister" class="toc">gEDA/gaf RF Cascade Symbols and Netlister</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#requirements" class="toc">Requirements</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#creating_schematics" class="toc">Creating Schematics</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#extracting_the_cascade_input_file" class="toc">Extracting the Cascade Input File</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#running_cascade" class="toc">Running Cascade</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#appendix_a_--_symbols_in_the_library" class="toc">Appendix A -- Symbols in the Library</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#sources_cascade-source" class="toc">Sources (cascade-source)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#defaults_cascade-default" class="toc">Defaults (cascade-default)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#elements" class="toc">Elements</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#example" class="toc">Example</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#example_schematics" class="toc">Example Schematics</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#netlist_the_design" class="toc">Netlist the Design</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#run_the_analysis" class="toc">Run the Analysis</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#document_revision_history" class="toc">Document Revision History</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_gaf_rf_cascade_symbols_and_netlister" id="geda_gaf_rf_cascade_symbols_and_netlister">gEDA/gaf RF Cascade Symbols and Netlister</a></h1>
<div class="level1">
<p>
by: Dan McMahill
</p>
<p>
This document is released under <a href="http://www.gnu.org/copyleft/fdl.html" class="urlextern" title="http://www.gnu.org/copyleft/fdl.html" rel="nofollow">GFDL</a>
</p>
<p>
December 3rd, 2003
</p>
</div>
<!-- SECTION [1-173] -->
<h2><a name="overview" id="overview">Overview</a></h2>
<div class="level2">
<p>
This document describes the symbol library and gnetlist backend which support driving RF Cascade (<a href="http://rfcascade.sourceforge.net/" class="urlextern" title="http://rfcascade.sourceforge.net" rel="nofollow">http://rfcascade.sourceforge.net</a>) simulations from the gEDA/gaf system. Cascade is a noise figure and distortion analysis tool geared towards radio receiver design.<br/>
The basic steps involved with using gEDA as the frontend for Cascade simulations are:
</p>
<ol>
<li class="level1"><div class="li"> Create schematics of the circuit.</div>
</li>
<li class="level1"><div class="li"> Extract the netlist.</div>
</li>
<li class="level1"><div class="li"> Run Cascade.</div>
</li>
</ol>
</div>
<!-- SECTION [174-630] -->
<h2><a name="requirements" id="requirements">Requirements</a></h2>
<div class="level2">
<p>
You will need the following programs to be installed:
</p>
<ul>
<li class="level1"><div class="li"> A recent version of gEDA/gaf. To see if your version is recent enough, see if the directory <strong><code>$prefix/share/gEDA/sym/cascade</code></strong> exists. <strong><code>$prefix</code></strong> is the installation prefix for gEDA on your system.</div>
</li>
<li class="level1"><div class="li"> RF Cascade. The executable is usually called cascade. If you do not have Cascade available on your system, you will need to get a copy from <a href="http://rfcascade.sourceforge.net/" class="urlextern" title="http://rfcascade.sourceforge.net" rel="nofollow">http://rfcascade.sourceforge.net</a>.</div>
</li>
</ul>
</div>
<!-- SECTION [631-1103] -->
<h2><a name="creating_schematics" id="creating_schematics">Creating Schematics</a></h2>
<div class="level2">
<p>
When creating a block diagram in the gschem schematic editor, use only the symbols from the cascade library. Every block diagram must have a \cascadesource” element. In addition, the block diagram must be a simple cascade. No parallel paths or branches are allowed.<br/>
All instances must have a unique reference designator. For a receiver block diagram, this is often times best achieved by manually entering them. The only restriction on reference designator names is that they contain no spaces. A descriptive name such as \RF Filter” or \First Mixer” is useful as it will show up in the cascade output report.
</p>
</div>
<!-- SECTION [1104-1748] -->
<h2><a name="extracting_the_cascade_input_file" id="extracting_the_cascade_input_file">Extracting the Cascade Input File</a></h2>
<div class="level2">
<p>
To extract the Cascade input file, run:
</p>
<pre class="code">gnetlist -g cascade -o test.cas file1.sch [file2.sch ...]</pre>
<p>
For the example file contained in this archive, you can run:
</p>
<pre class="code">gnetlist -g cascade -o example.cas example.sch</pre>
<p>
The netlist will be left in <strong><code>example.cas</code></strong>.
</p>
</div>
<!-- SECTION [1749-2078] -->
<h2><a name="running_cascade" id="running_cascade">Running Cascade</a></h2>
<div class="level2">
<p>
Cascade is exceptionally simple to run. Just run:
</p>
<pre class="code">cascade example.cas > example.out</pre>
<p>
to run the analysis on the system contained in the file <strong><code>example.cas</code></strong> and write the results to the file <strong><code>example.out</code></strong>. Refer to the Cascade documentation for complete details.
</p>
</div>
<!-- SECTION [2079-2393] -->
<h2><a name="appendix_a_--_symbols_in_the_library" id="appendix_a_--_symbols_in_the_library">Appendix A -- Symbols in the Library</a></h2>
<div class="level2">
<p>
Please note that all instances must have the <strong><code>refdes=</code></strong> attribute set.
</p>
</div>
<!-- SECTION [2394-2519] -->
<h3><a name="sources_cascade-source" id="sources_cascade-source">Sources (cascade-source)</a></h3>
<div class="level3">
<p>
Source. Attributes:
</p>
<ul>
<li class="level1"><div class="li"> C=Carrier level in dBm. Optional.</div>
</li>
<li class="level1"><div class="li"> CN0=Carrier to Noise Spectral Density Ratio in dBm/Hz. Optional.</div>
</li>
<li class="level1"><div class="li"> CN=Carrier to Noise Ratio in dB. Optional.</div>
</li>
<li class="level1"><div class="li"> BW=Signal Bandwidth in Hz. Optional, but requred if CN= is used.</div>
</li>
</ul>
</div>
<!-- SECTION [2520-2798] -->
<h3><a name="defaults_cascade-default" id="defaults_cascade-default">Defaults (cascade-default)</a></h3>
<div class="level3">
<p>
This symbol sets the default impedance levels as well as the correlation coeffcient used for third order distortion calculations. There are two versions of this symbol. One is used to set the defaults at the beginnng of the definition. The other can be placed in series with the cascade to change the defaults part way through. This is useful if you wish to change impedance levels in the middle of the receiver chain. Attributes:
</p>
<ul>
<li class="level1"><div class="li"> RIN=Default block input resistance in Ohms. Optional.</div>
</li>
<li class="level1"><div class="li"> ROUT=Default block output resistance in Ohms. Optional.</div>
</li>
<li class="level1"><div class="li"> RHO=Default third order distortion correlation coeffcient. Optional.</div>
</li>
</ul>
</div>
<!-- SECTION [2799-3458] -->
<h3><a name="elements" id="elements">Elements</a></h3>
<div class="level3">
<p>
Cascade characterizes each block in a system by its gain and optionally noise figure and third order intercept point. As such, there is no distinction between various elements such as amplifiers, filters, and mixers. The gEDA/gaf RF Cascade symbol library contains different symbols for clarity in the diagram only. The currently available element symbols are: Attributes:
</p>
<table class="inline">
<tr>
<td>cascade-amp</td><td>Amplifier</td>
</tr>
<tr>
<td>cascade-filter</td><td>Filter</td>
</tr>
<tr>
<td>cascade-mixer</td><td>Mixer</td>
</tr>
<tr>
<td>cascade-transformer</td><td>Transformer</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"> Table 1: Element Types </td>
</tr>
</table>
<br />
<ul>
<li class="level1"><div class="li"> Gain is specified by one of the following:</div>
<ul>
<li class="level2"><div class="li"> <strong>G</strong>=Power gain in dB.</div>
</li>
<li class="level2"><div class="li"> <strong>GP</strong>=Power gain in dB.</div>
</li>
<li class="level2"><div class="li"> <strong>GV</strong>=Voltage gain in dB.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>NF</strong>=Noise Figure in dB. Optional.</div>
</li>
<li class="level1"><div class="li"> <strong>IIP3</strong>=Input Third Order Intercept Point in dBm. Optional.</div>
</li>
<li class="level1"><div class="li"> <strong>RIN</strong>=Block input resistance in Ohms. Optional.</div>
</li>
<li class="level1"><div class="li"> <strong>ROUT</strong>=Block output resistance in Ohms. Optional.</div>
</li>
<li class="level1"><div class="li"> <strong>RHO</strong>=Third order distortion correlation coeffcient. Optional.</div>
</li>
</ul>
</div>
<!-- SECTION [3459-4416] -->
<h2><a name="example" id="example">Example</a></h2>
<div class="level2">
<p>
This appendix provides a simple example of the entire process of generating a schematic, producing a Cascade input file, running an analysis and looking at the result.
</p>
</div>
<!-- SECTION [4417-4605] -->
<h3><a name="example_schematics" id="example_schematics">Example Schematics</a></h3>
<div class="level3">
<p>
Figure 1 shows the schematic of a simple receiver signal chain.<br/>
Figure 2 shows the contents of the example.cas file.
</p>
<table class="inline">
<tr>
<td> <a href="_detail/geda_rf_cascade_figure1.html" class="media" title="geda:rf_cascade_figure1.jpg"><img src="_media/geda_rf_cascade_figure1.jpg" class="media" title="rf_cascade_figure1.jpg" alt="rf_cascade_figure1.jpg" /></a> </td>
</tr>
<tr>
<td> <a href="_detail/geda_rf_cascade_figure2.html" class="media" title="geda:rf_cascade_figure2.jpg"><img src="_media/geda_rf_cascade_figure2.jpg" class="media" title="rf_cascade_figure2.jpg" alt="rf_cascade_figure2.jpg" /></a> </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [4606-4829] -->
<h3><a name="netlist_the_design" id="netlist_the_design">Netlist the Design</a></h3>
<div class="level3">
<p>
To netlist the design, run:
</p>
<pre class="code">gnetlist -g cascade example.cas example.sch</pre>
</div>
<!-- SECTION [4830-4944] -->
<h3><a name="run_the_analysis" id="run_the_analysis">Run the Analysis</a></h3>
<div class="level3">
<p>
Run the analysis with:
</p>
<pre class="code">cascade example.cas</pre>
</div>
<!-- SECTION [4945-5028] -->
<h2><a name="document_revision_history" id="document_revision_history">Document Revision History</a></h2>
<div class="level2">
<table class="inline">
<tr>
<td>December 3rd, 2003</td><td>Created cascade.tex</td>
</tr>
</table>
<br />
</div>
<!-- SECTION [5029-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_grenum_mp.html
Index: geda_grenum_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:grenum_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:grenum_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:grenum_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:grenum_mp?do=export_raw" />
<meta name="date" content="2006-04-23T07:22:07-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="grenum_man-page" id="grenum_man-page">grenum man-page</a></h1>
<div class="level1">
<pre class="code">grenum(1) grenum(1)
NAME
grenum - An advanced refdes renumber utility
SYNOPSIS
grenum [-v|--version -h|--help -p|--pagejump] infile1.sch infile2.sch
...
DESCRIPTION
The grenum program will renumber the refdes definitions read from
infile.
OPTIONS
-p, --pagejump
This will switch on the page jump mode. It means that refdes�s
from each inputfile gets renumbered from 100,200... etc.
-v, --version
prints version information
-h, --help
prints help message
RETURN VALUE
grenum will return 0 if all files processed successfully, -1 if there
was no input file specified, -2 if I/O files can�t be opened/written,
-3 if there is parse error in input file, -4 if there is not enough
memory to store refdes prefixes.
BUGS
If you find one, please report it to:
AUTHOR
Levente Kovacs
Levente.Kovacs@xxxxxxxxxxxx
SEE ALSO
gschem(1)
grenum(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gsch2pcb_readme.html
Index: geda_gsch2pcb_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gsch2pcb_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gsch2pcb_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gsch2pcb_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gsch2pcb_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:23:59-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gsch2pcb_gschem_to_pcb_readme" id="gsch2pcb_gschem_to_pcb_readme">gsch2pcb (gschem to PCB) README</a></h1>
<div class="level1">
<pre class="code">gsch2pcb
--------
gsch2pcb is a program that interfaces a set of schematics generated with
with the gEDA gschem to PCB layout files.
gsch2pcb is conceptually similar to the gschem2pcb shell script, but
additionally handles multiple schematics, handles file element footprints,
and removes pc board elements corresponding to components deleted from the
schematics. It also forward annotates component value changes.
Using gsch2pcb allows you to drive all design changes from the gschem
schematics without the headache of manually keeping PCB elements and
element values in sync.
It requires that the gnet-gsch2pcb.scm file be install into the gEDA
scheme directory. On Debian this is /usr/share/gEDA/scheme, but see
the INSTALL file.
Typical usage
-------------
1) Create your custom PCB elements and save each one into its own file.
Some compatibility tips if you will be inserting elements into a
layout manually as well as with gsch2pcb:
* Make the initial "Description" field of these elements the same
as the file name because gsch2pcb depends on this name (which is
the gschem footprint
value) to know when footprints/elements are changed.
* Make the initial layout-name field (displayed when the "name on PCB"
menu entry is selected) empty (ie "") so that gsch2pcb
will not delete your element when you want it to be in the layout
even though it is not in the schematic. You can later edit the
layout-name to be some refdes value, but I'm not sure it makes sense
to name a PCB element that is not referenced in the schematic.
Note: since once a layout element is named PCB won't let you reset it
to an empty name, a sort of kludge is that setting the first character
of the layout-name to a non-alphanumeric will protect the element from
being deleted by gsch2pcb.
These file elements should be placed in a directory heirarchy that
gsch2pcb will search. The default directories /usr/local/pcb_lib and
./packages are searched in addition to any directories you specify with
--elements-dir dirname arguments to gsch2pcb.
2) Create your schematic with gschem. Make sure each component has a
unique refdes attribute and a footprint attribute that matches either
a PCB m4 element or one of your custom file element names. Beware of
file element names that collide with PCB m4 macro names (or specify the
use-files option).
Make a project file if you wish.
3) Run "gsch2pcb foo.sch" or "gsch2pcb myproject" if you've created the
myproject file. If you didn't specify an output name, this will generate
a foo.pcb and a foo.net file.
If you get errors about footprints not found, you need to create PCB
elements for them and repeat this step until you get no errors.
Or, just run gsch2pcb again and it will shift unfound elements to
foo.new.pcb and you can proceed using PCB on foo.pcb if you wish to
fix the errors from inside of PCB.
4) Run "pcb foo.pcb". All the elements will be stacked on top of each other,
so move them to desired locations. Load the netlist file foo.net and
proceed with using PCB.
5) Modify foo.sch and again run "gsch2pcb foo.sch".
* If components were added, PCB elements for them will be placed in the
file foo.new.pcb. If components were deleted, the elements for them
will be removed from foo.pcb and the original foo.pcb will be renamed
to a foo.pcb.bak sequence.
* If elements can't be found for new schematic footprints, then the
unfound elements will be indicated with PKG_ lines in foo.new.pcb
unless you run "gsch2pcb --remove-unfound foo.sch" which will omit
the PKG_ lines so you can go ahead and load foo.new.pcb into PCB.
* Note that If you have added elements to the .pcb layout which
will not exist on the schematics (mounting holes, etc), make sure
there is no "name on PCB" (the gschem refdes) for them or else gsch2pcb
will delete them when they don't match a schematic refdes and footprint.
You could use the --preserve option to prevent deleting any elements at
all, but this is really not the best way to use gsch2pcb.
6) Run "pcb foo.pcb" and clean up any dangling traces left over from removed
elements. Load any new elements in foo.new.pcb with the "Load layout
data to paste-buffer" function. Load the new netlist foo.net.
Caveats
-------
* gsch2pcb uses a gnetlist backend gnet-gsch2pcb.scm, so be sure when you
install gsch2pcb that the gnet-gsch2pcb.scm file gets installed into the
right place. Look at the INSTALL file in the tarball.
* WARNING: if you wish to start processing with gsch2pcb any existing PCB
files that have m4 elements and were originally generated with gschem2pcb,
then be sure to run first with at least gsch2pcb 0.4:
gsch2pcb --fix-elements
on the PCB file schematics or else gsch2pcb will want to delete the
m4 elements.
* footprint information is saved into PCB element's Description fields,
so it's probably not a good idea to change element Description values
in your layout while using gsch2pcb unless it is a protected element
that has an empty layout-name.
Bill Wilson billw@xxxxxx
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gschem2pcb_readme.html
Index: geda_gschem2pcb_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gschem2pcb_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gschem2pcb_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gschem2pcb_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gschem2pcb_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:19:41-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gschem2pcb_readme" id="gschem2pcb_readme">gschem2pcb README</a></h1>
<div class="level1">
<pre class="code">------------------------------------------------------------------
JM Routoure. routoure@xxxxxxxxxxxxxx
17/01/2000
I would like to thank Stefan Petersen for debuging the scheme program.
-------------------------------------------------------------------
This document describes how to install (section I) and use (section II) the
gschem2pcb package. Section III describes some of the footprints
available in pcb
The purpose of this package is to interface gschem with pcb. It uses a scheme
program and a script.
Section I : Installation.
1. Untar the gschem2pcb.tar. You must obtain 3 files gschem2pcb.sh,
GNET-PCBboard.scm and the README file.
2. Move gschem2pcb.sh in a directory which is in your PATH (/usr/local/bin for
instance ). Be sure that gschem2pcb.sh can be executed (chmod 755 gschem2pcb.sh)
3. Move GNET-PCBboard.scm in the share directory of your gEDA distribution.
Normally, it should be /usr/local/share/gEDA/scheme.
4. Modify the common.m4 file of the pcb program (should be found in
/usr/X11R6/lib/X11/pcb/m4/) like this : the include keywords at the end of the
file must be replace by
include(/usr/X11R6/lib/X11/pcb/m4/connector.inc)
include(/usr/X11R6/lib/X11/pcb/m4/dil.inc)
include(/usr/X11R6/lib/X11/pcb/m4/misc.inc)
include(/usr/X11R6/lib/X11/pcb/m4/plcc.inc)
include(/usr/X11R6/lib/X11/pcb/m4/to.inc)
include(/usr/X11R6/lib/X11/pcb/m4/qfp.inc)
5. Edit the ~/.gEDA/gschemrc file and be sure that the following line exists :
(attribute-name "footprint")
6. Be sure that grep, sed and gawk are installed. That's all..
Section II : using gschem2pcb.
1. With gschem, create a schematic. All the device you want to have in pcb must
have a Uref attribute. The footprint that you want to use in pcb are indicated
by the footprint attribute (see section III for the description of the footprint
in pcb)
Be careful that the attributes Uref, name, value and device must not contain
space char.
--------------------------------------------------------
2. Save your work (ultralownoise.sch for instance -ambitious design!) and type in a shell
gschem2pcb.sh ultralownoise.sch.
note : the gschem file must end by .sch
Error messages will appear if some space characters are found in the
attributes Uref, name, value and device and if the name of the footprint was not
found. Warning, pcb files are created even if errors occur!
- if ultralownoise.pcb does not exist, it will be created. A netlist file
ultralownoise.net will also be created. In pcb, load the pcb (load layout). All
the footprints will appears at the top-left corner of the windows. Load the
netlist (load netlist file) and type the key "w". Place the footprints and type
"o" to optimize the rastnet. See the pcb documentation for details.
- if ultralownoise.pcb exists, a ultralownoise.new.pcb file should be
created. It should contain only the new device that have been added in the
schematic since the last save of the ultralownoise.pcb file. Use "load layout
data to paste buffer" to include the new footprints in the pcb file. The nestlist
file is also updated so read it again.
Section III. Description of the name of the footprint in pcb.
pcb uses macro to define the footprints. For DIL packages, for instance, 2
arguments are used to indicate the number of pins and the width in mil of the
footprint. In gschem the footprint attribute of a 300 mil width and 8 pins DIL
is:
DIL 8 300.
Warning, for that attribute, you have to included the space char!
In the following. I describe the footprint attribute that are to be used in
gschem for the footprint avalaible in pcb. N stands
for the number of pins, W the width in mil, L the length in mil and D the
diameter in mil
CONNECTOR ROWS COLS # single connector
DIN41_651LAY N # DIN 41.651 laying
DIN41_651STAND N # DIN 41.651 standing
SUBD_LAY_BASE N # SUB-D connector laying
SUBD_MALE_LAY_BASE N # SUB-D connector male laying
SUBD_FEMALE_LAY_BASE N # SUB-D connector female laying
DIL N W # dual-inline standard
D N # dual inline with W=244
DW N # dual inline with W=419
SD N # SD (ZIP)
MULTIWATT15 # 15 pins multiwatt footprint
R025 # standard 1/4W resistor !now attributes
SIL N # SIL
CSIL # SIL package with a common pin
QFP132 # QFP132 flat pack
LED D # standing LED
DIODE_LAY L # laying diode
AXIAL_LAY L # standard axial footprint
CRYSTAL W # crystal package
OSC # a can oscillator
ISA8 # 8 bit ISA Slot card
OVEN_OSC # ovenized-oscillator package
RADIAL_CAN W # a radial capcitor package
PLCC N # pllc
PLCC N add # pllc with additionnal border add
QFP N add # qfp with additionnal border add
No additional parameters for the to footprints
TO3_90
TO3_45
TO5
TO92
TO126
TO126LAY-WIDE
TO126STAND-WIDE
TO220
TO220LAY-WIDE
TO220STAND
TO220STAND-WIDE
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gschem_mp.html
Index: geda_gschem_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gschem_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gschem_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gschem_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gschem_mp?do=export_raw" />
<meta name="date" content="2006-04-20T03:14:56-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gschem_man-page" id="gschem_man-page">gschem man-page</a></h1>
<div class="level1">
<pre class="code">gschem(1) 20031231 gschem(1)
NAME
gschem - gEDA/gaf Schematic Capture
SYNOPSIS
gschem [-q] [-v] [-t] [-r rcfilename] [-s scriptfilename] [-o output-
filename] [-p] [schematic1 ... schematicN]
DESCRIPTION
gschem is the schematic capture program which is part gEDA (GPL Elec-
tronic Design Automation) toolset. This program is used to draw elec-
tronic schematics. Schematics consist of standard symbols (which are
either part of a standard library or created by the user) which repre-
sent the various gates and components. These components are then
interconnected by nets (wires). Schematics may be printed to a
PostScript file for printing or further conversion to other output for-
mats.
gschem is also the symbol creation editor. All the standard methods of
creating schematics are used in the creation of symbols. There are a
few special rules when creating symbols, so please refer to the (non-
existant as of now) symbol creation document.
Please read the official documentation (very minimal at this point) on
how to use gschem, since this man page just describes the command line
arguments and a few examples on how to run gschem.
OPTIONS
gschem accepts the following options:
-q Quiet mode on. This mode turns off all warnings/notes/mes-
sages. (optional)
-v Verbose mode on. This mode gives as much feedback to the user
as possible. (optional)
-t Print out more information when using mouse strokes. With this
command line flag and the middle button configured for mouse
strokes, gschem will output the stroke sequence numbers as the
user executes strokes. These numbers can be used to define new
strokes in the system-gschemrc file.
-r filename
Specify a rc filename. Normally gschem searches for the sys-
tem-gschemrc, then ~/.gEDA/gschemrc, and finally for a gschemrc
in the current directory. This options allows the user to
specify an additional rc file which is read after all the other
rc files are read. (optional)
-s filename
Specify a guile script to be executed at startup. (optional)
-o filename
Specify a filename for postscript output. This command line
argument is useful when running gschem from a shell script and
with a guile script. The filename can be changed through the
print dialog box.
-p Automatically place the window, especially useful if running
gschem from the command line and generating output.
schematic1 [... schematicN]
Schematic file to be loaded. Specifing a schematic file is
optional. If multiple schematic files are specified they are
read in sequentially and put on seperate pages. It is impor-
tant that the schematic(s) follow all the options (ie last).
EXAMPLES
These examples assume that you have a schematic called stack_1.sch in
the current directory
To run gschem and then interact with the program:
./gschem
To run gschem in interactive mode but load a sample schematic:
./gschem adders_1.sch
To run gschem and load up all schematics in the current subdirectory:
./gschem *.sch
ENVIRONMENT
No environment variables are used.
AUTHOR
Ales Hvezda and many others
SEE ALSO
gnetlist(1), gsymcheck(1)
COPYRIGHT
Copyright © 1999-2004 Ales Hvezda
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version December 31st, 2003 gschem(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gschem_ug.html
Index: geda_gschem_ug.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gschem_ug</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gschem_ug?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gschem_ug?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gschem_ug?do=export_raw" />
<meta name="date" content="2006-05-03T06:14:30-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_gschem_user_guide" class="toc">gEDA gschem User Guide</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#about_this_document" class="toc">About this document ...</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#introduction" class="toc">Introduction</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#resources" class="toc">Resources</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#how_to_ask_questions" class="toc">How To Ask Questions</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#installing_gschem" class="toc">Installing gschem</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#latest_stable" class="toc">Latest Stable</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#geda_tools_suite_cd-rom" class="toc">"gEDA Tools Suite" CD-ROM</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#debian_distributions" class="toc">Debian distributions</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#red_hat_distributions" class="toc">Red Hat distributions</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#mac_osx_distributions" class="toc">Mac OSX distributions</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#cvs_unstable_testing" class="toc">CVS Unstable/Testing</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#configuring_gschem" class="toc">Configuring gschem</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#gschemrc" class="toc">gschemrc</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#gafrc" class="toc">gafrc</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#running_gschem" class="toc">Running gschem</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#confirming_gschem_is_installed" class="toc">Confirming gschem is installed</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#the_shell_prompt" class="toc">The Shell Prompt</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#backups" class="toc">Backups</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#classic_linux_backups" class="toc">Classic Linux backups</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#incremental_backups" class="toc">Incremental backups</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#relevant_configuration_settings" class="toc">Relevant configuration settings</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#on-line_documentation" class="toc">On-line documentation</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#electrical_connectivity" class="toc">Electrical Connectivity</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#components_symbols_objects_attributes" class="toc">Components & Symbols & Objects & Attributes</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#components" class="toc">Components</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#symbols" class="toc">Symbols</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#objects" class="toc">Objects</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#attributes" class="toc">Attributes</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#the_main_window" class="toc">The Main Window</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#the_status_window" class="toc">The Status Window</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#the_schematic_file" class="toc">The Schematic File</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#the_symbol_file" class="toc">The Symbol File</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#symbol_libraries" class="toc">Symbol Libraries</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#the_log_file" class="toc">The Log File</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#grips" class="toc">Grips</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#menu_operations" class="toc">Menu Operations</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#file" class="toc">File</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#new_window_fw" class="toc">New Window (fw)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#new_page_fn" class="toc">New Page (fn)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#open_page..._fo" class="toc">Open Page... (fo)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#close_page_pc" class="toc">Close Page (pc)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#revert_page_pr" class="toc">Revert Page (pr)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#save_page_fs" class="toc">Save Page (fs)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#save_page_as..._fa" class="toc">Save Page As... (fa)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#save_all_fl_fl" class="toc">Save All (fl) (fl)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#print..._fp" class="toc">Print... (fp)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#write_png..._fi" class="toc">Write PNG... (fi)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#execute_script..._ft" class="toc">Execute Script... (ft)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#close_window_fc" class="toc">Close Window (fc)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#quit_alt-q" class="toc">Quit (Alt-q)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#edit" class="toc">Edit</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#undo_shift-u" class="toc">Undo (shift-u)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#redo_shift-r" class="toc">Redo (shift-r)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#select_mode_s" class="toc">Select Mode (s)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#edit..._ee" class="toc">Edit... (ee)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#edit_text..._ex" class="toc">Edit Text... (ex)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#copy_mode_ec" class="toc">Copy Mode (ec)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#move_mode_em" class="toc">Move Mode (em)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#delete_delete-key" class="toc">Delete (Delete-key)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#rotate_90_mode_er" class="toc">Rotate 90 Mode (er)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#mirror_mode_ei" class="toc">Mirror Mode (ei)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#slot..._e_shift-s" class="toc">Slot... (e shift-s)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#color..._eo" class="toc">Color... (eo)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#lock_el_unlock_e_shift-l" class="toc">Lock (el) / Unlock (e shift-l)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#line_width_type..._ew" class="toc">Line Width & Type... (ew)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#fill_type..._ef" class="toc">Fill Type... (ef)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#symbol_translate..._et" class="toc">Symbol Translate... (et)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#embed_component_picture_eb" class="toc">Embed Component/Picture (eb)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#unembed_component_picture_eu" class="toc">Unembed Component/Picture (eu)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#update_component_ep" class="toc">Update Component (ep)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#show_hide_inv_text_en" class="toc">Show/Hide Inv Text (en)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#make_inv_text_vis_ev" class="toc">Make Inv Text Vis (ev)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#buffer" class="toc">Buffer</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#copy_into_1_2_3_4_5_yc" class="toc">Copy into 1/2/3/4/5 (yc)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#cut_into_1_2_3_4_5_yu" class="toc">Cut into 1/2/3/4/5 (yu)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#paste_from_1_2_3_4_5_yp" class="toc">Paste from 1/2/3/4/5 (yp)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#view" class="toc">View</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#redraw_vr" class="toc">Redraw (vr)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pan_x" class="toc">Pan (x)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#zoom_box_w" class="toc">Zoom Box (w)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#zoom_extents_ve" class="toc">Zoom Extents (ve)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#zoom_in_z" class="toc">Zoom In (z)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#zoom_out_z" class="toc">Zoom Out (Z)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#zoom_full_vf" class="toc">Zoom Full (vf)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#page" class="toc">Page</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#manager..._pm" class="toc">Manager... (pm)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#next" class="toc">Next (>)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#previous" class="toc">Previous (<)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#new_pe" class="toc">New (pe)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#revert_pr" class="toc">Revert (pr)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#close_pc" class="toc">Close (pc)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#discard_pd" class="toc">Discard (pd)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#add" class="toc">Add</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#component..._i" class="toc">Component... (i)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#net_n" class="toc">Net (n)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#bus_u" class="toc">Bus (u)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#attribute..._aa" class="toc">Attribute... (aa)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#text..._at" class="toc">Text... (at)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#line_l" class="toc">Line (l)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#box_b" class="toc">Box (b)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#circle_ai" class="toc">Circle (ai)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#arc_ar" class="toc">Arc (ar)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pin_ap" class="toc">Pin (ap)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#picture..._ag" class="toc">Picture... (ag)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#hierarchy" class="toc">Hierarchy</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#down_schematic_hd" class="toc">Down Schematic (Hd)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#down_symbol_hs" class="toc">Down Symbol (Hs)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#up_hu" class="toc">Up (Hu)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#documentation_ho" class="toc">Documentation (Ho)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#attributes1" class="toc">Attributes</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#attach_ta" class="toc">Attach (ta)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#detach_td" class="toc">Detach (td)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#show_value_tv" class="toc">Show Value (tv)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#show_name_tn" class="toc">Show Name (tn)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#show_both_tb" class="toc">Show Both (tb)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#toggle_visibility_tt" class="toc">Toggle Visibility (tt)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#find_specific_text..._t_shift-f" class="toc">Find Specific Text... (t shift-f)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#hide_specific_text..._th" class="toc">Hide Specific Text... (th)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#show_specific_text..._t_shift-h" class="toc">Show Specific Text... (t shift-h)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#autonumber_text..._tu" class="toc">Autonumber Text... (tu)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#options" class="toc">Options</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#text_size..._ot" class="toc">Text Size... (ot)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#toggle_grid_on_off_og" class="toc">Toggle Grid On/Off (og)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#toggle_snap_on_off_os" class="toc">Toggle Snap On/Off (os)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#snap_grid_spacing..._os" class="toc">Snap Grid Spacing... (oS)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#toggle_outline_box_oa" class="toc">Toggle Outline/Box (oa)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#toggle_net_rubberband_or" class="toc">Toggle Net/Rubberband (or)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#show_log_window_ol" class="toc">Show Log Window (ol)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#show_coord_window..._oc" class="toc">Show Coord Window... (oc)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#help" class="toc">Help</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#about..._ha" class="toc">About... (ha)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#manual..._hm" class="toc">Manual... (hm)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#hotkeys..._hh" class="toc">Hotkeys... (hh)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#component..._ho" class="toc">Component... (Ho)</a></span></div></li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_a_--_heavy_vs_light_symbol_libraries" class="toc">Appendix A -- Heavy vs Light Symbol Libraries</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_b_--_printing_schematics_and_symbols" class="toc">Appendix B -- Printing Schematics and Symbols</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_c_--_writing_guile_scripts" class="toc">Appendix C -- Writing guile Scripts</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_d_--_i_want_to_build_a_printed_circuit_board" class="toc">Appendix D -- I Want To Build A Printed Circuit Board</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_e_--_i_want_to_simulate_my_design" class="toc">Appendix E -- I Want To Simulate My Design</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_f_--_change_gschemdoc_user-defined_preferences" class="toc">Appendix F -- Change gschemdoc User-Defined Preferences</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_g_--_breaking_a_large_symbol_into_smaller_symbols" class="toc">Appendix G -- Breaking a Large Symbol Into Smaller Symbols</a></span></div></li>
<li class="level1"><div class="li"><span class="li"><a href="#appendix_h_--_definition_of_terms" class="toc">Appendix H -- Definition of Terms</a></span></div></li></ul>
</div>
</div>
<h1><a name="geda_gschem_user_guide" id="geda_gschem_user_guide">gEDA gschem User Guide</a></h1>
<div class="level1">
<p>
by: Ales Hvezda / September 21st, 2003
</p>
<p>
The latest version of this document may be found at: <a href="http://www.someplace.come/some-page.html" class="urlextern" title="http://www.someplace.come/some-page.html" rel="nofollow">http://www.someplace.come/some-page.html</a>
</p>
<p>
This document is released under the <a href="geda_gfdl.html" class="wikilink1" title="geda:gfdl">GNU Free Documentation License (GFDL)</a>.
</p>
<p>
Please report any errors/inconsistencies in this document by commenting in the Discussion area at the bottom of the associated page.
</p>
</div>
<!-- SECTION [1-397] -->
<h1><a name="about_this_document" id="about_this_document">About this document ...</a></h1>
<div class="level1">
<p>
gEDA gschem Users Guide
</p>
<p>
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
</p>
<p>
Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds. Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.
</p>
<p>
The command line arguments were: latex2html -local_icons gschem
</p>
<p>
The translation was initiated by Ales Hvezda on 2005-08-20
</p>
</div>
<!-- SECTION [398-870] -->
<h1><a name="introduction" id="introduction">Introduction</a></h1>
<div class="level1">
<p>
This document describes the installation, configuration, and operation of the <strong>gschem</strong> application.<br/>
This document does not describe the process of generating schematics. For this, refer to the various tutorials on using the gEDA Tool Suite:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/gschem-warmup.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/gschem-warmup.html" rel="nofollow">Bill Wilson's gschem warmup</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">Bill Wilson's gsch2pcb tutorial</a></div>
</li>
<li class="level1"><div class="li"> “Optical Proximity Sensor for Robots (Part 1), Simple PCB Design with the gEDA Suite”, by Stuart Brorson (March 2006 Circuit Cellar article)</div>
</li>
<li class="level1"><div class="li"> <a href="http://www-mdp.eng.cam.ac.uk/urop05/files/gedalib/starting_gEDA.pdf" class="urlextern" title="http://www-mdp.eng.cam.ac.uk/urop05/files/gedalib/starting_gEDA.pdf" rel="nofollow">Starting with gEDA at the Cambridge University Engineering Department</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.brorson.com/gEDA/SPICE/t1.html" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/t1.html" rel="nofollow">"Circuit simulation using gEDA and SPICE -- HOWTO" by Stuart Brorson</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.circuitcellar.com/magazine/176toc.htm" class="urlextern" title="http://www.circuitcellar.com/magazine/176toc.htm" rel="nofollow">"gEDA Design Suite for Linux" by Stuart Brorson, Ales Hvezda, & Dan McMahill (03 Mar 2005 Circuite Cellar article)</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.linuxjournal.com/article/8438" class="urlextern" title="http://www.linuxjournal.com/article/8438" rel="nofollow">"Circuit Design on Your Linux Box Using gEDA" by Stuart Brorson (29 November 2005 Linux Journal article)</a></div>
</li>
<li class="level1"><div class="li"> Optical Proximity Sensor for Robots (Part 1): Simple PCB Design with the gEDA Suite, by Stuart Brorson, Circuit Cellar magazine, March 2006 (Issue 188), p. 48</div>
</li>
<li class="level1"><div class="li"> And, of course, <a href="http://www.google.com/search?hl=en&lr=&q=gEDA+%22schematic+capture%22+tutorial&btnG=Search" class="urlextern" title="http://www.google.com/search?hl=en&lr=&q=gEDA+%22schematic+capture%22+tutorial&btnG=Search" rel="nofollow">Google is your friend</a>.</div>
</li>
</ul>
<p>
This document assumes you understand basic schematic capture concepts. For example: that a component represents something and that nets and buses interconnect these components to form a schematic, etc... For a basic understanding of the various work-flows available in the gEDA Tool Suite, please read the above tutorials. For more detailed understanding of specific tool issues, please refer to <a href="docs_20060124_gschem_ug_how_to_ask_questions.html" class="wikilink2" title="docs:20060124:gschem_ug:how_to_ask_questions">How To Ask Questions</a> and to the <a href="docs_20060124_gschem_ug_resources.html" class="wikilink2" title="docs:20060124:gschem_ug:resources">Resources</a>.
</p>
</div>
<!-- SECTION [871-2899] -->
<h1><a name="overview" id="overview">Overview</a></h1>
<div class="level1">
<p>
<strong>gschem</strong> is the schematic capture program in the gEDA Tool Suite. Its purpose is to facilitate the graphical input of:
</p>
<ul>
<li class="level1"><div class="li"> circuit schematics</div>
</li>
<li class="level1"><div class="li"> component symbols</div>
</li>
<li class="level1"><div class="li"> block diagrams</div>
</li>
</ul>
<p>
Once <strong>gschem</strong> has been used to enter the symbols/schematics for your design, several gEDA Tool Suite “utility” programs are used to extract information for other purposes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>gattrib</strong> – <strong>gattrib</strong> is a gEDA Tool Suite productivity aid. <strong>gattrib</strong> reads a [hierarchical set of] gschem schematic files and creates a spreadsheet showing all components in rows, with the associated component attributes listed in the columns. It allows the user to add, modify, or delete component attributes outside of <strong>gschem</strong>, and then save the .sch files.</div>
</li>
<li class="level1"><div class="li"> <strong>gnetlist</strong> – A tool that converts a [hierarchical set of] schematic files into an equivalent netlist (a textual representation of a schematic) in various formats. Various gnetlist back-ends are used to create:</div>
<ul>
<li class="level2"><div class="li"> Bill of Materials (BOM) files.</div>
</li>
<li class="level2"><div class="li"> Design Rule Checks (DRCs).</div>
</li>
<li class="level2"><div class="li"> Netlist files for use as input to various printed circuit board layout programs (e.g., Allegro, PADS, <strong>pcb</strong> (part of the gEDA Tool Suite), Protell, Tango, RACAL-REDAC, etc.).</div>
</li>
<li class="level2"><div class="li"> Files for input to SPICE simulation programs.</div>
</li>
<li class="level2"><div class="li"> VHDL code.</div>
</li>
<li class="level2"><div class="li"> Verilog code.</div>
</li>
<li class="level2"><div class="li"> etc.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>grenum</strong> – <strong>grenum</strong> is a gEDA Tool Suite productivity aid that will renumber the reference designators (i.e., refdes) in a [hierarchical set of] schematic files.</div>
</li>
<li class="level1"><div class="li"> <strong>gsch2pcb</strong> – The prefered method to create a netlist for the <strong>pcb</strong> printed circuit board layout tool (part of the gEDA Tool Suite).</div>
</li>
<li class="level1"><div class="li"> <strong>gspiceui</strong> – GNU Spice <acronym title="Graphical User Interface">GUI</acronym> (i.e., <strong>gspiceui</strong>) provides a <acronym title="Graphical User Interface">GUI</acronym> for freely available Spice electronic cicuit simulation engines (e.g., <strong>gnucap</strong> and <strong>ngspice</strong>). It uses <strong>gnetlist</strong> (to convert schematic files to net list files) and <strong>gwave</strong> (to display simulation results). gSchem is the preferred schematic capture tool.</div>
</li>
<li class="level1"><div class="li"> <strong>gsymcheck</strong> – A checker for symbols created with gEDA Tool Suite (e.g., <strong>gschem</strong>, <strong>tragesym</strong>, etc.).</div>
</li>
<li class="level1"><div class="li"> <strong>pcb</strong> – A tool for the layout of printed circuit boards.</div>
</li>
<li class="level1"><div class="li"> <strong>refdes_renum</strong> – Reads a [hierarchical set of] <strong>gschem</strong> schematic files and renumbers all reference designators. The reference designators are numbered starting with 1 and the old schematic file is replaced by the modified schematic file.</div>
</li>
<li class="level1"><div class="li"> <strong>tragesym</strong> – A python script that creates geda symbols from structured textfiles. The symbols usually need to be “cleaned up” in gschem.</div>
</li>
</ul>
<table class="inline">
<tr>
<td> <a href="_detail/geda_gschem_workflow_01.html" class="media" title="geda:gschem_workflow_01.jpg"><img src="_media/geda_gschem_workflow_01.jpg" class="media" title="gschem_workflow_01.jpg" alt="gschem_workflow_01.jpg" /></a> </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [2900-5480] -->
<h1><a name="resources" id="resources">Resources</a></h1>
<div class="level1">
<p>
The following on-line resources are useful for designers using <strong>gschem</strong>:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/gschem-warmup.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/gschem-warmup.html" rel="nofollow">Bill Wilson's gschem warmup tutorial</a> – If you are new to the gEDA tools, read this before you read Bill’s “Bill Wilson’s gsch2pcb tutorial”.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">Bill Wilson's gsch2pcb tutorial</a> – If you are new to the gEDA tools, this tutorial will bring you up to speed quickly.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.circuitcellar.com/" class="urlextern" title="http://www.circuitcellar.com/" rel="nofollow">Circuit Cellar Magazine</a> – Practical, hands-on applications and solutions for embedded designers:</div>
<ul>
<li class="level2"><div class="li"> gEDA Design Suite for Linux, by Stuart Brorson, Ales Hvezda, & Dan McMahill, Circuit Cellar magazine, March 2005 (Issue 176), p. 12</div>
</li>
<li class="level2"><div class="li"> Optical Proximity Sensor for Robots (Part 1): Simple PCB Design with the gEDA Suite, by Stuart Brorson, Circuit Cellar magazine, March 2006 (Issue 188), p. 48</div>
</li>
<li class="level2"><div class="li"> Optical Proximity Sensor for Robots (Part 2): Open-Source PCB Layout Editor, by Stuart Borson, Circuit Cellar magazine, April 2006 (Issue 189), p. 40</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/index.html" class="urlextern" title="http://www.geda.seul.org/index.html" rel="nofollow">gEDA Project home page</a> – The homepage for the gEDA Tools Suite. A rather mature site, includes (but not limited to):</div>
<ul>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/news/index.html" class="urlextern" title="http://www.geda.seul.org/news/index.html" rel="nofollow">News</a> – from 2002</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/screenshots/index.html" class="urlextern" title="http://www.geda.seul.org/screenshots/index.html" rel="nofollow">Screenshots</a> – <strong>gschem</strong> in action</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/tools/index.html" class="urlextern" title="http://www.geda.seul.org/tools/index.html" rel="nofollow">Tools</a> – links to project homepages</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/download.html" class="urlextern" title="http://www.geda.seul.org/download.html" rel="nofollow">Download</a> – <acronym title="International Organization for Standardization">ISO</acronym> images, binaries, and sources</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/mailinglist/index.html" class="urlextern" title="http://www.geda.seul.org/mailinglist/index.html" rel="nofollow">Lists</a> – e-mail list subscription and archives</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/docs/index.html" class="urlextern" title="http://www.geda.seul.org/docs/index.html" rel="nofollow">Docs</a> – current gEDA/gaf documentation (not gEDA Tools Suite documentation), wiki, slide presentations</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/developer.html" class="urlextern" title="http://www.geda.seul.org/developer.html" rel="nofollow">Devel</a> – nonymous <acronym title="Concurrent Versions System">CVS</acronym> access</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/search.html" class="urlextern" title="http://www.geda.seul.org/search.html" rel="nofollow">Search</a> – by Google</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.geda.seul.org/links.html" class="urlextern" title="http://www.geda.seul.org/links.html" rel="nofollow">Links</a> – links associated with gEDA, projects developed using gEDA Tools Suite, gEDA-related press</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <a href="http://sourceforge.net/tracker/?group_id=161080&atid=818426" class="urlextern" title="http://sourceforge.net/tracker/?group_id=161080&atid=818426" rel="nofollow">gEDA Bug Tracker</a> – On SourceForge</div>
</li>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/dokuwiki/doku.php?id=geda" class="urlextern" title="http://geda.seul.org/dokuwiki/doku.php?id=geda" rel="nofollow">gEDA Project's Wiki</a> – All things related to the gEDA Tools Suite.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.gedasymbols.org/" class="urlextern" title="http://www.gedasymbols.org" rel="nofollow">gedasymbols.org</a> – On-line repository of user-developed symbols for <strong>gschem</strong>, SPICE models, and footprints for <strong>pcb</strong>.</div>
</li>
<li class="level1"><div class="li"> John C. Luciani’s proposed <a href="http://www.luciani.org/geda/pcb/footprint-name-spec.pdf" class="urlextern" title="http://www.luciani.org/geda/pcb/footprint-name-spec.pdf" rel="nofollow">Land Pattern Naming Convention</a> – Footprint naming conventions document, used by him, and often used by those submitting to the <a href="http://www.gedasymbols.org/" class="urlextern" title="http://www.gedasymbols.org" rel="nofollow">gedasymbols.org</a> symbols/footprint repository.</div>
</li>
<li class="level1"><div class="li"> John C. Luciani’s <a href="http://geda.seul.org/shared/HomePages/dhart/index.html" class="urlextern" title="file:///shared/HomePages/dhart/index.html" rel="nofollow">PCB Footprints Library</a> – A rather inclusive collection of non-<acronym title="GNU General Public License">GPL</acronym> licensed footprints and the scripts used to create them.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.opencollector.org/" class="urlextern" title="http://www.opencollector.org/" rel="nofollow">OpenCollector</a> carries listings and news for free EDA software and circuit designs. Open Collector supports gEDA.</div>
</li>
<li class="level1"><div class="li"> <a href="http://alternatezone.com/electronics/files/PCBDesignTutorialRevA.pdf" class="urlextern" title="http://alternatezone.com/electronics/files/PCBDesignTutorialRevA.pdf" rel="nofollow">PCB Design Tutorial; RevA</a> – Document describing the process of taking a schematic to a pcb. Excellent for the beginner.</div>
</li>
<li class="level1"><div class="li"> <a href="http://pcblibraries.com/" class="urlextern" title="http://pcblibraries.com/" rel="nofollow">PCB Libraries website</a> – Advocates of the IPC standard Land Pattern (a.k.a., footprint) Naming Conventions and Land Pattern Calculators. A useful site if you have the money to subscribe to the services.</div>
<ul>
<li class="level2"><div class="li"> The free (windows-based) <a href="http://landpatterns.ipc.org/default.asp" class="urlextern" title="http://landpatterns.ipc.org/default.asp" rel="nofollow">IPC-7351 Land Pattern Viewer</a> is a very useful tool for viewing the latest IPC footprints.</div>
</li>
<li class="level2"><div class="li"> <a href="http://www.pcblibraries.com/resources/LibDoc.asp" class="urlextern" title="http://www.pcblibraries.com/resources/LibDoc.asp" rel="nofollow">CAD Data Files to be used with PCB Libraries' IPC-7351A LP Programs</a> – please note the license restrictions.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <a href="http://www-mdp.eng.cam.ac.uk/urop05/files/gedalib/starting_gEDA.pdf" class="urlextern" title="http://www-mdp.eng.cam.ac.uk/urop05/files/gedalib/starting_gEDA.pdf" rel="nofollow">Starting with gEDA at the Cambridge University Engineering Department</a> – The Cambridge University Engineering Department’s tutorial for using gEDA.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.brorson.com/gEDA/" class="urlextern" title="http://www.brorson.com/gEDA/" rel="nofollow">Stuart Brorson's gEDA tools and tips</a> – gEDA related tools and information.</div>
</li>
</ul>
</div>
<!-- SECTION [5481-9782] -->
<h1><a name="how_to_ask_questions" id="how_to_ask_questions">How To Ask Questions</a></h1>
<div class="level1">
<p>
<strong>gschem</strong> is an OpenSource, community driven, development. As such, the emphasis has been on developing the gEDA Tools Suite, not on developing commercial-level documentation and support. Much of the burden on learning how to use the gEDA Tools Suite applications is placed on the user, who must understand the basics of electronics, Electronics Design Automation (EDA), and the terminology used in schematic capture, circuit simulation, and printed circuit board design.<br/>
As a typical OpenSource development, the gEDA Tools Suite development community provides timely and insightful response to user inquiries, but please perform the following steps before bothering the developers (they need to focus on making gEDA Tools Suite applications better, and you can actually learn to answer your own questions and become independent of the developers):
</p>
<ol>
<li class="level1"><div class="li"> Read Rick Moen’s <a href="http://www.catb.org/~esr/faqs/smart-questions.html" class="urlextern" title="http://www.catb.org/~esr/faqs/smart-questions.html" rel="nofollow">How To Ask Questions The Smart Way</a>, about how to ask for help. This is a must read for everybody.</div>
</li>
<li class="level1"><div class="li"> Read this document. I know, it’s a lot to expect engineers to actually read a user’s guide. The latest version of this document is maintained on the gEDA web-site at <span class="hilited">TBD</span>. The information should be here. If it isn’t, comment to the fact in one of the on-line document’s “Discussion” areas (at the bottom of each wiki-page). Helpful comments are clear, to the point, and may even contain the wording that should be inserted into the document.</div>
</li>
<li class="level1"><div class="li"> Read the <a href="http://geda.seul.org/dokuwiki/doku.php?id=geda:faq-gschem" class="urlextern" title="http://geda.seul.org/dokuwiki/doku.php?id=geda:faq-gschem" rel="nofollow">gschem Frequently Asked Questions (FAQ)</a> wiki-page. This on-line document is updated often to reflect user and developer experiences with <strong>gschem</strong>.</div>
</li>
<li class="level1"><div class="li"> Read the <a href="http://www.geda.seul.org/docs/current/index.html" class="urlextern" title="http://www.geda.seul.org/docs/current/index.html" rel="nofollow">gEDA/gaf Documentation</a>. This information was installed on your computer if the gEDA Tools Suite was installed from the gEDA Tools Suite CD-ROM.</div>
</li>
<li class="level1"><div class="li"> <a href="http://www.google.com/" class="urlextern" title="http://www.google.com" rel="nofollow">Google</a> is your friend. People that have asked questions that obviously didnâ??t do any simple Google search will not be treated well when asking for help. This is particularly true if your problem is not unique to the gEDA Tools Suite applications.</div>
</li>
<li class="level1"><div class="li"> Ask for a pointer to the right direction. It is considered good “net etiquette” to ask for a pointer to information, so that you can learn where such information can be found, rather than have someone search the information for you.</div>
</li>
<li class="level1"><div class="li"> If you are software literate, look at the source code to see what it is doing.</div>
</li>
<li class="level1"><div class="li"> Subscribe to the gEDA e-mail lists (i.e., you can only post to the e-mail lists if you are a subscriber). Then:</div>
<ol>
<li class="level2"><div class="li"> Start reading recent messages in the <a href="http://archives.seul.org/geda/user/" class="urlextern" title="http://archives.seul.org/geda/user/" rel="nofollow">geda-user e-mail list archives</a>. Get a feel for the list’s ettiquite so that you learn how to properly ask questions.</div>
</li>
<li class="level2"><div class="li"> Search the archives for issues similar to yours. You may find the question has been asked of the developers and users before, and answered.</div>
</li>
<li class="level2"><div class="li"> In the event that you can find no information concerning your problem, submit a concise description of the problem and a request for the type of help you are requesting.</div>
</li>
</ol>
</li>
</ol>
</div>
<!-- SECTION [9783-12964] -->
<h1><a name="installing_gschem" id="installing_gschem">Installing gschem</a></h1>
<div class="level1">
<p>
As a mature OpenSource project, the gEDA Tools Suite and its components have been installed on many Linux distributions. The following are by no means the only methods of installing the gEDA Tools Suite and/or its components.
</p>
</div>
<!-- SECTION [12965-13223] -->
<h2><a name="latest_stable" id="latest_stable">Latest Stable</a></h2>
<div class="level2">
<p>
<strong>gschem</strong> is a component of the gEDA/gaf set of tools which tend to integrate together in the development and maintenance of schematics and symbols. The term “gaf” stands for “<em class="u">g</em>EDA <em class="u">a</em>nd <em class="u">f</em>riends”). The gEDA/gaf applications are actually rather stable, and receive significant testing prior to release.<br/>
There are multiple methods of installing <strong>gschem</strong>. The appropriate method depends on your distribution. See the following for some examples.
</p>
</div>
<!-- SECTION [13224-13708] -->
<h3><a name="geda_tools_suite_cd-rom" id="geda_tools_suite_cd-rom">"gEDA Tools Suite" CD-ROM</a></h3>
<div class="level3">
<p>
The recommended method is installation from the “gEDA Tools Suite” CD-ROM, gratefully prepared by Stuart Brorson. The latest version of this CD-ROM is available on-line for free download as an <acronym title="International Organization for Standardization">ISO</acronym> image from the <a href="http://www.geda.seul.org/download.html" class="urlextern" title="http://www.geda.seul.org/download.html" rel="nofollow">gEDA Downloads</a> web-page. Simply burn this <acronym title="International Organization for Standardization">ISO</acronym> image to a CD-ROM using your favorite CD burning software (e.g., K3b, ...). Insert the CD-ROM, and if your computer supports autodetection of the CD-ROM, the built-in installation wizzard will launch. This wizzard will first check if your computer has some required software (informing you if you don’t and optionally installing these if you want), then build all of the “gEDA Tool Suite” applications (including <strong>gschem</strong>) from source. The whole process can take 2 hours on a slower computer.
</p>
<p>
If the installation wizzard did not launch, enter as follows to install the gEDA Tool Suite for access by all users on this computer (i.e., when prompted for the installation directory, enter something like: â??/usr/local/gEDA-20060124â??): <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0"><strong>sudo sh /media/cdrecorder/installer –log –verbose</strong></font></pre>
</p>
<p>
The above command requires superuser permissions configured for the user invoking the command. If you do not have the proper permissions to execute this command, ask your administrator to install the gEDA Tool Suite for you.
</p>
<p>
If the installation wizzard did not launch, enter as follows to install the gEDA Tool Suite for access by just the user doing the installation(i.e., when prompted for the installation directory, accept the default “/home/{login id}/geda-install”): <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0"><strong>sh /media/cdrecorder/installer –log –verbose</strong></font></pre>
</p>
</div>
<!-- SECTION [13709-15395] -->
<h3><a name="debian_distributions" id="debian_distributions">Debian distributions</a></h3>
<div class="level3">
<p>
For Debian distributions, you may wish to download the <a href="http://www.geda.seul.org/download.html" class="urlextern" title="http://www.geda.seul.org/download.html" rel="nofollow">latest DEB binaries</a> prepared by Hamish Moffatt. These are not always current with the latest “gEDA Tools Suite” <acronym title="International Organization for Standardization">ISO</acronym> image above, and do not include many of the other tools available on the “gEDA Tools Suite” <acronym title="International Organization for Standardization">ISO</acronym> image.
</p>
</div>
<!-- SECTION [15396-15744] -->
<h3><a name="red_hat_distributions" id="red_hat_distributions">Red Hat distributions</a></h3>
<div class="level3">
<p>
For Red Hat distributions (and possibly others) you may wish to download the latest RPM binaries]] prepared by Wojciech Kazubski.
</p>
</div>
<!-- SECTION [15745-15907] -->
<h3><a name="mac_osx_distributions" id="mac_osx_distributions">Mac OSX distributions</a></h3>
<div class="level3">
<p>
For Mac OSX distributions you may wish to download the <a href="http://www.geda.seul.org/download.html" class="urlextern" title="http://www.geda.seul.org/download.html" rel="nofollow">latest Fink binaries</a> prepared by Charles Lepple.
</p>
</div>
<!-- SECTION [15908-16087] -->
<h2><a name="cvs_unstable_testing" id="cvs_unstable_testing">CVS Unstable/Testing</a></h2>
<div class="level2">
<p>
For those already familiar with the gEDA/gaf applications on the “gEDA Tools Suite” CD-ROM, access to the <acronym title="Concurrent Versions System">CVS</acronym> repository is available. This is the latest developer source-code version of the application.<br/>
Installation from <acronym title="Concurrent Versions System">CVS</acronym> is appropriate for those:
</p>
<ul>
<li class="level1"><div class="li"> Seeking a solution to a specific problem that was submitted to the development team, to test the “fix” so that the developers can be informed that the “fix” works.</div>
</li>
<li class="level1"><div class="li"> With significant working knowledge of the “gEDA Tools Suite” and industry expertise, wishing to test the latest version of the application(s) prior to the next release. This usually requires access to several existing designs known to work in the current stable release of the “gEDA Tools Suite” <acronym title="International Organization for Standardization">ISO</acronym> image, so that comparisons can be made and issues brought to the attention of the developer/user community (via the e-mail lists).</div>
</li>
</ul>
</div>
<!-- SECTION [16088-16978] -->
<h1><a name="configuring_gschem" id="configuring_gschem">Configuring gschem</a></h1>
<div class="level1">
<p>
Assume that you have installed the gEDA Tools Suite from CD-ROM (the most common installation method), and that you are ready to configure <strong>gschem</strong> to your personal likes. When installing, you were prompted for the path where the gEDA executables would be placed. The default was the <strong>/home/{login id}/geda-install</strong> directory, where {login id} is the username you logged into your account with, but you may have changed this to another directory on the computer. This directory is referred to below as the <strong>{binary-install-path}</strong> because this is where the gEDA binary executables are placed. If you forgot where the binaries were installed, simply issue the following command to find where <strong>gschem</strong> is installed (in this case the {binary-install-path} is <strong>/usr/local/gEDA-20060124</strong>): <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">% which gschem
/usr/local/gEDA-20060124/bin/gschem
%</font></pre>
</p>
<p>
The gEDA Tools Suite applications follow normal Unix/Linux conventions for placement of configuration files; there are usually system-wide, user-wide, and project-specific configuration settings. The system-wide settings are placed in a sub-directory of the {binary-install-path}. The user-wide settings are placed in the user’s home directory, also known as the login directory (referred to in Unix/Linux parlance as the <strong>$HOME</strong> directory). The project-specific settings are placed in a project-specific directory.<br/>
</p>
<p>
Now that we know the above, we can configure <strong>gschem</strong>.<br/>
<strong>gschem</strong> is highly configurable. All configuration is handled through the following resource files (written using the GNU Guile programming language, an interpreter for Scheme, a version of Lisp):
</p>
<ul>
<li class="level1"><div class="li"> <strong>system-gschemrc</strong>: The system-wide initialization file for <strong>gschem</strong>. Installed in the {binary-install-path}/share/gEDA/system-gschemrc file, it is required for <strong>gschem</strong> to run. Users should not modify this file, but should override the settings in this file by creating their own $HOME/gschemrc file and/or ‘pwd’/gschemrc file and putting the new settings in those files. The {binary-install-path} directory is where your gEDA/gaf executables were installed, including <strong>gschem</strong>. Depends on your install method. Refer to <a href="docs_20060124_gschem_ug_installing_gschem.html" class="wikilink2" title="docs:20060124:gschem_ug:installing_gschem">Installing gschem</a> for more details.</div>
</li>
<li class="level1"><div class="li"> <strong>$HOME/gschemrc</strong>: The per-user initialization file for <strong>gschem</strong>. Created by the user in the user’s home directory. Settings placed in this file will override settings in the system-gschemrc file. Users should put settings in this file they want to apply to all of their sessions, such as (to change the default black background color scheme to a light background color scheme):</div>
</li>
</ul>
<p>
<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">; Load up a color scheme
(load (string-append gedadatarc "/gschem-lightbg")) ; light background</font></pre>
</p>
<ul>
<li class="level1"><div class="li"> <strong>‘pwd’/gschemrc</strong>: The per-project initialization file for <strong>gschem</strong>. Created by the user in the user’s project directory. Settings placed in this file will override settings in both the system-gschemrc file and the $HOME/gschemrc file. Users should put settings in this file they want to apply to this particular project, such as (to autonumber reference designators when components are placed on the schematic):</div>
</li>
</ul>
<p>
<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">; Comment in this scheme code if you want automatic numbering when
; placing new component and copying components
;
(load (string-append gedadatarc "/scheme/auto-uref.scm"))
(add-hook! add-component-hook auto-uref)</font></pre>
</p>
<ul>
<li class="level1"><div class="li"> <strong>system-gafrc</strong>: The system-wide initialization file for gEDA/gaf applications (includes <strong>gschem</strong>, <strong>gnetlist</strong>). Installed in the {binary-install-path}/share/gEDA/system-gafrc file, it is required for <strong>gschem</strong> to run. Users should not modify this file, but should override the settings in this file by creating their own $HOME/gafrc file and/or ‘pwd’/gafrc file and putting the new settings in those files. The {binary-install-path} directory is where your gEDA/gaf executables were installed, including <strong>gschem</strong>. Depends on your install method. Refer to <a href="docs_20060124_gschem_ug_installing_gschem.html" class="wikilink2" title="docs:20060124:gschem_ug:installing_gschem">Installing gschem</a> for more details.</div>
</li>
<li class="level1"><div class="li"> <strong>$HOME/gafrc</strong>: The per-user initialization file for gEDA/gaf applications. Created by the user in the user’s home directory. Settings placed in this file will override settings in the system-gafrc file. Users should put settings in this file they want to apply to all of their sessions. </div>
</li>
<li class="level1"><div class="li"> <strong>‘pwd’/gafrc</strong>: The per-project initialization file for the gEDA/gaf applications. Created by the user in the user’s project directory. Settings placed in this file will override settings in both the system-gafrc file and the $HOME/gafrc file. Users should put settings in this file they want to apply to this particular project. Settings such as the <strong>component-library</strong> or <strong>source-library</strong> keywords go into this file.</div>
</li>
<li class="level1"><div class="li"> <strong>gschem-gtkrc</strong>: Installed in the {binary-install-path}/share/gEDA/gschem-gtkrc file. Used to define the font for all gtk+ widgets in <strong>gschem</strong>.</div>
</li>
</ul>
<p>
A few comments about changing the files:
</p>
<ul>
<li class="level1"><div class="li"> Don’t break any guile syntax rules. Doing so will cause the scheme interpreter (guile) to stop interpreting.</div>
</li>
<li class="level1"><div class="li"> To add a setting to the $HOME/gschemrc file (or to the ‘pwd’/gschemrc file), copy the setting’s text from the {binary-install-directory}/share/gEDA/system-gschemrc file to the $HOME/gschemrc file (or the ‘pwd’/gschemrc file) and make the setting change there.</div>
</li>
<li class="level1"><div class="li"> To add a setting to the $HOME/gafrc file (or the ‘pwd’/gafrc file), copy the relevant setting’s text from the {binary-install-directory}/share/gEDA/system-gafrc file to the $HOME/gafrc file (or the ‘pwd’/gafrc file) and make the setting change there.</div>
</li>
<li class="level1"><div class="li"> Keywords/defaults always override what came before, with the exception of cumulative keywords (like component-library).</div>
</li>
</ul>
</div>
<!-- SECTION [16979-22701] -->
<h2><a name="gschemrc" id="gschemrc">gschemrc</a></h2>
<div class="level2">
<p>
The {binary-install-path}/share/gEDA/system-gschemrc file is well commented. Read this file for more details on the settings available.<br/>
Some of the settings appropriate for override (by placing in either the user’s $HOME/gschemrc file or the project’s ‘pwd’/gschemrc file) are:
</p>
</div>
<!-- SECTION [22702-23003] -->
<h2><a name="gafrc" id="gafrc">gafrc</a></h2>
<div class="level2">
<p>
The {binary-install-path}/share/gEDA/system-gafrc file is well commented. Read this file for more details on the settings available.<br/>
Some of the settings appropriate for override (by placing in either the user’s $HOME/gafrc file or the project’s ‘pwd’/gafrc file) are:
</p>
</div>
<!-- SECTION [23004-23293] -->
<h1><a name="running_gschem" id="running_gschem">Running gschem</a></h1>
<div class="level1">
</div>
<!-- SECTION [23294-23323] -->
<h2><a name="confirming_gschem_is_installed" id="confirming_gschem_is_installed">Confirming gschem is installed</a></h2>
<div class="level2">
<p>
You should determine if <strong>gschem</strong> has been correctly installed on your Linux computer.<br/>
Log into your Linux account, and launch your favorite interactive shell. The different Linux distributions will usually offer more than one interactive shell such as xterm, gnome-term, konsole, etc.<br/>
You will see a shell prompt, which will depend on your Linux distribution and on your selection of interactive shell. It is common practice in Linux documentation to refer to the user’s interactive login shell prompt as “<strong>%</strong>“, and to refer to the superuser’s (i.e., user “root”) interactive login shell prompt as “<strong>#</strong>“.<br/>
At the shell prompt, enter the following commands to determine if <strong>gschem</strong> is installed:
</p>
<p>
<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">% <strong>echo $PATH</strong>
<strong>/usr/local/gEDA-20060124/bin</strong>:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/<strong>gEDA</strong>/bin
% <strong>which gschem</strong>
/usr/local/gEDA-20060124/bin/gschem
% <strong>ldd /usr/local/gEDA-20060124/bin/gschem</strong>
linux-gate.so.1 => (0x00345000)
libgeda.so.25 => /usr/local/gEDA-20060124/lib/libgeda.so.25 (0x00d7d000)
libguile.so.12 => /usr/lib/libguile.so.12 (0x00588000)
libguile-ltdl.so.1 => /usr/lib/libguile-ltdl.so.1 (0x00b62000)
libqthreads.so.12 => /usr/lib/libqthreads.so.12 (0x009f7000)
libpthread.so.0 => /lib/libpthread.so.0 (0x006d4000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x03266000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x00c10000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x006ac000)
libm.so.6 => /lib/libm.so.6 (0x008df000)
libpangoxft-1.0.so.0 => /usr/lib/libpangoxft-1.0.so.0 (0x003e7000)
libpangox-1.0.so.0 => /usr/lib/libpangox-1.0.so.0 (0x00a57000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00bd8000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00a01000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x009fb000)
libdl.so.2 => /lib/libdl.so.2 (0x00906000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x0448e000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x06a81000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00c96000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x00d4f000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x00d33000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00921000)
libc.so.6 => /lib/libc.so.6 (0x007b4000)
/lib/ld-linux.so.2 (0x00796000)
libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x00bac000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x00cca000)
libXinerama.so.1 => /usr/X11R6/lib/libXinerama.so.1 (0x00bb2000)
libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0x00ad1000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00af8000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00111000)
libXfixes.so.3 => /usr/X11R6/lib/libXfixes.so.3 (0x00d0d000)
libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0x00bcc000)
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x00ba2000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x00a82000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x05362000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x0068b000)
libz.so.1 => /usr/lib/libz.so.1 (0x0090c000)</font></pre>
</p>
<p>
The <strong>echo $PATH</strong> command displays the user’s current setting for the <strong>PATH</strong> environment variable. In the above example for a Fedora Core 4 installation, user <strong>gEDA</strong> executed the command and determined that the <strong>PATH</strong> included the /usr/local/gEDA-20060124/bin directory (this will differ depending on where you put the gEDA Tools Suite executables). If you installed from the gEDA Tools Suite CD-ROM (the most common method of installing the gEDA tools), as the last step of the installation wizzard you were prompted to:
</p>
<ol>
<li class="level1"><div class="li"> Set your $PATH environment variable to {the directory in which the install wizzard installed gEDA’s executables}</div>
</li>
<li class="level1"><div class="li"> Set your $LD_LIBRARY_PATH environment variable to {the directory in which the install wizzard installed gEDA’s libraries}</div>
</li>
</ol>
<p>
The <strong>which</strong> command displays the full path of a command’s executable, searching for the command on the user’s list of directories, as defined in the <strong>PATH</strong> environment variable. In this case, it will return the full path to the <strong>gschem</strong> executable if it is on the user’s <strong>PATH</strong>. If this command does not return the full path to the <strong>gschem</strong> executable, make sure your <strong>PATH</strong> environment variable has been properly set.
</p>
<p>
The <strong>ldd</strong> command displays shared libraries required by a program. All of the requested libraries must be found for <strong>gschem</strong> to run. Don’t be intimidated by the long list of libraries, this is common for mature Linux applications. If we had not received this output (or something very similar), we would have to check on our setting for the <strong>LD_LIBRARY_PATH</strong> environment variable.
</p>
<p>
And of course, there is always attempting to just run <strong>gschem</strong> as follows: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">% <strong>gschem -h</strong>
Usage: gschem [OPTIONS] schematic_filename1 ... schematic_filenameN
-q Quiet mode
-v Verbose mode on
-r filename Rc filename
-s filename Script (guile) filename
-o filename Output filename (for printing)
-p Automatically place the window
-t Print stroke information
-h Help; this message</font></pre>
</p>
<p>
where we displayed the <strong>gschem</strong> help.
</p>
<p>
If these commands do not return the expected results, then most likely the gEDA tools are not installed properly. Please see the appropriate INSTALL docs (which came with the gEDA distribution) for more info on installing the gEDA tools. If you installed from the gEDA Tools Suite CD-ROM, read the INSTALL document on the CD-ROM first.<br/>
</p>
</div>
<!-- SECTION [23324-29029] -->
<h2><a name="the_shell_prompt" id="the_shell_prompt">The Shell Prompt</a></h2>
<div class="level2">
<table class="inline">
<tr>
<td> <a href="_detail/geda_terminal_screenshot_001.html" class="media" title="geda:terminal_screenshot_001.jpg"><img src="_media/geda_terminal_screenshot_001.jpg" class="media" title="terminal_screenshot_001.jpg" alt="terminal_screenshot_001.jpg" /></a> </td>
</tr>
<tr>
<td> Figure 1 – gnome-terminal </td>
</tr>
</table>
<br />
<p>
You launch <strong>gschem</strong> from your favorite shell prompt (in this case, gnome-terminal on Fedora Core 4).<br/>
There are several command-line switches:
</p>
<ul>
<li class="level1"><div class="li"> <strong>-q</strong> – Quiet mode<br/>
Turns on “quiet mode”. Output (i.e., stdout and stderr) is not generated to the shell. Useful if calling <strong>gschem</strong> from a script (e.g., bash, sh, csh, etc.) to perform batch operations such as printing a large number of schematics or symbols.</div>
</li>
<li class="level1"><div class="li"> <strong>-v</strong> – Verbose mode ON<br/>
Generate verbose information. Not used very much in <strong>gschem</strong>.</div>
</li>
<li class="level1"><div class="li"> <strong>-r filename</strong> – Process additional configuration settings from <strong>filename</strong><br/>
<strong>filename</strong> is a file containing settings of the form found in either system-gschemrc or system-gafrc<br/>
In addition to the following files, <strong>gschem</strong> will process <strong>filename</strong> for additional configuration settings:<br/>
* {binary-install-path}/share/gEDA/system-gschemrc<br/>
* $HOME/gschemrc<br/>
* ‘pwd’/gschemrc<br/>
* {binary-install-path}/share/gEDA/system-gafrc<br/>
* $HOME/gafrc<br/>
* ‘pwd’/gafrc</div>
</li>
<li class="level1"><div class="li"> <strong>-s filename</strong> – Process <strong>filename</strong> as a guile script<br/>
The name of a script file (written in guile) for <strong>gschem</strong> to process.<br/>
Refer to <a href="docs_20060124_gschem_ug_app_b.html" class="wikilink2" title="docs:20060124:gschem_ug:app_b">Appendix B -- Printing Schematics and Symbols</a> and <a href="docs_20060124_gschem_ug_app_c.html" class="wikilink2" title="docs:20060124:gschem_ug:app_c">Appendix C -- Writing guile Scripts</a> for more details.<br/>
For example, in your $HOME/geda-sources/gedagaf/{gEDA Tools Suite version}/scripts/ directory is the <strong>print.scm</strong> file, a template script file directing <strong>gschem</strong> to generate a PostScript file of a schematic appropriate for printing. This <strong>print.scm</strong> file works as is, but you may want to customize it for your own needs. To print the schematic_1.sch schematic to the schematic_1.ps PostScript file from within a bash script, you would enter: <code>gschem -q -p -o schematic_1.ps -s print.scm schematic_1.sch</code><br/>
Then, simply use your favorite printing solution to print the file, such as: <code>lp schematic_1.ps</code><br/>
to a PostScript printer.</div>
</li>
<li class="level1"><div class="li"> <strong>-o filename</strong> – Output <strong>filename</strong> (e.g., for printing)<br/>
Specify the output filename. For example, as used to specify the Postscript filename in the example above.</div>
</li>
<li class="level1"><div class="li"> <strong>-p</strong> – Automatically place the window<br/>
Don’t wait for the windowmanager to place the window.<br/>
When a new window is opened, some window managers display the bounding box of the window and wait for the user to place the window manually. The “-p” option avoids that, letting the window manager decide where to put the new window.</div>
</li>
<li class="level1"><div class="li"> <strong>-t</strong> – Print stroke information<br/>
</div>
</li>
<li class="level1"><div class="li"> <strong>-h</strong> – Help<br/>
Generate a short usage printout.</div>
</li>
</ul>
<p>
Running <strong>gschem</strong> is straightforward once you have installed it on your GNU/Linux system.<br/>
Although <strong>gschem</strong> is a <acronym title="Graphical User Interface">GUI</acronym> application, <strong>gschem</strong> is meant to be launched from the command-line, as it takes command-line arguements (see Figure 1 above).<br/>
To open an empty schematic, run: <code><strong>% gschem</strong></code><br/>
</p>
<p>
To open a specific schematic, run: <code><strong>% gschem schematic_name.sch</strong></code><br/>
</p>
<p>
To open a list of schematics, run: <code><strong>% gschem schematic_1.sch schematic_2.sch, schematic_3.sch ...</strong></code><br/>
or use wildcards to specify multiple filenames: <code><strong>% gschem schematic_*.sch</strong></code>
</p>
<p>
As operations are performed in the <strong>gschem</strong> <a href="docs_20060124_gschem_ug_the_main_window.html" class="wikilink2" title="docs:20060124:gschem_ug:the_main_window">Main Window</a> the <strong>gschem</strong> <a href="docs_20060124_gschem_ug_the_status_window.html" class="wikilink2" title="docs:20060124:gschem_ug:the_status_window">Status Window</a> continues to output information, and the shell prompt’s window continues to output information, consisting of:
</p>
<ul>
<li class="level1"><div class="li"> ...</div>
</li>
</ul>
</div>
<!-- SECTION [29030-32564] -->
<h2><a name="backups" id="backups">Backups</a></h2>
<div class="level2">
<p>
There are two basic mechanisms in <strong>gschem</strong> for backing up schematics and symbols, classic Linux backups and incremental backups.
</p>
</div>
<!-- SECTION [32565-32716] -->
<h3><a name="classic_linux_backups" id="classic_linux_backups">Classic Linux backups</a></h3>
<div class="level3">
<p>
While creating and/or editing schematic file(s) or symbol file(s), snapshots are triggered by the <strong>autosave</strong> interval setting in the {binary-install-path}/share/gEDA/system-gschemrc file (see <a href="#relevant_configuration_settings" title="geda:gschem_ug ↵" class="wikilink1">Relevant configuration settings</a> below). If the file has not been manually saved, and the interval expires (current default 2 minutes), the snapshot is saved the next time a change is made in the <strong>gschem</strong> main window (to either a schematic or to a symbol). The interval timer starts again as soon as the snapshot file(s) have been written, and once the timer expires the next change to the main window will trigger the snapshot to be written.<br/>
This snapshot includes all work up to, but not including, the last operation performed in the <strong>gschem</strong> main window. This is to allow for easier recovery from a crash that may have been caused by the last operation.<br/>
When <strong>gschem</strong> exits normally, the snapshot file(s) are deleted. So, if <strong>gschem</strong> were to crash, or not terminate normally for some reason (e.g., power failure, soda → keyboard, etc.), the shapshot file(s) would be found the next time <strong>gschem</strong> opened the file(s). <strong>gschem</strong> will display the following warning message when it finds a snapshot file associated with the schematic file(s) or symbol file(s) it opens: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">WARNING: Found and autosave backup file:
{full path to autosave file}
The backup copy is newer than the schematic, so it seems you
should load it instead of the original fil.
Gschem usually makes backup copies automatically, and this
situation happens when it crashed or it was forced to exit
abruptely.
If you load the original file, the backup file will be overwritten in
the next autosave timeout and it will be lost.
Do you want to load the backup file?</font></pre>
</p>
<p>
The snapshots are saved to a file whose filename is constructed from the original filename (schematic or symbol) as follows:
</p>
<ul>
<li class="level1"><div class="li"> add a “#” to the beginning of the original filename</div>
</li>
<li class="level1"><div class="li"> add a “#” to the end</div>
</li>
</ul>
<p>
so that:
</p>
<ul>
<li class="level1"><div class="li"> “schematic_1.sch” becomes “#schematic_1.sch#”</div>
</li>
<li class="level1"><div class="li"> “symbol.sym” becomes “#symbol.sym#”</div>
</li>
</ul>
<p>
And yes, the “#” at the front and back of the filename are part of the filename.<br/>
</p>
<p>
When the user does finally manually save the file, the original file (i.e., the file that was opened) is renamed to “{filename~}” and the latest snapshot file (i.e., “#{filename}#”) gets copied as “{filename}”. Note that this new “{filename}” file may not contain the latest information as displayed on the <strong>gschem</strong> main window, as the <strong>autosave</strong> interval timer may not have expired since the last change to the schematic/symbol.<br/>
When the user finally decides to close <strong>gschem</strong>, the latest snapshot file (i.e., “#{filename}#”) is saved to the original file (i.e., “{filename}”.<br/>
When you exit <strong>gschem</strong> and are prompted to save any unsaved schematic file(s) or symbol file(s), this constitutes a manual save.
</p>
</div>
<!-- SECTION [32717-35623] -->
<h3><a name="incremental_backups" id="incremental_backups">Incremental backups</a></h3>
<div class="level3">
</div>
<!-- SECTION [35624-35657] -->
<h3><a name="relevant_configuration_settings" id="relevant_configuration_settings">Relevant configuration settings</a></h3>
<div class="level3">
<p>
There are the following configuration settings in the {binary-install-path}/share/gEDA/system-gschemrc file that effect backups:
</p>
<ul>
<li class="level1"><div class="li"> <strong>undo-control</strong> : Controls if the undo feature is enabled or not.</div>
</li>
<li class="level1"><div class="li"> <strong>undo-levels</strong> : Determines the number of levels of undo. Basically this number decides how many backup schematics are saved.</div>
</li>
<li class="level1"><div class="li"> <strong>undo-type</strong> : Controls which kind of undo is used, disk or memory. The default is to use the disk as the storage medium (i.e., after every action the undo information is stored to a new file on disk). The disk mechanism is nice because you get that many backups of the schematic, written to disk as backups, so you should never lose a schematic due to a crash.</div>
</li>
<li class="level1"><div class="li"> <strong>autosave</strong> : Controls if a backup copy is made every “interval” seconds. Note that a backup copy is only made when you make some change to the schematic, and there were more than “interval” seconds from the last autosave. Autosaving will not be allowed if the “interval” setting is set to zero.</div>
</li>
</ul>
</div>
<!-- SECTION [35658-36699] -->
<h2><a name="on-line_documentation" id="on-line_documentation">On-line documentation</a></h2>
<div class="level2">
<p>
For a listing of the various command line flags run “<strong>gschem -h</strong>“: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">% <strong>gschem -h</strong>
Usage: gschem [OPTIONS] schematic_filename1 ... schematic_filenameN
-q Quiet mode
-v Verbose mode on
-r filename Rc filename
-s filename Script (guile) filename
-o filename Output filename (for printing)
-p Automatically place the window
-t Print stroke information
-h Help; this message</font></pre>
</p>
<p>
For a detailed explanation of the command line flags look at the <strong>gschem</strong> man page: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">% <strong>man gschem</strong>
gschem(1) 20031231 gschem(1)
NAME
gschem - gEDA/gaf Schematic Capture
SYNOPSIS
gschem [-q] [-v] [-t] [-r rcfilename] [-s scriptfilename] [-o output-
filename] [-p] [schematic1 ... schematicN]
DESCRIPTION
gschem is the schematic capture program which is part gEDA (GPL Elec-
tronic Design Automation) toolset. This program is used to draw elec-
tronic schematics. Schematics consist of standard symbols (which are
either part of a standard library or created by the user) which repre-
sent the various gates and components. These components are then
interconnected by nets (wires). Schematics may be printed to a
PostScript file for printing or further conversion to other output for-
mats.
gschem is also the symbol creation editor. All the standard methods of
creating schematics are used in the creation of symbols. There are a
few special rules when creating symbols, so please refer to the (non-
existant as of now) symbol creation document.
Please read the official documentation (very minimal at this point) on
how to use gschem, since this man page just describes the command line
arguments and a few examples on how to run gschem.
OPTIONS
gschem accepts the following options:
-q Quiet mode on. This mode turns off all warnings/notes/mes-
sages. (optional)
-v Verbose mode on. This mode gives as much feedback to the user
as possible. (optional)
-t Print out more information when using mouse strokes. With this
command line flag and the middle button configured for mouse
strokes, gschem will output the stroke sequence numbers as the
user executes strokes. These numbers can be used to define new
strokes in the system-gschemrc file.
-r filename
Specify a rc filename. Normally gschem searches for the sys-
tem-gschemrc, then ~/.gEDA/gschemrc, and finally for a gschemrc
in the current directory. This options allows the user to
specify an additional rc file which is read after all the other
rc files are read. (optional)
-s filename
Specify a guile script to be executed at startup. (optional)
-o filename
Specify a filename for postscript output. This command line
argument is useful when running gschem from a shell script and
with a guile script. The filename can be changed through the
print dialog box.
-p Automatically place the window, especially useful if running
gschem from the command line and generating output.
schematic1 [... schematicN]
Schematic file to be loaded. Specifing a schematic file is
optional. If multiple schematic files are specified they are
read in sequentially and put on seperate pages. It is impor-
tant that the schematic(s) follow all the options (ie last).
EXAMPLES
These examples assume that you have a schematic called stack_1.sch in
the current directory
To run gschem and then interact with the program:
./gschem
To run gschem in interactive mode but load a sample schematic:
./gschem adders_1.sch
To run gschem and load up all schematics in the current subdirectory:
./gschem *.sch
ENVIRONMENT
No environment variables are used.
AUTHOR
Ales Hvezda and many others
SEE ALSO
gnetlist(1), gsymcheck(1)
COPYRIGHT
Copyright © 1999-2004 Ales Hvezda
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version December 31st, 2003 gschem(1)</font></pre>
</p>
</div>
<!-- SECTION [36700-41169] -->
<h1><a name="electrical_connectivity" id="electrical_connectivity">Electrical Connectivity</a></h1>
<div class="level1">
<p>
As you draw schematics you need be aware of what is considered to be electrically connected by the gEDA programs.<br/>
Nets which are visually connected to other nets are electrically connected. This connection may be endpoint to endpoint or endpoint to midpoint. When a single endpoint to endpoint (net or pin endpoint) connection is drawn, the visual dangling net cue disappears. When an endpoint ends in the middle of another net (or multiple endpoints coming together at a single point) then a circular filled connectivity cue is drawn. You cannot connect a net to the middle of a pin. Nets can only be connected to the endpoints of pins. You cannot connect to a net if that net is not orthogonal (horizontal or vertical). The visual cues are the primary way of telling if nets/pins are connected.<br/>
Bus are similar to nets with the exception that you cannot connect a net to the endpoint of a bus (only to the middle). If you do try to connect a net to the end of a bus you will see a big red X at the invalid endpoint connection. Buses are still very new so there are still many quirks.<br/>
You can label nets by using the <code>label=</code> attribute. Do not attach more than one <code>label=</code> to a net. You only need to attach the <code>label=</code> attribute to one net segment. Different nets (i.e. multiple net segments which arenâ??t connected together) which have the same attribute <code>label=</code> attached to them are also considered electrically connected. You will not get any indication of this connection by <strong>gschem</strong>, but the netlister (<strong>gnetlist</strong>) considers nets with the same <code>label=</code> attribute electrically connected. The naming convention for buses has not been formalized yet.
</p>
</div>
<!-- SECTION [41170-42886] -->
<h1><a name="components_symbols_objects_attributes" id="components_symbols_objects_attributes">Components & Symbols & Objects & Attributes</a></h1>
<div class="level1">
<p>
There is a hierarchical association between components, symbols, objects, and attributes.
</p>
</div>
<!-- SECTION [42887-43035] -->
<h2><a name="components" id="components">Components</a></h2>
<div class="level2">
<p>
A component is the instantiation of a specific symbol, as placed on the schematic. When discussing a schematic you refer to <em class="u">components</em> on the schematic, not <em class="u">symbols</em> on the schematic. Think of symbols as being <em class="u">conceptual</em>, and components as being <em class="u">concrete</em>.<br/>
The component consists of a graphic representation and the attributes describing the component’s features.<br/>
The component inherits all of the attributes defined in the symbol. Certain attributes in the symbol:
</p>
<ul>
<li class="level1"><div class="li"> those explicitly defined as visible unattached attributes (see <a href="#attributes" title="geda:gschem_ug ↵" class="wikilink1">Attributes</a>)</div>
</li>
<li class="level1"><div class="li"> specific attributes such as <code>symversion</code> and <code>refdes</code></div>
</li>
</ul>
<p>
are promoted to the component level for manipulation by the circuit designer. These attributes may optionally be exposed (made viewable) with the component’s graphic, and their values may be changed.<br/>
Any attribute not defined in the symbol may be defined in the component. For example, if the symbol does not define the <code>comment</code> attribute, this attribute may be added to the component, perhaps to add a comment for the Bill of Material or Assembly Instructions.<br/>
Unfortunately, it is difficult to determine a component’s attributes from <strong>gschem</strong> while entering the schematic. You have to place a symbol on the schematic, select the resulting component, and select <strong>Hierarchy | Down Symbol</strong> from the pull-down menus. Then, you have to unhide all attributes with <strong>Edit | Make Inv Text Vis</strong> from the pull-down menus. Then you have to expand your view of the symbol with <strong>View | Extents</strong>. Then, you have to go back to the schematic by selecting <strong>Hierarchy | Up</strong> from the pull-down menus. Then, you have to select <strong>Edit | Edit...</strong> to bring up the “Edit Attributes” dialog box to determine if any attributes have been added at the component level.
</p>
</div>
<!-- SECTION [43036-44850] -->
<h2><a name="symbols" id="symbols">Symbols</a></h2>
<div class="level2">
<p>
Symbols are just a collection of objects and attributes.<br/>
The objects have positional significance in the symbol, and define the graphic that is viewed.<br/>
Attributes may be attached to objects, or they may be attached to the symbol itself (termed as “unattached” attributes, because they are not attached to an object).
</p>
</div>
<!-- SECTION [44851-45192] -->
<h2><a name="objects" id="objects">Objects</a></h2>
<div class="level2">
<p>
The following are objects:
</p>
<ul>
<li class="level1"><div class="li"> Line</div>
</li>
<li class="level1"><div class="li"> Box</div>
</li>
<li class="level1"><div class="li"> Circle</div>
</li>
<li class="level1"><div class="li"> Arc</div>
</li>
<li class="level1"><div class="li"> Pin</div>
</li>
<li class="level1"><div class="li"> Picture</div>
</li>
<li class="level1"><div class="li"> Text</div>
</li>
</ul>
</div>
<!-- SECTION [45193-45305] -->
<h2><a name="attributes" id="attributes">Attributes</a></h2>
<div class="level2">
<p>
An attribute is text which is in the form <code>name=value</code> (there are no spaces to the left or right of the name,value pair). An attribute can be either attached to an object or unattached. Attributes are used extensively in the gEDA project to convey information (e.g., device name, pin numbers, hidden nets, and unit reference numbers). Check <a href="http://www.geda.seul.org/docs/current/attributes/index.html" class="urlextern" title="http://www.geda.seul.org/docs/current/attributes/index.html" rel="nofollow">gEDA/gaf Master Attribute Document</a> for a complete list of attributes.<br/>
There are three kinds of attributes:</p>
<dl>
<dt><span class='term'> Attached attributes</span></dt>
<dd>These are attributes which take on the standard form and are attached to some object (pin, net, component, or box etc...) to associate a value with the attribute. For example: a pin number associated with a pin. <span class="hilited">These attributes are usually yellow in color.</span></dd>
<dt><span class='term'> Unattached attributes</span></dt>
<dd>These are attributes which take on the standard form, but are not attached to any object and usually convey some information which is global in nature. For example: a <code>device=</code> attribute (which lives inside symbols) and specifies what device the entire symbol represents. These attributes are also known as floating or toplevel attributes.</dd>
<dt><span class='term'> Promoted attributes</span></dt>
<dd>These are unattached attributes in the symbol’s definition that get turned into attached attributes in the component’s definition when the symbol is instantiated as a component when placed in the schematic. If you place an unattached visible attribute inside a symbol and then instantiate that symbol, then that unattached attribute gets “promoted”; that is, it becomes an attached attribute. This mechanism of attribute reattachement (from within a symbol) is known as attribute promotion.</dd>
</dl>
<p>There are some gotchas about attribute promotion:
</p>
<ul>
<li class="level1"><div class="li"> Promotion <strong>only</strong> happens when the symbol is first placed. That means that if you place a symbol (e.g., sym1) and then change it on disk (by adding or removing new unattached attributes), existing sym1’s will not reflect these new unattached attributes (i.e., they won’t get promoted) in any schematic.</div>
</li>
<li class="level1"><div class="li"> The <code>device=</code> attribute is not promoted.</div>
</li>
<li class="level1"><div class="li"> Invisible attributes are not promoted by default. If you add an unattached attribute (e.g., numslots=#) and make it invisible, it will not be promoted.</div>
</li>
</ul>
<p>
Now, in order to make everybody happy, this attribute promotion behavior is configurable.<br/>
The system-gschemrc file defines: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(attribute-promotion "enabled")</font></pre>
</p>
<p>
which enables attribute promotion.<br/>
If you override the system-gschemrc’s default promote-invisible setting by adding: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(promote-invisible "enabled")</font></pre>
</p>
<p>
to either your user’s ~/gschemrc or local ‘pwd’/gschemrc file, invisible unattached attributes will also be promoted <span class="hilited">(and in memory removed)</span>.
</p>
<p>
However, if you do this, component slotting will break because <strong>gschem</strong> expects certain unattached attributes inside the symbol <span class="hilited">(in memory even though they are invisible)</span>.<br/>
So you can add: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(keep-invisible "enabled")</font></pre>
</p>
<p>
to either your user’s ~/gschemrc or local ‘pwd’/gschemrc file. This is enabled by default, but has no effect unless promote-invisible is enabled.
</p>
<p>
So, to summarize, attribute promotion takes unattached attributes inside symbols and attaches them to the outside of a placed symbol. Three *rc keywords control this behavior: attribute-promotion, promote-invisible, and keep-invisible.
</p>
</div>
<!-- SECTION [45306-48692] -->
<h1><a name="the_main_window" id="the_main_window">The Main Window</a></h1>
<div class="level1">
<table class="inline">
<tr>
<td> <a href="_detail/geda_gschem_screenshot_001.html" class="media" title="geda:gschem_screenshot_001.jpg"><img src="_media/geda_gschem_screenshot_001.jpg" class="media" title="gschem_screenshot_001.jpg" alt="gschem_screenshot_001.jpg" /></a> </td>
</tr>
</table>
<br />
<p>
There are several ways to interact with <strong>gschem</strong>. <strong>gschem</strong> requires a keyboard and mouse. There are three ways to initiate an operation or command:
</p>
<ul>
<li class="level1"><div class="li"> Using the mouse to select the operation off a menu</div>
</li>
<li class="level1"><div class="li"> Typing the keyboard shortcut(s).</div>
</li>
<li class="level1"><div class="li"> Draw the appropriate stroke (if stroke support is enabled)</div>
</li>
</ul>
<p>
To make usage matters more confusing, selecting an operation off of the menus behaves slightly differently than typing the keyboard shortcut. Most of the operations operate on the currently selected object(s), hence you need to select the object first before manipulating them. The menu selected operations usually require some more input (usually a mouse click) after they are picked off of the menu. The keyboard shortcut operations take that required input as the current mouse position. This saves an extra click since you can position the mouse at the right place, type in the shortcut(s), and the command then executes. Note, you can change this so that both menu and shortcut behavior is exactly the same. See the section on the resource file for more info on how to configure this.<br/>
Most of the interaction with <strong>gschem</strong> is fairly mode oriented (similar to the great text editor vi). If you select operations off of the menu, then you are placed into the corresponding mode (like copy or move mode). You must then select an anchor point (or whatever the appropriate point is) to continue the operation. Most of the commands off of the menu expect the objects to be already selected. Some of the modes persist after being execute while other immediately return you into select mode (the default mode).<br/>
The shortcuts are also mode like in nature. Most of the default shortcuts are for the various commands are not single keystrokes. There are a few which are single keystrokes (like zoom in: `z’ or pan: `x’), but most are typically two keystrokes long. As examples, to execute File/Save you would type `f’ and `s’ (without the quotes) or Add/Line is `a’ and `l’. You can get a listing of the shortcuts by picking Help/Hotkeys. You can also see the hotkey assignments in the pulldown menus as well. The shortcuts are defined in the resource files (<strong>system-gschemrc</strong>, <strong>/.gEDA/gschemrc</strong>, or <strong>`pwd`/gschemrc</strong>). See the section on the resource file for more info.<br/>
The mouse button actions in <strong>gschem</strong> are mostly configurable. The first mouse button is always used to select objects or pick points. This button is not configurable. The second mouse button is either a copy/move action (when held down over an object), a repeat last command or used to draw a stroke to execute a command. The third mouse button is either a mouse pan (when held down as the mouse is moved) or a popup menu. The behavior of the second and third mouse buttons is controlled through the resource file (see the section below for more info).
</p>
</div>
<!-- SECTION [48693-51606] -->
<h1><a name="the_status_window" id="the_status_window">The Status Window</a></h1>
<div class="level1">
<table class="inline">
<tr>
<td> <a href="_detail/geda_status_screenshot.html" class="media" title="geda:status_screenshot.jpg"><img src="_media/geda_status_screenshot.jpg" class="media" title=":geda:status_screenshot.jpg" alt=":geda:status_screenshot.jpg" /></a> </td>
</tr>
</table>
<br />
<p>
Add some details about what gets displayed in the status window.
</p>
</div>
<!-- SECTION [51607-51769] -->
<h1><a name="the_schematic_file" id="the_schematic_file">The Schematic File</a></h1>
<div class="level1">
<p>
Schematic files. These files contain components, nets, text, and sometimes primitive objects (like lines, circles, box etc...) Schematics do not contain pins. Schematic filenames should follow this convention: name_#.sch where:
</p>
<ul>
<li class="level1"><div class="li"> name is a text string which describes what this schematic contains.</div>
</li>
<li class="level1"><div class="li"> _# is an underscore and a number (like _1, _2, _7, _13, etc...) This number is used to sequence schematic pages in a multiple page schematic.</div>
</li>
<li class="level1"><div class="li"> .sch is the schematic extension/suffix. It is important the schematic pages have this extension.</div>
</li>
</ul>
<p>
Schematic files are pure <acronym title="American Standard Code for Information Interchange">ASCII</acronym> and will always be pure <acronym title="American Standard Code for Information Interchange">ASCII</acronym>. gEDA does not support any binary file formats. The file format for schematics is described in the gEDA file formats document.
</p>
</div>
<!-- SECTION [51770-52539] -->
<h1><a name="the_symbol_file" id="the_symbol_file">The Symbol File</a></h1>
<div class="level1">
<p>
Symbol files. The schematic and symbol file formats are identical. <strong>gschem</strong> (or a text editor) is used to create symbol files as well as schematics. Symbol files contain lines, circles, boxes, arcs, pins, text, and attributes.<br/>
The naming convention for symbol files is: name-#.sym where:
</p>
<ul>
<li class="level1"><div class="li"> name is a text string which describes what the symbol represents.</div>
</li>
<li class="level1"><div class="li"> -# is a dash and a number (like -1, -2 etc...) The number is used to allow for a symbols to have the same name yet different contents. There might be multiple representations for resistors so these symbols should be called: resistor-1.sym, resistor-2.sym, and resistor-3.sym.</div>
</li>
<li class="level1"><div class="li"> .sym is the symbol extension/suffix. It is important the symbols have this extension.</div>
</li>
</ul>
<p>
The way of specifying hierarchy is by using the source= attribute. Please see the master attribute document for info on this mechanism.<br/>
The hierarchy mechanism is still in heavy flux, so there might be some more changes.
</p>
</div>
<!-- SECTION [52540-53526] -->
<h1><a name="symbol_libraries" id="symbol_libraries">Symbol Libraries</a></h1>
<div class="level1">
<p>
Components are searched for by specifying (component-library “...”) inside one of the *rc files. See below for more info.
</p>
</div>
<!-- SECTION [53527-53680] -->
<h1><a name="the_log_file" id="the_log_file">The Log File</a></h1>
<div class="level1">
<p>
Log file. This file contains informative, error, warnings etc... messages when <strong>gschem</strong> was run. This file is created in the working directory that <strong>gschem</strong> was started in. This allows the user to preserve log files between independent projects.
</p>
</div>
<!-- SECTION [53681-53958] -->
<h1><a name="grips" id="grips">Grips</a></h1>
<div class="level1">
<p>
Grips are a mechanism used in <strong>gschem</strong> to provide an easy way of modifying objects inside schematics. When you select an object, little squares are placed in strategic locations (line end points or circle radius point or corners of a box) which allow you to change the object quickly. Grip support currently exists for lines, nets, pins, buses, circles, and boxes. Arcs do not yet have grips, but will eventually have them.
</p>
<p>
Using grips is easy:
</p>
<ul>
<li class="level1"><div class="li"> Select the object you want to change. The grips (the little boxes) will appear.</div>
</li>
<li class="level1"><div class="li"> Click and hold the first mouse button inside the box.</div>
</li>
<li class="level1"><div class="li"> Move the mouse around till you have the object where you want it</div>
</li>
<li class="level1"><div class="li"> Release the mouse button.</div>
</li>
</ul>
</div>
<!-- SECTION [53959-54668] -->
<h1><a name="menu_operations" id="menu_operations">Menu Operations</a></h1>
<div class="level1">
</div>
<!-- SECTION [54669-54698] -->
<h2><a name="file" id="file">File</a></h2>
<div class="level2">
<p>
The <strong>gschem</strong> application is primarily used for the creation of schematic files (i.e., filename.sch) and symbol files (filename.sym).<br/>
The following operations are related to the manipulation of these files.<br/>
Note that <strong>gschem</strong> automatically maintains backups of open schematic/symbol files, in the /tmp directory, for the purpose of Undo/Redo. <strong>gschem</strong> cleans up these files when it exits gracefully. If <strong>gschem</strong> does not exit gracefully, the next time you launch <strong>gschem</strong> you will be prompted with a dialog similar to: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">WARNING: Found an autosave backup file:
{filename}
The backup copy is newer than the schematic, so it seems you
load it instead of the original file.
gschem usually makes backup copies automatically, and this
situation happens when it crashed or it was forced to exit
abruptly.
If you load the original file, the backup file will be overwritten in
the next autosave timeout and it will be lost.
Do you want to load the backup file?</font></pre>
</p>
<p>
The following are available from the <strong>gschem</strong> main window’s menu-bar when you expand <strong>File</strong>:
</p>
</div>
<!-- SECTION [54699-55852] -->
<h3><a name="new_window_fw" id="new_window_fw">New Window (fw)</a></h3>
<div class="level3">
<p>
<strong>File | New Window</strong> opens a new window, in addition to any already open windows. Each window is totally separate from the other windows.
</p>
</div>
<!-- SECTION [55853-56018] -->
<h3><a name="new_page_fn" id="new_page_fn">New Page (fn)</a></h3>
<div class="level3">
<p>
<strong>File | New Page</strong> opens a new page, in addition to any existing open pages. Usually this page will be named “untitled_N.sch”, where N is an incrementing number.
</p>
</div>
<!-- SECTION [56019-56206] -->
<h3><a name="open_page..._fo" id="open_page..._fo">Open Page... (fo)</a></h3>
<div class="level3">
<p>
<strong>File | Open Page...</strong> opens an existing page from disk.<br/>
The “Open...” dialog box pops up providing:
</p>
<ul>
<li class="level1"><div class="li"> Directory navigation aids</div>
</li>
<li class="level1"><div class="li"> Filters for restricting the displayed files:</div>
<ul>
<li class="level2"><div class="li"> Schematics</div>
</li>
<li class="level2"><div class="li"> Symbols</div>
</li>
<li class="level2"><div class="li"> Schematics and Symbols</div>
</li>
<li class="level2"><div class="li"> All files</div>
</li>
</ul>
</li>
</ul>
</div>
<!-- SECTION [56207-56494] -->
<h3><a name="close_page_pc" id="close_page_pc">Close Page (pc)</a></h3>
<div class="level3">
<p>
<strong>File | Close Page</strong> closes the currently displayed page. This will prompt you to save if you have modified the page.
</p>
</div>
<!-- SECTION [56495-56640] -->
<h3><a name="revert_page_pr" id="revert_page_pr">Revert Page (pr)</a></h3>
<div class="level3">
<p>
<strong>File | Revert Page</strong> closes and reopens the currently displayed page. This will not prompt you to save the current page, but will quickly discard any changes you have made and reopen the saved schematic from disk. Use with caution.
</p>
</div>
<!-- SECTION [56641-56902] -->
<h3><a name="save_page_fs" id="save_page_fs">Save Page (fs)</a></h3>
<div class="level3">
<p>
<strong>File | Save Page</strong> saves the current page. The current filename is displayed in the <strong>gschem</strong> status-bar.<br/>
If the page’s filename is “untitled_N.sch” (where N is a integer), then the Save As... dialog box will be displayed, prompting for a new filename.<br/>
If the page’s filename is NOT “untitled_N.sch” (where N is a integer), then the Save As... dialog box will NOT be displayed, and:
</p>
<ul>
<li class="level1"><div class="li"> the backup file will be created for the previous version, named {filename}~ That is, the “~” (tilde character) is appended to the filename. Any previous backup file is lost.</div>
</li>
<li class="level1"><div class="li"> the file will be saved to the current filename.<br/>
</div>
</li>
</ul>
</div>
<!-- SECTION [56903-57550] -->
<h3><a name="save_page_as..._fa" id="save_page_as..._fa">Save Page As... (fa)</a></h3>
<div class="level3">
<p>
<strong>File | Save Page As...</strong> opens the Save As.. dialog box.<br/>
If the current filename is “untitled_N.sch”, the Save As... dialog box prompts for a new filename.<br/>
If the current filename is NOT “untitled_N.sch”, the Save As... dialog box prompts for a new filename, filling in the current filename as a default.<br/>
In either case the filename may be changed, and a new file created when the Save As button is clicked.
</p>
</div>
<!-- SECTION [57551-57998] -->
<h3><a name="save_all_fl_fl" id="save_all_fl_fl">Save All (fl) (fl)</a></h3>
<div class="level3">
<p>
<strong>File | Save All</strong> unconditionally saves all schematics loaded in memory.
</p>
</div>
<!-- SECTION [57999-58103] -->
<h3><a name="print..._fp" id="print..._fp">Print... (fp)</a></h3>
<div class="level3">
<p>
<strong>File | Print...</strong> brings up the Print... dialog box.<br/>
The following may be selected:
</p>
<ul>
<li class="level1"><div class="li"> Filename (if <strong>gschem</strong> has multiple pages loaded, this filename defaults to the page currently displayed).</div>
</li>
<li class="level1"><div class="li"> Paper size (that is loaded into your printer).</div>
</li>
<li class="level1"><div class="li"> The print type:</div>
<ul>
<li class="level2"><div class="li"> Extents with margins – the current page, with margins where the printer doesn’t output.</div>
</li>
<li class="level2"><div class="li"> Extents no margins – the current page, but without margins where the printer doesn’t output. The printer output may be scaled larger than when using “Entents with margins”, but at the loss along the borders of the schematic.</div>
</li>
<li class="level2"><div class="li"> Current window – Scaled to fit the page size, but not optimally.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Orientation:</div>
<ul>
<li class="level2"><div class="li"> Landscape</div>
</li>
<li class="level2"><div class="li"> Portrait</div>
</li>
</ul>
</li>
</ul>
<p>
Pressing Print will generate a PostScript file with the filname format of the form {filename}.ps (e.g., printing schematic file First_1.sch would generate First_1.ps).<br/>
Printing the PostScript file to your printer is distribution dependent:</p>
<dl>
<dt><span class='term'> Fedora Core (from the command-line):</span></dt>
<dd><code>lp First_1.ps</code></dd>
</dl>
<p>
</p>
</div>
<!-- SECTION [58104-59150] -->
<h3><a name="write_png..._fi" id="write_png..._fi">Write PNG... (fi)</a></h3>
<div class="level3">
<p>
<strong>File | Write <acronym title="Portable Network Graphics">PNG</acronym>...</strong> brings up the Write <acronym title="Portable Network Graphics">PNG</acronym>... dialog box. Note you must have libgdgeda installed (and any required dependencies) if you want to output images.<br/>
The dialog box allows you to select:
</p>
<ul>
<li class="level1"><div class="li"> Width x Height:</div>
<ul>
<li class="level2"><div class="li"> 320 x 240</div>
</li>
<li class="level2"><div class="li"> 640 x 480</div>
</li>
<li class="level2"><div class="li"> 800 x 600</div>
</li>
<li class="level2"><div class="li"> 1024 x 768</div>
</li>
<li class="level2"><div class="li"> 1280 x 960</div>
</li>
<li class="level2"><div class="li"> 1600 x 1200</div>
</li>
<li class="level2"><div class="li"> 3200 x 2400</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Filename (if <strong>gschem</strong> has multiple pages loaded, the currently displayed page’s filname is given)</div>
</li>
</ul>
<p>
When the OK button is clicked, a <acronym title="Portable Network Graphics">PNG</acronym> graphic file with a filename of the form {filename}.png is created (e.g., writing a <acronym title="Portable Network Graphics">PNG</acronym> for schematic file First_1.sch will generate a First_1.png file).<br/>
This file may be used any way a <acronym title="Portable Network Graphics">PNG</acronym> file is used (e.g., web-page, document insertion, image manipulation with the GIMP, etc.).
</p>
</div>
<!-- SECTION [59151-59945] -->
<h3><a name="execute_script..._ft" id="execute_script..._ft">Execute Script... (ft)</a></h3>
<div class="level3">
<p>
<strong>File | Execute Script...</strong> .....TBD
</p>
</div>
<!-- SECTION [59946-60017] -->
<h3><a name="close_window_fc" id="close_window_fc">Close Window (fc)</a></h3>
<div class="level3">
<p>
<strong>File | Close Window</strong> closes the current window. If there are any modified schematics, the â??There are unsaved schematicsâ?? dialog box will appear. Clicking OK will cause all unsaved schematics to be lost.
</p>
</div>
<!-- SECTION [60018-60256] -->
<h3><a name="quit_alt-q" id="quit_alt-q">Quit (Alt-q)</a></h3>
<div class="level3">
<p>
<strong>File | Quit</strong> closes all opened windows and exits <strong>gschem</strong>. A â??There are unsaved schematicsâ?? dialog box will appear for each window that has unsaved schematics.
</p>
</div>
<!-- SECTION [60257-60449] -->
<h2><a name="edit" id="edit">Edit</a></h2>
<div class="level2">
<p>
The following are available from the <strong>gschem</strong> main windowâ??s menu-bar when you expand <strong>Edit</strong>:
</p>
</div>
<!-- SECTION [60450-60566] -->
<h3><a name="undo_shift-u" id="undo_shift-u">Undo (shift-u)</a></h3>
<div class="level3">
<p>
<strong>Edit | Undo</strong> does exactly that, it undos the last action which changed the schematic.<br/>
The depth of undo (how many undo steps can be performed) is set in the system-gschemrc file. The default is 10. Simply override this setting by placing the following lines in either your ~/.gEDA/gschemrc file or your local gschemrc file: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">; undo-levels number
;
; Determines the number of levels of undo. Basically this number decides
; how many backup schematics are saved on disk.
;
(undo-levels 10)</font></pre>
</p>
<p>
After every action (including zooming and panning) the schematic is saved to disk (in /tmp). The undo-levels setting determines how many of these temporary files are maintained in the /tmp directory. <strong>gschem</strong> does clean-up after itself when you exit.<br/>
Should <strong>gschem</strong> crash, the saved files remain in /tmp for disaster recovery. You will be prompted the next time the schematic is opened to recover from the backup.<br/>
</p>
</div>
<!-- SECTION [60567-61525] -->
<h3><a name="redo_shift-r" id="redo_shift-r">Redo (shift-r)</a></h3>
<div class="level3">
<p>
<strong>Edit | Redo</strong> only applies after you have done an <strong>Edit | Undo</strong>. You can undo something and then immediately redo it. However if you do anything in between you will lose the undo info. You can undo and redo to your hearts desire up and down till you reach the max undo levels.<br/>
</p>
</div>
<!-- SECTION [61526-61834] -->
<h3><a name="select_mode_s" id="select_mode_s">Select Mode (s)</a></h3>
<div class="level3">
<p>
<strong>Edit | Select Mode</strong> is the initial mode in which <strong>gschem</strong> starts.<br/>
When in <strong>Select Mode</strong>, an unlocked object (i.e., component, line, box, circle, ...) may be selected by placing the mouse pointer within the outline of the object and single-clicking, or by dragging a box (i.e., holding down the first mouse-button) around the object. Selecting an already selected object will leave the object selected (i.e., you can not unselect an object by single-clicking it). Multiple unlocked objects may be selected by dragging a box around the objects.<br/>
A locked object may be selected by dragging a box around the object.<br/>
To de-select all objects, single-click anywhere on the schematic where there is no object.<br/>
A visible attribute for an unlocked component may be selected by placing the mouse pointer over the component’s visible attribute and single-clicking. Placing the mouse pointer over the unlocked component’s visible attribute and double-clicking will open the edit dialog box appropriate for the attribute.<br/>
Objects will change color when selected.<br/>
You stay in <strong>Select Mode</strong> until you select one of the other Modes (e.g., Line, Copy, Move, etc.).<br/>
Your current Mode is displayed on the status-bar, in the lower-right corner of the <strong>gschem</strong> window.<br/>
If multiple objects overlap, single-clicking where they overlap will cycle through the objects.<br/>
If you hold down the SHIFT key and single-click, you can select and deselect multiple objects. Doing this with multiple overlapping objects will cause the selection to cycle among the possible object selections.<br/>
If you hold down the CONTROL key and single-click, you will toggle the object in and out of the current selection list.<br/>
If you hold down the SHIFT key while drawing a selection box you will add to the currently selected objects. Objects cannot be removed using the selection box and holding down the SHIFT key.<br/>
If you hold down the CONTROL key while drawing a selection box then you will toggle any encompassed objects. If an object was selected then it will be unselected and vice versa.<br/>
If you pick a component, its visible and invisible attributes are selected as well. If you just want to select the object, you must deselect the attributes.<br/>
The selection mechanisms are not obvious and do require some practice. There are some quirks so please report them as you come across them.
</p>
</div>
<!-- SECTION [61835-64242] -->
<h3><a name="edit..._ee" id="edit..._ee">Edit... (ee)</a></h3>
<div class="level3">
<p>
First, select the object to be edited (i.e., in <strong>Select Mode</strong>).<br/>
If the object is a component, <strong>Edit | Edit...</strong> then pops up a dialog box that allows you to edit the component’s attributes:
</p>
<ul>
<li class="level1"><div class="li"> Existing attributes (e.g., refdes) are displayed.</div>
</li>
<li class="level1"><div class="li"> A drop-down list of pre-defined attributes permits selection, and a edit-box provides association of a value to the attribute.</div>
</li>
<li class="level1"><div class="li"> The attribute’ name and/or value may be made visible or invisible,</div>
</li>
</ul>
<p>
If the ojbect is a text string, <strong>Edit...</strong> then pops up a dialog box that allows you to modify the text string’s attributes:
</p>
<ul>
<li class="level1"><div class="li"> The text string may be modified. Multiple lines of text may be entered by inserting carriage-returns.</div>
</li>
<li class="level1"><div class="li"> The text color may be modified.</div>
</li>
<li class="level1"><div class="li"> The text size may be modified.</div>
</li>
<li class="level1"><div class="li"> The text alignment:</div>
<ul>
<li class="level2"><div class="li"> Lower/middle/upper left</div>
</li>
<li class="level2"><div class="li"> Lower/middle/upper middle</div>
</li>
<li class="level2"><div class="li"> Lower/middle/upper right</div>
</li>
</ul>
</li>
</ul>
<p>
Apply the changes by pressing OK.
</p>
<p>
<strong>Notes:</strong><br/>
If you need to change the attributes to more than just a few components, consider saving your schematics, closing <strong>gschem</strong>, and using the <strong>gattrib</strong> application, the <strong>grenum</strong> application, or the <strong>refdes_renum</strong> application to make the changes.
</p>
</div>
<!-- SECTION [64243-65437] -->
<h3><a name="edit_text..._ex" id="edit_text..._ex">Edit Text... (ex)</a></h3>
<div class="level3">
<p>
First, select the text object to be edited (i.e., in <strong>Select Mode</strong>).<br/>
<strong>Edit | Edit Text...</strong> allows you to edit just text.<br/>
<strong>Edit | Edit Text...</strong> then pops up a dialog box that allows you to modify the text string’s attributes:
</p>
<ul>
<li class="level1"><div class="li"> The text string may be modified. Multiple lines of text may be entered by inserting carriage-returns.</div>
</li>
<li class="level1"><div class="li"> The text color may be modified.</div>
</li>
<li class="level1"><div class="li"> The text size may be modified.</div>
</li>
<li class="level1"><div class="li"> The text alignment:</div>
<ul>
<li class="level2"><div class="li"> Lower/middle/upper left</div>
</li>
<li class="level2"><div class="li"> Lower/middle/upper middle</div>
</li>
<li class="level2"><div class="li"> Lower/middle/upper right</div>
</li>
</ul>
</li>
</ul>
<p>
Apply the changes by pressing OK.
</p>
<p>
<strong>Notes:</strong><br/>
If you need to change the attributes to more than just a few text strings, consider saving your schematics, closing <strong>gschem</strong>, and using the <strong>gattrib</strong> application, the <strong>grenum</strong> application, or the <strong>refdes_renum</strong> application to make the changes.
</p>
</div>
<!-- SECTION [65438-66296] -->
<h3><a name="copy_mode_ec" id="copy_mode_ec">Copy Mode (ec)</a></h3>
<div class="level3">
<p>
<strong>Edit | Copy Mode</strong> allows you to copy (i.e., duplicate) the currently selected objects.<br/>
To copy the object(s):
</p>
<ul>
<li class="level1"><div class="li"> Select the objects to be copied (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Copy Mode</strong></div>
</li>
<li class="level1"><div class="li"> Observe the status-bar now indicates <strong>Copy Mode</strong></div>
</li>
<li class="level1"><div class="li"> Click on the selected component(s) to establish an origin of reference</div>
</li>
<li class="level1"><div class="li"> Observe a shadow/outline appears for the selected components that moves with the mouse</div>
</li>
<li class="level1"><div class="li"> Place the components where you want them</div>
</li>
<li class="level1"><div class="li"> Click to anchor the copied components in place.</div>
</li>
</ul>
<p>
After finishing the copy, you automatically return to <strong>Select Mode</strong>.<br/>
Holding down the CONTROL key as you move the outline around will constrain the movement to be either horizontal or vertical.<br/>
To copy objects using the shortcut keys is almost the same as above except that the origin point is selected automatically for you once you hit the copy mode shortcut.<br/>
</p>
</div>
<!-- SECTION [66297-67221] -->
<h3><a name="move_mode_em" id="move_mode_em">Move Mode (em)</a></h3>
<div class="level3">
<p>
<strong>Edit | Move Mode</strong> allows you to move the currently selected objects.<br/>
To move the object(s):
</p>
<ul>
<li class="level1"><div class="li"> Select the objects to be moved (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Move Mode</strong></div>
</li>
<li class="level1"><div class="li"> Observe the status-bar now indicates <strong>Move Mode</strong></div>
</li>
<li class="level1"><div class="li"> Click on the selected component(s) to establish an origin of reference</div>
</li>
<li class="level1"><div class="li"> Observe a shadow/outline appears for the selected components that moves with the mouse</div>
</li>
<li class="level1"><div class="li"> Place the components where you want them</div>
</li>
<li class="level1"><div class="li"> Click to anchor the moved components in place.</div>
</li>
</ul>
<p>
After finishing the move, you automatically return to <strong>Select Mode</strong>.<br/>
Holding down the CONTROL key as you move the outline around will constrain the movement to be either horizontal or vertical.<br/>
To move objects using the shortcut keys is almost the same as above except that the origin point is selected automatically for you once you hit the copy mode shortcut.<br/>
</p>
</div>
<!-- SECTION [67222-68126] -->
<h3><a name="delete_delete-key" id="delete_delete-key">Delete (Delete-key)</a></h3>
<div class="level3">
<p>
<strong>Edit | Delete</strong> allows you to remove objects off of the page.<br/>
To delete objects:
</p>
<ul>
<li class="level1"><div class="li"> Select the desired object(s) (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Delete</strong></div>
</li>
</ul>
<p>
The object(s) will be deleted immediately. If you inadvertantly delete a component, you can use Undo to recover.
</p>
</div>
<!-- SECTION [68127-68445] -->
<h3><a name="rotate_90_mode_er" id="rotate_90_mode_er">Rotate 90 Mode (er)</a></h3>
<div class="level3">
<p>
<strong>Edit | Rotate 90 Mode</strong> allows you to rotate objects 90 degrees around a pivot/center point.<br/>
To rotate objects:
</p>
<ul>
<li class="level1"><div class="li"> Select the desired object(s) (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Rotate 90 Mode</strong></div>
</li>
<li class="level1"><div class="li"> Click on the pivot (or center) point of the rotate</div>
</li>
</ul>
<p>
The object(s) will be rotated 90º counter-clockwise immediately. If you inadvertantly rotate a component, you can use Undo to recover.<br/>
Rotating objects using the shortcut keys is similar to above except that the center point is the last mouse position at which you typed the shortcut.<br/>
</p>
</div>
<!-- SECTION [68446-69035] -->
<h3><a name="mirror_mode_ei" id="mirror_mode_ei">Mirror Mode (ei)</a></h3>
<div class="level3">
<p>
<strong>Edit | Mirror Mode</strong> allows you to mirror objects horizontally around a pivot point.<br/>
To mirror objects:
</p>
<ul>
<li class="level1"><div class="li"> Select the desired object(s) (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Mirror Mode</strong></div>
</li>
<li class="level1"><div class="li"> Click on the pivot (or center) point of the mirror</div>
</li>
</ul>
<p>
Mirroring objects using the shortcut keys is similar to above except that the pivot point is the last mouse position at which you typed the shortcut.<br/>
Objects are mirrored horizontally about the pivot point. If you want to get a vertical mirror then rotate and mirror the object(s) till you get the desired position.<br/>
Mirroring of embedded components is not supported.
</p>
</div>
<!-- SECTION [69036-69692] -->
<h3><a name="slot..._e_shift-s" id="slot..._e_shift-s">Slot... (e shift-s)</a></h3>
<div class="level3">
<p>
Some physical packages (e.g., the classic 7400 Quad NAND gate) contain more than one logical component (e.g., one of the NAND gates). In <strong>gchem</strong> terminology, each of these logical components is termed a “slot” (e.g., there would be 4 slots in the 7400 Quad NAND gate). Each slot is associated with specific pins on the physical package.<br/>
<strong>Edit | Slot...</strong> allows you to change the slot number of a multiple-slot package. The package must support slotting. Refer to the <a href="http://www.geda.seul.org/docs/current/symbols/index.html" class="urlextern" title="http://www.geda.seul.org/docs/current/symbols/index.html" rel="nofollow">gEDA/gaf Symbol Creation Document</a> for more details.<br/>
To change the slot number (i.e., select which package pins are associated with a logical component):
</p>
<ul>
<li class="level1"><div class="li"> Select the desired logical component (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Slot...</strong></div>
</li>
<li class="level1"><div class="li"> Change the “slot=n” value in the “Edit slot number” dialog box</div>
</li>
<li class="level1"><div class="li"> Press OK</div>
</li>
</ul>
<p>
Note that selecting the slot on a package often effects the layout of the printed circuit board, as the slot may be on the wrong side of the package for effecient routing of nets. Don’t worry, you can always come back and change the slot selection once you start laying out your board and know which slots route best.
</p>
</div>
<!-- SECTION [69693-70909] -->
<h3><a name="color..._eo" id="color..._eo">Color... (eo)</a></h3>
<div class="level3">
<p>
<strong>Edit | Color...</strong> allows you to change the color of any selected object (with the exception of components).<br/>
To change the color of the currently selected objects:
</p>
<ul>
<li class="level1"><div class="li"> Select the desired object(s) (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Color...</strong></div>
</li>
<li class="level1"><div class="li"> The “Edit | Color Edit” dialog box, with a drop down list for colors, will appear:</div>
<ul>
<li class="level2"><div class="li"> 1 | pin | black</div>
</li>
<li class="level2"><div class="li"> 2 | net endpoint | red</div>
</li>
<li class="level2"><div class="li"> 3 | graphic | green4</div>
</li>
<li class="level2"><div class="li"> 4 | net | blue2</div>
</li>
<li class="level2"><div class="li"> 5 | attribute | black</div>
</li>
<li class="level2"><div class="li"> 6 | logic bubble | DarkCyan</div>
</li>
<li class="level2"><div class="li"> 8 | detached attribute | red</div>
</li>
<li class="level2"><div class="li"> 9 | text | green4</div>
</li>
<li class="level2"><div class="li"> 10 | bus | green2</div>
</li>
<li class="level2"><div class="li"> 11 | select | firebrick</div>
</li>
<li class="level2"><div class="li"> 12 | bounding box | orange</div>
</li>
<li class="level2"><div class="li"> 13 | zoom box | DarkCyan</div>
</li>
<li class="level2"><div class="li"> 14 | stroke | grey90</div>
</li>
<li class="level2"><div class="li"> 15 | lock | grey40</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Pick the new color</div>
</li>
<li class="level1"><div class="li"> Press Apply</div>
</li>
</ul>
<p>
The color change will take effect once you press Apply.<br/>
You can leave this dialog box up and select other objects and change their color by pressing Apply.
</p>
</div>
<!-- SECTION [70910-71868] -->
<h3><a name="lock_el_unlock_e_shift-l" id="lock_el_unlock_e_shift-l">Lock (el) / Unlock (e shift-l)</a></h3>
<div class="level3">
<p>
<strong>Edit | Lock</strong> and <strong>Edit | Unlock</strong> allow you to lock/unlock components in a schematic. A locked component cannot be selected by a single click. To select locked component(s), drag a box around the component(s).<br/>
Locking a component is useful for components such as title blocks, which should not be selectable because there are other objects inside its boundaries. If the titleblock was not locked, and you missed selecting a component by clicking it with the mouse, you would end up selecting the titleblock instead.<br/>
Locking a component is also useful just to prevent it from being inadvertantly selected.<br/>
To lock/unlock components:
</p>
<ul>
<li class="level1"><div class="li"> Select the desired object(s) (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Lock</strong> or <strong>Edit | Unlock</strong></div>
</li>
</ul>
<p>
The locked/unlocked state of components is preserved when <strong>gschem</strong> exits, so components which were locked remain locked the next time the schematic is opened.<br/>
You can lock and unlock regular objects (e.g., lines, pins, boxes...). This is nice when you are drawing something and an object is in the way. Just lock it, and you will not have to think about it when you click to select other objects. Locking an object is not preserved in the file format, so once you quit <strong>gschem</strong> any locked objects will be unlocked the next time the schematic is opened.<br/>
Note that if a component is locked, you can not single-click to select a visible attribute, or double-click to select and edit a visible component. First unlock such locked components.
</p>
</div>
<!-- SECTION [71869-73407] -->
<h3><a name="line_width_type..._ew" id="line_width_type..._ew">Line Width & Type... (ew)</a></h3>
<div class="level3">
<p>
The <strong>Edit | Line Width & Type...</strong> dialog box lets you control the width and type of lines, boxes, circles, and arcs on the schematic/symbol.<br/>
To change the <strong>Line Width & Type...</strong>:
</p>
<ul>
<li class="level1"><div class="li"> Select the desired object(s) (i.e., in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Line Width & Type...</strong></div>
</li>
<li class="level1"><div class="li"> The “Edit Line Width * Type” dialog box displays</div>
</li>
<li class="level1"><div class="li"> Change the following as suites the object:</div>
<ul>
<li class="level2"><div class="li"> Line Width</div>
</li>
<li class="level2"><div class="li"> Line Type</div>
</li>
<li class="level2"><div class="li"> Line Dash Length</div>
</li>
<li class="level2"><div class="li"> Line Dash Space</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Press OK to apply the changes</div>
</li>
</ul>
<p>
Note that if the line width doesn’t seem to change, just pick a larger value.
</p>
</div>
<!-- SECTION [73408-74023] -->
<h3><a name="fill_type..._ef" id="fill_type..._ef">Fill Type... (ef)</a></h3>
<div class="level3">
<p>
<strong>Edit | Fill Type...</strong> is used to fill boxes and circles.<br/>
To fill a box or circle:
</p>
<ul>
<li class="level1"><div class="li"> Select the box or circle.</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Fill Type...</strong>. The “Edit FIll Type” dialog box is displayed.</div>
</li>
<li class="level1"><div class="li"> Enter:</div>
<ul>
<li class="level2"><div class="li"> Fill Type</div>
</li>
<li class="level2"><div class="li"> Line Width</div>
</li>
<li class="level2"><div class="li"> Angle 1</div>
</li>
<li class="level2"><div class="li"> Pitch 1</div>
</li>
<li class="level2"><div class="li"> Angle 2</div>
</li>
<li class="level2"><div class="li"> Pitch 2</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Press OK.</div>
</li>
</ul>
</div>
<!-- SECTION [74024-74364] -->
<h3><a name="symbol_translate..._et" id="symbol_translate..._et">Symbol Translate... (et)</a></h3>
<div class="level3">
<p>
<strong>Edit | Symbol Translate...</strong> is used when creating a symbol, to translate the symbol to an origin for subsequent placement. The symbol may take an optional offset (in mils), as appropriate to the symbol.<br/>
To translate the symbol:
</p>
<ul>
<li class="level1"><div class="li"> Open a file for the symbol</div>
</li>
<li class="level1"><div class="li"> Set the grid snap spacing to 100 mils (<strong>Options</strong> | <strong>Snap Grid Spacing...</strong>).</div>
</li>
<li class="level1"><div class="li"> Toggle the grid ON (<strong>Options</strong> | <strong>Toggle Grid On/Off</strong>)</div>
</li>
<li class="level1"><div class="li"> Toggle the grid snap ON (<strong>Options</strong> | <strong>Toggle Snap On/Off</strong>)</div>
</li>
<li class="level1"><div class="li"> Zoom as appropriate for the symbol’s dimensions</div>
</li>
<li class="level1"><div class="li"> Draw the symbol, according to the recommendations in the <a href="http://www.geda.seul.org/docs/current/symbols/index.html" class="urlextern" title="http://www.geda.seul.org/docs/current/symbols/index.html" rel="nofollow">gEDA/gaf Symbol Creation Document</a></div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Symbol Translate...</strong></div>
</li>
<li class="level1"><div class="li"> The “Translate” dialog box is displayed.</div>
</li>
<li class="level1"><div class="li"> Enter 0 to translate to the origin, or enter a value (in mils), positive or negative, to offset the symbol from the origin.</div>
</li>
<li class="level1"><div class="li"> Press OK to apply</div>
</li>
<li class="level1"><div class="li"> Save the symbol to the file</div>
</li>
</ul>
<p>
If you enter a 0, then all the objects will be translated to the origin.<br/>
If you enter a non-zero offset, this will be applied equally in both the X and the Y directions.<br/>
</p>
</div>
<!-- SECTION [74365-75529] -->
<h3><a name="embed_component_picture_eb" id="embed_component_picture_eb">Embed Component/Picture (eb)</a></h3>
<div class="level3">
<p>
<strong>gschem</strong> supports the concept of embedded components and graphics, where all the information necessary to display a component/graphic is placed in the schematic file. <strong>Edit | Embed Component/Picture</strong> causes schematic files to be significantly larger, but it makes it easy to share schematics with other people or archive schematics. You should only embed components when absolutely necessary.<br/>
To <strong>Embed Component/Picture</strong>:
</p>
<ul>
<li class="level1"><div class="li"> Select the component/picture (in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Embed Component/Picture</strong></div>
</li>
</ul>
<p>
Save the schematic. The schematic file will now contain the text strings for the embedded component or embedded graphic.<br/>
The <strong>Add Component...</strong> dialog box allows you to optionally embed the component.<br/>
The <strong>Add Picture...</strong> dialog box does NOT allow you to optionally embed the component.<br/>
You can only embed and unembed components. Also, you cannot embed and then mirror a component (this is a limitation of <strong>gschem</strong> and will eventually be fixed).
</p>
</div>
<!-- SECTION [75530-76559] -->
<h3><a name="unembed_component_picture_eu" id="unembed_component_picture_eu">Unembed Component/Picture (eu)</a></h3>
<div class="level3">
<p>
<strong>Edit | Unembed Component/Picture</strong> will move the component’s or graphic’s information from the schematic file’s contents and output it to the original file’s path/filename (i.e., the schematic file includes the path/filename information). To <strong>Unembed Component/Picture</strong>:
</p>
<ul>
<li class="level1"><div class="li"> Select the component/picture (in <strong>Select Mode</strong>)</div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Unembed Component/Picture</strong></div>
</li>
</ul>
<p>
Save the schematic. The schematic file will now NOT contain the text strings for the embedded component or embedded graphic.<br/>
You can only embed and unembed components.
</p>
</div>
<!-- SECTION [76560-77149] -->
<h3><a name="update_component_ep" id="update_component_ep">Update Component (ep)</a></h3>
<div class="level3">
<p>
<strong>Edit | Update Component</strong> updates a component’s definition.<br/>
A symbol can be modified from within <strong>gschem</strong> using the following sequence:
</p>
<ul>
<li class="level1"><div class="li"> Select the component for which the symbol should be changed.</div>
</li>
<li class="level1"><div class="li"> Select <strong>Hierarchy | Down Symbol</strong>. This takes you to the symbol editor</div>
</li>
<li class="level1"><div class="li"> Modify the symbol. This includes modifying the symbol’s graphic objects, adding/changing/deleting attributes, and moving objects with respect to the origin</div>
</li>
<li class="level1"><div class="li"> Don’t forget to <strong>Edit | Symbol Translate</strong></div>
</li>
<li class="level1"><div class="li"> Select <strong>File | Save Page</strong> to save the symbol to it’s file</div>
</li>
<li class="level1"><div class="li"> Select <strong>Hierarchy | Up Symbol</strong>. This returns you to the schematic editor</div>
</li>
<li class="level1"><div class="li"> With the component still selected, select <strong>Edit | Update Component</strong> to update the componet’s description from the modified symbol’s definition</div>
</li>
<li class="level1"><div class="li"> Select each component on the schematic(s) made from this symbol, and select <strong>Edit | Update Component</strong></div>
</li>
</ul>
<p>
New components placed on the schematic from this updated symbol will use the new symbol definition.<br/>
Components placed on the schematic from this symbol will be updated the next time this schematic is opened.<br/>
The symbol’s <code>symversion</code> attribute will automatically be incremented for non-trivial changes when the symbol is saved. When a schematic is opened by <strong>gschem</strong>, all symbols used by the schematic are read from their libraries. The <code>symversion</code> attribute of the symbol read from the library is compared to the <code>symversion</code> attribute of the components in the schematic. If the <code>symversion</code> attributes are different, the <code>symversion</code> attribute is exposed on the schematic for those symbols effected. Note that:
</p>
<ul>
<li class="level1"><div class="li"> This is a “hint” to the designer to check the symbol.</div>
</li>
<li class="level1"><div class="li"> You need to actually open a schematic file with <strong>gschem</strong> for the components to be updated.</div>
</li>
</ul>
</div>
<!-- SECTION [77150-78959] -->
<h3><a name="show_hide_inv_text_en" id="show_hide_inv_text_en">Show/Hide Inv Text (en)</a></h3>
<div class="level3">
<p>
<strong>Edit | Show/Hide Inv Text</strong> is most appropriate when creating or editing symbols, to view or hide the text for all of the symbol’s invisible attributes.<br/>
<a href="#make_inv_text_vis" title="geda:gschem_ug ↵" class="wikilink1">Make Inv Text Vis</a> is most appropriate when adding symbols to schematics, to view the text for the symbol’s modifiable invisible attributes.<br/>
<strong>Edit | Show/Hide Inv Text</strong> toggles between making all invisible text visible and hiding all invisible text. When selected, all objects in the symbol are effected.<br/>
Visible text always remains visible.<br/>
A symbol has the following <em class="u">potential</em> attributes :
</p>
<ul>
<li class="level1"><div class="li"> netname</div>
</li>
<li class="level1"><div class="li"> refdes</div>
</li>
<li class="level1"><div class="li"> slot</div>
</li>
<li class="level1"><div class="li"> value</div>
</li>
<li class="level1"><div class="li"> net</div>
</li>
<li class="level1"><div class="li"> device</div>
</li>
<li class="level1"><div class="li"> pinnumber</div>
</li>
<li class="level1"><div class="li"> pinseq</div>
</li>
<li class="level1"><div class="li"> pintype</div>
</li>
<li class="level1"><div class="li"> pinlabel</div>
</li>
<li class="level1"><div class="li"> source</div>
</li>
<li class="level1"><div class="li"> numslots</div>
</li>
<li class="level1"><div class="li"> slotdef</div>
</li>
<li class="level1"><div class="li"> graphical</div>
</li>
<li class="level1"><div class="li"> footprint</div>
</li>
<li class="level1"><div class="li"> description</div>
</li>
<li class="level1"><div class="li"> documentation</div>
</li>
<li class="level1"><div class="li"> symversion</div>
</li>
<li class="level1"><div class="li"> comment</div>
</li>
<li class="level1"><div class="li"> file</div>
</li>
<li class="level1"><div class="li"> model-name</div>
</li>
</ul>
<p>
Not all attributes need to be used to define a symbol (see the discussion of <a href="docs_20060124_gschem_ug_app_a.html" class="wikilink2" title="docs:20060124:gschem_ug:app_a">Appendix A -- Heavy vs Light Symbol Libraries</a>). The <strong>gschem</strong> default is to define symbols as “light”, indicating that the symbol includes as few attributes as necessary to describe the symbol. “light” symbols depend on the designer attaching additional descriptive attributes to the symbol when the symbol is placed on the schematic. For example: a “light” symbol for a resistor might include just the graphic for a resistor, its pin attributes, and the “refdes” attribute. This describes a resistor. It would be the designer’s responsibility, after the resistor has been placed on the schematic, to add the “value” and “footprint” attributes appropriate for the specific resistor in the circuit. A “heavy” symbol includes more descriptive attributes. Using “light” vs. “heavy” symbols is up to the designer.<br/>
A symbol’s attributes may be flagged as either visible or invisible. Attributes are flagged as invisible to reduce the clutter around a symbol on the schematic.<br/>
When creating or editing the symbol, and changing a visible attribute to an invisible attribute, the attribute can not be viewed during further editing of the symbol. It becomes difficult to place attribute text. To view both the visible and invisible text, select <strong>Edit | Show/Hide Inv Text</strong>.<br/>
When a symbol is instantiated on a schematic as a component, only the symbol’s visible attributes are promoted to the component. For example: if a resistor’s symbol defines “refdes” as the only visible attribute defined in the symbol, the only attribute that the component contains is the “refdes” attribute). Those attributes not included in the symbol definition may be added at the schematic level, component-by-component.<br/>
This operation is useful when drawing/debugging symbols.<br/>
When hidden text is visible, “Show Hidden” will appear on the status-bar in the lower right.
</p>
</div>
<!-- SECTION [78960-81787] -->
<h3><a name="make_inv_text_vis_ev" id="make_inv_text_vis_ev">Make Inv Text Vis (ev)</a></h3>
<div class="level3">
<p>
<strong>Edit | Make Inv Text Vis</strong> is a quick method of making all of a component’s invisible attributes visible. The same effect can be accomplished by double-clicking on the component and marking all of the entries in the Attributes listbox as “Vis?” (i.e., visible).<br/>
To <strong>Make Inv Text Vis</strong> for a component:
</p>
<ul>
<li class="level1"><div class="li"> Select the component(s) in <strong>Select Mode</strong></div>
</li>
<li class="level1"><div class="li"> Select <strong>Edit | Make Inv Text Vis</strong></div>
</li>
</ul>
<p>
The attributes that had been hidden are displayed.<br/>
To hide the attributes again, you need to double-click the component to bring up it’s “Edit Attributes” dialog box, and explicitly place a check for each attribute you want hidden.
</p>
</div>
<!-- SECTION [81788-82451] -->
<h2><a name="buffer" id="buffer">Buffer</a></h2>
<div class="level2">
<p>
<strong>gschem</strong> supports 5 copy/cut/paste buffers which are visible across all opened pages and windows.
</p>
</div>
<!-- SECTION [82452-82571] -->
<h3><a name="copy_into_1_2_3_4_5_yc" id="copy_into_1_2_3_4_5_yc">Copy into 1/2/3/4/5 (yc)</a></h3>
<div class="level3">
<p>
To copy something into a buffer:
</p>
<ol>
<li class="level1"><div class="li"> Select the objects you want to copy.</div>
</li>
<li class="level1"><div class="li"> Select Buffer/Copy/Copy into buffer #.</div>
</li>
</ol>
</div>
<!-- SECTION [82572-82724] -->
<h3><a name="cut_into_1_2_3_4_5_yu" id="cut_into_1_2_3_4_5_yu">Cut into 1/2/3/4/5 (yu)</a></h3>
<div class="level3">
<p>
Cut is like copy in that it removes the objects from the schematic
</p>
</div>
<!-- SECTION [82725-82826] -->
<h3><a name="paste_from_1_2_3_4_5_yp" id="paste_from_1_2_3_4_5_yp">Paste from 1/2/3/4/5 (yp)</a></h3>
<div class="level3">
<p>
To paste a buffer into the current schematic:
</p>
<ol>
<li class="level1"><div class="li"> Fill the buffer using the above Copy or Cut.</div>
</li>
<li class="level1"><div class="li"> Go to the new schematic page/window.</div>
</li>
<li class="level1"><div class="li"> Select Buffer/Paste/Paste from buffer #.</div>
</li>
<li class="level1"><div class="li"> Click the first mouse button to pick an anchor point.</div>
</li>
<li class="level1"><div class="li"> Move the mouse to the final spot.</div>
</li>
<li class="level1"><div class="li"> Click the first mouse button again.</div>
</li>
</ol>
</div>
<!-- SECTION [82827-83180] -->
<h2><a name="view" id="view">View</a></h2>
<div class="level2">
</div>
<!-- SECTION [83181-83198] -->
<h3><a name="redraw_vr" id="redraw_vr">Redraw (vr)</a></h3>
<div class="level3">
<p>
<strong>View | Redraw</strong> re-paints the current window.<br/>
This is useful when you have mouse/component/line/text etc... droppings left over from a previous action. It is also useful when you want to update all visual connectivity cues.
</p>
</div>
<!-- SECTION [83199-83449] -->
<h3><a name="pan_x" id="pan_x">Pan (x)</a></h3>
<div class="level3">
<p>
<strong>View | Pan</strong> lets you change the focus of the display.<br/>
To pan the display:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>View | Pan</strong></div>
</li>
<li class="level1"><div class="li"> Click the first mouse button at the new center of the display.</div>
</li>
</ul>
<p>
To pan the display using the shortcut is much simpler, simply place the mouse pointer where you want the display centered and type “x”. The display will jump to the mouse’s location.<br/>
Pan behavior is configurable. The system-gschemrc file defines: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(third-button "popup")</font></pre>
</p>
<p>
If you override the system-gschemrc’s default, of popping up a menu when the third mouse button is clicked, by adding: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(third-button "mousepan")</font></pre>
</p>
<p>
to either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, the third mouse button (i.e., the right mouse button on scroll-wheel mice) will allow you to pan the schematic by holding down the third mouse button and dragging.<br/>
The system-gschemrc file also defines: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(fast-mousepan "enabled")</font></pre>
</p>
<p>
If you override the system-gschemrc’s default by adding: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(fast-mousepan "disabled")</font></pre>
</p>
<p>
to either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, text will be displayed properly when the third mouse button is held down while dragging. The <code>(third-button “mousepan”)</code> setting must also be applied for this to work. Disabling <code>fast-mousepan</code> adversely effects rendering speed while panning on large “complicated” schematics.<br/>
The system-gschemrc file also defines: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(zoom-with-pan "enabled")</font></pre>
</p>
<p>
If you override the system-gschemrc’s default by adding: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(zoom-with-pan "disabled")</font></pre>
</p>
<p>
to either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, whenever you zoom in/out, the zoom will NOT center on the mouse pointer, effectively removing the pan feature of the zoom in/out operations.
</p>
</div>
<!-- SECTION [83450-85246] -->
<h3><a name="zoom_box_w" id="zoom_box_w">Zoom Box (w)</a></h3>
<div class="level3">
<p>
<strong>View | Zoom Box</strong> allows you to draw a box around a part of the <strong>gschem</strong> window and zoom in.<br/>
To use <strong>View | Zoom Box</strong>:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>View | Zoom Box</strong></div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer at one corner of the box you want to draw</div>
</li>
<li class="level1"><div class="li"> Click and hold down the first mouse button</div>
</li>
<li class="level1"><div class="li"> Drag the mouse, drawing the zoom box around the area to which you want to zoom</div>
</li>
<li class="level1"><div class="li"> Release the mouse button and the display will zoom</div>
</li>
</ul>
<p>
To use <strong>View | Zoom Box</strong> by typing the equivalent shortcut (i.e., “<strong>w</strong>“) is more convenient. Simply position the mouse pointer at one corner of the zoom box, then type “<strong>w</strong>“. The zoom box will start immediately using the current mouse location as the first corner of the box.<br/>
<strong>View | Zoom Box</strong> will attempt to zoom to the requested area, but some boxes are not legal and <strong>gschem</strong> will do it’s best to zoom the requested area.
</p>
</div>
<!-- SECTION [85247-86127] -->
<h3><a name="zoom_extents_ve" id="zoom_extents_ve">Zoom Extents (ve)</a></h3>
<div class="level3">
<p>
<strong>View | Extents</strong> will zoom the display to fit all of the placed objects into the current window.<br/>
To view all of the current window’s objects:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>View | Extents</strong></div>
</li>
</ul>
<p>
Typing the <strong>View | Extents</strong> shortcut (i.e., “<strong>ve</strong>“) is particularly convenient for those that have learned to navigate the schematics using the shortcuts.<br/>
</p>
</div>
<!-- SECTION [86128-86494] -->
<h3><a name="zoom_in_z" id="zoom_in_z">Zoom In (z)</a></h3>
<div class="level3">
<p>
<strong>View | Zoom In</strong> zooms the display in. The current center of the window is the center of the new window. This command zooms in by a factor.<br/>
To zoom in:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>View | Zoom In</strong></div>
</li>
</ul>
<p>
The (zoom-with-pan “enabled”) configuration setting in the gschemrc files effects the operation of the zoom in shortcut (i.e., “<strong>z</strong>“). The default system-gschemrc setting for: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(zoom-with-pan "enabled")</font></pre>
</p>
<p>
enables zooming in, using the mouse pointer’s location as the new center of the window. If this changed to: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(zoom-with-pan "disabled")</font></pre>
</p>
<p>
in either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, whenever you zoom in, the zoom will NOT center on the mouse pointer but will center on the current center of the window, effectively removing the pan feature of the zoom in operation.<br/>
To zoom in using the shortcut:
</p>
<ul>
<li class="level1"><div class="li"> If the default (zoom-with-pan “enabled”) is configured in one of the gschemrc files, position the mouse pointer in the window where you want the new center</div>
</li>
<li class="level1"><div class="li"> Type “<strong>z</strong>”</div>
</li>
</ul>
<p>
Typing “<strong>z</strong>” is particularly convenient for those that have learned to navigate the schematics using the shortcuts.
</p>
</div>
<!-- SECTION [86495-87656] -->
<h3><a name="zoom_out_z" id="zoom_out_z">Zoom Out (Z)</a></h3>
<div class="level3">
<p>
<strong>View | Zoom Out</strong> zooms the display out. The current center of the window is the center of the new window. This command zooms out by a factor.<br/>
To zoom out:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>View | Zoom Out</strong></div>
</li>
</ul>
<p>
The (zoom-with-pan “enabled”) configuration setting in the gschemrc files effects the operation of the zoom out shortcut (i.e., “<strong>z</strong>“). The default system-gschemrc setting for: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(zoom-with-pan "enabled")</font></pre>
</p>
<p>
enables zooming out, using the mouse pointer’s location as the new center of the window. If this changed to: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">(zoom-with-pan "disabled")</font></pre>
</p>
<p>
in either your user’s ~/gschemrc file or local ‘pwd’/gschemrc file, whenever you zoom out, the zoom will NOT center on the mouse pointer but will center on the current center of the window, effectively removing the pan feature of the zoom out operation.<br/>
To zoom out using the shortcut:
</p>
<ul>
<li class="level1"><div class="li"> If the default (zoom-with-pan “enabled”) is configured in one of the gschemrc files, position the mouse pointer in the window where you want the new center</div>
</li>
<li class="level1"><div class="li"> Type “<strong>Z</strong>” (i.e., shift-z)</div>
</li>
</ul>
<p>
Typing “<strong>Z</strong>” is particularly convenient for those that have learned to navigate the schematics using the shortcuts.
</p>
</div>
<!-- SECTION [87657-88845] -->
<h3><a name="zoom_full_vf" id="zoom_full_vf">Zoom Full (vf)</a></h3>
<div class="level3">
<p>
<strong>View | Zoom Full</strong> will zoom the display to the maximum possible displayable view.<br/>
</p>
<p>
To view the maximum displayable area:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>View | Zoom Full</strong></div>
</li>
</ul>
<p>
The window contents will immediately change to show the maximum possible displayable view.<br/>
</p>
<p>
To view the maximum displayable area using the keyboard shortcut (i.e., “<strong>vf</strong>“):
</p>
<ul>
<li class="level1"><div class="li"> Type “<strong>vf</strong>”</div>
</li>
</ul>
<p>
The window contents will immediately change to show the maximum possible displayable view.<br/>
</p>
<p>
<strong>View | Zoom Full</strong> is useful if you like to put your working notes outside the titleblock for you schematic, for example. Just remember, these notes would now be considered part of the windows extents, so if you were to <strong>View | Extents</strong>, the display would show the titleblock and your working notes.
</p>
</div>
<!-- SECTION [88846-89624] -->
<h2><a name="page" id="page">Page</a></h2>
<div class="level2">
</div>
<!-- SECTION [89625-89643] -->
<h3><a name="manager..._pm" id="manager..._pm">Manager... (pm)</a></h3>
<div class="level3">
</div>
<!-- SECTION [89644-89671] -->
<h3><a name="next" id="next">Next (>)</a></h3>
<div class="level3">
</div>
<!-- SECTION [89672-89692] -->
<h3><a name="previous" id="previous">Previous (<)</a></h3>
<div class="level3">
</div>
<!-- SECTION [89693-89717] -->
<h3><a name="new_pe" id="new_pe">New (pe)</a></h3>
<div class="level3">
</div>
<!-- SECTION [89718-89738] -->
<h3><a name="revert_pr" id="revert_pr">Revert (pr)</a></h3>
<div class="level3">
</div>
<!-- SECTION [89739-89762] -->
<h3><a name="close_pc" id="close_pc">Close (pc)</a></h3>
<div class="level3">
</div>
<!-- SECTION [89763-89785] -->
<h3><a name="discard_pd" id="discard_pd">Discard (pd)</a></h3>
<div class="level3">
</div>
<!-- SECTION [89786-89810] -->
<h2><a name="add" id="add">Add</a></h2>
<div class="level2">
</div>
<!-- SECTION [89811-89827] -->
<h3><a name="component..._i" id="component..._i">Component... (i)</a></h3>
<div class="level3">
<p>
<strong>Add | Component...</strong> opens a dialog box which lets you place components from the component libraries.<br/>
To place a component:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>Add |Component...</strong></div>
</li>
<li class="level1"><div class="li"> Select a component Library from the left list-box</div>
</li>
<li class="level1"><div class="li"> Select a component from the right list-box</div>
</li>
<li class="level1"><div class="li"> Confirm the symbol is correct by reviewing the image in the Preview window</div>
</li>
<li class="level1"><div class="li"> Move the mouse into the main drawing window (you should see an outline follow the mouse pointer).</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button to anchor the component</div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer, and keep pressing the first mouse button to anchor additional instances of the component</div>
</li>
<li class="level1"><div class="li"> When finished anchoring components, press the last mouse button or the ESC key</div>
</li>
</ul>
<p>
If a component name is already selected, hitting apply and moving the mouse into the main window will allow you to place that component again.<br/>
You can rotate the component before you place it by clicking the middle button. For every button click, the component will be rotate counter-clockwise 90 degrees.<br/>
Care has been taken to give components descriptive names in the libraries, though it is sometimes difficult to determine what the component really represents from its name.<br/>
For example: in the analog library there are four capacitor entries:
</p>
<ul>
<li class="level1"><div class="li"> capacitor-1.sym</div>
</li>
<li class="level1"><div class="li"> capacitor-2.sym</div>
</li>
<li class="level1"><div class="li"> capacitor-3.sym</div>
</li>
<li class="level1"><div class="li"> capacitor-4.sym</div>
</li>
</ul>
<p>
It helps to preview the symbol in the “Select Component” dialog box before selecting and placing the symbol.
</p>
</div>
<!-- SECTION [89828-91304] -->
<h3><a name="net_n" id="net_n">Net (n)</a></h3>
<div class="level3">
<p>
<strong>Net</strong> draws a net segment.<br/>
A net is typically a contiguous set of line segments between two pins, though it is possible to draw nets between a pin and a point on another net, or between two nets.<br/>
For example, the following diagram shows 3 net segments:
</p>
<ul>
<li class="level1"><div class="li"> Between R1 and R2</div>
</li>
<li class="level1"><div class="li"> Between R3 and R4</div>
</li>
<li class="level1"><div class="li"> Between the two nets</div>
</li>
</ul>
<table class="inline">
<tr>
<td> <a href="_detail/geda_nets.html" class="media" title="geda:nets.jpg"><img src="_media/geda_nets.jpg" class="media" title="nets.jpg" alt="nets.jpg" /></a> </td>
</tr>
</table>
<br />
<p>
Note the small red segment at the end of the resistor’s pins. All pins in <strong>gschem</strong> have this red segment. This is the connectivity cue for the pin. It is sometimes difficult to “grab” this attachment point when drawing nets, you may need to zoom in on the pin. To zoom in, press the “z” key. To zoom out, press the “Z” (i.e., shift-z) key.<br/>
To begin drawing a net using the menu:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>Add | Net</strong></div>
</li>
<li class="level1"><div class="li"> Zoom in on the component where the net is to start, so that you can easily grab the pin’s attachment point</div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer over the pin’s connectivity cue</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button to start the net</div>
</li>
</ul>
<p>
To begin drawing the net using the shortcut:
</p>
<ul>
<li class="level1"><div class="li"> Zoom in on the component where the net is to start, so that you can easily grab the pin’s attachment point</div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer over the pin’s connectivity cue</div>
</li>
<li class="level1"><div class="li"> Press the “n” key</div>
</li>
</ul>
<p>
To continue drawing the net segment(s):
</p>
<ul>
<li class="level1"><div class="li"> Drag the mouse pointer in the direction of the end-point</div>
</li>
<li class="level1"><div class="li"> For any necessary 90º turns, single-click the mouse, and continue dragging the mouse pointer toward the end-point</div>
</li>
<li class="level1"><div class="li"> For any necessary non-orthogonal net segments (e.g., 45º angle), hold down the CONTROL button, single-click the mouse, and continue dragging the mouse pointer to the end-point</div>
</li>
<li class="level1"><div class="li"> When you reach the end-point, press the first mouse button to end the net segment</div>
</li>
<li class="level1"><div class="li"> Another net segment will start at the last end-point</div>
<ul>
<li class="level2"><div class="li"> If this second pin is to be connected to a third pin, continue as above</div>
</li>
<li class="level2"><div class="li"> If this is the end of the connections, press the last mouse button (or ESC) to end the net</div>
</li>
</ul>
</li>
</ul>
<p>
Press the last mouse button or ESC to cancel any net in progress.<br/>
If the net is cancelled you are automatically placed in <strong>Select Mode</strong>. You must pick <strong>Add | Net</strong> again or type the shortcut to add more nets.<br/>
You cannot connect a net segment to the middle of a non-orthogonal net.<br/>
The boxes at the end of the nets are connectivity cues. Red boxes signify a dangling net (not connected to anything).<br/>
Filled circles are midpoint connections/junctions. These cues are drawn automatically and are an indicator of electrical connectivity.<br/>
See <a href="docs_20060124_gschem_ug_electrical_connectivity.html" class="wikilink2" title="docs:20060124:gschem_ug:electrical_connectivity">Electrical Connectivity</a> for more information.
</p>
</div>
<!-- SECTION [91305-93896] -->
<h3><a name="bus_u" id="bus_u">Bus (u)</a></h3>
<div class="level3">
<p>
<strong>Add | Bus</strong> is basically the same as <strong>Add | Net</strong>, except that it draws buses.<br/>
Buses are very new and there are many aspects which are not defined yet, so keep that in mind as you uses buses. More to be added here eventually.
</p>
</div>
<!-- SECTION [93897-94146] -->
<h3><a name="attribute..._aa" id="attribute..._aa">Attribute... (aa)</a></h3>
<div class="level3">
<p>
<strong>Add | Attribute...</strong> is appropriate when creating or editing symbols, to add a new attribute.<br/>
<strong>Add | Attribute...</strong> brings up the “Single Attribute Editor” dialog box. This dialog box is ONLY used to add attributes. It does not display or manipulate already placed attributes.<br/>
An attribute is nothing more than a text item which is in the form <code>name=value</code> (there cannot be any spaces to the left or right of the name,value pair). It can be either attached to an object, or unattached.<br/>
To add an unattached attribute (e.g., “comment”, “documentation”, etc.) to the symbol:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>Add | Attribute...</strong></div>
</li>
<li class="level1"><div class="li"> Select an attribute name off of the pulldown list, or type the attribute name into the name entry</div>
</li>
<li class="level1"><div class="li"> Type in a value for the attribute</div>
</li>
<li class="level1"><div class="li"> Pick any of the attribute options</div>
</li>
<li class="level1"><div class="li"> Click OK, and the attribute will be placed.</div>
</li>
</ul>
<p>
If you want to attach an attribute to an object, then select the desired object first and then <strong>Add | Attribute...</strong> from the pull-down menu. If you click on an object which has attached attributes, the attached attributes should be selected as well.<br/>
If you select <strong>Add | Attribute...</strong> off of the pull down menus then you do not have much control as to where the attribute gets placed (it gets places either at the lower left hand corner of the object extents or at the origin of any selected object). However, if you use the hot key (i.e., “aa”) then the current mouse position is used as the anchor point for the attribute item.<br/>
You cannot place an incomplete attribute (an attribute without a name and value).<br/>
Please see <a href="docs_20060124_gschem_ug_components_symbols_objects_attributes.html" class="wikilink2" title="docs:20060124:gschem_ug:components_symbols_objects_attributes">Components/Symbols/Objects/Attributes</a> for more info on how to use attributes.
</p>
</div>
<!-- SECTION [94147-95859] -->
<h3><a name="text..._at" id="text..._at">Text... (at)</a></h3>
<div class="level3">
<p>
<strong>Add | Text...</strong> displays the “Text Entry...” dialog box. To place text:
</p>
<ul>
<li class="level1"><div class="li"> Select <strong>Options | Text Size...</strong> and select the size for the text</div>
</li>
<li class="level1"><div class="li"> Select <strong>Add | Text...</strong></div>
</li>
<li class="level1"><div class="li"> Type the text in the entry field (multiple lines may be entered by pressing Enter)</div>
</li>
<li class="level1"><div class="li"> Press Apply or type Enter</div>
</li>
<li class="level1"><div class="li"> Move the mouse into the main window (an outline of the text should appear and follow the mouse)</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button to anchor the text</div>
</li>
<li class="level1"><div class="li"> Close the “Text Entry...” dialog box</div>
</li>
</ul>
<p>
If you leave the <strong>Add | Text...</strong> dialog box open you can place the same text item again and again by just clicking Apply (or pressing Enter) and moving the mouse into the main window.<br/>
The following settings in the system-gschemrc file, the user’s ~/gschemrc file, or the local ‘pwd’/gschemrc file control how text is displayed:</p>
<dl>
<dt><span class='term'> text-origin-marker</span></dt>
<dd>Controls if the text origin markers are displayed.</dd>
<dt><span class='term'> text-size</span></dt>
<dd>Sets the default text size.</dd>
<dt><span class='term'> text-caps-style</span></dt>
<dd>Sets the default caps style used for the display of text</dd>
<dt><span class='term'> output-text</span></dt>
<dd>Controls how text is rendered to postscript</dd>
</dl>
<p>Text which is placed will be automatically capitalized. Please see the Resource file section below on how to control this behavior.<br/>
To cancel a text place press the last mouse button or the ESC key.<br/>
If you create text in the form name=value, then you are creating attributes. gEDA allows for general attributes to be free floating (or unattached). It is a good idea to change the color of these floating attributes to the current attribute color (which is also called the attached attribute color) to signify that this text item is an attribute.<br/>
You can rotate the text before you place it by clicking the middle button. For every button click, the text will be rotate 90 degrees.<br/>
</p>
</div>
<!-- SECTION [95860-97651] -->
<h3><a name="line_l" id="line_l">Line (l)</a></h3>
<div class="level3">
<p>
<strong>Add | Line</strong> draws a single line segment.<br/>
To draw a line:
</p>
<ul>
<li class="level1"><div class="li"> If you want to snap the line to the grid, set the grid spacing by selecting <strong>Options | Snap Grid Spacing...</strong> and entering the grid spacing, and then selecting <strong>Options | Toggle Snap On/Off</strong> until you don’t see “Snap Off” on the status-bar</div>
</li>
<li class="level1"><div class="li"> Select <strong>Add | Line</strong></div>
</li>
<li class="level1"><div class="li"> If you want to constrain the line to 90º movements, hold the CONTROL key down while moving the mouse</div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer to the start-point</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button</div>
</li>
<li class="level1"><div class="li"> Move the mouse in the intended direction</div>
</li>
<li class="level1"><div class="li"> When positioned at the end-point, press the first mouse button</div>
</li>
<li class="level1"><div class="li"> Continue placing lines, until you either press the second mouse button or type the Escape key</div>
</li>
</ul>
<p>
<strong>Add | Line</strong> draws a line in the same fashion as drawing nets with the following exceptions:
</p>
<ul>
<li class="level1"><div class="li"> A line has no electrical significance</div>
</li>
<li class="level1"><div class="li"> Only a single line segment can be drawn</div>
</li>
<li class="level1"><div class="li"> You keep drawing lines as long as you are in line <strong>Line Mode</strong>.</div>
</li>
</ul>
<p>
To cancel a line in progress, press the last mouse button or type the ESC key.
</p>
</div>
<!-- SECTION [97652-98738] -->
<h3><a name="box_b" id="box_b">Box (b)</a></h3>
<div class="level3">
<p>
<strong>Add | Box</strong> draws a box. To draw a box:
</p>
<ul>
<li class="level1"><div class="li"> If you want to snap the box to the grid, set the grid spacing by selecting <strong>Options | Snap Grid Spacing...</strong> and entering the grid spacing, and then selecting <strong>Options | Toggle Snap On/Off</strong> until you donâ??t see â??Snap Offâ?? on the status-bar</div>
</li>
<li class="level1"><div class="li"> Select <strong>Add | Box</strong></div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer to the start-point</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button</div>
</li>
<li class="level1"><div class="li"> Move the mouse in the intended direction</div>
</li>
<li class="level1"><div class="li"> When positioned at the end-point, press the first mouse button again</div>
</li>
<li class="level1"><div class="li"> Continue placing boxes, until you either press the second mouse button or type the ESC key</div>
</li>
</ul>
<p>
To cancel a box in progress, press the last mouse button or type the ESC key.<br/>
A box has no electrical significance.
</p>
</div>
<!-- SECTION [98739-99491] -->
<h3><a name="circle_ai" id="circle_ai">Circle (ai)</a></h3>
<div class="level3">
<p>
<strong>Add | Circle</strong> creates a circle.<br/>
To draw a circle:
</p>
<ul>
<li class="level1"><div class="li"> If you want to snap the box to the grid, set the grid spacing by selecting <strong>Options | Snap Grid Spacing...</strong> and entering the grid spacing, and then selecting <strong>Options | Toggle Snap On/Off</strong> until you donâ??t see â??Snap Offâ?? on the status-bar</div>
</li>
<li class="level1"><div class="li"> Select <strong>Add | Circle</strong></div>
</li>
<li class="level1"><div class="li"> Place the mouse pointer at the center of the circle</div>
</li>
<li class="level1"><div class="li"> Press the first button</div>
</li>
<li class="level1"><div class="li"> Move the mouse to see an outline of the circle</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button to finish the circle</div>
</li>
<li class="level1"><div class="li"> Continue placing circles, until you either press the second mouse button or type the ESC key</div>
</li>
</ul>
<p>
To draw a circle (typing the shortcut), same as above except that you position the mouse pointer to the center-point of the circle before you type the shortcut.<br/>
To cancel a circle in progress, press the last mouse button or the ESC key.<br/>
</p>
</div>
<!-- SECTION [99492-100376] -->
<h3><a name="arc_ar" id="arc_ar">Arc (ar)</a></h3>
<div class="level3">
<p>
<strong>Add | Arc</strong> draws an arc. To draw an arc:
</p>
<ul>
<li class="level1"><div class="li"> If you want to snap the box to the grid, set the grid spacing by selecting <strong>Options | Snap Grid Spacing...</strong> and entering the grid spacing, and then selecting <strong>Options | Toggle Snap On/Off</strong> until you donâ??t see â??Snap Offâ?? on the status-bar</div>
</li>
<li class="level1"><div class="li"> Select <strong>Add | Arc</strong></div>
</li>
<li class="level1"><div class="li"> Place the mouse pointer at the center-point for the arc</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button</div>
</li>
<li class="level1"><div class="li"> Move the mouse to the right, to define the radius of the arc</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button again</div>
</li>
<li class="level1"><div class="li"> Enter the Start Angle (in degrees) – 0º is the “x” axis</div>
</li>
<li class="level1"><div class="li"> Enter the Degrees of Sweep (for counter-clockwise sweep)</div>
</li>
<li class="level1"><div class="li"> Press OK</div>
</li>
<li class="level1"><div class="li"> Continue placing arcs, until you either press the second mouse button or type the ESC key</div>
</li>
</ul>
<p>
The Start Angle can be positive or negative. The degrees are specified using the standard Cartesian coordinate system. The degrees of sweep can be positive or negative.<br/>
To cancel an arc in progress (while rubberband the radius), press the last mouse button or the ESC key or press the Cancel button in the arc dialog box.
</p>
</div>
<!-- SECTION [100377-101469] -->
<h3><a name="pin_ap" id="pin_ap">Pin (ap)</a></h3>
<div class="level3">
<p>
<strong>Add | Pin</strong> adds a pin.<br/>
Though you can <strong>Add | Pin</strong> while entering a schematic, it only makes sense to create pins while creating or editing symbol files.<br/>
To draw a pin:
</p>
<ul>
<li class="level1"><div class="li"> Set the grid spacing by selecting <strong>Options | Snap Grid Spacing...</strong> and entering the grid spacing, and then selecting <strong>Options | Toggle Snap On/Off</strong> until you donâ??t see â??Snap Offâ?? on the status-bar. The <a href="http://www.geda.seul.org/docs/current/symbols/symbols.pdf" class="urlextern" title="http://www.geda.seul.org/docs/current/symbols/symbols.pdf" rel="nofollow">gEDA/gaf Symbol Creation Document</a> specifies grid settings for pin placement in gEDA/gaf compliant symbols files.</div>
</li>
<li class="level1"><div class="li"> Select <strong>Add | Pin</strong></div>
</li>
<li class="level1"><div class="li"> Pins are constrained to 90º movements</div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer to the start-point</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button</div>
</li>
<li class="level1"><div class="li"> Move the mouse in the intended direction. The <a href="http://www.geda.seul.org/docs/current/symbols/symbols.pdf" class="urlextern" title="http://www.geda.seul.org/docs/current/symbols/symbols.pdf" rel="nofollow">gEDA/gaf Symbol Creation Document</a> specifies the length of pins in gEDA/gaf compliant symbol files.</div>
</li>
<li class="level1"><div class="li"> When positioned at the end-point, press the first mouse button</div>
</li>
<li class="level1"><div class="li"> Continue placing pins, until you either press the second mouse button or type the Escape key</div>
</li>
</ul>
<p>
To cancel a pin in progress, press the last mouse button or the ESC key.
</p>
</div>
<!-- SECTION [101470-102657] -->
<h3><a name="picture..._ag" id="picture..._ag">Picture... (ag)</a></h3>
<div class="level3">
<p>
<strong>Add | Picture</strong> places a graphic in the schematic. To draw a picture:
</p>
<ul>
<li class="level1"><div class="li"> If you want to snap the picture to the grid, set the grid spacing by selecting <strong>Options | Snap Grid Spacing...</strong> and entering the grid spacing, and then selecting <strong>Options | Toggle Snap On/Off</strong> until you donâ??t see â??Snap Offâ?? on the status-bar</div>
</li>
<li class="level1"><div class="li"> Select <strong>Add | Picture</strong></div>
</li>
<li class="level1"><div class="li"> Select the graphic file from the “Please select a picture file” dialog box</div>
</li>
<li class="level1"><div class="li"> Press OK</div>
</li>
<li class="level1"><div class="li"> Position the mouse pointer to the start-point</div>
</li>
<li class="level1"><div class="li"> Press the first mouse button</div>
</li>
<li class="level1"><div class="li"> Move the mouse in the intended direction. The outline of the picture will appear, retaining the aspect ratio of the original picture.</div>
</li>
<li class="level1"><div class="li"> When positioned at the end-point, press the first mouse button again.</div>
</li>
<li class="level1"><div class="li"> Continue placing pictures, until you either press the second mouse button or type the ESC key</div>
</li>
</ul>
<p>
To cancel a picture in progress, press the last mouse button or type the ESC key.<br/>
A picture has no electrical significance.
</p>
</div>
<!-- SECTION [102658-103653] -->
<h2><a name="hierarchy" id="hierarchy">Hierarchy</a></h2>
<div class="level2">
</div>
<!-- SECTION [103654-103676] -->
<h3><a name="down_schematic_hd" id="down_schematic_hd">Down Schematic (Hd)</a></h3>
<div class="level3">
<p>
<strong>Hierarchy | Down Schematic</strong> shifts the focus from the current schematic to a sub-schematic.<br/>
Go down into a symbol, opening up any underlying schematics. Basically this will open up an underlying schematic of the selected component if it exists in the source library search path. See the Resource File section on how to define this path.<br/>
There are currently two ways of specifying that a symbol has an underlying schematic or schematics:
</p>
<ol>
<li class="level1"><div class="li"> The underlying schematic must have the same name as the symbol but have a .sch extension and must follow the _# suffix naming convention. See the Files section below on this convention.</div>
</li>
<li class="level1"><div class="li"> Attach an attribute to the symbol called source=filename.sch filename.sch is not a path to the symbol, but rather the basename (last file in the path specifier) of the symbol path. The underlying schematic will still be searched in the source-library path. You can specify multiple source= attributes. The underlying schematics will be opened in the order that the source= attribute is found.</div>
</li>
</ol>
<p>
If there multiple underlying schematics, they will be loaded. Movement between the schematic pages is restricted (to the same level of the same set of underlying schematics) unless the rc keyword enforce-hierarchy is modified to allow for a freer hierarchy traversal mode. See the Resource File section for more info.<br/>
It is also recommend that you maintain unique names for the various levels (when using the source= attribute) to avoid possible confusion. The hierarchy mechanisms are fairly new so expect some odd behavior (and please report it)
</p>
</div>
<!-- SECTION [103677-105289] -->
<h3><a name="down_symbol_hs" id="down_symbol_hs">Down Symbol (Hs)</a></h3>
<div class="level3">
<p>
This option will open up the symbol of the selected component.<br/>
Once the symbol is open, the user can edit it and save it.<br/>
At this time, the toplevel schematic will not see the symbol change unless the toplevel schematic is reloaded or File/Revert is executed. This will be fixed eventually.
</p>
</div>
<!-- SECTION [105290-105612] -->
<h3><a name="up_hu" id="up_hu">Up (Hu)</a></h3>
<div class="level3">
<p>
This option will move up the hierarchy (if there are pages above the currently displayed page).
</p>
</div>
<!-- SECTION [105613-105727] -->
<h3><a name="documentation_ho" id="documentation_ho">Documentation (Ho)</a></h3>
<div class="level3">
<p>
Open any documentation available for the selected symbol/component.<br/>
The job is handed over to “gschemdoc”, which makes a best-effort attempt of finding relevant documentation.<br/>
The documention would normally be in <acronym title="Portable Document Format">PDF</acronym>, <acronym title="HyperText Markup Language">HTML</acronym>, text or image format, but gschemdoc tries to be as transparent as possible on this account.<br/>
First and foremost, the attribute “documentation=” is assumed to point to the documentation. This attribute should either be the filename (basename) of the document, or it should be a complete <acronym title="Uniform Resource Locator">URL</acronym>.<br/>
If it is a filename, and the file is found locally (in /usr/share/gEDA/documentation or otherwise), the relevant viewer will be initiated. Otherwise, a Google search for the document will be initiated.<br/>
If there is no documentation attribute, the attributes “device” and possibly “value” will be consulted in much the same way as for “documentation”. File searches will be made in forms of filenames like “device-value.pdf” and “device.pdf”.<br/>
Failing that, the file name for the symbol itself will be used as basis for the search.
</p>
</div>
<!-- SECTION [105728-106812] -->
<h2><a name="attributes1" id="attributes1">Attributes</a></h2>
<div class="level2">
</div>
<!-- SECTION [106813-106836] -->
<h3><a name="attach_ta" id="attach_ta">Attach (ta)</a></h3>
<div class="level3">
<p>
The Attach command allows you to take a text item (in the proper form; <code>name=value</code>) and attach it to another object.<br/>
To use Attributes/Attach:
</p>
<ol>
<li class="level1"><div class="li"> Select the object which will receive the attributes</div>
</li>
<li class="level1"><div class="li"> Select the text object(s) which will be attached to the above object</div>
</li>
<li class="level1"><div class="li"> Pick or type the shortcut for Attributes/Attach</div>
</li>
</ol>
<p>
The order of the sequence of selecting the object and then the text items is important; <strong>gschem</strong> will not allow you to select the text items first and then the object. After going through the above sequence the text item will turn yellow (or the current attached attribute color) signifying that the text item is an attached attribute.<br/>
You cannot attach a single attribute to several different objects. You cannot attach non-text items as attributes.
</p>
</div>
<!-- SECTION [106837-107644] -->
<h3><a name="detach_td" id="detach_td">Detach (td)</a></h3>
<div class="level3">
<p>
Detach allows you to deassociate attributes from objects.<br/>
To deselect an object of all attributes:
</p>
<ol>
<li class="level1"><div class="li"> Select the object of interest</div>
</li>
<li class="level1"><div class="li"> Pick or type the shortcut for Attributes/Detach</div>
</li>
</ol>
<p>
All the attached attributes (even if they are not selected) will be detached from the object. This behavior is probably broken and will eventually be fixed (so that only selected attributes are detached).<br/>
When you detach attributes then they turn red (or the current detached attribute color). This color changes allows you to spot text which was an attribute and is now dangling (unattached).
</p>
</div>
<!-- SECTION [107645-108251] -->
<h3><a name="show_value_tv" id="show_value_tv">Show Value (tv)</a></h3>
<div class="level3">
<p>
These operations allow you to control which part of the attribute string is visible. Usually you are just interested in seeing the <code>value</code> of the attribute, but there are circumstances where seeing the <code>name</code> and <code>value</code> (or maybe just the <code>name</code>) would be useful.<br/>
To use the options:
</p>
<ol>
<li class="level1"><div class="li"> Select the attribute(s) of interest</div>
</li>
<li class="level1"><div class="li"> Pick or type the shortcut for Attributes/Show *</div>
</li>
</ol>
<p>
The text item(s) should immediately change.<br/>
These operations only work on text items which are in the form <code>name=value</code>
</p>
</div>
<!-- SECTION [108252-108790] -->
<h3><a name="show_name_tn" id="show_name_tn">Show Name (tn)</a></h3>
<div class="level3">
<p>
These operations allow you to control which part of the attribute string is visible. Usually you are just interested in seeing the <code>value</code> of the attribute, but there are circumstances where seeing the <code>name</code> and <code>value</code> (or maybe just the <code>name</code>) would be useful.<br/>
To use the options:
</p>
<ol>
<li class="level1"><div class="li"> Select the attribute(s) of interest</div>
</li>
<li class="level1"><div class="li"> Pick or type the shortcut for Attributes/Show *</div>
</li>
</ol>
<p>
The text item(s) should immediately change.<br/>
These operations only work on text items which are in the form <code>name=value</code>
</p>
</div>
<!-- SECTION [108791-109328] -->
<h3><a name="show_both_tb" id="show_both_tb">Show Both (tb)</a></h3>
<div class="level3">
<p>
These operations allow you to control which part of the attribute string is visible. Usually you are just interested in seeing the <code>value</code> of the attribute, but there are circumstances where seeing the <code>name</code> and <code>value</code> (or maybe just the <code>name</code>) would be useful.<br/>
To use the options:
</p>
<ol>
<li class="level1"><div class="li"> Select the attribute(s) of interest</div>
</li>
<li class="level1"><div class="li"> Pick or type the shortcut for Attributes/Show *</div>
</li>
</ol>
<p>
The text item(s) should immediately change.<br/>
These operations only work on text items which are in the form <code>name=value</code>
</p>
</div>
<!-- SECTION [109329-109866] -->
<h3><a name="toggle_visibility_tt" id="toggle_visibility_tt">Toggle Visibility (tt)</a></h3>
<div class="level3">
<p>
This operation allows you to toggle the visibility of attributes.<br/>
To use this option:
</p>
<ol>
<li class="level1"><div class="li"> Select the text item(s) of interest</div>
</li>
<li class="level1"><div class="li"> Pick or type the shortcut for Attributes/Toggle Vis</div>
</li>
</ol>
<p>
The text item(s) should change their visibility immediately.<br/>
If you make an attached attribute invisible, then you can simply select the parent object and select Toggle Vis and the attribute will be come visible (likewise any visible attributes attached to that object will become invisible).<br/>
If you make a free floating (unattached) attribute invisible, then the only way to make it visible (and all other invisible attributes) is to use the Edit/Show Hidden Text option.
</p>
</div>
<!-- SECTION [109867-110562] -->
<h3><a name="find_specific_text..._t_shift-f" id="find_specific_text..._t_shift-f">Find Specific Text... (t shift-f)</a></h3>
<div class="level3">
</div>
<!-- SECTION [110563-110607] -->
<h3><a name="hide_specific_text..._th" id="hide_specific_text..._th">Hide Specific Text... (th)</a></h3>
<div class="level3">
</div>
<!-- SECTION [110608-110645] -->
<h3><a name="show_specific_text..._t_shift-h" id="show_specific_text..._t_shift-h">Show Specific Text... (t shift-h)</a></h3>
<div class="level3">
</div>
<!-- SECTION [110646-110689] -->
<h3><a name="autonumber_text..._tu" id="autonumber_text..._tu">Autonumber Text... (tu)</a></h3>
<div class="level3">
</div>
<!-- SECTION [110690-110724] -->
<h2><a name="options" id="options">Options</a></h2>
<div class="level2">
</div>
<!-- SECTION [110725-110745] -->
<h3><a name="text_size..._ot" id="text_size..._ot">Text Size... (ot)</a></h3>
<div class="level3">
<p>
<strong>Options | Text Size...</strong> pops up a dialog box which allows you to specify the text size of all text (including attributes placed with the Add/Attribute... dialog box).<br/>
The text size is in points (1/72”). The default text size is 10 point text. The smallest text size is 2 points.
</p>
</div>
<!-- SECTION [110746-111058] -->
<h3><a name="toggle_grid_on_off_og" id="toggle_grid_on_off_og">Toggle Grid On/Off (og)</a></h3>
<div class="level3">
<p>
<strong>Options | Toggle Grid On/Off</strong> toggles the visible grid.
</p>
</div>
<!-- SECTION [111059-111152] -->
<h3><a name="toggle_snap_on_off_os" id="toggle_snap_on_off_os">Toggle Snap On/Off (os)</a></h3>
<div class="level3">
<p>
<strong>Options | Toggle Snap On/Off</strong> toggles the snap. Be very careful using this. Connections between pins and nets (and nets to nets) depends on being exactly connected. Turning of the grid will almost guarantee that nets/pins do not connect.<br/>
Before you translate a symbol using Edit/Symbol Translate, make sure the snap is on.<br/>
When snap mode is off, the text “Snap Off” will appear in the lower, righthand corner.
</p>
</div>
<!-- SECTION [111153-111604] -->
<h3><a name="snap_grid_spacing..._os" id="snap_grid_spacing..._os">Snap Grid Spacing... (oS)</a></h3>
<div class="level3">
<p>
<strong>Options | Snap Grid Spacing...</strong> brings up a dialog box which allows you to change the snap grid spacing (not the grid spacing). The units for this spacing are mils.<br/>
Before you translate a symbol using Edit/Symbol Translate, make sure this spacing is set to 100.
</p>
</div>
<!-- SECTION [111605-111908] -->
<h3><a name="toggle_outline_box_oa" id="toggle_outline_box_oa">Toggle Outline/Box (oa)</a></h3>
<div class="level3">
<p>
<strong>Options | Toggle Outline/Box</strong> toggles between drawing the outline of the current selection or just drawing a box when doing moves/copies/component and text places. The outline mode looks better, but tends to be significantly slower than using the box (bounding box) mode.
</p>
</div>
<!-- SECTION [111909-112218] -->
<h3><a name="toggle_net_rubberband_or" id="toggle_net_rubberband_or">Toggle Net/Rubberband (or)</a></h3>
<div class="level3">
<p>
<strong>Options | Toggle Net/Rubberband</strong> .....????
</p>
</div>
<!-- SECTION [112219-112302] -->
<h3><a name="show_log_window_ol" id="show_log_window_ol">Show Log Window (ol)</a></h3>
<div class="level3">
<p>
<strong>Options | Show Log Window</strong> displays the log window if it has been closed or disabled from being displayed when you start up <strong>gschem</strong>.
</p>
</div>
<!-- SECTION [112303-112473] -->
<h3><a name="show_coord_window..._oc" id="show_coord_window..._oc">Show Coord Window... (oc)</a></h3>
<div class="level3">
<p>
<strong>Options | Show Coord Window...</strong> displays a pop-up window that displays the coordinates of the mouse pointer on the schematic. Useful for accurately placing objects.
</p>
</div>
<!-- SECTION [112474-112678] -->
<h2><a name="help" id="help">Help</a></h2>
<div class="level2">
</div>
<!-- SECTION [112679-112696] -->
<h3><a name="about..._ha" id="about..._ha">About... (ha)</a></h3>
<div class="level3">
<p>
Every <acronym title="Graphical User Interface">GUI</acronym> application needs an <strong>Help | About...</strong> feature, to display:
</p>
<ul>
<li class="level1"><div class="li"> The application’s name.</div>
</li>
<li class="level1"><div class="li"> The version of the software.</div>
</li>
<li class="level1"><div class="li"> The author’s name(s) and how to contact.</div>
</li>
</ul>
</div>
<!-- SECTION [112697-112899] -->
<h3><a name="manual..._hm" id="manual..._hm">Manual... (hm)</a></h3>
<div class="level3">
<p>
<strong>Help | Manual...</strong> brings up the “gEDA/gaf Documention” web-page installed on this computer. Very useful for accessing the various documentation available for the gEDA/gaf applications.
</p>
</div>
<!-- SECTION [112900-113113] -->
<h3><a name="hotkeys..._hh" id="hotkeys..._hh">Hotkeys... (hh)</a></h3>
<div class="level3">
<p>
<strong>Help | Hotkeys...</strong> lists the current hotkeys (a.k.a., shortcuts, a.k.a., keyboard accellerators).
</p>
</div>
<!-- SECTION [113114-113241] -->
<h3><a name="component..._ho" id="component..._ho">Component... (Ho)</a></h3>
<div class="level3">
<p>
If you select a component on the schematic, and select <strong>Help | Component...</strong>, <strong>gschem</strong> uses the gschemdoc script to do its best job finding some documentation appropriate for the component:
</p>
<ul>
<li class="level1"><div class="li"> If the component’s symbol included the <code>documentation=documentation_locator</code> attribute, this <acronym title="Uniform Resource Identifier">URI</acronym> is used to retreive the documentation. If the full <acronym title="Uniform Resource Identifier">URI</acronym> is given, the <acronym title="Uniform Resource Identifier">URI</acronym> on the internet is retrieved. If the <acronym title="Uniform Resource Identifier">URI</acronym> is not fully qualified, it is considered to be local to this computer, and is searched for and displayed.</div>
</li>
<li class="level1"><div class="li"> If the component’s symbol does not include the <code>documentation=documentation_locator</code> attribute, a Google search is performed for <acronym title="Portable Document Format">PDF</acronym> documents, based on the <code>device=</code> attribute, the <code>value=</code> attribute, and the symbol basename.</div>
</li>
</ul>
</div>
<!-- SECTION [113242-114024] -->
<h1><a name="appendix_a_--_heavy_vs_light_symbol_libraries" id="appendix_a_--_heavy_vs_light_symbol_libraries">Appendix A -- Heavy vs Light Symbol Libraries</a></h1>
<div class="level1">
<p>
A short discussion of Light Symbol Libraries as the default for <strong>gschem</strong>, and the option to build your own Heavy Symbol Libraries.
</p>
</div>
<!-- SECTION [114025-114218] -->
<h1><a name="appendix_b_--_printing_schematics_and_symbols" id="appendix_b_--_printing_schematics_and_symbols">Appendix B -- Printing Schematics and Symbols</a></h1>
<div class="level1">
<p>
To be supplied...
</p>
</div>
<!-- SECTION [114219-114297] -->
<h1><a name="appendix_c_--_writing_guile_scripts" id="appendix_c_--_writing_guile_scripts">Appendix C -- Writing guile Scripts</a></h1>
<div class="level1">
<p>
To be supplied...
</p>
</div>
<!-- SECTION [114298-114366] -->
<h1><a name="appendix_d_--_i_want_to_build_a_printed_circuit_board" id="appendix_d_--_i_want_to_build_a_printed_circuit_board">Appendix D -- I Want To Build A Printed Circuit Board</a></h1>
<div class="level1">
<p>
<strong>gschem</strong> is used for two primary design workflows:
</p>
<ul>
<li class="level1"><div class="li"> Circuit design intended for production of Printed Circuit Boards (PCBs).</div>
</li>
<li class="level1"><div class="li"> Circuit design intended for simulation.</div>
</li>
</ul>
<p>
The following guidelines will assist you in developing quality designs intended for use by applications that support the creation of Printed Circuit Boards:
</p>
<ul>
<li class="level1"><div class="li"> <span class="hilited">To be supplied...</span></div>
</li>
</ul>
<p>
The following on-line tutorials are an excellent method for the beginner to learn the gEDA Tools Suite design workflow resulting in a PCB:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/gschem-warmup.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/gschem-warmup.html" rel="nofollow">Bill Wilson's gschem warmup</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://www.geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">Bill Wilson's gsch2pcb tutorial</a></div>
</li>
</ul>
</div>
<!-- SECTION [114367-115156] -->
<h1><a name="appendix_e_--_i_want_to_simulate_my_design" id="appendix_e_--_i_want_to_simulate_my_design">Appendix E -- I Want To Simulate My Design</a></h1>
<div class="level1">
<p>
<strong>gschem</strong> is used for two primary design workflows:
</p>
<ul>
<li class="level1"><div class="li"> Circuit design intended for production of Printed Circuit Boards.</div>
</li>
<li class="level1"><div class="li"> Circuit design intended for simulation.</div>
</li>
</ul>
<p>
The following guidelines will assist you in developing quality designs intended for simulation:
</p>
<ul>
<li class="level1"><div class="li"> Discuss attributes appropriate for a SPICE model, and how these differ from attributes appropriate for a PCB.</div>
</li>
<li class="level1"><div class="li"> <span class="hilited">To be supplied...</span></div>
</li>
</ul>
<p>
The following on-line tutorials are an excellent method for the beginner to learn the gEDA Tools Suite design workflow resulting in a SPICE simulation:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://www.brorson.com/gEDA/SPICE/t1.html" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/t1.html" rel="nofollow">"Circuit simulation using gEDA and SPICE -- HOWTO" by Stuart Brorson</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www-mdp.eng.cam.ac.uk/urop05/files/gedalib/starting_gEDA.pdf" class="urlextern" title="http://www-mdp.eng.cam.ac.uk/urop05/files/gedalib/starting_gEDA.pdf" rel="nofollow">Starting with gEDA at the Cambridge University Engineering Department</a></div>
</li>
</ul>
</div>
<!-- SECTION [115157-116036] -->
<h1><a name="appendix_f_--_change_gschemdoc_user-defined_preferences" id="appendix_f_--_change_gschemdoc_user-defined_preferences">Appendix F -- Change gschemdoc User-Defined Preferences</a></h1>
<div class="level1">
<p>
As installed, the <strong>gschemdoc</strong> utility script is used by <strong>gschem</strong> to:
</p>
<ul>
<li class="level1"><div class="li"> Display the “gEDA/gaf Documentation” (i.e., <strong>Help | Manual...</strong>)</div>
</li>
<li class="level1"><div class="li"> Display component documentation (i.e., <strong>Help | Component...</strong>)</div>
</li>
</ul>
<p>
The list of application launchers that <strong>gschemdoc</strong> uses are defined in the {binary-install-path}/bin/gschemdoc file: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">#
# these may be changed to suit local preferences
#
CANDIDATE_BROWSER="galeon mozilla phoenix netscape netscape-navigator opera firefox konqueror"
CANDIDATE_PDFREADER="xpdf acroread ggv gv"
CANDIDATE_LOCATE="slocate locate"</font></pre>
</p>
<p>
To select a different application launcher, simply edit the {binary-install-path}/bin/gschemdoc file, find the above lines, and move your favorite application to the beginning of the list. For example, to use <strong>firefox</strong> as your preferred browser, move it to the beginning of the <strong>CANDIDATE_BROWSER=</strong> list, to use <strong>acroread</strong> (Adobe’s Acrobat Reader) as your preferred <acronym title="Portable Document Format">PDF</acronym> reader, move it to the beginning of the <strong>CANDIDATE_PDFREADER=</strong> list, and to use <strong>locate</strong> as your preferred filesystem search utility, move it to the beginning of the <strong>CANDIDATE_LOCATE=</strong> list.
</p>
</div>
<!-- SECTION [116037-117253] -->
<h1><a name="appendix_g_--_breaking_a_large_symbol_into_smaller_symbols" id="appendix_g_--_breaking_a_large_symbol_into_smaller_symbols">Appendix G -- Breaking a Large Symbol Into Smaller Symbols</a></h1>
<div class="level1">
<p>
To be supplied...
</p>
</div>
<!-- SECTION [117254-117345] -->
<h1><a name="appendix_h_--_definition_of_terms" id="appendix_h_--_definition_of_terms">Appendix H -- Definition of Terms</a></h1>
<div class="level1">
<p>
Some terms used in the art of schematic capture:</p>
<dl>
<dt><span class='term'> <strong>attribute</strong></span></dt>
<dd>A text item which is in the form <code>name=value</code>. It can be either unattached or attached.</dd>
<dt><span class='term'> <strong>buffer</strong></span></dt>
<dd>...</dd>
<dt><span class='term'> <strong>component</strong></span></dt>
<dd>Also know as <strong>part</strong>. The equivalent of an [electronics] device, as one may place on a printed circuit board. Components are instances of a <strong>symbol</strong> placed on a schematic.</dd>
<dt><span class='term'> <strong>device</strong></span></dt>
<dd>Also known as “package”. The equivalent of an [electronics] device, as one may place on a printed circuit board.</dd>
<dt><span class='term'> <strong>dialog box</strong></span></dt>
<dd>...</dd>
<dt><span class='term'> <strong>embedded component</strong></span></dt>
<dd>A component whose definition is saved as part of the schematic’s file.</dd>
<dt><span class='term'> <strong>footprint</strong></span></dt>
<dd>Also known as a <strong>land pattern</strong>. The surface space occupied by a <strong>component</strong>/<strong>package</strong>/<strong>part</strong>.</dd>
<dt><span class='term'> <strong>gEDA/gaf</strong></span></dt>
<dd><strong>gschem</strong> is a component of the gEDA/gaf set of tools, which tend to integrate together in the development and maintenance of schematics and symbols. The term “gaf” stands for “<em class="u">g</em>EDA <em class="u">a</em>nd <em class="u">f</em>riends”).</dd>
<dt><span class='term'> <strong>grip</strong></span></dt>
<dd>...</dd>
<dt><span class='term'> <strong>guile</strong></span></dt>
<dd><a href="http://www.gnu.org/software/guile/" class="urlextern" title="http://www.gnu.org/software/guile/" rel="nofollow">GNU Guile</a> is an interpreter for Scheme, a version of Lisp.</dd>
<dt><span class='term'> <strong>HDL</strong></span></dt>
<dd>Hardware Description Language (e.g., VHDL, Verilog, etc.). Used to simulate or document a device.</dd>
<dt><span class='term'> <strong>hierarchical</strong></span></dt>
<dd>The concept that designs can contain nested levels of schematics, so that all the circuit doesn’t need to be placed on a single sheet.</dd>
<dt><span class='term'> <strong>land pattern</strong></span></dt>
<dd>Also known as a <strong>footprint</strong>. The surface space occupied by a structure or device.</dd>
<dt><span class='term'> <strong>library</strong></span></dt>
<dd>A collection of symbols.</dd>
<dt><span class='term'> <strong>line</strong></span></dt>
<dd>A straight drawing element, connecting two points. On the schematic it has no electrical significance. In a symbol, a line is part of the symbol’s graphic elements.</dd>
<dt><span class='term'> <strong>model</strong></span></dt>
<dd>A description of how a device behaves. Most often this is a SPICE model. The model is defined in <strong>gschem</strong>, but used in subsequent applications such as <strong>ngspice</strong>, <strong>gnucap</strong>, etc.</dd>
<dt><span class='term'> <strong>net</strong></span></dt>
<dd>A net connects two or more pins on a schematic, and is made up of segments. The net’s equivalent is a “wire” or “trace” on the printed circuit board.</dd>
<dt><span class='term'> <strong>object</strong></span></dt>
<dd>A line, circle, pin, net, box, bus, text/attribute, or picture.</dd>
<dt><span class='term'> <strong>package</strong></span></dt>
<dd>Also known as <strong>device</strong>. The equivalent of an [electronics] device, as one may place on a printed circuit board.</dd>
<dt><span class='term'> <strong>page</strong></span></dt>
<dd>Also known as a schematic’s <strong>sheet</strong>.</dd>
<dt><span class='term'> <strong>part</strong></span></dt>
<dd> Also know as <strong>component</strong>. The equivalent of an [electronics] device, as one may place on a printed circuit board.</dd>
<dt><span class='term'> <strong>project</strong></span></dt>
<dd>A collection of schematics, custom symbols, models, documentation, etc.</dd>
<dt><span class='term'> <strong>segment</strong></span></dt>
<dd>Part of a net. A segment has two end-points, or “grips”.</dd>
<dt><span class='term'> <strong>schematic</strong></span></dt>
<dd>A <strong>page</strong>/<strong>sheet</strong> with electronics symbols, text, and drawing elements (i.e., lines, circles, boxes, etc.) representing a diagram of an electrical or mechanical system.</dd>
<dt><span class='term'> <strong>series</strong></span></dt>
<dd>A collection of schematics which share a common basename (e.g., schematic_1.sch, schematic_2.sch, schematic_3.sch, etc.). The series basename ties schematics together.</dd>
<dt><span class='term'> <strong>slotted device</strong></span></dt>
<dd>Also known as a <strong>slotted package</strong>. A physical [electronics] device consisting of multiple identical components (e.g., the 7400 quad NAND device consists of 4 identical NAND gates).</dd>
<dt><span class='term'> <strong>source</strong></span></dt>
<dd>A schematic, HDL code, or model which implements, describes, or documents some aspect of the project.</dd>
<dt><span class='term'> <strong>symbol</strong></span></dt>
<dd>A collection of <strong>objects</strong>. The objects may have <strong>attributes</strong> attatched (i.e., associated) with them. There may also be <strong>attributes</strong> attached (i.e., associated) to the <strong>symbol</strong> itself (i.e., not specifically associated with an object).</dd>
<dt><span class='term'> <strong>sheet</strong></span></dt>
<dd>Also known as a schematic’s <strong>page</strong>.</dd>
<dt><span class='term'> <strong>trace</strong></span></dt>
<dd>The equivalent of a wire on a printed circuit board.</dd>
<dt><span class='term'> <strong>window</strong></span></dt>
<dd>...</dd>
<dt><span class='term'> <strong>workflow</strong></span></dt>
<dd>The process of designing. Usually includes continuous review and re-design, until it works. In the gEDA Tools Suite design workflow, multiple applications are used. One application typically is followed by another. The flow of data collected and how this data effects the design is considered the workflow.</dd>
</dl>
<p>~~DISCUSSION~~
</p>
</div>
<!-- SECTION [117346-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gsymcheck_mp.html
Index: geda_gsymcheck_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gsymcheck_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gsymcheck_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gsymcheck_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gsymcheck_mp?do=export_raw" />
<meta name="date" content="2006-04-20T03:23:20-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="gsymcheck_man-page" id="gsymcheck_man-page">gsymcheck man-page</a></h1>
<div class="level1">
<pre class="code">gsymcheck(1) 20031231 gsymcheck(1)
NAME
gsymcheck - gEDA/gaf Symbol Checker
SYNOPSIS
gnetlist [-h] [-v] [-q] symbol1 [... symbolN]
DESCRIPTION
gsymcheck is a symbol checker for gEDA. Eventually there will be a
list of checks performed on the symbols listed here.
OPTIONS
gsymcheck accepts the following options:
-q Quiet mode on. This mode turns off all warnings/notes/mes-
sages. (optional)
-v Verbose mode 1. This mode will show all error messages
(optional)
-vv Verbose mode 2. This mode will show all error and warning mes-
sages (optional)
-vvv Verbose mode 2. This mode will show all error, warning, and
info messages (optional)
-h Usage summary / gsymcheck help
symbol1 [... symbolN]
At least one symbol file must be specified. If multiple sym-
bols are specified then they are sequentially read in and
checked. It is important that the schematic(s) follow all the
options (ie last).
EXAMPLES
Examples to be listed here eventually
ENVIRONMENT
No environment variables are used.
AUTHOR
Ales Hvezda and many others
SEE ALSO
gschem(1), gnetlist(1)
COPYRIGHT
Copyright © 1999-2004 Ales Hvezda
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version December 31st, 2003 gsymcheck(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_lxt2miner_mp.html
Index: geda_gtkwave_lxt2miner_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_lxt2miner_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_lxt2miner_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_lxt2miner_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_lxt2miner_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:16:37-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="data_mining_of_lxt2_files_lxt2miner" id="data_mining_of_lxt2_files_lxt2miner">Data mining of LXT2 files (lxt2miner)</a></h1>
<div class="level1">
<pre class="code">LXT2MINER(1) Dumpfile Data Mining LXT2MINER(1)
NAME
lxt2miner - Data mining of LXT2 files
SYNTAX
lxt2miner [option]... [LXT2FILE]
DESCRIPTION
Mines LXT2 files for specific data values and generates gtkwave save
files to stdout for future reload.
OPTIONS
-d,--dumpfile <filename>
Specify LXT2 input dumpfile.
-m,--match <filename>
Specifies "bitwise" match data (binary, real, string)
-x,--hex <value>
Specifies hexadecimal match data that will automatically be con-
verted to binary for searches
-n,--namesonly
Indicates that only facnames should be printed in a gtkwave
savefile compatible format. By doing this, the file can be used
to specify which traces are to be imported into gtkwave.
-h,--help
Show help screen.
EXAMPLES
lxt2miner dumpfile.lxt2 --match 20470000 -n
This attempts to match the hex value 20470000 across all facilities and
when the value is encountered, the facname only is printed to stdout in
order to generate a gtkwave compatible save file.
LIMITATIONS
lxt2miner only prints the first time a value is encountered for a spe-
cific net. This is done in order to cut down on the size of output
files and to aid in following data such as addresses through a simula-
tion model.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
vztminer(1) vzt2vcd(1) lxt2vcd(1) vcd2lxt2(1) gtkwave(1)
Anthony Bybell 1.3.64 LXT2MINER(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_lxt2vcd_mp.html
Index: geda_gtkwave_lxt2vcd_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_lxt2vcd_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_lxt2vcd_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_lxt2vcd_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_lxt2vcd_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:15:23-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="coverts_lxt2_files_to_vcd_lxt2vcd" id="coverts_lxt2_files_to_vcd_lxt2vcd">Coverts LXT2 files to VCD (lxt2vcd)</a></h1>
<div class="level1">
<pre class="code">LXT2VCD(1) Filetype Conversion LXT2VCD(1)
NAME
lxt2vcd - Coverts LXT2 files to VCD
SYNTAX
lxt2vcd <filename>
DESCRIPTION
Converts LXT2 files to VCD files on stdout. Note that "regular" LXT2
files will convert to VCD files with monotonically increasing time val-
ues. LXT2 files which are dumped with the "partial" option (to speed
up access in wave viewers) will dump with monotonically increasing time
values per 2k block of nets. This may be fixed in later versions of
lxt2vcd.
EXAMPLES
To run this program the standard way type:
lxt2vcd filename.lxt
The VCD conversion is emitted to stdout.
LIMITATIONS
lxt2vcd does not re-create glitches as these are coalesced together
into one value change during the writing of the LXT2 file.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
vcd2lxt2(1) vcd2lxt(1) gtkwave(1)
Anthony Bybell 1.3.34 LXT2VCD(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_mp.html
Index: geda_gtkwave_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:18:11-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="visualization_tool_for_vcd_lxt_and_vzt_files_gtkwave" id="visualization_tool_for_vcd_lxt_and_vzt_files_gtkwave">Visualization tool for VCD, LXT, and VZT files (gtkwave)</a></h1>
<div class="level1">
<pre class="code">GTKWAVE(1) Simulation Wave Viewer GTKWAVE(1)
NAME
gtkwave - Visualization tool for VCD, LXT, and VZT files
SYNTAX
gtkwave [option]... [DUMPFILE] [SAVEFILE] [RCFILE]
DESCRIPTION
Visualization tool for VCD, LXT, LXT2, and VZT. VCD is an industry
standard simulation dump format. LXT, LXT2, and VZT have been designed
specifically for use with gtkwave. Native dumpers exist in Icarus Ver-
ilog for the LXT formats so conversion with vcd2lxt(1) or vcd2lxt2(1)
is not necessary to take direct advantage of LXT with that simulator.
AET2 files can also be processed provided that libae2rw is available
but this is only of interest to people who use IBM EDA toolsets.
OPTIONS
-n,--nocli <directory name>
Use file requester for dumpfile name
-f,--dump <filename>
Specify dumpfile name.
-r,--rcfile <filename>
Specify override .gtkwaverc filename.
-i,--indirect <filename>
Specify indirect facs file name. The file contains a series of
regular expressions used to limit what signals can be browsed.
Signal names which match any of the regular expressions will be
viewable. Typically, indirect files are used to reduce memory
requirements for extremely large models containing millions of
facilities or to strip out top-level hierarchy clutter from
BugSpray models. This feature is only available with the AET2
loader.
-l,--logfile <filename>
Specify simulation logfile name. Multiple logfiles may be spec-
ified by preceeding each with the command flag. By selecting
the numbers in the text widget, the marker will immediately zoom
to the specific time value.
-d,--defaultskip
If there is not a .gtkwaverc file in the home directory or cur-
rent directory and it is not explicitly specified on the command
line, when this option is enabled, do not use an implicit con-
figuration file and instead default to the old "whitescreen"
behavior.
-s,--start <time>
Specify start time for LXT2/VZT block skip.
-e,--end <time>
Specify end time for LXT2/VZT block skip.
-c,--cpu <numcpus>
Specify number of CPUs available for parallelizable ops (e.g.,
block prefetching on VZT reads).
-v,--vcd
Use stdin as a VCD dumpfile.
-V,--version
Display version banner then exit.
-h,--help
Display help then exit.
-x,--exit
Exit after loading trace (for loader benchmarking).
FILES
~/.gtkwaverc
EXAMPLES
To run this program the standard way type:
gtkwave dumpfile.vcd
Alternatively you can run it with a save file as:
gtkwave dumpfile.vcd dumpfile.sav
Command line options are not necessary for representing the dumpfile,
savefile, and rcfile names. They are merely provided to allow specify-
ing them out of order. Note that on non-glibc systems, the long com-
mand line options will not be available and that the short ones will
have to be used instead.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
lxt2vcd(1) vcd2lxt(1) vcd2lxt2(1) vzt2vcd(1) vcd2vzt(1)
Anthony Bybell 1.3.70 GTKWAVE(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_mvl2lxt_mp.html
Index: geda_gtkwave_mvl2lxt_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_mvl2lxt_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_mvl2lxt_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_mvl2lxt_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_mvl2lxt_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:24:19-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="coverts_mvlsim_aet_files_to_lxt_mvl2lxt" id="coverts_mvlsim_aet_files_to_lxt_mvl2lxt">Coverts MVLSIM AET files to LXT (mvl2lxt)</a></h1>
<div class="level1">
<pre class="code">MVL2LXT(1) Filetype Conversion MVL2LXT(1)
NAME
mvl2lxt - Coverts MVLSIM AET files to LXT
SYNTAX
mvl2lxt <filename.aet> <filename.lxt>
DESCRIPTION
Converts AET files to LXT. This is experimental as it is not a com-
plete implementation and is not intended for general use.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
tex2vcd(1) mvl2vcd(1) lxt2vcd(1) vcd2lxt2(1) vcd2lxt(1) gtkwave(1)
Anthony Bybell 1.3.34 MVL2LXT(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_mvl2vcd_mp.html
Index: geda_gtkwave_mvl2vcd_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_mvl2vcd_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_mvl2vcd_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_mvl2vcd_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_mvl2vcd_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:22:43-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="coverts_mvlsim_aet_files_to_vcd_mvl2vcd" id="coverts_mvlsim_aet_files_to_vcd_mvl2vcd">Coverts MVLSIM AET files to VCD (mvl2vcd)</a></h1>
<div class="level1">
<pre class="code">MVL2VCD(1) Filetype Conversion MVL2VCD(1)
NAME
mvl2vcd - Coverts MVLSIM AET files to VCD
SYNTAX
mvl2vcd <filename.aet>
DESCRIPTION
Converts AET files to VCD on stdout. This is experimental as it is not
a complete implementation and is not intended for general use.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
tex2vcd(1) mvl2lxt(1) lxt2vcd(1) vcd2lxt2(1) vcd2lxt(1) gtkwave(1)
Anthony Bybell 1.3.34 MVL2VCD(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_tex2vcd_mp.html
Index: geda_gtkwave_tex2vcd_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_tex2vcd_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_tex2vcd_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_tex2vcd_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_tex2vcd_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:21:53-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="coverts_texsim_aet_files_to_vcd_tex2vcd" id="coverts_texsim_aet_files_to_vcd_tex2vcd">Coverts TEXSIM AET files to VCD (tex2vcd)</a></h1>
<div class="level1">
<pre class="code">TEX2VCD(1) Filetype Conversion TEX2VCD(1)
NAME
tex2vcd - Coverts TEXSIM AET files to VCD
SYNTAX
mvl2vcd <filename.aet>
DESCRIPTION
Converts AET files to VCD on stdout. This is experimental as it is not
a complete implementation and is not intended for general use.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
mvl2vcd(1) mvl2lxt(1) lxt2vcd(1) vcd2lxt2(1) vcd2lxt(1) gtkwave(1)
Anthony Bybell 1.3.34 TEX2VCD(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_tla2vcd_mp.html
Index: geda_gtkwave_tla2vcd_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_tla2vcd_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_tla2vcd_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_tla2vcd_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_tla2vcd_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:30:56-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="converts_tla_to_vcd_or_lst_files_tla2vcd" id="converts_tla_to_vcd_or_lst_files_tla2vcd">Converts TLA to VCD or LST files (tla2vcd)</a></h1>
<div class="level1">
<pre class="code">TLA2VCD(1) Tektronix File Format Conversion TLA2VCD(1)
NAME
tla2vcd - Converts TLA to VCD or LST files
SYNTAX
tla2vcd [option]... TLAFILE [[TLAFILE]...]
DESCRIPTION
Converts TLA files from Tektronix logic analyzers to VCD or LST files.
Conversion to VCD allows viewing in tools such as gtkwave(1).
OPTIONS
-t Generate text LST file instead of VCD file
-l List the available channels/groups and exit
-s <signal_list>
Select signals from regular expression list
-a All channels
-m Append MagniVu info (only in listing mode)
-z Compress output
-v Verbose
AUTHORS
Emil
SEE ALSO
lxt2vcd(1) vzt2vcd(1) gtkwave(1)
Emil 1.0 TLA2VCD(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_vcd2lxt2_mp.html
Index: geda_gtkwave_vcd2lxt2_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_vcd2lxt2_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt2_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt2_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt2_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:27:41-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="converts_vcd_files_to_lxt2_files_vcd2lxt2" id="converts_vcd_files_to_lxt2_files_vcd2lxt2">Converts VCD files to LXT2 files (vcd2lxt2)</a></h1>
<div class="level1">
<pre class="code">VCD2LXT2(1) Filetype Conversion VCD2LXT2(1)
NAME
vcd2lxt2 - Converts VCD files to LXT2 files
SYNTAX
vcd2lxt2 [option]... [VCDFILE] [LXTFILE]
DESCRIPTION
Converts VCD files to LXT2 files.
OPTIONS
-v,--vcdname <filename>
Specify VCD input filename.
-l,--lxtname <filename>
Specify LXT2 output filename.
-d,--depth <value>
Specify 0..9 gzip compression depth, default is 4.
-m,--maxgranule <value>
Specify number of granules per section, default is 8. One gran-
ule is equal to 32 timsteps.
-b,--break <value>
Specify break size (default = 0 = off). When the break size is
exceeded, the LXT2 dumper will dump all state information at the
next convenient granule plus dictionary boundary.
-p,--partialmode <mode>
Specify partial zip mode 0 = monolithic, 1 = separation. Using
a value of 1 expands LXT2 filesize but provides fast access for
very large traces. Note that the default mode is neither mono-
lithic nor separation: partial zip is disabled.
-c,--checkpoint <mode>
Specify checkpoint mode. 0 is on which is default, and 1 is
off. This is disabled when the break size is active.
-h,--help
Show help screen.
EXAMPLES
Note that you should specify dumpfile.vcd directly or use "-" for
stdin.
vcd2lxt dumpfile.vcd dumpfile.lxt --depth 9 --break 1073741824
This sets the compression level to 9 and sets the break size to
1GB.
vcd2lxt dumpfile.vcd dumpfile.lxt --depth 9 --maxgranule 256
Allows more granules per section which allows for greater com-
pression.
LIMITATIONS
vcd2lxt2 does not store glitches as these are coalesced together into
one value change during the writing of the LXT2 file.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
lxt2vcd(1) vcd2lxt2(1) gtkwave(1)
Anthony Bybell 1.3.42 VCD2LXT2(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_vcd2lxt_mp.html
Index: geda_gtkwave_vcd2lxt_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_vcd2lxt_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2lxt_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:29:51-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="converts_vcd_files_to_interlaced_or_linear_lxt_files_vcd2lxt" id="converts_vcd_files_to_interlaced_or_linear_lxt_files_vcd2lxt">Converts VCD files to interlaced or linear LXT files (vcd2lxt)</a></h1>
<div class="level1">
<pre class="code">VCD2LXT(1) Filetype Conversion VCD2LXT(1)
NAME
vcd2lxt - Converts VCD files to interlaced or linear LXT files
SYNTAX
vcd2lxt [VCDFILE] [LXTFILE] [option]...
DESCRIPTION
Converts VCD files to interlaced or linear LXT files. Noncompressed
interlaced files will provide the fastest access, linear files will
provide the slowest yet have the greatest compression ratios.
OPTIONS
-stats Prints out statistics on all nets in VCD file in addition to
performing the conversion.
-clockpack
Apply two-way subtraction algorithm in order to identify nets
whose value changes by a constant XOR or whose value
increases/decreases by a constant amount per constant unit of
time. This option can reduce dumpfile size dramatically as
value changes can be represented by an equation rather than
explicitly as a triple of time, net, and value.
-chgpack
Emit data to file after being filtered through zlib (gzip).
-linear
Write out LXT in "linear" format with no backpointers. These
are re-generated during initialization in gtkwave. Addition-
ally, use libbz2 (bzip2) as the compression filter.
-dictpack <size>
Store value changes greater than or equal to size bits as an
index into a dictionary. Experimentation shows that a value of
18 is optimal for most cases.
EXAMPLES
Note that you should specify dumpfile.vcd directly or use "-" for
stdin.
vcd2lxt dumpfile.vcd dumpfile.lxt -clockpack -chgpack -dictpack 18
This turns on clock packing, zlib compression, and enables the
dictionary encoding. Note that using no options writes out a
normal LXT file.
vcd2lxt dumpfile.vcd dumpfile.lxt -clockpack -linear -dictpack 18
Uses linear mode for even smaller files.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
lxt2vcd(1) vcd2lxt2(1) gtkwave(1)
Anthony Bybell 1.3.34 VCD2LXT(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_vcd2vzt_mp.html
Index: geda_gtkwave_vcd2vzt_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_vcd2vzt_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2vzt_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2vzt_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_vcd2vzt_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:35:56-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="converts_vcd_files_to_vzt_files_vcd2vzt" id="converts_vcd_files_to_vzt_files_vcd2vzt">Converts VCD files to VZT files (vcd2vzt)</a></h1>
<div class="level1">
<pre class="code">VCD2VZT(1) Filetype Conversion VCD2VZT(1)
NAME
vcd2vzt - Converts VCD files to VZT files
SYNTAX
vcd2vzt [option]... [VCDFILE] [VZTFILE]
DESCRIPTION
Converts VCD files to VZT files.
OPTIONS
-v,--vcdname <filename>
Specify VCD input filename.
-l,--vztname <filename>
Specify VZT output filename.
-d,--depth <value>
Specify 0..9 gzip compression depth, default is 4.
-m,--maxgranule <value>
Specify number of granules per section, default is 8. One gran-
ule is equal to 32 timesteps.
-b,--break <value>
Specify break size (default = 0 = off). When the break size is
exceeded, the VZT dumper will dump all state information at the
next convenient granule plus dictionary boundary.
-z,--ziptype <value>
Specify zip type (default = 0 gzip, 1 = bzip2). This allows you
to override the default compression algorithm to use a more
effective one at the expense of greater runtime. Note that
bzip2 does not decompress as fast as gzip so the viewer will be
about two times slower when decompressing blocks.
-t,--twostate
Forces MVL2 twostate mode (default is MVL4). When enabled, the
trace will only store 0/1 values for binary facilities. This is
useful for functional simulation and will speed up dumping as
well as make traces somewhat smaller.
-r, --rle
Uses an bitwise RLE compression on the value table. Default is
off. When enabled, this causes the trace data table to be
stored using an alternate representation which can improve com-
pression in many cases.
-h,--help
Show help screen.
EXAMPLES
Note that you should specify dumpfile.vcd directly or use "-" for
stdin.
vcd2vzt dumpfile.vcd dumpfile.lxt --depth 9 --break 1073741824
This sets the compression level to 9 and sets the break size to
1GB.
vcd2vzt dumpfile.vcd dumpfile.lxt --depth 9 --maxgranule 512
Allows more granules per section which allows for greater com-
pression at the expense of memory usage.
LIMITATIONS
vcd2vzt does not store glitches as these are coalesced together into
one value change during the writing of the VZT file.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
vzt2vcd(1) lxt2vcd(1) vcd2lxt2(1) gtkwave(1)
Anthony Bybell 1.3.48 VCD2VZT(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_vzt2vcd_mp.html
Index: geda_gtkwave_vzt2vcd_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_vzt2vcd_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_vzt2vcd_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_vzt2vcd_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_vzt2vcd_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:34:17-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="coverts_vzt_files_to_vcd_vzt2vcd" id="coverts_vzt_files_to_vcd_vzt2vcd">Coverts VZT files to VCD (vzt2vcd)</a></h1>
<div class="level1">
<pre class="code">VZT2VCD(1) Filetype Conversion VZT2VCD(1)
NAME
vzt2vcd - Coverts VZT files to VCD
SYNTAX
vzt2vcd <filename>
DESCRIPTION
Converts VZT files to VCD files on stdout.
EXAMPLES
To run this program the standard way type:
vzt2vcd filename.vzt
The VCD conversion is emitted to stdout.
LIMITATIONS
vzt2vcd does not re-create glitches as these are coalesced together
into one value change during the writing of the VZT file.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
vcd2lxt2(1) vcd2lxt(1) lxt2vcd(1) gtkwave(1)
Anthony Bybell 1.3.44 VZT2VCD(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_gtkwave_vztminer_mp.html
Index: geda_gtkwave_vztminer_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:gtkwave_vztminer_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:gtkwave_vztminer_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:gtkwave_vztminer_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:gtkwave_vztminer_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:35:09-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="data_mining_of_vzt_files_vztminer" id="data_mining_of_vzt_files_vztminer">Data mining of VZT files (vztminer)</a></h1>
<div class="level1">
<pre class="code">VZTMINER(1) Dumpfile Data Mining VZTMINER(1)
NAME
vztminer - Data mining of VZT files
SYNTAX
vztminer [option]... [VZTFILE]
DESCRIPTION
Mines VZT files for specific data values and generates gtkwave save
files to stdout for future reload.
OPTIONS
-d,--dumpfile <filename>
Specify VZT input dumpfile.
-m,--match <filename>
Specifies "bitwise" match data (binary, real, string)
-x,--hex <value>
Specifies hexadecimal match data that will automatically be con-
verted to binary for searches
-n,--namesonly
Indicates that only facnames should be printed in a gtkwave
savefile compatible format. By doing this, the file can be used
to specify which traces are to be imported into gtkwave.
-h,--help
Show help screen.
EXAMPLES
vztminer dumpfile.vzt --match 20470000 -n
This attempts to match the hex value 20470000 across all facilities and
when the value is encountered, the facname only is printed to stdout in
order to generate a gtkwave compatible save file.
LIMITATIONS
vztminer only prints the first time a value is encountered for a spe-
cific net. This is done in order to cut down on the size of output
files and to aid in following data such as addresses through a simula-
tion model.
AUTHORS
Anthony Bybell <bybell@xxxxxxxxx>
SEE ALSO
lxt2miner(1) vzt2vcd(1) lxt2vcd(1) vcd2lxt2(1) gtkwave(1)
Anthony Bybell 1.3.64 VZTMINER(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_hse_howto.html
Index: geda_hse_howto.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:hse_howto</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:hse_howto?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:hse_howto?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:hse_howto?do=export_raw" />
<meta name="date" content="2006-04-20T07:58:50-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="hooks_scheme_extension_howto" id="hooks_scheme_extension_howto">Hooks/Scheme Extension HOWTO</a></h1>
<div class="level1">
<pre class="code">gEDA - GPL Electronic Design Automation
HOOKS AND SCHEME EXTENSION IN GSCHEM
====================================
Copyright (C) 2000 Stefan Petersen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Introduction
------------
gschem has a scheme interpreter (called Guile) built in. Though not
complete, there are extensions to this interpreter to get access to
different parts of the schematic.
There are a couple of other scheme extensions available that will not be
described here. They belong mainly to rc-files (resource files in
gEDA programs are really scheme scripts) and to the keymapping system
(described in separate keymapping documentation).
The rest I will try to describe here.
Scheme functions
----------------
There are two function available for handling attributes in the schematic.
* get-attribute-name-value
Inparameter : an attribute
Outparameter : a pair with the name of the attribute as string in the
car element and the value of the attribute in the cdr
element.
Description : Simply an accessor to the information hidden in the type
attribute. The functionality of this is placed in libgeda
since the C-type ATTRIBUTE is defined there.
* set-attribute-value!
Inparameter : an attribute and a string.
Outparameter : undefined.
Description : Sets a new value to an attribute. The attribute must
be defined, the function can't create a new attribute.
Defined both in gschem and libgeda, mainly because
where different variables and information are available.
Hooks
-----
Hooks are a way to define functions that will be called during different
part of a programs execution. In gschem there are (currently) three
different hooks available:
* add-component-hook
* copy-component-hook
* move-component-hook
As their name indicate, they are called at different occasions. When
you add a component add-component-hook is called, etc.
To add a function to be called you simply use the Guile funtion add-hook!.
An example; to run the function auto-uref when you add a component you
simply add the following line, preferrably in ${HOME}/.gEDA/gschemrc:
(add-hook! add-component-hook auto-uref)
The function to be called from a hook (for example auto-uref above) has
to accept one parameter, a list of attributes.
A small example that prints all attributes on a component to be placed:
(define (print-all-attributes attribute-list)
(foreach (lambda (attribute) (display attribute)) attribute-list))
How to use this
---------------
The most complete example utilizing all of the above functions are in fact
the auto-uref scheme script that currently is part of the gschem distribution.
You can find it <where gschem is installed>/share/gEDA/scheme/auto-uref.scm.
Uninstalled it's available at gschem/scheme/auto-uref.scm
All components have a reference designator that must be unique so
gnetlist can handle it properly. By automatically assigning a number
to each instance of a component when you place and copy it, you can
simplify the naming operation.
All components has, per default, an uref attribute, for example uref=R?.
The letter varies with component type. The auto-uref script enumerates
uref based on what prefix the component has and assigns a number.
For example, the first component you place has per default uref=U? gets
the attribute uref=U1. Next component with uref=U? gets uref=U2 and so on.
To be able to use the auto-uref script you simply add two lines in
${HOME}/.gEDA/gschemrc. They are:
(load "<where gschem is installed>/share/gEDA/scheme/auto-uref.scm")
(add-hook! add-component-hook auto-uref)
If you want auto enumeration to work when you copy the component too, you
simply add the following line:
(add-hook! copy-component-hook auto-uref)
Good luck!
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_anc.html
Index: geda_icarus_anc.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_anc</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_anc?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_anc?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_anc?do=export_raw" />
<meta name="date" content="2006-05-07T16:46:41-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="icarus_attribute_naming_conventions" id="icarus_attribute_naming_conventions">Icarus Attribute Naming Conventions</a></h1>
<div class="level1">
<pre class="code">ATTRIBUTE NAMING CONVENTIONS
Attributes that are specific to Icarus Verilog, and are intended to be
of use to programmers, start with the prefix "ivl_".
Attributes with the "_ivl_" prefix are set aside for internal
use. They may be generated internally by the compiler. They need not
be documented here.
ATTRIBUTES TO CONTROL SYNTHESIS
The following is a summary of Verilog attributes that Icarus Verilog
understands within Verilog source files to control synthesis
behavior. This section documents generic synthesis attributes. For
target specific attributes, see target specific documentation.
These attributes only effect the behavior of the synthesizer. For
example, the ivl_combinational will not generate an error message
if the Verilog is being compiled for simulation. (It may generate a
warning.)
* Attributes for "always" and "initial" statements
(* ivl_combinational *)
This attribute tells the compiler that the statement models
combinational logic. If the compiler finds that it cannot make
combinational logic out of a marked always statement, it will
report an error.
This attribute can be used to prevent accidentally inferring
latches or flip-flops where the user intended combinational
logic.
(* ivl_synthesis_on *)
This attribute tells the compiler that the marked always statement
is synthesizable. The compiler will attempt to synthesize the
code in the marked "always" statement. If it cannot in any way
synthesize it, then it will report an error.
(* ivl_synthesis_off *)
If this value is attached to an "always" statement, then the
compiler will *not* synthesize the "always" statement. This can be
used, for example, to mark embedded test bench code.
* Attributes for modules
(* ivl_synthesis_cell *)
If this value is attached to a module during synthesis, that
module will be considered a target architecture primitive, and
its interior will not be synthesized further. The module can
therefore hold a model for simulation purposes.
* Attributes for signals (wire/reg/integer/tri/etc.)
(* PAD = "<pad assignment list>" *)
If this attribute is attached to a signal that happens to be a
root module port, then targets that support it will use the string
value as a list of pin assignments for the port/signal. The format
is a comma separated list of location tokens, with the format of
the token itself defined by the back-end tools in use.
* Other Attributes
[ none defined yet ]
MISC
(* _ivl_schedule_push *)
If this attribute is attached to a thread object (always or
initial statement) then the vvp code generator will generate code
that causes the scheduler to push this thread at compile time. The
compiler may internally add this attribute to always statements if
it detects that it is combinational. This helps resolve time-0
races.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_extensions.html
Index: geda_icarus_extensions.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_extensions</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_extensions?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_extensions?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_extensions?do=export_raw" />
<meta name="date" content="2006-05-07T16:51:57-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="icarus_verilog_extensions" id="icarus_verilog_extensions">Icarus Verilog Extensions</a></h1>
<div class="level1">
<pre class="code">Icarus Verilog Extensions
Icarus Verilog supports certain extensions to the baseline IEEE1364
standard. Some of these are picked from extended variants of the
language, such as SystemVerilog, and some are expressions of internal
behavior of Icarus Verilog, made available as a tool debugging aid.
* Builtin System Functions
** Extended Verilog Data Types
This feature is turned off if the generation flag "-g" is set to other
then the default "2x". For example, "iverilog -g2x" enables extended
data types, and "iverilog -g2" disables them.
Icarus Verilog adds support for extended data types. This extended
type syntax is based on a proposal by Cadence Design Systems,
originally as an update to the IEEE1364. That original proposal has
apparently been absorbed by the IEEE1800 SystemVerilog
standard. Icarus Verilog currently only takes the new primitive types
from the proposal.
Extended data types separates the concept of net/variable from the
data type. Both nets and variables can declared with any data
type. The primitive types available are:
logic - The familiar 0, 1, x and z, optionally with strength.
bool - Limited to only 0 and 1
real - 64bit real values
Nets with logic type may have multiple drivers with strength, and the
value is resolved the usual way. Only logic values may be driven to
logic nets, so bool values driven onto logic nets are implicitly
converted to logic.
Nets with any other type may not have multiple drivers. The compiler
should detect the multiple drivers and report an error.
- Declarations
The declaration of a net is extended to include the type of the wire,
with the syntax:
wire <type> <wire-assignment-list>... ;
The <type>, if omitted, is taken to be logic. The "wire" can be any of
the net keywords. Wires can be logic, bool, real, or vectors of logic
or bool. Some valid examples:
wire real foo = 1.0;
tri logic bus[31:0];
wire bool addr[23:0];
... and so on.
The declarations of variables is similar. The "reg" keyword is used to
specify that this is a variable. Variables can have the same data
types as nets.
- Ports
Module and task ports in standard verilog are restricted to logic
types. This extension removes that restriction, allowing any type to
pass through the port consistent with the continuous assignment
connectivity that is implied by the type.
- Expressions
Expressions in the face of real values is covered by the baseline
Verilog standard.
The bool type supports the same operators as the logic type, with the
obvious differences imposed by the limited domain.
Comparison operators (not case compare) return logic if either of
their operands is logic. If both are bool or real (including mix of
bool and real) then the result is bool. This is because comparison of
bools and reals always return exactly true or false.
Case comparison returns bool. This differs from baseline Verilog,
which strictly speaking returns a logic, but only 0 or 1 values.
All the arithmetic operators return bool if both of their operands are
bool or real. Otherwise, they return logic.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_glossary.html
Index: geda_icarus_glossary.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_glossary</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_glossary?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_glossary?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_glossary?do=export_raw" />
<meta name="date" content="2006-05-07T16:50:59-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="icarus_verilog_glossary" id="icarus_verilog_glossary">Icarus Verilog Glossary</a></h1>
<div class="level1">
<pre class="code">Throughout Icarus Verilog descriptions and source code, I use a
variety of terms and acronyms that might be specific to Icarus
Verilog, have an Icarus Verilog specific meaning, or just aren't
widely known. So here I define these terms.
LRM - Language Reference Manual
This is a generic acronym, but in the Verilog world we sometimes
mean *the* language reference manual, the IEEE1364 standard.
PLI - Programming Language Interface
This is a C API into Verilog simulators that is defined by the
IEEE1364. There are two major interfaces, sometimes called PLI 1
and PLI 2. PLI 2 is also often called VPI.
UDP - User Defined Primitive
These are objects that Verilog programmers define with the
"primitive" keyword. They are truth-table based devices. The
syntax for defining them is described in the LRM.
VPI -
This is the C API that is defined by the Verilog standard, and
that Icarus Verilog partially implements. See also PLI.
VVM - Verilog Virtual Machine
This is the Icarus Verilog runtime that works with the code
generator that generates C++.
VVP - Verilog Virtual Processor
This is the Icarus Verilog runtime that reads in custom code in a
form that I call "VVP Assembly". See the vvp/ directory for
documentation on that.
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_ieee1364.html
Index: geda_icarus_ieee1364.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_ieee1364</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_ieee1364?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_ieee1364?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_ieee1364?do=export_raw" />
<meta name="date" content="2006-05-07T16:48:08-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="icarus_verilog_vs._ieee1364" id="icarus_verilog_vs._ieee1364">Icarus Verilog vs. IEEE1364</a></h1>
<div class="level1">
<pre class="code"> Icarus Verilog vs. IEEE1364
Copyright 2000 Stephen Williams
The IEEE1364 standard is the bible that defines the correctness of the
Icarus Verilog implementation and behavior of the compiled
program. The IEEE1364.1 is also referenced for matters of
synthesis. So the ultimate definition of right and wrong comes from
those documents.
That does not mean that a Verilog implementation is fully
constrained. The standard document allows for implementation specific
behavior that, when properly accounted for, does not effect the
intended semantics of the specified language. It is therefore possible
and common to write programs that produce different results when run
by different Verilog implementations.
STANDARDIZATION ISSUES
These are some issues where the IEEE1364 left unclear, unspecified or
simply wrong. I'll try to be precise as I can, and reference the
standard as needed. I've made implementation decisions for Icarus
Verilog, and I will make clear what those decisions are and how they
affect the language.
* OBJECTS CAN BE DECLARED ANYWHERE IN THE MODULE
Consider this module:
module sample1;
initial foo = 1;
reg foo;
wire tmp = bar;
initial #1 $display("foo = %b, bar = %b", foo, tmp);
endmodule
Notice that the ``reg foo;'' declaration is placed after the first
initial statement. It turns out that this is a perfectly legal module
according to the -1995 and -2000 versions of the standard. The
statement ``reg foo;'' is a module_item_declaration which is in turn a
module_item. The BNF in the appendix of IEEE1364-1995 treats all
module_item statements equally, so no order is imposed.
Furthermore, there is no text (that I can find) elsewhere in the
standard that imposes any ordering restriction. The sorts of
restrictions I would look for are "module_item_declarations must
appear before all other module_items" or "variables must be declared
textually before they are referenced." Such statements simply do not
exist. (Personally, I think it is fine that they don't.)
The closest is the rules for implicit declarations of variables that
are otherwise undeclared. In the above example, ``bar'' is implicitly
declared and is therefore a wire. However, although ``initial foo = 1;''
is written before foo is declared, foo *is* declared within the
module, and declared legally by the BNF of the standard.
Here is another example:
module sample2;
initial x.foo = 1;
test x;
initial #1 $display("foo = %b", x.foo);
endmodule
module test;
reg foo;
endmodule;
From this example one can clearly see that foo is once again declared
after its use in behavioral code. One also sees a forward reference of
an entire module. Once again, the standard places no restriction on
the order of module declarations in a source file, so this program is,
according to the standard, perfectly well formed.
Icarus Verilog interprets both of these examples according to "The
Standard As I Understand It." However, commercial tools in general
break down with these programs. In particular, the first example
may generate different errors depending on the tool. The most common
error is to claim that ``foo'' is declared twice, once (implicitly) as
a wire and once as a reg.
So the question now becomes, "Is the standard broken, or are the tools
limited?" Coverage of the standard seems to vary widely from tool to
tool so it is not clear that the standard really is at fault. It is
clear, however, that somebody goofed somewhere.
My personal opinion is that there is no logical need to require that
all module_item_declarations precede any other module items. I
personally would oppose such a restriction. It may make sense to
require that declarations of variables within a module be preceded by
their use, although even that is not necessary for the implementation
of efficient compilers.
However, the existence hierarchical naming syntax as demonstrated in
sample2 can have implications that affect any declaration order
rules. When reaching into a module with a hierarchical name, the
module being referenced is already completely declared (or not
declared at all, as in sample2) so module_item order is completely
irrelevant. But a "declare before use" rule would infect module
ordering, by requiring that modules that are used be first defined.
* TASK AND FUNCTION PARAMETERS CANNOT HAVE EXPLICIT TYPES
Consider a function negate that wants to take a signed integer value
and return its negative:
function integer negate;
input [15:0] val;
negate = -val;
endfunction
This is not quite right, because the input is implicitly a reg type,
which is unsigned. The result, then, will always be a negative value,
even if a negative val is passed in.
It is possible to fix up this specific example to work properly with
the bit pattern of a 16bit number, but that is not the point. What's
needed is clarification on whether an input can be declared in the
port declaration as well as in the contained block declaration.
As I understand the situation, this should be allowed:
function integer negate;
input [15:0] val;
reg signed [15:0] val;
negate = -val;
endfunction
In the -1995 standard, the variable is already implicitly a reg if
declared within a function or task. However, in the -2000 standard
there is now (as in this example) a reason why one might want to
actually declare the type explicitly.
I think that a port *cannot* be declared as an integer or time type
(though the result can) because the range of the port declaration must
match the range of the integer/time declaration, but the range of
integers is unspecified. This, by the way, also applies to module
ports.
With the above in mind, I have decided to *allow* function and task
ports to be declared with types, as long as the types are variable
types, such as reg or integer. Without this, there would be no
portable way to pass integers into functions/tasks. The standard does
not say it is allowed, but it doesn't *disallow* it, and other
commercial tools seem to work similarly.
* ROUNDING OF TIME
When the `timescale directive is present, the compiler is supposed to
round fractional times (after scaling) to the nearest integer. The
confusing bit here is that it is apparently conventional that if the
`timescale directive is *not* present, times are rounded towards zero
always.
* VALUE OF X IN PRIMITIVE OUTPUTS
The IEEE1364-1995 standard clearly states in Table 8-1 that the x
symbols is allowed in input columns, but is not allowed in
outputs. Furthermore, none of the examples have an x in the output of
a primitive. Table 8-1 in the IEEE1364-2000 also says the same thing.
However, the BNF clearly states that 0, 1, x and X are valid
output_symbol characters. The standard is self contradictory. So I
take it that x is allowed, as that is what Verilog-XL does.
* REPEAT LOOPS vs. REPEAT EVENT CONTROL
There seems to be ambiguity in how code like this should be parsed:
repeat (5) @(posedge clk) <statement>;
There are two valid interpretations of this code, from the
IEEE1364-1995 standard. One looks like this:
procedural_timing_control_statement ::=
delay_or_event_control statement_or_null
delay_or_event_control ::=
event_control
| repeat ( expression ) event_control
If this interpretation is used, then the statement <statement> should
be executed after the 5th posedge of clk. However, there is also this
interpretation:
loop_statement ::=
repeat ( expression ) statement
If *this* interpretation is used, then <statement> should be executed
5 times on the posedge of clk. The way the -1995 standard is written,
these are both equally valid interpretations of the example, yet they
produce very different results. The standard offers no guidance on how
to resolve this conflict, and the IEEE1364-2000 DRAFT does not improve
the situation.
Practice suggests that a repeat followed by an event control should be
interpreted as a loop head, and this is what Icarus Verilog does, as
well as all the other major Verilog tools, but the standard does not
say this.
* UNSIZED NUMERIC CONSTANTS ARE NOT LIMITED TO 32 BITS
The Verilog standard allows Verilog implementations to limit the size
of unsized constants to a bit width of at least 32. That means that a
constant 17179869183 (36'h3_ffff_ffff) may overflow some compilers. In
fact, it is common to limit these values to 32bits. However, a
compiler may just as easily choose another width limit, for example
64bits. That value is equally good.
However, it is not *required* that an implementation truncate at 32
bits, and in fact Icarus Verilog does not truncate at all. It will
make the unsized constant as big as it needs to be to hold the value
accurately. This is especially useful in situations like this;
reg [width-1:0] foo = 17179869183;
The programmer wants the constant to take on the width of the reg,
which in this example is parameterized. Since constant sizes cannot be
parameterized, the programmer ideally gives an unsized constant, which
the compiler then expands/contracts to match the l-value.
Also, by choosing to not ever truncate, Icarus Verilog can handle code
written for a 64bit compiler as easily as for a 32bit compiler. In
particular, any constants that the user does not expect to be
arbitrarily truncated by his compiler will also not be truncated by
Icarus Verilog, no matter what that other compiler chooses as a
truncation point.
* UNSIZED EXPRESSIONS AS PARAMETERS TO CONCATENATION {}
The Verilog standard clearly states in 4.1.14:
"Unsized constant numbers shall not be allowed in
concatenations. This is because the size of each
operand in the concatenation is needed to calculate
the complete size of the concatenation."
So for example the expression {1'b0, 16} is clearly illegal. It
also stands to reason that {1'b0, 15+1} is illegal, for exactly the
same justification. What is the size of the expression (15+1)?
Furthermore, it is reasonable to expect that (16) and (15+1) are
exactly the same so far as the compiler is concerned.
Unfortunately, Cadence seems to feel otherwise. In particular, it has
been reported that although {1'b0, 16} causes an error, {1'b0, 15+1}
is accepted. Further testing shows that any expression other then a
simple unsized constant is accepted there, even if all the operands of
all the operators that make up the expression are unsized integers.
This is a semantic problem. Icarus Verilog doesn't limit the size of
integer constants. This is valid as stated in 2.5.1 Note 3:
"The number of bits that make up an unsized number
(which is a simple decimal number or a number without
the size specification) shall be *at*least* 32."
[emphasis added]
Icarus Verilog will hold any integer constant, so the size will be as
large as it needs to be, whether that is 64bits, 128bits, or
more. With this in mind, what is the value of these expressions?
{'h1_00_00_00_00}
{'h1 << 32}
{'h0_00_00_00_01 << 32}
{'h5_00_00_00_00 + 1}
These examples show that the standard is justified in requiring that
the operands of concatenation have size. The dispute is what it takes
to cause an expression to have a size, and what that size is.
Verilog-XL claims that (16) does not have a size, but (15+1) does. The
size of the expression (15+1) is the size of the adder that is
created, but how wide is the adder when adding unsized constants?
One might note that the quote from section 4.1.14 says "Unsized
*constant*numbers* shall not be allowed." It does not say "Unsized
expressions...", so arguably accepting (15+1) or even (16+0) as an
operand to a concatenation is not a violation of the letter of the
law. However, the very next sentence of the quote expresses the
intent, and accepting (15+1) as having a more defined size then (16)
seems to be a violation of that intent.
Whatever a compiler decides the size is, the user has no way to
predict it, and the compiler should not have the right to treat (15+1)
any differently then (16). Therefore, Icarus Verilog takes the
position that such expressions are *unsized* and are not allowed as
operands to concatenations. Icarus Verilog will in general assume that
operations on unsized numbers produce unsized results. There are
exceptions when the operator itself does define a size, such as the
comparison operators or the reduction operators. Icarus Verilog will
generate appropriate error messages.
* MODULE INSTANCE WITH WRONG SIZE PORT LIST
A module declaration like this declares a module that takes three ports:
module three (a, b, c);
input a, b, c;
reg x;
endmodule
This is fine and obvious. It is also clear from the standard that
these are legal instantiations of this module:
three u1 (x,y,z);
three u2 ( ,y, );
three u3 ( , , );
three u4 (.b(y));
In some of the above examples, there are unconnected ports. In the
case of u4, the pass by name connects only port b, and leaves a and c
unconnected. u2 and u4 are the same thing, in fact, but using
positional or by-name syntax. The next example is a little less
obvious:
three u4 ();
The trick here is that strictly speaking, the parser cannot tell
whether this is a list of no pass by name ports (that is, all
unconnected) or an empty positional list. If this were an empty
positional list, then the wrong number of ports is given, but if it is
an empty by-name list, it is an obviously valid instantiation. So it
is fine to accept this case as valid.
These are more doubtful:
three u5(x,y);
three u6(,);
These are definitely positional port lists, and they are definitely
the wrong length. In this case, the standard is not explicit about
what to do about positional port lists in module instantiations,
except that the first is connected to the first, second to second,
etc. It does not say that the list must be the right length, but every
example of unconnected ports used by-name syntax, and every example of
ordered list has the right size list.
Icarus Verilog takes the (very weak) hint that ordered lists should be
the right length, and will therefore flag instances u5 and u6 as
errors. The IEEE1364 standard should be more specific one way or the
other.
* UNKNOWN VALUES IN L-VALUE BIT SELECTS
Consider this example:
reg [7:0] vec;
wire [4:0] idx = <expr>;
[...]
vec[idx] = 1;
So long as the value of idx is a valid bit select address, the
behavior of this assignment is obvious. However, there is no explicit
word in the standard as to what happens if the value is out of
range. The standard clearly states the value of an expression when the
bit-select or part select is out of range (the value is x) but does
not address the behavior when the expression is an l-value.
Icarus Verilog will take the position that bit select expressions in
the l-value will select oblivion if it is out of range. That is, if
idx has a value that is not a valid bit select of vec, then the
assignment will have no effect.
* SCHEDULING VALUES IN LOGIC
The interaction between blocking assignments in procedural code and
logic gates in gate-level code and expressions is poorly defined in
Verilog. Consider this example:
reg a;
reg b;
wire q = a & b;
initial begin
a = 1;
b = 0;
#1 b = 1;
if (q !== 0) begin
$display("FAILED -- q changed too soon? %b", q);
$finish;
end
end
This is a confusing situation. It is clear from the Verilog standard
that an assignment to a variable using a blocking assign causes the
l-value to receive the value before the assignment completes. This
means that a subsequent read of the assigned variable *must* read back
what was blocking-assigned.
However, in the example above, the "wire q = a & b" expresses some
gate logic between a/b and q. The standard does not say whether a read
out of logic should read the value computed from previous assigns to
the input from the same thread. Specifically, when "a" and "b" are
assigned by blocking assignments, will a read of "q" get the computed
value or the existing value?
In fact, existing commercial tools do it both ways. Some tools print
the FAILED message in the above example, and some do not. Icarus
Verilog does not print the FAILED message in the above example,
because the gate value change is *scheduled* when inputs are assigned,
but not propagated until the thread gives up the processor.
Icarus Verilog chooses this behavior in order to filter out zero-width
pulses as early as possible. The implication of this is that a read of
the output of combinational logic will most likely *not* reflect the
changes in inputs until the thread that changed the inputs yields
execution.
* BIT AND PART SELECTS OF PARAMETERS
Bit and part selects are supposed to only be supported on vector nets
and variables (wires, regs, etc.) However, it is common for Verilog
compilers to also support bit and part select on parameters. Icarus
Verilog also chooses to support bit and part selects on parameter
names, but we need to define what that means.
A bit or a part select on a parameter expression returns an unsigned
value with a defined size. The parameter value is considered be a
constant vector of bits foo[X:0]. That is, zero based. The bit and
part selects operate from that assumption.
Verilog 2001 adds syntax to allow the user to explicitly declare the
parameter range (i.e. parameter [5:0] foo = 9;) so Icarus Verilog will
(or should) use the explicitly declared vector dimensions to interpret
bit and part selects.
* EDGES OF VECTORS
Consider this example:
reg [ 5:0] clock;
always @(posedge clock) [do stuff]
The IEEE1364 standard clearly states that the @(posedge clock) looks
only at the bit clock[0] (the least significant bit) to search for
edges. It has been pointed out by some that Verilog XL instead
implements it as "@(posedge |clock)": it looks for a rise in the
reduction or of the vector. Cadence Design Systems technical support
has been rumored to claim that the IEEE1364 specification is wrong,
but NC-Verilog behaves according to the specification, and thus
different from XL.
Icarus Verilog, therefore, takes the position that the specification
is clear and correct, and it behaves as does NC-Verilog in this
matter.
* REAL VARIABLES IN $dumpoff DEAD-ZONES
The IEEE1364 standard clearly states that in VCD files, the $dumpoff
section checkpoints all the dumped variables as X values. For reg and
wire bits/vectors, this obviously means 'bx values. Icarus Verilog
does this, for example:
$dumpoff
x!
x"
$end
Real variables can also be included in VCD dumps, but it is not at
all obvious what is supposed to be dumped into the $dumpoff-$end
section of the VCD file. Verilog-XL dumps "r0 !" to set the real
variables to the dead-zone value of 0.0, whereas other tools, such as
ModelTech, ignore real variables in this section.
For example (from XL):
$dumpoff
r0 !
r0 "
$end
Icarus Verilog dumps NaN values for real variables in the
$dumpoff-$end section of the VCD file. The NaN value is the IEEE754
equivalent of an unknown value, and so better reflects the unknown
(during the dead zone) status of the variable, like this:
$dumpoff
rNaN !
rNaN "
$end
It turns out that NaN is conventionally accepted by scanf functions,
and viewers that support real variables support NaN values. So while
the IEEE1364 doesn't require this behavior, and given the variety that
already seems to exist amongst VCD viewers in the wild, this behavior
seems to be acceptable according to the standard, is a better mirror
of 4-value behavior in the dead zone, and appears more user friendly
when viewed by reasonable viewers.
$Id: geda_icarus_ieee1364.html,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
$Log: geda_icarus_ieee1364.html,v $
Revision 1.1 2006/08/22 02:56:12 ahvezda
First checkin of the wiki snapshot, prep work for new version of gEDA/gaf
Revision 1.17 2003/07/15 03:49:22 steve
Spelling fixes.
Revision 1.16 2003/04/14 03:40:21 steve
Make some effort to preserve bits while
operating on constant values.
Revision 1.15 2003/02/16 23:39:08 steve
NaN in dead zones of VCD dumps.
Revision 1.14 2003/02/06 17:51:36 steve
Edge of vectors notes.
Revision 1.13 2002/08/20 04:11:53 steve
Support parameters with defined ranges.
Revision 1.12 2002/06/11 03:34:33 steve
Spelling patch (Larry Doolittle)
Revision 1.11 2002/04/27 02:38:04 steve
Support selecting bits from parameters.
Revision 1.10 2002/03/31 01:54:13 steve
Notes about scheduling
Revision 1.9 2002/01/26 02:08:07 steve
Handle x in l-value of set/x
Revision 1.8 2001/08/01 05:17:31 steve
Accept empty port lists to module instantiation.
Revision 1.7 2001/02/17 05:27:31 steve
I allow function ports to have types.
Revision 1.6 2001/02/12 16:48:04 steve
Rant about bit widths.
Revision 1.5 2001/01/02 17:28:08 steve
Resolve repeat ambiguity in favor of loop.
Revision 1.4 2001/01/01 19:12:35 steve
repeat loops ambiguity.
Revision 1.3 2000/12/15 00:21:46 steve
rounding of time and x in primitives.
Revision 1.2 2000/11/19 22:03:04 steve
Integer parameter comments.
Revision 1.1 2000/07/23 18:06:31 steve
Document ieee1364 issues.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_mp.html
Index: geda_icarus_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:06:43-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="icarus_verilog_compiler_man-page" id="icarus_verilog_compiler_man-page">Icarus Verilog compiler man-page</a></h1>
<div class="level1">
<pre class="code">iverilog(1) $Date: 2006/08/22 02:56:12 $ iverilog(1)
NAME
iverilog - Icarus Verilog compiler
SYNOPSIS
iverilog [-ESVv] [-Bpath] [-ccmdfile] [-g1|-g2|-g2x] [-Dmacro[=defn]]
[-pflag=value] [-Iincludedir] [-mmodule] [-Mfile] [-Nfile] [-ooutput-
filename] [-stopmodule] [-ttype] [-Tmin/typ/max] [-Wclass] [-ypath]
sourcefile
DESCRIPTION
iverilog is a compiler that translates Verilog source code into exe-
cutable programs for simulation, or other netlist formats for further
processing. The currently supported targets are vvp for simulation, and
xnf and fpga for synthesis. Other target types are added as code gener-
ators are implemented.
OPTIONS
iverilog accepts the following options:
-Bbase The iverilog program uses external programs and configuration
files to preprocess and compile the Verilog source. Normally,
the path used to locate these tools is built into the iverilog
program. However, the -B switch allows the user to select a
different set of programs. The path given is used to locate
ivlpp, ivl, code generators and the VPI modules.
-cfile This flag specifies an input file that contains a list of Ver-
ilog source files. This is similar to the command file of other
Verilog simulators, in that it is a file that contains the file
names instead of taking them on the command line. See Command
Files below.
-Dmacro Defines macro macro with the string ââ?¬Ë?1ââ?¬â?¢ as its definition. This
form is normally only used to trigger ifdef conditionals in the
Verilog source.
-Dmacro=defn
Defines macro macro as defn.
-E Preprocess the Verilog source, but do not compile it. The out-
put file is the Verilog input, but with file inclusions and
macro references expanded and removed. This is useful, for
example, to preprocess Verilog source for use by other compil-
ers.
-g1|-g2|-g2x
Select the Verilog language generation to support in the com-
piler. This selects between IEEE1364-1995(1), IEEE1364-2001(2),
or Verilog with extension(2x). Normally, Icarus Verilog
defaults to the latest known generation of the language. This
flag is most useful to restrict the language to a set supported
by tools of specific generations, for compatibility with other
tools.
-Iincludedir
Append directory includedir to list of directories searched for
Verilog include files. The -I switch may be used many times to
specify several directories to search, the directories are
searched in the order they appear on the command line.
-Mpath Write into the file specified by path a list of files that con-
tribute to the compilation of the design. This includes files
that are included by include directives and files that are
automatically loaded by library support. The output is one file
name per line, with no leading or trailing space.
-mmodule
Add this module to the list of VPI modules to be loaded by the
simulation. Many modules can be specified, and all will be
loaded, in the order specified. The system module is implicit
and always included.
-Npath This is used for debugging the compiler proper. Dump the final
netlist form of the design to the specified file. It otherwise
does not affect operation of the compiler. The dump happens
after the design is elaborated and optimized.
-o filename
Place output in the file filename. If no output file name is
specified, iverilog uses the default name a.out.
-pflag=value
Assign a value to a target specific flag. The -p switch may be
used as often as necessary to specify all the desired flags.
The flags that are used depend on the target that is selected,
and are described in target specific documentation. Flags that
are not used are ignored.
-S Synthesize. Normally, if the target can accept behavioral
descriptions the compiler will leave processes in behavioral
form. The -S switch causes the compiler to perform synthesis
even if it is not necessary for the target. If the target type
is a netlist format, the -S switch is unnecessary and has no
effect.
-s topmodule
Specify the top level module to elaborate. Icarus Verilog will
by default choose modules that are not instantiated in any
other modules, but sometimes that is not sufficient, or instan-
tiates too many modules. If the user specifies one or more root
modules with -s flags, then they will be used as root modules
instead.
-Tmin|typ|max
Use this switch to select min, typ or max times from
min:typ:max expressions. Normally, the compiler will simply use
the typ value from these expressions (with a warning) but this
switch will tell the compiler explicitly which value to use.
This will suppress the warning that the compiler is making a
choice.
-ttarget
Use this switch to specify the target output format. See the
TARGETS section below for a list of valid output formats.
-v Turn on verbose messages. This will print the command lines
that are executed to perform the actual compilation, along with
version information from the various components, as well as the
version of the product as a whole. You will notice that the
command lines include a reference to a key temporary file that
passes information to the compiler proper. To keep that file
from being deleted at the end of the process, provide a file
name of your own in the environment variable IVERILOG_ICONFIG.
-V Print the version of the compiler, and exit.
-Wclass Turn on different classes of warnings. See the WARNING TYPES
section below for descriptions of the different warning groups.
If multiple -W switches are used, the warning set is the union
of all the requested classes.
-ylibdir
Append the directory to the library module search path. When
the compiler finds an undefined module, it looks in these
directories for files with the right name.
MODULE LIBRARIES
The Icarus Verilog compiler supports module libraries as directories
that contain Verilog source files. During elaboration, the compiler
notices the instantiation of undefined module types. If the user speci-
fies library search directories, the compiler will search the directory
for files with the name of the missing module type. If it finds such a
file, it loads it as a Verilog source file, they tries again to elabo-
rate the module.
Library module files should contain only a single module, but this is
not a requirement. Library modules may reference other modules in the
library or in the main design.
TARGETS
The Icarus Verilog compiler supports a variety of targets, for differ-
ent purposes, and the -t switch is used to select the desired target.
null The null target causes no code to be generated. It is useful
for checking the syntax of the Verilog source.
vvp This is the default. The vvp target generates code for the vvp
runtime. The output is a complete program that simulates the
design but must be run by the vvp command.
xnf This is the Xilinx Netlist Format used by many tools for plac-
ing devices in FPGAs or other programmable devices. This target
is obsolete, use the fpga target instead.
fpga This is a synthesis target that supports a variety of fpga
devices, mostly by EDIF format output. The Icarus Verilog fpga
code generator can generate complete designs or EDIF macros
that can in turn be imported into larger designs by other
tools. The fpga target implies the synthesis -S flag.
WARNING TYPES
These are the types of warnings that can be selected by the -W switch.
All the warning types (other then all) can also be prefixed with no- to
turn off that warning. This is most useful after a -Wall argument to
suppress isolated warning types.
all This enables all supported warning categories.
implicit
This enables warnings for creation of implicit declarations.
For example, if a scalar wire X is used but not declared in the
Verilog source, this will print a warning at its first use.
portbind
This enables warnings for ports of module instantiations that
are not connected but probably should be. Dangling input ports,
for example, will generate a warning.
timescale
This enables warnings for inconsistent use of the timescale
directive. It detects if some modules have no timescale, or if
modules inherit timescale from another file. Both probably mean
that timescales are inconsistent, and simulation timing can be
confusing and dependent on compilation order.
SYSTEM FUNCTION TABLE FILES
If the source file name as a .sft suffix, then it is taken to be a sys-
tem function table file. A System function table file is used to
describe to the compiler the return types for system functions. This is
necessary because the compiler needs this information to elaborate
expressions that contain these system functions, but cannot run the
sizetf functions since it has no run-time.
The format of the table is ASCII, one function per line. Empty lines
are ignored, and lines that start with the �#� character are comment
lines. Each non-comment line starts with the function name, then the
vpi type (i.e. vpiSysFuncReal). The following types are supported:
vpiSysFuncReal
The function returns a real/realtime value.
vpiSysFuncInt
The function returns an integer.
vpiSysFuncSized <wid> <signed|unsigned>
The function returns a vector with the given width, and is
signed or unsigned according to the flag.
COMMAND FILES
The command file allows the user to place source file names and certain
command line switches into a text file instead of on a long command
line. Command files can include C or C++ style comments, as well as #
comments, if the # starts the line.
file name
A simple file name or file path is taken to be the name of a
Verilog source file. The path starts with the first non-white-
space character. Variables are substitued in file names.
-y libdir
A -y token prefixes a library directory in the command file,
exactly like it does on the command line. The parameter to the
-y flag may be on the same line or the next non-comment line.
Variables in the libdir are substituted.
+incdir+includedir
The +incdir+ token in command files gives directories to search
for include files in much the same way that -I flags work on
the command line. The difference is that multiple +includedir
directories are valid parameters to a single +incdir+ token,
although you may also have multiple +incdir+ lines.
Variables in the includedir are substituted.
+libext+ext
The +libext token in command files fives file extensions to try
when looking for a library file. This is useful in conjunction
with -y flags to list suffixes to try in each directory before
moving on to the next library directory.
+libdir+dir
This is another way to specify library directories. See the -y
flag.
+libdir-nocase+dir
This is like the +libdir statement, but file names inside the
directories declared here are case insensitive. The missing
module name in a lookup need not match the file name case, as
long as the letters are correct. For example, "foo" matches
"Foo.v" but not "bar.v".
+define+NAME=value
The +define+ token is the same as the -D option on the command
line. The value part of the token is optional.
+toupper-filename
This token causes file names after this in the command file to
be translated to uppercase. This helps with situations where a
directory has passed through a DOS machine, and in the process
the file names become munged.
+tolower-filename
This is similar to the +toupper-filename hack described above.
VARIABLES IN COMMAND FILES
In certain cases, iverilog supports variables in command files. These
are strings of the form "$(varname)", where varname is the name of the
environment variable to read. The entire string is replaced with the
contents of that variable. Variables are only substitued in contexts
that explicitly support them, including file and directory strings.
Variable values come from the operating system environment, and not
from preprocessor defines elsewhere in the file or the command line.
EXAMPLES
These examples assume that you have a Verilog source file called
hello.v in the current directory
To compile hello.v to an executable file called a.out:
iverilog hello.v
To compile hello.v to an executable file called hello:
iverilog -o hello hello.v
To compile and run explicitly using the vvp runtime:
iverilog -ohello.vvp -tvvp hello.v
To compile hello.v to a file in XNF-format called hello.xnf
iverilog -txnf -ohello.xnf hello.v
AUTHOR
Steve Williams (steve@xxxxxxxxxx)
SEE ALSO
vvp(1), <http://www.icarus.com/eda/verilog/>
COPYRIGHT
Copyright �© 2002 Stephen Williams
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version $Date: 2006/08/22 02:56:12 $ iverilog(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_opcodes.html
Index: geda_icarus_opcodes.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_opcodes</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_opcodes?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_opcodes?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_opcodes?do=export_raw" />
<meta name="date" content="2006-05-07T16:54:50-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="executable_instruction_opcodes" id="executable_instruction_opcodes">Executable Instruction Opcodes</a></h1>
<div class="level1">
<pre class="code">/*
* Copyright (c) 2001-2003 Stephen Williams (steve@xxxxxxxxxx)
*
* $Id: geda_icarus_opcodes.html,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
*/
EXECUTABLE INSTRUCTION OPCODES
Instruction opcodes all start with a % character and have 0 or more
operands. In no case are there more then 3 operands. This chapter
describes the specific behavior of each opcode, in enough detail
(I hope) that its complete effect can be predicted.
General principles of Arithmetic:
The binary arithmetic instruction in general take three parameters,
the left operand, the right operand, and the base. The left operand is
replaced with the result, which is the same width as the left and
right operands.
* %add <bit-l>, <bit-r>, <wid>
This instruction adds the right vector into the left vector, the
vectors having the width <wid>. If any of the bits of either vector
are x or z, the result is x. Otherwise, the result is the arithmetic
sum.
See also the %sub instruction.
* %add/wr <bit-l>, <bit-r>
This is the real valued version of the %add instruction. The arguments
are word indices of the operands. The right operand is added into the
left operand.
See also the %sub/wr instruction.
* %addi <bit-l>, <imm>, <wid>
This instruction adds the immediate value (no x or z bits) into the
left vector. The imm value is limited to 16 significant bits, but it
is zero extended to match any width.
* %and <bit-l>, <bit-r>, <wid>
Perform the bitwise AND of the two vectors, and store the result in
the left vector. Each bit is calculated independent of other bits. AND
means the following:
0 and ? --> 0
? and 0 --> 0
1 and 1 --> 1
otherwise x
* %assign/m <memory-label>, <delay>, <bit> (OBSOLETE)
This instruction does a non-blocking assignment to a bit in a memory
from the specified thread register <bit>. The memory bit is addressed
by index register 3. Bit address zero is the LSB of the first memory
word.
* %assign/mv <memory-label>, <delay>, <bit>
the %assign/mv instruction assigns a vector value to a word in the
labeled memory. The <delay> is the delay in simulation time to the
assignment (0 for non-blocking assignment) and the <bit> is the base
of the vector to write.
The width of the word is retrieved from index register 0.
The address of the word in the memory is from index register 3. The
address is canonical form.
* %assign/v0 <var-label>, <delay>, <bit>
* %assign/v0/d <var-label>, <delayx>, <bit>
The %assign/v0 instruction is a vector version of non-blocking
assignment. The <delay> is the number of clock ticks in the future
where the assignment should be schedule, and the <bit> is the base of
the vector to be assigned to the destination. The vector width is in
index register 0.
The %assign/v0/d variation puts the delay instead into an integer
register that is given by the <delayx> value. This should not be 0, of
course, because integer 0 is taken with the vector width.
The <var-label> references a .var object that can receive non-blocking
assignments. For blocking assignments, see %set/v.
* %assign/v0x1 <var-label>, <delay>, <bit>
This is similar to the %assign/v0 instruction, but adds the index-1
index register with the canonical index of the destination where the
vector is to be written. This allows for part writes into the vector.
* %assign/wr <vpi-label>, <delay>, <index>
This instruction causes a non-blocking assign of the indexed value to
the real object addressed by the <vpi-label> label.
* %assign/x0 <var-label>, <delay>, <bit> (OBSOLETE -- See %assign/v0x)
This does a non-blocking assignment to a functor, similar to the
%assign instruction. The <var-label> identifies the base functor of
the affected variable, and the <delay> gives the delay when the
assignment takes place. The delay may be 0. The actual functor used is
calculated by using <var-label> as a base, and indexing with the
index[0] index register. This supports indexed assignment.
The <bit> is the address of the thread register that contains the bit
value to assign.
* %blend <bit-l>, <bit-r>, <wid>
This instruction blends the bits of a vector into the destination in a
manner like the expression (x ? <a> : <b>). The truth table is:
1 1 --> 1
0 0 --> 0
z z --> z
x x --> x
.... --> x
In other words, if the bits are identical, then take that
value. Otherwise, the value is x.
* %breakpoint
This instruction unconditionally breaks the simulator into the
interactive debugger. The idea is to stop the simulator here and give
the user a chance to display the state of the simulation using
debugger commands.
This may not work on all platforms. If run-time debugging is compiled
out, then this function is a no-op.
* %cassign/v <var-label>, <bit>, <wid>
Perform a continuous assign of a constant value to the target
variable. This is similar to %set, but it uses the cassign port
(port-1) of the signal functor instead of the normal assign, so the
signal responds differently. See "VARIABLE STATEMENTS" in the
README.txt file.
* %cmp/u <bit-l>, <bit-r>, <wid>
* %cmp/s <bit-l>, <bit-r>, <wid>
These instructions perform a generic comparison of two vectors of equal
size. The <bit-l> and <bit-r> numbers address the least-significant
bit of each vector, and <wid> is the width. If either operand is 0,
1, 2 or 3 then it is taken to be a constant replicated to the selected
width.
The results of the comparison go into bits 4, 5, 6 and 7:
4: eq (equal)
5: lt (less than)
6: eeq (case equal)
The eeq bit is set to 1 if all the bits in the vectors are exactly the
same, or 0 otherwise. The eq bit is true if the values are logically
the same. That is, x and z are considered equal. In other words the eq
bit is the same as ``=='' and the eeq bit ``===''.
The lt bit is 1 if the left vector is less then the right vector, or 0
if greater then or equal to the right vector. It is the equivalent of
the Verilog < operator. Combinations of these three bits can be used
to implement all the Verilog comparison operators.
The %cmp/u and %cmp/s differ only in the handling of the lt bit. The
%cmp/u does an unsigned compare, whereas the %cmp/s does a signed
compare. In either case, if either operand contains x or z, then lt
bit gets the x value.
* %cmp/wr <bit-l>, <bit-r>
[compare real values.]
* %cmp/ws <bit-l>, <bit-r>
* %cmp/wu <bit-l>, <bit-r>
[compare signed/unsigned integer words.]
* %cmp/z <bit-l>, <bit-r>, <wid>
* %cmp/x <bit-l>, <bit-r>, <wid>
These instructions are for implementing the casez and casex
comparisons. These work similar to the %cmp/u instructions, except
only an eq bit is calculated. These comparisons both treat z values in
the left or right operand as don't care positions. The %cmp/x
instruction will also treat x values in either operand as don't care.
Only bit 4 is set by these instructions.
* %cvt/ir <bit-l>, <bit-r>
* %cvt/ri <bit-l>, <bit-r>
* %cvt/vr <bit-l>, <bit-r>, <wid>
Copy a word from r to l, converting it from real to integer (ir) or
integer to real (ri) in the process. The source and destination may
be the same word address, leading to a convert in place.
The %cvt/vr opcode converts a real word <bit-r> to a thread vector
starting at <bit-l> and with the width <wid>. Non-integer precision is
lost in the conversion.
* %deassign <var-label>
Deactivate and disconnect a procedural continuous assignment to a
variable. The <var-label> identifies the affected variable.
* %delay <delay>
This opcode pauses the thread, and causes it to be rescheduled for a
time in the future. The <amount> is the number of the ticks in the
future to reschedule, and is >= 0. If the %delay is zero, then the
thread yields the processor for another thread, but will be resumed in
the current time step.
* %delayx <idx>
This is similar to the %delay opcode, except that the parameter
selects an index register, which contains the actual delay. This
supports run-time calculated delays.
* %disable <scope-label>
This instruction terminates threads that are part of a specific
scope. The label identifies the scope in question, and the threads are
the threads that are currently within that scope.
* %div <bit-l>, <bit-r>, <wid>
* %div/s <bit-l>, <bit-r>, <wid>
This instruction arithmetically divides the <bit-l> vector by the
<bit-r> vector, and leaves the result in the <bit-l> vector. IF any of
the bits in either vector are x or z, the entire result is x.
The %div/s instruction is the same as %div, but does signed division.
* %div/wr <bit-l>, <bit-r>
This opcode divides the left operand by the right operand. If the
right operand is 0, then the result is NaN.
* %force/v <label>, <bit>, <wid>
Force a constant value to the target variable. This is similar to %set
and %cassign/v, but it uses the force port (port-2) of the signal
functor instead of the normal assign port (port-0), so the signal
responds differently. See "VARIABLE STATEMENTS" and "NET STATEMENTS"
in the README.txt file.
* %force/x0 <label>, <bit>, <wid>
Force a constant value to part target variable. This is similar to
%set/x instruction, but it uses the force port (port-2) of the signal
functor instead of the normal assign port (port-0), so the signal
responds differently. See "VARIABLE STATEMENTS" and "NET STATEMENTS"
in the README.txt file.
* %fork <code-label>, <scope-label>
This instruction is similar to %jmp, except that it creates a new
thread to start executing at the specified address. The new thread is
created and pushed onto the child stack. It is also marked runnable,
but is not necessarily started until the current thread yields.
The %fork instruction has no effect other then to push a child thread.
See also %join.
* %inv <bit>, <wid>
Perform a bitwise invert of the vector starting at <bit>. The result
replaces the input. Invert means the following, independently for each
bit:
0 --> 1
1 --> 0
x --> x
z --> x
* %ix/get <idx>, <bit>, <wid>
This instruction loads a thread vector starting at <bit>, size <wid>,
into the index register <idx>. The <bit> is the lsb of the value in
thread bit space, and <wid> is the width of the vector.
The function converts the 4-value bits into a binary number, without
sign extension. If any of the bits of the vector is x or z, then the
index register gets the value 0.
The function also writes into bit 4 a 1 if any of the bits of the
input vector are x or z. This is a flag that the 0 value written into
the index register is really the result of calculating from unknown
bits.
4: unknown value
5: (reserved)
6: (reserved)
* %ix/load <idx>, <value>
This instruction loads an immediate value into the addressed index
register. The index register holds numeric values, so the <value> is a
number. The idx value selects the index register, and may be 0, 1, 2
or 3. This is different from %ix/get, which loads the index register
from a value in the thread bit vector.
* %ix/add <idx>, <value>
* %ix/sub <idx>, <value>
* %ix/mul <idx>, <value>
This instruction adds, subtracts, or multiplies an immediate value to
the addressed index register. The index register holds numeric values,
so the <value> is a number. The <idx> value selects the index register,
and may be 0, 1, 2 or 3.
* %jmp <code-label>
The %jmp instruction performs an unconditional branch to a given
location. The parameter is the label of the destination instruction.
* %jmp/[01xz] <code-label>, <bit>
This is a conditional version of the %jmp instruction. In this case,
a single bit (addressed by <bit>) is tested. If it is one of the
values in the part after the /, the jump is taken. For example:
%jmp/xz T_label, 8;
will jump to T_label if bit 8 is x or z.
* %join
This is the partner to %fork. This instruction causes the thread to
wait for the top thread in the child stack to terminate, then
continues. It has no effect in the current thread other then to wait
until the top child is cleared.
It is an error to execute %join if there are no children in the child
stack. Every %join in the thread must have a matching %fork that
spawned off a child thread.
If the matching child instruction is still running, a %join suspends
the calling thread until the child ends. If the child is already
ended, then the %join does not block or yield the thread.
* %load/m <bit>, <memory-label> (OBSOLETE)
This instruction loads a value from a memory bit into the specified
thread register bit. The memory bit is addressed by index register 3.
Bit address zero is the LSB of the first memory word. This
instruction loads only a single bit.
* %load/mv <bit>, <memory-label>, <wid>
this instruction loads a word from the specified memory. The word
address is in index register 3. The width should match the width of
the memory word.
* %load/nx <bit>, <vpi-label>, <idx>
This instruction load a value from a .net object bit. Since .net
objects don't really exist (they are only named indirection into the
netlist) this instruction indexes into the .net list of bits.
* %load/v <bit>, <functor-label>, <wid>
This instruction loads a vector value from the given functor node into
the specified thread register bit. The functor-label can refer to a
.net, a .var or a .functor with a vector output. The entire vector,
from the least significant up to <wid> bits, is loaded starting at
thread bit <bit>. It is an error for the width to not match the vector
width at the functor.
* %load/wr <bit>, <vpi-label>
This instruction reads a real value from the vpi-like object to a word
register.
* %load/x <bit>, <functor-label>, <idx>
* %load/x.p <bit>, <functor-label>, <idx>
This is an indexed load. It uses the contents of the specified index
register to select a bit from a vector functor at <functor-label>. The
bit is pulled from the indexed bit of the addressed functor and loaded
into the destination thread bit. If the indexed value is beyond the
width of the vector, then the result is X.
The %load/x.p is the same, but when the operation is done, it
increments the specified index register. This provides a basic
auto-increment feature.
* %loadi/wr <bit>, <mant>, <exp>
This opcode loads an immediate value, floating point, into the word
register selected by <bit>. The mantissa is an unsigned integer value,
up to 32 bits, that multiplied by 2**(<exp>-0x1000) to make a real
value. The sign bit is OR-ed into the <exp> value at bit 0x2000, and
is removed from the <exp> before calculating the real value.
* %mod <bit-l>, <bit-r>, <wid>
* %mod/s <bit-l>, <bit-r>, <wid>
This instruction calculates the modulus %r of the left operand, and
replaces the left operand with the result. The <wid> gives the width
of the left and the right vectors, and the left vector is completely
replaced with the result.
The /s form does signed %.
* %mov <dst>, <src>, <wid>
This instruction copies a vector from one place in register space to
another. The destination and source vectors are assumed to be the same
width and non-overlapping. The <dst> may not be 0-3, but if the <src>
is one of the 4 constant bits, the effect is to replicate the value
into the destination vector. This is useful for filling a vector.
* %mul <bit-l>, <bit-r>, <wid>
This instruction multiplies the left vector by the right vector, the
vectors having the width <wid>. If any of the bits of either vector
are x or z, the result is x. Otherwise, the result is the arithmetic
product.
* %mul/wr <bit-l>, <bit-r>
This opcode multiplies two real words together. The result replaces
the left operand.
* %muli <bit-l>, <imm>, <wid>
This instruction is the same as %mul, but the second operand is an
immediate value that is padded to the width of the result.
* %nand <dst>, <src>, <wid>
Perform the bitwise NAND of the two vectors, and store the result in
the left vector. Each bit is calculated independent of other bits. NAND
means the following:
0 and ? --> 1
? and 0 --> 1
1 and 1 --> 0
otherwise x
* %nor <dst>, <src>, <wid>
Perform the bitwise nor of the vectors. Each bit in the <dst> is
combined with the corresponding bit in the source, according to the
truth table:
1 nor ? --> 0
? nor 1 --> 0
0 nor 0 --> 1
otherwise x
* %nor/r <dst>, <src>, <wid>
The %nor/r instruction is a reduction nor. That is, the <src> is a
vector with width, but the result is a single bit. The <src> vector is
not affected by the operation unless the <dst> bit is within the
vector. The result is calculated before the <dst> bit is written, so
it is valid to place the <dst> within the <src>.
The actual operation performed is the inverted or of all the bits in
the vector.
* %or <dst>, <src>, <wid>
Perform the bitwise or of the vectors. Each bit in the <dst> is
combined with the corresponding bit in the source, according to the
truth table:
1 or ? --> 1
? or 1 --> 1
0 or 0 --> 0
otherwise x
* %or/r <dst>, <src>, <wid>
This is a reduction version of the %or opcode. The <src> is a vector,
and the <dst> is a writable scalar. The <dst> gets the value of the
or of all the bits of the src vector.
* %release/net <functor-label>
* %release/reg <functor-label>
Release the force on the signal that is represented by the functor
<functor-label>. The force was previously activated with a %force/v
statement. If no force was active on this functor the statement does
nothing. The %release/net sends to the labeled functor the release
command with net semantics: the unforced value is propagated to the
output of the signal after the release is complete. The %release/reg
sends the release command with reg semantics: the signal holds its
forced value until another value propagates through.
* %set/v <var-label>, <bit>, <wid>
This sets a vector to a variable, and is used to implement blocking
assignments. The <var-label> identifies the variable to receive the
new value. Once the set completes, the value is immediately available
to be read out of the variable. The <bit> is the address of the thread
register that contains the LSB of the vector, and the <wid> is the
size of the vector. The width must exactly match the width of the
signal.
* %set/mv <memory-label>, <bit>, <wid>
This sets a thread vector to a memory word. The <memory-label>
addresses a memory device, and the <bit>,<wid> describe a vector to be
written. Index register 3 contains the address of the word within the
memory. The address (in canonical form) is precalculated and loaded
into index register 3.
* %set/wr <vpi-label>, <bit>
This instruction writes a real word to the specified VPI-like object.
* %set/x0 <var-label>, <bit>, <wid>
This sets the part of a signal vector, the address calculated by
using the index register 0 to index the base within the vector of
<var-label>. The destination must be a signal of some sort. Otherwise,
the instruction will fail.
The addressing is canonical (0-based) so the compiler must figure out
non-zero offsets, if any. The width is the width of the part being
written. The other bits of the vector are not touched.
The index may be signed, and if less then 0, the beginning bits are
not assigned. Also, if the bits go beyond the end of the signal, those
bits are not written anywhere.
* %shiftl/i0 <bit>, <wid>
This instruction shifts the vector left (towards more significant
bits) by the amount in index register 0. The <bit> is the address of
the lsb of the vector, and <wid> the width of the vector. The shift is
done in place. Zero values are shifted in.
* %shiftr/i0 <bit>, <wid>
* %shiftr/s/i0 <bit>, <wid>
This instruction shifts the vector right (towards the less significant
bits) by the amount in the index register 0. The <bit> is the address
of the lsb of the vector, and <wid> is the width of the vector. The
shift is done in place.
%shiftr/i0 is an unsigned down shift, so zeros are shifted into the
top bits. %shiftr/s/i0 is a signed shift, so the value is sign-extended.
* %sub <bit-l>, <bit-r>, <wid>
This instruction arithmetically subtracts the right vector out of the
left vector. It accomplishes this by adding to the left vector 1 plus
the 1s complement of the right vector. The carry value is dropped, and
the result, placed in <bit-l>, is the subtraction of <bit-r> from the
input <bit-l>. Both vectors have the same width. If any bits in either
operand are x, then the entire result is x.
See also the %add instruction.
* %subi <bit-l>, <imm>, <wid>
This instruction arithmetically subtracts the immediate value from the
left vector. The <imm> value is a 16bit unsigned value zero-extended to
the <wid> of the left vector. The result replaces the left vector.
See also the %addi instruction.
* %sub/wr <bit-l>, <bit-r>
This instruction operates on real values in word registers. The right
indexed value is subtracted from the left indexed value, and the
result placed in the left index.
* %vpi_call <name> [, ...]
This instruction makes a call to a system task that was declared using
VPI. The operands are compiled down to a vpiHandle for the call. The
instruction contains only the vpiHandle for the call. See the vpi.txt
file for more on system task/function calls.
* %vpi_func <name>, <dst>, <wid> [, ...]
This instruction is similar to %vpi_call, except that it is for
calling system functions. The difference here is the <dst> and <wid>
parameters that specify where the return value is to go. The normal
means that the VPI code uses to write the return value causes those
bits to go here.
* %wait <functor-label>
When a thread executes this instruction, it places itself in the
sensitive list for the addressed functor. The functor holds all the
threads that await the functor. When the defined sort of event occurs
on the functor, a thread schedule event is created for all the threads
in its list and the list is cleared.
* %xnor <dst>, <src>, <wid>
This does a bitwise exclusive nor (~^) of the <src> and <dst> vector,
and leaves the result in the <dst> vector. xnor is this:
0 xnor 0 --> 1
0 xnor 1 --> 0
1 xnor 0 --> 0
1 xnor 1 --> 1
otherwise x
* %xor <dst>, <src>, <wid>
This does a bitwise exclusive or (^) of the <src> and <dst> vector,
and leaves the result in the <dst> vector. xor is this:
0 xnor 0 --> 0
0 xnor 1 --> 1
1 xnor 0 --> 1
1 xnor 1 --> 0
otherwise x
/*
* Copyright (c) 2001-2003 Stephen Williams (steve@xxxxxxxxxx)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
* General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_quick_start.html
Index: geda_icarus_quick_start.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_quick_start</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_quick_start?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_quick_start?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_quick_start?do=export_raw" />
<meta name="date" content="2006-05-07T16:55:46-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="getting_started_with_icarus_verilog" id="getting_started_with_icarus_verilog">Getting Started with Icarus Verilog</a></h1>
<div class="level1">
<pre class="code">* Getting Started with Icarus Verilog
Icarus Verilog is a Verilog compiler. It is suitable for use as a
simulator, and, to some degree, synthesizer. Icarus Verilog runs under
Linux and a variety of UNIX systems, as well as Windows as a command
line tool, so the instructions are generally applicable to all
environments. Note that this is only a quick start. For more detailed
documentation, see the manual page for the iverilog command.
* Hello, World!
The first thing you want to do as a user is learn how to compile and
execute even the most trivial design. For the purposes of simulation,
we use as our example *the* most trivial simulation:
module main;
initial
begin
$display("Hello, World");
$finish ;
end
endmodule
By a text editor (or copy hello.vl from the Icarus Verilog examples
directory) arrange for this program to be in a text file, "hello.vl".
Next, compile this program with a command like this:
% iverilog -o hello hello.vl
The results of this compile are placed into the file "hello", as the
"-o" flag tells the compiler where to place the compiled result. Next,
execute the compiled program like so:
% vvp hello
Hello, World
And there it is, the program has been executed. So what happened? The
first step, the "iverilog" command, read and interpreted the source
file, then generated a compiled result. The compiled form may be
selected by command line switches, but the default form is the VVP
format, which is actually run by the "vvp" command.
The "iverilog" and "vvp" commands are the only commands that users
use to invoke Icarus Verilog. What the compiler actually does is
controlled by command line switches. In our little example, we asked
the compiler to compile the source program to the default vvp form,
which is in turn executed by the vvp program.
* Windows Install
The easiest way to install under Windows is to get a precompiled
installer for the version you wish to install. Icarus Verilog is
distributed for Windows users as a self-installing .exe. Just execute
the installer and follow the instructions. During the install, take
note of the directory where the program is installed: for example,
C:\iverilog is a good place to install.
Once the binary is installed, you need to add the bin directory to
your execution path. The executables you need are in C:\iverilog\bin,
where the "C:\iverilog" part is actually the root of where you
installed the package. The programs are in the bin subdirectory. Put
this directory in your PATH environment variable, and the above
commands become accessible to you at the command line prompt, or even
in batch files.
* Linux Install
Under Linux, the install is even easier. For RedHat and Mandrake based
systems, there is the appropriate RPM file. Just install the package
with the "rpm -U <file>" command. Debian users should get Icarus
Verilog packages from the main Debian software site.
* Install From Source
In this case, see README.txt and other documentation that comes with
the source.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_readme.html
Index: geda_icarus_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_readme?do=export_raw" />
<meta name="date" content="2006-05-07T16:38:52-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="the_icarus_verilog_compilation_system" id="the_icarus_verilog_compilation_system">The Icarus Verilog Compilation System</a></h1>
<div class="level1">
<pre class="code"> THE ICARUS VERILOG COMPILATION SYSTEM
Copyright 2000-2004 Stephen Williams
1.0 What is ICARUS Verilog?
Icarus Verilog is intended to compile ALL of the Verilog HDL as
described in the IEEE-1364 standard. Of course, it's not quite there
yet. It does currently handle a mix of structural and behavioral
constructs. For a view of the current state of Icarus Verilog, see its
home page at <http://www.icarus.com/eda/verilog>.
Icarus Verilog is not aimed at being a simulator in the traditional
sense, but a compiler that generates code employed by back-end
tools. These back-end tools currently include a simulator engine
called VVP, an XNF (Xilinx Netlist Format) generator and an EDIF FPGA
netlist generator. In the future, backends are expected for EDIF/LPM,
structural Verilog, VHDL, etc.
For instructions on how to run Icarus Verilog,
see the ``iverilog'' man page.
2.0 Building/Installing Icarus Verilog From Source
If you are starting from source, the build process is designed to be
as simple as practical. Someone basically familiar with the target
system and C/C++ compilation should be able to build the source
distribution with little effort. Some actual programming skills are
not required, but helpful in case of problems.
If you are building for Windows, see the mingw.txt file.
2.1 Compile Time Prerequisites
You need the following software to compile Icarus Verilog from source
on a UNIX-like system:
- GNU Make
The Makefiles use some GNU extensions, so a basic POSIX
make will not work. Linux systems typically come with a
satisfactory make. BSD based systems (i.e., NetBSD, FreeBSD)
typically have GNU make as the gmake program.
- ISO C++ Compiler
The ivl and ivlpp programs are written in C++ and make use
of templates and some of the standard C++ library. egcs and
recent gcc compilers with the associated libstdc++ are known
to work. MSVC++ 5 and 6 are known to definitely *not* work.
- bison and flex
- gperf 2.7
The lexical analyzer doesn't recognize keywords directly,
but instead matches symbols and looks them up in a hash
table in order to get the proper lexical code. The gperf
program generates the lookup table.
A version problem with this program is the most common cause
of difficulty. See the Icarus Verilog FAQ.
- readline 4.2
On Linux systems, this usually means the readline-devel
rpm. In any case, it is the development headers of readline
that are needed.
- termcap
The readline library in turn uses termcap.
If you are building from CVS, you will also need software to generate
the configure scripts.
- autoconf 2.53
This generates configure scripts from configure.in. The 2.53
or later versions are known to work, autoconf 2.13 is
reported to *not* work.
2.2 Compilation
Unpack the tar-ball and cd into the verilog-######### directory
(presumably that is how you got to this README) and compile the source
with the commands:
./configure
make
Normally, this command automatically figures out everything it needs
to know. It generally works pretty well. There are a few flags to the
configure script that modify its behavior:
--without-ipal
This turns off support for Icarus PAL, whether ipal
libraries are installed or not.
--prefix=<root>
The default is /usr/local, which causes the tool suite to
be compiled for install in /usr/local/bin,
/usr/local/share/ivl, etc.
I recommend that if you are configuring for precompiled
binaries, use --prefix=/usr. On Solaris systems, it is
common to use --prefix=/opt. You can configure for a non-root
install with --prefix=$HOME.
--enable-vvp32 (experimental)
If compiling on AMD64 systems, this enables the
compilation of 32bit compatible vvp (vvp32) and the vpi
modules that match.
2.2.1 Special AMD64 Instructions
(The Icarus Verilog RPM for x86_64 is build using these instructions.)
If you are building for Linux/AMD64 (a.k.a x86_64) then to get the
most out of your install, first make sure you have both 64bit and
32bit development libraries installed. Then configure with this
somewhat more complicated command:
./configure libdir64='$(prefix)/lib64' vpidir1=vpi64 vpidir2=. --enable-vvp32
This reflects the convention on AMD64 systems that 64bit libraries go
into lib64 directories. The "--enable-vvp32" also turns on 32bit
compatibility files. A 32bit version of vvp (vvp32) will be created,
as well as 32bit versions of the development libraries and bundled VPI
libraries.
2.3 (Optional) Testing
To run a simple test before installation, execute
make check
The commands printed by this run might help you in running Icarus
Verilog on your own Verilog sources before the package is installed
by root.
2.4 Installation
Now install the files in an appropriate place. (The makefiles by
default install in /usr/local unless you specify a different prefix
with the --prefix=<path> flag to the configure command.) You may need
to do this as root to gain access to installation directories.
make install
2.5 Uninstallation
The generated Makefiles also include the uninstall target. This should
remove all the files that ``make install'' creates.
3.0 How Icarus Verilog Works
This tool includes a parser which reads in Verilog (plus extensions)
and generates an internal netlist. The netlist is passed to various
processing steps that transform the design to more optimal/practical
forms, then is passed to a code generator for final output. The
processing steps and the code generator are selected by command line
switches.
3.1 Preprocessing
There is a separate program, ivlpp, that does the preprocessing. This
program implements the `include and `define directives producing
output that is equivalent but without the directives. The output is a
single file with line number directives, so that the actual compiler
only sees a single input file. See ivlpp/ivlpp.txt for details.
3.2 Parse
The Verilog compiler starts by parsing the Verilog source file. The
output of the parse is a list of Module objects in "pform". The pform
(see pform.h) is mostly a direct reflection of the compilation
step. There may be dangling references, and it is not yet clear which
module is the root.
One can see a human readable version of the final pform by using the
``-P <path>'' flag to the compiler. This will cause iverilog to dump
the pform into the file named <path>.
3.3 Elaboration
This phase takes the pform and generates a netlist. The driver selects
(by user request or lucky guess) the root module to elaborate,
resolves references and expands the instantiations to form the design
netlist. (See netlist.txt.) Final semantic checks are performed during
elaboration, and some simple optimizations are performed. The netlist
includes all the behavioral descriptions, as well as gates and wires.
The elaborate() function performs the elaboration.
One can see a human readable version of the final, elaborated and
optimized netlist by using the ``-N <path>'' flag to the compiler. If
elaboration succeeds, the final netlist (i.e., after optimizations but
before code generation) will be dumped into the file named <path>.
Elaboration is actually performed in two steps: scopes and parameters
first, followed by the structural and behavioral elaboration.
3.3.1 Scope Elaboration
This pass scans through the pform looking for scopes and parameters. A
tree of NetScope objects is built up and placed in the Design object,
with the root module represented by the root NetScope object. The
elab_scope.cc and elab_pexpr.cc files contain most of the code for
handling this phase.
The tail of the elaborate_scope behavior (after the pform is
traversed) includes a scan of the NetScope tree to locate defparam
assignments that were collected during scope elaboration. This is when
the defparam overrides are applied to the parameters.
3.3.2 Netlist Elaboration
After the scopes and parameters are generated and the NetScope tree
fully formed, the elaboration runs through the pform again, this time
generating the structural and behavioral netlist. Parameters are
elaborated and evaluated by now so all the constants of code
generation are now known locally, so the netlist can be generated by
simply passing through the pform.
3.4 Optimization
This is actually a collection of processing steps that perform
optimizations that do not depend on the target technology. Examples of
some useful transformations are
- eliminate null effect circuitry
- combinational reduction
- constant propagation
The actual functions performed are specified on the ivl command line by
the -F flags (see below).
3.5 Code Generation
This step takes the design netlist and uses it to drive the code
generator (see target.h). This may require transforming the
design to suit the technology.
The emit() method of the Design class performs this step. It runs
through the design elements, calling target functions as need arises
to generate actual output.
The user selects the target code generator with the -t flag on the
command line.
3.6 ATTRIBUTES
NOTE: The $attribute syntax will soon be deprecated in favor of the
Verilog-2001 attribute syntax, which is cleaner and standardized.
The parser accepts, as an extension to Verilog, the $attribute module
item. The syntax of the $attribute item is:
$attribute (<identifier>, <key>, <value>);
The $attribute keyword looks like a system task invocation. The
difference here is that the parameters are more restricted then those
of a system task. The <identifier> must be an identifier. This will be
the item to get an attribute. The <key> and <value> are strings, not
expressions, that give the key and the value of the attribute to be
attached to the identified object.
Attributes are [<key> <value>] pairs and are used to communicate with
the various processing steps. See the documentation for the processing
step for a list of the pertinent attributes.
Attributes can also be applied to gate types. When this is done, the
attribute is given to every instantiation of the primitive. The syntax
for the attribute statement is the same, except that the <identifier>
names a primitive earlier in the compilation unit and the statement is
placed in global scope, instead of within a module. The semicolon is
not part of a type attribute.
Note that attributes are also occasionally used for communication
between processing steps. Processing steps that are aware of others
may place attributes on netlist objects to communicate information to
later steps.
Icarus Verilog also accepts the Verilog 2001 syntax for
attributes. They have the same general meaning as with the $attribute
syntax, but they are attached to objects by position instead of by
name. Also, the key is a Verilog identifier instead of a string.
4.0 Running iverilog
The preferred way to invoke the compiler is with the iverilog(1)
command. This program invokes the preprocessor (ivlpp) and the
compiler (ivl) with the proper command line options to get the job
done in a friendly way. See the iverilog(1) man page for usage details.
4.1 EXAMPLES
Example: Compiling "hello.vl"
------------------------ hello.vl ----------------------------
module main();
initial
begin
$display("Hi there");
$finish ;
end
endmodule
--------------------------------------------------------------
Ensure that "iverilog" is on your search path, and the vpi library
is available.
To compile the program:
iverilog hello.vl
(The above presumes that /usr/local/include and /usr/local/lib are
part of the compiler search path, which is usually the case for gcc.)
To run the program:
./a.out
You can use the "-o" switch to name the output command to be generated
by the compiler. See the iverilog(1) man page.
5.0 Unsupported Constructs
Icarus Verilog is in development - as such it still only supports a
(growing) subset of Verilog. Below is a description of some of the
currently unsupported Verilog features. This list is not exhaustive,
and does not account for errors in the compiler. See the Icarus
Verilog web page for the current state of support for Verilog, and in
particular, browse the bug report database for reported unsupported
constructs.
- System functions are supported, but the return value is a little
tricky. See SYSTEM FUNCTION TABLE FILES in the iverilog man page.
- Specify blocks are parsed but ignored in general.
- trireg is not supported. tri0 and tri1 are supported.
- tran primitives, i.e. tran, tranif1, tranif0, rtran, rtranif1
and rtranif0 are not supported.
- Net delays, of the form "wire #N foo;" do not work. Delays in
every other context do work properly, including the V2001 form
"wire #5 foo = bar;"
- Event controls inside non-blocking assignments are not supported.
i.e.: a <= @(posedge clk) b;
- Macro arguments are not supported. `define macros are supported,
but they cannot take arguments.
5.1 Nonstandard Constructs or Behaviors
Icarus Verilog includes some features that are not part of the
IEEE1364 standard, but have well defined meaning, and also sometimes
gives nonstandard (but extended) meanings to some features of the
language that are defined. See the "extensions.txt" documentation for
more details.
$is_signed(<expr>)
This system function returns 1 if the expression contained is
signed, or 0 otherwise. This is mostly of use for compiler
regression tests.
$sizeof(<expr>)
$bits(<expr>)
The $bits system function returns the size in bits of the
expression that is its argument. The result of this
function is undefined if the argument doesn't have a
self-determined size.
The $sizeof function is deprecated in favor of $bits, which is
the same thing, but included in the SystemVerilog definition.
$simtime
The $simtime system function returns as a 64bit value the
simulation time, unscaled by the time units of local
scope. This is different from the $time and $stime functions
which return the scaled times. This function is added for
regression testing of the compiler and run time, but can be
used by applications who really want the simulation time.
Note that the simulation time can be confusing if there are
lots of different `timescales within a design. It is not in
general possible to predict what the simulation precision will
turn out to be.
$mti_random()
$mti_dist_uniform
These functions are similar to the IEEE1364 standard $random
functions, but they use the Mersenne Twister (MT19937)
algorithm. This is considered an excellent random number
generator, but does not generate the same sequence as the
standardized $random.
Builtin system functions
Certain of the system functions have well defined meanings, so
can theoretically be evaluated at compile time, instead of
using runtime VPI code. Doing so means that VPI cannot
override the definitions of functions handled in this
manner. On the other hand, this makes them synthesizable, and
also allows for more aggressive constant propagation. The
functions handled in this manner are:
$bits
$signed
$sizeof
$unsigned
Implementations of these system functions in VPI modules will
be ignored.
Preprocessing Library Modules
Icarus Verilog does preprocess modules that are loaded from
libraries via the -y mechanism. However, the only macros
defined during compilation of that file are those that it
defines itself (or includes) or that are defined on the
command line or command file.
Specifically, macros defined in the non-library source files
are not remembered when the library module is loaded. This is
intentional. If it were otherwise, then compilation results
might vary depending on the order that libraries are loaded,
and that is too unpredictable.
It is said that some commercial compilers do allow macro
definitions to span library modules. That's just plain weird.
Width in %t Time Formats
Standard Verilog does not allow width fields in the %t formats
of display strings. For example, this is illegal:
$display("Time is %0t", %time);
Standard Verilog instead relies on the $timeformat to
completely specify the format.
Icarus Verilog allows the programmer to specify the field
width. The "%t" format in Icarus Verilog works exactly as it
does in standard Verilog. However, if the programmer chooses
to specify a minimum width (i.e., "%5t"), then for that display
Icarus Verilog will override the $timeformat minimum width and
use the explicit minimum width.
vpiScope iterator on vpiScope objects.
In the VPI, the normal way to iterate over vpiScope objects
contained within a vpiScope object, is the vpiInternalScope
iterator. Icarus Verilog adds support for the vpiScope
iterator of a vpiScope object, that iterates over *everything*
the is contained in the current scope. This is useful in cases
where one wants to iterate over all the objects in a scope
without iterating over all the contained types explicitly.
time 0 race resolution.
Combinational logic is routinely modeled using always
blocks. However, this can lead to race conditions if the
inputs to the combinational block are initialized in initial
statements. Icarus Verilog slightly modifies time 0 scheduling
by arranging for always statements with ANYEDGE sensitivity
lists to be scheduled before any other threads. This causes
combinational always blocks to be triggered when the values in
the sensitivity list are initialized by initial threads.
Nets with Types
Icarus Verilog support an extension syntax that allows nets
and regs to be explicitly typed. The currently supported types
are logic, bool and real. This implies that "logic" and "bool"
are new keywords. Typical syntax is:
wire real foo = 1.0;
reg logic bar, bat;
... and so forth. The syntax can be turned off by using the
-g2 flag to iverilog, and turned on explicitly with the -g2x
flag to iverilog.
6.0 CREDITS
Except where otherwise noted, Icarus Verilog, ivl and ivlpp are
Copyright Stephen Williams. The proper notices are in the head of each
file. However, I have early on received aid in the form of fixes,
Verilog guidance, and especially testing from many people. Testers in
particular include a larger community of people interested in a GPL
Verilog for Linux.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_vpi_mp.html
Index: geda_icarus_vpi_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_vpi_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_vpi_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_vpi_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_vpi_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:05:58-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="compile_front_end_for_vpi_modules_man-page" id="compile_front_end_for_vpi_modules_man-page">Compile front end for VPI modules man-page</a></h1>
<div class="level1">
<pre class="code">iverilog-vpi(1) $Date: 2006/08/22 02:56:12 $ iverilog-vpi(1)
NAME
iverilog-vpi - Compile front end for VPI modules
SYNOPSIS
iverilog-vpi [--name=name] sourcefile...
DESCRIPTION
iverilog-vpi is a tool to simplify the compilation of VPI modules for
use with Icarus Verilog. It takes on the command line a list of C or
C++ source files, and generates as output a linked VPI module. See the
vvp(1) man page for a description of how the linked module is loaded by
a simulation.
The output is named after the first source file. For example, if the
first source file is named foo.c, the output becomes foo.vpi.
OPTIONS
iverilog-vpi accepts the following options:
-llibrary
Include the named library in the link of the VPI module. This
allows VPI modules to further reference external libraries.
--name=name
Normally, the output VPI module will be named after the first
source file passed to the command. This flag sets the name
(without the .vpi suffix) of the output vpi module.
--install-dir
This flag causes the program to print the install directory for
VPI modules, then exit. It is a convenience for makefiles or
automated plug-in installers.
PC-ONLY OPTIONS
The PC port of iverilog-vpi includes two special flags needed to sup-
port the more intractable development environment. These flags help the
program locate parts that it needs.
-mingw=path
Tell the program the root of the Mingw compiler tool suite. The
vvp runtime is compiled with this compiler, and this is the
compiler that iverilog-vpi expects to use to compile your
source code. This is normally not needed, and if you do use it,
it is only needed once. The compiler will save the path in the
registry for use later.
-ivl=path
Set for the use during compilation the root if the Icarus Ver-
ilog install. This is the place where you installed Icarus Ver-
ilog when you ran the installer. This flag is also only needed
once, and the path is stored in the registry for future use.
UNIX-ONLY OPTIONS
The UNIX version of iverilog-vpi includes additional flags to let Make-
file gurus peek at the configuration of the iverilog installation.
This way, Makefiles can be written that handle complex VPI builds
natively, and without hard-coding values that depend on the system and
installation. If used at all, these options must be used one at a
time, and without any other options or directives.
--cflags
Print the compiler flags (CFLAGS or CXXFLAGS) needed to compile
source code destined for a VPI module.
--ldflags
Print the linker flags (LDFLAGS) needed to link a VPI module.
--ldlibs
Print the libraries (LDLIBS) needed to link a VPI module.
-m32 On 64bit systems that support it (and support vvp32) this flag
requests a 32bit vpi binary instead of the default 64bit
binary.
Example GNU makefile that takes advantage of these flags:
CFLAGS = -Wall -O $(CFLAGS_$@)
VPI_CFLAGS := $(shell iverilog-vpi --cflags)
CFLAGS_messagev.o = $(VPI_CFLAGS)
CFLAGS_fifo.o = $(VPI_CFLAGS)
messagev.o fifo.o: transport.h
messagev.vpi: messagev.o fifo.o
iverilog-vpi $^
AUTHOR
Steve Williams (steve@xxxxxxxxxx)
SEE ALSO
iverilog(1), vvp(1), <http://www.icarus.com/eda/verilog/>,
<http://www.mingw.org>,
COPYRIGHT
Copyright �© 2002 Stephen Williams
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version $Date: 2006/08/22 02:56:12 $ iverilog-vpi(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_vpi_within_vvp.html
Index: geda_icarus_vpi_within_vvp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_vpi_within_vvp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_vpi_within_vvp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_vpi_within_vvp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_vpi_within_vvp?do=export_raw" />
<meta name="date" content="2006-05-07T17:00:07-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="vpi_within_vvp" id="vpi_within_vvp">VPI_within_VVP</a></h1>
<div class="level1">
<pre class="code">/*
* Copyright (c) 2001 Stephen Williams (steve@xxxxxxxxxx)
*
* $Id: geda_icarus_vpi_within_vvp.html,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
*/
VPI WITHIN VVP
System tasks and functions in Verilog are implemented in Icarus
Verilog by C routines written with VPI. This implies that the vvp
engine must provide at least a subset of the Verilog VPI
interface. The minimalist concepts of vvp, however, make the method
less then obvious.
Within a Verilog design, there is a more or less fixed web of
vpiHandles that is the design database as is available to VPI
functions. The Verilog standard defines quite a lot of types, but the
vvp only implements the ones it needs. The VPI web is added into the
design using special pseudo-ops that create the needed objects.
LOADING VPI MODULES
The vvp runtime loads VPI modules at runtime before the parser reads
in the source files. This gives the modules a chance to register tasks
and functions before the source is compiled. This allows the compiler
to resolve references to system tasks and system functions to a
vpiHandle at compile time. References to missing tasks/function can
thus be caught before the simulation is run.
NOTE: This also, miraculously, allows for some minimal support of
the compiletf call. From the perspective of VPI code, compilation
of the VVP source is not unlike compilation of the original
Verilog.
The handle that the vvp threads have to the VPI are the vpiHandles of
the system tasks and functions. The %vpi_call instruction, once compiled,
carries the vpiHandle of the system task.
SYSTEM TASK CALLS
A system task call invokes a VPI routine, and makes available to that
routine the arguments to the system task. The called routine gets
access to the system task call by calling back the VPI requesting the
handle. It uses the handle, in turn, to get hold of the operands for
the task.
All that vvp needs to know about a system task call is the handle of
the system task definitions (created by the vpi_register_systf
function) and the arguments of the actual call. The arguments are
tricky because the list has no bound, even though each particular call
in the Verilog source has a specific set of parameters.
Since each call takes a fixed number of parameters, the input source
can include in the statement the list of arguments. The argument list
will not fit in a single generated instruction, but a vpiHandle that
refers to a vpiSysTfCall does. Therefore, the compiler can take the
long argument list and form a vpiSysTaskCall object. The generated
instruction then only needs to be a %vpi_call with the single parameter
that is the vpiHandle for the call.
SYSTEM FUNCTION CALLS
System function calls are similar to system tasks. The only
differences are that all the arguments are input only, and there is a
single magic output that is the return value. The same %vpi_call can
even be used to call a function.
System functions, like system tasks, can only be called from thread
code. However, they can appear in expressions, even when that
expression is entirely structural. The desired effect is achieved by
writing a wrapper thread that calls the function when inputs change,
and that writes the output into the containing expression.
SYSTEM TASK/FUNCTION ARGUMENTS
The arguments to each system task or call are not stored in the
instruction op-code, but in the vpiSysTfCall object that the compiler
creates and that the %vpi_call instruction ultimately refers to. All
the arguments must be some sort of object that can be represented by a
vpiHandle at compile time.
Arguments are handled at compile time by the parser, which uses the
argument_list rule to build a list of vpiHandle objects. Each argument
in the argument_list invokes whatever function is appropriate for the
token in order to make a vpiHandle object for the argument_list. When
all this is done, an array of vpiHandles is passed to code to create a
vpiSysTfCall object that has all that is needed to make the call.
SCOPES
VPI can access scopes as objects of type vpiScope. Scopes have names
and can also contain other sub-scopes, all of which the VPI function
can access by the vpiInternalScope reference. Therefore, the run-time
needs to form a tree of scopes into which other scoped VPI objects are
placed.
A scope is created with a .scope directive, like so:
<label> .scope "name" [, <parent>];
.timescale <units>;
The scope takes a string name as the first parameter. If there is an
additional parameter, it is a label of the directive for the parent
scope. Scopes that have no parent are root scopes. It is an error to
declare a scope with the same name more then once in a parent scope.
The name string given when creating the scope is the basename for the
scope. The vvp automatically constructs full names from the scope
hierarchy, and runtime VPI code can access that full name with the
vpiFullname reference.
The .timescale directive changes the scope units from the simulation
precision to the specified precision. The .timescale directive affects
the current scope.
Objects that place themselves in a scope place themselves in the
current scope. The current scope is the one that was last mentioned by
a .scope directive. If the wrong scope is current, the label on a
scope directive can be used to resume a scope. The syntax works like
this:
.scope <symbol>;
In this case, the <symbol> is the label of a previous scope directive,
and is used to identify the scope to be resumed. A scope resume
directive cannot have a label.
VARIABLES
Reg vectors (scalars are vectors of length 1) are created by .var
statements in the source. The .var statement includes the declared
name of the variable, and the indices of the MSB and LSB of the
vector. The vpiHandle is then created with this information, and the
vpi_ipoint_t pointer to the LSB functor of the variable. VPI programs
access the vector through the vpiHandle and related functions. The VPI
code gets access to the declared indices.
The VPI interface to variable (vpiReg objects) uses the MSB and LSB
values that the user defined to describe the dimensions of the
object.
/*
* Copyright (c) 2001 Stephen Williams (steve@xxxxxxxxxx)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
* General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_vvp_runtime.html
Index: geda_icarus_vvp_runtime.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_vvp_runtime</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_vvp_runtime?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_vvp_runtime?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_vvp_runtime?do=export_raw" />
<meta name="date" content="2006-05-07T17:05:08-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="icarus_verilog_vvp_runtime_engine_man-page" id="icarus_verilog_vvp_runtime_engine_man-page">Icarus Verilog vvp runtime engine man-page</a></h1>
<div class="level1">
<pre class="code">vvp(1) $Date: 2006/08/22 02:56:12 $ vvp(1)
NAME
vvp - Icarus Verilog vvp runtime engine
SYNOPSIS
vvp [-sv] [-Mpath] [-mmodule] [-llogfile] inputfile [extended-args...]
DESCRIPTION
vvp is the run time engine that executes the default compiled form gen-
erated by Icarus Verilog. The output from the iverilog command is not
by itself executable on any platform. Instead, the vvp program is
invoked to execute the generated output file.
OPTIONS
vvp accepts the following options:
-llogfile
This flag specifies a logfile where all MCI <stdlog> output
goes. Specify logfile as �-� to send log output to <stderr>.
$display and friends send their output both to <stdout> and
<stdlog>.
-Mpath This flag adds a directory to the path list used to locate VPI
modules. The default path includes only the install directory
for the system.vpi module, but this flag can add other directo-
ries. Multiple paths are allowed, and modules will be searched
in order.
-mmodule
Tell the vvp run time to load the named module before executing
the simulation. The system.vpi module is loaded by default, but
additional modules, including modules that you compiled
locally, can be specified with this flag. Any number of modules
can be loaded, and they will be linked in the order they are
listed on the command line.
Normally, you only need to specify the name of the module,
without any directory path or .vpi suffix and the search path
is scanned to find the module. However, if the name includes at
least one directory character, then the search path is not
scanned and the name is assumed to be a complete file name.
-s Stop. This will cause the simulation to stop in the beginning,
before any events are scheduled. This allows the interactive
user to get hold of the simulation just before it starts.
-v Turn on verbose messages. This will cause information about run
time progress to be printed to standard out.
EXTENDED ARGUMENTS
The vvp options described above must come before the design file name.
After the design file name, however, there may be any number of unspec-
ified arguments. These arguments are not interpreted by vvp but are
instead passed on to the executed design, and are available via the
$test$plusargs and $value$plusargs system functions.
Arguments that do not start with the plus(+) character are not avail-
able to the $plusargs system tasks, but can still be accessed via PLI
code via the vpi_get_vlog_info function. This means that vpi modules
may use arguments that do not start with + and be assured that they do
not interfere with user defined plus-args.
There are a few extended arguments that are interpreted by the standard
system.vpi module, which implements the standard system tasks and so is
always included. These arguments are described here.
-vcd|-vcd-none
This extended argument sets the wave dump format to VCD. This
is the default in the absence of any IVERILOG_DUMPER environ-
ment variable. The VCD dump files are large and ponderous, but
are also maximally compatible with third party tools that read
waveform dumps.
The -vcd-none variant actually suppresses all waveform output. This can
make long simulations run faster.
-lxt|-lxt-speed|-lxt-space|-lxt-none
These extended arguments set the wave dump format to lxt, pos-
sibly with format optimizations. The -lxt-space flag sets the
output format to lxt with full compression enabled. The result-
ing files are quite small. The -lxt-speed chooses the lxt com-
pression mode that leads to the best execution time and the
fastest read time, at the expense of some file size.
The -lxt-none variant actually suppresses all waveform output. This can
make long simulations run faster.
-lxt2 The LXT2 format is slower then LXT (faster then VCD) but takes
less space, and is written out incrementally. Thus, you can
view lxt2 files while a simulation is still running (or paused)
or if your simulation crashes or is killed, you still have a
useful dump.
ENVIRONMENT
The vvp command also accepts some environment variables that control
its behavior. These can be used to make semi-permanent changes.
IVERILOG_DUMPER=lxt|lxt2|vcd|none
This selects the output format for the waveform output. Nor-
mally, waveforms are dumped in vcd format, but this variable
can be used to select lxt format, which is far more compact,
though limited to gtkwave or compatible viewers. It can also be
used to suppress VCD output, a time-saver for regression tests.
INTERACTIVE MODE
The simulation engine supports an interactive mode. The user may inter-
rupt the simulation (typically by typing Ctrl-C) to get to the interac-
tive prompt. From that prompt, the help command prints a brief summary
of the available commands.
The interactive mode may also be entered by a call to the $stop system
task from within the simulation, or by a call to the vpi_control VPI
function with the vpiStop control argument. These means of entering
interactive mode are equivalent.
AUTHOR
Steve Williams (steve@xxxxxxxxxx)
SEE ALSO
iverilog(1), iverilog-vpi(1), <http://www.icarus.com/eda/verilog/>
COPYRIGHT
Copyright �© 2001-2003 Stephen Williams
This document can be freely redistributed according to the terms of the
GNU General Public License version 2.0
Version $Date: 2006/08/22 02:56:12 $ vvp(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_vvp_simulation.html
Index: geda_icarus_vvp_simulation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_vvp_simulation</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_vvp_simulation?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_vvp_simulation?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_vvp_simulation?do=export_raw" />
<meta name="date" content="2006-05-07T16:59:15-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="vvp_simulation_engine" id="vvp_simulation_engine">VVP Simulation Engine</a></h1>
<div class="level1">
<pre class="code">/*
* Copyright (c) 2001 Stephen Williams (steve@xxxxxxxxxx)
*
* $Id: geda_icarus_vvp_simulation.html,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
*/
VVP SIMULATION ENGINE
The VVP simulator takes as input source code not unlike assembly
language for a conventional processor. It is intended to be machine
generated code emitted by other tools, including the Icarus Verilog
compiler, so the syntax, though readable, is not necessarily
convenient for humans.
GENERAL FORMAT
The source file is a collection of statements. Each statement may have
a label, an opcode, and operands that depend on the opcode. For some
opcodes, the label is optional (or meaningless) and for others it is
required.
Every statement is terminated by a semicolon. The semicolon is also
the start of a comment line, so you can put comment text after the
semicolon that terminates a statement. Like so:
Label .functor and, 0x5a, x, y ; This is a comment.
The semicolon is required, whether the comment is there or not.
Statements may span multiple lines, as long as there is no text (other
then the first character of a label) in the first column of the
continuation line.
HEADER SYNTAX
Before any other non-commentary code starts, the source may contain
some header statements. These are used for passing parameters or
global details from the compiler to the vvp run-time. In all cases,
the header statement starts with a left-justified keyword.
* :module "name" ;
This header statement names a vpi module that vvp should load before
the rest of the program is compiled. The compiler looks in the
standard VPI_MODULE_PATH for files named "name.vpi", and tries to
dynamic load them.
* :vpi_time_precision [+|-]<value>;
This header statement specifies the time precision of a single tick of
the simulation clock. This is mostly used for display (and VPI)
purposes, because the engine itself does not care about units. The
compiler scales time values ahead of time.
The value is the size of a simulation tick in seconds, and is
expressed as a power of 10. For example, +0 is 1 second, and -9 is 1
nanosecond. If the record is left out, then the precision is taken to
be +0.
LABELS AND SYMBOLS
Labels and symbols consist of the characters:
a-z
A-Z
0-9
.$_<>
Labels and symbols may not start with a digit or a '.', so that they
are easily distinguished from keywords and numbers. A Label is a
symbol that starts a statement. If a label is present in a statement,
it must start in the first text column. This is how the lexical
analyzer distinguishes a label from a symbol. If a symbol is present
in a statement, it is in the operand. Opcodes of statements must be a
keyword.
Symbols are references to labels. It is not necessary for a label to
be declared before its use in a symbol, but it must be declared
eventually. When symbols refer to functors, the symbol represents the
vvp_ipoint_t pointer to the output. (Inputs cannot, and need not, be
references symbolically.)
If the functor is part of a vector, then the symbol is the
vvp_ipoint_t for the first functor. The [] operator can then be used
to reference a functor other then the first in the vector.
There are some special symbols that in certain contexts have special
meanings. As inputs to functors, the symbols "C<0>", "C<1>", "C<x>"
and "C<z>" represent a constant driver of the given value.
SCOPE STATEMENTS:
PARAMETER STATEMENTS:
Parameters are named constants within a scope. These parameters have a
type and value, and also a label so that they can be referenced as VPI
objects.
The syntax of a parameter is:
<label> .param <name>, <type>, <value>;
The <name> is a string that names the parameter. The name is placed in
the current scope as a vpiParameter object. The <type> is one of the
following:
real -- The parameter has a real value
string -- The parameter has a string value
[<msb>,<lsb>,<s>]
-- The parameter is a vector, with specified
indices. The <s> is s or u for signed or
unsigned.
The value, then, is appropriate for the data type. For example:
P_123 .param "hello", string, "Hello, World.";
FUNCTOR STATEMENTS:
A functor statement is a statement that uses the ``.functor''
opcode. Functors are the basic structural units of a simulation, and
include a type (in the form of a truth table) and up to four inputs. A
label is required for functors.
The general syntax of a functor is:
<label> .functor <type> [ (<delay>) ], symbol_list ;
The symbol list is 4 names of labels of other functors. These connect
inputs of the functor of the statement to the output of other
functors. If the input is unconnected, use a C<?> symbol instead. The
type selects the truth lookup table to use for the functor
implementation. Most of the core gate types have built in tables.
The initial values of all the inputs and the output is x. Any other
value is passed around as run-time behavior. If the inputs have C<?>
symbols, then the inputs are initialized to the specified bit value,
and if this causes the output to be something other then x, a
propagation event is created to be executed at the start of run time.
The strengths of inputs are ignored by functors, and the output has
fixed drive0 and drive1 strengths. So strength information is
typically lost as it passes through functors.
Almost all of the structural aspects of a simulation can be
represented by functors, which perform the very basic task of
combining up to four inputs down to one output.
- MUXZ
Q | A B S n/a
--+-------------
A | * * 0
B | * * 1
DFF STATEMENTS:
The Verilog language itself does not have a DFF primitive, but post
synthesis readily creates DFF devices that are best simulated with a
common device. Thus, there is the DFF statement to create DFF devices:
<label> .dff <d>, <clk>, <ce>, <async-input>;
The generated functor is generally synchronous on the <clk> rising
edge of <clk>, with the <ce> enable active high. The <clk> and <ce>
are single bit vectors (or scalars) on ports 1 and 2. Port-0 is any
type of datum at all. The device will transfer the input to the output
when it is loaded by a clock. The <async-input> is a special
asynchronous input that is immediately stored and transferred to the
output when data arrives here. This is useful for implementing
asynchronous set/clear functions.
UDP STATEMENTS:
A UDP statement either defines a User Defined Primitive, or
instantiates a previously defined UDP by creating a UDP functor. A
UDP functor has as many inputs as the UDP definition requires.
UDPs come in sequential and combinatorial flavors. Sequential UDPs
carry an output state and can respond to edges at the inputs. The
output of combinatorial UDPs is a function of its current inputs
only.
The function of a UDP is defined via a table. The rows of the table
are strings which describe input states or edges, and the new output
state. Combinatorial UDPs require one character for each input, and
one character at the end for the output state. Sequential UDPs need
an additional char for the current state, which is the first char of
the row.
Any input transition or the new state must match at most one row (or
all matches must provide the same output state). If no row matches,
the output becomes 1'bx.
The output state can be specified as "0", "1", or "x". Sequential
UDPs may also have "-": no change.
An input or current output state can be
"1": 1
"0": 0
"x": x
"b": 1, 0
"h": 1, x
"l": 0, x
"?": 1, 0, x
For Sequential UDPs, at most one input state specification may be
replaced by an edge specification. Valid edges are:
"*": (??) "_": (?0) "+": (?1) "%": (?x)
"P": (0?) "r": (01) "Q": (0x)
"N": (1?) "f": (10) "M": (1x)
"B": (x?) "F": (x0) "R": (x1)
"n": (1?) | (?0)
"p": (0?) | (?1)
A combinatorial UDP is defined like this:
<type> .udp/comb "<name>", <number>, "<row0>", "<row1>", ... ;
<type> is a label that identifies the UDP. <number> is the number of
inputs. "<name>" is there for public identification. Sequential UDPs
need an additional initialization value:
<type> .udp/sequ "<name>", <number>, <init>, "<row0>", "<row1>", ... ;
<init> is the initial value for all instances of the UDP. We do not
provide initial values for individual instances. <init> must be a
number 0, 1, or 2 (for 1'bx).
A UDP functor instance is created so:
<label> .udp <type>, <symbol_list> ;
Where <label> identifies the functor, <type> is the label of a UDP
defined earlier, and <symbol_list> is a list of symbols, one for each
input of the UDP.
VARIABLE STATEMENTS:
A variable is a bit vector that can be written by behavioral code (so
has no structural input) and propagates its output to a functor. The
general syntax of a variable is:
<label> .var "name", <msb>, <lsb>;
<label> .var/s "name", <msb>, <lsb>;
<label> .var/real "name", <msb>, <lsb>;
The "name" is the declared base name of the original variable, for the
sake of VPI code that might access it. The variable is placed in the
current scope. The variable also has a width, defined by the indices
for the most significant and lest significant bits. If the indices are
equal (normally 0) the vector has width of one. If the width is greater
then one, a contiguous array of functors is created and the value of
the label is the address of the least significant bit.
A variable does not take inputs, since its value is set behaviorally
by assignment events. It does have output, though, and its output is
propagated into the net of functors in the usual way.
A variable gets its value by assignments from procedural code: %set
and %assign. These instructions write values to the port-0 input. From
there, the value is held.
Behavioral code can also invoke %cassign/v statements that work like
%set/v, but instead write to port-1 of the variable node. Writes to
port-1 of a variable activate continuous assign mode, where the values
written to port-0 are ignored. The continuous assign mode remains
active until a long(1) is written to port-3 (a command port).
Behavioral code may also invoke %force/v statements that write to port-2
to invoke force mode. This overrides continuous assign mode until a
long(2) is written to port-3 to disable force mode.
NET STATEMENTS:
A net is similar to a variable, except that a thread cannot write to
it (unless it uses a force) and it is given a different VPI type
code. The syntax of a .net statement is also similar to but not
exactly the same as the .var statement:
<label> .net "name", <msb>, <lsb>, <symbol>;
<label> .net/s "name", <msb>, <lsb>, <symbol>;
<label> .net8 "name", <msb>, <lsb>, <symbol>;
<label> .net8/s "name", <msb>, <lsb>, <symbol>;
<label> .net/real "name", <msb>, <lsb>, <symbol>;
<label> .alias "name", <msb>, <lsb>, <symbol>;
Like a .var statement, the .net statement creates a VPI object with
the basename and dimensions given as parameters. The symbol is a
functor that feeds into the vector of the net, and the vpiHandle
holds references to that functor.
The input of a .net is replicated to its output. In this sense, it
acts like a diode. The purpose of this node is to hold various VPI
and event trappings. The .net and .net8 nodes are vector types. They
both may represent wires, but the .net8 nodes preserve strength values
that arrive through them, while .net nodes reduce strength values to
4-value logic. The .net8 nodes should only be used when strength
information really is possible.
The <label> is required and is used to locate the net object that is
represents. This label does not map to a functor, so only references
that know they want to access .nets are able to locate the symbol. In
particular, this includes behavioral %load and %wait instructions. The
references to net and reg objects are done through the .net label
instead of a general functor symbol. The instruction stores the
functor pointer, though.
The .alias statements do not create new nodes, but instead create net
names that are aliases of an existing node. This handles special cases
where a net has different names, possibly in different scopes.
MEMORY STATEMENTS:
Memories are arrays of words, each word a vvp_vector4_t vector of the
same width. The memory is canonically addressed as a 1-dimensional
array of words, although indices are stored with the memory for
calculating a canonical address from a multi-dimensional address.
Three types of memory statement perform (1) creation of a memory, (2)
connecting a read port to an existing memory, and (3) initializing the
memory's contents.
<label> .mem "name", <msb>,<lsb>, <last>,<first> ... ;
The pair of numbers <msb>,<lsb> defines the word width. The pair
<last>,<first> defines the address range. Multiple address ranges are
allowed for multidimensional indexing. This statement creates the
memory array and makes it available to procedural code.
Procedural access to the memory references the memory as single array
of words, with the base address==0, and the last address the size (in
words) of the memory -1. It is up to the compiler to convert Verilog
index sets to a canonical address. The multi-dimensional index set is
available for VPI use.
Structural read access is implemented in terms of address and data
ports. The addresses applied to the address port are expected to be
in canonical form.
A read port is a functor that takes a single input, the read address,
and outputs the word value at the given (canonical) address.
<label> .mem/port <memid>, <address> ;
<label> identifies the vector of output functors, to allow connections
to the data output. <memid> is the label of the memory.
Any address input change, or any change in the addressed memory
contents, is immediately propagated to the port output.
A write port is a superset of a read port. It is a 4-input functor
that accepts the word address, an event input, a write enable input,
and the data input.
<label> .mem/port <memid>, <address>, <event>, <we>, <data> ;
<event> is an event functor that triggers a write, if the <we> input
is true. <data> is the input that connect to the data input
port. For asynchronous transparent write operation, connect
<event> to C4<z>, the RAM will transparently follow any changes on
address and data lines, while <we> is true.
There is no Verilog construct that calls for a structural write port
to a memory, but synthesis may ask for lpm_ram_d[pq] objects.
To initialize a memory, use:
.mem/init <memid> <start>, val , val ... ;
<memid> is the label of the memory, and the <start> is the start
address (canonical) of the first word to be initialized. The start
address allows multiple statements be used to initialize words of a
memory.
The values are one per word.
Procedural access to the memory employs an index register to address a
bit location in the memory, via the commands:
%load/m <bit>, <memid> ;
%set/m <memid>, <bit> ;
%assign/m <memid>, <delay>, <bit> ;
The memory bit is addressed by index register 3. The value of
register 3 is the index in the memory's bit space, where each data
word occupies a multiple of four bits.
EVENT STATEMENTS
Threads need to interact with the functors of a netlist synchronously,
as well as asynchronously. There are cases where the web of functors
needs to wake up a waiting thread. The web of functors signals threads
through .event objects, that are declared like so:
<label> .event <type>, <symbols_list>;
<label> .event "name";
This event statement declares an object that a %wait instruction
can take as an operand. When a thread executes a %wait, it puts
itself in the notification list of the event and suspends. The
<symbols_list> is a set of inputs that can trigger the event.
The <type> describes the conditions needed to trigger the event. It
may be posedge, negedge or edge. If the type is instead a "name"
string, then this is a named event which receives events by the %set
instruction instead of from the output of a functor.
If the event has inputs (a requirement unless it is a named event)
then it has up to 4 symbols that address functors. The event then
detects the appropriate edge on any of the inputs and signals when the
event is true. Normally (in Verilog) a posedge or negedge event only
watches a single bit, so the generated code would only include a
single symbol for the addressed bit. However, if there are several
events of the same edge in an event OR expression, the compiler may
combine up to 4 into a single event.
If many more events need to be combined together (for example due to
an event or expression in the Verilog) then this form can be used:
<label> .event/or <symbols_list>;
In this case, the symbols list all the events that are to be combined
to trigger this event. Only one of the input events needs to trigger
to make this one go.
RESOLVER STATEMENTS:
Resolver statements are strength-aware functors with 4 inputs, but
their job typically is to calculate a resolved output using strength
resolution. The type of the functor is used to select a specific
resolution function.
<label> .resolv tri, <symbols_list>;
<label> .resolv tri0, <symbols_list>;
<label> .resolv tri1, <symbols_list>;
The output from the resolver is vvp_vector8_t value. That is, the
result is a vector with strength included.
PART SELECT STATEMENTS:
Part select statements are functors with three inputs. They take in at
port-0 a vector, and output a selected (likely smaller) part of that
vector. The other inputs specify what those parts are, as a canonical
bit number, and a width. Normally, those bits are constant values.
<label> .part <symbol>, <base>, <wid>;
<label> .part/pv <symbol>, <base>, <wid>, <vector_wid>;
<label> .part/v <symbol>, <symbol>, <wid>;
The input is typically a .reg or .net, but can be any vector node in
the netlist.
The .part/pv variation is the inverse of the .part version, in that
the output is actually written to a *part* of the output. The node
uses special part-select-write functions to propagate a part of a
network. The <vector_wid> is the total width of the destination net
that part is written to. Destination nodes use this value to check
further output widths.
The .part/v variation takes a vector (or long) input on port-1 as the
base of the part select. Thus, the part select can move around.
PART CONCATENATION STATEMENTS:
The opposite of the part select statement is the part concatenation
statement. The .concat statement is a functor node that takes at input
vector values and produces a single vector output that is the
concatenation of all the inputs.
<label> .concat [W X Y Z], <symbols_list> ;
The "[" and "]" tokens surround a set of 4 numbers that are the
expected widths of all the inputs. These widths are needed to figure
the positions of the input vectors in the generated output, and are
listed in order LSB to MSB. The inputs themselves are also listed LSB
to MSB, with the LSB vector input coming through port-0 of the real
functor.
The initial output value is (W+X+Y+Z) bits of 'bx. As input values are
propagated, the bits are placed in the correct place in the output
vector value, and a new output value is propagated.
REPEAT VECTOR STATEMENTS:
The repeat vector statement is similar to the concatenation statement,
expect that the input is repeated a constant number of times. The
format of the repeat vector statement is:
<label> .repeat <wid>, <rept count>, <symbol> ;
In this statement, the <wid> is a decimal number that is the width of
the *output* vector. The <rept count> is the number of time the input
vector value is repeated to make the output width. The input width is
implicit from these numbers. The <symbol> is then the input source.
REDUCTION LOGIC
The reduction logic statements take in a single vector, and propagate
a single bit.
<label> .reduce/and <symbol> ;
<label> .reduce/or <symbol> ;
<label> .reduce/xor <symbol> ;
<label> .reduce/nand <symbol> ;
<label> .reduce/nor <symbol> ;
<label> .reduce/xnor <symbol> ;
the device has a single input, which is a vector of any width. The
device performs the logic on all the bits of the vector (a la Verilog)
and produces and propagates a single bit width vector.
EXPANSION LOGIC
Sign extension nodes are the opposite of reduction logic, in that they
take a narrow vector, or single bit, and pad it out to a wider
vector.
<label> .expand/s <wid>, <symbol> ;
The .expand/s node takes an input symbol and sign-extends it to the
given width.
FORCE STATEMENTS (old method - remove me):
A force statement creates functors that represent a Verilog force
statement.
<label> .force <signal>, <symbol_list>;
The symbol <signal> represents the signal which is to be forced. The
<symbol_list> specifies the bits of the expression that is to be
forced on the <signal>. The <label> identifies the force functors.
There will be as many force functors as there are symbols in the
<symbol_list>.
To activate and deactivate a force on a single bit, use:
%force <label>, <width>;
%release <signal>;
<label>/<width> is the label/width of a vector of force functors.
<signal> is the label of the functor that drives the signal that is
being forced.
FORCE STATEMENTS (new method - implement me):
A %force instruction, as described in the .var section, forces a
constant value onto a .var or .net, and the matching %release releases
that value. However, there are times when the value of a functor
(i.e. another .net) needs to be forced onto a .var or .net. For this
task, the %force/link instruction exists:
%force/link <dst>, <src> ;
%release/link <dst> ;
This causes the output of the node <src> to be linked to the force
input of the <dst> .var/.net node. When linked, the output functor
will automatically drive values to the force port of the destination
node. The matching %release/link instruction removes the link (a
%release is still needed) to the destination. The %release/link
releases the last %force/link, no matter where the link is from. A new
%force/link will remove a previous link.
The instructions:
%cassign/link <dst>, <src> ;
%deassign/link <dst> ;
are the same concept, but for the continuous assign port.
STRUCTURAL ARITHMETIC STATEMENTS:
The various Verilog arithmetic operators (+-*/%) are available to
structural contexts as two-input functors that take in vectors. All of
these operators take two inputs and generate a fixed width output. The
input vectors will be padded if needed to get the desired output width.
<label> .arith/sub <wid>, <A>, <B>;
<label> .arith/sum <wid>, <A>, <B>;
<label> .arith/mult <wid>, <A>, <B>;
<label> .arith/div <wid>, <A>, <B>;
<label> .arith/mod <wid>, <A>, <B>;
In all cases, there are no width limits, so long as the width is
fixed.
NOTE: The .arith/mult inputs are not necessarily the width of the
output. I have not decided how to handle this.
These devices support .s and .r suffixes. The .s means the node is a
signed vector device, the .r a real valued device.
STRUCTURAL COMPARE STATEMENTS:
The arithmetic statements handle various arithmetic operators that
have wide outputs, but the comparators have single bit output, so they
are implemented a bit differently. The syntax, however, is very
similar:
<label> .cmp/eeq <wid>, <A>, <B>;
<label> .cmp/nee <wid>, <A>, <B>;
<label> .cmp/eq <wid>, <A>, <B>;
<label> .cmp/ne <wid>, <A>, <B>;
<label> .cmp/ge <wid>, <A>, <B>;
<label> .cmp/gt <wid>, <A>, <B>;
<label> .cmp/ge.s <wid>, <A>, <B>;
<label> .cmp/gt.s <wid>, <A>, <B>;
Whereas the arithmetic statements generate an output the width of
<wid>, the comparisons produce a single bit vector result. The plain
versions do unsigned comparison, but the ".s" versions to signed
comparisons. (Equality doesn't need to care about sign.)
STRUCTURAL SHIFTER STATEMENTS:
Variable shifts in structural context are implemented with .shift
statements:
<label> .shift/l <wid>, <data symbol>, <shift symbol>;
<label> .shift/r <wid>, <data symbol>, <shift symbol>;
The shifter has a width that defines the vector width of the output, a
<data symbol> that is the input data to be shifted and a <shift-symbol>
that is the amount to shift. The vectors that come from port 0 are the
data to be shifted and must have exactly the width of the output. The
input to port 1 is the amount to shift.
STRUCTURAL FUNCTION CALLS:
The .ufunc statement defines a call to a user defined function.
<label> .ufunc <flabel>, <wid>, <isymbols> ( <psymbols> ) <rsymbol> ;
The <flabel> is the code label for the first instruction of the
function implementation. This is code that the simulator will branch
to.
The <wid> is the width of the output vector in bits.
The <isymbols> is a list of net symbols for each of the inputs to the
function. These are points in the net, and the ufunc device watches
these nets for input changes.
The <psymbols> list is exactly the same size as the <isymbols>
list. The <psymbols> are variables that represent the input ports for
the function. The ufunc performs an assignment to these variables
before calling the function.
Finally, the <rsymbol> is the variable within the function where the
result will be found when the function code ends. This value is picked
up and propagated to the output of the functor.
THREAD STATEMENTS:
Thread statements create the initial threads for a simulation. These
represent the initial and always blocks, and possibly other causes to
create threads at startup.
.thread <symbol> [, <flag>]
This statement creates a thread with a starting address at the
instruction given by <symbol>. When the simulation starts, a thread is
created for the .thread statement, and it starts at the <symbol>
addressed instruction.
The <flag> modifies the creation/execution behavior of the
thread. Supported flags are:
$push -- Cause the thread to be pushed in the scheduler. This
only effects startup (time 0) by arranging for pushed
threads to be started before non-pushed threads. This
is useful for resolving time-0 races.
* Threads in general
Thread statements create the initial threads of a design. These
include the ``initial'' and ``always'' statements of the original
Verilog, and possibly some other synthetic threads for various
purposes. It is also possible to create transient threads from
behavioral code. These are needed to support such constructs as
fork/join, named blocks and task activation.
A transient thread is created with a %fork instruction. When a
transient thread is created this way, the operand to the %fork gives
the starting address, and the new thread is said to be a child of the
forking thread. The children of a thread are pushed onto a stack of
children. A thread can have only one direct child.
A transient thread is reaped with a %join instruction. %join waits for
the top thread in the stack of children to complete, then
continues. It is an error to %join when there are no children.
As you can see, the transient thread in VVP is a cross between a
conventional thread and a function call. In fact, there is no %call
instruction in vvp, the job is accomplished with %fork/%join in the
caller and %end in the callee. The %fork, then is simply a
generalization of a function call, where the caller does not
necessarily wait for the callee.
For all the behavior of threads and thread parentage to work
correctly, all %fork statements must have a corresponding %join in the
parent, and %end in the child. Without this proper matching, the
hierarchical relationships can get confused. The behavior of erroneous
code is undefined.
* Thread Context
The context of a thread is all the local data that only that thread
can address. The local data is broken into two addresses spaces: bit
memory and word memory.
The bit memory is a region of 4-value bits (0,1,x,z) that can be
addressed in strips of arbitrary length. For example, an 8-bit value
can be in locations 8 through and including 15. The bits at address 0,
1, 2 and 3 are special constant values. Reads from those locations
make vectors of 0, 1, x or z values, so these can be used to
manufacture complex values elsewhere.
The word memory is a region of tagged words. The value in each word
may be native long or real. These words have a distinct address space
from the bits.
* Threads and scopes
The Verilog ``disable'' statement deserves some special mention
because of how it interacts with threads. In particular, threads
throughout the design can affect (end) other threads in the design
using the disable statement.
In Verilog, the operand to the disable statement is the name of a
scope. The behavior of the disable is to cause all threads executing
in the scope to end. Termination of a thread includes all the children
of the thread. In vvp, all threads are in a scope, so this is how the
disable gains access to the desired thread.
It is obvious how initial/always thread join a scope. They become part
of the scope simply by being declared after a .scope declaration. (See
vvp.txt for .scope declarations.) The .thread statement placed in the
assembly source after a .scope statement causes the thread to join the
named scope.
Transient threads join a scope that is the operand to the %fork
instruction. The scope is referenced by name, and the thread created
by the fork atomically joins that scope. Once the transient thread
joins the scope, it stays there until it ends. Threads never change
scopes, not even transient threads.
TRUTH TABLES
The logic that a functor represents is expressed as a truth table. The
functor has four inputs and one output. Each input and output has one
of four possible values (0, 1, x and z) so two bits are needed to
represent them. So the input of the functor is 8 bits, and the output
2 bits. A complete lookup table for generating the 2-bit output from
an 8-bit input is 512 bits. That can be packed into 64 bytes. This is
small enough that the table should take less space then the code to
implement the logic.
To implement the truth table, we need to assign 2-bit encodings for
the 4-value signals. I choose, pseudo-randomly, the following
encoding:
1'b0 : 00
1'b1 : 01
1'bx : 10
1'bz : 11
The table is an array of 64 bytes, each byte holding 4 2-bit
outputs. Construct a 6-bit byte address with inputs 1, 2 and 3 like
so:
332211
The input 0 2-bits can then be used to select which of the 4 2-bit
pairs in the 8-bit byte are the output:
MSB -> zzxx1100 <- LSB
A complete truth table, then is described as 64 8-bit bytes.
The vvp engine includes truth tables for the primitive gate types, so
none needs to be given by the programmer. It is sufficient to name the
type to get that truth table.
EXECUTABLE INSTRUCTIONS
Threads run executable code, much like a processor executes machine
code. VVP has a variety of opcodes for executable instructions. All of
those instructions start with '%' and go into a single address
space. Labels attached to executable instructions get assigned the
address of the instruction, and can be the target of %jmp instructions
and starting points for threads.
The opcodes.txt file has a more detailed description of all the
various instructions.
THE RELATIONSHIP BETWEEN FUNCTORS, THREADS AND EVENTS
Given the above summary of the major components of vvp, some
description of their relationship is warranted. Functors provide a
structural description of the design (so far as it can be described
structurally) and these functors run independently of the threads. In
particular, when an input to a functor is set, it calculates a new
output value; and if that output is different from the existing
output, a propagation event is created. Functor output is calculated
by truth table lookup, without the aid of threads.
Propagation events are one of three kinds of events in vvp. They are
scheduled to execute at some time, and they simply point to the functor
that is to have its output propagated. When the event expires, the
output of the referenced functor is propagated to all the inputs that
it is connected to, and those functors in turn create new events if
needed.
Assignment events (the second of three types of events) are created
by non-blocking assignments in behavioral code. When the ``<='' is
executed (a %assign in vvp) an assign event is created, which includes
the vvp_ipoint_t pointer to the functor input to receive the value,
as well as the value. These are distinct from propagation events because:
a) There is no functor that has as its output the value to be
assigned (this is how values get into the functor net in
the first place), and
b) This allows for behavioral code to create waveforms of
arbitrary length that feed into a variable. Verilog allows
this of non-blocking assignments, but not of gate outputs.
The last type of event is the thread schedule event. This event simply
points to a thread to be executed. Threads are made up of a virtual
processor with a program counter and some private storage. Threads
can execute %assign instructions to create assignment events, and can
execute %set instructions to do blocking assignments. Threads can also
use %load to read the output of functors.
The core event scheduler takes these three kinds of events and calls
the right kind of code to cause things to happen in the design. If the
event is a propagate or assignment event, the network of functors is
tickled; if the event is a thread schedule, then a thread is run. The
implementation of the event queue is not important, but currently is
implemented as a ``skip list''. That is, it is a sorted singly linked
list with skip pointers that skip over delta-time events.
The functor net and the threads are distinct. They communicate through
thread instructions %set, %assign, %waitfor and %load. So far as a thread
is concerned, the functor net is a blob of structure that it pokes and
prods via certain functor access instructions.
VVP COMPILATION AND EXECUTION
The vvp program operates in a few steps:
1) Initialization
Data structures are cleared to empty, and tables are
readied for compilation.
2) Compilation
The input file is read and compiled. Symbol tables are
build up as needed, objects are allocated and linked
together.
3) Cleanup
Symbol tables and other resources used only for
compilation are released to reduce the memory
footprint.
4) Simulation
Event simulation is run.
The initialization step is performed by the compile_init() function in
compile.cc. This function in turn calls all the *_init() functions in
other parts of the source that need initialization for compile. All
the various sub-init functions are called <foo>_init().
Compilation is controlled by the parser, it parse.y. As the parser
reads and parses input, the compilation proceeds in the rules by
calling various compile_* functions. All these functions live in the
compile.cc file. Compilation calls other sections of the code as
needed.
When the parser completes compilation, compile_cleanup() is called to
finish the compilation process. Unresolved references are completed,
then all the symbol tables and other compile-time-only resources are
released. Once compile_cleanup() returns, there is no more use for the
parser for the function in compile.cc.
After cleanup, the simulation is started. This is done by executing
the schedule_simulate() function. This does any final setup and starts
the simulation running and the event queue running.
HOW TO GET FROM THERE TO HERE
The vvp simulation engine is designed to be able to take as input a
compiled form of Verilog. That implies that there is a compiler that
compiles Verilog into a form that the vvp engine can read.
* Boolean logic gates
Gates like AND, OR and NAND are implemented simply and obviously by
functor statements. Any logic up to 4 inputs can be implemented with a
single functor. For example:
and gate (out, i1, i2, i3);
becomes:
gate .functor and, i1, i2, i3;
Notice the first parameter of the .functor is the type. The type
includes a truth table that describes the output with a given
input. If the gate is wider then four inputs, then cascade
functors. For example:
and gate (out, i1, i2, i3, i4, i5, i6, i7, i8);
becomes:
gate.0 .functor and, i1, i2, i3, i4;
gate.1 .functor and, i5, i6, i7, i8;
gate .functor and, gate.0, gate.1;
* reg and other variables
Reg and integer are cases of what Verilog calls ``variables.''
Variables are, simply put, things that behavioral code can assign
to. These are not the same as ``nets,'' which include wires and the
like.
Each bit of a variable is created by a ``.var'' statement. For example:
reg a;
becomes:
a .var "a", 0, 0;
* named events
Events in general are implemented as functors, but named events in
particular have no inputs and only the event output. The way to
generate code for these is like so:
a .event "name";
This creates a functor and makes it into a mode-2 functor. Then the
trigger statement, "-> a", cause a ``%set a, 0;'' statement be
generated. This is sufficient to trigger the event.
/*
* Copyright (c) 2001 Stephen Williams (steve@xxxxxxxxxx)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
* General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_xilinx_hints.html
Index: geda_icarus_xilinx_hints.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_xilinx_hints</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_xilinx_hints?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_xilinx_hints?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_xilinx_hints?do=export_raw" />
<meta name="date" content="2006-05-07T16:43:07-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="xilinx_hints" id="xilinx_hints">Xilinx Hints</a></h1>
<div class="level1">
<pre class="code">For those of you who wish to use Icarus Verilog, in combination with
the Xilinx back end (Foundation or Alliance), it can be done. I have
run some admittedly simple (2300 equivalent gates) designs through this
setup, targeting a Spartan XCS10.
Verilog:
Older versions of Icarus Verilog (like 19990814) couldn't synthesize
logic buried in procedural (flip-flop) assignment. Newer versions
(like 20000120) don't have this limitation.
Procedural assignments have to be given one at a time, to be
"found" by xnfsyn. Say
always @ (posedge Clk) Y = newY;
always @ (posedge Clk) Z = newZ;
rather than
always @ (posedge Clk) begin
Y = newY;
Z = newZ;
end
Steve's xnf.txt covers most buffer and pin constructs, but I had reason
to use a global clock net not connected to an input pin. The standard
Verilog for a buffer, combined with a declaration to turn that into a
BUFG, is:
buf BUFG( your_output_here, your_input_here );
$attribute(BUFG,"XNF-LCA","BUFG:O,I")
I use post-processing on my .xnf files to add "FAST" attributes to
output pins.
Running ivl:
The -F switches are important. The following order seems to robustly
generate valid XNF files, and is used by "verilog -X":
-Fsynth -Fnodangle -Fxnfio
Generating .pcf files:
The ngdbuild step seems to lose pin placement information that ivl
puts in the XNF file. Use xnf2pcf to extract this information to
a .pcf file, which the Xilinx place-and-route software _will_ pay
attention to. Steve says he now makes that information available
in an NCF file, with -fncf=<path>, but I haven't tested that.
Running the Xilinx back end:
You can presumably use the GUI, but that doesn't fit in Makefiles :-).
Here is the command sequence in pseudo-shell-script:
ngdbuild -p $part $1.xnf $1.ngd
map -p $part -o map.ncd $1.ngd
xnf2pcf <$1.xnf >$1.pcf # see above
par -w -ol 2 -d 0 map.ncd $1.ncd $1.pcf
bitgen_flags = -g ConfigRate:SLOW -g TdoPin:PULLNONE -g DonePin:PULLUP \
-g CRC:enable -g StartUpClk:CCLK -g SyncToDone:no \
-g DoneActive:C1 -g OutputsActive:C3 -g GSRInactive:C4 \
-g ReadClk:CCLK -g ReadCapture:enable -g ReadAbort:disable
bitgen $1.ncd -l -w $bitgen_flags
The Xilinx software has diarrhea of the temp files (14, not including
.xnf, .pcf, .ngd, .ncd, and .bit), so this sequence is best done in a
dedicated directory. Note in particular that map.ncd is a generic name.
I had reason to run this remotely (and transparently within a Makefile)
via ssh. I use the gmake rule
%.bit : %.xnf
ssh -x -a -o 'BatchMode yes' ${ALLIANCE_HOST} \
remote_alliance ${REMOTE_DIR} $(basename $@) 2>&1 < $<
scp ${ALLIANCE_HOST}:${REMOTE_DIR}/$@ .
and the remote_alliance script (on ${ALLIANCE_HOST})
/bin/csh
cd $1
cat >! $2.xnf
xnf2pcf <$2.xnf >! $2.pcf
./backend $2
There is now a "Xilinx on Linux HOWTO" at
http://www.polybus.com/xilinx_on_linux.html
I haven't tried this yet, it looks interesting.
Downloading:
I use the XESS (http://www.xess.com/) XSP-10 development board, which
uses the PC parallel (printer) port for downloading and interaction
with the host. They made an old version of their download program
public domain, posted it at
http://www.xess.com/FPGA/xstools.zip ,
and now there is a Linux port at
ftp://ftp.microux.com/pub/pilotscope/xstools.tar.gz .
The above hints are based on my experience with Foundation 1.5 on NT
(gack) and Alliance 2.1i on Solaris. Your mileage may vary. Good luck!
- Larry Doolittle <LRDoolittle@xxxxxxx> August 19, 1999
updated February 1, 2000
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_icarus_xnf.html
Index: geda_icarus_xnf.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:icarus_xnf</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_xnf?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:icarus_xnf?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:icarus_xnf?do=export_raw" />
<meta name="date" content="2006-05-07T16:42:17-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="xilinx_netlist_format" id="xilinx_netlist_format">Xilinx Netlist Format</a></h1>
<div class="level1">
<pre class="code">WHAT IS XNF
XNF is the Xilinx Netlist Format. This is somewhat specific to the
Xilinx tool chain, but it is sufficiently ubiquitous that it's still
worth it. This format can be fed to place and route tools and
simulators. Since some third party simulators accept XNF, the format
may be useful even independent of Xilinx parts.
Icarus Verilog supports XNF as specified by the Xilinx Netlist Format
Specification, Version 6.1.
GENERATE XNF OUTPUT -- THE SHORT STORY
The easiest way to compile for XNF output is with the "verilog"
command (man verilog) and the -X switch:
% iverilog -fpart=4010e -fncf=prog.ncf -txnf prog.v
This generates from the prog.v Verilog source file the prog.xnf output
and the prog.ncf netlist constraints file. The verilog program
arranges to call the preprocessor and the ivl compiler with all the
correct switches for generating XNF.
GENERATING XNF MACROS
Icarus Verilog can be used to generate XNF implementations of devices
that are written in Verilog and used by schematic editors such as
OrCAD. The trick here is that the code generator automatically notices
ports to the root module and generates the PIN= attributes needed so
that external tools can link to the generated XNF.
Icarus Verilog chooses a name for the pin. The name it chooses is the
port name of the module. If the port is a vector, a pin is generated
for all the bits of the vector with the bit number appended. For
example:
module foo(in);
input [3:0] in;
causes the single bit ports ``in0'' through ``in3'' be
generated. Internally, the XNF file uses the bussed names instead of
the pin name.
The implication of this is that there is a chance of name collision
with the generated XNF macro if the port names are chosen badly. It is
best to not end a port name with decimal digits, as that can cause
trouble at link time. Also, XNF is not case sensitive and that should
be accounted for as well.
XNF PADS IN VERILOG SOURCE
You can assign wires to pads using the Icarus Verilog $attribute
extension. Attach to a scalar signal (wire or register) the PAD
attribute with the value that specifies the direction and pin
number. For example:
wire foo, bar, bid;
$attribute(foo, "PAD", "i1"); // Input pad on pin 1
$attribute(bar, "PAD", "o2"); // Output pad on pin 2
$attribute(bid, "PAD", "b3"); // Bi-directional pad on pin 3
The XNFIO function uses these attributes to locate signals that are
connected to pads, and generates XNF I/O block devices to connect to
the pad to do the FPGA pin buffering that is needed. So the Verilog
programmer need not in general specify the IBUF/OBUF buffers.
If the programmer does connect buffers to pads, the compiler will
notice them and convert them to I/OBUFs automatically. For example:
buf b1 (sig, foo);
connects to pad foo, so will be converted into an XNF IBUF
device. Also:
bufif1 bt (bar, value, en);
connects to pad bar so will automatically be converted into an OBUFT
device. Icarus Verilog understands OBUF, IBUF and OBUFT (with optionally
inverted enable) devices and will convert Verilog devices from the
source, or generate missing devices.
In addition, the Verilog programmer may explicitly declare a device as
an I/OBUF by attaching an attribute to the device, like so:
buf b1 (sig, foo);
$attribute(b1, "XNF-LCA", "OBUF:O,I");
This latter feature is not entirely recommended as it expects that the
programmer really knows how the pins of the XNF device are to be
connected. It also bypasses the efforts of the compiler, so is not
checked for correctness.
XNF STORAGE ELEMENTS
Storage elements in XNF include flip-flops, latches and CLB
rams. These devices are generated from the LPM equivalents that the
-Fsynth functor synthesizes from behavioral descriptions.
Flip-flops, or more specifically DFF devices, are generated to
implement behavioral code like this:
reg Q;
always @(posedge clk) Q <= <expr>;
The edge can be positive or negative, and the expression can be any
synthesizable expression. Furthermore, the register "Q" can have
width, which will cause the appropriate number of flip-flops to be
created. A clock enable expression can also be added like so:
reg Q;
always @(posedge clk) if (<ce>) Q <= <expr>;
The <ce> expression can be any synthesizable expression.
With or without the CE, the generated DFF devices are written into the
XNF output one bit at a time, with the clock input inverted if necessary.
Xilinx parts also support CLB circuitry as synchronous RAMS. These
devices are created from Verilog memories if the properties are
right. The behavioral description that the -Fsynth functor matches to
get a synchronous RAM looks very similar to that for a DFF:
reg [15:0] M;
always @(posedge clk) if (<we>) M[<addr>] <= <expr>;
Note that in this case the l-value of the assignment is an addressed
memory. This statement models writes into the memory. Reads from the
device can be modeled with ordinary structural code, i.e.:
assign foo <= M[<addr>];
For the memory to be synthesizable in the XNF target, the address
lines for writes and reads must be connected. This corresponds to the
limitations of the real hardware.
OTHER XNF SPECIAL DEVICES
There are certain special devices in XNF that Verilog does not
naturally represent, although there are similar more generic Verilog
devices. The most obvious and useful example is the clock driver,
otherwise known as the global buffer BUFG. As with pads, Icarus
Verilog uses the $attribute extension to allow you to specify special
devices.
The $attribute statement can be applied to devices much the same way
one applies them to wires. For example, to turn a buffer into a clock
buffer:
wire iclk, clk;
buf BUFG (clk, iclk);
$attribute(iclk, "PAD", "i1");
$attribute(BUFG, "XNF-LCA", "BUFG:O,I");
The above statements cause the buffer BUFG to be emitted in the XNF
output as a BUFG device with the first signal called "O" and the
second called "I". The rest of this example connects the input of the
BUFG to a signal from the input pin #1 and connects the output to the
internal wire "clk". Incidentally, this example will cause an IBUF to
be generated to connect the iclk signal to input pin #1.
SUMMARY OF IVL SUPPORT FOR XNF
Icarus Verilog has a code generator and synthesis functions that
support generation of XNF netlists. The XNF modules also allow the
programmer to use $attributes to control certain aspects of code
generation.
XNF code generation is enabled with the ``-t xnf'' flag on the command
line. The code generator needs to know the type of part to generate
code for, so the ``-fpart=<type>'' flag is also needed. For example,
to generate code for the 4010E the command line might start out as:
ivl -txnf -fpart=4010e -Fsynth -Fnodangle -Fxnfio [...]
Icarus Verilog includes the functions ``synth'' and ``xnfio'' to
perform transformations and optimizations on the design before code is
generated. The ``synth'' function matches certain behavioral constructs
to structural components, and the xnfio function generates pads and
fills the IOBs.
SUPPORTED FLAGS
-fpart=<part>
Specify the type of part to target. This string is written
literally into the PART, record of the XNF, and may also be
used to control synthesis and placement.
-fncf=<path>
Cause the code generator to write into <path> the netlist
constraints needed for controlling placement and timing. This
switch is required if pin assignments are assigned in the
Verilog source.
THE SYNTH FUNCTION
This function does synthesis transformations on the entered design,
making it possible to generate XNF netlist components from certain
behavioral constructs. This is needed in Verilog for example to model
some of the synchronous components of the XNF library.
It is a bit much to expect a Verilog compiler in general to generate
components from arbitrary behavioral descriptions, so the synth
function works by matching statements that have some documented
structure, and substituting them for the equivalent XNF component. A
fully synthesize-able design, then, is one where the behavioral
statements can all be matched and substituted by the synth function.
THE XNFIO FUNCTION
The "xnfio" function transforms the netlist where the IOBs are
concerned. The signals with PAD attributes are checked, and
surrounding circuitry generated to conform to the logic available in
the IOB.
If the pad is an OPAD, the function will look for an existing buf or
not gate connected to the PAD signal. If the gate is appropriately
connected, the buf or not gate will be turned into an OBUF. This pulls
the buf or inverter into the IOB, freeing a CLB and providing the
required pin circuitry.
If the pad is an IPAD, the function will look for a buf, and convert
that to an IBUF. Since Xilinx IOBs cannot invert the output from an
IBUF, NOT gates cannot be absorbed as in the OPAD case.
/*
* Copyright (c) 1998-1999 Stephen Williams (steve@xxxxxxxxxx)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
* General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
$Log: geda_icarus_xnf.html,v $
Revision 1.1 2006/08/22 02:56:12 ahvezda
First checkin of the wiki snapshot, prep work for new version of gEDA/gaf
Revision 1.16 2003/07/15 03:49:22 steve
Spelling fixes.
Revision 1.15 2003/01/30 16:23:08 steve
Spelling fixes.
Revision 1.14 2000/08/01 21:32:40 steve
Use the iverilog command in documentation.
Revision 1.13 2000/08/01 02:48:42 steve
Support <= in synthesis of DFF and ram devices.
Revision 1.12 2000/07/25 22:49:32 steve
memory is not a data type in verilog.
Revision 1.11 2000/04/23 23:03:13 steve
automatically generate macro interface code.
Revision 1.10 1999/12/05 19:30:43 steve
Generate XNF RAMS from synthesized memories.
Revision 1.9 1999/11/18 03:52:20 steve
Turn NetTmp objects into normal local NetNet objects,
and add the nodangle functor to clean up the local
symbols generated by elaboration and other steps.
Revision 1.8 1999/11/06 04:51:42 steve
Support writing some XNF things into an NCF file.
Revision 1.7 1999/11/03 05:18:18 steve
XNF synthesis now uses the synth functor.
Revision 1.6 1999/11/02 01:43:55 steve
Fix iobuf and iobufif handling.
Revision 1.5 1999/10/09 17:52:27 steve
support XNF OBUFT devices.
Revision 1.4 1999/08/14 22:48:21 steve
Mention the sigfold function.
Revision 1.3 1999/07/22 02:05:20 steve
is_constant method for PEConcat.
Revision 1.2 1999/07/18 21:17:51 steve
Add support for CE input to XNF DFF, and do
complete cleanup of replaced design nodes.
Revision 1.1 1999/05/01 02:57:11 steve
XNF target documentation.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_igarus_fpga_lcg.html
Index: geda_igarus_fpga_lcg.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:igarus_fpga_lcg</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:igarus_fpga_lcg?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:igarus_fpga_lcg?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:igarus_fpga_lcg?do=export_raw" />
<meta name="date" content="2006-05-07T16:37:54-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="fpga_loadable_code_generator_for_icarus_verilog" id="fpga_loadable_code_generator_for_icarus_verilog">FPGA Loadable Code Generator for Icarus Verilog</a></h1>
<div class="level1">
<pre class="code">FPGA LOADABLE CODE GENERATOR FOR Icarus Verilog
Copyright 2001 Stephen Williams
$Id: geda_igarus_fpga_lcg.html,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
The FPGA code generator supports a variety of FPGA devices, writing
XNF or EDIF depending on the target. You can select the architecture
of the device, and the detailed part name. The architecture is used to
select library primitives, and the detailed part name is written into
the generated file for the use of downstream tools.
INVOKING THE FPGA TARGET
The code generator is invoked with the -tfpga flag to iverilog. It
understands the part= and the arch= parameters, which can be set with
the -p flag of iverilog:
iverilog -parch=virtex -ppart=v50-pq240-6 -tfpga foo.vl
This example selects the Virtex architecture, and give the detailed
part number as v50-pq240-6. The output is written into a.out unless a
different output file is specified with the -o flag.
The following is a list of architecture types that this code generator
supports.
* arch=lpm
This is a device independent format, where the gates are device types
as defined by the LPM 2 1 0 specification. Some backend tools may take
this format, or users may write interface libraries to connect these
netlists to the device in question.
* arch=generic-edif (obsolete)
This is generic EDIF code. It doesn't necessarily work because the
external library is not available to the code generator. But, what it
does is generate generic style gates that a portability library can
map to target gates if desired.
* arch=generic-xnf (obsolete)
If this is selected, then the output is formatted as an XNF file,
suitable for most any type of device. The devices that it emits
are generic devices from the unified library. Some devices are macros,
you may need to further resolve the generated XNF to get working
code for your part.
* arch=virtex
If this is selected, then the output is formatted as an EDIF 200 file,
suitable for Virtex class devices. This is supposed to know that you
are targeting a Virtex part, so can generate primitives instead of
using external macros. It includes the VIRTEX internal library, and
should work properly for any Virtex part.
* arch=virtex2
If this is selected, then the output is EDIF 2 0 0 suitable for
Virtex-II and Virtex-II Pro devices. It uses the VIRTEX2 library, but
is very similar to the Virtex target.
XNF ROOT PORTS
NOTE: As parts are moved over to EDIF format, XNF support will be
phased out. Current Xilinx implementation tools will accept EDIF
format files even for the older parts, and non-Xilinx implementation
tools accept nothing else.
When the output format is XNF, the code generator will generate "SIG"
records for the signals that are ports of the root module. The name is
declared as an external pin that this macro makes available.
The name given to the macro pin is generated from the base name of the
signal. If the signal is one bit wide, then the pin name is exactly
the module port name. If the port is a vector, then the pin number is
given as a vector. For example, the module:
module main(out, in);
output out;
input [2:0] in;
[...]
endmodule
leads to these SIG, records:
SIG, main/out, PIN=out
SIG, main/in<2>, PIN=in2
SIG, main/in<1>, PIN=in1
SIG, main/in<0>, PIN=in0
EDIF ROOT PORTS
The EDIF format is more explicit about the interface into an EDIF
file. The code generator uses that control to generate an explicit
interface definition into the design. (This is *not* the same as the
PADS of a part.) The generated EDIF interface section contains port
definitions, including the proper direction marks.
With the (rename ...) s-exp in EDIF, it is possible to assign
arbitrary text to port names. The EDIF code generator therefore does
not resort to the mangling that is needed for the XNF target. The base
name of the signal that is an input or output is used as the name of
the port, complete with the proper case.
However, since the ports are single bit ports, the name of vectors
includes the string "[0]" where the number is the bit number. For
example, the module:
module main(out, in);
output out;
input [2:0] in;
[...]
endmodule
creates these ports:
out OUTPUT
in[0] INPUT
in[1] INPUT
in[2] INPUT
Target tools, including Xilinx Foundation tools, understand the []
characters in the name and recollect the signals into a proper bus
when presenting the vector to the user.
PADS AND PIN ASSIGNMENT
The ports of a root module may be assigned to specific pins, or to a
generic pad. If a signal (that is a port) has a PAD attribute, then
the value of that attribute is a list of locations, one for each bit
of the signal, that specifies the pin for each bit of the signal. For
example:
module main( (* PAD = "P10" *) output out,
(* PAD = "P20,P21,P22" *) input [2:0] in);
[...]
endmodule
In this example, port ``out'' is assigned to pin 10, and port ``in''
is assigned to pins 20-22. If the architecture supports it, a pin
number of 0 means let the back end tools choose a pin. The format of
the pin number depends on the architecture family being targeted, so
for example Xilinx family devices take the name that is associated
with the "LOC" attribute.
NOTE: If a module port is assigned to a pin (and therefore attached to
a PAD) then it is *not* connected to a port of the EDIF file. This is
because the PAD (and possibly IBUF or OBUF) would become an extra
driver to the port. An error.
SPECIAL DEVICES
The code generator supports the "cellref" attribute attached to logic
devices to cause specific device types be generated, instead of the
usual device that the code generator might generate. For example, to
get a clock buffer out of a Verilog buf:
buf my_gbuf(out, in);
$attribute(my_buf, "cellref", "GBUF:O,I");
The "cellref" attribute tells the code generator to use the given
cell. The syntax of the value is:
<cell type>:<pin name>,...
The cell type is the name of the library part to use. The pin names
are the names of the type in the library, in the order that the logic
device pins are connected.
COMPILING WITH XILINX FOUNDATION
Compile a single-file design with command line tools like so:
% iverilog -parch=virtex -o foo.edf foo.vl
% edif2ngd foo.edf foo.ngo
% ngdbuild -p v50-pq240 foo.ngo foo.ngd
% map -o map.ncd foo.ngd
% par -w map.ncd foo.ncd
---
$Log: geda_igarus_fpga_lcg.html,v $
Revision 1.1 2006/08/22 02:56:12 ahvezda
First checkin of the wiki snapshot, prep work for new version of gEDA/gaf
Revision 1.12 2005/09/19 21:45:36 steve
Spelling patches from Larry.
Revision 1.11 2003/08/07 05:17:34 steve
Add arch=lpm to the documentation.
Revision 1.10 2003/07/04 03:57:19 steve
Allow attributes on Verilog 2001 port declarations.
Revision 1.9 2003/07/04 01:08:03 steve
PAD attribute can be used to assign pins.
Revision 1.8 2003/07/02 00:26:49 steve
Fix spelling of part= flag.
Revision 1.7 2003/03/24 02:28:38 steve
Document the virtex2 architecture.
Revision 1.6 2003/03/24 00:47:54 steve
Add new virtex2 architecture family, and
also the new edif.h EDIF management functions.
Revision 1.5 2002/04/30 04:26:42 steve
Spelling errors.
Revision 1.4 2001/09/16 22:26:47 steve
Support the cellref attribute.
Revision 1.3 2001/09/16 01:48:16 steve
Suppor the PAD attribute on signals.
Revision 1.2 2001/09/06 04:28:40 steve
Separate the virtex and generic-edif code generators.
Revision 1.1 2001/09/02 23:58:49 steve
Add documentation for the code generator.
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_installation.html
Index: geda_installation.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:installation</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:installation?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:installation?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:installation?do=export_raw" />
<meta name="date" content="2006-06-27T07:20:06-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#installation_help" class="toc">Installation help</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_install_the_geda_suite" class="toc">How do I install the gEDA Suite?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_uninstall_the_geda_suite" class="toc">How do I uninstall the gEDA Suite?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#why_would_i_want_to_uninstall_the_geda_suite" class="toc">Why would I want to uninstall the gEDA Suite?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#aaaargh_i_put_the_cd_into_my_reader_and_mounted_the_cd_but_nothing_happened" class="toc">Aaaargh! I put the CD into my reader, and mounted the CD, but nothing happened!</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#help_me_i_m_trying_to_install_using_the_cd_rom_but_the_install_wizard_says_i_have_an_error" class="toc">Help me! I'm trying to install using the CD ROM, but the install wizard says I have an error!</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#waaaa_the_installation_ran_to_completion_but_i_get_a_segfault_or_other_problem_when_i_run_gschem_or_gattrib_or_gnetlist_or" class="toc">Waaaa! The installation ran to completion, but I get a segfault (or other problem) when I run gschem (or gattrib, or gnetlist, or. . . )!</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#fedora_core_4_install_notes" class="toc">Fedora Core 4 install notes</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#fedora_core_3_install_notes" class="toc">Fedora Core 3 install notes</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#fedora_core_2_install_notes" class="toc">Fedora Core 2 install notes</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#fedora_core_1_install_notes" class="toc">Fedora Core 1 install notes</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#suse_9.3_install_notes" class="toc">Suse 9.3 install notes</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#suse_10.0_install_notes" class="toc">Suse 10.0 install notes</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#windows_install_notes" class="toc">Windows install notes</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="installation_help" id="installation_help">Installation help</a></h1>
<div class="level1">
<p>
This section provides some information useful to people who want to install gEDA onto their computers.
</p>
</div>
<!-- SECTION [1-136] -->
<h2><a name="how_do_i_install_the_geda_suite" id="how_do_i_install_the_geda_suite">How do I install the gEDA Suite?</a></h2>
<div class="level2">
<p>
The easiest way to install the gEDA Suite is to grab the gEDA Suite CD ROM and use it. The instructions are contained in the README available on the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">downloads page</a>. <strong><em>Note that the CD ROM installer assumes that you are running the Gnome desktop! The same is true of the gEDA tools: They use the GTK widget set which underlies Gnome. If you are running KDE, you need to at least get the Gnome libraries installed on your machine before trying to run the installer.</em></strong>
</p>
<p>
The gEDA Suite CD holds the tarballs of more than one dozen popular gEDA applications. It also incorporates a <acronym title="Graphical User Interface">GUI</acronym>-based install wizard which checks your system configuration, asks you a few questions, and then oversees the compilation and installation of the different gEDA applications. The install wizard just automates the normal â??./configure && make && make installâ?? process used to build GNU software from source. Therefore, it is more or less platform independent (as long as you are running Linux).
</p>
<p>
In the event that the install wizard canâ??t automatically install the gEDA Suite, you can still get the source tarballs off the CD and build them manually. The instructions are available from the download web page, as well as in the INSTALL file on the CD.
</p>
<p>
Also, people have created RedHat RPMs, Debian Debs, and Mac OSX Fink packages if you prefer to install that way. These binary distributions are available on the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">downloads page</a>. Finally, source tarballs for all programs are also available on the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">downloads page</a>.
</p>
<p>
By the way, itâ??s always a good idea to install gEDA into its own directory. That way, when you want to upgrade the package you just need to delete the directory and re-install. (This advice is true for any large suite of applications in unix.) More on this below.
</p>
<p>
Finally, if the instructions here arenâ??t enough, David Hart has placed a useful and detailed <a href="http://www.offramp.com/Lab-Install/doku.php?id=fc4#create_user_geda_account_and_install_geda_tool_suite" class="urlextern" title="http://www.offramp.com/Lab-Install/doku.php?id=fc4#create_user_geda_account_and_install_geda_tool_suite" rel="nofollow">guide for configuring and installing gEDA</a> (for Fedora Core 4, but probably helpful with other distros too), as well as a <a href="http://www.offramp.com/Lab-Install/doku.php?id=fc4#geda_tutorial" class="urlextern" title="http://www.offramp.com/Lab-Install/doku.php?id=fc4#geda_tutorial" rel="nofollow">gEDA Tutorial</a> for new users.
</p>
</div>
<!-- SECTION [137-2495] -->
<h2><a name="how_do_i_uninstall_the_geda_suite" id="how_do_i_uninstall_the_geda_suite">How do I uninstall the gEDA Suite?</a></h2>
<div class="level2">
<p>
As of this writing, no advanced method to uninstall the gEDA Suite exists. Unlike a certain commercial operating system, Linux (and unix) were not designed with the goal of easy package management in mind, and we all suffer with this legacy.
</p>
<p>
Therefore, we recommend that you install the gEDA Suite into its own special directory. For example, the CD Installer will place the Suiteâ??s executables into <strong><code>${HOME}/geda-install</code></strong> by default. Then, if you need to uninistall the gEDA Suite, you can just delete the entire directory.
</p>
<p>
<span class="hilited">(More advanced methods to install/uninstall packages on Linux/unix also exist. Could somebody please write about them here?)</span>
</p>
</div>
<!-- SECTION [2496-3207] -->
<h2><a name="why_would_i_want_to_uninstall_the_geda_suite" id="why_would_i_want_to_uninstall_the_geda_suite">Why would I want to uninstall the gEDA Suite?</a></h2>
<div class="level2">
<p>
Different applications belonging to gEDA/gaf all use the same shared library, libgeda.so. Things in the library change from one gEDA release to another. Therefore, applications are prevented from linking to libgeda.so if their release codes donâ??t match.
</p>
<p>
If you need to upgrade one application in gEDA/gaf, you will need to first uninstall your old version, and then install an entirely new set of applications, including the library and all components of gEDA/gaf.
</p>
<p>
Alternately, you can install the new gEDA/gaf into a new directory, and then edit your <strong><code>${PATH}</code></strong>, <strong><code>${PKG_CONFIG_PATH}</code></strong>, and <strong><code>${LD_LIBRARY_PATH}</code></strong> environment variables to remove the old directory, and point to the new one. Make sure you do this <strong>before</strong> you try installing the new gEDA/gaf.
</p>
</div>
<!-- SECTION [3208-4045] -->
<h2><a name="aaaargh_i_put_the_cd_into_my_reader_and_mounted_the_cd_but_nothing_happened" id="aaaargh_i_put_the_cd_into_my_reader_and_mounted_the_cd_but_nothing_happened">Aaaargh! I put the CD into my reader, and mounted the CD, but nothing happened!</a></h2>
<div class="level2">
<p>
Amazingly enough, some people simply copy the installer .iso file using â??cpâ?? onto a blank CD, and then try to use it. This wonâ??t work. You need to â??burnâ?? a CD with the .iso in a way which writes the whole filesystem directly onto the CDROM. The linux/unix command to do this is usually â??cdrecordâ??, or perhaps a <acronym title="Graphical User Interface">GUI</acronym> derivative of this utility. Donâ??t just â??cpâ?? the .iso file onto a blank CD!
</p>
<p>
Many modern Linux distributions will not automatically run executables on installed media. This is a security precaution. To overcome this, you need to mount the CD in a way which grants permission for executables to run. For example, in Gentoo and Debian you should mount the CD ROM this way:
</p>
<pre class="code">mount -o exec -t iso9660 /dev/cdrom /mnt/cdrom</pre>
<p>
The detailed flag or mount point relevant to your distribution might be a little different; read the manual for mount (â??man mountâ??) if you have any questions about how to do this.
</p>
<p>
After you have mounted the CD with execute permission, you can then run the installer from the command line like this:
</p>
<pre class="code">/mnt/cdrom/installer</pre>
<p>
At this point, the install wizardâ??s <acronym title="Graphical User Interface">GUI</acronym> should pop up, and you can get to installing. If you canâ??t install, please try doing an â??lsâ?? of the CD to see if it is readable. That is, do this:
</p>
<pre class="code">ls -l /mnt/cdrom/</pre>
<p>
And verify that you get a directory listing instead of an error message (or nothing at all).
</p>
</div>
<!-- SECTION [4046-5564] -->
<h2><a name="help_me_i_m_trying_to_install_using_the_cd_rom_but_the_install_wizard_says_i_have_an_error" id="help_me_i_m_trying_to_install_using_the_cd_rom_but_the_install_wizard_says_i_have_an_error">Help me! I'm trying to install using the CD ROM, but the install wizard says I have an error!</a></h2>
<div class="level2">
<p>
First off, please keep in mind that the CD ROMâ??s installer only works on Linux. The CD ROM installer will not work on Sun, BSD, or Mac OSX, and it certainly wonâ??t work on Windows.
</p>
<p>
As a general rule, if you are having problems installing gEDA from the CD, here are the things you can try:
</p>
<ol>
<li class="level1"><div class="li"> If you run the installer with the <strong><code>â??log</code></strong> flag set, it will place a file called Install.log into your local directory (where you are running the installer). This file is a log of all commands issued and all responses generated during the install process. It allows you to save the data displayed on the log window displayed during the install process. Running the installer with <strong><code>â??log</code></strong> set is a good idea if you are experiencing problems; you can send your Install.log file to an expert who might be able to diagnose your problem. More on this later.</div>
</li>
<li class="level1"><div class="li"> After experiencing a problem, the first thing you should do is look through the gEDA Wiki. Itâ??s quite likely that somebody has already experienced your problem, reported it, and a work around has been found and posted. Different Linux distributions have displayed different problems in the past. Depending upon your distribution, consult the help sections below.</div>
</li>
<li class="level1"><div class="li"> If no mention of your specific problem has been posted on the Wiki, try a Google search. GEDA tips and tricks show up in many different places on the web, and Google can find them for you. Also, the geda-user list is continually indexed by Google. Since people frequently post bugs and bug workarounds there, Google will help you find these reports.</div>
</li>
<li class="level1"><div class="li"> Next, try posting a question on the geda-user e-mail list. Note that you must first subscribe to the geda-user e-mail list before posting any e-mail to the list. Others may have already developed a work-around for your problem. Some of the experts hang out on that list, and might offer a few helpful suggestions.</div>
</li>
</ol>
</div>
<!-- SECTION [5565-7576] -->
<h2><a name="waaaa_the_installation_ran_to_completion_but_i_get_a_segfault_or_other_problem_when_i_run_gschem_or_gattrib_or_gnetlist_or" id="waaaa_the_installation_ran_to_completion_but_i_get_a_segfault_or_other_problem_when_i_run_gschem_or_gattrib_or_gnetlist_or">Waaaa! The installation ran to completion, but I get a segfault (or other problem) when I run gschem (or gattrib, or gnetlist, or. . . )!</a></h2>
<div class="level2">
<p>
After you install the gEDA Suite off the CD ROM, make sure you do the following:
</p>
<ol>
<li class="level1"><div class="li"> Set your <strong><code>${PATH}</code></strong> to point to the location where your new gEDA executables live (for example, <strong><code>/home/your-name/geda-install/bin</code></strong>). Make sure that you remove pointers to old gEDA editions, if they exist. You should not only set the <strong><code>${PATH}</code></strong> in your current shell, but you should also set it in your shell config scripts (i.e. .bashrc or .cshrc)</div>
</li>
<li class="level1"><div class="li"> Type â??rehashâ?? to update your executable search path.</div>
</li>
<li class="level1"><div class="li"> Set your <strong><code>${LD_LIBRARY_PATH}</code></strong> to point to the location where your new gEDA executables live (for example, <strong><code>/home/your-name/geda-install/lib</code></strong>). Make sure to remove pointers to old gEDA editions, if they exist. You should not only set the <strong><code>${LD_LIBRARY_PATH}</code></strong> in your current shell, but you should also set it in your shell config scripts (i.e. .bashrc or .cshrc)</div>
</li>
<li class="level1"><div class="li"> Run â??su -c ldconfigâ?? to tell the kernal where to find your new libgeda.so.</div>
</li>
</ol>
</div>
<!-- SECTION [7577-8704] -->
<h2><a name="fedora_core_4_install_notes" id="fedora_core_4_install_notes">Fedora Core 4 install notes</a></h2>
<div class="level2">
<p>
<a href="geda_fc4.html" class="wikilink1" title="geda:fc4">FC4 notes available here</a>
</p>
</div>
<!-- SECTION [8705-8783] -->
<h2><a name="fedora_core_3_install_notes" id="fedora_core_3_install_notes">Fedora Core 3 install notes</a></h2>
<div class="level2">
<p>
<a href="geda_fc3.html" class="wikilink1" title="geda:fc3">FC3 notes available here</a>
</p>
</div>
<!-- SECTION [8784-8862] -->
<h2><a name="fedora_core_2_install_notes" id="fedora_core_2_install_notes">Fedora Core 2 install notes</a></h2>
<div class="level2">
<p>
<a href="geda_fc2.html" class="wikilink1" title="geda:fc2">FC2 notes available here</a>
</p>
</div>
<!-- SECTION [8863-8941] -->
<h2><a name="fedora_core_1_install_notes" id="fedora_core_1_install_notes">Fedora Core 1 install notes</a></h2>
<div class="level2">
<p>
<a href="geda_fc1.html" class="wikilink1" title="geda:fc1">FC1 notes available here</a>
</p>
</div>
<!-- SECTION [8942-9020] -->
<h2><a name="suse_9.3_install_notes" id="suse_9.3_install_notes">Suse 9.3 install notes</a></h2>
<div class="level2">
<p>
<a href="geda_suse_9.html" class="wikilink1" title="geda:suse_9.3">SuSE 9.3 notes available here</a>
</p>
</div>
<!-- SECTION [9021-9104] -->
<h2><a name="suse_10.0_install_notes" id="suse_10.0_install_notes">Suse 10.0 install notes</a></h2>
<div class="level2">
<p>
<a href="geda_suse_10.html" class="wikilink1" title="geda:suse_10.0">SuSE 10.0 notes available here</a>
</p>
</div>
<!-- SECTION [9105-9191] -->
<h2><a name="windows_install_notes" id="windows_install_notes">Windows install notes</a></h2>
<div class="level2">
<p>
<a href="geda_cygwin.html" class="wikilink1" title="geda:cygwin">Cygwin notes available here</a>
</p>
</div>
<!-- SECTION [9192-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_installed_plugins.html
Index: geda_installed_plugins.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:installed_plugins</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:installed_plugins?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:installed_plugins?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:installed_plugins?do=export_raw" />
<meta name="date" content="2006-05-08T17:43:35-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#installed_plugins" class="toc">Installed plugins</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#hilited" class="toc">hilited</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#xterm" class="toc">xterm</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="installed_plugins" id="installed_plugins">Installed plugins</a></h1>
<div class="level1">
<p>
The following plugins have been installed, to give the gEDA Project Wiki additional functionality.
</p>
</div>
<!-- SECTION [1-132] -->
<h2><a name="hilited" id="hilited">hilited</a></h2>
<div class="level2">
<p>
The “hilited” plugin acts as a yellow highlighter. Surround the text you want to highlight with double-exclamation marks.
</p>
<p>
Example:<br/>
</p>
<pre class="code">Sample text !!highlighted!! in a paragraph.</pre>
<p>
becomes:<br/>
Sample text <span class="hilited">highlighted</span> in a paragraph.
</p>
</div>
<!-- SECTION [133-400] -->
<h2><a name="xterm" id="xterm">xterm</a></h2>
<div class="level2">
<p>
The “xterm” plugin allows you to embed preformatted text.<br/>
The <code><</code>xterm<code>><</code>/xterm<code>></code> tags surround the text you wish to embed.<br/>
The <code><</code>xterm<code>><</code>/xterm<code>></code> tags differ from the built-in <code><</code>code<code>><</code>/code<code>></code> tags as follows:
</p>
<ul>
<li class="level1"><div class="li"> The text is indented.</div>
</li>
<li class="level1"><div class="li"> You can emphasize parts of the text.</div>
</li>
<li class="level1"><div class="li"> The text will have a lightgreen background, so it will stand out on the wiki-page.</div>
</li>
</ul>
<p>
Example:<br/>
The following is indented from the current section’s left margin: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">embedded <strong>preformatted</strong> words</font></pre>
</p>
<p>
The following shows how the preformatted text will follow the <acronym title="Extensible HyperText Markup Language">XHTML</acronym> indent levels:
</p>
<ul>
<li class="level1"><div class="li"> Test line 1.</div>
</li>
<li class="level1"><div class="li"> Test line 2.<br/>
<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">Indented test line 3.</font></pre></div>
</li>
<li class="level1"><div class="li"> Test line 4.</div>
</li>
</ul>
</div>
<!-- SECTION [401-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_kig_howto.html
Index: geda_kig_howto.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:kig_howto</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:kig_howto?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:kig_howto?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:kig_howto?do=export_raw" />
<meta name="date" content="2006-04-20T11:02:57-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#how_to_setup_keymapping_in_gschem" class="toc">How To Setup Keymapping In gschem</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#about_this_document" class="toc">About this document</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#functionality" class="toc">Functionality</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#keymaps" class="toc">Keymaps</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#an_example_on_keymaps" class="toc">An example on keymaps</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#description_of_keys" class="toc">Description of keys</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#actions" class="toc">Actions</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#function_calls" class="toc">Function calls</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#another_keymap" class="toc">Another keymap</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#where_are_the_key_mappings_stored" class="toc">Where are the key mappings stored</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#appendix_a_--_dictionary" class="toc">Appendix A -- Dictionary</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#appendix_b_--_built-in_actions_in_gschem" class="toc">Appendix B -- Built-in actions in gschem</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="how_to_setup_keymapping_in_gschem" id="how_to_setup_keymapping_in_gschem">How To Setup Keymapping In gschem</a></h1>
<div class="level1">
<p>
by: Stefan Petersen, spe@xxxxxxxxxxxxx This document is released under <a href="http://www.fsf.org/copyleft/gpl.html" class="urlextern" title="http://www.fsf.org/copyleft/gpl.html" rel="nofollow">GPL</a>
</p>
<p>
1999-07-24
</p>
</div>
<!-- SECTION [1-177] -->
<h2><a name="about_this_document" id="about_this_document">About this document</a></h2>
<div class="level2">
<p>
The purpose of this document is to try to explain how key mapping works in gEDA/gschem schematic entry program. It uses the langauge Scheme a lot, which is a Lisp-dialect and is used in gschem as a scripting language. If you’re not familiar with this language, please see the dictionary (see appendix A, page X, for a short description of common data structures used in Scheme.
</p>
</div>
<!-- SECTION [178-588] -->
<h2><a name="functionality" id="functionality">Functionality</a></h2>
<div class="level2">
<p>
When you press a button in gschem, a Scheme function is called. This function (press-key) accepts one argument, the name of the pressed key. Then there are Scheme routines to evaluate which key you pressed and call the appropriate action.<br/>
Since the evaluation routines are written in Scheme it’s simple to change the behaviour of what happens when you presses a key. You can implement macros or do several things at each key press. For example, the “repeat-last-key” command is implemented completly in Scheme.
</p>
</div>
<!-- SECTION [589-1128] -->
<h2><a name="keymaps" id="keymaps">Keymaps</a></h2>
<div class="level2">
<p>
The current implementation is built-up around “keymaps”. A keymap is a list with pairs. Each pairs first element (the car-element) is which key to react on, and the second element (cdr) is a “what-to-do-next”. This can either be an action, a function to call or another keymap.
</p>
</div>
<!-- SECTION [1129-1427] -->
<h3><a name="an_example_on_keymaps" id="an_example_on_keymaps">An example on keymaps</a></h3>
<div class="level3">
<p>
Two simple examples of keymaps are seen in Figure 1 and Figure 2.
</p>
<pre class="code">(define global-keymap
'(("Escape" . cancel)
("a" . add-keymap)))</pre>
<p>
Figure 1: First example of an simple keymap
</p>
<p>
In figure 1 is the keymap called global-keymap. This keymap is the first keymap used. If you for example press the ‘a’-key, global-keymap tells us that next key pressed will be interpreted by add-keymap (see figure 2).
</p>
<pre class="code">(define add-keymap
'(("c" . add-component)
("a" . add-attribute)
("n" . add-net-hotkey)))</pre>
<p>
Figure 2: Second example of an simple keymap
</p>
<p>
If you, after you pressed ‘a’, press a ‘c’ the built-in action add-component comes to live. This is exactly what had happend if you had selected Add, Component...in the menubar.<br/>
When an action has been performed the current keymap is reset back to global-keymap.<br/>
Available built-in actions are listed in appendix B.
</p>
</div>
<!-- SECTION [1428-2357] -->
<h3><a name="description_of_keys" id="description_of_keys">Description of keys</a></h3>
<div class="level3">
<p>
The key are described as:
</p>
<table class="inline">
<tr>
<td> For a </td><td> “a” </td>
</tr>
<tr>
<td class="leftalign"> For Shift-A </td><td> “Shift A” </td>
</tr>
<tr>
<td> For Control-a </td><td> “Control a” </td>
</tr>
<tr>
<td> For Alt-a </td><td> “Alt a” </td>
</tr>
</table>
<br />
<p>
There are a few simple rules to follow when keys for a new keymap is defined:
</p>
<ul>
<li class="level1"><div class="li"> Everything is case sensitive</div>
</li>
<li class="level1"><div class="li"> At this point in time you can only have one modifier (shift, control, alt) at a time.</div>
</li>
<li class="level1"><div class="li"> Keys must be unique in each keymap, especially the global one</div>
</li>
<li class="level1"><div class="li"> Strings (without any modifers) are the same strings specified for the keys in the file /usr/lib/X11/XKeysymDB (at least on a linux box) </div>
</li>
</ul>
</div>
<!-- SECTION [2358-2925] -->
<h3><a name="actions" id="actions">Actions</a></h3>
<div class="level3">
<p>
The built-in actions that can be called are listed in Appendix B.<br/>
Sometimes you may notice that there are similar actions, like edit-rotate-90 and edit-rotate-90-hotkey. They do the same thing, just that the -hotkey actions is run immediately, while the other wait for you to select something.
</p>
</div>
<!-- SECTION [2926-3240] -->
<h3><a name="function_calls" id="function_calls">Function calls</a></h3>
<div class="level3">
<p>
If the cdr-element is an ordinary Scheme function that function is called. The function can’t receive any arguments.<br/>
This can be used if you want to do complex tasks, like several actions in a row or do some calculation. You can do rather advanced actions since the Guile dialect of Scheme used in gschem is extended from plain Scheme. For further information on Guile, please see the Guile documentation.
</p>
</div>
<!-- SECTION [3241-3674] -->
<h3><a name="another_keymap" id="another_keymap">Another keymap</a></h3>
<div class="level3">
<p>
If the cdr-element is another keymap then that command is a multi-key command, ie you need to press at least two keys to cause an action. The first key is desribed in the first keymap, which points to the next keymap. The second keymap describes what should happen when the second key is pressed.
</p>
</div>
<!-- SECTION [3675-3997] -->
<h2><a name="where_are_the_key_mappings_stored" id="where_are_the_key_mappings_stored">Where are the key mappings stored</a></h2>
<div class="level2">
<p>
The keymap is stored in the startup file for gschem, namely <code><startpath, typically /usr/local>/share/gEDA/system-gschemrc</code>.<br/>
You can then redefine or add keymaps as you like (I think) in your local setup file for gschem, ~/.gEDA/gschemrc
</p>
<p>
The Scheme functions used to resolve keypresses to actions are stored at <code><startpath, typically /usr/local>/share/gEDA/scheme/gschem.scm</code>. This is configurable in the gschemrc files.
</p>
</div>
<!-- SECTION [3998-4471] -->
<h3><a name="appendix_a_--_dictionary" id="appendix_a_--_dictionary">Appendix A -- Dictionary</a></h3>
<div class="level3">
<table class="inline">
<tr>
<td> <strong>function</strong> </td><td>A subprogram in Scheme, C or other programming languages. </td>
</tr>
<tr>
<td><strong>action</strong> </td><td>What gschem (in this case) does when you press a key or a set of keys. </td>
</tr>
<tr>
<td><strong>list</strong> </td><td>A data structure very common in Lisp-looking languages like Scheme. Simply put, a long list of values. </td>
</tr>
<tr>
<td><strong>pair</strong> </td><td>(also dotted pair) A datstructure also very common in Lisp-looking languages. </td>
</tr>
<tr>
<td><strong>car element</strong> </td><td>First element in a pair. Since lists are decendents from pairs, car is also the first element in a list. </td>
</tr>
<tr>
<td><strong>cdr element</strong> </td><td>(pronounced cudr) The second element in a pair. In the list case it denotes the rest of list. </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [4472-5116] -->
<h2><a name="appendix_b_--_built-in_actions_in_gschem" id="appendix_b_--_built-in_actions_in_gschem">Appendix B -- Built-in actions in gschem</a></h2>
<div class="level2">
<p>
Run: <pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">grep gh_register_procedure_0_0 gschem/src/g_register.c</font></pre>
</p>
<p>
and do some work in emacsen.
</p>
<p>
<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">file-new-window
file-new
file-open
file-script
file-save
file-save-as
file-save-all
file-print
file-image
file-close-window
file-quit
edit-select
edit-copy
edit-copy-hotkey
edit-move
edit-move-hotkey
edit-delete
edit-rotate-90
edit-rotate-90-hotkey
edit-mirror
edit-mirror-hotkey
edit-slot
edit-color
edit-edit
edit-lock
edit-unlock
edit-translate
edit-embed
edit-unembed
edit-hidden
view-redraw
view-zoom-full
view-zoom-limits
view-zoom-in
view-zoom-out
view-zoom-box
view-zoom-box-hotkey
view-pan
view-pan-hotkey
view-update-nets
page-manager
page-next
page-prev
page-new
page-close
page-discard
page-print
add-component
add-attribute
add-net
add-net-hotkey
add-text
add-line
add-line-hotkey
add-box
add-box-hotkey
add-circle
add-circle-hotkey
add-arc
add-arc-hotkey
add-pin
add-pin-hotkey
hierarchy-open-symbol
attributes-attach
attributes-detach
attributes-show-name
attributes-show-value
attributes-show-both
attributes-visibility-toggle
options-text-size
options-snap-size
options-action-feedback
options-grid
options-snap
options-show-log-window
options-show-coord-window
misc-misc
cancel</font></pre>
</p>
</div>
<!-- SECTION [5117-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_master_attributes_list.html
Index: geda_master_attributes_list.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:master_attributes_list</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:master_attributes_list?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:master_attributes_list?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:master_attributes_list?do=export_raw" />
<meta name="date" content="2006-04-22T11:15:17-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_gaf_master_attribute_document" class="toc">gEDA/gaf Master Attribute Document</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_are_attributes" class="toc">What are Attributes?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#symbol_only_attributes" class="toc">Symbol only Attributes</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#device" class="toc">device</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#graphical" class="toc">graphical</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#description" class="toc">description</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#author" class="toc">author</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#comment" class="toc">comment</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pinseq" class="toc">pinseq</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pinnumber" class="toc">pinnumber</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pintype" class="toc">pintype</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pinlabel" class="toc">pinlabel</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#numslots" class="toc">numslots</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#slotdef" class="toc">slotdef</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#footprint" class="toc">footprint</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#documentation" class="toc">documentation</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#schematic_only_attributes" class="toc">Schematic only Attributes</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#netname" class="toc">netname</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#source" class="toc">source</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#symbol_and_schematic_attributes" class="toc">Symbol and Schematic Attributes</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#refdes" class="toc">refdes</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#slot" class="toc">slot</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#net" class="toc">net</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#value" class="toc">value</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#symversion" class="toc">symversion</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#obsolete_attributes" class="toc">Obsolete Attributes</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#uref" class="toc">uref</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#name" class="toc">name</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#label" class="toc">label</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pin" class="toc">pin#</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#slot1" class="toc">slot#</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#type" class="toc">type</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#email" class="toc">email</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#document_revision_history" class="toc">Document Revision History</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_gaf_master_attribute_document" id="geda_gaf_master_attribute_document">gEDA/gaf Master Attribute Document</a></h1>
<div class="level1">
<p>
by: Ales V. Hvezda, ahvezda@xxxxxxxxxxxxx
</p>
<p>
This document is released under <a href="http://www.gnu.org/copyleft/fdl.html" class="urlextern" title="http://www.gnu.org/copyleft/fdl.html" rel="nofollow">GFDL</a>
</p>
<p>
July 6th, 2004
</p>
</div>
<!-- SECTION [1-187] -->
<h2><a name="overview" id="overview">Overview</a></h2>
<div class="level2">
<p>
This document describes all the attributes used in in gEDA/gaf (<acronym title="GNU General Public License">GPL</acronym>‘d Electronic Design Automation / Gschem And Friends). This document is broken down into several section: this overview, symbol only attributes, schematic only attributes, attributes which can appear in both symbols and schematics, and attributes which are obsolete or deprecated.<br/>
In this document, attribute names are in <strong>bold</strong> and examples are in the <code>typewriter</code> font.
</p>
</div>
<!-- SECTION [188-654] -->
<h2><a name="what_are_attributes" id="what_are_attributes">What are Attributes?</a></h2>
<div class="level2">
<p>
Attributes in the gEDA/gaf system are nothing more than text items which take on the form: <strong>name</strong>=value. Name can be anything just as long as it doesn’t contain a equals sign. Value can also be anything just as long as it is something (vs nothing). <strong>name</strong>= (without a value part) is not a valid attribute. Also, there cannot be any spaces immediately before or after the equals sign.<br/>
Attributes can be attached to some part of the symbol. If the attribute conveys information specific to an object, then the attribute should be attached directly to the object, otherwise the attribute should be free standing or oating. Free standing attributes just exist in the symbol file as text items which take on the form <strong>name</strong>=value.
</p>
</div>
<!-- SECTION [655-1423] -->
<h2><a name="symbol_only_attributes" id="symbol_only_attributes">Symbol only Attributes</a></h2>
<div class="level2">
</div>
<!-- SECTION [1424-1458] -->
<h3><a name="device" id="device">device</a></h3>
<div class="level3">
<p>
<strong>device</strong>= is the device name of the symbol and is required by gnetlist.<br/>
<strong>device</strong>= should be placed somewhere in the symbol and made invisible. This is a free standing or oating attribute. If the object is a graphic then <strong>device</strong>= should be set to none (<strong>device</strong>=none) and attach a <a href="#graphical" title="geda:master_attributes_list ↵" class="wikilink1">graphical</a>= attribute. Do not confuse this attribute with just having a text label which the device name. Do not put spaces into the device name; there are some programs which dislike spaces in the device specifier. Generally the device name is in all caps.<br/>
Examples: <code>device=7400 device=CONNECTOR 10 device=NPN TRANSISTOR</code>
</p>
</div>
<!-- SECTION [1459-2100] -->
<h3><a name="graphical" id="graphical">graphical</a></h3>
<div class="level3">
<p>
Symbols which have no electrical or circuit significance need a <strong>graphical</strong>=1 attribute. Symbols like titleboxes are purely graphical symbols. Any symbol which has <strong>graphical</strong>=1 is ignored by gnetlist.<br/>
<strong>graphical</strong>=1 should exist somewhere in the symbol and made invisible. This is a free standing or oating attribute. Don’t forget to set <a href="#device" title="geda:master_attributes_list ↵" class="wikilink1">device</a>=none.<br/>
Example: <code>graphical=1</code>
</p>
</div>
<!-- SECTION [2101-2513] -->
<h3><a name="description" id="description">description</a></h3>
<div class="level3">
<p>
The <strong>description</strong> attribute provides a simple one line description of what the symbol is supposed to represent.<br/>
Example: <code>description=4 NAND gates with 2 inputs</code>
</p>
</div>
<!-- SECTION [2514-2704] -->
<h3><a name="author" id="author">author</a></h3>
<div class="level3">
<p>
The <strong>author</strong> attribute identifies the name of the author of this symbol and their e-mail address. This attribute is optional, but it is nice to know who created which symbols. It also serves the purpose of known who to contact if there are questions about the intent(s) of the symbol. This attribute is free form and it can also include people’s names who modified the symbol as well as multiple e-mail addresses. It is probably also a good idea to obfuscate the e-mail address so it is not harvested for spam purposes.<br/>
Example: <code>author=Ales Hvezda ahvezdaATgeda.seul.org</code>
</p>
</div>
<!-- SECTION [2705-3301] -->
<h3><a name="comment" id="comment">comment</a></h3>
<div class="level3">
<p>
The <code>comment</code> attribute can contain anything. This attribute can convey any additional information which might not fit into any other attribute. There can be multiple instances of this attribute.<br/>
Example: <code>comment=This is a comment inside a symbol</code>
</p>
</div>
<!-- SECTION [3302-3575] -->
<h3><a name="pinseq" id="pinseq">pinseq</a></h3>
<div class="level3">
<p>
This attribute is used to give each pin an unique number or sequence. All pins must have a <strong>pinseq</strong>=# attribute attached to the pin object. This attribute should be hidden. This attribute is used extensively by gschem and gnetlist.<br/>
In some backends (especially the SPICE backend), gnetlist will output pins in the order of increasing pin sequence. The sequence numbers start at 1 and should increase without skipping any numbers. This attribute is not the pin number (i.e. device pin numbers, like GND is 7 on TTL). For pin numbers see the <a href="#pinnumber" title="geda:master_attributes_list ↵" class="wikilink1">pinnumber</a> attribute.<br/>
Examples: <code>pinseq=1 pinseq=2 pinseq=3</code><br/>
</p>
<p>
This attribute replaces the obsolete <strong>pin#</strong>=# attribute.
</p>
</div>
<!-- SECTION [3576-4268] -->
<h3><a name="pinnumber" id="pinnumber">pinnumber</a></h3>
<div class="level3">
<p>
This attribute is the pin number (i.e. like GND is 7 on 74 TTL). All pins must have a <strong>pinnumber</strong>=# attribute attached to the pin object.<br/>
You can have numbers or letters for the value. This attribute should be visible with the value only visible. You also need a <a href="#pinseq" title="geda:master_attributes_list ↵" class="wikilink1">pinseq</a> attribute.<br/>
Examples: <code>pinnumber=1 pinnumber=13 pinnumber=A0</code><br/>
</p>
<p>
This attribute replaces the obsolete pin#=# attribute.
</p>
</div>
<!-- SECTION [4269-4691] -->
<h3><a name="pintype" id="pintype">pintype</a></h3>
<div class="level3">
<p>
Each pin must have a <strong>pintype</strong>=value attribute attached to it and should be make hidden. Table 1 shows valid values for this attribute.<br/>
This attribute is not used extensively in the symbol library, but it will be used for DRC and netlisting.<br/>
Examples: <code>pintype=clk pintype=in pintype=pas</code><br/>
</p>
<table class="inline">
<tr>
<td>in</td><td>Input</td>
</tr>
<tr>
<td>out</td><td>Output</td>
</tr>
<tr>
<td>io</td><td>Input/Output</td>
</tr>
<tr>
<td>oc</td><td>Open collector</td>
</tr>
<tr>
<td>oe</td><td>Open emitter</td>
</tr>
<tr>
<td>pas</td><td>Passive</td>
</tr>
<tr>
<td>tp</td><td>Totem pole</td>
</tr>
<tr>
<td>tri</td><td>Tristate (high impedance)</td>
</tr>
<tr>
<td>clk</td><td>Clock</td>
</tr>
<tr>
<td>pwr</td><td>Power/Ground</td>
</tr>
<tr>
<td colspan="2">Table 1: pintype values</td>
</tr>
</table>
<br />
</div>
<!-- SECTION [4692-5210] -->
<h3><a name="pinlabel" id="pinlabel">pinlabel</a></h3>
<div class="level3">
<p>
This attribute labels a pin object. This attribute is primarily used by gnetlist to support hierarchical designs.<br/>
This attribute must be attached to the pin and be left visible. Please make this attribute green (instead of the default attribute yellow).<br/>
Examples: <code>pinlabel=A0 pinlabel=DATA1 pinlabel=CLK</code><br/>
</p>
</div>
<!-- SECTION [5211-5544] -->
<h3><a name="numslots" id="numslots">numslots</a></h3>
<div class="level3">
<p>
If a component has multiple slots in a physical package (such as a 7400 (NAND) which has 4 NANDs per package) then you need a <strong>numslots</strong>=# attribute. The # is the number of slots that are in a physical device. <strong>numslots</strong>=# should exist somewhere in the symbol and be made invisible. This is a free standing or floating attribute. If the symbol does not need slotting, then put <strong>numslots</strong>=0 into the symbol file.<br/>
Example: <code>numslots=4</code>
</p>
</div>
<!-- SECTION [5545-6008] -->
<h3><a name="slotdef" id="slotdef">slotdef</a></h3>
<div class="level3">
<p>
If a component has multiple slots in a physical package then you must attach a <strong>slotdef</strong>=slotnumber:#,#,#... for every device inside the physical package.<br/>
The slotnumber corresponds to the slot number. The colon after the slot number is required. For example, if a device has 4 slots then there would be <strong>slotdef</strong>=1:..., <strong>slotdef</strong>=2:..., <strong>slotdef</strong>=3:..., and slotdef=4:... attributes somewhere in the symbol and be made invisible. This is a free standing or oating attribute.<br/>
The #’s have a one-to-one correspondence to the <strong>pinseq</strong> attributes and specify which <strong>pinnumber</strong>=# is used during display (gschem) or netlisting (gnetlist).<br/>
It is recommended that all symbols which have slots have a <a href="#slot" title="geda:master_attributes_list ↵" class="wikilink1">slot</a>=1 attribute attached in the same fashion as the <a href="#device" title="geda:master_attributes_list ↵" class="wikilink1">device</a>= attribute.<br/>
See 7400-1.sym as a concrete example.<br/>
Examples: <code>slotdef=1:1,2,3 slotdef=2:4,5,6 slotdef=3:7,8,9</code><br/>
This attribute replaces the obsolete <strong>slot</strong>#=# attribute.
</p>
</div>
<!-- SECTION [6009-6987] -->
<h3><a name="footprint" id="footprint">footprint</a></h3>
<div class="level3">
<p>
<strong>footprint</strong>=package name should exist somewhere in the symbol and be made invisible. This attribute is used by gnetlist and primarily for the PCB package.<br/>
Attach this attribute just like the <a href="#device" title="geda:master_attributes_list ↵" class="wikilink1">device</a>= attribute. This is a free standing or floating attribute.<br/>
package name is the pcb footprint or package type like DIP14 or DIP40. Although this attribute in principle is pcb package dependent, gEDA/gaf conventions exist to make this attribute as portable as possible, allowing for easy collaboration and sharing between users. See the <a href="http://geda.seul.org/wiki/geda:scg#footprint_naming_conventions" class="wikilink1" title="geda:scg">Footprint naming conventions in the Symbol Creation Guide</a>.<br/>
If the symbol does not have a footprint, then the value of <strong>footprint</strong>= should be set to none. If the footprint must be overridden in a schematic, then the value of <strong>footprint</strong>= should be set to none. If the footprint is not known, then the value of footprint= should be set to unknown.
</p>
</div>
<!-- SECTION [6988-7946] -->
<h3><a name="documentation" id="documentation">documentation</a></h3>
<div class="level3">
<p>
<strong>documentation</strong>=documentation_locator may exist somewhere in the symbol and be made invisible. This attribute is used by gschemdoc to find relevant documentation for the symbol, or rather, the device or component associated with the symbol.<br/>
Attach this attribute just like the <a href="#device" title="geda:master_attributes_list ↵" class="wikilink1">device</a>= attribute. This is a freestanding or floating attribute.<br/>
documentation_locator is either the base filename of the documentation, or it is the complete Internet <acronym title="Uniform Resource Locator">URL</acronym> (Uniform Resource Locator). If it is the filename, an attempt will be made to search for it in the local gEDA share directory named <strong>documentation</strong>.<br/>
Filename example: <code>documentation=sn74ls00.pdf</code><br/>
<acronym title="Uniform Resource Locator">URL</acronym> example: <code>documentation=<a href="http://www-s.ti.com/sc/ds/sn74ls00.pdf" class="urlextern" title="http://www-s.ti.com/sc/ds/sn74ls00.pdf" rel="nofollow">http://www-s.ti.com/sc/ds/sn74ls00.pdf</a></code>
</p>
</div>
<!-- SECTION [7947-8705] -->
<h2><a name="schematic_only_attributes" id="schematic_only_attributes">Schematic only Attributes</a></h2>
<div class="level2">
</div>
<!-- SECTION [8706-8743] -->
<h3><a name="netname" id="netname">netname</a></h3>
<div class="level3">
<p>
This attribute should be attached to a net object to give it a name. Multiple net names for connected net segments is discouraged. All nets which have the same value are considered electrically connected. This attribute is not valid inside symbols (as you cannot have nets inside of symbols).<br/>
Examples: <code>netname=DATA0 H netname=CLK L</code><br/>
</p>
</div>
<!-- SECTION [8744-9103] -->
<h3><a name="source" id="source">source</a></h3>
<div class="level3">
<p>
The source= attribute is used to specify that a symbol has underlying schematics. This attribute is attached directly to a component.<br/>
This attribute should only be attached to instantiated components in schematics. Attach the attribute to a component and specify the filename (not the path) of the underlying schematic (like block.sch) for the value. The specified schematic must be in a source-library path. This attribute can be attached multiple times with difierent values which basically means that there are multiple underlying schematics.<br/>
Examples: <code>source=underlying.sch source=memory.sch</code>
</p>
</div>
<!-- SECTION [9104-9725] -->
<h2><a name="symbol_and_schematic_attributes" id="symbol_and_schematic_attributes">Symbol and Schematic Attributes</a></h2>
<div class="level2">
</div>
<!-- SECTION [9726-9769] -->
<h3><a name="refdes" id="refdes">refdes</a></h3>
<div class="level3">
<p>
This attribute is used to specify the reference designator to a particular instantiated component. It must be on ALL components which have some sort of electrical significance. This attribute can also be on the inside of a symbol (it will be promoted, i.e. attached to the outside of the symbol, if it is visible) to provide a default refdes value (such as U?).<br/>
Examples: <code>refdes=U1 refdes=R10 refdes=CONN1</code><br/>
</p>
</div>
<!-- SECTION [9770-10201] -->
<h3><a name="slot" id="slot">slot</a></h3>
<div class="level3">
<p>
This attribute is used to specify a slot for a slotted component. It should be attached to an instantiated component. This attribute can also be on the inside of a symbol (it will be promoted, i.e. attached to the outside of the symbol, if it is visible) to provide a default slot.
</p>
</div>
<!-- SECTION [10202-10499] -->
<h3><a name="net" id="net">net</a></h3>
<div class="level3">
<p>
The <strong>net</strong>= attribute is used to create power/ground and arbitrary nets. Please see the <a href="http://geda.seul.org/wiki/geda:na_howto" class="wikilink1" title="geda:na_howto">net= attribute mini-HOWTO</a> for more info. When this attribute is inside a symbol, it is used to create nets. When this attribute is attached to an instantiated component (in a schematic), then the <strong>net</strong>= can also be used to create new nets and can used to override existing nets.
</p>
</div>
<!-- SECTION [10500-10903] -->
<h3><a name="value" id="value">value</a></h3>
<div class="level3">
<p>
Used mainly in the spice backend netlister to specify the value of the various elements. No translation is done on this, and it is placed as is into the netlist.<br/>
Examples: <code>value=1K value=10V</code><br/>
</p>
</div>
<!-- SECTION [10904-11119] -->
<h3><a name="symversion" id="symversion">symversion</a></h3>
<div class="level3">
<p>
The <strong>symversion</strong>= attribute is used to version the contents of symbols. Normally this attribute is not present, but once a symbol has been accepted into the main gEDA symbol library and there are changes to it, this attribute must be placed into the symbol file and properly incremented. The value of this attribute takes the following form:<br/>
<strong>major.minor</strong>
</p>
<p>
where major and minor are just plain integers (separated by a period). The major number is incremented when a symbol has some sort of a change which will break or might break an existing schematic. The minor number is only incremented when a cosmetic or very minor change is made to the symbol. The major and minor numbers are not coupled in any way, however, when making major version changes, the minor version number can be reset to zero.<br/>
If this attribute is inside of a symbol and that symbol is placed onto a schematic, then the <strong>symversion</strong>= attribute will be automatically promoted and attached to the outside of the symbol. During the load of the symbol from disk, the value of the <strong>symversion</strong>= inside the symbol file (if any) and the <strong>symversion</strong>= attached to the symbol (if any) are compared. If the values are the same then the placed symbol matches the disk symbol file, however if the values do not match, then libgeda will output a warning/error message (based on whether it is a major or minor version change).<br/>
New symbols should not receive this attribute at all. Only when the symbol is change should this attribute be placed into the symbol file and maintained. Users should not attach this attribute manually to instantiated symbols. This attribute should normally be made invisible when placed inside of a symbol file. This attribute is always promoted when it is found inside of a symbol (during component placement).<br/>
Examples: <code>symversion=1.1</code><br/>
</p>
</div>
<!-- SECTION [11120-12988] -->
<h2><a name="obsolete_attributes" id="obsolete_attributes">Obsolete Attributes</a></h2>
<div class="level2">
</div>
<!-- SECTION [12989-13020] -->
<h3><a name="uref" id="uref">uref</a></h3>
<div class="level3">
<p>
The uref= attribute is obsolete and cannot not be used. It was used to provide the same information as <a href="#refdes" title="geda:master_attributes_list ↵" class="wikilink1">refdes</a>.
</p>
</div>
<!-- SECTION [13021-13152] -->
<h3><a name="name" id="name">name</a></h3>
<div class="level3">
<p>
The <strong>name</strong>= attribute should not be attached or appear in any symbol. It is considered ambiguous. <strong>name</strong>= was never used by gEDA/gaf.
</p>
</div>
<!-- SECTION [13153-13306] -->
<h3><a name="label" id="label">label</a></h3>
<div class="level3">
<p>
The <strong>label</strong>= attribute is obsolete and cannot be used. It was used to give nets names/labels and to label pins. The replacement attributes for this are <a href="#netname" title="geda:master_attributes_list ↵" class="wikilink1">netname</a> and <a href="#pinlabel" title="geda:master_attributes_list ↵" class="wikilink1">pinlabel</a> respectively.
</p>
</div>
<!-- SECTION [13307-13522] -->
<h3><a name="pin" id="pin">pin#</a></h3>
<div class="level3">
<p>
The <strong>pin#</strong>=# attribute is obsolete and cannot be used. It was used to provide sequence and number information to pins. The replacement attributes for this are <a href="#pinseq" title="geda:master_attributes_list ↵" class="wikilink1">pinseq</a> and <a href="#pinnumber" title="geda:master_attributes_list ↵" class="wikilink1">pinnumber</a>.
</p>
</div>
<!-- SECTION [13523-13731] -->
<h3><a name="slot1" id="slot1">slot#</a></h3>
<div class="level3">
<p>
The <strong>slot#</strong>=# attribute is obsolete and cannot be used. It was used to provide slotting information to components. The replacement attribute for this is <a href="#slotdef" title="geda:master_attributes_list ↵" class="wikilink1">slotdef</a>.
</p>
</div>
<!-- SECTION [13732-13917] -->
<h3><a name="type" id="type">type</a></h3>
<div class="level3">
<p>
The <strong>type</strong>= attribute is obsolete and cannot be used. It was used to provide type information on pins. The replacement attribute for this is <a href="#pintype" title="geda:master_attributes_list ↵" class="wikilink1">pintype</a>.
</p>
</div>
<!-- SECTION [13918-14090] -->
<h3><a name="email" id="email">email</a></h3>
<div class="level3">
<p>
The information in this attribute has been merged with <a href="#author" title="geda:master_attributes_list ↵" class="wikilink1">author</a>.
</p>
</div>
<!-- SECTION [14091-14175] -->
<h2><a name="document_revision_history" id="document_revision_history">Document Revision History</a></h2>
<div class="level2">
<table class="inline">
<tr>
<td>July 14th, 2002</td><td>Created attributes.tex from attributes.txt.</td>
</tr>
<tr>
<td>July 14th, 2002</td><td>Updated doc to be in sync with post-20020527.</td>
</tr>
<tr>
<td>August 25th, 2002</td><td>Added obsolete type= attribute.</td>
</tr>
<tr>
<td>September 14, 2002</td><td>Added description= attribute. Minor xes</td>
</tr>
<tr>
<td>October 7, 2002</td><td>Added doc= attribute; Egil Kvaleberg.</td>
</tr>
<tr>
<td>February 11, 2003</td><td>Added reference to footprint conventions.</td>
</tr>
<tr>
<td>February 23, 2003</td><td>Added author=, email=, and comment= attributes.</td>
</tr>
<tr>
<td>July 6th, 2004</td><td>Added symversion= attributes.</td>
</tr>
</table>
<br />
</div>
<!-- SECTION [14176-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_mcalc_readme.html
Index: geda_mcalc_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:mcalc_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:mcalc_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:mcalc_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:mcalc_readme?do=export_raw" />
<meta name="date" content="2006-05-07T17:46:17-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="mcalc_readme" id="mcalc_readme">mcalc README</a></h1>
<div class="level1">
<pre class="code">$Id: geda_mcalc_readme.html,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
WHAT IS IT?
------------
mstrip is a JavaScript based microstrip analysis/synthesis calculator.
It is designed to be easy to use and fairly accurate. The accuracy is
generally within a percent or so for the characteristic impedance which
greatly exceeds the simplified formulations found in most text books.
HOW DO I INSTALL IT?
--------------------
To install this package, simply copy all the files in the archive to the
installation directory.
To use this pacakge, just point your JavaScript capable web broswer at
the file 'index.html'.
CAN I COPY IT?
--------------
Please refer to the file 'copying.html' for copyright information.
IS THERE A HISTORY FILE?
------------------------
Please refer to the file 'verinfo.html' for version history.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_na_howto.html
Index: geda_na_howto.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:na_howto</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:na_howto?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:na_howto?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:na_howto?do=export_raw" />
<meta name="date" content="2006-04-24T05:13:36-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#net_attribute_mini-howto" class="toc">net= attribute mini-HOWTO</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#what_is_the_net_attribute_used_for" class="toc">What is the net= attribute used for?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_is_the_format_of_the_net_attribute" class="toc">What is the format of the net= attribute?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_you_actually_use_the_net_attribute" class="toc">How do you actually use the net= attribute?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#caveats_bugs" class="toc">Caveats / Bugs</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#example" class="toc">Example</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#final_notes" class="toc">Final notes</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="net_attribute_mini-howto" id="net_attribute_mini-howto">net= attribute mini-HOWTO</a></h1>
<div class="level1">
<p>
by: Ales Hvezda
</p>
<p>
This document is released under <a href="http://www.gnu.org/copyleft/fdl.html" class="urlextern" title="http://www.gnu.org/copyleft/fdl.html" rel="nofollow">GFDL</a>
</p>
<p>
October 2nd, 2003
</p>
<p>
The information in this document is current as of 19991011.
</p>
</div>
<!-- SECTION [1-216] -->
<h2><a name="what_is_the_net_attribute_used_for" id="what_is_the_net_attribute_used_for">What is the net= attribute used for?</a></h2>
<div class="level2">
<p>
The <strong><code>net=</code></strong> attribute is used to specify power, ground, and/or arbitrary nets in the gEDA system.<br/>
The <strong><code>net=</code></strong> attribute is used instead some of the other systems of specifying power/ground (such as having power/ground pins on symbols or power boxes). Some devices have lots of power/ground pins and having all of these pins on the symbol would increase its size and make it unmanageable. The <strong><code>net=</code></strong> attribute is the power/ground specification of choice in the gEDA system because of its simplicity and versatility. Now having said all this, you can have power/ground pins on a symbol, but gnetlist will probably not recognize these nets connected to these pins as separate power/ground nets. Please keep this in mind as you draw symbols.
</p>
</div>
<!-- SECTION [217-1022] -->
<h2><a name="what_is_the_format_of_the_net_attribute" id="what_is_the_format_of_the_net_attribute">What is the format of the net= attribute?</a></h2>
<div class="level2">
<p>
Attributes in gEDA are simple text items which are in the form <code>name=value</code>. All proper attributes follow this form. Attribute names are always lower case, but the value can be upper or lower case. gnetlist and friends are case sensitive. Typically net/signal names by default are upper case.<br/>
Attribute can be attached to an object or in certain cases (like the <strong><code>net=</code></strong> attribute) can be free oating (not attached to anything). The free floating attributes are also called toplevel attributes.<br/>
The <strong><code>net=</code></strong> attribute is a text item which takes on the following form:
</p>
<pre class="code">net=signalname:pinname,pinname,pinname,...</pre>
<p>
where:
</p>
<table class="inline">
<tr>
<td> <strong><code>net=</code></strong> </td><td> The attribute name (always the same, lowercase) </td>
</tr>
<tr>
<td> signalname </td><td> The signal or net being defines (like +5V, GND, etc...) </td>
</tr>
<tr>
<td> pinname </td><td> The pin name (or number) which is assigned to this signal/net (or pin names/numbers) </td>
</tr>
</table>
<br />
<p>
The signalname cannot contain the “:” character (since it is a delimiter). The pinname is the pin name (A1, P2, D1, etc...) or pin number (1, 2, 5, 13, etc...). The pinname cannot contain the “,” character (since it is also a delimiter). pinnames are typically the same sort of numbers/names like the <code>pin#=#</code> attribute (if you are familiar with that attribute).<br/>
You can only have ONE signalname per <strong><code>net=</code></strong> attribute, but you can have as many pinnames/numbers as you want.
</p>
</div>
<!-- SECTION [1023-2446] -->
<h2><a name="how_do_you_actually_use_the_net_attribute" id="how_do_you_actually_use_the_net_attribute">How do you actually use the net= attribute?</a></h2>
<div class="level2">
<p>
You can place the <strong><code>net=</code></strong> attribute in several places. Here’s the list so far:
</p>
<ul>
<li class="level1"><div class="li"> Inside a symbol either as an attached attribute or an unattached attribute (toplevel attribute). Example which creates power/gnd nets: <strong><code>net=GND:7</code></strong> or <strong><code>net=+5V:14</code></strong></div>
</li>
<li class="level1"><div class="li"> Outside a symbol (which is instantiated on a schematic) attached as an attribute to override an existing <strong><code>net=</code></strong> created net/signal. Suppose a symbol has a <strong><code>net=GND:7</code></strong> inside it already; attaching this to the symbol: <strong><code>net=AGND:7</code></strong> overrides the GND net (on pin 7) calling it AGND and connects/associates it to pin 7.</div>
</li>
<li class="level1"><div class="li"> Outside or inside a symbol to connect a net to a visible pin automatically. This is still untested and still might have some undesirable (negative) side effects. Use with caution.</div>
</li>
<li class="level1"><div class="li"> Attached to one of those special power/gnd symbol (like vcc/gnd/vdd) and you can change what that symbol represents. You could change the ground symbol to create a net called DIGITAL GND without editing the symbol (<strong><code>net=DIGITAL_GND:1</code></strong>).<br/>
In the current symbol (19991011) library there are symbols named <strong>vdd-1.sym</strong>, <strong>vcc-1.sym</strong>, <strong>vee-1.sym</strong>, etc... which do not have a <strong><code>net=</code></strong> attribute inside, so you must attach the <strong><code>net=</code></strong> attribute yourself (in the schematic).<br/>
There also symbols named 5V-minus-1.sym, 12V-plus-1.sym, 9V-plus-1.sym, etc... which have the appropriate <strong><code>net=</code></strong> attribute in them already (can be overridden though). You can use these symbol as examples of how to use the <strong><code>net=</code></strong> attribute.<br/>
</div>
</li>
</ul>
<p>
You can have as many <strong><code>net=</code></strong> attributes as you want. Just remember that <strong><code>net=</code></strong> attributes attached to the outside of a symbol override any equivalent internal (inside the symbol) <strong><code>net=</code></strong> attributes. If you run into a case where this doesn’t work, please let <strong>ahvezdaATgeda.seul.org</strong>. In fact, send any bug reports to that individual.
</p>
</div>
<!-- SECTION [2447-4387] -->
<h2><a name="caveats_bugs" id="caveats_bugs">Caveats / Bugs</a></h2>
<div class="level2">
<p>
The <strong><code>net=</code></strong> attribute/mechanism is fairly new, so there are bound to be bugs (many bugs). Here are some of the identified issues:
</p>
<ul>
<li class="level1"><div class="li"> As of 19991011 almost all of the symbols in the standard library do not have the <strong><code>net=</code></strong> attribute or any other power/ground specifiers. Hopefully this will be updated sometime (any volunteers?).</div>
</li>
<li class="level1"><div class="li"> Attach a special power symbol (vcc/gnd) to a already named net will alias (rename) that net to the signalname specified in the <strong><code>net=</code></strong> attribute (in/attached to the vcc/gnd symbol). You can override this (so the reverse is true) by playing with the “net-naming-priority”. Be careful with this. There might be other “aliasing” issues which have not been identified yet.</div>
</li>
<li class="level1"><div class="li"> Creating a <strong><code>net=</code></strong> attribute which associates a signal name with a pin which is already visible on the symbol, is probably a bad idea. This does work, but all the ramifications have not been explored yet.</div>
</li>
<li class="level1"><div class="li"> It is probably a bad idea to have the same <strong><code>net=</code></strong> attribute attached several times. Ales has not formalized what happens in this case. Just remember that the <strong><code>net=</code></strong> attribute on the outside of a symbol should override the internal one.</div>
</li>
</ul>
</div>
<!-- SECTION [4388-5599] -->
<h2><a name="example" id="example">Example</a></h2>
<div class="level2">
<p>
Here’s a schematic which uses standard symbols (note: the 7400 does not have the <strong><code>net=</code></strong> attribute inside yet). This schematic consists of a 7400 with the <strong><code>net=</code></strong> attributes attached for power and ground, One of the input pins grounded using a gnd symbol and the other at a logic one using the vcc symbol (with an attached <strong><code>net=</code></strong> attribute). One of the input net is named, but as you will see, the netname is replaced by the <strong><code>net=</code></strong> signal name (see above for more info on this). The output is pulled up with a pull up resistor which has power specified using the +5V symbol.<br/>
</p>
<table class="inline">
<tr>
<td> <a href="_detail/geda_net.html" class="media" title="geda:net.jpg"><img src="_media/geda_net.jpg" class="media" title="net.jpg" alt="net.jpg" /></a> </td>
</tr>
</table>
<br />
<pre class="code">v 19991011
C 38700 58100 1 0 0 7400-1.sym
{
T 39000 59000 5 10 1 1 0
uref=U100
T 38900 59500 5 10 1 1 0
net=GND:7
T 38900 59300 5 10 1 1 0
net=+5V:14
}
N 38700 58800 37400 58800 4
{
T 37600 58900 5 10 1 1 0
netname=NETLABEL
}
N 37400 58800 37400 59200 4
N 38700 58400 37400 58400 4
N 37400 58000 37400 58400 4
C 37300 57700 1 0 0 gnd-1.sym
C 37200 59200 1 0 0 vcc-1.sym
{
T 36800 59200 5 10 1 1 0
net=+5V:1
}
N 40000 58600 41600 58600 4
{
T 41200 58700 5 10 1 1 0
netname=OUTPUT
}
C 40700 58800 1 90 0 resistor-1.sym
{
T 40800 59200 5 10 1 1 0
uref=R1
}
N 40600 58800 40600 58600 4
N 40600 59900 40600 59700 4
C 40400 59900 1 0 0 5V-plus-1.sym</pre>
<p>
<strong>gnetlist</strong> (using the geda netlist format) run using this sample schematic outputs this:
</p>
<pre class="code">START header
gEDA's netlist format
Created specifically for testing of gnetlist
END header
START components
R1 device=RESISTOR
U100 device=7400
END components
START renamed-nets
NETLABEL -> +5V
END renamed-nets
START nets
+5V : R1 2, U100 14, U100 1
GND : U100 7, U100 2
OUTPUT : R1 1, U100 3
END nets</pre>
<p>
Notice how NETLABEL was renamed (aliased to the +5V net).
</p>
</div>
<!-- SECTION [5600-7377] -->
<h2><a name="final_notes" id="final_notes">Final notes</a></h2>
<div class="level2">
<p>
Send all bugs to <strong>ahvezdaATgeda.seul.org</strong> or <strong>geda-devATgeda.seul.org</strong> (mailing list, please subscribe first). [I’m sure there’s more to say here]
</p>
</div>
<!-- SECTION [7378-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_ngnutmeg_mp.html
Index: geda_ngnutmeg_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:ngnutmeg_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:ngnutmeg_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:ngnutmeg_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:ngnutmeg_mp?do=export_raw" />
<meta name="date" content="2006-04-23T08:09:34-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="ngnutmeg_man-page" id="ngnutmeg_man-page">ngnutmeg man-page</a></h1>
<div class="level1">
<pre class="code">NUTMEG(1) NUTMEG(1)
NAME
nutmeg - spice post-processor
SYNOPSIS
nutmeg [ - ] [ -n ] [ -t term ] [ datafile ... ]
DESCRIPTION
Nutmeg is a post processor for SPICE - it takes the raw output file
created by spice -r and plots the data on a graphics terminal or a
workstation display. Note that the raw output file is different from
the data that SPICE writes to the standard output.
Arguments are:
- Don�t try to load the default data file ("rawspice") if no other
files are given.
-n (or --no-spiceinit)
Don�t try to source the file ".spiceinit" upon startup. Normally
nutmeg tries to find the file in the current directory, and if
it is not found then in the user�s home directory.
-t term (or --term=term)
The program is being run on a terminal with mfb name term.
-h (or --help)
Display a verbose help on the arguments available to the pro-
gram.
-v (or --version)
Display a version number and copyright information of the pro-
gram.
Further arguments are taken to be data files in binary or ascii format
(see sconvert(1)) which are loaded into nutmeg. If the file is in
binary format, it may be only partially completed (useful for examining
SPICE ouput before the simulation is finished). One file may contain
any number of data sets from different analyses.
Nutmeg data is in the form of vectors: time, voltage, etc. Each vector
has a type, and vectors can be operated on and combined algebraicly in
ways consistent with their types. Vectors are normally created when a
data file is read in (see the load command below), and when the initial
datafile is loaded. They can also be created with the let command.
An expression is an algebraic formula involving vectors and scalars (a
scalar is a vector of length 1), and the following operations:
+, -, *, %, /, ^, and ,.
% is the modulo operator, and the comma operator has two meanings: if
it is present in the argument list of a user-definable function, it
serves to seperate the arguments. Otherwise, the term x , y is synony-
mous with x + j(y).
Also available are the logical operations & (and), | (or), ! (not), and
the relational operations <, >, >=, <=, =, and <> (not equal). If used
in an algebraic expression they work like they would in C, producing
values of 0 or 1. The relational operators have the following syn-
onyms: "gt" is >, "lt" is <, "ge" is >=, "le" is <=, "ne" is <>, "eq"
is =, "and" is &, "or" is |, and "not" is !. These are useful when <
and > might be confused with IO redirection (which is almost always).
The following functions are available:
mag(vector) - The magnitude of vector.
ph(vector) - The phase of vector.
j(vector) - i (sqrt(-1)) times vector.
real(vector) - The real component of vector.
imag(vector) - The imaginary part of vector.
db(vector) - 20 * log10(mag(vector)).
log(vector) - The logarithm (base 10) of the vector.
ln(vector) - The natural logarithm (base e) of vector.
exp(vector) - e to the vector power.
abs(vector) - The absolute value of vector.
sqrt(vector) - The square root of vector.
sin(vector) - The sin of vector.
cos(vector) - The cosine of vector.
tan(vector) - The tangent of vector.
atan(vector) - The inverse tangent of vector.
norm(vector) - The vector normalized to 1 (i.e, the largest mag-
nitude of any component will be 1).
rnd(vector) - A vector with each component a random integer
between 0 and the absolute value of the vectors�s corresponding
component.
mean(vector) - The result is a scalar (a length 1 vector) that
is the mean of the elements of vector.
vector(number) - The result is a vector of length number, with
elements 0, 1, ... number - 1. If number is a vector then just
the first element is taken, and if it isn�t an integer then the
floor of the magnitude is used.
length(vector) - The length of vector.
interpolate(plot.vector) - The result of interpolating the named
vector onto the scale of the current plot. This function uses
the variable polydegree to determine the degree of interpola-
tion.
A vector may be either the name of a vector already defined, a float-
ing- point number (a scalar), or a list like [elt1 elt2 ... eltn],
which is a vector of length n. A number may be written in any format
acceptable to SPICE, such as 14.6MEG or -1.231E-4. Note that you can
either use scientific notation or one of the abbreviations like MEG or
G, but not both. As with SPICE, a number may have trailing alphabetic
characters after it.
The notation expr [lower upper], where lower and upper are numbers,
denotes the range of elements from expr between lower and upper. The
notation expr [num] denotes the num�th element of expr. If upper is
lower than lower, the order of the elements in the vector is reversed.
In all other cases, [ and ] serve to surround literal vectors as
described above. (You may have to use a lot of parentheses to make
sure that you get what you want. For instance, you have to type print
(foo) ([1 2]) to print the two vectors. Otherwise it will be inter-
preted as a function call or a vector with an index.) Note that the
expression foo[10 20][5] will not yield the 15th element of foo, but
rather the 5th. In general only the last index suffix on an expression
will take effect.
To reference vectors in a plot that is not the current plot (see the
setplot command, below), the notation plotname.vecname can be used.
Either a plotname or a vector name may be the wildcard all. If the
plotname is all, matching vectors from all plots are specified, and if
the vector name is all, all vectors in the specified plots are refer-
enced. Note that you may not use binary operations on expressions
involving wildcards - it is not obvious what all + all should denote,
for instance.
Thus some (contrived) examples of expressions are:
cos(TIME) + db(v(3))
sin(cos(log([1 2 3 4 5 6 7 8 9 10])))
TIME * rnd(v(9)) - 15 * cos(vin#branch) ^ [7.9e5 8]
not ((ac3.FREQ[32] & tran1.TIME[10]) gt 3)
Nutmeg commands are as follows:
plot exprs [ylimit ylo yhi] [xlimit xlo xhi] [xindices xilo xihi]
[xcompress comp] [xdelta xdel] [ydelta ydel] [xlog] [ylog] [vs xname]
[xlabel word] [ylabel word] [title word] [samep]
Plot the given exprs on the screen (if you are on a graphics
terminal). The xlimit and ylimit arguments determine the high
and low x- and y-limits of the axes, respectively. The xindices
arguments determine what range of points are to be plotted -
everything between the xilo�th point and the xihi�th point is
plotted. The xcompress argument specifies that only one out of
every comp points should be plotted. If an xdelta or a ydelta
parameter is present, it specifies the spacing between grid
lines on the X- and Y-axis. These parameter names may be abbre-
viated to xl, yl, xind, xcomp, xdel, and ydel respectively. The
xname argument is an expression to use as the scale on the x-
axis. If xlog or ylog are present, the X or Y scale respec-
tively will be logarithmic. The xlabel and ylabel arguments
cause the specified labels to be used for the X and Y axes,
respectively. If samep is given, the values of the other param-
eters (other than xname) from the previous plot, hardcopy, or
asciiplot command will be used unless re-defined on the command
line. Finally, the title argument will be used in the place of
the plot name at the bottom of the graph.
hardcopy file plotargs
Just like plot, except creates a file called file containing the
plot. The file is an image in plot(5) format, and can be
printed by either the plot(1) program or lpr with the -g flag.
asciiplot plotargs
Produce a line printer plot of the vectors. The plot is sent to
the standard output, so you can put it into a file with asci-
iplot args ... > file. The set options width, height, and
nobreak determine the width and height of the plot, and whether
there are page breaks, respectively. Note that you will have
problems if you try to asciiplot something with an X-scale that
isn�t monotonic (i.e, something like sin(TIME) ), because asci-
iplot uses a simple-minded sort of linear interpolation.
define function(arg1, arg2, ...) expression
Define the user-definable function with the name function and
arguments arg1, arg2, ... to be expression, which may involve
the arguments. When the function is later used, the arguments it
is given are substituted for the formal arguments when it is
parsed. If expression is not present, any definition for func-
tion is printed, and if there are no arguments to define then
all currently active definitions are printed. Note that you may
have different functions defined with the same name but differ-
ent arities. Some useful definitions are:
define max(x,y) (x > y) * x + (x <= y) * y
define min(x,y) (x < y) * x + (x >= y) * y
undefine function ...
Definitions for the named user-defined functions are deleted.
let name = expr
Creates a new vector called name with the value specified by
expr, an expression as described above. If expr is [] (a zero-
length vector) then the vector becomes undefined. If there are
no arguments, let is the same as display.
print [col] [line] expr ...
Prints the vector described by the expression expr. If the col
argument is present, print the vectors named side by side. If
line is given, the vectors are printed horizontally. col is the
default, unless all the vectors named have a length of one, in
which case line is the default. The options width, length, and
nobreak are effective for this command (see asciiplot). If the
expression is all, all of the vectors available are printed.
Thus print col all > file will print everything in the file in
SPICE2 format. The scale vector (time, frequency) will always
be in the first column unless the variable noprintscale is true.
load [filename] ...
Loads the raw data in either binary or ascii format from the
files named. The default filename is rawspice, or the argument
to the -r flag if there was one.
source filename
Reads commands from the file filename. Lines beginning with the
character * are considered comments and ignored.
help [all] [command ...]
Prints help. If the argument all is given, a short description
of everything you could possibly type is printed. If commands
are given, descriptions of those commands are printed. Other-
wise help for only a few major commands is printed.
display [varname ...]
Prints a summary of currently defined vectors, or of the names
specified. The vectors are sorted by name unless the variable
nosort is set. The information given is the name of the vector,
the length, the type of the vector, and whether it is real or
complex data. Additionally, one vector will be labeled [scale].
When a command such as plot is given without a vs argument, this
scale is used for the X-axis. It is always the first vector in a
rawfile, or the first vector defined in a new plot. If you unde-
fine the scale (i.e, let TIME = []), a random remaining vector
will become the scale.
setplot [plotname]
Set the current plot to the plot with the given name, or if no
name is given, prompt the user with a menu. (Note that the
plots are named as they are loaded, with names like tran1 or
op2. These names are shown by the setplot and display commands
and are used by diff, below.) If the "New plot" item is
selected, the current plot will become one with no vectors
defined. Note that here the word "plot" refers to a group of
vectors that are the result of one SPICE run. When more than
one file is loaded in, or more than one plot is present in one
file, nutmeg keeps them seperate and only shows you the vectors
in the current plot.
settype type vector ...
Change the type of the named vectors to type. Type names can be
found in the manual page for sconvert.
diff plot1 plot2 [vec ...]
Compare all the vectors in the specified plots, or only the
named vectors if any are given. There are different vectors in
the two plots, or any values in the vectors differ significantly
the difference is reported. The variables abstol, reltol, and
vntol are used to determine what "significantly" means (see the
SPICE3 User�s Manual).
quit Quit nutmeg.
bug Send a bug report. (If you have defined BUGADDR, the mail will
go there.)
write [file] [exprs]
Writes out the expr�s to file. First vectors are grouped
together by plots, and written out as such. (I.e, if the
expression list contained three vectors from one plot and two
from another, then two plots will be written, one with three
vectors and one with two.) Additionally, if the scale for a
vector isn�t present, it is automatically written out as well.
The default format is ascii, but this can be changed with the
set filetype command. The default filename is rawspice, or the
argument to the -r flag on the command line, if there was one,
and the default expression list is all.
shell [args ...]
Fork a shell, or execute the arguments as a command to the
shell.
alias [word] [text ...]
Causes word to be aliased to text. History substitutions may be
used, as in C-shell aliases.
unalias [word ...]
Removes any aliases present for the words.
history [number]
Print out the history, or the last number commands typed at the
keyboard. Note: in version 3a7 and earlier, all commands
(including ones read from files) were saved.
set [word] [word = value] ...
Set the value of word to be value, if it is present. You can
set any word to be any value, numeric or string. If no value is
given then the value is the boolean �true�. The value of word
may be inserted into a command by writing $word. If a variable
is set to a list of values that are enclosed in parentheses
(which must be seperated from their values by white space), the
value of the variable is the list. The variables meaningful to
nutmeg (of which there are too many) are:
abstol
The absolute tolerance used by the diff command.
appendwrite
Append to the file when a write command is issued, if
one already exists.
colorN
These variables determine the colors used, if X is
being run on a color display. N may be between 0 and
15. Color 0 is the background, color 1 is the grid and
text color, and colors 2 through 15 are used in order
for vectors plotted. The value of the color variables
should be names of colors, which may be found in the
file /usr/lib/rgb.txt.
combplot
Plot vectors by drawing a vertical line from each point
to the X-axis, as opposed to joining the points. Note
that this option is subsumed in the plottype option,
below.
cpdebug
Print cshpar debugging information. (Must be complied
with the -DCPDEBUG flag.)
debug
If set then a lot of debugging information is printed.
(Must be compiled with the -DFTEDEBUG flag.)
device
The name (/dev/tty??) of the graphics device. If this
variable isn�t set then the user�s terminal is used. To
do plotting on another monitor you will probably have
to set both the device and term variables. (If device
is set to the name of a file, nutmeg will dump the
graphics control codes into this file -- this is useful
for saving plots.)
echo
Print out each command before it is executed.
filetype
This can be either ascii or binary, and determines what
the format of rawfiles will be. The default is ascii.
fourgridsize
How many points to use for interpolating into when
doing fourier analysis.
gridsize
If this variable is set to an integer, this number will
be used as the number of equally spaced points to use
for the Y-axis when plotting. Otherwise the current
scale will be used (which may not have equally spaced
points). If the current scale isn�t strictly mono-
tonic, then this option will have no effect.
hcopydev
If this is set, when the hardcopy command is run the
resulting file is automatically printed on the printer
named hcopydev with the command lpr -Phcopydev -g file.
hcopydevtype
This variable specifies the type of the printer output
to use in the hardcopy command. If hcopydevtype is not
set, plot (5) format is assumed. The standard distri-
bution currently recognizes postscript as an alterna-
tive output format. When used in conjunction with
hcopydev, hcopydevtype should specify a format sup-
ported by the printer.
height
The length of the page for asciiplot and print col.
history
The number of events to save in the history list.
nfreqs
The number of frequencies to compute in the fourier
command. (Defaults to 10.)
nobreak
Don�t have asciiplot and print col break between pages.
noasciiplotvalue
Don�t print the first vector plotted to the left when
doing an asciiplot.
noclobber
Don�t overwrite existing files when doing IO redirec-
tion.
noglob
Donââ?¬â?¢t expand the global characters ââ?¬Ë?*ââ?¬â?¢, ââ?¬Ë??ââ?¬â?¢, ââ?¬Ë?[ââ?¬â?¢, and
ââ?¬Ë?]ââ?¬â?¢. This is the default.
nogrid
Don�t plot a grid when graphing curves (but do label
the axes).
nomoremode
If nomoremode is not set, whenever a large amount of
data is being printed to the screen (e.g, the print or
asciiplot commands), the output will be stopped every
screenful and will continue when a carriage return is
typed. If nomoremode is set then data will scroll off
the screen without hesitation.
nonomatch
If noglob is unset and a global expression cannot be
matched, use the global characters literally instead of
complaining.
nosort
Don�t have display sort the variable names.
noprintscale
Don�t print the scale in the leftmost column when a
print col command is given.
numdgt
The number of digits to print when printing tables of
data (fourier, print col). The default precision is 6
digits. On the VAX, approximately 16 decimal digits
are available using double precision, so numdgt should
not be more than 16. If the number is negative, one
fewer digit is printed to ensure constant widths in
tables.
plottype
This should be one of normal, comb, or point:chars.
normal, the default, causes points to be plotted as
parts of connected lines. comb causes a comb plot to
be done (see the description of the combplot variable
above). point causes each point to be plotted seper-
ately - the chars are a list of characters that will be
used for each vector plotted. If they are omitted then
a default set is used.
polydegree
The degree of the polynomial that the plot command
should fit to the data. If polydegree is N, then nutmeg
will fit a degree N polynomial to every set of N points
and draw 10 intermediate points in between each end-
point. If the points aren�t monotonic, then it will try
rotating the curve and reducing the degree until a fit
is achieved.
polysteps
The number of points to interpolate between every pair
of points available when doing curve fitting. The
default is 10. (This should really be done automati-
cally.)
program
The name of the current program (argv[0]).
prompt
The prompt, with the character ââ?¬Ë?!ââ?¬â?¢ replaced by the cur-
rent event number.
rawfile
The default name for rawfiles created.
reltol
The relative tolerance used by the diff command.
rhost
The machine to use for remote SPICE-3 runs, instead of
the default one. (See the description of the rspice
command, below.)
rprogram
The name of the remote program to use in the rspice
command.
slowplot
Stop between each graph plotted and wait for the user
to type return before continuing.
sourcepath
A list of the directories to search when a source com-
mand is given. The default is the current directory
and the standard spice library (/usr/local/lib/spice,
or whatever LIBPATH is #defined to in the source.
spicepath
The program to use for the aspice command. The default
is /cad/bin/spice.
term
The mfb name of the current terminal.
units
If this is degrees, then all the trig functions will
use degrees instead of radians.
unixcom
If a command isn�t defined, try to execute it as a UNIX
command. Setting this option has the effect of giving
a rehash command, below. This is useful for people who
want to use nutmeg as a login shell.
verbose
Be verbose. This is midway between echo and debug /
cpdebug.
vntol
The absolute voltage tolerance used by the diff com-
mand.
width
The width of the page for asciiplot and print col.
xbrushheight
The height of the brush to use if X is being run.
xbrushwidth
The width of the brush to use if X is being run.
xfont
The name of the X font to use when plotting data and
entering labels. The plot may not look entirely great
if this is a variable-width font.
unset [word] ...
Unset the variables word.
shift [varname] [number]
If varname is the name of a list variable, it is shifted to the
left by number elements. (I.e, the number leftmost elements are
removed.) The default varname is argv, and the default number
is 1.
rusage [resource ...]
Print resource usage statistics. If any resources are given,
just print the usage of that resource. Currently valid
resources are:
elapsed
The amount of time elapsed since the last rusage elaped
call.
faults
Number of page faults and context switches (BSD only).
space
Data space used.
time
CPU time used so far.
everything
All of the above.
cd [directory] Change the current working directory to directory, or
to the user�s home directory if none is given.
aspice [output-file]
Start a SPICE-3 run, and when it is finished load the
data. The raw data is kept in a temporary file. If out-
put-file is specified then the diagnostic output is
directed into that file, otherwise it is thrown away.
jobs Report on the asynchronous SPICE-3 jobs currently run-
ning. Nutmeg checks to see if the jobs are finished
every time you execute a command. If it is done then
the data is loaded and becomes available.
rspice [input file]
Runs a SPICE-3 remotely taking the input file as a
SPICE-3 input deck, or the current circuit if no argu-
ment is given. Nutmeg waits for the job to complete,
and passes output from the remote job to the user�s
standard output. When the job is finished the data is
loaded in as with aspice. If the variable rhost is set,
nutmeg will connect to this host instead of the default
remote SPICE-3 server machine. Note that this command
will only work if your system administrator is running
a SPICE-3 daemon on the remote host. If the variable
rprogram is set, then rspice will use this as the path-
name to the program to run.
echo [stuff...] Echos the arguments.
fourier fundamental_frequency [value ...]
Does a fourier analysis of each of the given values,
using the first 10 multiples of the fundamental fre-
quency (or the first nfreqs, if that variable is set -
see below). The output is like that of the .four card.
The values may be any valid expression. The values are
interpolated onto a fixed-space grid with the number of
points given by the fourgridsize variable, or 200 if it
is not set. The interpolation will be of degree poly-
degree if that variable is set, or 1. If polydegree is
0, then no interpolation will be done. This is likely
to give erroneous results if the time scale is not
monotonic, though.
version [version id]
Print out the version of nutmeg that is running. If
there are arguments, it checks to make sure that the
arguments match the current version of SPICE. (This is
mainly used as a Command: line in rawfiles.)
rehash Recalculate the internal hash tables used when looking
up UNIX commands, and make all UNIX commands in the
user�s PATH available for command completion. This is
useless unless you have set unixcom first (see above).
The following control structures are available:
while condition
statement
...
end
While condition, an arbitrary algebraic expression, is true, execute
the statements.
repeat [number]
statement
...
end
Execute the statements number times, or forever if no argument is
given.
dowhile condition
statement
...
end
The same as while, except that the condition is tested after the
statements are executed.
foreach var value ...
statement
...
end
The statements are executed once for each of the values, each time with
the variable var set to the current one. (var can be accessed by the
$var notation - see below).
if condition
statement
...
else
statement
...
end
If the condition is non-zero then the first set of statements are exe-
cuted, otherwise the second set. The else and the second set of state-
ments may be omitted.
label word
If a statement of the form goto word is encountered, control is trans-
fered to this point, otherwise this is a no-op.
goto word
If a statement of the form label word is present in the block or an
enclosing block, control is transfered there. Note that if the label
is at the top level, it must be before the goto statement (i.e, a for-
ward goto may occur only within a block).
continue
If there is a while, dowhile, or foreach block enclosing this state-
ment, control passes to the test, or in the case of foreach, the next
value is taken. Otherwise an error results.
break
If there is a while, dowhile, or foreach block enclosing this state-
ment, control passes out of the block. Otherwise an error results.
Of course, control structures may be nested. When a block is entered
and the input is the terminal, the prompt becomes a number of >�s
equalling the number of blocks the user has entered. The current con-
trol structures may be examined with the debugging command cdump.
If a word is typed as a command, and there is no built-in command with
that name, the directories in the sourcepath list are searched in order
for the file. If it is found, it is read in as a command file (as if
it were sourced). Before it is read, however, the variables argc and
argv are set to the number of words following the filename on the com-
mand line, and a list of those words respectively. After the file is
finished, these variables are unset. Note that if a command file calls
another, it must save its argv and argc since they will get altered.
Also, command files may not be re-entrant since there are no local
variables. (Of course, the procedures may explicitly manipulate a
stack...) This way one can write scripts analogous to shell scripts
for nutmeg and . Note that for the script to work with , it must begin
with a blank line (or whatever you like, since it will be thrown away)
and then a line with .control on it. This is an unfortunate result of
the source command being used for both circuit input and command file
execution. Note also that this allows the user to merely type the name
of a circuit file as a command, and it will be automatically run.
There are various command scripts installed in
/usr/local/lib/spice/scripts (or whatever the path is on your machine),
and the default sourcepath includes this directory, so you can use
these command files (almost) like builtin commands.
Nutmeg will use either X or MFB, depending on whether it finds the
variable DISPLAY in the environment. If you are using X on a worksta-
tion, it should already be present, but if you want to display graphics
on a different machine than the one you are running nutmeg on, DISPLAY
should be of the form machine:0.
If X is being used, the cursor may be positioned at any point on the
screen when the window is up and characters typed at the keyboard will
be added to the window at that point. The window may then be sent to a
printer using the xpr(1) program.
There are a number of pre-defined constants in nutmeg. They are:
pi pi
e The base of natural logarithms
c The speed of light
i The square root of -1
kelvin Absolute 0 in Centigrade
echarge The charge on an electron
boltz Boltzman�s constant
planck Planck�s constant (h)
These are all in MKS units. If you have another variable with a name
that conflicts with one of these then it takes precedence.
Nutmeg occasionally checks to see if it is getting close to running out
of space, and warns the user if this is the case. (This is more likely
to be useful with the SPICE front end.)
C-shell type quoting with "" and ��, and backquote substitution may be
used. Within single quotes, no further substitution (like history sub-
stitution) is done, and within double quotes, the words are kept
together but further substitution is done. Any text between backquotes
is replaced by the result of executing the text as a command to the
shell.
Tenex-style (�set filec� in the 4.3 C-shell) command, filename, and
keyword completion is possible: If EOF (control-D) is typed after the
first character on the line, a list of the commands or possible argu-
ments is printed. (If it is alone on the line it will exit nutmeg.) If
escape is typed, then nutmeg will try to complete what the user has
already typed. To get a list of all commands, the user should type
<space> ^D.
The values of variables may be used in commands by writing $varname
where the value of the variable is to appear. The special variables $$
and $< refer to the process ID of the program and a line of input which
is read from the terminal when the variable is evaluated, respectively.
If a variable has a name of the form $&word, then word is considered a
vector (see above), and its value is taken to be the value of the vari-
able. If $foo is a valid variable, and is of type list, then the
expression $foo[low-high] represents a range of elements. Either the
upper index or the lower may be left out, and the reverse of a list may
be obtained with $foo[len-0]. Also, the notation $?foo evaluates to 1
if the variable foo is defined, 0 otherwise, and $#foo evaluates to the
number of elements in foo if it is a list, 1 if it is a number or
string, and 0 if it is a boolean variable.
History substitutions, similar to C-shell history substitutions, are
also available - see the C-shell manual page for all of the details.
The characters ~, {, and } have the same effects as they do in the C-
Shell, i.e., home directory and alternative expansion. It is possible
to use the wildcard characters *, ?, [, and ] also, but only if you
unset noglob first. This makes them rather useless for typing algebraic
expressions, so you should set noglob again after you are done with
wildcard expansion. Note that the pattern [^abc] will match all charac-
ters except a, b, and c.
IO redirection is available - the symbols >, >>, >&, >>&, and < have
the same effects as in the C-shell.
You may type multiple commands on one line, seperated by semicolons.
If you want to use a different mfbcap file than the default (usually
~cad/lib/mfbcap), you have to set the environment variable MFBCAP
before you start nutmeg. The -m option and the mfbcap variable no
longer work.
VMS NOTES
Nutmeg can be run under VAX/VMS. Some features like command, etc com-
pletion, expansion of *, ?, and [], backquote substitution, the shell
command, and so forth do not work. (In fact command completion only
works on 4.2 or 4.3 BSD.)
Nutmeg will look for start-up commands in the file spice.rc in the cur-
rent directory.
The standard suffix for rawspice files in VMS is ".raw".
You will have to respond to the -more- prompt during plot with a car-
riage return instead of any key as you can do on UNIX.
SEE ALSO
sconvert(1), spice(1), mfb(3), writedata(3)
AUTHOR
Wayne Christopher (faustus@xxxxxxxxxxxxxxxx)
BUGS
The label entry facilities are very primitive - after all, nutmeg isn�t
a graphics editor (yet). You must be careful to type very slowly when
entering labels -- nutmeg checks the X event queue once every second,
and can get very confused if characters arrive faster than that.
If you redefine colors after creating a plot window with X, and then
cause the window to be redrawn, it will not to the right thing.
When defining aliases like
alias pdb plot db( �!:1� - �!:2� )
you must be careful to quote the argument list substitutions in this
manner. If you quote the whole argument it might not work properly.
In a user-defined function, the arguments cannot be part of a name that
uses the plot.vec syntax. I.e,
define poke(duck) cos(tran1.duck)
won�t do the right thing.
If you type plot all all, or otherwise use a wildcard reference for one
plot twice in a command, bad things will happen.
The asciiplot command doesn�t deal with log scales or the delta key-
words.
There are probably some features that nutmeg doesn�t have yet.
CAVEATS
Often the names of terminals recognised by MFB are different from those
in /etc/termcap. Thus you may have to reset your terminal type with the
command
set term = termname
where termname is the name in the mfbcap file.
The hardcopy command is useless on VMS and other systems without the
plot command, unless the user has a program that understands plot(5)
format.
4th Berkeley Distribution 27 April 1987 NUTMEG(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_ngsconvert_mp.html
Index: geda_ngsconvert_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:ngsconvert_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:ngsconvert_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:ngsconvert_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:ngsconvert_mp?do=export_raw" />
<meta name="date" content="2006-04-23T08:10:23-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="ngsconvert_man-page" id="ngsconvert_man-page">ngsconvert man-page</a></h1>
<div class="level1">
<pre class="code">SCONVERT(1) SCONVERT(1)
NAME
sconvert - convert spice formats
SYNOPSIS
sconvert fromtype fromfile totype tofile
sconvert fromtype totype
sconvert
DESCRIPTION
Sconvert translates spice output files among three formats: the old
binary format, a new binary format, and a new ascii format. The for-
mats are specified by the fromtype and totype arguments: ââ?¬Ë?oââ?¬â?¢ for the
old format, ââ?¬Ë?bââ?¬â?¢ for the new binary format, and ââ?¬Ë?aââ?¬â?¢ for the new ascii
format. Fromtype specifies the format to be read, and totype specifies
the format to be written. If fromfile and tofile are given, then they
are used as the input and output, otherwise standard input and output
are used. (Note that this second option is only available on UNIX sys-
tems - on VMS and other systems you must supply the filenames.) If no
arguments are given, the parameters are prompted for.
Binary format is the preferred format for general use, as it is the
most economical in terms of space and speed of access, and ascii is
provided to make it easy to modify data files and transfer them between
machines with different floating-point formats. The old format is pro-
vided only for backward compatibility. The three formats are as fol-
lows:
Old:
What Size in Bytes
title 80
date 8
time 8
numoutputs 2
the integer 4 2
variable names --
char[numoutputs][8] numoutputs * 8
types of output numoutputs * 2
node index numoutputs * 2
plot title numoutputs * 24
the actual data numpoints * numoutputs * 8
Ascii:
Title: Title Card String
Date: Date
[ Plotname: Plot Name
Flags: complex or real
No. Variables: numoutputs
No. Points: numpoints
Command: nutmeg command
Variables: 0 varname1 typename1
1 varname2 typename2
etc...
Values:
0 n n n n ...
1 n n n n ...
And so forth...
] repeated one or more times
If one of the flags is complex, the points look like r,i where r and i
are floating point (in %e format). Otherwise they are in %e format.
Only one of real and complex should appear.
The lines are guaranteed to be less than 80 columns wide (unless the
plot title or variable names are very long), so this format is safe
to mail between systems like CMS.
Any number of Command: lines may appear between the No. Points:
and the Variables: lines, and whenever the plot is loaded into
nutmeg they will be executed.
Binary:
Title Card (a NULL terminated string)
Date, Time (a NULL terminated string)
[
Plot title (a NULL terminated string)
Number of variables (an int)
Number of data points (an int)
flags (a short)
variable header struct (repeated numoutputs times)
variable name (a NULL terminated string)
variable type (an int)
set of outputs (repeated numpoints times)
] repeated one or more times.
A set of outputs is a vector of doubles of length numoutputs, or
a vector of real-imaginary pairs of doubles if the data is complex.
SEE ALSO
nutmeg(1), spice(1), writedata(3)
AUTHOR
Wayne Christopher (faustus@xxxxxxxxxxxxxxxx)
BUGS
If variable names and the title and plotname strings have trailing
blanks in them they will be stripped off when the file is read, if it
is in ascii format.
If a plot title begins with "Title:" nutmeg will be fooled into think-
ing that this is an ascii format file. Sconvert always requires the
type to be specified, however.
4th Berkeley Distribution 20 March 1986 SCONVERT(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_ngspice_mp.html
Index: geda_ngspice_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:ngspice_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:ngspice_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:ngspice_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:ngspice_mp?do=export_raw" />
<meta name="date" content="2006-04-23T08:08:33-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="ngspice_man-page" id="ngspice_man-page">ngspice man-page</a></h1>
<div class="level1">
<pre class="code">SPICE(1) SPICE(1)
NAME
spice - circuit simulator
SYNOPSIS
spice [ -n ] [ -t term ] [ -r rawfile] [ -b ] [ -i ] [ input file ... ]
DESCRIPTION
This manual page describes the commands available for interactive use
of SPICE3. For details of circuit descriptions and the process of simu-
lating a circuit, see the SPICE3 User�s Manual. The commands available
are a superset of those available for nutmeg - only the additional com-
mands available in SPICE3 are described here. You should be familiar
with the manual page for nutmeg(1) before reading this manual page.
Arguments are:
-n (or --no-spiceinit)
Don�t try to source the file ".spiceinit" upon startup. Normally
SPICE3 tries to find the file in the current directory, and if
it is not found then in the user�s home directory.
-q (or --completion)
Enable command completion.
-t term (or --term=term)
The program is being run on a terminal with mfb name term.
-b (or --batch)
Run in batch mode. SPICE3 will read the standard input or the
specified input file and do the simulation. Note that if the
standard input is not a terminal, SPICE3 will default to batch
mode, unless the -i flag is given.
-s (or --server)
Run in server mode. This is like batch mode, except that a tem-
porary rawfile is used and then written to the standard output,
preceded by a line with a single "@", after the simulation is
done. This mode is used by the spice daemon.
-i (or --interactive)
Run in interactive mode. This is useful if the standard input is
not a terminal but interactive mode is desired. Command comple-
tion is not available unless the standard input is a terminal,
however.
-r rawfile (or --rawfile=file)
Use rawfile as the default file into which the results of the
simulation are saved.
-c circuitfile (or --circuitfile=circuitfile)
Use circuitfile as the default input deck.
-h (or --help)
Display a verbose help on the arguments available to the pro-
gram.
-v (or --version)
Display a version number and copyright information of the pro-
gram.
Further arguments are taken to be SPICE3 input decks, which are read
and saved. (If batch mode is requested then they are run immediately.)
SPICE3 will accept any SPICE2 input decks, and output ascii plots,
fourier analyses, and node printouts as specified in .plot, .four, and
.print cards. If a out parameter is given on a .width card, the effect
is the same as set width = .... Since SPICE3 ascii plots do not use
multiple ranges, however, if vectors together on a .plot card have dif-
ferent ranges they will not provide as much information as they would
in SPICE2. The output of SPICE3 is also much less verbose than SPICE2,
in that the only data printed is that requested by the above cards.
Vector names are the same as in nutmeg, with this addition: a name such
as @name[param], where name is either the name of a device instance or
model, denotes the value of the param parameter of the device or model.
See the SPICE3 User�s Manual for details of what parameters are avail-
able. The value is a vector of length 1. This function is also avail-
able with the show command, and is available with variables for conve-
nience for command scripts.
SPICE3 commands are as follows (these are only those commands not also
available in nutmeg - consult the nutmeg manual page for more com-
mands):
setcirc [circuit name]
Change the current circuit. The current circuit is the one that
is used for the simulation commands below. When a circuit is
loaded with the source command (see below) it becomes the cur-
rent circuit.
op [.op card args]
Do an operating point analysis.
tran [.tran card args]
Do a transient analysis.
ac [.ac card args]
Do an ac analysis.
dc [.dc card args]
Do a dc transfer curve analysis.
listing [logical] [physical] [deck] [expand]
Print a listing of the current circuit. If the logical argument
is given, the listing is with all continuation lines collapsed
into one line, and if the physical argument is given the lines
are printed out as they were found in the file. The default is
logical. A deck listing is just like the physical listing,
except without the line numbers it recreates the input file ver-
batim (except that it does not preserve case). If the word
expand is present, the circuit will be printed with all subcir-
cuits expanded.
edit [file]
Print the current SPICE3 deck into a file, call up the editor on
that file and allow the user to modify it, and then read it back
in, replacing the origonal deck. If a filename is given, then
edit that file and load it, making the circuit the current one.
resume Resume a simulation after a stop.
show Show a device parameter.
alter Alter a device parameter.
state Print the state of the circuit. (This command is largely unim-
plemented.)
save [all] [output ...] or .save [all] [output ...]
Save a set of outputs, discarding the rest. If a node has been
mentioned in a save command, it will appear in the working plot
after a run has completed, or in the rawfile if spice is run in
batch mode. If a node is traced or plotted (see below) it will
also be saved. For backward compatibility, if there are no save
commands given, all outputs are saved.
stop [ after n] [ when something cond something ] ...
Set a breakpoint. The argument after n means stop after n itera-
tion number n, and the argument when something cond something
means stop when the first something is in the given relation
with the second something, the possible relations being eq or =
(equal to), ne or <> (not equal to), gt or > (greater than), lt
or < (less than), ge or >= (greater than or equal to), and le or
<= (less than or equal to). IO redirection is disabled for the
stop command, since the relational operations conflict with it
(it doesn�t produce any output anyway). The somethings above
may be node names in the running circuit, or real values. If
more than one condition is given, e.g. stop after 4 when v(1) >
4 when v(2) < 2, the conjunction of the conditions is implied.
trace [ node ...]
Trace nodes. Every iteration the value of the node is printed to
the standard output.
iplot [ node ...]
Incrementally plot the values of the nodes while SPICE3 runs.
step [number]
Iterate number times, or once, and then stop.
status Display all of the traces and breakpoints currently in effect.
delete [debug number ...]
Delete the specified breakpoints and traces. The debug numbers
are those shown by the status command. (Unless you do status >
file, in which case the debug numbers aren�t printed.)
reset Throw out any intermediate data in the circuit (e.g, after a
breakpoint or after one or more analyses have been done
already), and re-parse the deck. The circuit can then be re-run.
(Note: this command used to be end in SPICE 3a5 and earlier ver-
sions -- end is now used for control structures.) The run com-
mand will take care of this automatically, so this command
should not be necessary...
run [rawfile]
Run the simulation as specified in the input file. If there were
any of the control cards .ac, .op, .tran, or .dc, they are exe-
cuted. The output is put in rawfile if it was given, in addition
to being available interactively.
source file
Read the SPICE3 input file file. Nutmeg and SPICE3 commands may
be included in the file, and must be enclosed between the lines
.control and .endc. These commands are executed immediately
after the circuit is loaded, so a control line of ac ... will
work the same as the corresponding .ac card. The first line in
any input file is considered a title line and not parsed but
kept as the name of the circuit. The exception to this rule is
the file .spiceinit. Thus, a SPICE3 command script must begin
with a blank line and then with a .control line. Also, any line
beginning with the characters *# is considered a control line.
This makes it possible to imbed commands in SPICE3 input files
that will be ignored by earlier versions of SPICE. Note: in
spice3a7 and before, the .control and .endc lines were not
needed, and any line beginning with the name of a front-end com-
mand would be executed.
linearize vec ...
Create a new plot with all of the vectors in the current plot,
or only those mentioned if arguments are given. The new vectors
will be interpolated onto a linear time scale, which is deter-
mined by the values of tstep, tstart, and tstop in the currently
active transient analysis. The currently loaded deck must
include a transient analysis (a tran command may be run interac-
tively before the last reset, alternately), and the current plot
must be from this transient analysis. This command is needed
because SPICE3 doesn�t output the results from a transient anal-
ysis in the same manner that SPICE2 did.
There are several set variables that SPICE3 uses but nutmeg does not.
They are:
editor
The editor to use for the edit command.
modelcard
The name of the model card (normally .model).
noaskquit
Do not check to make sure that there are no circuits
suspended and no plots unsaved. Normally SPICE3 will
warn the user when he tries to quit if this is the
case.
nobjthack
Assume that BJT�s have 4 nodes.
noparse
Don�t attempt to parse decks when they are read in
(useful for debugging). Of course, they cannot be run
if they are not parsed.
nosubckt
Don�t expand subcircuits.
renumber
Renumber input lines when a deck has .include�s.
subend
The card to end subcircuits (normally .ends).
subinvoke
The prefix to invoke subcircuits (normally x).
substart
The card to begin subcircuits (normally .subckt).
There are a number of rusage parameters available, in addition to the
ones available in nutmeg:
If there are subcircuits in the input file, SPICE3 expands instances of
them. A subcircuit is delimited by the cards .subckt and .ends, or
whatever the value of the variables substart and subend is, respec-
tively. An instance of a subcircuit is created by specifying a device
with type �x� - the device line is written
xname node1 node2 ... subcktname
where the nodes are the node names that replace the formal parameters
on the .subckt line. All nodes that are not formal parameters are
prepended with the name given to the instance and a �:�, as are the
names of the devices in the subcircuit. If there are several nested
subcircuits, node and device names look like subckt1:subckt2:...:name.
If the variable subinvoke is set, then it is used as the prefix that
specifies instances of subcircuits, instead of �x�.
VMS NOTES
The standard suffix for rawspice files in VMS is ".raw".
You may have to redefine the value EDITOR if you wish to use the edit
command, since the default for VMS is "vi".
SEE ALSO
nutmeg(1), sconvert(1), spice(1), mfb(3), writedata(3) SPICE3 User�s
Guide
AUTHORS
SPICE3: Tom Quarles (quarles@xxxxxxxxxxxxxxxx)
nutmeg / User interface: Wayne Christopher (faustus@xxxxxxxxxxxxxxxx)
BUGS
SPICE3 will recognise all the notations used in SPICE2 .plot cards, and
will translate vp(1) into ph(v(1)), and so forth. However, if there are
spaces in these names it won�t work. Hence v(1, 2) and (-.5, .5) aren�t
recognised.
BJT�s can have either 3 or 4 nodes, which makes it difficult for the
subcircuit expansion routines to decide what to rename. If the fourth
parameter has been declared as a model name, then it is assumed that
there are 3 nodes, otherwise it is considered a node. To disable this
kludge, you can set the variable "nobjthack", which will force BJT�s to
have 4 nodes (for the purposes of subcircuit expansion, at least).
The @name[param] notation might not work with trace, iplot, etc. yet.
The first line of a command file (except for the .spiceinit file)
should be a comment. Otherwise SPICE may create an empty circuit
structure.
CAVEATS
SPICE3 files specified on the command line are read in before the .spi-
ceinit file is read. Thus if you define aliases there that you call in
a SPICE3 source file mentioned on the command line, they won�t be
recognised.
4th Berkeley Distribution 20 March 1986 SPICE(1)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_olib_readme.html
Index: geda_olib_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:olib_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:olib_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:olib_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:olib_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:25:01-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="olib_orcad_tm_converter_readme" id="olib_orcad_tm_converter_readme">olib (OrCAD (TM) converter) README</a></h1>
<div class="level1">
<pre class="code">###############################################################
README and release notes for olib2geda - 1 settembre 2002
OrCAD (TM) lib ASCII dump to gEDA .sym converter
###############################################################
What it olib2geda?
It's a simple automated converter from OrCAD v4 (in SDT version 1.10) parts
library (in ASCII dump format, through "decomp" utility) to gEDA component
definition in .sym format file.
It allow an initial dumb conversion file to file, with one lib converted in
multiple .sym file, one per component in library.
The converted component file needs little editing to become usable, but in some
case needs no editing at all.
What olib do.
* Convert box shaped component in OrCAD (TM) lib in .sym file in gEDA format
* Place pin, pin name, pin type, pin number
* Place logic bubble when needed (DOT attribute in OrCAD (TM), for logic nega-
tion)
* Place clock arrow when needed (CLK attribute)
* Place reference, from REFERENCE statement in OrCAD (TM)
* Place Part name as label and device name as attribute
* Parse and draw non-box component, with LINE, ARC, CIRCLE and TEXT
* Add power pin as invisible net=name:pin attribute when detected (in OrCAD (TM)
invisible pin has tipically T0 and B0 coords)
* Through command line switch, hides pin name in VECTOR drawed symbols, allowing
better appearance
* Write both new (20020825) and old (20020209) file format for .sym files
through a switch on the command line
What olib do not.
* Do not parse and store alternate component drawing (statement CONVERT in
OrCAD (TM))
* Do not handle drawing part using VECTOR list from another part (statement
VECTOR 'partname' in OrCAD (TM))
* Do not handle FILL statement in VECTOR statement (incompatible with gEDA, but
for what i know is used only for "better" part drawing)
* Do not handle multiple part in one package (slots in gEDA)
Bugs.
More and more. But for the use that I do bugs aren't so critical.
If you find a bug or want improvements to the program, feel free to contact me
at the e-mail address at the end of this text.
How to obtain last version.
Open the URL:
http://digilander.libero.it/tailchaser
in section "Linux" you can see the main page of olib.
Compile and install.
[[ Ales here, I have incorperated olib into the ./configure build mechanism,
so these instructions only apply if you build from Mario's distribution ]]
To compile program go in directory 'src' of the unpacked tarball, and type
'make'. This produces the binary executable, named 'olib'.
Compilation process uses the flex scanner generator to generate the file
'olib.c' from the 'olib.lex', and link the library math to the code. The binary
included in the distribution is compiled on a P266-MMX with RedHat 7.2, with gcc
version 2.96 and flex 2.5.4, but the program don't require any special feature
or critical function, as far as I know. At the end of compilation phase, you can
see two warnings:
* warning, -s option given but default rule can be matched
* warning: `yyunput' defined but not used
this is normal, don't affect program functionality, and you can safely ignore
it.
Installation is not needed for normal operations, but if you want you can copy
only the executable (olib) on a directory in the PATH.
Use of olib.
To convert library, first convert it to ASCII dump with 'decomp' utility
included in the OrCAD (TM) distribution. After that invoke the lib converter:
olib path/to/file/file_ascii prefix where 'prefix' is used to generate file name
of every symbol, like:
prefix-partname-1.sym
During the process, you can see a lot of ugly text scrolling in the terminal,
that show the progress of the conversion. If you want to read this text, you can
redirect the stderr output to a file:
olib path/to/file/file_ascii prefix 2> logfile.txt
where '2>' instruct the shell to redirect stderr output to logfile.txt.
The converter write one file per part, in the current directory. At the end of
the execution you can see a lot of file in the directory, extracted from OrCAD
library.
In the (not so improbable) case of incomplete conversion of a part (i.e. because
of unsupported VECTOR 'partname' statement), the file of the incomplete part
will be named 'prefix-partname-1.sym.part', stand for partial conversion.
If the conversion process stops with the message: "flex scanner jammed", the
converter has encountered an unknown statement, an incompatible version of
library, or a bug. If you can, please report the complete log and the library
dump, to allow corrections or improvements.
Mario Pascucci
<m.pas@xxxxxxxxx>
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_pcb-quick_reference.html
Index: geda_pcb-quick_reference.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:pcb-quick_reference</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:pcb-quick_reference?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:pcb-quick_reference?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:pcb-quick_reference?do=export_raw" />
<meta name="date" content="2006-05-08T16:35:30-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#pcbquick_reference" class="toc">PCB: Quick Reference</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#key_mapping" class="toc">Key Mapping</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#pcb_keystrokes" class="toc">PCB Keystrokes</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#viewport_keystrokes" class="toc">Viewport Keystrokes</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#footprint_reference" class="toc">Footprint Reference</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#general_syntax" class="toc">General syntax</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#elements" class="toc">Elements</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#pads" class="toc">Pads</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#pins" class="toc">Pins</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#examples" class="toc">Examples</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="pcbquick_reference" id="pcbquick_reference">PCB: Quick Reference</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-35] -->
<h2><a name="key_mapping" id="key_mapping">Key Mapping</a></h2>
<div class="level2">
</div>
<!-- SECTION [36-59] -->
<h3><a name="pcb_keystrokes" id="pcb_keystrokes">PCB Keystrokes</a></h3>
<div class="level3">
<table class="inline">
<tr>
<th class="centeralign"> KEY </th><th class="centeralign"> MNEMONIC </th><th class="centeralign"> DESCRIPTION </th>
</tr>
<tr>
<td class="centeralign"> space </td><td class="centeralign"> select </td><td class="leftalign">enter select mode </td>
</tr>
<tr>
<td class="centeralign"> esc </td><td class="centeralign"> panner </td><td class="leftalign">enter panning mode </td>
</tr>
<tr>
<td class="centeralign"> tab </td><td class="centeralign"> flip view </td><td class="leftalign">view: flip board </td>
</tr>
<tr>
<td class="centeralign"> shift-del </td><td class="centeralign"> del-cu </td><td class="leftalign">deletes electrically connected copper (including power and signal planes) </td>
</tr>
<tr>
<td class="centeralign"> \ </td><td class="centeralign"> thin-draw on/off </td><td class="leftalign">toggles thin draw mode </td>
</tr>
<tr>
<td class="centeralign"> shift-alt-a </td><td class="centeralign"> unselect </td><td class="leftalign">clear selection </td>
</tr>
<tr>
<td class="centeralign"> b </td><td class="centeralign"> to other side </td><td class="leftalign">flip object to the other side of the board </td>
</tr>
<tr>
<td class="centeralign"> shift-b </td><td class="centeralign"> flip view </td><td class="leftalign">view: flip board </td>
</tr>
<tr>
<td class="centeralign"> c </td><td class="centeralign"> center </td><td class="leftalign">view: center display at cursor position </td>
</tr>
<tr>
<td class="centeralign"> ctrl-c </td><td class="centeralign"> copy to buffer </td><td class="leftalign">copy selection to buffer and unselect </td>
</tr>
<tr>
<td class="centeralign"> d </td><td class="centeralign"> display name </td><td class="leftalign">display pin or pad name </td>
</tr>
<tr>
<td class="centeralign"> shift-d </td><td class="centeralign"> pinout dialog </td><td class="leftalign">open pinout window for element under mouse cursor </td>
</tr>
<tr>
<td class="centeralign"> e </td><td class="centeralign"> extinguish rats </td><td class="leftalign">delete all rats </td>
</tr>
<tr>
<td class="centeralign"> shift-e </td><td class="centeralign"> eliminate some rats </td><td class="leftalign">delete selected rats </td>
</tr>
<tr>
<td class="centeralign"> f </td><td class="centeralign"> find connections </td><td class="leftalign">highlight connections to object under mouse cursor </td>
</tr>
<tr>
<td class="centeralign"> shift-f </td><td class="centeralign"> no find-connections </td><td class="leftalign">un-highlight found connections </td>
</tr>
<tr>
<td class="centeralign"> g </td><td class="centeralign"> increase grid </td><td class="leftalign">increment grid by configured grid increment </td>
</tr>
<tr>
<td class="centeralign"> shift-g </td><td class="centeralign"> decrease grid </td><td class="leftalign">decrement grid by configured grid increment </td>
</tr>
<tr>
<td class="centeralign"> h </td><td class="centeralign"> hide </td><td class="leftalign">toggle the visiblity of the refdes or value attached to the current component </td>
</tr>
<tr>
<td class="centeralign"> ctrl-h </td><td class="centeralign"> holeplate </td><td class="leftalign">toggle plating of a via. Used to produce non metalized mounting holes </td>
</tr>
<tr>
<td class="centeralign"> k </td><td class="centeralign"> klearance </td><td class="leftalign">increment clearance (soldermask to copper edge) </td>
</tr>
<tr>
<td class="centeralign"> shift-k </td><td class="centeralign"> klear (-) </td><td class="leftalign">decrement clearance (soldermask to copper edge (NOTE: can go negative!)) </td>
</tr>
<tr>
<td class="centeralign"> m </td><td class="centeralign"> move to layer </td><td class="leftalign">move the object under the cursor to the current layer </td>
</tr>
<tr>
<td class="centeralign"> shift-m </td><td class="centeralign"> move selection to layer </td><td class="leftalign">move selected objects to the current working layer (see <a href="http://geda.seul.org/wiki/geda:pcb_tips#how_do_i_move_one_set_of_layer_tracks_to_another_layer" class="wikilink1" title="geda:pcb_tips">pcb tip</a>) </td>
</tr>
<tr>
<td class="centeralign"> n </td><td class="centeralign"> name </td><td class="leftalign">show object refdes / pin number (depends on whatâ??s selected) </td>
</tr>
<tr>
<td class="centeralign"> shift-p </td><td class="centeralign"> polygon close </td><td class="leftalign">connect the first point of a polygon with the last </td>
</tr>
<tr>
<td class="centeralign"> q </td><td class="centeralign"> square toggle </td><td class="leftalign">toggle square/round corners on pads </td>
</tr>
<tr>
<td class="centeralign"> ctrl-r </td><td class="centeralign"> report </td><td class="leftalign">show object report </td>
</tr>
<tr>
<td class="centeralign"> s </td><td class="centeralign"> size </td><td class="leftalign">increment size </td>
</tr>
<tr>
<td class="centeralign"> shift-s </td><td class="centeralign"> size (-) </td><td class="leftalign">decrement size </td>
</tr>
<tr>
<td class="centeralign"> alt-s </td><td class="centeralign"> sizehole </td><td class="leftalign">increase the hole size </td>
</tr>
<tr>
<td class="centeralign"> alt-shift-s </td><td class="centeralign"> sizehole (-) </td><td class="leftalign">decrease the hole size </td>
</tr>
<tr>
<td class="centeralign"> ctrl-s </td><td class="centeralign"> sizehole </td><td class="leftalign">increase the hole size </td>
</tr>
<tr>
<td class="centeralign"> ctrl-shift-s </td><td class="centeralign"> sizehole (-) </td><td class="leftalign">decrease the hole size </td>
</tr>
<tr>
<td class="centeralign"> v </td><td class="centeralign"> view extents </td><td class="leftalign">global view of working area </td>
</tr>
<tr>
<td class="centeralign"> z </td><td class="centeralign"> zoom </td><td class="leftalign">view: zoom in </td>
</tr>
<tr>
<td class="centeralign"> shift-z </td><td class="centeralign"> un-zoom </td><td class="leftalign">view: zoom out </td>
</tr>
<tr>
<td class="centeralign"> F1 </td><td class="rightalign"> </td><td class="leftalign">via tool </td>
</tr>
<tr>
<td class="centeralign"> F2 </td><td class="centeralign"> line </td><td class="leftalign">tool </td>
</tr>
<tr>
<td class="centeralign"> F3 </td><td class="centeralign"> arc </td><td class="leftalign">tool </td>
</tr>
<tr>
<td class="centeralign"> F4 </td><td class="centeralign"> text </td><td class="leftalign">tool </td>
</tr>
<tr>
<td class="centeralign"> F5 </td><td class="centeralign"> rectangle </td><td class="leftalign">tool </td>
</tr>
<tr>
<td class="centeralign"> F6 </td><td class="centeralign"> polygon </td><td class="leftalign">tool </td>
</tr>
<tr>
<td class="centeralign"> F7 </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> F8 </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> F9 </td><td class="centeralign"> rotate </td><td class="leftalign">rotate mode </td>
</tr>
<tr>
<td class="centeralign"> F10 </td><td class="centeralign"> file menu </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> F11 </td><td class="centeralign"> select </td><td class="leftalign">enter select mode (same as [space]) </td>
</tr>
<tr>
<td class="centeralign"> F12 </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [60-2923] -->
<h2><a name="viewport_keystrokes" id="viewport_keystrokes">Viewport Keystrokes</a></h2>
<div class="level2">
<table class="inline">
<tr>
<th class="centeralign"> KEY </th><th class="centeralign"> MNEMONIC </th><th class="centeralign"> DESCRIPTION </th>
</tr>
<tr>
<td class="centeralign"> esc </td><td class="centeralign"> panner </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> v </td><td class="centeralign"> view extents </td><td>global view of working area</td>
</tr>
<tr>
<td class="centeralign"> c </td><td class="centeralign"> center </td><td>centers view on cursor</td>
</tr>
<tr>
<td class="centeralign"> z </td><td class="centeralign"> zoom </td><td>zoom in</td>
</tr>
<tr>
<td class="centeralign"> shift-z </td><td class="centeralign"> un-zoom </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> \ </td><td class="centeralign"> thin-draw on/off </td><td>toggles thin draw mode</td>
</tr>
<tr>
<td class="centeralign"> tab </td><td class="centeralign"> flip view </td><td>flip board</td>
</tr>
<tr>
<td class="centeralign"> shift-b </td><td class="centeralign"> flip view </td><td>flip board</td>
</tr>
</table>
<br />
</div>
<!-- SECTION [2924-3297] -->
<h1><a name="footprint_reference" id="footprint_reference">Footprint Reference</a></h1>
<div class="level1">
<p>
The Master document for footprint creation is the <a href="http://pcb.sourceforge.net/index.html#dir" class="urlextern" title="http://pcb.sourceforge.net/index.html#dir" rel="nofollow">PCB Manual</a>. There is also Stuart Brorsonâ??s <a href="http://www.brorson.com/gEDA/land_patterns_20050129.pdf" class="urlextern" title="http://www.brorson.com/gEDA/land_patterns_20050129.pdf" rel="nofollow">Footprint Creation for the Open-Source Layout Program PCB</a>.
</p>
</div>
<!-- SECTION [3298-3591] -->
<h2><a name="general_syntax" id="general_syntax">General syntax</a></h2>
<div class="level2">
<p>
A pcb footprint file may contain any of the following commands:
</p>
<ul>
<li class="level1"><div class="li"> <strong><code>Element [element_flags, description, pcb-name, value, mark_x, mark_y, text_x, text_y, text_direction, text_scale, text_flags]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>Pad [x1 y1 x2 y2 thickness clearance mask name pad_number flags]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>Pin [x y thickness clearance mask drillholedia name number flags]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>ElementArc [x y r1 r2 startangle sweepangle thickness]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>ElementLine [x1 y1 x2 y2 thickness] â??> thickness != 1000 = 10 mils almost for all footprints</code></strong></div>
</li>
<li class="level1"><div class="li"> Comment lines start with the â??<strong><code>#</code></strong>â??-sign</div>
</li>
</ul>
</div>
<!-- SECTION [3592-4204] -->
<h2><a name="elements" id="elements">Elements</a></h2>
<div class="level2">
<p>
<strong><code>Element [element_flags, description, pcb-name, value, mark_x, mark_y, text_x, text_y, text_direction, text_scale, text_flags]</code></strong>
</p>
<table class="inline">
<tr>
<th class="centeralign"> item </th><th class="centeralign"> allowed value </th><th class="centeralign"> explanation </th><th class="centeralign"> comment </th>
</tr>
<tr>
<td class="centeralign"> element_flags </td><td class="centeralign"> unsigned hex value </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> description </td><td class="centeralign"> string </td><td class="centeralign"> text description of footprint </td><td class="leftalign">written by footprint author </td>
</tr>
<tr>
<td class="centeralign"> pcb name </td><td class="centeralign"> string </td><td class="centeralign"> refdes used on this particular pcb </td><td class="leftalign">xxx </td>
</tr>
<tr>
<td class="centeralign"> value </td><td class="centeralign"> string </td><td class="centeralign"> value of component on this particular pcb layout </td><td class="leftalign">xxx </td>
</tr>
<tr>
<td class="centeralign"> mark_x </td><td class="centeralign"> 1/100th mils </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> mark_y </td><td class="centeralign"> 1/100th mils </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> text_x </td><td class="centeralign"> 1/100th mils </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> text_y </td><td class="centeralign"> 1/100th mils </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> text direction </td><td class="centeralign"> decimal integer </td><td class="centeralign"> 0=horiz; 1=ccw90; 2=180; 3=cw90 </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> text_scale </td><td class="centeralign"> decimal integer </td><td class="rightalign"> </td><td class="leftalign">usu. set 100 </td>
</tr>
<tr>
<td class="centeralign"> text_flags </td><td class="centeralign"> unsigned hex </td><td class="rightalign"> </td><td class="rightalign"> </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [4205-5032] -->
<h2><a name="pads" id="pads">Pads</a></h2>
<div class="level2">
<p>
<strong><code>Pad[x1 y1 x2 y2 thickness clearance mask name pad_number flags]</code></strong>
</p>
<table class="inline">
<tr>
<th class="centeralign"> Item </th><th class="centeralign"> Allowed Value </th><th class="centeralign"> Explanation </th><th class="centeralign"> Comment </th>
</tr>
<tr>
<td class="centeralign"> x1 </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> x(1st point) </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> y1 </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> y(1st point) </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> x2 </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> x(2nd point) </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> y2 </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> y(2nd point) </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> thickness </td><td class="centeralign"> 1/100 mils </td><td class="centeralign"> width of metal surrounding line segment </td><td class="leftalign">see Brorson .pdf </td>
</tr>
<tr>
<td class="centeralign"> clearance </td><td class="centeralign"> 1/100 mils </td><td class="centeralign"> distance to any other copper on any layer </td><td class="leftalign">actually 1/2 of this number is used! </td>
</tr>
<tr>
<td class="centeralign"> mask </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> width of mask relief </td><td class="leftalign">actual width of the mask centered on pad copper </td>
</tr>
<tr>
<td class="centeralign"> name </td><td class="centeralign"> string </td><td class="centeralign"> name of pad (arb. string) </td><td class="leftalign">e.g. â??pad_1â?? or â??positiveâ?? or any other string </td>
</tr>
<tr>
<td class="centeralign"> pad_number </td><td class="centeralign"> string </td><td class="centeralign"> pad # </td><td class="leftalign">used for nets. it MUST be consistent with the definitions on the netlist. </td>
</tr>
<tr>
<td class="centeralign"> flags </td><td class="centeralign"> hex value </td><td class="centeralign"> xxx </td><td class="rightalign"> </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [5033-5937] -->
<h2><a name="pins" id="pins">Pins</a></h2>
<div class="level2">
<p>
<strong><code>Pin[x y thickness clearance mask drillholedia name number flags]</code></strong>
</p>
<table class="inline">
<tr>
<th class="centeralign"> Item </th><th class="leftalign"> Allowed Value </th><th class="centeralign"> Explanation </th><th class="centeralign"> Comment </th>
</tr>
<tr>
<td class="centeralign"> x </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> pin x coord. </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> y </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> pin y coord. </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> thickness </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> copper diameter </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> clearance </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> 2*(cu to cu clearance) </td><td class="leftalign">if you want a 10 mil clearance, put 2000 (20 mils) here </td>
</tr>
<tr>
<td class="centeralign"> mask </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> diameter of mask aperture </td><td class="leftalign">actual dia. of hole in mask </td>
</tr>
<tr>
<td class="centeralign"> drillholedia </td><td class="centeralign"> 1/100th mils </td><td class="centeralign"> dia. of hole </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> name </td><td class="centeralign"> string </td><td class="centeralign"> arb. pin name </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> number </td><td class="centeralign"> decimal integer </td><td class="centeralign"> pin number used by nets/rats </td><td class="rightalign"> </td>
</tr>
<tr>
<td class="centeralign"> flags </td><td class="centeralign"> hex </td><td class="centeralign"> xxx </td><td class="rightalign"> </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [5938-6636] -->
<h2><a name="examples" id="examples">Examples</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <strong><code>Pad[-24606 14760 -19538 14760 1181 2000 3181 â??â?? â??16â?? â??squareâ??]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>Pad[-14760 19538 -14760 24606 1181 2000 3181 â??â?? â??17â?? â??square,edge2â??]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>Pin[0 0 12000 2000 12500 6400 â??â?? â??1â?? 0Ã?00000001]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>ElementArc [0 0 6800 6800 0 360 1000]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>ElementLine [-26696 -26696 26696 -26696 1000]</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code># notes within PCB Footprints go after the pound sign</code></strong></div>
</li>
</ul>
<p>
<span class="hilited">This page is new, it is not complete, post comments/additions to geda-user w/ title â??PCB Quick Referenceâ??. Remember, subscribe to geda-user before you post to the geda-user e-mail list.</span>
</p>
</div>
<!-- SECTION [6637-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_pcb.html
Index: geda_pcb.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:pcb</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:pcb?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:pcb?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:pcb?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_pcb_mp.html
Index: geda_pcb_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:pcb_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:pcb_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:pcb_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:pcb_mp?do=export_raw" />
<meta name="date" content="2006-05-07T16:20:28-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="pcb_man-page" id="pcb_man-page">PCB man-page</a></h1>
<div class="level1">
<pre class="code">PCB(1) PCB(1)
NAME
pcb - Printed circuit board layout tool
SYNOPSIS
pcb [options] [pcb file]
DESCRIPTION
The pcb program is a tool for the layout of printed circuit boards.
The complete manual for pcb is provided in a GNU texinfo format as well
as HTML and PDF. The texinfo version of the manual is typically viewed
with the info program or alternatively with emacs or a graphical info
viewer such as tkinfo /usr/local/share/pcb/pcb.html and
/usr/local/share/pcb/pcb.pdf. The prefix "/usr/local" may vary at your
site.
PCB(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_pcb_tips.html
Index: geda_pcb_tips.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:pcb_tips</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:pcb_tips?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:pcb_tips?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:pcb_tips?do=export_raw" />
<meta name="date" content="2006-08-03T10:04:54-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#pcb_tools" class="toc">PCB Tools</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#where_can_i_read_about_the_basics_of_using_pcb" class="toc">Where can I read about the basics of using pcb?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#i_found_a_bug_what_can_i_do_about_it" class="toc">I found a bug! What can I do about it?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_can_i_set_the_manufacturing_rules_to_use_i.e._drill_diameters_trace_width_space_specs" class="toc">How can I set the manufacturing rules to use (i.e. drill diameters, trace width/space specs)?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#footprint_issues" class="toc">Footprint issues</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_pcb_s_footprints_work" class="toc">How do PCB's footprints work?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#where_can_i_get_pre-drawn_footprints_for_pcb" class="toc">Where can I get pre-drawn footprints for PCB?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#i_want_to_use_pcb_to_do_layout._how_do_i_know_what_value_to_use_for_the_footprint_attribute" class="toc">I want to use PCB to do layout. How do I know what value to use for the footprint attribute?</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#newlib" class="toc">Newlib</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#m4_library" class="toc">M4 library</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#what_is_the_recommended_way_to_deal_with_different_footprints_for_the_same_sort_of_device" class="toc">What is the recommended way to deal with different footprints for the same sort of device?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_draw_a_new_footprint" class="toc">How do I draw a new footprint?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_edit_change_an_existing_footprint" class="toc">How do I edit/change an existing footprint?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_add_a_footprint_library_to_pcb" class="toc">How do I add a footprint library to PCB?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#pcb_is_not_finding_my_footprints._why" class="toc">PCB is not finding my footprints. Why?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#now_that_i_have_all_of_these_footprints_where_do_i_put_them" class="toc">Now that I have all of these footprints where do I put them?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#component_placement" class="toc">Component placement</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_rotate_a_selection_i.e._of_more_than_one_item" class="toc">How do I rotate a selection (i.e. of more than one item)?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_change_the_size_of_a_graphical_object_such_as_text_silkscreen_lines_etc" class="toc">How do I change the size of a graphical object (such as text, silkscreen lines, etc)?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_put_components_on_both_faces_in_pcb" class="toc">How do I put components on both faces in PCB?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_set_the_origin_in_pcb" class="toc">How do I set the origin in pcb?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#routing" class="toc">Routing</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_route_a_connection_from_solder_to_component_side_and_back" class="toc">How do I route a connection from solder to component side and back?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_change_the_routing_style" class="toc">How do I change the routing style?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#i_got_stuck_how_do_i_go_back" class="toc">I got stuck! How do I go back?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_move_one_set_of_layer_tracks_to_another_layer" class="toc">How do I move one set of layer tracks to another layer?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_change_the_soldermask_clearance_around_a_hole_via" class="toc">How do I change the soldermask clearance around a hole/via?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_change_the_size_of_my_tracks" class="toc">How do I change the size of my tracks?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_drive_a_via_to_connect_a_track_to_a_ground_plane_on_a_different_layer" class="toc">How do I drive a via to connect a track to a ground plane on a different layer?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#i_want_to_draw_a_track_between_two_segments_on_the_same_net_but_pcb_won_t_let_me_why" class="toc">I want to draw a track between two segments on the same net, but PCB won't let me! Why?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#beyond_tracks_and_footprints" class="toc">Beyond tracks and footprints</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#i_can_t_copy_component_pads_in_a_layout._what_gives" class="toc">I can't copy component pads in a layout. What gives?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_fill_areas_with_copper" class="toc">How do I fill areas with copper?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#the_polygons_are_shorting_my_tracks_what_can_i_do_about_it" class="toc">The polygons are shorting my tracks! What can I do about it?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_change_polygon_clearance" class="toc">How do I change polygon clearance?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_hide_the_polygons_while_i_edit_the_layout" class="toc">How do I hide the polygons while I edit the layout?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_edit_polygons" class="toc">How do I edit polygons?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_place_vias_that_connect_to_a_polygon_for_full_thermal_dissipation_or_full_shielding_integrity" class="toc">How do I place vias that connect to a polygon for full thermal dissipation or full shielding integrity?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#can_polygons_be_un-masked_can_a_polygon_be_made_bare-copper_with_no_solder_mask" class="toc">Can polygons be un-masked? (Can a polygon be made bare-copper with no solder mask?)</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_place_mounting_holes" class="toc">How do I place mounting holes?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#why_is_it_possible_to_make_a_thermal_for_pin_but_not_for_a_pad" class="toc">Why is it possible to make a thermal for pin, but not for a pad?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#can_pcb_be_used_to_make_single_layer_boards" class="toc">Can PCB be used to make single layer boards?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_resources_exist_to_process_pcb_files_using_scripts" class="toc">What resources exist to process PCB files using scripts?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_import_external_vector_graphics" class="toc">How do I import external vector graphics?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#auto_router" class="toc">Auto Router</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_force_the_autorouter_to_only_put_traces_on_a_particular_layer" class="toc">How do I force the autorouter to only put traces on a particular layer?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_force_the_autorouter_to_route_only_within_my_pcb_outline" class="toc">How do I force the autorouter to route only within my pcb outline?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_route_power_and_ground_planes_with_the_autorouter" class="toc">How do I route power and ground planes with the autorouter?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#the_layout_produced_by_the_autorouter_is_inefficient" class="toc">The layout produced by the autorouter is inefficient!</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#the_layout_produced_by_the_autorouter_is_ugly" class="toc">The layout produced by the autorouter is ugly!</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#gerber_generation_and_file_i_o_issues" class="toc">Gerber generation and file I/O issues</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#how_do_i_make_a_board_outline_to_go_with_my_gerbers_to_the_board_maker" class="toc">How do I make a board outline to go with my gerbers to the board maker?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#i_m_done_with_my_layout._how_should_i_check_my_design" class="toc">I'm done with my layout. How should I check my design?</a></span></div></li>
</ul>
</li>
<li class="level1"><div class="li"><span class="li"><a href="#you_didn_t_answer_my_question._what_other_resources_exist_for_pcb_information" class="toc">You didn't answer my question. What other resources exist for PCB information?</a></span></div></li></ul>
</div>
</div>
<h1><a name="pcb_tools" id="pcb_tools">PCB Tools</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-25] -->
<h2><a name="where_can_i_read_about_the_basics_of_using_pcb" id="where_can_i_read_about_the_basics_of_using_pcb">Where can I read about the basics of using pcb?</a></h2>
<div class="level2">
<p>
The <a href="http://pcb.sourceforge.net/manual.html" class="urlextern" title="http://pcb.sourceforge.net/manual.html" rel="nofollow">pcb manual</a> contains a concise description of the user interface in the section â??Getting Startedâ??(<a href="http://pcb.sourceforge.net/pcb-20060422/pcb.html#Getting%20Started" class="urlextern" title="http://pcb.sourceforge.net/pcb-20060422/pcb.html#Getting%20Started" rel="nofollow">version 20060422</a>)
</p>
</div>
<!-- SECTION [26-323] -->
<h2><a name="i_found_a_bug_what_can_i_do_about_it" id="i_found_a_bug_what_can_i_do_about_it">I found a bug! What can I do about it?</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Start by reading <a href="http://pcb.sourceforge.net/bugs.html" class="urlextern" title="http://pcb.sourceforge.net/bugs.html" rel="nofollow">the pcb bug reporting page</a>.</div>
</li>
<li class="level1"><div class="li"> Check, what it needs to reproduce the bug.</div>
</li>
<li class="level1"><div class="li"> Ask on the <a href="http://www.geda.seul.org/mailinglist/index.html" class="urlextern" title="http://www.geda.seul.org/mailinglist/index.html" rel="nofollow">geda-user mailing</a> list if there is a work around, or has been dealt with in the bleading edge version of pcb. Note that you must subscribe to the geda-user e-mail list before you can post to this list.</div>
</li>
<li class="level1"><div class="li"> Check, wether the issue is already in the <a href="http://sourceforge.net/tracker/?group_id=73743&atid=538811" class="urlextern" title="http://sourceforge.net/tracker/?group_id=73743&atid=538811" rel="nofollow">bug tracking system of pcb</a>. If not, file a bug report. Make sure to give every information necessary to reproduce the bug and add the version of pcb that contains the bug.</div>
</li>
<li class="level1"><div class="li"> Finally, as with all open source projects, you may flex your programming muscles and try to squish the bug yourself. Please file a patch of the changes you had to make to the <a href="http://sourceforge.net/tracker/?group_id=73743&atid=538811" class="urlextern" title="http://sourceforge.net/tracker/?group_id=73743&atid=538811" rel="nofollow">BTS of pcb</a>. The patch will be gladly accepted to improve the next release of pcb.</div>
</li>
</ol>
</div>
<!-- SECTION [324-1386] -->
<h2><a name="how_can_i_set_the_manufacturing_rules_to_use_i.e._drill_diameters_trace_width_space_specs" id="how_can_i_set_the_manufacturing_rules_to_use_i.e._drill_diameters_trace_width_space_specs">How can I set the manufacturing rules to use (i.e. drill diameters, trace width/space specs)?</a></h2>
<div class="level2">
<p>
This topic is covered <a href="http://pcb.sourceforge.net/pcb-20060422/pcb.html#Vendor%20drill%20mapping" class="urlextern" title="http://pcb.sourceforge.net/pcb-20060422/pcb.html#Vendor%20drill%20mapping" rel="nofollow">in the documentation available at the PCB website</a>.
</p>
</div>
<!-- SECTION [1387-1644] -->
<h1><a name="footprint_issues" id="footprint_issues">Footprint issues</a></h1>
<div class="level1">
</div>
<!-- SECTION [1645-1676] -->
<h2><a name="how_do_pcb_s_footprints_work" id="how_do_pcb_s_footprints_work">How do PCB's footprints work?</a></h2>
<div class="level2">
<p>
PCB supports two entirely separate footprint library mechanisms:
</p>
<ol>
<li class="level1"><div class="li"> The first is referred to as the â??oldlibâ??, â??pcblibâ??, or the â??M4 libraryâ??. This system is historic; it relies upon using the macro language M4 to generate footprints on the fly. The M4 library is fairly large, and has some bugs. Nonetheless, it can come in handy, and is distributed along with PCB itself. A powerful feature of the m4 library is that an entire family of footprints can quickly be defined by defining an appropriate base macro.</div>
</li>
<li class="level1"><div class="li"> The second footprint library for PCB is called the â??newlibâ??. Newlib footprints are defined using <acronym title="American Standard Code for Information Interchange">ASCII</acronym> text files which call out each graphical primitive which makes up an entire footprint. Newlib footprints can either be created graphically using PCB or via any other method which can produce a text file (text editor, awk/perl/ruby script, etc.). </div>
</li>
</ol>
<p>
Therefore, during layout, you can use footprints which are distributed with PCB, you can find footprints via a web search, or you can create your own, and put them in a dedicated directory. The <a href="http://pcb.sourceforge.net/manual.html" class="urlextern" title="http://pcb.sourceforge.net/manual.html" rel="nofollow">pcb manual</a> has complete and up to date documentation for the element file format. A somewhat incomplete but useful tutorial is available on the web at: <a href="http://www.brorson.com/gEDA/" class="urlextern" title="http://www.brorson.com/gEDA/" rel="nofollow">http://www.brorson.com/gEDA/</a> (search for the term “newlib”).
</p>
</div>
<!-- SECTION [1677-3059] -->
<h2><a name="where_can_i_get_pre-drawn_footprints_for_pcb" id="where_can_i_get_pre-drawn_footprints_for_pcb">Where can I get pre-drawn footprints for PCB?</a></h2>
<div class="level2">
<p>
Currently, the best place to get footprints (besides in the PCB distribution) is the <a href="http://www.gedasymbols.org/" class="urlextern" title="http://www.gedasymbols.org" rel="nofollow">gEDA Symbols website</a>. <a href="http://www.luciani.org/geda/pcb/pcb-footprint-list.html" class="urlextern" title="http://www.luciani.org/geda/pcb/pcb-footprint-list.html" rel="nofollow">John Luciani's website</a> has a large number of footprints and tools. Also, Darrell Harmon provides a nice footprint generating script <a href="http://www.dlharmon.com/geda/footgen.html" class="urlextern" title="http://www.dlharmon.com/geda/footgen.html" rel="nofollow">on his website</a>. You are welcome to contribute to the project and share your footprints. Finally, you can ask on the geda-user list, and somebody might take pity on you and send you a symbol. Note that you must subscribe to the geda-user e-mail list before you can post an e-mail to the geda-user list.
</p>
</div>
<!-- SECTION [3060-3798] -->
<h2><a name="i_want_to_use_pcb_to_do_layout._how_do_i_know_what_value_to_use_for_the_footprint_attribute" id="i_want_to_use_pcb_to_do_layout._how_do_i_know_what_value_to_use_for_the_footprint_attribute">I want to use PCB to do layout. How do I know what value to use for the footprint attribute?</a></h2>
<div class="level2">
<p>
This question is a common one amongst new gEDA users. Indeed, helping newbies determine the appropriate footprint names lies at the core of the ongoing <a href="http://geda.seul.org/wiki/geda:faq-gschem#what_s_this_business_about_heavy_vs._light_symbols" class="wikilink1" title="geda:faq-gschem">light vs. heavy symbol</a> debate. In the current, light symbol gEDA/gaf distribution, you need to attach the footprint attribute at the schematic level (i.e. using either gschem or gattrib). The name of the footprint to use depends upon whether you are using the newlib or the M4 library (pcblib).
</p>
</div>
<!-- SECTION [3799-4422] -->
<h3><a name="newlib" id="newlib">Newlib</a></h3>
<div class="level3">
<p>
The newlib stores one footprint per file, and the footprint names used by the newlib are the file names of the footprint files.
</p>
<p>
There are several ways to determine the newlib footprint names to use:
</p>
<ul>
<li class="level1"><div class="li"> You can browse the available footprints by running pcb and opening the footprint library window (available from the menu bar via â??Window â?? libraryâ??). Click on the â??newlibâ?? library group, and then select a sublibrary to browse its symbols. The name of each footprint appears in the â??Elementsâ?? window on the right hand side of the footprint library browser. Use the name exactly as it appears in the browser for the footprint attribute in gschem or gattrib.</div>
</li>
<li class="level1"><div class="li"> The newlib footprints distributed with PCB are stored in the directories under <strong><code>${PREFIX}/share/pcb/newlib</code></strong>. (<strong><code>${PREFIX}</code></strong> is the install directory you specified when configuring/building PCB.) The name to stick in the â??footprintâ?? attribute is the filename of the footprint you wish to use.<br/>
For example, on my machine I installed gEDA with the prefix <strong><code>/usr/local/geda/</code></strong>. The 0805 package (for SMT resistors or caps) lives in a file with absolute path<br/>
<strong><code>/usr/local/geda/share/pcb/newlib/generic_SMD_packages/0805_reflow_solder</code></strong> <br/>
Therefore, to use this footprint on a component I set its â??footprintâ?? attribute to <strong><code>0805_reflow_solder</code></strong> using gschem or gattrib.<br/>
Note that if the newlib symbol you want to use lives in a non-standard directory, gsch2pcb needs you to specify a path to that directory, either within your project.rc file (if you use one) or using the <strong><code>â??elements-dir</code></strong> flag (from the command line).</div>
</li>
<li class="level1"><div class="li"> Finally, since each new design typically requires you to draw at least a couple of new footprints, itâ??s likely you will have a local â??footprintsâ?? directory. As previously, the footprint name to use is the filename you assign to each of your new footprints. Again, donâ??t forget to add a line to your project.rc file telling gsch2pcb where to find your local footprints. Alternately, you can run gsch2pcb with the <strong><code>â??elements-dir</code></strong> flag set to point to your local footprint directory.</div>
</li>
</ul>
</div>
<!-- SECTION [4423-6577] -->
<h3><a name="m4_library" id="m4_library">M4 library</a></h3>
<div class="level3">
<p>
The M4 library stores the footprints as M4 macros; there are usually several (many) footprints contained in each footprint file. The different footprints in a single file are generally variations on a single pattern (e.g. DIP-8, DIP-14, DIP-16, etc.) The easiest way to find the correct footprint attribute name is by browsing through the “pcblib” library in the PCB library window. The footprint attribute is given in square brackets in the description. Also you can view the list of footprints from pcblib at the <a href="http://www.gedasymbols.org/footprints/" class="urlextern" title="http://www.gedasymbols.org/footprints/" rel="nofollow">gEDA Symbols webpage</a>.
</p>
<p>
The following m4 libraries have received more attention and improvements than the others:
</p>
<ul>
<li class="level1"><div class="li"> ~amp for Amp connectors</div>
</li>
<li class="level1"><div class="li"> ~amphenol for Amphenol connectors</div>
</li>
<li class="level1"><div class="li"> ~geda for many diverse parts used in basic design using gEDA (resistors, caps, etc).</div>
</li>
<li class="level1"><div class="li"> ~bourns for products like trim pots from Bourns</div>
</li>
<li class="level1"><div class="li"> ~cts for products like resistor packs from CTS</div>
</li>
<li class="level1"><div class="li"> ~johnstech for Johnstech sockets</div>
</li>
<li class="level1"><div class="li"> ~minicircuits for Minicircuits specific footprints</div>
</li>
<li class="level1"><div class="li"> ~panasonic for some Panasonic specific footprints</div>
</li>
</ul>
<p>
Finally, for both the newlib and the M4 lib, it is extremely important that you verify that the footprint name you use instantiates *exactly* the footprint you want when you place it in PCB. Therefore, it is critical to inspect the footprint before you use it. You can verify the footprint you want to use by clicking on it in the â??footprint libraryâ?? window, and then placing it onto an empty spot in PCBâ??s drawing area. Manually inspect the footprint to ensure that it has the correct number of pins/pads, correct dimensions, etc.
</p>
<p>
Also, once you generate Gerber files, make sure you <span class="curid"><a href="http://geda.seul.org/wiki/geda:pcb_tips#i_m_done_with_my_layout._how_should_i_check_my_design" class="wikilink1" title="geda:pcb_tips">inspect all footprints instantiated in your Gerbers</a></span> using gerbv (or an equivalent Gerber viewer) before you send your design out for fabrication.
</p>
</div>
<!-- SECTION [6578-8487] -->
<h2><a name="what_is_the_recommended_way_to_deal_with_different_footprints_for_the_same_sort_of_device" id="what_is_the_recommended_way_to_deal_with_different_footprints_for_the_same_sort_of_device">What is the recommended way to deal with different footprints for the same sort of device?</a></h2>
<div class="level2">
<p>
For example, an opamp may be DIP8 or SO8. A resistor may be 0603, 0805, 1208, or through-hole. How do I know what package and footprint to use, and how do I manage the choices?
</p>
<p>
First off, the footprint you should use is a decision for you to make, not your CAD tool. It is up to you to choose your preferred package type/footprint, and then attach the correct footprint attribute to the component in the schematic. Once you have choosen which package (and footprint) you wish to use, then either <span class="curid"><a href="http://geda.seul.org/wiki/geda:pcb_tips#where_can_i_get_pre-drawn_footprints_for_pcb" class="wikilink1" title="geda:pcb_tips">find an appropriate footprint</a></span>, or <span class="curid"><a href="http://geda.seul.org/wiki/geda:pcb_tips#how_do_i_draw_a_new_footprint" class="wikilink1" title="geda:pcb_tips">draw one yourself</a></span> and save it in a local directory.
</p>
<p>
As far as managing the footprint choices (and indeed the large number of component attributes you are likely to have): Use <a href="http://geda.seul.org/wiki/geda:faq-attribs#help_my_design_has_hundreds_of_components_and_it_s_a_pain_to_use_gschem_to_attach_all_my_attributes" class="wikilink1" title="geda:faq-attribs">gattrib</a>. Thatâ??s what itâ??s for.
</p>
</div>
<!-- SECTION [8488-9565] -->
<h2><a name="how_do_i_draw_a_new_footprint" id="how_do_i_draw_a_new_footprint">How do I draw a new footprint?</a></h2>
<div class="level2">
<p>
Everybody does this a little differently. Some people draw the footprint entirely using PCB. Some people first draw a preliminary footprint in PCB, and then finish it off by hand editing it (e.g. using emacs). Some people write <acronym title="Practical Extraction and Report Language">Perl</acronym> scripts to autogenerate footprints.
</p>
<p>
Karel Kulhavy prefers to draw the footprint entirely using PCB, which might be the most non-threatening method for newbies to use. He maintains a <a href="http://ronja.twibright.com/guidelines/footprints.php" class="urlextern" title="http://ronja.twibright.com/guidelines/footprints.php" rel="nofollow">HOWTO describing his footprint creation prodedure</a> on his Ronja website.
</p>
</div>
<!-- SECTION [9566-10154] -->
<h2><a name="how_do_i_edit_change_an_existing_footprint" id="how_do_i_edit_change_an_existing_footprint">How do I edit/change an existing footprint?</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Select element</div>
</li>
<li class="level1"><div class="li"> Copy into buffer</div>
</li>
<li class="level1"><div class="li"> Break buffer into pieces</div>
</li>
<li class="level1"><div class="li"> Paste buffer</div>
</li>
<li class="level1"><div class="li"> Do change</div>
</li>
<li class="level1"><div class="li"> Select everything</div>
</li>
<li class="level1"><div class="li"> Copy into buffer</div>
</li>
<li class="level1"><div class="li"> Convert buffer into element</div>
</li>
<li class="level1"><div class="li"> Paste buffer</div>
</li>
<li class="level1"><div class="li"> Go over every pad and press q. (This squares off the rounded pad edges.)</div>
</li>
</ol>
</div>
<!-- SECTION [10155-10480] -->
<h2><a name="how_do_i_add_a_footprint_library_to_pcb" id="how_do_i_add_a_footprint_library_to_pcb">How do I add a footprint library to PCB?</a></h2>
<div class="level2">
<p>
Adding footprint libraries to PCB is easy: <strong><em>File</em></strong> menu â??> <strong><em>Preferences</em></strong> â??> <strong><em>Library</em></strong> â??> <strong>FOOTPRINTDIRECTORY</strong>
</p>
<p>
Donâ??t forget to include the new directory into your gsch2pcb resource file (if you are using gsch2pcb, that is).
</p>
</div>
<!-- SECTION [10481-10785] -->
<h2><a name="pcb_is_not_finding_my_footprints._why" id="pcb_is_not_finding_my_footprints._why">PCB is not finding my footprints. Why?</a></h2>
<div class="level2">
<p>
The footprint path that PCB uses is defined using the <strong><code>Pcb.elementPath</code></strong> variable in the app-defaults file named <strong><code>PCB</code></strong>. The path for the <strong><code>PCB</code></strong> file is set using the <strong><code>XAPPLRESDIR</code></strong> environment variable which is typically set from within the wrapper script named <strong><code>pcb</code></strong>.
</p>
</div>
<!-- SECTION [10786-11133] -->
<h2><a name="now_that_i_have_all_of_these_footprints_where_do_i_put_them" id="now_that_i_have_all_of_these_footprints_where_do_i_put_them">Now that I have all of these footprints where do I put them?</a></h2>
<div class="level2">
<p>
I prefer to place all â??production-readyâ?? footprints in a single directory that is not in the gEDA/PCB install tree. When a new version of gEDA/PCB comes out I do not make any changes to project files or libraries. If there are newlib footprints in the PCB library that I want to use I copy them to the â??production-readyâ?? footprint directory.
</p>
<p>
Rather than change configuration files to get gsch2pcb to find the footprints I create a wrapper script called <strong><code>sch2pcb</code></strong> that contains the footprint path. All users use the same script and access the same production footprints.
</p>
<p>
To use the <strong><code>sch2pcb</code></strong> script that is listed below replace the string <strong><code>FOOTPRINT_DIR</code></strong> with your footprint directory:
</p>
<pre class="code">#!/bin/bash
gsch2pcb ���������elements-dir FOOTPRINT_DIR $@</pre>
</div>
<!-- SECTION [11134-12011] -->
<h1><a name="component_placement" id="component_placement">Component placement</a></h1>
<div class="level1">
</div>
<!-- SECTION [12012-12046] -->
<h2><a name="how_do_i_rotate_a_selection_i.e._of_more_than_one_item" id="how_do_i_rotate_a_selection_i.e._of_more_than_one_item">How do I rotate a selection (i.e. of more than one item)?</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Select the items</div>
</li>
<li class="level1"><div class="li"> Buffer â?? Cut selection to buffer</div>
</li>
<li class="level1"><div class="li"> Buffer â?? Rotate buffer 90 deg CCW (or CW)</div>
</li>
<li class="level1"><div class="li"> Click anywhere on the board and the selection is pasted on the design again.</div>
</li>
</ol>
</div>
<!-- SECTION [12047-12306] -->
<h2><a name="how_do_i_change_the_size_of_a_graphical_object_such_as_text_silkscreen_lines_etc" id="how_do_i_change_the_size_of_a_graphical_object_such_as_text_silkscreen_lines_etc">How do I change the size of a graphical object (such as text, silkscreen lines, etc)?</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> Mouse over the object and hit [<strong><code>s</code></strong>]. This will increase the size of the object you are mousing over.</div>
</li>
<li class="level1"><div class="li"> Mouse over the object and hit [<strong><code><shift>-S</code></strong>]. This will decrease the size of the object you are mousing over.</div>
</li>
</ul>
<p>
You can alter the increase/decrease quantum using the <strong><em>file</em></strong> â?? <strong><em>preferences</em></strong> â?? <strong><em>increments</em></strong> menu.
</p>
</div>
<!-- SECTION [12307-12756] -->
<h2><a name="how_do_i_put_components_on_both_faces_in_pcb" id="how_do_i_put_components_on_both_faces_in_pcb">How do I put components on both faces in PCB?</a></h2>
<div class="level2">
<p>
There are two ways to do it:
</p>
<ul>
<li class="level1"><div class="li"> Pressing the tab key will alternate the active side between the component and solder sides. When you place components, they will go on the active side.</div>
</li>
<li class="level1"><div class="li"> If you are viewing one side of the board, place a component there and (with the cursor over it) press the [<strong><code>b</code></strong>] key (wich means, send the component to the Back side) the component go to the other side of the board.</div>
</li>
</ul>
</div>
<!-- SECTION [12757-13225] -->
<h2><a name="how_do_i_set_the_origin_in_pcb" id="how_do_i_set_the_origin_in_pcb">How do I set the origin in pcb?</a></h2>
<div class="level2">
<p>
The absolute origin is always in the upper left corner of the accessible area. This cannot be set to some other place. However, coordinates of objects can also be given relative to the current grid. In the GTK2 version of pcb coordinates are shown in the upper right corner of the main window. The right pair is the absolute position, while the left pair reflects the position relative to an arbitrary marker. This marker is set to the current position of the mouse by the key sequence [<strong><code>ctrl-m</code></strong>]. You may want to set the marker to a grid point or a specific pin.
</p>
</div>
<!-- SECTION [13226-13840] -->
<h1><a name="routing" id="routing">Routing</a></h1>
<div class="level1">
</div>
<!-- SECTION [13841-13862] -->
<h2><a name="how_do_i_route_a_connection_from_solder_to_component_side_and_back" id="how_do_i_route_a_connection_from_solder_to_component_side_and_back">How do I route a connection from solder to component side and back?</a></h2>
<div class="level2">
<p>
While using the line tool, use the number keys on top of the keyboard to switch layers. A via will be placed automatically at the endpoint of the last complete segment.
</p>
</div>
<!-- SECTION [13863-14112] -->
<h2><a name="how_do_i_change_the_routing_style" id="how_do_i_change_the_routing_style">How do I change the routing style?</a></h2>
<div class="level2">
<p>
There is a set of predefined sizes for routing. The sets bear suggestive names (Signal, Power, Fat and Skinny), but the actual value of the sizes can be configured to your needs. The line tool knows about different styles to deal with transversal connections:
</p>
<ol>
<li class="level1"><div class="li"> 45° plus vertical/horizontal (status line: â??\_â??)</div>
</li>
<li class="level1"><div class="li"> vertical plus 45° (status line: â??_/â??)</div>
</li>
<li class="level1"><div class="li"> arbitrary angle (status line: â??allâ??)</div>
</li>
</ol>
<p>
The way to access these modes differs among the pcb <acronym title="Graphical User Interface">GUI</acronym> versions. The current GTK snapshot (v20050609) is hard wired to â??_/â?? but can be temporarily turned to â??\_â?? with the shift key. For arbitrary angles, choose â??enable all line directionsâ?? in the setting menu.
</p>
</div>
<!-- SECTION [14113-14845] -->
<h2><a name="i_got_stuck_how_do_i_go_back" id="i_got_stuck_how_do_i_go_back">I got stuck! How do I go back?</a></h2>
<div class="level2">
<p>
The universal undo key [<strong><code>U</code></strong>] works even while in the middle of track layout actions. It will remove the last segment but keep the line tool attached to the mouse. So you can immediately go on routing and find a better way.
</p>
</div>
<!-- SECTION [14846-15118] -->
<h2><a name="how_do_i_move_one_set_of_layer_tracks_to_another_layer" id="how_do_i_move_one_set_of_layer_tracks_to_another_layer">How do I move one set of layer tracks to another layer?</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Select the tracks. Itâ??s easiest to do this if you shut off everything but that layer first (i.e. silk, pins, other layers, etc).</div>
</li>
<li class="level1"><div class="li"> Now set the current layer to be the new layer. Yes, the layer might get displayed; not a problem as youâ??ve already selected the tracks you want.</div>
</li>
<li class="level1"><div class="li"> Press [<strong><code>shift-M</code></strong>] to move all the selected tracks to the current layer.</div>
</li>
</ol>
</div>
<!-- SECTION [15119-15555] -->
<h2><a name="how_do_i_change_the_soldermask_clearance_around_a_hole_via" id="how_do_i_change_the_soldermask_clearance_around_a_hole_via">How do I change the soldermask clearance around a hole/via?</a></h2>
<div class="level2">
<p>
You can increase the soldermask clearance from any hole/via by positioning the cursor over the object and typing the [<strong><code>k</code></strong>] key. You can decrease the clearance by using the [<strong><code><shift>-K</code></strong>] key.
</p>
</div>
<!-- SECTION [15556-15831] -->
<h2><a name="how_do_i_change_the_size_of_my_tracks" id="how_do_i_change_the_size_of_my_tracks">How do I change the size of my tracks?</a></h2>
<div class="level2">
<p>
There are a number of ways to change the size of already laid down tracks:
</p>
<ol>
<li class="level1"><div class="li"> Use [<strong><code>s</code></strong>] and [<strong><code>shift-s</code></strong>] to increase and decrease the size of the track currenty under the mouse cursor.</div>
</li>
<li class="level1"><div class="li"> choose <strong><code>Select/Change_size_of_selected_objects/Decrement_lines_by_4mil</code></strong> from the <strong><code>Select</code></strong> menu. The actual amount of change can be set in <strong><code>File/Preferences/Sizes</code></strong>. This only acts on the tracks. So the selection may contain components, text, vias and the like.</div>
</li>
<li class="level1"><div class="li"> Select the tracks to be changed and type <strong><code>:ChangeSize(SelectedLines,+4,mils)</code></strong>. The colon gets you to the command line and <strong><code>ChangeSize()</code></strong> is the command version of the previously described action. Replace â??<strong><code>+4</code></strong>â?? by the amount you want to increase the track size. Use the minus sign to decrease the tracksize. If you omit the sign the command sets the track size to the value given.</div>
</li>
</ol>
</div>
<!-- SECTION [15832-16769] -->
<h2><a name="how_do_i_drive_a_via_to_connect_a_track_to_a_ground_plane_on_a_different_layer" id="how_do_i_drive_a_via_to_connect_a_track_to_a_ground_plane_on_a_different_layer">How do I drive a via to connect a track to a ground plane on a different layer?</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Set the GND plane layer as the active layer.</div>
</li>
<li class="level1"><div class="li"> Select the â??viaâ?? tool.</div>
</li>
<li class="level1"><div class="li"> Place the via where you want it to live (left click to place).</div>
</li>
<li class="level1"><div class="li"> Now select the â??thermalâ?? tool.</div>
</li>
<li class="level1"><div class="li"> Left click on the via you just placed.</div>
</li>
<li class="level1"><div class="li"> Now change the active layer to your desired routing layer.</div>
</li>
<li class="level1"><div class="li"> Select the â??lineâ?? tool.</div>
</li>
<li class="level1"><div class="li"> Route the track on the active layer to or from the via as usual.</div>
</li>
</ol>
</div>
<!-- SECTION [16770-17255] -->
<h2><a name="i_want_to_draw_a_track_between_two_segments_on_the_same_net_but_pcb_won_t_let_me_why" id="i_want_to_draw_a_track_between_two_segments_on_the_same_net_but_pcb_won_t_let_me_why">I want to draw a track between two segments on the same net, but PCB won't let me! Why?</a></h2>
<div class="level2">
<p>
You are likely drawing tracks with auto-DRC on. To connect the two segments, here are some suggestions:
</p>
<ul>
<li class="level1"><div class="li"> DRC enforcement uses the ratsnest to determine where a track is allowed to go. Thus, you must have the ratsnest drawn in order to make connections in auto-DRC mode. Otherwise you will not be allowed to connect (or approach) any copper that is not already connected to your net. (If the rat visibility bothers you, you can hide the rats layer â?? but the rats must exist).</div>
</li>
<li class="level1"><div class="li"> You should also refresh the rats regularly when drawing. Hit [<strong><code>o</code></strong>] to redraw/re-optimize the rats. Make sure a rat is visibly connecting the two pieces of metal you want to connect.</div>
</li>
<li class="level1"><div class="li"> It is also possible that you will experience this situation when drawing tracks between pins in a connector. In this case, it is possible that your track width violates the clearance requirements of the pin field. Try decreasing the pin-to-metal clearance, or use a narrower track width.</div>
</li>
</ul>
</div>
<!-- SECTION [17256-18320] -->
<h1><a name="beyond_tracks_and_footprints" id="beyond_tracks_and_footprints">Beyond tracks and footprints</a></h1>
<div class="level1">
</div>
<!-- SECTION [18321-18363] -->
<h2><a name="i_can_t_copy_component_pads_in_a_layout._what_gives" id="i_can_t_copy_component_pads_in_a_layout._what_gives">I can't copy component pads in a layout. What gives?</a></h2>
<div class="level2">
<p>
<strong>Question:</strong> I want to copy a section of my existing layout to another spot.
</p>
<p>
I can select the existing area. Everything turns pretty blue.
</p>
<p>
“Buffer”–>”Copy Selection To Buffer” seems to succeed (no complaints).
</p>
<p>
Then I go to paste the copied area... and all that moves are a couple of traces and some vias. The pads I’ve painstakingly created aren’t copied. What gives!?!?!?
</p>
<p>
<strong>Answer:</strong> If the silk layer is off, you can’t copy elements through the paste buffer. Weird, but that’s how it works. Therefore, turn on the silk layer before trying to copy a section of a layout.
</p>
</div>
<!-- SECTION [18364-19019] -->
<h2><a name="how_do_i_fill_areas_with_copper" id="how_do_i_fill_areas_with_copper">How do I fill areas with copper?</a></h2>
<div class="level2">
<p>
Use rectangles and polygon planes. These items will always avoid vias, pads and pins. Tracks are also avoided, if they have the clear polygons flag set. (menu: Settings/Enable_new_lines_clear_polygons)
</p>
</div>
<!-- SECTION [19020-19267] -->
<h2><a name="the_polygons_are_shorting_my_tracks_what_can_i_do_about_it" id="the_polygons_are_shorting_my_tracks_what_can_i_do_about_it">The polygons are shorting my tracks! What can I do about it?</a></h2>
<div class="level2">
<p>
You didnâ??t have â??Enable_new_lines_clear_polygonsâ?? checked in the settings menu when you layed down the tracks. Enter â??changejoin(selection)â?? in the command window to toggle this flag for all tracks that are currently selected. The keyboard shortcut to this action is [<strong><code>shift-j</code></strong>].
</p>
</div>
<!-- SECTION [19268-19637] -->
<h2><a name="how_do_i_change_polygon_clearance" id="how_do_i_change_polygon_clearance">How do I change polygon clearance?</a></h2>
<div class="level2">
<p>
Press [<strong><code>k</code></strong>] to increase the clearence of the object under the cursor. Use [<strong><code>ctrl-k</code></strong>] to increase the clearence of selected objects. Add the [<strong><code>shift</code></strong>] modifier to decrease the clearence. To change a whole track press [<strong><code>f</code></strong>] to find all segments that are connected to the object under the cursor and apply the action â??select(connection)â??.
</p>
<p>
The amount of the increment can be configured in the dialog File/Preference/Increments.
</p>
</div>
<!-- SECTION [19638-20138] -->
<h2><a name="how_do_i_hide_the_polygons_while_i_edit_the_layout" id="how_do_i_hide_the_polygons_while_i_edit_the_layout">How do I hide the polygons while I edit the layout?</a></h2>
<div class="level2">
<p>
Put the polygons (and rectangles) on a separate layer. Use the preference to make sure, this layer is not in the same group as the tracks. Disable the layer by a click on the corresponding layer button in the main window. After you are finished with the changes, use the preference dialog to let the polygon layer join the layer of the tracks.
</p>
</div>
<!-- SECTION [20139-20547] -->
<h2><a name="how_do_i_edit_polygons" id="how_do_i_edit_polygons">How do I edit polygons?</a></h2>
<div class="level2">
<p>
There are four basic ways to edit polygon outlines. You can move and delete vertices and you can insert vertices using two techniques. Polygons can be edited equally well in â??thin line drawâ?? mode (settings â??> enable thin line draw) or in normal mode. Moving a vertex is easily accomplished by un-selecting your polygon and then clicking and dragging that vertex to a new location. To delete a vertex, a corner in your polygon, put your crosshairs over the point and hit â??deleteâ?? on the keyboard. To insert a vertex, youâ??ll use the insert tool (â??insertâ?? keystroke). Start by clicking the edge you want to split with a new point. Click and drag a new point into the polygon. A variation on this technique is 1) click to select, followed by 2) click to place new vertex.
</p>
<p>
(NOTE: Inserting points into polygon will generally work ONLY with â??all direction linesâ?? enabled (â??settings â??> enable all direction linesâ??). This is because PCB has a powerful 45/90 degree constraints system. If you try to insert new vertices into a polygon that donâ??t fall onto lines of proper 45 and 90 degree constraints, PCB disallows the action!)
</p>
</div>
<!-- SECTION [20548-21733] -->
<h2><a name="how_do_i_place_vias_that_connect_to_a_polygon_for_full_thermal_dissipation_or_full_shielding_integrity" id="how_do_i_place_vias_that_connect_to_a_polygon_for_full_thermal_dissipation_or_full_shielding_integrity">How do I place vias that connect to a polygon for full thermal dissipation or full shielding integrity?</a></h2>
<div class="level2">
<p>
Often itâ??s useful to have vias connect completely to a polygon (a field of copper) for heat transferâ?? the apparent problem is that PCB polygons have only a single â??clear pins/viasâ?? flag for the entire polygon (toggled by the [<strong><code>s</code></strong>] key). Our goal is to only connect some of the pins/vias to the polygon, but to connect them better than a thermal does. Here are a few ways to do this:
</p>
<p>
One way, youâ??ll make an object thatâ??s almost just like a thermal in that it goes between your via and the polygonâ??the difference is that youâ??ll actually create an annulus to completely fill the space between the hole and polygon (which because itâ??s clearance is turned on, is not connected to the pin). This annulus is four arc segments. You can copy these four items to the buffer to create a â??zero-clearance thermal toolâ??. The drawback of this trick is that when you change via size, youâ??ll also have to modify the size of these filler parts.
</p>
<p>
The arcs allow you to use this fill trick in tight places by only placing, say two of the four arcs.
</p>
<p>
Another trick is to make a zero-length line. Take a single line segment and move the end-point on top of the start-point. Now you have a â??single point lineâ?? (a circle) with the diameter equal to the line thickness. Move to different layers ([<strong><code>m</code></strong>] key) as you see fit. Place this object centered on your via to connect it to a polygon.
</p>
<p>
Power-users may want to keep a small custom library of these parts by saving them as elements. Itâ??s also handy to put these â??partsâ?? in one of your PCB buffers so theyâ??re at your fingertips.
</p>
<p>
You can also add another polygon on-top of the polygon to which you want to connect you vias. Youâ??ll un-set the â??clear pins/viasâ?? flag and the vias will be connected to the larger polygon underneath.
</p>
</div>
<!-- SECTION [21734-23663] -->
<h2><a name="can_polygons_be_un-masked_can_a_polygon_be_made_bare-copper_with_no_solder_mask" id="can_polygons_be_un-masked_can_a_polygon_be_made_bare-copper_with_no_solder_mask">Can polygons be un-masked? (Can a polygon be made bare-copper with no solder mask?)</a></h2>
<div class="level2">
<p>
Currently this is not possible in PCB. The usual workaround (for example if you want to leave a bare area to attach a heatsink or shielding) is to make an element that is a single pad. This pad should be as small as possible (0 x 0) but with a large clearance. Itâ??s the soldermask clearance from this part you will use to un-mask the polygon. PCB internally limits the size of the pad to 250 mils. For larger exposed areas you will need to use multiple pads.
</p>
</div>
<!-- SECTION [23664-24221] -->
<h2><a name="how_do_i_place_mounting_holes" id="how_do_i_place_mounting_holes">How do I place mounting holes?</a></h2>
<div class="level2">
<p>
Use a footprint for the mounting hole or place a via.
</p>
<p>
If the pads surrounding the mounting hole need to be electrically connected then you should show the connection in your schematic. Add a symbol for the mounting hole and change its footprint attribute.
</p>
<p>
My preference is to create PCB footprints for the various types of mounting hardware. I have a variety of silkscreens for various hardware combinations (hex nut, hex nut with washer, etc.) The silkscreen provides a convenient placement reference during PCB layout.
</p>
<p>
For footprint examples see <a href="http://www.luciani.org/geda/pcb/pcb-footprint-list.html#Hardware" class="urlextern" title="http://www.luciani.org/geda/pcb/pcb-footprint-list.html#Hardware" rel="nofollow">http://www.luciani.org/geda/pcb/pcb-footprint-list.html#Hardware</a>.
</p>
</div>
<!-- SECTION [24222-24886] -->
<h2><a name="why_is_it_possible_to_make_a_thermal_for_pin_but_not_for_a_pad" id="why_is_it_possible_to_make_a_thermal_for_pin_but_not_for_a_pad">Why is it possible to make a thermal for pin, but not for a pad?</a></h2>
<div class="level2">
<p>
The reason is that pins usually have sufficient spacing that the plane surrounding them remains intact on all sides and pads usually are so tightly spaced that they do not. Because of this you must manually draw the thermal â??fingersâ?? to connect the pad to the ground plane. Be sure that you have the settings such that new lines connect to planes when you draw them. If you need to make several such thermals, spend a little time making the first one just the way you want then copy the fingers to the buffer and paste it where you want the others.
</p>
</div>
<!-- SECTION [24887-25517] -->
<h2><a name="can_pcb_be_used_to_make_single_layer_boards" id="can_pcb_be_used_to_make_single_layer_boards">Can PCB be used to make single layer boards?</a></h2>
<div class="level2">
<p>
Yes. Just plot your gerbers and toss any layers that are not needed. You can just draw the layout as you want (freestyle). If you want to verify connectivity, you have two choices:
</p>
<ol>
<li class="level1"><div class="li"> Assuming your copper is on the bottom side, use the top side in layout to put down traces where jumpers will be. This is probably the easiest. Then just fab the bottom side and put jumpers wherever you have top side copper.</div>
</li>
<li class="level1"><div class="li"> Create a â??jumperâ?? symbol in the schematic and put that in places where you need a jumper. This is likely to be a major pain, but you can enforce dimensions of the jumpers this way if you care.</div>
</li>
</ol>
<p>
If youâ??re trying to use the autorouter, just turn off all but the bottom layer when you route and it will stick to that layer.
</p>
</div>
<!-- SECTION [25518-26315] -->
<h2><a name="what_resources_exist_to_process_pcb_files_using_scripts" id="what_resources_exist_to_process_pcb_files_using_scripts">What resources exist to process PCB files using scripts?</a></h2>
<div class="level2">
<p>
One of PCB’s great features is that it uses an easily understood <acronym title="American Standard Code for Information Interchange">ASCII</acronym> file format. Therefore, many people use scripts (commonly <acronym title="Practical Extraction and Report Language">Perl</acronym>) to process their boards in various ways. You can use these scripts either as they are, or modify them to suit your own goals. Here are some links to available scripts:
</p>
<ol>
<li class="level1"><div class="li"> John Luciani has a large number of <a href="http://www.luciani.org/geda/pcb/pcb-perl-library.html" class="urlextern" title="http://www.luciani.org/geda/pcb/pcb-perl-library.html" rel="nofollow">scripts</a> available on <a href="http://www.luciani.org/" class="urlextern" title="http://www.luciani.org" rel="nofollow"> his website</a>. Included in his collection are scripts for generating footprints, as well as </div>
</li>
<li class="level1"><div class="li"> David Rowe has scripts for updating elements as well as adding/subtracting PCB files from each other on <a href="http://www.rowetel.com/perl4pcb.html" class="urlextern" title="http://www.rowetel.com/perl4pcb.html" rel="nofollow">his website.</a></div>
</li>
<li class="level1"><div class="li"> Stuart Brorson wrote a simple script which generates footprints for two terminal SMT passives. A gzipped tarball is available <a href="http://www.brorson.com/gEDA/Smtgen.pl.gz" class="urlextern" title="http://www.brorson.com/gEDA/Smtgen.pl.gz" rel="nofollow"> here </a>.</div>
</li>
</ol>
</div>
<!-- SECTION [26316-27279] -->
<h2><a name="how_do_i_import_external_vector_graphics" id="how_do_i_import_external_vector_graphics">How do I import external vector graphics?</a></h2>
<div class="level2">
<p>
There is a third party open source utility called <a href="http://www.pstoedit.net/" class="urlextern" title="http://www.pstoedit.net/" rel="nofollow">pstoedit</a> that converts postscript data to pcb format. It is included in most major linux distributions. You can use your favorite vector graphics utility to produce a logo or any kind of fancy layout. Export as eps if you can and make sure that your logo fits into the bounding box (check with a postscript viewer such as ggv). If there is no eps export available, you can produce postscript by printing to a file. In this case you may add a bounding box with <a href="http://www.cs.wisc.edu/~ghost/doc/gnu/6.53/Ps2epsi.htm" class="urlextern" title="http://www.cs.wisc.edu/~ghost/doc/gnu/6.53/Ps2epsi.htm" rel="nofollow">ps2epsi</a>. Call pstoedit with the option “<code>-f pcb</code>” to produce a valid pcb file that contains the graphics as tracks on layer 1. Load this file to pcb. The graphics will sit somewhere on the lower left of the view port. You may have to zoom out to get it on the screen.
</p>
<p>
Import of external vector graphics is usefull if an irregular shape of the pcb is required. Use the cut buffer to copy the shape to your actual design.
</p>
</div>
<!-- SECTION [27280-28358] -->
<h1><a name="auto_router" id="auto_router">Auto Router</a></h1>
<div class="level1">
</div>
<!-- SECTION [28359-28384] -->
<h2><a name="how_do_i_force_the_autorouter_to_only_put_traces_on_a_particular_layer" id="how_do_i_force_the_autorouter_to_only_put_traces_on_a_particular_layer">How do I force the autorouter to only put traces on a particular layer?</a></h2>
<div class="level2">
<p>
Just unselect the layers you donâ??t want (usually green and blue) by clicking on the name of the layer. then press autoroute.
</p>
</div>
<!-- SECTION [28385-28596] -->
<h2><a name="how_do_i_force_the_autorouter_to_route_only_within_my_pcb_outline" id="how_do_i_force_the_autorouter_to_route_only_within_my_pcb_outline">How do I force the autorouter to route only within my pcb outline?</a></h2>
<div class="level2">
<p>
You can have the autorouter work only within a given area by drawing a copper polygon conforming to your boardâ??s boundary and placing it in each layer youâ??re trying to autoroute. You can also use this trick to autoroute only with small areas. Of course, if you accidentally have a net touching the polygon, all routes will get shorted to that net.
</p>
</div>
<!-- SECTION [28597-29028] -->
<h2><a name="how_do_i_route_power_and_ground_planes_with_the_autorouter" id="how_do_i_route_power_and_ground_planes_with_the_autorouter">How do I route power and ground planes with the autorouter?</a></h2>
<div class="level2">
<p>
Connect the polygon that will become your power planes to a net and the autorouter will figure it all out. You may need some trick polygon clearances to get power routing _and_ routing within a board outline.
</p>
</div>
<!-- SECTION [29029-29310] -->
<h2><a name="the_layout_produced_by_the_autorouter_is_inefficient" id="the_layout_produced_by_the_autorouter_is_inefficient">The layout produced by the autorouter is inefficient!</a></h2>
<div class="level2">
<p>
This is a technological limitation of the current auto router. It is gridless and uses geometric rectangles only.
</p>
</div>
<!-- SECTION [29311-29491] -->
<h2><a name="the_layout_produced_by_the_autorouter_is_ugly" id="the_layout_produced_by_the_autorouter_is_ugly">The layout produced by the autorouter is ugly!</a></h2>
<div class="level2">
<p>
You are more than welcome to contribute a topological autorouter.
</p>
</div>
<!-- SECTION [29492-29617] -->
<h1><a name="gerber_generation_and_file_i_o_issues" id="gerber_generation_and_file_i_o_issues">Gerber generation and file I/O issues</a></h1>
<div class="level1">
</div>
<!-- SECTION [29618-29670] -->
<h2><a name="how_do_i_make_a_board_outline_to_go_with_my_gerbers_to_the_board_maker" id="how_do_i_make_a_board_outline_to_go_with_my_gerbers_to_the_board_maker">How do I make a board outline to go with my gerbers to the board maker?</a></h2>
<div class="level2">
<p>
You can add an outline layer to your pcb projects. PCB interprets any layer called â??outlineâ?? (edit â??> edit name of â??> active layer) as though it is the absolute edge of the pcb. PCB prints gerber files that rigidly represent this.
</p>
<p>
You can enter your outline layer thru PCBâ??s <acronym title="Graphical User Interface">GUI</acronym>. You just draw the lines of the board outline. You can generate boards of any shape this way.
</p>
<p>
Itâ??s also possible to edit the native .pcb file format of your layout. I usually use Layer 8 for outlines:
</p>
<pre class="code">Layer(8 "outline")
(
Line[x1 y1 x2 y2 1000 2000 0x00000000]
Line[x2 y2 x3 y3 1000 2000 0x00000000]
Line[x3 y3 x4 y4 1000 2000 0x00000000]
Line[x4 y4 x1 y1 1000 2000 0x00000000]
Line[<more points go here for non-square boards> 1000 2000 0x00000000]
)</pre>
</div>
<!-- SECTION [29671-30517] -->
<h2><a name="i_m_done_with_my_layout._how_should_i_check_my_design" id="i_m_done_with_my_layout._how_should_i_check_my_design">I'm done with my layout. How should I check my design?</a></h2>
<div class="level2">
<p>
Besides running the DRC checker in PCB, it is essential to check your Gerber files. The gEDA Suite includes the program â??gerbvâ?? for this task. Here are some things to check/verify:
</p>
<ul>
<li class="level1"><div class="li"> Check that all trace widths are the correct size. Also make sure your trace widths and metal-metal separations are above the minimum specified by your PCB vendor.</div>
</li>
<li class="level1"><div class="li"> Check that all hole diameters are called out at the correct size.</div>
</li>
<li class="level1"><div class="li"> Check that metal annular rings around holes/vias are large enough. The annular ring is the distance between the holeâ??s edge and the outer diameter of the metallization. The annular ring must be large enough to accomodate drill location + layer registration + other manufacturing inaccuracy. This information should be available from your PCB fabrication house; they normally publish the minimum annular ring requirements in their manufacturing rules document.</div>
</li>
<li class="level1"><div class="li"> Check that your antipads (clearance around holes/vias) are large enough. This information should be available from your PCB fabrication house; ask them for their manufacturing rules document.</div>
</li>
<li class="level1"><div class="li"> Verify that no soldermask or silkscreen overlays a copper pad or through-hole.</div>
</li>
<li class="level1"><div class="li"> On plane layers, verify that at least some vias connect to it (yes, I have seen a board where the entire ground plane was floating â?? not done in pcb btw)</div>
</li>
<li class="level1"><div class="li"> On plane layers, verify that at least some vias _donâ??t_ connect to it.</div>
</li>
<li class="level1"><div class="li"> Do a visual sanity check of all layers. Nothing detailed, just does it look approximately like you think it should.</div>
</li>
<li class="level1"><div class="li"> Are all layers negative/positive as they should be? Note that some fab houses want positive layers only. PCB will automatically create negative Gerbers on outer layer planes with no tracks. If you want an all-plane layer to be output as a positive layer, draw a single track somewhere in an unused part of the plane. This will trigger PCB to render that layer as a positive layer.</div>
</li>
</ul>
</div>
<!-- SECTION [30518-32494] -->
<h1><a name="you_didn_t_answer_my_question._what_other_resources_exist_for_pcb_information" id="you_didn_t_answer_my_question._what_other_resources_exist_for_pcb_information">You didn't answer my question. What other resources exist for PCB information?</a></h1>
<div class="level1">
<p>
<a href="http://www.luciani.org/geda/pcb/faq-pcb-footprint.html" class="urlextern" title="http://www.luciani.org/geda/pcb/faq-pcb-footprint.html" rel="nofollow">http://www.luciani.org/geda/pcb/faq-pcb-footprint.html</a><br/>
<a href="http://pcb.sourceforge.net/faq.html" class="urlextern" title="http://pcb.sourceforge.net/faq.html" rel="nofollow">http://pcb.sourceforge.net/faq.html</a><br/>
<a href="http://pcb.sourceforge.net/pcb-20060422/pcb.html#Top" class="urlextern" title="http://pcb.sourceforge.net/pcb-20060422/pcb.html#Top" rel="nofollow">http://pcb.sourceforge.net/pcb-20060422/pcb.html#Top</a>
</p>
<p>
You can get fast responses from the geda-user email list. If you havenâ??t found an answer to your question about PCB on this page, or in the other documentation, then post to the list! Note that you must subscribe to the geda-user e-mail list before you can post to the list. The gEDA e-mail lists, and their archives, are at: <a href="http://geda.seul.org/mailinglist/index.html" class="urlextern" title="http://geda.seul.org/mailinglist/index.html" rel="nofollow">http://geda.seul.org/mailinglist/index.html</a>
</p>
</div>
<!-- SECTION [32495-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_pcb_ug.html
Index: geda_pcb_ug.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:pcb_ug</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:pcb_ug?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:pcb_ug?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:pcb_ug?do=export_raw" />
<meta name="robots" content="noindex,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_scg.html
Index: geda_scg.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:scg</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:scg?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:scg?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:scg?do=export_raw" />
<meta name="date" content="2006-08-21T21:15:35-0400" />
<meta name="robots" content="noindex,nofollow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_gaf_symbol_creation_document" class="toc">gEDA/gaf Symbol Creation Document</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#component_symbol_creation" class="toc">Component symbol creation</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#requirements" class="toc">Requirements</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#style" class="toc">Style</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#text" class="toc">Text</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#attributes" class="toc">Attributes</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#graphics" class="toc">Graphics</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#pins" class="toc">Pins</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#electrical" class="toc">Electrical</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#footprint_naming_conventions" class="toc">Footprint naming conventions</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#notes" class="toc">Notes</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#integrated_circuit_packages" class="toc">Integrated circuit packages</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#integrated_circuit_smt_packages" class="toc">Integrated circuit SMT packages</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#basic_semiconductors" class="toc">Basic semiconductors</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#basic_smt_semiconductors" class="toc">Basic SMT semiconductors</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#passive_components" class="toc">Passive components</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#passive_smt_components" class="toc">Passive SMT components</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#hints_and_tips" class="toc">Hints and Tips</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#example" class="toc">Example</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#document_revision_history" class="toc">Document Revision History</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_gaf_symbol_creation_document" id="geda_gaf_symbol_creation_document">gEDA/gaf Symbol Creation Document</a></h1>
<div class="level1">
<p>
by: Ales V. Hvezda / July 6th, 2004
</p>
<p>
The latest version of this document may be found at: <a href="http://www.someplace.come/some-page.html" class="urlextern" title="http://www.someplace.come/some-page.html" rel="nofollow">http://www.someplace.come/some-page.html</a>
</p>
<p>
This document is released under the <a href="geda_gfdl.html" class="wikilink1" title="geda:gfdl">GNU Free Documentation License (GFDL)</a>.
</p>
</div>
<!-- SECTION [1-270] -->
<h2><a name="overview" id="overview">Overview</a></h2>
<div class="level2">
<p>
This document describes the creation of component symbols, including style conventions, and hints/tips and things to look out for when drawing symbols for the gEDA/gaf system.
</p>
</div>
<!-- SECTION [271-468] -->
<h2><a name="component_symbol_creation" id="component_symbol_creation">Component symbol creation</a></h2>
<div class="level2">
<p>
Component symbols (from here on known as “symbols”) are drawn using gschem just like drawing a schematic sheet. Here are the steps in a symbol in the gEDA/gaf system:<br/>
1. Run gschem and find a blank page or run: gschem filename-1.sym<br/>
2. Draw the symbol (see the style guide below for some conventions).<br/>
3. Translate the symbol to the origin using Edit/Symbol Translate...<br/>
</p>
<ul>
<li class="level1"><div class="li"> Zoom in at least one step.</div>
</li>
<li class="level1"><div class="li"> Make sure the snap is ON (this is critical).</div>
</li>
<li class="level1"><div class="li"> Make sure grid snap size is set to 100 (this is critical).</div>
</li>
<li class="level1"><div class="li"> Select “Symbol Translate...” or the press equivalent hotkey.</div>
</li>
<li class="level1"><div class="li"> Enter 0 into the entry field and press OK.<br/>
</div>
</li>
</ul>
<p>
Translating the symbol to the origin is a required step. To translate a symbol elsewhere, enter a offset (in mils) which is a even multiple of 100. Make sure all pins are snapped to a 100 mil grid point.
</p>
<p>
4. Save the symbol using Save or SaveAs... Here are some symbol naming conventions:<br/>
</p>
<ul>
<li class="level1"><div class="li"> Symbols are named: symbolname-#.sym</div>
</li>
<li class="level1"><div class="li"> Symbols end with a .sym extension.</div>
</li>
<li class="level1"><div class="li"> Symbols have a -# where # is a number. Typically # is 1 but if there are multiple symbols for a device then this number simply increments.</div>
</li>
<li class="level1"><div class="li"> Symbol names are typically lowercase but letters which are part of a part number are uppercase.</div>
</li>
<li class="level1"><div class="li"> The above case rule can be broken if the filename looks incorrect or wrong.</div>
</li>
</ul>
<p>
5. Place the symbol in one of the directories specified by the componentlibrary keyword in the system-gafrc file. Once this is done, the symbol should be visible immediately and can be selected and placed with the “Add/Select Component...” menu item.
</p>
</div>
<!-- SECTION [469-2088] -->
<h2><a name="requirements" id="requirements">Requirements</a></h2>
<div class="level2">
<p>
This section describes the various requirements which must be met in order to create a valid symbol which will display and netlist in the gEDA/gaf system. Most of the requirements center around having certain attributes attached or inside the symbol.<br/>
Running gsymcheck will check that all of these requirements are met. gsymcheck will output fatal errors which are quite serious and must be corrected. gsymcheck will also output warnings on things which should be fixed but are not fatal.<br/>
For more information on the attributes presented here, please see the Master Attribute Document.
</p>
<ul>
<li class="level1"><div class="li"> device=DEVICENAME should be placed somewhere in the symbol and made invisible. device= is the device name and is required. Typically the devicename is in all caps (capital letters). This attribute should not be used as a label. Use a separate text object for the label. If the object is a graphic then device= should be set to none (device=none). It is no longer required to attach this attribute anything; just having it exist as device=DEVICENAME is good enough.</div>
</li>
<li class="level1"><div class="li"> graphical=1 should exist somewhere in a symbol which is purely graphical (such as a title block or decon symbol). Symbols which have this attribute have no electrical or circuit significance. Don’t forget to set device=none.</div>
</li>
<li class="level1"><div class="li"> description=text should exist somewhere in the symbol. This attribute provides an one line description of the symbol.</div>
</li>
<li class="level1"><div class="li"> All pins should have a pair of attributes attached to them: pinseq=# and pinnumber=#. The first attribute, pinseq=# is just a sequence number and increments sequentially starting at 1. The second attribute pinnumber=# is the number of the pin. When a symbol is netlisted, the pin numbers are output in order of pin sequence. The pin number can be alphanumeric (i.e. like E or C).</div>
</li>
<li class="level1"><div class="li"> All pins should also have pinlabel=value attached to them. This attribute is the name or label of the pin (vs the pin number). This attribute is also used when a symbol is used in a hierarchical schematic. Please make this attribute green (instead of the default attribute yellow).</div>
</li>
<li class="level1"><div class="li"> All pins should also have pintype=value attached to them. This attribute describes the kind of a pin. Possible values are: in, out, io, oc, oe, pas, tp, tri, clk, pwr. Please see the Master Attribute Document for more info.</div>
</li>
<li class="level1"><div class="li"> If a component has multiple slots in a package (such as a 7400 (NAND) which has 4 NANDs per package) then you need a numslots=# attribute. The # is the number of slots the device has. numslots= should be exist somewhere in the symbol and made invisible. Additional slot related required attributes are described below.</div>
</li>
<li class="level1"><div class="li"> If a component has multiple slots in a physical package then you also need to include a slotdef=#:#,#,#... for every slot. The first # corresponds to the slot number. If a device has 4 slots then there should be slotdef=1:..., slotdef=2:..., slotdef=3:..., and slotdef=4:..., attributes existing somewhere in the symbol and made invisible. The subsequent # have a one-to-one correspondence to pinseq=# attributes and specify what corresponding pinnumber=# should be when that slot is set. See The attached 7400-1.sym as an example of how this should all work.</div>
</li>
<li class="level1"><div class="li"> It is recommended that all symbols which have slots have a slot=1 attribute inside the symbol.</div>
</li>
<li class="level1"><div class="li"> footprint=PACKAGENAME should exist somewhere in the symbol which might be used with the PCB netlister. PACKAGENAME is the PCB footprint or package type like DIP14 or DIP40. Please see the Footprint naming conventions chapter for further detail. See also the PCB documentation and gnetlist/docs/README.pcb for more info on this attribute.</div>
</li>
<li class="level1"><div class="li"> You should put a refdes=U? attribute inside the symbol. Make only the value visible and it will be promoted (attached to the outside of the symbol (so it can be edited) when the symbol is placed in a schematic.</div>
</li>
<li class="level1"><div class="li"> The label= attribute should not be attached anywhere in the symbol. It is obsolete.</div>
</li>
<li class="level1"><div class="li"> The name= attribute should not be attached anywhere in the symbol.</div>
</li>
<li class="level1"><div class="li"> The netname= attribute should not be attached anywhere in the symbol. It is only used in schematics.</div>
</li>
</ul>
</div>
<!-- SECTION [2089-6229] -->
<h2><a name="style" id="style">Style</a></h2>
<div class="level2">
<p>
This section describes the style in which is used in the standard gEDA/gaf symbol library.
</p>
</div>
<!-- SECTION [6230-6339] -->
<h3><a name="text" id="text">Text</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> All Text labels should all be 10 pt in size.</div>
</li>
<li class="level1"><div class="li"> Text (labels not attributes) should be color number 9 (text | green).</div>
</li>
</ul>
</div>
<!-- SECTION [6340-6478] -->
<h3><a name="attributes" id="attributes">Attributes</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Pin numbers (which are attributes) should all be 8 pt in size.</div>
</li>
<li class="level1"><div class="li"> Attached attributes should be yellow. The color is set automatically to yellow if the text item is attached.</div>
</li>
<li class="level1"><div class="li"> The only exception to this is pinlabel= attributes, those should be color number 9 (text | green). If every text item within a symbol is yellow, the symbol looks too yellow.</div>
</li>
<li class="level1"><div class="li"> Attributes can be attached to some part of the symbol. Toplevel attributes (like the device= or net= attributes) used to be required to be attached to something to be attributes, but now they just have to exist in the symbol file as name=value.</div>
</li>
<li class="level1"><div class="li"> Expanding a bit on the last sentence, as long as the text item has the format name=value, it is considered an attribute. Attributes inside a symbol do not have to be attached to anything. In order to see hidden attributes in gschem select Edit/Show/Hide Inv Text.</div>
</li>
<li class="level1"><div class="li"> There is a symbol content versioning system in libgeda which is based on the symversion= attribute. Please see the Master Attribute Document for more information on using this versioning scheme.</div>
</li>
</ul>
</div>
<!-- SECTION [6479-7575] -->
<h3><a name="graphics" id="graphics">Graphics</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Lines, boxes, arcs, and any other graphics should be color number 3 (graphic | green).</div>
</li>
<li class="level1"><div class="li"> Polarity bubbles should be color number 6 (logic bubble | cyan)</div>
</li>
<li class="level1"><div class="li"> If you are unsure on how to make a new symbol look or how big to make a new symbol, look at the existing symbols to get a feel for the appropriate appearance and size.</div>
</li>
</ul>
</div>
<!-- SECTION [7576-7926] -->
<h3><a name="pins" id="pins">Pins</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Pins should all be 300 mils (3 grid spaces) long.</div>
</li>
<li class="level1"><div class="li"> For pins which are next to a logic bubble, make the pins 200 mils (2 grid spaces) long and then make the logic bubble 100 mils in diameter. In order to draw a 100 mil diameter circle, you will need to change the snap spacing to 50.</div>
</li>
<li class="level1"><div class="li"> A pin has two ends: one end has a red endpoint and one end that does not. The red endpoint is where nets can be connected. You can either rotate the pin so that this active end is in the right place or manually edit the symbol file changing the “whichend” parameter on the pin object. See the File Format document for more info.</div>
</li>
<li class="level1"><div class="li"> Be that all endpoints of pins which are meant to be connected to are on the 100 mil grid. The endpoint which is not active can be off the grid if necessary.</div>
</li>
<li class="level1"><div class="li"> Pins should be color number 1 (pins | white).</div>
</li>
<li class="level1"><div class="li"> Leave 400 mils (4 grid spaces) between (vertically) pins, unless you are drawing a special symbol, then just try to make it look good.</div>
</li>
<li class="level1"><div class="li"> Pin number attributes should be 50 mils above (or below; which ever makes the most sense) the pin which they are attached to.</div>
</li>
<li class="level1"><div class="li"> Input pins belong on the left and output pins belong on the right of the symbol.</div>
</li>
<li class="level1"><div class="li"> Please do not mix inputs and outputs on the same side of the symbol, unless absolutely necessary.</div>
</li>
<li class="level1"><div class="li"> You can have pins on the top or bottom of a symbol.</div>
</li>
<li class="level1"><div class="li"> The order for rows of pins (buses) should be LSB (least significant bit) to MSB (most significant bit). When drawing pins which are part of a bus, make sure the LSB of the bus is at the top (or for pins on top/bottom of a symbol, left of the rest of the other pins). Look at 74/74181-1.sym for a correct example of this order (A0 on top through A3 and B0 on top through B3). Violating this rule will make connecting buses much more diffcult.</div>
</li>
<li class="level1"><div class="li"> When placing pins on logic gates, be sure to place the smallest pin numbers toward the top (or left) and then increment going down (or across).</div>
</li>
</ul>
</div>
<!-- SECTION [7927-9882] -->
<h3><a name="electrical" id="electrical">Electrical</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Do not draw power and ground pins. That information will be conveyed using attributes (see the netattrib document).</div>
</li>
<li class="level1"><div class="li"> The above rule can be broken if necessary, but keep in mind most of the standard library does not have power pins showing.</div>
</li>
<li class="level1"><div class="li"> Keep in mind, symbols are supposed to be symbolic, they do not represent the physical package that the device comes in.</div>
</li>
<li class="level1"><div class="li"> There is some disagreement on above, so this is okay too: Arrange the pins on a symbol logically so that they promote an uncluttered schematic. Note that this is frequently not the same pin arrangement as the physical device.</div>
</li>
</ul>
</div>
<!-- SECTION [9883-10505] -->
<h2><a name="footprint_naming_conventions" id="footprint_naming_conventions">Footprint naming conventions</a></h2>
<div class="level2">
<p>
This section describes the conventions for naming of footprints used in gEDA/gaf.<br/>
The purpose of the naming convention is to establish a standard to maintain the same naming convention through the different phases of the CAD chain. This helps in ensuring that the collaborative effort of gEDA/gaf is not lost.
</p>
</div>
<!-- SECTION [10506-10859] -->
<h3><a name="notes" id="notes">Notes</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Unless otherwise noted, numerical pin names will be used, starting from 1.</div>
</li>
<li class="level1"><div class="li"> n is for the pin count.</div>
</li>
<li class="level1"><div class="li"> m is for the pin spacing in mils.</div>
</li>
<li class="level1"><div class="li"> x is for the x dimension of the package (excluding pins). In particular this is used for the QFP package family.</div>
</li>
<li class="level1"><div class="li"> SMT means surface mount, other components are through-hole.</div>
</li>
</ul>
</div>
<!-- SECTION [10860-11202] -->
<h3><a name="integrated_circuit_packages" id="integrated_circuit_packages">Integrated circuit packages</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Dual in line packages with up to 22 100 mil spaced pins and 300 mil row spacing are called DIPn.</div>
</li>
<li class="level1"><div class="li"> Dual in line packages with 24 or more 100 mil spaced pins and 300 mil row spacing are called DIPnN.</div>
</li>
<li class="level1"><div class="li"> Dual in line packages with 100 mil spaced pins and 400 mil row spacing are called DIPnH.</div>
</li>
<li class="level1"><div class="li"> Dual in line packages with 24 or more 100 mil spaced pins and 600 mil row spacing are called DIPn.</div>
</li>
<li class="level1"><div class="li"> Shrink dual in line packages with up to 24 70 mil spaced pins and 300 mil row spacing are called SDIPn.</div>
</li>
<li class="level1"><div class="li"> Shrink dual in line packages with more than 24 70 mil spaced pins and 400 mil row spacing are called SDIPn.</div>
</li>
<li class="level1"><div class="li"> Single in line packages with 100 mil spaced pins are called SIPnN. See also JUMPER, below.</div>
</li>
<li class="level1"><div class="li"> Zig-zag in-line package are called ZIPn.</div>
</li>
<li class="level1"><div class="li"> Plastic leadless chip carrier with pin socket are called PLCCnX.</div>
</li>
</ul>
</div>
<!-- SECTION [11203-12071] -->
<h3><a name="integrated_circuit_smt_packages" id="integrated_circuit_smt_packages">Integrated circuit SMT packages</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Small outline SMT packages with up to 16 50 mil spaced pins and 150 mil total width are called SOn.</div>
</li>
<li class="level1"><div class="li"> Small outline SMT packages with more than 16 50 mil spaced pins and 150 mil total width are called SOnN.</div>
</li>
<li class="level1"><div class="li"> Small outline SMT packages with 50 mil spaced pins and 200 mil total width are called SOnM.</div>
</li>
<li class="level1"><div class="li"> Small outline SMT packages with up to 20 50 mil spaced pins and 300 mil total width are called SOnW.</div>
</li>
<li class="level1"><div class="li"> Small outline SMT packages with more than 20 50 mil spaced pins and 300 mil total width are called SOn.</div>
</li>
<li class="level1"><div class="li"> Small outline SMT packages with 44 or more 50 mil spaced pins and 525 mil total width are called SOn.</div>
</li>
<li class="level1"><div class="li"> Metric shrink small outline SMT packages with 0.65 mm spaced pins and 323 mil total width are called MSSOPn. NOTE: To be confirmed.</div>
</li>
<li class="level1"><div class="li"> Metric shrink small outline SMT packages with up to 44 0.65 mm spaced pins and 420 mil total width are called MSSOPnW.</div>
</li>
<li class="level1"><div class="li"> Metric shrink small outline SMT packages with over 44 0.65 mm spaced pins and 545 mil total width are called MSSOPnW.</div>
</li>
<li class="level1"><div class="li"> Shrink small outline SMT packages with 25 mil spaced pins and 420 mil total width are called SSOPnW.</div>
</li>
<li class="level1"><div class="li"> Quarter size small outline SMT packages with 25 mil spaced pins and 244 mil total width are called SSOPn.</div>
</li>
<li class="level1"><div class="li"> Thin small outline SMT packages with 21.65 mil spaced pins and 535 mil total width are called TSOPn.</div>
</li>
<li class="level1"><div class="li"> Thin small outline SMT packages with 20 mil spaced pins and 795 mil total width are called TSOPnA.</div>
</li>
<li class="level1"><div class="li"> Thin small outline SMT packages with 20 mil spaced pins and 559 mil total width are called TSOPnB.</div>
</li>
<li class="level1"><div class="li"> Thin shrink small outline SMT packages with up to 28 26 mil spaced pins and 260 mil total width are called TSSOPn.</div>
</li>
<li class="level1"><div class="li"> Thin shrink small outline SMT packages with over 28 20 mil spaced pins and 319 mil total width are called TSSOPn.</div>
</li>
<li class="level1"><div class="li"> Ultra Super Mini SMT packages with up to 16 0.5 mm spaced pins are called USn.</div>
</li>
<li class="level1"><div class="li"> Plastic leadless chip carrier SMT are called PLCCn.</div>
</li>
<li class="level1"><div class="li"> Square quad-side at pack SMT are called QFPn x.</div>
</li>
<li class="level1"><div class="li"> Rectangular quad-side at pack SMT are called QFPn R.</div>
</li>
<li class="level1"><div class="li"> Square low profile quad-side at pack SMT are called LQFPn x.</div>
</li>
<li class="level1"><div class="li"> Square thin quad-side at pack SMT are called TQFPn x.</div>
</li>
<li class="level1"><div class="li"> Square Quad-side at no-lead SMT without exposed paddle (back side contact) are called QFNn x. Pin count is n and package size is x mm.</div>
</li>
<li class="level1"><div class="li"> Square Quad-side at no-lead SMT with exposed paddle (back side contact) are called QFNn x EP. Pin count is n and package size is x mm.</div>
</li>
<li class="level1"><div class="li"> Thin profile square Quad-side at no-lead SMT without exposed paddle (back side contact) are called TQFNn x. Pin count is n and package size is x mm.</div>
</li>
<li class="level1"><div class="li"> Thin profile square Quad-side at no-lead SMT with exposed paddle (back side contact) are called TQFNn x EP. Pin count is n and package size is x mm.</div>
</li>
<li class="level1"><div class="li"> Dual in line style crystal oscillators are OSC8 and OSC14.</div>
</li>
<li class="level1"><div class="li"> 5 pin SOT SMT packages are SOT25 and SOT325.</div>
</li>
<li class="level1"><div class="li"> 6 pin SOT SMT packages are SOT26 and SOT326.</div>
</li>
</ul>
</div>
<!-- SECTION [12072-15002] -->
<h3><a name="basic_semiconductors" id="basic_semiconductors">Basic semiconductors</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Axial diodes are called ALFm. Pin 1 is the cathode.</div>
</li>
<li class="level1"><div class="li"> Conventional through hole LED is LED3 and LED5 for 3 and 5 mm respectively. Pin 1 is plus. NOTE: Should probably be changed to be in line with diode convention.</div>
</li>
<li class="level1"><div class="li"> TO transistors are TO5, TO92, TO126, TO220 etc. Suxes may apply, e.g. TO126W is for wide, TO126S is for standing, TO126SW is for standing, wide.</div>
</li>
</ul>
</div>
<!-- SECTION [15003-15405] -->
<h3><a name="basic_smt_semiconductors" id="basic_smt_semiconductors">Basic SMT semiconductors</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> SOD diode SMT packages use their standard package name, e.g. SOD80, SOD87, SOD106A, SOD110. There are also SOD123, SOD323 with narrow pads.</div>
</li>
<li class="level1"><div class="li"> SOT transistor SMT packages use their standard package name, e.g. SOT23, SOT323. There is also an SC90.</div>
</li>
<li class="level1"><div class="li"> SOT transistor SMT packages with numbering as for diodes (pin 1 is cathode, pin 2 anode) are SOT23D, SOT323D.</div>
</li>
<li class="level1"><div class="li"> 4 pin SOT SMT packages are SOT89, SOT143, SOT223.</div>
</li>
</ul>
</div>
<!-- SECTION [15406-15861] -->
<h3><a name="passive_components" id="passive_components">Passive components</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Axial non-polar components (typically resistor, capacitor) are called ACYm.</div>
</li>
<li class="level1"><div class="li"> Bottom lead (radial) non-polar circular component (typically capacitor) is RCYm.</div>
</li>
<li class="level1"><div class="li"> Bottom lead non-polar rectangular component (typically capacitor) is BREm.</div>
</li>
<li class="level1"><div class="li"> A standard crystal is HC49, or other HC designations as required.</div>
</li>
<li class="level1"><div class="li"> Single row 100 mil pin spacing jumpers are JUMPERn. The main difference compared to single in line package is the hole size.</div>
</li>
<li class="level1"><div class="li"> Dual row 100 mil spacing headers with DIP pin numbering are HEADERn 1. Note that n is an even number.</div>
</li>
<li class="level1"><div class="li"> Dual row 100 mil spacing headers with ribbon cable numbering are HEADERn 2. Note that n is an even number.</div>
</li>
<li class="level1"><div class="li"> Angled full header connectors with latches are DIN41651 n.</div>
</li>
<li class="level1"><div class="li"> Standing full header connectors with latches are DIN41651 nS.</div>
</li>
<li class="level1"><div class="li"> DSUB connectors female are DBnF.</div>
</li>
<li class="level1"><div class="li"> DSUB connectors male are DBnM.</div>
</li>
<li class="level1"><div class="li"> Female DIN card-to-card connectors are DIN41612CnF. Add S suffix for standing.</div>
</li>
<li class="level1"><div class="li"> Male DIN card-to-card connectors are DIN41612CnM. Add S suffix for standing.</div>
</li>
<li class="level1"><div class="li"> AMP modular RJ connectors with screen are RJ11, RJ12 and RJ45.</div>
</li>
</ul>
</div>
<!-- SECTION [15862-16983] -->
<h3><a name="passive_smt_components" id="passive_smt_components">Passive SMT components</a></h3>
<div class="level3">
<ul>
<li class="level1"><div class="li"> Standard SMT resistors, inductors, capacitors etc are 0201, 0402, 0603, 0805, 1206, 1210, 1806, 1812, 1825, 2020, 2706.</div>
</li>
<li class="level1"><div class="li"> Tantalum SMT capacitors are EIA3216, EIA3528, EIA6032, and EIA7343. Pin 1 is plus.</div>
</li>
<li class="level1"><div class="li"> SMT electrolytics are designated by can diameter in 1/10 mm: SME33, SME43, SME53, SME66, SME84, SME104.</div>
</li>
</ul>
</div>
<!-- SECTION [16984-17336] -->
<h2><a name="hints_and_tips" id="hints_and_tips">Hints and Tips</a></h2>
<div class="level2">
<p>
This section describes some hints and tips which will make your symbol creation experience easier.<br/>
</p>
<ul>
<li class="level1"><div class="li"> Avoid drawing things off of the grid. If you do, you cannot move the object(s) using the move command (if the grid is on) since the object will be snapped to the grid. [This was an old bug, which I think has been fixed, but avoid doing this anyway]. Use the symbol translate command instead (or move the object with grid snap off)</div>
</li>
<li class="level1"><div class="li"> If you need a finer grid then use Options/Snap Grid Spacing... to set a finer grid snap spacing. Just remember to set this back to 100 once you are ready to translate the symbol to the origin.</div>
</li>
<li class="level1"><div class="li"> If you want to translate a symbol from the origin to elsewhere, then use the “Symbol translate” command and enter a non zero number. Make sure this number is a multiple of 100 (ie 1000, or 1100).</div>
</li>
<li class="level1"><div class="li"> Pins MUST be snapped on the 100 spaced grid (at least the end which will have nets connected to it).</div>
</li>
<li class="level1"><div class="li"> Pins MUST be snapped on the 100 spaced grid (at least the end which will have nets connected to it). Yes this is line a duplicate. I can’t stress this point enough.</div>
</li>
<li class="level1"><div class="li"> Remember that pins are special objects; if you want to add a pin, make sure it is a pin and not a line or net. Use the Add/Pin command to place a pin.</div>
</li>
<li class="level1"><div class="li"> Don’t include nets or buses inside symbols. That is not supported and doesn’t make much sense anyway.</div>
</li>
</ul>
</div>
<!-- SECTION [17337-18732] -->
<h2><a name="example" id="example">Example</a></h2>
<div class="level2">
<p>
This section provides a simple example which tries to follow all of the above rules. This symbol is of a 7400 (NAND gate).<br/>
</p>
<p>
<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">v 20020825
L 300 200 300 800 3 0 0 0 -1 -1
T 300 0 9 8 1 0 0 0
7400
L 300 800 700 800 3 0 0 0 -1 -1
T 500 900 5 10 0 0 0 0
device=7400
T 500 1100 5 10 0 0 0 0
slot=1
T 500 1300 5 10 0 0 0 0
numslots=4
T 500 1500 5 10 0 0 0 0
slotdef=1:1,2,3
T 500 1700 5 10 0 0 0 0
slotdef=2:4,5,6
T 500 1900 5 10 0 0 0 0
slotdef=3:9,10,8
T 500 2100 5 10 0 0 0 0
slotdef=4:12,13,11
L 300 200 700 200 3 0 0 0 -1 -1
A 700 500 300 270 180 3 0 0 0 -1 -1
V 1050 500 50 6 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
P 1100 500 1300 500 1
{
T 1100 550 5 8 1 1 0 0
pinnumber=3
T 1100 450 5 8 0 1 0 2
pinseq=3
T 950 500 9 8 0 1 0 6
pinlabel=Y
T 950 500 5 8 0 1 0 8
pintype=out
}
P 300 300 0 300 1
{
T 200 350 5 8 1 1 0 6
pinnumber=2
T 200 250 5 8 0 1 0 8
pinseq=2
T 350 300 9 8 0 1 0 0
pinlabel=B
T 350 300 5 8 0 1 0 2
pintype=in
}
P 300 700 0 700 1
{
T 200 750 5 8 1 1 0 6
pinnumber=1
T 200 650 5 8 0 1 0 8
pinseq=1
T 350 700 9 8 0 1 0 0
pinlabel=A
T 350 700 5 8 0 1 0 2
pintype=in
}
T 300 900 8 10 1 1 0 0
refdes=U?
T 500 2250 5 10 0 0 0 0
footprint=DIP14
T 500 2450 5 10 0 0 0 0
description=4 NAND gates with 2 inputs
T 500 2650 5 10 0 0 0 0
documentation=http://www-s.ti.com/sc/ds/sn74ls00.pdf
T 500 2850 5 10 0 0 0 0
net=Vcc:14
T 500 3050 5 10 0 0 0 0
net=GND:7</font></pre>
</p>
<p>
This example produces the following (using gschem):
</p>
<p>
NOTE: This version of Dokuwiki does not support image file references. The Dokuwiki software will be updated shortly.
</p>
<p>
This is the same symbol with all the hidden text visible (via Edit/Show/Hide Inv Text):
</p>
<p>
NOTE: This version of Dokuwiki does not support image file references. The Dokuwiki software will be updated shortly.
</p>
</div>
<!-- SECTION [18733-20500] -->
<h2><a name="document_revision_history" id="document_revision_history">Document Revision History</a></h2>
<div class="level2">
<table class="inline">
<tr>
<td> September 14th, 2002</td><td>Created symbol.tex from symbols.html </td>
</tr>
<tr>
<td> October 31st, 2002</td><td>Fixed bad example symbol </td>
</tr>
<tr>
<td> February 11th, 2003</td><td>Footprint naming conventions added </td>
</tr>
<tr>
<td> September 27th, 2003</td><td>Applied Dan McMahill’s QFP and QFN patch </td>
</tr>
<tr>
<td> July 6th, 2004</td><td>Added a bunch more details/hints to the pin section </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [20501-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_sdb_howto.html
Index: geda_sdb_howto.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:sdb_howto</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:sdb_howto?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:sdb_howto?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:sdb_howto?do=export_raw" />
<meta name="date" content="2006-04-23T05:37:23-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#spice_on_geda_howto" class="toc">SPICE on gEDA HOWTO</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#introduction" class="toc">Introduction</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#spice-sdb_netlister_installation_and_configuration" class="toc">Spice-sdb netlister installation and configuration</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#design_simulation_flow_summary" class="toc">Design/simulation flow summary</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#preliminary_notes_about_symbols_and_spice_model_files" class="toc">Preliminary notes about symbols and SPICE model files</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#symbol_creation_for_spice_netlisting" class="toc">Symbol creation for SPICE netlisting.</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#spice_file_configuration" class="toc">SPICE file configuration</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#schematic_capture" class="toc">Schematic capture</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#gschem_attributes_for_spice_netlisting" class="toc">Gschem attributes for spice netlisting</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#handling_hierarchical_models" class="toc">Handling hierarchical models</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#spice_netlist_generation" class="toc">SPICE netlist generation</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#creating_the_netlist" class="toc">Creating the netlist</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#common_netlisting_problems" class="toc">Common netlisting problems</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#spice_simulation" class="toc">SPICE simulation</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#ltspice" class="toc">LTSpice</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#ngspice_and_tclspice" class="toc">Ngspice and tclspice</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#appendix" class="toc">Appendix</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#component_attribute_summary" class="toc">Component attribute summary</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#valid_type_values" class="toc">Valid "type" values</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#document_history" class="toc">Document History</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="spice_on_geda_howto" id="spice_on_geda_howto">SPICE on gEDA HOWTO</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-34] -->
<h2><a name="introduction" id="introduction">Introduction</a></h2>
<div class="level2">
<p>
The purpose of this document is to explain how to use the gEDA tools (running on Linux) to perform SPICE simulations. In particular, this HOWTO documents the usage of spice-sdb, which is an advanced backend for the gEDA netlister (gnetlist) used to create SPICE netlists. This HOWTO also provides advice about using LTSpice and/or ngspice to simulate a circuit netlisted with spice-sdb. I assume that you are already familiar with electronic design, the mechanics of schematic capture using EDA tools, and SPICE simulation in general. I also assume that you are reasonably familiar with the Linux operating system and its development environment.
</p>
</div>
<!-- SECTION [35-708] -->
<h3><a name="overview" id="overview">Overview</a></h3>
<div class="level3">
<p>
From the top level, SPICE simulation in gEDA proceeds via the following steps:
</p>
<ol>
<li class="level1"><div class="li"> Creation and gathering of schematic symbols and SPICE model files. Oftentimes, the SPICE model files are obtained from the component vendor.</div>
</li>
<li class="level1"><div class="li"> Schematic capture using symbols and SPICE models created in step 1.</div>
</li>
<li class="level1"><div class="li"> Netlist generation from the schematic created in step 2.</div>
</li>
<li class="level1"><div class="li"> SPICE simulation of the circuit described by the netlist created in step 3.</div>
</li>
</ol>
<p>
To create a SPICE netlist, the netlister (gnetlist) iterates through the entire schematic and looks at several parts of each component’s symbol in order to create a blob of SPICE code. In general, each component can generate one or more lines of SPICE code. Component information needed by the netlister is held in two places:
</p>
<ol>
<li class="level1"><div class="li"> The symbol itself, in the “device” attribute, which is attached when the symbol is created, and is typically accessed through the symbol editor.</div>
</li>
<li class="level1"><div class="li"> In attributes manually attached to the component during schematic capture using gschem.</div>
</li>
</ol>
<p>
Since there are two places the netlister looks for information, you must make sure that the required information is available in both places.
</p>
</div>
<!-- SECTION [709-1877] -->
<h3><a name="spice-sdb_netlister_installation_and_configuration" id="spice-sdb_netlister_installation_and_configuration">Spice-sdb netlister installation and configuration</a></h3>
<div class="level3">
<p>
This document was originally written around gEDA/gaf 20030223, and the SPICE netlister spice-SDB. Starting with gEDA/gaf 20030525, my netlister was incorporated into the main gEDA distribution, and renamed spice-sdb (lower case sdb). <strong>For smoothest operation, you are best off just downloading and installing the latest version of gEDA.</strong> However, if you have a gEDA version predating 20030525, and you want to hack, you can download and install spice-SDB using the instructions provided on <a href="http://www.brorson.com/gEDA/SPICE/SPICEonLinux.html" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/SPICEonLinux.html" rel="nofollow">http://www.brorson.com/gEDA/SPICE/SPICEonLinux.html</a>. In any event, it’s a good idea to make sure that the file gnet-spice-sdb.scm is present in your scheme directory (usually <strong><code>${prefix}/geda/share/gEDA/scheme</code></strong>) if you are interested in performing SPICE simulations with gEDA as described in this HOWTO.
</p>
</div>
<!-- SECTION [1878-2744] -->
<h3><a name="design_simulation_flow_summary" id="design_simulation_flow_summary">Design/simulation flow summary</a></h3>
<div class="level3">
<p>
The detailed steps required to create a circuit and simulate it with gEDA look like this:
</p>
<ol>
<li class="level1"><div class="li"> Schematic symbol creation with correct “device” attribute. (Usually, the symbols have already been created with the correct “device” attribute, but if you are having problems, it doesn’t hurt to check them.)</div>
</li>
<li class="level1"><div class="li"> Schematic capture using gschem.</div>
</li>
<li class="level1"><div class="li"> Assignment of SPICE attributes (value, model, file, type, etc.) to components using gschem.</div>
</li>
<li class="level1"><div class="li"> Assignment of <strong><code>refdes</code></strong> using e.g. refdes_renum.</div>
</li>
<li class="level1"><div class="li"> Creation of netlist using “gnetlist -g spice-sdb”.</div>
</li>
<li class="level1"><div class="li"> Check netlist for correctness (manually open and inspect netlist).</div>
</li>
<li class="level1"><div class="li"> Run spice using a simulator such as LTSpice or ngspice.</div>
</li>
<li class="level1"><div class="li"> Plot/analyze results (often plotting/analysis tools are incorporated in the simulator).</div>
</li>
</ol>
<p>
The purpose of this HOWTO is to provide the detailed understanding necessary to successfully navigate this process.
</p>
</div>
<!-- SECTION [2745-3673] -->
<h2><a name="preliminary_notes_about_symbols_and_spice_model_files" id="preliminary_notes_about_symbols_and_spice_model_files">Preliminary notes about symbols and SPICE model files</a></h2>
<div class="level2">
</div>
<!-- SECTION [3674-3739] -->
<h3><a name="symbol_creation_for_spice_netlisting" id="symbol_creation_for_spice_netlisting">Symbol creation for SPICE netlisting.</a></h3>
<div class="level3">
<p>
The SPICE netlister recognizes a particular symbol in two ways:
</p>
<ol>
<li class="level1"><div class="li"> The symbol’s “device” attribute</div>
</li>
<li class="level1"><div class="li"> The symbol’s <strong><code>refdes</code></strong>. Both of these attributes are attached to the symbol when the symbol is created.</div>
</li>
</ol>
<p>
Each symbol has a <strong><code>device</code></strong> attribute attached to it. The <strong><code>device</code></strong> attribute is the first thing the netlister examines when processing the symbol. There are a number of devices which are native to the netlister, meaning that the netlister knows exactly how to deal with these types of devices. Native device types include RESISTOR, CAPACITOR, NPN_TRANSISTOR, etc. The entire list of native devices is present in the <a href="#appendix" title="geda:sdb_howto ↵" class="wikilink1">Appendix</a>.<br/>
The <strong><code>device</code></strong> attribute is hidden during normal use of gschem. Most often, the symbol’s creator has already given the symbol the correct <strong><code>device</code></strong> attribute. However, because the <strong><code>device</code></strong> attribute is hidden from the ordinary user, it can sometimes cause problems with SPICE netlist creation when it is set to an unexpected value. To view the <strong><code>device</code></strong> attribute, go into the symbol editor (select the symbol to edit, and do “Hierarchy” → “down symbol”), and turn on invisible attributes (Edit → show/hide inv text). If the <strong><code>device</code></strong> attribute is incorrect, you may change it by editing the symbol itself using a text editor.<br/>
If a symbol is not native (i.e. the netlister doesn’t recognize it as a built-in type), the netlister relies upon the first letter of the <strong><code>refdes</code></strong> to determine how to process the symbol. The <strong><code>refdes</code></strong> prefix is also built into the symbol when it is created. Example <strong><code>refdes</code></strong> prefixes are R for resistors, C for capacitors, Q for transistors, etc. <strong><code>refdes</code></strong> prefixes correct for SPICE are listed in the <a href="#appendix" title="geda:sdb_howto ↵" class="wikilink1">Appendix</a>. Note that relying upon the <strong><code>refdes</code></strong> to identify the component for SPICE is not foolproof – for example, the netlister cannot distinguish between NPN and PNP transistors based upon the <strong><code>refdes</code></strong>. Therefore, it is always best to use a native “device” in your symbols.
</p>
</div>
<!-- SECTION [3740-5819] -->
<h3><a name="spice_file_configuration" id="spice_file_configuration">SPICE file configuration</a></h3>
<div class="level3">
<p>
Files holding complicated SPICE models or other SPICE code may be incorporated into the final SPICE netlist by including appropriate symbols into the schematic. SPICE model files are usually obtained from component vendors. Dealing with these files is straightforward. However, some issues should be kept in mind when preparing models for use during schematic capture:
</p>
<ul>
<li class="level1"><div class="li"> It is usually prudent to place these files into a dedicated directory distinct from the symbol directories.</div>
</li>
<li class="level1"><div class="li"> Make sure that the SPICE files pin assignments correctly correspond to the pins as defined in the component’s symbol.</div>
</li>
<li class="level1"><div class="li"> Make sure that the last character in a SPICE model file is a carriage return. If no carriage return exists, then the next component listed in the netlist may be placed on the same line as the last line of the SPICE model file.</div>
</li>
</ul>
</div>
<!-- SECTION [5820-6689] -->
<h2><a name="schematic_capture" id="schematic_capture">Schematic capture</a></h2>
<div class="level2">
<p>
Schematic capture is the process by which one uses a special-purpose drawing program to draw a schematic diagram of the circuit under design. In the gEDA environment, the schematic capture program is called “gschem”. I assume you already know how to use gschem. For the purposes of creating SPICE netlists, you must use gschem to attach attributes to components, and possibly also incorporate other SPICE directives into your netlist. After you are done with schematic capture, you create the SPICE netlist by running gEDA’s netlister “gnetlist” on your design.
</p>
</div>
<!-- SECTION [6690-7282] -->
<h3><a name="gschem_attributes_for_spice_netlisting" id="gschem_attributes_for_spice_netlisting">Gschem attributes for spice netlisting</a></h3>
<div class="level3">
<p>
There are several ways that spice attributes may be associated with a component using gschem. The way you choose to do this depends upon many factors, including the type of component, and the size and format of the SPICE model.
</p>
</div>
<h4><a name="component_attributes_and_meanings" id="component_attributes_and_meanings">Component attributes and meanings</a></h4>
<div class="level4">
<p>
The following attributes are meaningful for SPICE netlisting, and may be attached from within gschem:
</p>
<table class="inline">
<tr>
<td><strong><code>refdes</code></strong></td><td>The reference designator of the component. Valid values depend upon the component type and are given in the appendix.</td>
</tr>
<tr>
<td><strong><code>value</code></strong></td><td>For passives, this is the component value. For actives, this is the type (model no) of the component (e.g. 2N3904, uA741). When a model for an active is instantiated separately from the component itself, the “value” attribute holds the name of the spice model.</td>
</tr>
<tr>
<td><strong><code>model</code></strong></td><td>This holds a one line spice model for the component.</td>
</tr>
<tr>
<td><strong><code>file</code></strong></td><td>This holds the name of a file. Typically, this is a file holding e.g. a SPICE .MODEL, .SUBCKT, or other SPICE code.</td>
</tr>
<tr>
<td><strong><code>model-name</code></strong></td><td>This holds the name of the spice model referred to in a .MODEL or .SUBCKT statement. “model-name” is mainly used to identify the spice model name in the symbol “spice-model-1.sym”. Active components should call out this name in the “device” attribute to associate the component with its particular spice model or subcircuit.</td>
</tr>
<tr>
<td><strong><code>type</code></strong></td><td>This specifies the type of component and is used by spice when interpreting the model parameters. Valid values depend upon the device being modeled.</td>
</tr>
</table>
<br />
</div>
<h4><a name="refdes_conventions" id="refdes_conventions">refdes conventions</a></h4>
<div class="level4">
<p>
As a prerequisite to handling SPICE-related attributes, the SPICE netlister requires that all components must have a refdes attached to them. The refdes may be attached either by hand (which is laborious), or using the program refdes_renum included in the gEDA distribution.<br/>
Note that the first letter of the refdes must correspond to the appropriate letter for spice simulation. The refdes convention is given in the <a href="#appendix" title="geda:sdb_howto ↵" class="wikilink1">Appendix</a>.
</p>
</div>
<h4><a name="passives" id="passives">Passives</a></h4>
<div class="level4">
</div>
<h5><a name="basic_passives" id="basic_passives">Basic passives</a></h5>
<div class="level5">
<p>
The most basic components which one encounters in spice are passive components like resistors and capacitors which have numeric values, but no other modeling attributes. In this case the following attributes must be filled in:
</p>
<table class="inline">
<tr>
<td><strong><code>refdes</code></strong></td><td>The correct <strong><code>refdes</code></strong> for the component.</td>
</tr>
<tr>
<td><strong><code>value</code></strong></td><td>For passives, this is the numeric value of the component (e.g. 100pF). For actives, this attribute may be filled in, but if no model attribute is available elsewhere in the schematic, the value is not used (in SPICE netlisting, anyway).</td>
</tr>
</table>
<br />
<p>
If only a <strong><code>refdes</code></strong> and value attribute are encountered, the netlister will write a single line into the output file.<br/>
Example resistor:
</p>
<pre class="code">refdes = R2
value = 220
SPICE line generated: R2 0 4 220</pre>
<p>
Note that “0” and “4” correspond to the net nodes connected to the component, and are generated automatically by gnetlist.<br/>
Example capacitor:
</p>
<pre class="code">refdes = C22
value = 1UF
SPICE line generated: C22 4 23 1UF</pre>
</div>
<h5><a name="passives_with_additional_attributes" id="passives_with_additional_attributes">Passives with additional attributes</a></h5>
<div class="level5">
<p>
Oftentimes, passive components have additional attributes attached to them for spice simulation. Examples of such attributes are temperature coefficients (for resistors) and initial conditions (for reactive components). These additional components may be incorporated into the SPICE file by simply attaching them to the component’s “model” attribute. Specifically, the required attributes are:
</p>
<table class="inline">
<tr>
<td><strong><code>refdes</code></strong></td><td>Correct component <strong><code>refdes</code></strong>.</td>
</tr>
<tr>
<td><strong><code>value</code></strong></td><td>Numerical component value, as always.</td>
</tr>
<tr>
<td><strong><code>model</code></strong></td><td>One line string holding additional parameters, formatted as a valid SPICE string.</td>
</tr>
</table>
<br />
<p>
This string is placed after the component value in the line generated by gnetlist. Therefore, it is important to format the string placed in the <strong><code>model</code></strong> line to be valid SPICE code. Otherwise, you will risk causing the SPICE simulator to barf.<br/>
Example resistor:
</p>
<pre class="code">refdes = R5
value = 1MEG
model = TC=0.001,0.015
SPICE line generated: R2 0 4 220 TC=0.001,0.015</pre>
</div>
<h4><a name="transistors_and_diodes" id="transistors_and_diodes">Transistors and diodes</a></h4>
<div class="level4">
<p>
Transistors and diodes are generally accompanied by a device-specific model – otherwise, SPICE simulation is pointless. The SPICE model may be either a short, one-line string of parameters, or a multi-line set of SPICE parameters. A typical one-line parameter string is a short list of parameters describing a small-signal diode. Typical multi-line models come from component vendors, who often provide models for their components in a text file. Since there are two broad formats of SPICE information, there are two approaches to incorporating these parameters into the schematic:
</p>
</div>
<h5><a name="one_line_string_of_spice_parameters" id="one_line_string_of_spice_parameters">One line string of SPICE parameters</a></h5>
<div class="level5">
<p>
To incorporate a one line string of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<table class="inline">
<tr>
<td><strong><code>refdes</code></strong></td><td>Correct component refdes.</td>
</tr>
<tr>
<td><strong><code>value</code></strong></td><td>The model number or part number of the component.</td>
</tr>
<tr>
<td><strong><code>model-name</code></strong></td><td>The name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a “value” attribute to the component, this parameter is optional.</td>
</tr>
<tr>
<td><strong><code>model</code></strong></td><td>One line string holding additional parameters. Do not place the model parameters in parentheses – gnetlist will do this for you.</td>
</tr>
</table>
<br />
<p>
Example diode:
</p>
<pre class="code">refdes = D5
model-name = 1N1004
model = IS=0.5UA RS=6 BV=5.20
SPICE lines generated:
D5 2 6 1N1004
MODEL 1N1004 D (IS=0.5UA RS=6 BV=5.20)</pre>
</div>
<h5><a name="spice_model_file" id="spice_model_file">SPICE model file</a></h5>
<div class="level5">
<p>
To incorporate a file-full of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<table class="inline">
<tr>
<td><strong><code>refdes</code></strong></td><td>Correct component refdes.</td>
</tr>
<tr>
<td><strong><code>value</code></strong></td><td>The model number or part number of the component.</td>
</tr>
<tr>
<td><strong><code>model-name</code></strong></td><td>The name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a “value” attribute to the component, this parameter is optional.</td>
</tr>
<tr>
<td><strong><code>file</code></strong></td><td>The file name of the SPICE model which you wish to incorporate into the netlist. This file name may specify either a relative or an absolute path, but it is probably better to use an absolute path to avoid problems if you ever move your schematic directory.</td>
</tr>
</table>
<br />
<p>
Note that you need to make sure that the model name held in your SPICE model file is the same as the <strong><code>value</code></strong> or <strong><code>model-name</code></strong> attributes you attached to the component. It is also a good idea to verify that the pin assignments in the model file correspond to the pin assignments made by the component symbol.
</p>
</div>
<h4><a name="actives_--_integrated_circuits" id="actives_--_integrated_circuits">Actives -- integrated circuits</a></h4>
<div class="level4">
<p>
Integrated circuits are incorporated into the netlist similarly to transistors and diodes. As such, you may incorporate the spice information either as a one-line parameter string, or as a model file.
</p>
</div>
<h5><a name="one_line_string_of_spice_parameters1" id="one_line_string_of_spice_parameters1">One line string of SPICE parameters</a></h5>
<div class="level5">
<p>
To incorporate a one line string of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<table class="inline">
<tr>
<td><strong><code>refdes</code></strong></td><td>Correct component refdes.</td>
</tr>
<tr>
<td><strong><code>value</code></strong></td><td>The model number or part number of the component.</td>
</tr>
<tr>
<td><strong><code>model-name</code></strong></td><td>the name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a “value” attribute to the component, this parameter is optional.</td>
</tr>
<tr>
<td><strong><code>model</code></strong></td><td>One line string holding additional parameters. Do not place the model parameters in parentheses – gnetlist will do this for you.</td>
</tr>
</table>
<br />
</div>
<h5><a name="spice_.model_or_.subckt_file" id="spice_.model_or_.subckt_file">SPICE .MODEL or .SUBCKT file</a></h5>
<div class="level5">
<p>
To incorporate a file-full of SPICE parameters into the netlist, the following attributes must be attached to the component:
</p>
<table class="inline">
<tr>
<td><strong><code>refdes</code></strong></td><td>Correct component refdes. <strong>Note that if the file holds a .MODEL, the refdes should start with U; if the file holds a .SUBCKT, the refdes should start with X.</strong> The netlister checks for the file type and tries to “do the right thing”, but problems can arise if you don’t follow this rule.</td>
</tr>
<tr>
<td><strong><code>value</code></strong></td><td>The model number or part number of the component.</td>
</tr>
<tr>
<td><strong><code>model-name</code></strong></td><td>The name you wish to give the SPICE model. This is usually the model number or part number of the component. If you have already attached a “value” attribute to the component, this parameter is optional.</td>
</tr>
<tr>
<td><strong><code>file</code></strong></td><td>The name of the file holding the SPICE .MODEL or .SUBCKT which you wish to incorporate into the netlist. This file name may specify either a relative or an absolute path, but it is probably better to use an absolute path to avoid problems if you ever move your schematic directory.</td>
</tr>
</table>
<br />
</div>
<h4><a name="independent_sources" id="independent_sources">Independent sources</a></h4>
<div class="level4">
<p>
There are two independent sources: voltage sources and current sources. For incorporation into a SPICE netlist, they both work the same way. To incorporate an independent source into your SPICE netlist, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Place the independent source on your schematic. (Do “Add” → “Component” → “spice” → “<independent source name>.sym”)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: V? or I?</div>
</li>
<li class="level2"><div class="li"> <strong><code>value</code></strong>: A one line string in SPICE format describing the source.</div>
</li>
</ul>
</li>
</ol>
</div>
<h4><a name="dependent_sources" id="dependent_sources">Dependent sources</a></h4>
<div class="level4">
<p>
There are four dependent sources:
</p>
<ul>
<li class="level1"><div class="li"> This section remains TBD.</div>
</li>
</ul>
</div>
<h4><a name="spice_components" id="spice_components">SPICE components</a></h4>
<div class="level4">
</div>
<h5><a name="spice_model_block" id="spice_model_block">Spice model block</a></h5>
<div class="level5">
<p>
In certain situations, you may wish to embed a spice model block directly into your schematic. This is done when you have several devices with a “value” attribute calling out for a spice model. Depending upon whether the spice block is one line or multi-line, you may embed the code in one of two ways:
</p>
<ol>
<li class="level1"><div class="li"> One line SPICE model:</div>
<ol>
<li class="level2"><div class="li"> Place a spice model block on your schematic. (Do “Add” → “Component” → “spice” → “spice-model-1.sym”)</div>
</li>
<li class="level2"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level3"><div class="li"> <strong><code>refdes</code></strong>: a?</div>
</li>
<li class="level3"><div class="li"> <strong><code>model</code></strong>: model name (i.e. the model name used in the components being modeled.)</div>
</li>
<li class="level3"><div class="li"> <strong><code>type</code></strong>: One of the valid spice component types defined in the spice <acronym title="specification">spec</acronym>.</div>
</li>
<li class="level3"><div class="li"> <strong><code>value</code></strong>: The corresponding one-line spice model</div>
</li>
</ul>
</li>
</ol>
</li>
<li class="level1"><div class="li"> Multi-line SPICE model:</div>
<ol>
<li class="level2"><div class="li"> Place a spice model block on your schematic.(Do “Add” → “Component” → “spice” → “spice-model-1.sym”)</div>
</li>
<li class="level2"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level3"><div class="li"> <strong><code>refdes</code></strong>: a?</div>
</li>
<li class="level3"><div class="li"> <strong><code>model-name</code></strong>: model name</div>
</li>
<li class="level3"><div class="li"> <strong><code>file</code></strong>: Name of file holding SPICE model code (i.e. .MODEL or .SUBCKT).</div>
</li>
</ul>
</li>
</ol>
</li>
</ol>
</div>
<h5><a name="include_block" id="include_block">Include block</a></h5>
<div class="level5">
<p>
The include block places a .INCLUDE directive into your netlist.
</p>
<ol>
<li class="level1"><div class="li"> Place a spice model block on your schematic. (Do “Add” → “Component” → “spice” → “spice-include-1.sym”)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: a?</div>
</li>
<li class="level2"><div class="li"> <strong><code>file</code></strong>: The name of the file to include.</div>
</li>
</ul>
</li>
</ol>
</div>
<h5><a name="spice_directive_block" id="spice_directive_block">SPICE directive block</a></h5>
<div class="level5">
<p>
Placing a SPICE directive block into your schematic creates an arbitrary block of SPICE code in the netlist. The directive may be either statements held in a file, or a one-line string held in the “model” attribute. Examples of situations where this is useful include:
</p>
<ul>
<li class="level1"><div class="li"> .TEMP statement</div>
</li>
<li class="level1"><div class="li"> .IC statement</div>
</li>
<li class="level1"><div class="li"> Other SPICE statements for which gschem has no symbol.</div>
</li>
</ul>
<p>
To place a SPICE directive on your schematic, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Place a SPICE directive block on your schematic. (Do “Add” → “Component” → “spice” → “spice-directive-1.sym”)</div>
</li>
<li class="level1"><div class="li"> Double click on the block and add/edit the following attributes:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>refdes</code></strong>: a?</div>
</li>
<li class="level2"><div class="li"> <strong><code>file</code></strong>: The name of the file to include.</div>
</li>
</ul>
</li>
</ol>
</div>
<!-- SECTION [7283-18697] -->
<h3><a name="handling_hierarchical_models" id="handling_hierarchical_models">Handling hierarchical models</a></h3>
<div class="level3">
<p>
In SPICE modeling, there are often situations where you wish to create a schematic representation of some particular component as a .SUBCKT, and then embed that component’s model in a higher level schematic. A common example might be as follows: You are doing a microwave simulation, and want to use a capacitor model which includes parasitic inductances and resistances, as well as the capacitance. Capacitor manufacturers often supply a printed schematic showing a circuit topology incorporating parasitics, and specify values for the parasitics. You would like to draw the capacitor model using gschem, netlist it to create a .SUBCKT, and then use the .SUBCKT to model capacitors in a higher lever schematic.<br/>
Since this kind of task is very common in SPICE simulation, gnet-spice-sdb now supports it (starting with rev 20030331). To create a lower level .SUBCKT and use it in a higher level schematic, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Draw the schematic of the lower level component (e.g. the capacitor + parasitics) using gschem.</div>
</li>
<li class="level1"><div class="li"> On the lower level schematic, place a spice-subcircuit-LL block (spice-subcircuit-LL-1.sym). This alerts the netlister that the schematic is a Lower Level .SUBCKT. Attach the following attributes to the symbol:<br/>
<br/>
<strong><code>model-name</code></strong> = cap_with_parasitics<br/>
<br/>
(Of course, “cap_with_parasitics” is the example we use here. Use your own model name in your schematic.) Upon netlisting, this schematic symbol will cause the netlist to insert “.SUBCKT cap_with_parasitics " into the first line of the netlist file.</div>
</li>
<li class="level1"><div class="li"> On the lower level schematic, attach a spice-subcircuit-IO symbol (spice-subcircuit-IO-1.sym) to each IO net (i.e. connection to the upper level). Number the refdeses of the IO symbols in the same order as you would like the IO nets to be listed in the .SUBCKT line in the output file. (i.e. P1 = first, P2 = second, etc.)</div>
</li>
<li class="level1"><div class="li"> When you are done with the lower level schematic, netlist it in the usual way. For example, if your schematic is called cap_with_parasitics.sch, netlist it by saying:<br/>
<br/>
<strong><code>gnetlist -g spice-sdb -o cap_with_parasitics.cir cap_with_parasitics.sch</code></strong><br/>
<br/>
This will dump the SPICE netlist into the file called “cap_with_parasitics.cir”. Visually inspect the .cir file to make sure that netlisting worked correctly.</div>
</li>
<li class="level1"><div class="li"> Next, create a symbol for the upper level schematic which will point to the .SUBCKT. Note that the symbol must have a refdes starting with the letter “X”. To ensure that this happens, do the following:</div>
<ul>
<li class="level2"><div class="li"> Use gschem to draw the symbol. I usually draw a box around a model symbol to distinguish it from a normal component. Make any other annotations desired.</div>
</li>
<li class="level2"><div class="li"> In the symbol, make sure that the pins are ordered identically to the order in which you have placed the pins in the .SUBCKT. This is done by editing the symbol with a text editor and setting the “PINSEQ” attribute. The netlister will output the pins in the order determined by the “PINSEQ” attribute.</div>
</li>
<li class="level2"><div class="li"> Using a text editor, give the symbol a “DEVICE” attribute like “capacitor-model”. Do not assign the symbol one of the native device types listed in the appendix! The goal is to create a symbol whose refdes starts with “X”, and if the “DEVICE” is a recognized type, this will not happen.</div>
</li>
<li class="level2"><div class="li"> Using a text editor, give the symbol the “REFDES” attribute “X?”</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Create the upper level schematic. Place your newly created symbol on the schematic as many times as required & wire up the schematic in the usual way.</div>
</li>
<li class="level1"><div class="li"> To point your symbol to the lower level .SUBCKT, double click on the symbol and set the following attributes:<br/>
<br/>
<strong><code>file</code></strong> = cap_with_parasitics.cir<br/>
<strong><code>model-name</code></strong> = cap_with_parasitics<br/>
<br/>
as well as any other attributes required (e.g. refdes).</div>
</li>
<li class="level1"><div class="li"> Now netlist your upper level schematic the usual way. The contents of each .SUBCKT file is dumped into the main netlist. Inspect your netlist visually using a text editor to ensure that it is correct. It is a good idea to pay particular attention to the following:</div>
<ul>
<li class="level2"><div class="li"> Verify that the ordering of the nets connecting the upper level netlist to the lower level .SUBCKT is correct.</div>
</li>
<li class="level2"><div class="li"> Make sure that the upper level model-name and the lower level model name (on the .SUBCKT declaration line) are the same.</div>
</li>
</ul>
</li>
</ol>
<p>
Once the netlist is created, you may simulate your design using any SPICE simulator desired.<br/>
</p>
<p>
One final note: The netlister writes the contents of the lower level .SUBCKT file into the main netlist <strong>every time</strong> it encounters a component with “FILE” attribute pointing to that file. Therefore, if you use the same component with the same model more than once in a design you should instantiate the model file using a “spice-model” symbol and point to it with each component. This is described in the “multi-line SPICE model block” section above.
</p>
</div>
<!-- SECTION [18698-23545] -->
<h2><a name="spice_netlist_generation" id="spice_netlist_generation">SPICE netlist generation</a></h2>
<div class="level2">
<p>
Once the schematic is captured, a SPICE netlist can be generated running the gEDA utility “gnetlist” on the schematic files. Gnetlist is built to be customizable, and is able to generate a netlist of any desired format using a Scheme back-end, which does the real heavy-lifting of creating the netlist. The back-end Scheme file which implements SPICE netlisting is called gnet-spice-sdb.scm, and it lives in the ${PREFIX}/geda/share/gEDA/scheme directory.
</p>
</div>
<!-- SECTION [23546-24039] -->
<h2><a name="creating_the_netlist" id="creating_the_netlist">Creating the netlist</a></h2>
<div class="level2">
<p>
Creating a netlist from a schematic is easy. To generate a SPICE netlist, just do the following:
</p>
<ul>
<li class="level1"><div class="li"> Save your schematic to <filename.sch></div>
</li>
<li class="level1"><div class="li"> Create the SPICE netlist by doing “gnetlist â??g spice-sdb <filename.sch>”. The output is a netlist held in the file output.net. Alternatively, if you wish to give your output file a different name, set the output name using the -o switch. For example:<br/>
<br/>
<strong><code>gnetlist -g spice-sdb -o amplifier.cir amplifier.sch</code></strong> <br/>
<br/>
takes the design schematic called “amplifier.sch” and outputs a SPICE netlist named “amplifier.cir”.</div>
</li>
<li class="level1"><div class="li"> Inspect your SPICE netlist using a text editor. Verify that there are no missing attributes or other netlist problems.</div>
</li>
</ul>
</div>
<!-- SECTION [24040-24765] -->
<h2><a name="common_netlisting_problems" id="common_netlisting_problems">Common netlisting problems</a></h2>
<div class="level2">
<p>
It is important to manually inspect your SPICE netlist prior to using it in simulation. Please remember that the netlister is still “alpha” quality, and some problems may still exist in netlist generation. The following list attempts to catalog common problems with the netlist and the associated fixes.
</p>
<ul>
<li class="level1"><div class="li"> ERROR_INVALID_<acronym title="Personal Identification Number">PIN</acronym>: This can happen if the symbolâ??s PINSEQ attributes donâ??t start at 1, or have gaps in the numbering. This must be fixed by editing the symbol itself in a text editor.</div>
</li>
</ul>
</div>
<!-- SECTION [24766-25301] -->
<h2><a name="spice_simulation" id="spice_simulation">SPICE simulation</a></h2>
<div class="level2">
<p>
There are several options for doing SPICE simulations under Linux; I will highlight two:
</p>
<ul>
<li class="level1"><div class="li"> <strong>LTSpice</strong>, which is a freeware SPICE simulator originally released by Linear Technologies as a component selection/design tool running under Windows. Because its SPICE engine is very fast and powerful, it has become a popular SPICE simulator amongst hobbyists and design engineers who prefer to use free tools. LTSpice has been tweaked to run under Linux using wine; I recommend using it if you need a robust, <strong>professional-quality</strong> SPICE simulator.</div>
<ul>
<li class="level2"><div class="li"> <strong>Ngspice/tclspice</strong>, which is a component of the gEDA distribution. Ngspice provides a simulation engine, a command-line driven front-end, and the capability to plot simulation results graphically under X. The main branch of ngspice development has been arrested since late 2001. However, a fork of the development tree, called “tclspice”, remains under active development. Tclspice is the package I recommend if you want to use a <strong>Linux-native</strong> SPICE simulator. </div>
</li>
</ul>
</li>
</ul>
<p>
There is also a <acronym title="GNU General Public License">GPL</acronym>‘ed simulator called “gnucap”, which is based upon (or is the descendent of) Al’s Circuit Simulator (ACS). I haven’t used it at all; information about gnucap is therefore TBD.
</p>
</div>
<!-- SECTION [25302-26547] -->
<h3><a name="ltspice" id="ltspice">LTSpice</a></h3>
<div class="level3">
<p>
LTSpice was written by Mike Englehardt at Linear Technologies, and was originally given away by LinearTech as a design aid for engineers wishing to simulate the performance of LinearTech’s switch mode power supply controllers. The package incorporates a schematic capture front end, fast and powerful SPICE engine, and the capability for plotting the results of many different types of SPICE analysis. Personally, I think the schematic capture front-end is hard to use and clunky; gschem knocks its socks off for ease of use and features. However, the SPICE engine and analysis stuff in LTSpice is simply great.<br/>
LTSpice was originally developed to run under Windows, but Mike has tweaked it so that it runs fairly well on Linux under wine. (Only the help menu system is broken – the rest of the package runs well.) Another good feature of LTSpice is that it is well supported – Mike reads the newsgroup sci.electronics.cad regularly and is generally happy to help people who experience problems with it. Therefore, despite its Windoze heritage, I recommend LTSpice as a powerful, professional-quality simulation and analysis back end for gEDA.
</p>
</div>
<h4><a name="installation_and_configuration_of_ltspice" id="installation_and_configuration_of_ltspice">Installation and configuration of LTSpice</a></h4>
<div class="level4">
<p>
To install and configure LTSpice, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Download and install wine. I have had success using Wine-20030219.</div>
</li>
<li class="level1"><div class="li"> Download LTSpice. It is available under <a href="http://www.linear.com/software" class="urlextern" title="http://www.linear.com/software" rel="nofollow">http://www.linear.com/software</a> under the name SwitcherCAD-III.</div>
</li>
<li class="level1"><div class="li"> Run the LTSpice installer under wine.</div>
</li>
</ol>
</div>
<h4><a name="running_ltspice_with_geda_designs" id="running_ltspice_with_geda_designs">Running LTSpice with gEDA designs</a></h4>
<div class="level4">
<p>
LTSpice can read a file holding a gEDA SPICE netlist. I have had success doing LTSpice sumulations in the following way:
</p>
<ol>
<li class="level1"><div class="li"> First of all, make sure that you are logged in as a normal user – Wine doesn’t like to run when invoked by root.</div>
</li>
<li class="level1"><div class="li"> Create a file in your project directory called “Simulation.cmd”. In this file place your spice analysis commands (e.g. .OP, .AC, .DC, etc.)</div>
</li>
<li class="level1"><div class="li"> Place a SPICE include block into your schematic. For the file attribute, type in “Simulation.cmd”.</div>
</li>
<li class="level1"><div class="li"> Netlist your design.</div>
</li>
<li class="level1"><div class="li"> Create a link from your netlist “output.net” and a netlist in the directory in which SwCADIII lives. Make the netlist suffix .cir. For example: ln -s ${DESIGN_HOME}/output.net ${WINE_HOME}/.wine/fake_windows/Program Files/LTC/SwCADIII/MyDesign.cir</div>
</li>
<li class="level1"><div class="li"> Run LTSpice: cd into the directory where SwCADIII lives and say “wine scad3.exe”</div>
</li>
<li class="level1"><div class="li"> From the SwCADIII <acronym title="Graphical User Interface">GUI</acronym>, do: File → Open → (files of type netlist [.cir]), and select your file.</div>
</li>
<li class="level1"><div class="li"> Run the simulator by clicking on the run button, or doing: Simulate → Run.</div>
</li>
<li class="level1"><div class="li"> Select the variables to graph, and then click OK. SwCADIII does the rest of the work.</div>
</li>
</ol>
<p>
Naturally, it is very important to play around with LTSpice to understand how to use it effectively, but the above description should suffice to get you started.
</p>
</div>
<!-- SECTION [26548-29363] -->
<h3><a name="ngspice_and_tclspice" id="ngspice_and_tclspice">Ngspice and tclspice</a></h3>
<div class="level3">
<p>
Ngspice was started at the University of Rome by Paolo Nenzi as an attempt to create a <acronym title="GNU General Public License">GPL</acronym>‘ed version of the standard Berkeley SPICE version 3 by re-writing the entire SPICE package. Plans were also laid to create better, more robust computational algorithms for the simulation engine. More information is available at the <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/" rel="nofollow">ngspice website</a>. Unfortunately, development on ngspice seems to have ceased at the end of 2001. Moreover, my initial experiences with ngspice were not good – it crashed and burned when run on many of my netlists, and it couldn’t deal with SPICE 2’s POLY construct in dependent sources. Dependent sources with PLOY attributes are common in vendor models, so this represents a real deficiency.
</p>
<p>
Fortunately, some friendly people at <a href="http://www.multigig.com/" class="urlextern" title="http://www.multigig.com" rel="nofollow">MultiGig Ltd.</a> were busy developing a branch of ngspice which they called “tclspice”. The purpose of tclspice is to enable SPICE commands to be embedded into TCL scripts, thereby enabling automated circuit optimization. The project homepage is at <a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/" rel="nofollow">http://tclspice.sourceforge.net/</a>. Since the tclspice branch of the code was alive, I decided to work on it, instead of the seemingly dead main ngspice branch. During spring 2003, I fixed tclspice in three useful (IMNSHO) ways:
</p>
<ol>
<li class="level1"><div class="li"> I fixed the parser so that it would handle netnames with non-numeric/non-alphabetic characters like “+” or “-” which are common in real netlists (e.g. “Vin+”, or “Vout1_pull-up”).</div>
</li>
<li class="level1"><div class="li"> I fixed the parser so that it would correctly handle hierarchical schematics, and correctly deal with the netnames inside the blocks.</div>
</li>
<li class="level1"><div class="li"> I got the POLY translation code (which exists in XSPICE) working so that one can now run SPICE 2 netlists with tclspice.</div>
</li>
</ol>
<p>
Tclspice seems to work nicely now (although there are still some issues with memory leaks). Moreover, because the tclspice code is a superset of ngspice, <strong>if you build tclspice, you will also build the command-line driven ngspice program</strong>. Therefore, I recommend getting and installing tclspice if you want to do Linux-native SPICE simulations.
</p>
</div>
<h4><a name="installation_and_configuration_of_ngspice_and_tclspice" id="installation_and_configuration_of_ngspice_and_tclspice">Installation and configuration of ngspice and tclspice</a></h4>
<div class="level4">
<p>
To install ngspice and tclspice, do the following:
</p>
<ol>
<li class="level1"><div class="li"> Get the latest tclspice distribution from <a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/" rel="nofollow">http://tclspice.sourceforge.net/</a>. As of this writing, the latest version is tclspice-0.2.12. This version incorporates the fixes I mentioned above, as well as other improvements made by the hard-working people at MultiGig, so make sure that your version is equal or greater than 0.2.12.</div>
</li>
<li class="level1"><div class="li"> Do the usual “gunzip ; tar -xvf” dance to create a source directory for tclspice.</div>
</li>
<li class="level1"><div class="li"> First build ngspice. Do “./configure –enable-xspice –prefix=/usr/local/geda” in the source directory. Of course, “–prefix=” should point to the place where you put your geda stuff. Note that you also must do “–enable-xspice” to be able to use SPICE 2 POLYs (and other XSpice goodies).</div>
</li>
<li class="level1"><div class="li"> Do “make && make install” to compile and install ngspice. As always, you will probably need to be root in order to install the packages in a public directory.</div>
</li>
<li class="level1"><div class="li"> At this point, you should be able to use ngspice. You can test your installation by trying one of the test circuits held in the tests directory. I recommend running the TransImpedanceAmp test, since it tests the SPICE2 POLY functionality. Information how to use ngspice is provided in the next section below.</div>
</li>
<li class="level1"><div class="li"> If you only want to use ngspice, you can stop now. Otherwise, next build tclspice. To build tclspice, you need to have the following other packages already installed:<br/>
<br/>
* TclX (tclx8.3.5 works for me.)<br/>
* tclreadline (tclreadline-2.1.0 works for me.)<br/>
* BLT for TCL (blt2.4z works for me.)<br/>
<br/>
If you don’t have these packages already on your Linux box, you need to get them and build them. Note that building TclX requires having the sources for TCL and Tk, so you will also need to get those sources if you don’t have them installed already. I am running successfully with TCL/Tk 8.4.3, although 8.3.X versions are also supposed to work.</div>
</li>
<li class="level1"><div class="li"> Assuming you have gotten the additional packages mentioned above installed, Do “./configure –enable-xspice –prefix=/usr/local/geda –enable-tcl –enable-experimental –disable-shared” to configure the Makefiles for tclspice. (If you don’t have the additional packages installed correctly , configure will complain and barf, so this step acts as a check on your installation.)</div>
</li>
<li class="level1"><div class="li"> Do “make tcl && make install-tcl” to compile and install tclspice.</div>
</li>
<li class="level1"><div class="li"> Now you will be ready to write TCL scripts which incorporate SPICE commands. Information about using tclspice is given below.</div>
</li>
</ol>
<p>
Finally, if you are interested in hacking tclspice (or even if you are not), it’s a good idea to read the NOTES file living in the top source directory for a couple of useful pointers.
</p>
</div>
<h4><a name="use_of_ngspice" id="use_of_ngspice">Use of ngspice</a></h4>
<div class="level4">
<p>
Running ngspice is very simple. Just issue the command “ngspice filename.net” at the unix command prompt, and ngspice will load the SPICE netlist called “filename.net” into its workspace, and leave you at an ngspice command prompt. You can run the simulator by saying “run”. Your results will be stored in SPICE vectors for later printing or plotting. The command set available to you is documented at <a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5" rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5</a>.<br/>
To make use of the SPICE2 POLY codemodel, you need to load it into ngspice <strong>before</strong> you load your netlist. (If you load it after loading your netlist, POLYs in your netlist are not translated, and therefore won’t be simulated correctly.) To load the codemodel, just say “codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm” at the ngspice prompt. Note that you must provide the <strong>absolute path</strong> to the location of the codemodel; ngspice isn’t smart enough to look for it in any default locations. (Also note that you should specify the location where spice2poly.cm lives on your machine; the path above is for mine.)<br/>
A better way to read in the spice2poly codemodel is to include it in the ngspice initialization file, “spinit”. The initialization file lives in the directory /usr/local/geda/share/ng-spice-rework/scripts (or where ever you placed your geda installation). Other ngspice customizations may also be placed into the spinit file.
</p>
</div>
<h4><a name="use_of_tclspice" id="use_of_tclspice">Use of tclspice</a></h4>
<div class="level4">
<p>
The tclspice package is a superset of ngspice. Not only does the package include the ngspice interactive environment; tclspice also provides a facility which exports the ngspice command set as TCL commands for inclusion into a TCL script. This is a very powerful tool: With tclspice you can write a TCL script which runs a loop, tweaks component values, runs an analysis, and then evaluates the circuit performance with the tweaked components before looping again. Obviously, this ability can be used to perform automated, multi-dimensional circuit optimization.<br/>
To use tclspice, you just need to say “package require spice” at the beginning of your TCL program. Thereafter, to invoke a SPICE command, you just call it in the spice namesapce. For example, the following TCL program will read in a SPICE netlist, command a transient analysis, run the simulation, and then plot the voltage observed over time on net Vout:
</p>
<pre class="code">#! tclsh
package require spice
spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm
spice::source netlistname.cir
spice::tran 0.1ns 40ns
spice::run
spice::plot Vout
puts "All done now!"</pre>
<p>
Note that since tclspice doesn’t read the ngspice initialization file “spinit”, you will need to put any initialization commands directly into the TCL program. For example, in the above example we read the spice2poly codemodel directly into the workspace. Many other commands are also available; the entire tclspice commandset is documented at <a href="http://tclspice.sourceforge.net/docs/tclspice_com.html" class="urlextern" title="http://tclspice.sourceforge.net/docs/tclspice_com.html" rel="nofollow">http://tclspice.sourceforge.net/docs/tclspice_com.html</a>.<br/>
A major problem with tclspice (which was inherited from ngspice) is that it leaks memory. Therefore, the time over which you may run a simulation is limited. This means that if you want to do an optimization by looping through a circuit many, many times, you may run out of memory before your program has completed its optimization. This is a known issue with tclspice, and efforts are underway to plug the leaks.<br/>
Meanwhile, there are some workarounds which can be used on moderate-sized designs to facilitate long optimization runs. One method I have employed is to have the optimizer write its current state into a file after every circuit analysis, and read its starting state from the same file. The optimizer also stores the current list of best components in another file, and reads this file at the start of every run. Then, I have a TCL program called TaskMgr.tcl which runs in a loop; at each iteration of the loop it forks a child process to run the optimizer. Meanwhile, the parent process waits for 5 minutes (a heuristically determined time), and then issues a “KILL” signal to the child before looping and starting the optimizer again. This way, the optimizer never runs long enough to consume all the memory in my machine. The TaskMgr.tcl program is shown here:
</p>
<pre class="code">#! tclsh
package require Tclx
while {1} {
set PID [fork]
if {$PID} {
# Parent
after 300000
puts "About to kill child PID = $PID . . . ."
kill $PID
wait $PID
} else {
# Child
source Optimize.tcl
# If we ever get through this, we can print out the following:
error "We are done now!!!!!!"
}
}</pre>
<p>
Note that TaskMgr.tcl needs the TclX package you already installed to run tclspice. Also, you may want to change the wait time to a different value depending upon the memory and speed of your machine. Finally, the parent has to wait on $PID because that causes the child process’s corpse to be taken off the Linux kernal’s task list when it dies. Otherwise, you will end up with a lot of zombie processes lurking around your machine as the optimizer runs – a long optimization could turn your system into “the night of the living dead”!<br/>
This method of waiting a specific amout of time for the child process is preferable if a single analysis run takes a relativly short time compared to the time required to eat all memory in the machine. If the analysis time is comparable to the time taken to eat all memory in the machine, a better approach is to have the parent keep track of the analysis state, kick off a single analysis run, and then have the run terminate after every iteration. Whether this is preferable depends upon the size and complexity of your design; you may want to experiment with your analysis to see just how long it takes and how much memory it consumes. I have found that a design comprised of six op amps (with corresponding vendor models) and 50 or so passives will run in under 10 seconds on a PIII 333MHz with 128MB RAM. Therefore, your design must be very big before a single analysis will eat a significant amount of RAM.
</p>
</div>
<!-- SECTION [29364-40393] -->
<h2><a name="appendix" id="appendix">Appendix</a></h2>
<div class="level2">
</div>
<!-- SECTION [40394-40415] -->
<h3><a name="component_attribute_summary" id="component_attribute_summary">Component attribute summary</a></h3>
<div class="level3">
<p>
Native components and their attributes are given in the table below. <strong>Bold faced</strong> attributes are <strong>required</strong>, normal typeface attributes are optional. Note that the “device” attribute is invisible, and is normally attached to the symbol when it is created. The other attributes are attached to the symbol during schematic capture using gschem.
</p>
<table class="inline">
<tr>
<th><strong><code>device</code></strong></th><th><strong><code>refdes</code></strong></th><th><strong><code>value</code></strong></th><th><strong><code>model</code></strong></th><th><strong><code>file</code></strong></th><th><strong><code>model-name</code></strong></th><th><strong><code>type</code></strong></th><th>Comment</th>
</tr>
<tr>
<td><strong>RESISTOR</strong></td><td><strong>R?</strong></td><td><strong>Numeric comp. value</strong></td><td>One line of spice model parameters (e.g. TC)</td><td> </td><td>Name of model.</td><td> </td><td>“model” parameters are placed inside parentheses after the component value.</td>
</tr>
<tr>
<td><strong>CAPACITOR</strong></td><td><strong>C?</strong></td><td><strong>Numeric comp. value</strong></td><td>One line of spice model parameters (e.g. IC, POLY, etc.)</td><td> </td><td>Name of model.</td><td> </td><td>“model” parameters are placed inside parentheses after the component value.</td>
</tr>
<tr>
<td><strong>POLARIZED_CAPACITOR</strong></td><td><strong>C?</strong></td><td><strong>Numeric comp. value</strong></td><td>One line of spice model parameters (e.g. IC, POLY, etc.)</td><td> </td><td>Name of model.</td><td> </td><td>“model” parameters are placed inside parentheses after the component value.</td>
</tr>
<tr>
<td><strong>INDUCTOR</strong></td><td><strong>L?</strong></td><td><strong>Numeric comp. value</strong></td><td>One line of spice model parameters (e.g. IC, POLY, etc.)</td><td> </td><td>Name of model.</td><td> </td><td>“model” parameters are placed inside parentheses after the component value.</td>
</tr>
<tr>
<td><strong>SPICE-ccvs</strong></td><td><strong>H?</strong></td><td><strong>String describing source behavior</strong></td><td> </td><td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td><strong>SPICE-cccs</strong></td><td><strong>F?</strong></td><td><strong>String describing source behavior</strong></td><td> </td><td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td><strong>SPICE-vcvs</strong></td><td><strong>E?</strong></td><td><strong>String describing source behavior</strong></td><td> </td><td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td><strong>SPICE-vccs</strong></td><td><strong>G?</strong></td><td><strong>String describing source behavior</strong></td><td> </td><td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td><strong>SPICE-nullor</strong></td><td><strong>E?</strong></td><td><strong>String describing source behavior</strong></td><td> </td><td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td><strong>DIODE</strong></td><td><strong>D?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>PMOS_TRANSISTOR</strong></td><td><strong>M?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>NMOS_TRANSISTOR</strong></td><td><strong>M?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>PNP_TRANSISTOR</strong></td><td><strong>Q?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>NPN_TRANSISTOR</strong></td><td><strong>Q?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>PFET_TRANSISTOR (JFET)</strong></td><td><strong>J?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>NFET_TRANSISTOR (JFET)</strong></td><td><strong>J?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>MESFET_TRANSISTOR</strong></td><td><strong>B?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>IC</strong></td><td><strong>U?</strong></td><td>Part number</td><td>One line SPICE model.</td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>IC with .MODEL file</td>
</tr>
<tr>
<td><strong>IC</strong></td><td><strong>X?</strong></td><td>Part number</td><td> </td><td>Model file name.</td><td><strong>Name of model.</strong></td><td> </td><td>IC with .SUBCKT file</td>
</tr>
<tr>
<td><strong>model</strong></td><td colspan="2"><strong>A?</strong></td><td>One line spice model</td><td>Model file name.</td><td><strong>Name of model pointed to by other components.</strong></td><td><strong>Corresponding SPICE model type (valid types given below)</strong>.</td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>include</strong></td><td><strong>A?</strong></td><td> </td><td> </td><td><strong>Include file name.</strong></td><td> </td><td> </td><td>Places .INCLUDE directive in SPICE netlist.</td>
</tr>
<tr>
<td><strong>options</strong></td><td><strong>A?</strong></td><td><strong>Line of options to include.</strong></td><td> </td><td> </td><td> </td><td> </td><td>Places .OPTIONS directive in SPICE netlist.</td>
</tr>
<tr>
<td><strong>directive</strong></td><td><strong>A?</strong></td><td><strong>One line string holding SPICE statements for inclusion in netlist.</strong></td><td> </td><td> </td><td> </td><td> </td><td>For modeling, one must include either “model” or “file”.</td>
</tr>
<tr>
<td><strong>VOLTAGE_SOURCE</strong></td><td><strong>V?</strong></td><td><strong>One line string holding voltage source behavior.</strong></td><td> </td><td> </td><td> </td><td> </td><td>Independent voltage source</td>
</tr>
<tr>
<td><strong>CURRENT_SOURCE</strong></td><td><strong>I?</strong></td><td><strong>One line string holding current source behavior.</strong></td><td> </td><td> </td><td> </td><td> </td><td>Independent current source</td>
</tr>
</table>
<br />
<p>
“Native to the netlister” means that there is a corresponding blob of scheme code which knows exactly how to handle these components and is guaranteed (almost) to generate correct spice code. Symbols having “device” attributes not on the above list are handled using the scheme function “spice-sdb:write-default-component”, which looks at the refdes of the component to make a decision about how to treat the component. In general, this function will “do the right thing” when generating spice code, but it is not guaranteed. In particular, this function cannot distinguish between N and P type transistors, and will generate an <unknown> type for the .MODEL string in the netlist. This will probably cause your SPICE simulator to barf. Therefore, it is best to make sure that all devices used have the proper “device” attribute.
</p>
</div>
<!-- SECTION [40416-45184] -->
<h3><a name="valid_type_values" id="valid_type_values">Valid "type" values</a></h3>
<div class="level3">
<p>
The “type” attribute is a flag signaling the spice engine the component type, and prepares it to accept model parameters specific to that component type. The following values are valid SPICE “type”s:
</p>
<table class="inline">
<tr>
<th>Component</th><th>“type”</th><th>Comment</th>
</tr>
<tr>
<td>RESISTOR</td><td>RES</td><td> </td>
</tr>
<tr>
<td>CAPACITOR</td><td>CAP</td><td> </td>
</tr>
<tr>
<td>POLARIZED_CAPACITOR</td><td>CAP</td><td> </td>
</tr>
<tr>
<td>INDUCTOR</td><td>IND</td><td> </td>
</tr>
<tr>
<td>DIODE</td><td>D</td><td> </td>
</tr>
<tr>
<td>PMOS_TRANSISTOR</td><td>PMOS</td><td> </td>
</tr>
<tr>
<td>NMOS_TRANSISTOR</td><td>NMOS</td><td> </td>
</tr>
<tr>
<td>PNP_TRANSISTOR</td><td>PNP</td><td> </td>
</tr>
<tr>
<td>NPN_TRANSISTOR</td><td>NPN</td><td> </td>
</tr>
<tr>
<td>PFET_TRANSISTOR</td><td>PJF</td><td> </td>
</tr>
<tr>
<td>NFET_TRANSISTOR</td><td>NJF</td><td> </td>
</tr>
<tr>
<td>MESFET_TRANSISTOR</td><td> </td><td> </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [45185-45703] -->
<h2><a name="document_history" id="document_history">Document History</a></h2>
<div class="level2">
<table class="inline">
<tr>
<td>Revision 1.0</td><td>3.10.2003</td><td>SDB</td><td>Document creation.</td>
</tr>
<tr>
<td>Revision 1.1</td><td>3.19.2003</td><td>SDB</td><td>Added .SUBCKT stuff & stuff about LTSpice</td>
</tr>
<tr>
<td>Revision 1.2</td><td>3.31.2003</td><td>SDB</td><td>Added stuff about creating hierarchical projects (i.e. creating .SUBCKTs using gschem and incorporating a lower level .SUBCKT into a higher level schematic).</td>
</tr>
<tr>
<td>Revision 2.0</td><td>7.23.2003</td><td>SDB</td><td>Split doc into sections. Edited netlisting stuff to correspond to gEDA-20030525, which now includes spice-sdb in the distribution. Added new section about ngspice/tclspice.</td>
</tr>
</table>
<br />
<p>
The most recent copy of this document is always available at <a href="http://www.brorson.com/gEDA/SPICE/" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/" rel="nofollow">http://www.brorson.com/gEDA/SPICE/</a>
</p>
</div>
<!-- SECTION [45704-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_sn_readme.html
Index: geda_sn_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:sn_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:sn_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:sn_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:sn_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:18:23-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="switcap_netlister_readme" id="switcap_netlister_readme">Switcap netlister README</a></h1>
<div class="level1">
<pre class="code">-----------------------------------------------------------------
I. What is this?
-----------------------------------------------------------------
This archive contains a set of symbols and a netlister backend for the
gEDA to drive SWITCAP simulations. gEDA is the GNU EDA project and
includes a schematic capture tool and a highly flexible netlister.
The SWITCAP program is a switched capacitor circuit simulator.
-----------------------------------------------------------------
II. Overview
-----------------------------------------------------------------
The basic steps involved with using gEDA as the frontend for SWITCAP
simulations are:
- configure the gEDA symbol search path
- set the gEDA netlister backend search path
- create schematics of the circuit
- create an analysis file
- extract the netlist
- run the SWITCAP simulation
-----------------------------------------------------------------
III. Initial Setup
-----------------------------------------------------------------
1) Set your symbol search path for gschem and gnetlist by adding
the following line to the 'gschemrc' and 'gnetlistrc' files in
your project directory.
(component-library "/path/to/sym/switcap")
If those files do not exist, then create them. You will need to
replace /path/to/sym/switcap with the directory name where you
have installed the .sym files.
2) Set the search path for scheme files for gnetlist by adding the
following line to your 'gnetlistrc' file.
(scheme-directory "/path/to/scheme")
You will need to replace /path/to/scheme with the path to where
you have installed the gnet-switcap.scm file.
3)
-----------------------------------------------------------------
IV. Creating Schematics
-----------------------------------------------------------------
--------------------
A. Required Symbols
--------------------
This section assumes you are familiar with using gschem to create and
edit schematics. SWITCAP netlisting is only supported for the
components contained in the SWITCAP symbol library as well as the
ground symbol found in the 'power' library which comes with gEDA. All
allowed SWITCAP elements except for subcircuits are supported. You
_must_ include the following elements on your schematic:
- one instance of the switcap-timing symbol. This symbol will set the
master clock period for your simulations.
- one or more instances of the switcap-clock symbol. This symbol
defines a clock with a particular phase and period. The reference
designator of the clock symbol is used by the switches to set what
phase they switch on.
- one or more instances of the switcap-analysis symbol. This symbol
defines an analysis by specifying a file to include in the SWITCAP
netlist.
--------------------
B. Optional Symbols
--------------------
You can also optionally add the following SWITCAP special symbols to
your schematic:
- zero or one instance of the switcap-title symbol. This will add a
TITLE: line to the SWITCAP netlist and will appear in the output
file.
- zero or one instance of the switcap-options symbol. By editing the
OPTIONS attribute on this symbol you can set the various options
which can be passed to SWITCAP.
--------------------
C. Net Names
--------------------
When creating schematics to drive SWITCAP, you should name all nets
that you wish to plot. To avoid possible conflicts with unnamed nets,
you should avoid using purely numerical names for nets because
all unnamed nets will be assigned (somewhat randomly) numbers.
SWITCAP limits the length of node names to 7 characters.
--------------------
D. Switches
--------------------
When placing switches on your schematic, you will need to define
which clock they are controlled with. This is done by setting
the clock attribute on the switch to the reference designator
of the clock which should control it.
-----------------------------------------------------------------
V. Extracting the SWITCAP Netlist
-----------------------------------------------------------------
To extract the SWITCAP netlist, run
gnetlist -g switcap -o test.scn file1.sch [file2.sch ...]
For the example file contained in this archive, you can run:
gnetlist -g switcap -o example.scn ckt.sch clocks.sch analysis.sch
The netlist will be left in example.scn.
-----------------------------------------------------------------
VI. Running SWITCAP
-----------------------------------------------------------------
I typically use something like:
printf "example.scn\nexample.out" | sw
so I can use command history to rerun SWITCAP without having to
manually type the file names each time.
Refer to the SWITCAP manual for more details.
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_ssan.html
Index: geda_ssan.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:ssan</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:ssan?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:ssan?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:ssan?do=export_raw" />
<meta name="date" content="2006-04-24T05:09:16-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_gaf_switcap_symbols_and_netlister" class="toc">gEDA/gaf Switcap Symbols and Netlister</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#overview" class="toc">Overview</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#requirements" class="toc">Requirements</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#creating_schematics" class="toc">Creating Schematics</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#required_symbols" class="toc">Required Symbols</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#optional_symbols" class="toc">Optional Symbols</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#net_names" class="toc">Net Names</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#switches" class="toc">Switches</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#extracting_the_switcap_netlist" class="toc">Extracting the SWITCAP Netlist</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#running_switcap" class="toc">Running SWITCAP</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#appendix_a_--_symbols_in_the_library" class="toc">Appendix A -- Symbols in the Library</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#capacitors_switcap-capacitor" class="toc">Capacitors (switcap-capacitor)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#switches_switcap-switch" class="toc">Switches (switcap-switch)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#independent_voltage_sources_switcap-vsrc" class="toc">Independent Voltage Sources (switcap-vsrc)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#dependent_voltage_sources_switcap-vcvs" class="toc">Dependent Voltage Sources (switcap-vcvs)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#clock_specification_switcap-clock" class="toc">Clock Specification (switcap-clock)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#master_timing_specification_switcap-timing" class="toc">Master Timing Specification (switcap-timing)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#analysis_file_include_switcap-analysis" class="toc">Analysis File Include (switcap-analysis)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#simulation_title_specification_switcap-title" class="toc">Simulation Title Specification (switcap-title)</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#simulation_options_specification_switcap-options" class="toc">Simulation Options Specification (switcap-options)</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#example" class="toc">Example</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#example_schematics" class="toc">Example Schematics</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#netlist_the_design" class="toc">Netlist the Design</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#run_the_simulation" class="toc">Run the Simulation</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#process_the_results" class="toc">Process the Results</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#plot_the_results" class="toc">Plot the Results</a></span></div></li>
</ul>
</li>
<li class="level2"><div class="li"><span class="li"><a href="#document_revision_history" class="toc">Document Revision History</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_gaf_switcap_symbols_and_netlister" id="geda_gaf_switcap_symbols_and_netlister">gEDA/gaf Switcap Symbols and Netlister</a></h1>
<div class="level1">
<p>
by: Dan McMahill
</p>
<p>
This document is released under <a href="http://www.gnu.org/copyleft/fdl.html" class="urlextern" title="http://www.gnu.org/copyleft/fdl.html" rel="nofollow">GFDL</a>
</p>
<p>
April 13th, 2003
</p>
</div>
<!-- SECTION [1-168] -->
<h2><a name="overview" id="overview">Overview</a></h2>
<div class="level2">
<p>
This document describes the symbol library and gnetlist backend which supports driving SWITCAP simulations from the gEDA/gaf system. SWITCAP is a switched capacitor circuit simulator available from Columbia University. It is used in many classroom and research environments. One drawback to SWITCAP is the lack of a freely available schematic capture frontend. The gEDA/gaf SWITCAP symbol library and gnetlist backend tries to fill that gap.<br/>
The basic steps involved with using gEDA as the frontend for SWITCAP simulations are:
</p>
<ol>
<li class="level1"><div class="li"> Create schematics of the circuit.</div>
</li>
<li class="level1"><div class="li"> Create an analysis file.</div>
</li>
<li class="level1"><div class="li"> Extract the netlist.</div>
</li>
<li class="level1"><div class="li"> Run the SWITCAP simulation.</div>
</li>
<li class="level1"><div class="li"> Run <strong>sw2asc</strong> to extract the results.</div>
</li>
<li class="level1"><div class="li"> View the results with <strong>gwave</strong>.</div>
</li>
</ol>
</div>
<!-- SECTION [169-924] -->
<h2><a name="requirements" id="requirements">Requirements</a></h2>
<div class="level2">
<p>
You will need the following programs to be installed:
</p>
<ol>
<li class="level1"><div class="li"> A recent version of gEDA/gaf. To see if your version is recent enough, see if the directory <strong><code>$prefix/share/gEDA/sym/switcap</code></strong> exists. <strong><code>$prefix</code></strong> is the installation prefix for gEDA on your system.</div>
</li>
<li class="level1"><div class="li"> SWITCAP. The executable is usually called <strong><code>sw</code></strong>. If you do not have SWITCAP available on your system, you will need to contact Columbia University to obtain a copy. The gEDA/gaf SWITCAP support was tested with SWITCAP Version A.5R Release 21-Sep-87.</div>
</li>
<li class="level1"><div class="li"> Although it is optional, you may wish to install a tool which can be used for plotting the output data. SWITCAP produces both <acronym title="American Standard Code for Information Interchange">ASCII</acronym> data listings as well as ugly <acronym title="American Standard Code for Information Interchange">ASCII</acronym> plots (note the release date of the version of SWITCAP used). Suitable tools are:</div>
<ol>
<li class="level2"><div class="li"> Gwave. Gwave is an analog waveform viewer. It is fairly basic, but easy to use, includes cursors, and has zoom/pan features. See <strong><a href="http://www.geda.seul.org/" class="urlextern" title="http://www.geda.seul.org" rel="nofollow">http://www.geda.seul.org</a></strong></div>
</li>
<li class="level2"><div class="li"> Scilab. Similar to matlab. Powerful, but no cursors or panning. See <strong><a href="http://www-rocq.inria.fr/scilab" class="urlextern" title="http://www-rocq.inria.fr/scilab" rel="nofollow">http://www-rocq.inria.fr/scilab</a></strong></div>
</li>
<li class="level2"><div class="li"> Octave. Similar to matlab. See <strong><a href="http://www.octave.org/" class="urlextern" title="http://www.octave.org" rel="nofollow">http://www.octave.org</a></strong></div>
</li>
<li class="level2"><div class="li"> Grace. See <strong><a href="http://plasma-gate.weizmann.ac.il/Grace/" class="urlextern" title="http://plasma-gate.weizmann.ac.il/Grace/" rel="nofollow">http://plasma-gate.weizmann.ac.il/Grace/</a></strong></div>
</li>
</ol>
</li>
</ol>
</div>
<!-- SECTION [925-2127] -->
<h2><a name="creating_schematics" id="creating_schematics">Creating Schematics</a></h2>
<div class="level2">
</div>
<!-- SECTION [2128-2159] -->
<h3><a name="required_symbols" id="required_symbols">Required Symbols</a></h3>
<div class="level3">
<p>
This section assumes you are familiar with using gschem to create and edit schematics. SWITCAP netlisting is only supported for the components contained in the SWITCAP symbol library as well as the ground symbol found in the ‘power’ library which comes with gEDA. All allowed SWITCAP elements except for subcircuits are supported. You <em>must</em> include the following elements on your schematic:
</p>
<ol>
<li class="level1"><div class="li"> One instance of the switcap-timing symbol. This symbol will set the master clock period for your simulations.</div>
</li>
<li class="level1"><div class="li"> One or more instances of the switcap-clock symbol. This symbol defines a clock with a particular phase and period. The reference designator of the clock symbol is used by the switches to set what phase they switch on.</div>
</li>
<li class="level1"><div class="li"> One or more instances of the switcap-analysis symbol. This symbol defines an analysis by specifying a file to include in the SWITCAP netlist. By including multiple instances of this symbol, multiple analysis files may be included.</div>
</li>
</ol>
</div>
<!-- SECTION [2160-3152] -->
<h3><a name="optional_symbols" id="optional_symbols">Optional Symbols</a></h3>
<div class="level3">
<p>
You can also optionally add the following SWITCAP special symbols to your schematic:
</p>
<ol>
<li class="level1"><div class="li"> Zero or one instance of the switcap-title symbol. This will add a TITLE: line to the SWITCAP netlist and will appear in the output file.</div>
</li>
<li class="level1"><div class="li"> Zero or one instance of the switcap-options symbol. By editing the OPTIONS attribute on this symbol you can set the various options which can be passed to SWITCAP.</div>
</li>
</ol>
</div>
<!-- SECTION [3153-3574] -->
<h3><a name="net_names" id="net_names">Net Names</a></h3>
<div class="level3">
<p>
When creating schematics to drive SWITCAP, you should name all nets that you wish to plot. To avoid possible conflicts with unnamed nets, you should avoid using purely numerical names for nets because all unnamed nets will be assigned (somewhat randomly) numbers without checking for possible conflicts with explicitly named nets. SWITCAP limits the length of node names to 7 characters.
</p>
</div>
<!-- SECTION [3575-3983] -->
<h3><a name="switches" id="switches">Switches</a></h3>
<div class="level3">
<p>
When placing switches on your schematic, you will need to define which clock they are controlled with. This is done by setting the clock attribute on the switch to the reference designator of the clock which should control it.
</p>
</div>
<!-- SECTION [3984-4230] -->
<h2><a name="extracting_the_switcap_netlist" id="extracting_the_switcap_netlist">Extracting the SWITCAP Netlist</a></h2>
<div class="level2">
<p>
To extract the SWITCAP netlist, run:
</p>
<pre class="code">gnetlist -g switcap -o test.scn file1.sch [file2.sch ...]</pre>
<p>
For the example file contained in this archive, you can run:
</p>
<pre class="code">gnetlist -g switcap -o example.scn ckt.sch clocks.sch analysis.sch</pre>
<p>
The netlist will be left in <strong>example.scn</strong>.
</p>
</div>
<!-- SECTION [4231-4570] -->
<h2><a name="running_switcap" id="running_switcap">Running SWITCAP</a></h2>
<div class="level2">
<p>
I typically use something like:
</p>
<pre class="code">printf "example.scn\nexample.out\n" | sw</pre>
<p>
so I can use command history to rerun SWITCAP without having to manually type the file names each time.<br/>
Refer to the SWITCAP manual for more details.
</p>
</div>
<!-- SECTION [4571-4838] -->
<h2><a name="appendix_a_--_symbols_in_the_library" id="appendix_a_--_symbols_in_the_library">Appendix A -- Symbols in the Library</a></h2>
<div class="level2">
</div>
<!-- SECTION [4839-4887] -->
<h3><a name="capacitors_switcap-capacitor" id="capacitors_switcap-capacitor">Capacitors (switcap-capacitor)</a></h3>
<div class="level3">
<p>
Ideal capacitor. Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>C</strong>=capacitance. Required. Specifies filename to be included.</div>
</li>
<li class="level1"><div class="li"> <strong>refdes</strong>=reference designator. Required. Must start with “C” and be unique.</div>
</li>
</ul>
</div>
<!-- SECTION [4888-5108] -->
<h3><a name="switches_switcap-switch" id="switches_switcap-switch">Switches (switcap-switch)</a></h3>
<div class="level3">
<p>
Ideal switch. Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>clock</strong>=Controlling clock. Required. Specifies which clock controls this switch.</div>
</li>
<li class="level1"><div class="li"> <strong>refdes</strong>=reference designator. Required. Must start with “S” and be unique.</div>
</li>
</ul>
</div>
<!-- SECTION [5109-5340] -->
<h3><a name="independent_voltage_sources_switcap-vsrc" id="independent_voltage_sources_switcap-vsrc">Independent Voltage Sources (switcap-vsrc)</a></h3>
<div class="level3">
<p>
Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>refdes</strong>=reference designator. Required. Must start with “V” and be unique.</div>
</li>
</ul>
</div>
<!-- SECTION [5341-5488] -->
<h3><a name="dependent_voltage_sources_switcap-vcvs" id="dependent_voltage_sources_switcap-vcvs">Dependent Voltage Sources (switcap-vcvs)</a></h3>
<div class="level3">
<p>
Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>gain</strong>=gain. Required. Specifies the gain of the controlled source.</div>
</li>
<li class="level1"><div class="li"> <strong>refdes</strong>=reference designator. Required. Must start with “E” and be unique.</div>
</li>
</ul>
</div>
<!-- SECTION [5489-5708] -->
<h3><a name="clock_specification_switcap-clock" id="clock_specification_switcap-clock">Clock Specification (switcap-clock)</a></h3>
<div class="level3">
<p>
Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>PSTART</strong>=starting clock phase. Required. Specifies on what phase of the master clock this clock turns on.</div>
</li>
<li class="level1"><div class="li"> <strong>PSTOP</strong>=ending clock phase. Required. Specifies on what phase of the master clock this clock turns off.</div>
</li>
<li class="level1"><div class="li"> <strong>PERIOD</strong>=clock period. Required. Specifies the period of the clock in terms of master clock cycles.</div>
</li>
<li class="level1"><div class="li"> <strong>refdes</strong>=reference designator. Required. The switches that are controlled by this clock will refer to it by the reference designator. As such, avoid running any reference designator renumbering tools.</div>
</li>
</ul>
</div>
<!-- SECTION [5709-6302] -->
<h3><a name="master_timing_specification_switcap-timing" id="master_timing_specification_switcap-timing">Master Timing Specification (switcap-timing)</a></h3>
<div class="level3">
<p>
Attributes:
</p>
<ul>
<li class="level1"><div class="li"> PERIOD=clock period. Required. Specifies the period of the master clock in seconds.</div>
</li>
</ul>
<p>
Only a single instance of this symbol is allowed.
</p>
</div>
<!-- SECTION [6303-6509] -->
<h3><a name="analysis_file_include_switcap-analysis" id="analysis_file_include_switcap-analysis">Analysis File Include (switcap-analysis)</a></h3>
<div class="level3">
<p>
This symbol will cause a specified file containing SWITCAP analysis commands to be included in the output netlist. Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>file</strong>=filename. Required. Specifies filename to be included.</div>
</li>
</ul>
</div>
<!-- SECTION [6510-6756] -->
<h3><a name="simulation_title_specification_switcap-title" id="simulation_title_specification_switcap-title">Simulation Title Specification (switcap-title)</a></h3>
<div class="level3">
<p>
Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>TITLE</strong>=switcap title. Required. Specifies the TITLE line for the SWITCAP netlist.</div>
</li>
</ul>
<p>
Only a single instance of this symbol is allowed.
</p>
</div>
<!-- SECTION [6757-6966] -->
<h3><a name="simulation_options_specification_switcap-options" id="simulation_options_specification_switcap-options">Simulation Options Specification (switcap-options)</a></h3>
<div class="level3">
<p>
Attributes:
</p>
<ul>
<li class="level1"><div class="li"> <strong>OPTIONS</strong>=switcap options. Required. Specifies the OPTIONS line for the SWITCAP netlist. See the SWITCAP manual for allowed values.</div>
</li>
</ul>
<p>
Only a single instance of this symbol is allowed.
</p>
</div>
<!-- SECTION [6967-7229] -->
<h2><a name="example" id="example">Example</a></h2>
<div class="level2">
<p>
This appendix provides a simple example of the entire process of generating a schematic, producing a SWITCAP netlist, running a simulation, and plotting the results.
</p>
<table class="inline">
<tr>
<td> <a href="_detail/geda_switcap_figure1.html" class="media" title="geda:switcap_figure1.jpg"><img src="_media/geda_switcap_figure1.jpg" class="media" title="switcap_figure1.jpg" alt="switcap_figure1.jpg" /></a> </td>
</tr>
<tr>
<td> <a href="_detail/geda_switcap_figure2.html" class="media" title="geda:switcap_figure2.jpg"><img src="_media/geda_switcap_figure2.jpg" class="media" title="switcap_figure2.jpg" alt="switcap_figure2.jpg" /></a> </td>
</tr>
<tr>
<td> <a href="_detail/geda_switcap_figure3.html" class="media" title="geda:switcap_figure3.jpg"><img src="_media/geda_switcap_figure3.jpg" class="media" title="switcap_figure3.jpg" alt="switcap_figure3.jpg" /></a> </td>
</tr>
<tr>
<td> <a href="_detail/geda_switcap_figure4.html" class="media" title="geda:switcap_figure4.jpg"><img src="_media/geda_switcap_figure4.jpg" class="media" title="switcap_figure4.jpg" alt="switcap_figure4.jpg" /></a> </td>
</tr>
</table>
<br />
<p>
Figure 5/6: Simulation Results - Transient MISSING
</p>
</div>
<!-- SECTION [7230-7605] -->
<h3><a name="example_schematics" id="example_schematics">Example Schematics</a></h3>
<div class="level3">
<p>
<strong>Figure 1</strong> shows the schematic of a simple switched capacitor circuit. Note that some switches, S1 and S3 for example, are controlled by CLK1 while others, S2 and S4 for example, are controlled by the complement of CLK1 (#CLK1).<br/>
<strong>Figure 2</strong> shows the definition of a clock and the master clock. Here we define a master clock period (mcp) of 1.0 μs in the timing block. In the clock definition symbol, we define a clock called CLK1 that has a period equal to 1 master clock period (mcp). The phase of CLK1 turning on switches is 0 and the phase of CLK1 turning off switches is 3/8 mcp. Additional clock phases can be defined by creating more instances of the clock definition symbol.<br/>
<strong>Figure 3</strong> shows an instantiation of the title block symbol which will cause “my title” to be used in the TITLE line in the SWITCAP netlist. Figure 3 also shows an instantiation of an analysis block which directs the netlister to include the contents of the file test.ana in the output netlist. <strong>Figure 4</strong> shows the contents of the test.ana file.
</p>
</div>
<!-- SECTION [7606-8677] -->
<h3><a name="netlist_the_design" id="netlist_the_design">Netlist the Design</a></h3>
<div class="level3">
<p>
To netlist the design, run:
</p>
<pre class="code">gnetlist -g switcap -o example.scn ckt.sch clocks.sch analysis.sch</pre>
</div>
<!-- SECTION [8678-8815] -->
<h3><a name="run_the_simulation" id="run_the_simulation">Run the Simulation</a></h3>
<div class="level3">
<p>
Run the simulation with:
</p>
<pre class="code">printf "example.scn\nexample.out\n" | sw</pre>
</div>
<!-- SECTION [8816-8924] -->
<h3><a name="process_the_results" id="process_the_results">Process the Results</a></h3>
<div class="level3">
<p>
Convert the SWITCAP output file to something gwave can read by running:
</p>
<pre class="code">sw2asc example.out</pre>
</div>
<!-- SECTION [8925-9059] -->
<h3><a name="plot_the_results" id="plot_the_results">Plot the Results</a></h3>
<div class="level3">
<p>
Start up the gwave program and load the first sinusoidal steady state result by running:
</p>
<pre class="code">gwave example.out.SSS.1.asc</pre>
<p>
Drag the two waveforms onto the two waveform panels and change the x-axis to a log scale. Figure 5 shows the output. Start up the gwave program and load the transient result by running:
</p>
<pre class="code">gwave example.out.TRAN.1.asc</pre>
</div>
<!-- SECTION [9060-9446] -->
<h2><a name="document_revision_history" id="document_revision_history">Document Revision History</a></h2>
<div class="level2">
<table class="inline">
<tr>
<td> April 13th, 2003 </td><td> Created switcap.tex </td>
</tr>
</table>
<br />
</div>
<!-- SECTION [9447-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_style_guide.html
Index: geda_style_guide.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:style_guide</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:style_guide?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:style_guide?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:style_guide?do=export_raw" />
<meta name="date" content="2006-08-17T02:00:16-0400" />
<meta name="robots" content="noindex,nofollow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#style_guide" class="toc">Style Guide</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#downloading_installing_pavuk" class="toc">Downloading/Installing pavuk</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#downloading_installing_htmldoc" class="toc">Downloading/Installing HTMLDOC</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#for_both_existing_and_new_documents" class="toc">For both existing and new documents</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#for_new_documents" class="toc">For new documents:</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#for_existing_documents" class="toc">For existing documents:</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="style_guide" id="style_guide">Style Guide</a></h1>
<div class="level1">
<p>
<span class="hilited">This is definitely a work in progress.</span><br/>
All documentation is eventually going to be made available as both <acronym title="HyperText Markup Language">HTML</acronym> and <acronym title="Portable Document Format">PDF</acronym>.<br/>
The problem is to convert the gEDA wiki’s Dokuwiki-pages (i.e., <acronym title="Extensible HyperText Markup Language">XHTML</acronym>) into a format that can be converted into <acronym title="Portable Document Format">PDF</acronym>.<br/>
The ideal path would be to use the pavuk application to mine the gEDA wiki, converting the <acronym title="Extensible HyperText Markup Language">XHTML</acronym> wiki-pages into <acronym title="HyperText Markup Language">HTML</acronym> pages, and then use the HTMLDOC application to convert the <acronym title="HyperText Markup Language">HTML</acronym> pages to <acronym title="Portable Document Format">PDF</acronym>.<br/>
</p>
</div>
<!-- SECTION [1-472] -->
<h2><a name="downloading_installing_pavuk" id="downloading_installing_pavuk">Downloading/Installing pavuk</a></h2>
<div class="level2">
<p>
pavuk is a function-testing, performance-measuring, site-mirroring, web spider that is widely portable and capable of using scenarios to process a wide range of web transactions, including ssl and forms.<br/>
pavuk is hosted on SourceForge at <a href="http://sourceforge.net/projects/pavuk" class="urlextern" title="http://sourceforge.net/projects/pavuk" rel="nofollow">http://sourceforge.net/projects/pavuk</a>. Simply check if your distribution already includes the latest version of pavuk (pavuk-0.9.34 used for the current wiki), and download/install if necessary.<br/>
pavuk comes as an RPM, a tar-ball, and a compressed tar-ball. Don’t install from the RPM, as this uses dated library dependencies and may not build on newer distributions.<br/>
pavuk has both a command-line interface and a <acronym title="Graphical User Interface">GUI</acronym> interface.
</p>
</div>
<!-- SECTION [473-1190] -->
<h2><a name="downloading_installing_htmldoc" id="downloading_installing_htmldoc">Downloading/Installing HTMLDOC</a></h2>
<div class="level2">
<p>
HTMLDOC converts <acronym title="HyperText Markup Language">HTML</acronym> files and web pages into indexed <acronym title="HyperText Markup Language">HTML</acronym>, PostScript, and <acronym title="Portable Document Format">PDF</acronym> files suitable for on-line viewing and printing.<br/>
HTMLDOC is hosted at <a href="http://www.easysw.com/htmldoc/" class="urlextern" title="http://www.easysw.com/htmldoc/" rel="nofollow">http://www.easysw.com/htmldoc/</a>, and may be downloaded/installed under the open-source license for non-commercial applications. Simply check if you distribution already includes HTMLDOC version htmldoc-1.8-27 or later, and install as appropriate. Note that RPM distributions are available, so that your normal package install/update utilities may already contain HTMLDOC (e.g., htmldoc-1.8.27 is in Fedora Core 4 extras repository and may be installed using yum).<br/>
HTMLDOC version htmldoc-1.8.26 is broken, it will not generate appropriate <acronym title="Portable Document Format">PDF</acronym> documents.<br/>
Note one limitation of HTMLDOC. It is based on <acronym title="HyperText Markup Language">HTML</acronym> 3.o, not <acronym title="HyperText Markup Language">HTML</acronym> 4.01. Many <acronym title="HyperText Markup Language">HTML</acronym> 4.01 tags are not recognized by HTMLDOC.<br/>
HTMLDOC is both a <acronym title="Graphical User Interface">GUI</acronym> application and a command-line application. Use it as you feel most comfortable.
</p>
</div>
<!-- SECTION [1191-2172] -->
<h2><a name="for_both_existing_and_new_documents" id="for_both_existing_and_new_documents">For both existing and new documents</a></h2>
<div class="level2">
<p>
The following are meant to stimulate discussion on document style:
</p>
<ol>
<li class="level1"><div class="li"> Consider that the document will be exported for inclusion on the “gEDA Tools Suite CD-ROM” as <acronym title="Extensible HyperText Markup Language">XHTML</acronym> and/or <acronym title="Portable Document Format">PDF</acronym>. Examples:</div>
<ul>
<li class="level2"><div class="li"> <a href="http://geda.seul.org/wiki/?do=export_raw" class="urlextern" title="http://geda.seul.org/wiki/?do=export_raw" rel="nofollow">http://geda.seul.org/wiki/?do=export_raw</a> will generate the gEDA Project Wiki’s start page as plain text. Simply use your browser to copy to a text file and include on the CD-ROM image.</div>
</li>
<li class="level2"><div class="li"> <a href="http://geda.seul.org/wiki/?do=export_xhtml" class="urlextern" title="http://geda.seul.org/wiki/?do=export_xhtml" rel="nofollow">http://geda.seul.org/wiki/?do=export_xhtml</a> will generate the gEDA Project Wiki’s start page as valid <acronym title="Extensible HyperText Markup Language">XHTML</acronym>. Simply use your browser to “Save Page As...”, and name the file {filename}.html. Note that the URLs in this file are NOT relative to this file, but are as they would be found on the gEDA Project Wiki.</div>
</li>
<li class="level2"><div class="li"> <a href="http://geda.seul.org/wiki/?do=export_xhtmlbody" class="urlextern" title="http://geda.seul.org/wiki/?do=export_xhtmlbody" rel="nofollow">http://geda.seul.org/wiki/?do=export_xhtmlbody</a> will generate the gEDA Project Wiki’s start page as valid rendered <acronym title="Extensible HyperText Markup Language">XHTML</acronym>. Simply use your browser to “Save Page As...”, and name the file {filename}.html. Note that the URLs in this file are NOT relative to this file, but are as they would be found on the gEDA Project Wiki.</div>
</li>
<li class="level2"><div class="li"> The following sequence of commands will retreive a gEDA Project Wiki page (for a list of the gEDA Project Wiki’s pages, use the Index button at the bottom of the page) from the “geda” namespace (when new wiki-pages are created, we <em class="u">explicitly</em> create them in the “geda” namespace) and convert that page into a <acronym title="Portable Document Format">PDF</acronym> document:<br/>
<pre STYLE="background : Lightgreen;margin-left : 2em"><font size="+0">% wget --convert-links -O {page-name}.wget "http://geda.seul.org/wiki/geda:{page-name}?do=export_html"
% sed -e 's/\&amp;/\&/g' {page-name}.wget > {page-name}.sed
% iconv -f utf-8 -t iso-8859-1 {page-name}.sed > {page-name}.iconv
% htmldoc {page-name}.iconv -t pdf14 --webpage --no-title --linkstyle underline --size letter --left 1.00in \\
--right 0.50in --top 0.50in --bottom 0.50in --header .t. --footer . --nup 1 --tocheader .t. --tocfooter ..i \\
--portrait --color --no-pscommands --no-xrxcomments --compression=1 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 \\
--headingfont Helvetica --bodyfont Times --headfootsize 11.0 --headfootfont Helvetica --charset iso-8859-1 \\
--links --no-embedfonts --pagemode document --pagelayout single --firstpage p1 --pageeffect none \\
--pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password ""
--user-password "" --browserwidth 680 -f {page-name}.pdf</font></pre> <br/>
where <strong><code>{page-name}</code></strong> is the wiki’s page name as seen in the upper-left corner of the wiki.</div>
</li>
</ul>
</li>
</ol>
<p>
For example, you would replace {page-name} above with the following for the related wiki-page:
</p>
<ul>
<li class="level1"><div class="li"> start – The wiki’s main page, at <a href="http://geda.seul.org/wiki/" class="urlextern" title="http://geda.seul.org/wiki/" rel="nofollow">http://geda.seul.org/wiki/</a>.</div>
</li>
<li class="level1"><div class="li"> geda:style_guide – This wiki-page, at <a href="http://geda.seul.org/wiki/geda:style_guide" class="urlextern" title="http://geda.seul.org/wiki/geda:style_guide" rel="nofollow">http://geda.seul.org/wiki/geda:style_guide</a>.</div>
</li>
<li class="level1"><div class="li"> geda:faq – The wiki’s <acronym title="Frequently Asked Questions">FAQ</acronym> page, at <a href="http://geda.seul.org/wiki/geda:faq" class="urlextern" title="http://geda.seul.org/wiki/geda:faq" rel="nofollow">http://geda.seul.org/wiki/geda:faq</a></div>
</li>
</ul>
<p>
A <span class="hilited">sample script</span> to convert a single wiki-page into a <acronym title="Portable Document Format">PDF</acronym> document.<br/>
A <span class="hilited">sample script</span> to convert multiple wiki-pages into a single <acronym title="Portable Document Format">PDF</acronym> document.
</p>
<p>
An example of the current (as of 08 May 2006) version of the Wiki, <a href="http://www.offramp.com/wiki/FC5_files/Wiki.pdf" class="urlextern" title="http://www.offramp.com/wiki/FC5_files/Wiki.pdf" rel="nofollow">converted to PDF</a>.
</p>
</div>
<!-- SECTION [2173-5272] -->
<h2><a name="for_new_documents" id="for_new_documents">For new documents:</a></h2>
<div class="level2">
<p>
The following are meant to stimulate discussion on document style:
</p>
<ol>
<li class="level1"><div class="li"> You must “own” all content in the document. If you do not “own” the content, you must get explicit permission from the “owner” to copy the content to the gEDA Project Wiki (see below). Documents on the gEDA Project Wiki should be stand-alone, in the event the source document web-site disappears.</div>
</li>
<li class="level1"><div class="li"> <strong>All</strong> document contents are to be hosted on the gEDA Project Wiki. Images and other media files are to be uploaded to the wiki, and linked to. Do NOT link to external sites unless absolutely necessary.</div>
</li>
<li class="level1"><div class="li"> All documents are to be maintained in the “geda” <a href="http://wiki.splitbrain.org/wiki:namespaces" class="urlextern" title="http://wiki.splitbrain.org/wiki:namespaces" rel="nofollow">namespace</a>. If your document would take advantage of a separate namespace, ask Ales if “geda:sub-namespace” is acceptable. This would be appropriate for very large documents with multiple chapters and lots of images. Such a namespace structure would allow the document to be “broken” into chapters for easier navigation by the user (see <a href="http://wiki.splitbrain.org/wiki:index" class="urlextern" title="http://wiki.splitbrain.org/wiki:index" rel="nofollow">Index</a> for more details).</div>
</li>
</ol>
</div>
<!-- SECTION [5273-6383] -->
<h2><a name="for_existing_documents" id="for_existing_documents">For existing documents:</a></h2>
<div class="level2">
<p>
The following are meant to stimulate discussion on document style:
</p>
<ol>
<li class="level1"><div class="li"> </div>
</li>
</ol>
</div>
<!-- SECTION [6384-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_suse_10.html
Index: geda_suse_10.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:suse_10.0</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:suse_10.0?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:suse_10.0?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:suse_10.0?do=export_raw" />
<meta name="date" content="2006-05-25T08:26:14-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="suse_10.0_install_notes" id="suse_10.0_install_notes">Suse 10.0 install notes</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-39] -->
<h2><a name="prerequisites" id="prerequisites">Prerequisites:</a></h2>
<div class="level2">
<p>
First off, I suggest you use the installer with date code 20051203 (or later). The 2005080X installer may not work with SuSE-10.0 without major upfront preparation.
</p>
<p>
Secondly, if you are installing gEDA onto a pre-existing SuSE system, make sure your system runs the Gnome desktop, or at least has the Gnome libraries installed. If you have a KDE desktop system, unpredictable things may happen with the installer.
</p>
<p>
The remainder of these instructions describe how to build your SuSE system so that you may install gEDA. If you already have gEDA built (and it’s a Gnome desktop), you can use YaST to install any of the below-mentioned packages you might be missing from your original install.
</p>
<p>
When installing SuSE-10.0 using YaST, click on the â??changeâ?? button when YaST shows you your configuration. Select â??softwareâ?? â?? â??detailsâ??. Then add the following packages to your installation list:
</p>
<ul>
<li class="level1"><div class="li"> C/C++ tools</div>
</li>
<li class="level1"><div class="li"> Kernal development</div>
</li>
<li class="level1"><div class="li"> Gnome development</div>
</li>
<li class="level1"><div class="li"> KDE development</div>
</li>
<li class="level1"><div class="li"> TCL/Tk development</div>
</li>
</ul>
<p>
Then change the filter to search for and install the following packages:
</p>
<ul>
<li class="level1"><div class="li"> Gtk-devel</div>
</li>
<li class="level1"><div class="li"> Termcap</div>
</li>
<li class="level1"><div class="li"> Ncurses-devel</div>
</li>
<li class="level1"><div class="li"> wxGTK-devel</div>
</li>
</ul>
<p>
Once these packages are installed, the installer should run to completion.
</p>
</div>
<!-- SECTION [40-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_suse_9.html
Index: geda_suse_9.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:suse_9.3</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:suse_9.3?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:suse_9.3?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:suse_9.3?do=export_raw" />
<meta name="date" content="2006-05-05T23:16:34-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="installer_2005080x_on_suse_9.3_install_notes" id="installer_2005080x_on_suse_9.3_install_notes">Installer 2005080X on Suse 9.3 install notes</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-59] -->
<h2><a name="prerequisites" id="prerequisites">Prerequisites:</a></h2>
<div class="level2">
<p>
When installing SuSE using YaST, click on the â??changeâ?? button when YaST shows you your configuration. Select â??softwareâ?? â?? â??detailsâ??. Then add the following packages to your installation list:
</p>
<ul>
<li class="level1"><div class="li"> C/C++ tools</div>
</li>
<li class="level1"><div class="li"> Kernal development</div>
</li>
<li class="level1"><div class="li"> Gnome development</div>
</li>
<li class="level1"><div class="li"> KDE development</div>
</li>
<li class="level1"><div class="li"> TCL/Tk development</div>
</li>
</ul>
<p>
Then change the filter to search for and install the following packages:
</p>
<ul>
<li class="level1"><div class="li"> Gtk-devel</div>
</li>
<li class="level1"><div class="li"> Termcap</div>
</li>
<li class="level1"><div class="li"> Ncurses-devel</div>
</li>
<li class="level1"><div class="li"> wxGTK-devel</div>
</li>
</ul>
<p>
Once these packages are installed, the installer should run to completion.
</p>
<p>
<span class="hilited">More SuSE info to come. . . . .</span>
</p>
</div>
<!-- SECTION [60-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_syntax_features.html
Index: geda_syntax_features.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:syntax_features</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:syntax_features?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:syntax_features?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:syntax_features?do=export_raw" />
<meta name="date" content="2006-05-08T13:40:25-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="syntax_features" id="syntax_features">Syntax features</a></h1>
<div class="level1">
<p>
The new gEDA Project Wiki pages are hosted using Dokuwiki version 09 March 2006. This wiki-engine has several enhancements:
</p>
<ul>
<li class="level1"><div class="li"> Bug fixes.</div>
</li>
<li class="level1"><div class="li"> A new toolbar in the editor.</div>
</li>
<li class="level1"><div class="li"> <a href="http://wiki.splitbrain.org/wiki:syntax" class="urlextern" title="http://wiki.splitbrain.org/wiki:syntax" rel="nofollow">Syntax</a> enhancements.</div>
</li>
<li class="level1"><div class="li"> Updates to the <a href="http://wiki.splitbrain.org/wiki:search" class="urlextern" title="http://wiki.splitbrain.org/wiki:search" rel="nofollow">Search</a> feature. You can now search for exact phrases by enclosing them with double quotes, and use “*” wildcard searches.</div>
</li>
<li class="level1"><div class="li"> Google <a href="http://wiki.splitbrain.org/wiki:sitemap" class="urlextern" title="http://wiki.splitbrain.org/wiki:sitemap" rel="nofollow">sitemap</a> support. Your edited content will be indexed by Google much faster.</div>
</li>
<li class="level1"><div class="li"> You can upload and embed <a href="http://wiki.splitbrain.org/wiki:images" class="urlextern" title="http://wiki.splitbrain.org/wiki:images" rel="nofollow">other files</a> into the pages using the MediaPopup feature on the toolbar in the editor (including image files, flash files, <acronym title="Portable Document Format">PDF</acronym> files, etc.). Please note that image/media files can not be removed once uploaded by an author.</div>
</li>
<li class="level1"><div class="li"> Footnotes.</div>
</li>
<li class="level1"><div class="li"> Larger global cache, allowing for larger documents (currently set to 20 <acronym title="Megabyte">MB</acronym>).</div>
</li>
<li class="level1"><div class="li"> You can subscribe to e-mail pagechange notification, on a wiki-page by wiki-page basis. If you are interested in monitoring the changes made by others to a spicific page, simply press the “Subscribe Changes” button at the bottom of the wiki-page. To unsubscribe from a wiki-page, simply press the “Unsubscribe Changes” button.</div>
</li>
<li class="level1"><div class="li"> URLs are now “pretty”.</div>
</li>
<li class="level1"><div class="li"> Breadcrumbs (i.e., the line at the top of the browser’s window that starts with “Trace:”. This is a “where are you” indicator.</div>
</li>
<li class="level1"><div class="li"> Wiki-pages can be <a href="http://wiki.splitbrain.org/wiki:export" class="urlextern" title="http://wiki.splitbrain.org/wiki:export" rel="nofollow">exported</a> to different formats (e.g., plain-text, simple <acronym title="Extensible HyperText Markup Language">XHTML</acronym> (the page without navigational elements), rendered <acronym title="Extensible HyperText Markup Language">XHTML</acronym> (no head or body tags), <acronym title="Hyper Text Transfer Protocol">HTTP</acronym>).</div>
</li>
<li class="level1"><div class="li"> The <code><code></code></code> tag supports syntax highlighting for numerous programming languages.</div>
</li>
<li class="level1"><div class="li"> A playground for authors to “play” with new features, before implimenting on the wiki’s pages.</div>
</li>
<li class="level1"><div class="li"> Control of Dokuwiki’s <a href="http://wiki.splitbrain.org/wiki:caching#purging_the_cache" class="urlextern" title="http://wiki.splitbrain.org/wiki:caching#purging_the_cache" rel="nofollow">caching</a> operations. This is important to wiki-page authors, as sometimes a page gets cached by Dokuwiki on the server, and needs to be purged. Remember, what the author sees may not be what others see.<br/>
This is different than your browser’s cache, which may occassionally need to be flushed. For example, when the <acronym title="Hypertext Preprocessor">PHP</acronym> global memory limit is exceeded, that wiki-page can’t be displayed, even if the <acronym title="Hypertext Preprocessor">PHP</acronym> global memory limit is changed on the server. You would need to flush your browser’s cache to load and view the wiki-page.</div>
</li>
</ul>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_systemc_netlister_readme.html
Index: geda_systemc_netlister_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:systemc_netlister_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:systemc_netlister_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:systemc_netlister_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:systemc_netlister_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:22:16-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="systemc_netlister_readme" id="systemc_netlister_readme">SystemC netlister README</a></h1>
<div class="level1">
<pre class="code">TITLE:
Gnetlist SystemC Backend
OBJECTIVE:
Transform a geda schematic into a transaction based structural systemc module.
LIMITATIONS:
1.- Only transaction based wires are considered (wire_name<user_type>).
2.- Unnamed wires are eliminated.
3.- In/out ports have to be inserted manually in the sysc code.
4.- Duplicated include headers are not eliminated by the backend.
5.- The maximum number of object constructor parameters is 31 (attr1->attr31).
LINKS:
GPL Electronic Design Automation (geda-gnetlist): http://www.geda.seul.org
SystemC: http://www.systemc.org
ACK:
Based on gnet-verilog.scm by Mike Jarabek.
EXAMPLE:
Schematic:
src1 alg1 snk1
______________ _______________ _______________
| source | a<user_type> | algorithm | b<float> | sink |
| OUT|__ _________ __|IN OUT|__ _____ __|IN |
| | | | | |
| infile.data| | | | outfile.data|
|____________| |_____________| |_____________|
Attributes:
Schematic:
module_name=test_sch2sysc
Wires:
netname=a<user_type>
netname=b<float>
Symbols:
refdes=src1 attr1=infile.data
refdes=alg1
refdes=snk1 attr1=outfile.data
refdes=pina
refdes=pinb
SystemC:
#include "systemc.h"
#include "sink.h"
#include "source.h"
#include "algorithm.h"
SC_MODULE (test_sch2sysc)
{
/* Port directions begin here */
/* Wires from the design */
sc_signal<float> b;
sc_signal<packet_type> a;
/* Package instantiations */
sink snk1;
source src1;
algorithm alg1;
SC_CTOR(test_sch2sysc):
snk1("snk1","outfile.data"),
src1("src1","infile.data"),
alg1("alg1")
{
snk1.IN(b);
src1.OUT(a);
alg1.IN(a);
alg1.OUT(b);
}
};
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_tasks.html
Index: geda_tasks.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:tasks</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:tasks?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:tasks?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:tasks?do=export_raw" />
<meta name="date" content="2006-05-07T00:54:13-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="geda_tasks" id="geda_tasks">gEDA Tasks</a></h1>
<div class="level1">
<p>
gEDA is run by volunteers, so these are volunteer (read: unpaid) tasks. Please consider helping out. Thank you.
</p>
<ul>
<li class="level1"><div class="li"> <strong>Documentation Writers/Editors</strong><br/>
Somebody is needed to act as an editor for the gEDA documentation effort. Basically this person would take whatever documentation already exists and/or is currently being written and formats it into something presentable. This individual does not write the actual documentation, but would instead perform editorial work. People who want to write the actual documentation are also needed.</div>
</li>
<li class="level1"><div class="li"> <strong>Publicity Manager</strong><br/>
Somebody is needed to do publicity for the gEDA project. This consists of posting release updates to the various Linux/Unix websites (like Freshmeat or LWN)</div>
</li>
<li class="level1"><div class="li"> <strong>Netlist Hacker</strong><br/>
Somebody who is familiar with the generation/management of netlists is needed to help work on and improve gnetlist. Whether the existing gnetlist is used or if a total rewrite is needed is always an open option. Must be extremely familiar with UNIX/C/C++ programming.</div>
</li>
<li class="level1"><div class="li"> <strong>Symbol Library Hacker</strong><br/>
Somebody is needed to help get the symbol library up to the current symbol <acronym title="specification">spec</acronym>. This individual would also help in the integration of new symbols and making sure that they meet the current symbol <acronym title="specification">spec</acronym>. The task of getting the symbol library up to <acronym title="specification">spec</acronym> is a combination of manual effort and automated updating (this sort of automated updating lends itself very well to a person with shell/perl scripting familiarity).</div>
</li>
<li class="level1"><div class="li"> <strong>geda <acronym title="Graphical User Interface">GUI</acronym> Hacker</strong><br/>
Somebody who knows C, UNIX, and gtk+ programming is needed to work on the gEDA <acronym title="Graphical User Interface">GUI</acronym> (the program named geda). This program has been stalled for the past year due to the lack of manpower. Whether the existing geda is used or a total rewrite is needed is always an open option.</div>
</li>
<li class="level1"><div class="li"> <strong>UNIX Port Testers</strong><br/>
People are always needed to test gEDA on different and new UNIX like operating systems. This person would basically download a new release and make sure it works on their platform of choice. Any problems found would be then submitted to the appropriate gEDA author.</div>
</li>
<li class="level1"><div class="li"> <strong>Windows Port Hacker/Manager</strong><br/>
Somebody with expertise building and testing gEDA on UNIX systems and familiarity with the <acronym title="Microsoft">MS</acronym> Windows 95/98/NT platform is needed to manage the gEDA Windows port. Testing, bug fixing, packaging, and releasing of gEDA on the Windows platform would be the primary responsibility of this person. This task requires a person who knows C, gtk+, UNIX, and <acronym title="Microsoft">MS</acronym> Windows programming. The Windows port will NOT move forward if this task is not filled.</div>
</li>
<li class="level1"><div class="li"> <strong>Release Hacker</strong><br/>
Somebody who wants to create and manage releases is needed. Releases occur when the code is ready to be released, so there’s no marketing pressure. This task requires gEDA building/testing familiarity as well perhaps some minor code hacking.</div>
</li>
<li class="level1"><div class="li"> <strong>Website/Mirror Hacker</strong><br/>
Somebody to watch over the mirrors and maybe do some <acronym title="HyperText Markup Language">HTML</acronym> hacking is needed. There are currently three websites which need to be monitored and occasionally fixed. The person would also have influence in the changing/expansion of the gEDA website. Duties would be split among the current webmasters.</div>
</li>
</ul>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_todos.html
Index: geda_todos.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:todos</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:todos?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:todos?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:todos?do=export_raw" />
<meta name="date" content="2006-05-07T01:15:37-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#todo" class="toc">ToDo</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#things_to_be_done_before_the_next_release" class="toc">Things to be done before the next release</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#longer_term_upgrades_desired_for_specific_tools" class="toc">Longer term upgrades desired for specific tools</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#ideas_for_new_tools_or_geda_suite-wide_enhancements" class="toc">Ideas for new tools or gEDA Suite-wide enhancements</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="todo" id="todo">ToDo</a></h1>
<div class="level1">
<p>
These lists are meant to provide developers a reminder of undone projects. It is also a wish list capturing userâ??s desires for new features. New developers can also look here for projects which they might be interested in working on.
</p>
</div>
<!-- SECTION [1-256] -->
<h2><a name="things_to_be_done_before_the_next_release" id="things_to_be_done_before_the_next_release">Things to be done before the next release</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <strong>Gschem</strong>:</div>
<ul>
<li class="level2"><div class="li"> Fix postscript output.</div>
</li>
</ul>
</li>
</ul>
</div>
<!-- SECTION [257-356] -->
<h2><a name="longer_term_upgrades_desired_for_specific_tools" id="longer_term_upgrades_desired_for_specific_tools">Longer term upgrades desired for specific tools</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <strong>Libgeda</strong>:</div>
<ul>
<li class="level2"><div class="li"> Enable handling of .sch files with symbols having some (but not all) pins promoted onto the .sch file. This will enable pin-swapping via backannotation from PCB.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Gschem</strong>:</div>
<ul>
<li class="level2"><div class="li"> Enable hierarchical bus support.</div>
</li>
<li class="level2"><div class="li"> Make gschemrc variables settable from within gschem using a â??settingsâ?? pull-down menu item (new).</div>
</li>
<li class="level2"><div class="li"> Make gschem start up with a reasonable zoom, not zoomed waaaaay out.</div>
</li>
<li class="level2"><div class="li"> Improve symbol library to handle very large symbol collections better</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Gnetlist</strong>:</div>
<ul>
<li class="level2"><div class="li"> Enable <strong><code>â??help</code></strong> flag. Do other gEDA/gaf programs recognize this flag?</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Gattrib</strong>:</div>
<ul>
<li class="level2"><div class="li"> Make it export CSV to support BOM generation.</div>
</li>
<li class="level2"><div class="li"> Get printing working.</div>
</li>
<li class="level2"><div class="li"> Enable attachment of attributes to nets.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Garchive</strong>:</div>
<ul>
<li class="level2"><div class="li"> Incorporate guile so that it reads RC files using the same mechanism as the rest of gEDA/gaf.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>CD Installer</strong>:</div>
<ul>
<li class="level2"><div class="li"> Change it so that the user is presented a pick-list at the beginning of the install, instead of blindly installing everything.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Refdes_renum</strong>:</div>
<ul>
<li class="level2"><div class="li"> Doesnâ??t currently work properly with slotted parts (it gives new refdes numbers to slotted parts). Fix it so it recognizes slotted parts and assigns refdes appropriately.</div>
</li>
<li class="level2"><div class="li"> Provide <strong><code>â??gentle</code></strong> option, which doesnâ??t clobber (overwrite) any refdeses which are already assigned.</div>
</li>
</ul>
</li>
</ul>
</div>
<!-- SECTION [357-1752] -->
<h2><a name="ideas_for_new_tools_or_geda_suite-wide_enhancements" id="ideas_for_new_tools_or_geda_suite-wide_enhancements">Ideas for new tools or gEDA Suite-wide enhancements</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> Develop scheme for backward annotation of changes from PCB to gschem. Requires modifications to libgeda to support, e.g. pin promotion from .sym file to .sch file (enabling pin swapping).</div>
</li>
<li class="level1"><div class="li"> Create a Gerber â?? .pcb conversion tool. Result is metal layer or footprint editable by PCB. This might be a <acronym title="Practical Extraction and Report Language">Perl</acronym> script.</div>
</li>
<li class="level1"><div class="li"> Implement lockfiles between gattrib and gschem.</div>
</li>
</ul>
</div>
<!-- SECTION [1753-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_tragesym_readme.html
Index: geda_tragesym_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:tragesym_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:tragesym_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:tragesym_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:tragesym_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:24:31-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="tragesym_symbol_generator_readme" id="tragesym_symbol_generator_readme">tragesym (symbol generator) README</a></h1>
<div class="level1">
<pre class="code">tragesym is a small python script that creates geda symbols out of
structured textfiles.
For creating a symbol you have to edit the sourcefile first. You can
use the template.src file, which is in /examples/tragesym/ directory.
Some examples are in the examples/tragesym directory too.
For possible footprint names take a look into the ~geda directory
of the PCB program.
usage is:
tragesym <sourcefile> <symbolfile>
After you have translated the sourcefile to the symbolfile you have to
rearrange some pins with gschem, translate the symbol to the origin
and save it in an appropriate symbol directory. Make the attributes
visible while doing that (edit->show hidden text) and hide the text
again before saving.
tragesym requires python (versions greater 1.5 should work).
Comment an questions are welcome.
Send it to Werner Hoch (werner.ho@xxxxxx)
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_usage.html
Index: geda_usage.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:usage</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:usage?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:usage?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:usage?do=export_raw" />
<meta name="date" content="2006-05-06T00:02:56-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#what_s_the_best_way_to_learn_to_use_geda" class="toc">What's the best way to learn to use gEDA?</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#what_does_the_design_flow_in_geda_look_like" class="toc">What does the design flow in gEDA look like?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_limitations_exist_for_the_geda_tools" class="toc">What limitations exist for the gEDA tools?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_local_configuration_files_are_used_for_a_project" class="toc">What local configuration files are used for a project?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_are_the_names_and_locations_of_the_rc_files_used_with_geda_gaf_applications" class="toc">What are the names and locations of the RC files used with gEDA/gaf applications?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#what_about_a_project_manager" class="toc">What about a project manager?</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="what_s_the_best_way_to_learn_to_use_geda" id="what_s_the_best_way_to_learn_to_use_geda">What's the best way to learn to use gEDA?</a></h1>
<div class="level1">
<p>
The first thing to do is to read and understand Bill Wilsonâ??s excellent <a href="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">gschem -> gsch2pcb -> PCB</a> tutorial. This should get you started.
</p>
<p>
Also be sure to check out the other <a href="http://geda.seul.org/docs" class="urlextern" title="http://geda.seul.org/docs" rel="nofollow">gEDA documentation</a> available on this website.
</p>
<p>
However, perhaps the best way to learn the gEDA Suite is to download it and try it out yourself! If you consult Bill Wilsonâ??s <a href="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" class="urlextern" title="http://geda.seul.org/docs/current/tutorials/gsch2pcb/tutorial.html" rel="nofollow">tutorial</a> while trying the suite for yourself, you will become an expert in no time!
</p>
</div>
<!-- SECTION [1-664] -->
<h2><a name="what_does_the_design_flow_in_geda_look_like" id="what_does_the_design_flow_in_geda_look_like">What does the design flow in gEDA look like?</a></h2>
<div class="level2">
<p>
Here is a quick graphic for simple PCB design flow using the gEDA Suite:
</p>
<p>
<a href="_detail/geda_design_flow.html" class="media" title="geda:design_flow.jpg"><img src="_media/geda_design_flow.jpg" class="media" title="design_flow.jpg" alt="design_flow.jpg" /></a>
</p>
<p>
In words, the design flow for a simple PCB proceeds as follows:
</p>
<ol>
<li class="level1"><div class="li"> Create your schematic using â??gschemâ??.</div>
</li>
<li class="level1"><div class="li"> Check your schematics with the DRC checker. Learn about it <a href="geda_faq-attribs.html" class="wikilink1" title="geda:faq-attribs">here</a>.</div>
</li>
<li class="level1"><div class="li"> Assign reference designators to your components using â??grenumâ?? or â??refdes_renumâ?? (or just attach them manually from within â??gschemâ??).</div>
</li>
<li class="level1"><div class="li"> Assign other component attributes (such as component footprints) using â??gattribâ?? (or just attach them manually using â??gschemâ??).</div>
</li>
<li class="level1"><div class="li"> Create a preliminary layout file and netlist using â??gsch2pcbâ??.</div>
</li>
<li class="level1"><div class="li"> Lay out and route your board using â??pcbâ??.</div>
</li>
<li class="level1"><div class="li"> Output Gerbers from within â??pcbâ?? using â??File â?? print layoutâ??, and select â??Gerber/RS274Xâ?? as the output file type.</div>
</li>
</ol>
<p>
If you make changes, or add to your schematic or attributes while in layout, update your board file like this:
</p>
<ol>
<li class="level1"><div class="li"> Edit your schematic and/or attributes (â??gschemâ?? or â??gattribâ??).</div>
</li>
<li class="level1"><div class="li"> Check your schematics with the DRC checker. Learn about it <a href="geda_faq-attribs.html" class="wikilink1" title="geda:faq-attribs">here</a>.</div>
</li>
<li class="level1"><div class="li"> Forward annotate your changes using â??gsch2pcbâ??.</div>
</li>
<li class="level1"><div class="li"> From within â??pcbâ??, update your components using â??File â?? load layout data to paste bufferâ??, and then click on the drawing area to place the components.</div>
</li>
<li class="level1"><div class="li"> From within â??pcbâ??, update your netlist using â??File â?? load netlist fileâ??.</div>
</li>
</ol>
<p>
Usually, users invoke the individual tools from the command line. A project manager (â??gedaâ??) exists, but needs improvement.
</p>
</div>
<!-- SECTION [665-2338] -->
<h2><a name="what_limitations_exist_for_the_geda_tools" id="what_limitations_exist_for_the_geda_tools">What limitations exist for the gEDA tools?</a></h2>
<div class="level2">
<p>
The most important thing to keep in mind about gEDAâ??s limitations is this: GEDA is an open-source software project. It has some limitations, but unlike many instances of commerical software, its limitations are not artificial, arbitrary, or driven by marketeering. That is, gEDA is neither nagware, crippleware, demoware, nor â??limited student editionâ??-ware. Any limitations to the gEDA tools exist because the programmers havenâ??t yet implemented that particular feature. Since the code is open for all to see and modify, anybody is welcome to implement a new feature or remove a limitation, and then submit their patches to the project. If you are a hacker and are interested in making a contribution to the gEDA project, consider tackling one of the limitations listed below! You will make a lot of friends, and earn international exposure!
</p>
<ul>
<li class="level1"><div class="li"> Hierarchical bus support: Support for hierarchical busses doesnâ??t exist yet.</div>
</li>
<li class="level1"><div class="li"> Net and pin attributes in gattrib: Attaching routing attributes for nets and pins in gattrib remains TBD. (Net attributes are useful for high-speed design. For example, itâ??s often important that all tracks in a bus have the same electrical length. Unfortunately, itâ??s not clear that PCB will support these routing attributes right now.)</div>
</li>
<li class="level1"><div class="li"> Backannotation from PCB to gschem. Support for pinswapping and modification of the design file in pcb with subsequent backanno to gschem is TBD.</div>
</li>
<li class="level1"><div class="li"> The project manager â??gedaâ?? is out of date, and needs an update.</div>
</li>
<li class="level1"><div class="li"> Layer count in PCB: Currently, the layer count in PCB is limited to about 8 layers (which is more than adequate for small- and mid-sized projects). The PCB developers are working on increasing the layer count to an aribtrary number, but they are not yet done with this work. Contact them directly if you are interested in this project.</div>
</li>
</ul>
</div>
<!-- SECTION [2339-4233] -->
<h2><a name="what_local_configuration_files_are_used_for_a_project" id="what_local_configuration_files_are_used_for_a_project">What local configuration files are used for a project?</a></h2>
<div class="level2">
<p>
A typical PCB design requires the following config files in your local directory:
</p>
<ul>
<li class="level1"><div class="li"> gafrc: This holds configuration info for the gEDA/gaf programs (i.e. gschem, gattrib, gnetlist, etc.). It should hold pointers to your local symbol directory (if any).</div>
</li>
<li class="level1"><div class="li"> attribs: If you use â??gnetlist -g bom2â?? to create a project BOM, then you need this file in order to specify which attributes are written into the BOM.</div>
</li>
<li class="level1"><div class="li"> projectrc: When going to layout, â??gsch2pcb projectrcâ?? is a convenient way to specify paths to local footprint directories, as well as hold other configuration information for â??gsch2pcbâ??. Note that this file may have any name you choose; I like to use projectrc ince its name is suggestive of its function.</div>
</li>
</ul>
<p>
Further detailed information about each configuration file is provided in the <a href="http://geda.seul.org/docs/index.html" class="urlextern" title="http://geda.seul.org/docs/index.html" rel="nofollow">documentation</a> for each facility.
</p>
</div>
<!-- SECTION [4234-5185] -->
<h2><a name="what_are_the_names_and_locations_of_the_rc_files_used_with_geda_gaf_applications" id="what_are_the_names_and_locations_of_the_rc_files_used_with_geda_gaf_applications">What are the names and locations of the RC files used with gEDA/gaf applications?</a></h2>
<div class="level2">
<p>
The various gEDA/gaf applications (gschem, gattrib, gnetlist, etc.) use a set of RC files to set various configurable options in the tools themselves. These RC files are read in by each application upon start-up. Philosophically, there are three places where a gEDA/gaf application looks for RC files:
</p>
<ul>
<li class="level1"><div class="li"> In the system installation directory: <strong><code>${prefix}/share/gEDA/</code></strong>. This location holds RC files which are global to the entire system, and are common to all users. These RC files must be found and successfully loaded for the gEDA application to work properly. <strong><code>${prefix}</code></strong> is set to the path where you installed gEDA/gaf.</div>
</li>
<li class="level1"><div class="li"> In the userâ??s home directory: <strong><code>$HOME/.gEDA/</code></strong>. This location holds RC files which apply to all of this userâ??s projects. <strong><code>.gEDA</code></strong> is a directory. These files are optional. Do not just place a copy of the system-gschemrc (or whatever) into this directory; this will not work properly. The right thing to do is to override specific things you want to change.</div>
</li>
<li class="level1"><div class="li"> In the local project directory. This location holds RC files which apply to the local project (which also lives in this directory). These RC files provide specific overrides, such as component or source libraries. This file is also optional. Do not just place a copy of the system-gschemrc (or whatever) into this directory; this will not work properly.</div>
</li>
</ul>
<p>
The RC file system has evolved over time. Originally, each gEDA/gaf application used its own RC file (for example, gschem used gschemrc, gnetlist used gnetlistrc, and so on). However, as the number of gEDA/gaf applications grew, it became clear that the individual RC files held a lot of redundant information, and that new users were confused by all the different RC files. Therefore, the different RC files were consolidated into a single file, called â??gafrcâ??. However, because gschem needs all kind of special customizations, we decided to keep the system gschemrc in addition to all the gafrc files. Also, in order to preserve backwards compatibility, the old RC file system is still maintained in the system directory. Accordingly, the current RC file configuration looks like this:
</p>
<ul>
<li class="level1"><div class="li"> In the system installation directory:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>system-gafrc</code></strong> â?? This contains most of the global gaf settings.</div>
</li>
<li class="level2"><div class="li"> <strong><code>system-gattribrc</code></strong></div>
</li>
<li class="level2"><div class="li"> <strong><code>system-gnetlistrc</code></strong></div>
</li>
<li class="level2"><div class="li"> <strong><code>system-gschemrc</code></strong> â?? This contains lots of settings specific to gschem</div>
</li>
<li class="level2"><div class="li"> <strong><code>system-gschlasrc</code></strong></div>
</li>
<li class="level2"><div class="li"> <strong><code>system-gsymcheckrc</code></strong></div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> In the userâ??s <strong><code>${HOME}</code></strong> directory:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>.gEDA/gafrc</code></strong></div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> In the local project directory:</div>
<ul>
<li class="level2"><div class="li"> <strong><code>gafrc</code></strong> â?? This should contain your local overrides, such as pointers to locally defined symbols.</div>
</li>
</ul>
</li>
</ul>
<p>
Also loaded by the system-gschemrc is the gschem-darkbg or gschem-lightbg color definitions.
</p>
<p>
Finally, note that gEDA/gaf applications will look for up to six configuration files upon startup:
</p>
<ol>
<li class="level1"><div class="li"> <strong><code>system-gafrc</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>system-gschemrc</code></strong> (or whatever)</div>
</li>
<li class="level1"><div class="li"> <strong><code>${HOME}/.geda/gafrc</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>${HOME}/.geda/gschemrc</code></strong> (or whaver)</div>
</li>
<li class="level1"><div class="li"> <strong><code>./gafrc</code></strong></div>
</li>
<li class="level1"><div class="li"> <strong><code>./gschemrc</code></strong> (or whatever)</div>
</li>
</ol>
<p>
If you get a warning that your app canâ??t find one or another of these files, donâ??t worry. Most of them are optional. The only required files are the system RC files.
</p>
</div>
<!-- SECTION [5186-8559] -->
<h2><a name="what_about_a_project_manager" id="what_about_a_project_manager">What about a project manager?</a></h2>
<div class="level2">
<p>
The individual components in the gEDA design suite do not have the concept of an end-to-end project. Rather, they deal with their own files (e.g. â??gschemâ?? â?? .sch, â??pcbâ?? â?? .pcb). However, there is a project manager, called â??gedaâ??, which you can invoke from the command line. Itâ??s goal is to help manage your design as a whole as you take it from concept, through schematic capture, attribute attachment, layout, BOM generation, and so on.
</p>
<p>
Unfortunately, development of â??gedaâ?? has not kept up with the rest of gEDA/gaf. In particular, â??gedaâ?? does not use the latest tools or methods to accomplish the individual design tasks. Therefore, we recommend that user simply invoke the individual tools (e.g. gschem, gattrib, gnetlist, gsch2pcb, etc) from the command line. Meanwhile, if your are a hacker are looking for a smallish project to adopt, polishing up â??gedaâ?? would make a nice introduction to the gEDA Suite, and you would make a lot of friends by doing so!
</p>
</div>
<!-- SECTION [8560-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_vams_netlister_readme.html
Index: geda_vams_netlister_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:vams_netlister_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:vams_netlister_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:vams_netlister_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:vams_netlister_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:21:19-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#vams_netlister_readme" class="toc">VAMS netlister README</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#vams_netlister" class="toc">VAMS netlister</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#vams_netlister_syntax_architecture" class="toc">VAMS netlister syntax architecture</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#vams_netlister_syntax_entity" class="toc">VAMS netlister syntax entity</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="vams_netlister_readme" id="vams_netlister_readme">VAMS netlister README</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-36] -->
<h2><a name="vams_netlister" id="vams_netlister">VAMS netlister</a></h2>
<div class="level2">
<pre class="code">date: 10 october 2000
gEDA: gnetlist vams mode
first unrevised vams mode documentation
Written by: Martin Lehmann
-------------------------------------------------------------------------
VHDL-AMS support for the gEDA gnetlist tool
-------------------------------------------
CONTENT:
1. functionality
1. ARCHITECTURE generation
2. ENTITY generation
3. automatisate gnetlist calls
2. implementation
1. the vams mode of gEDA gnetlist
1. scheme
1. settings and new definition
2. gnet-vams.scm
1. routines main structure
3. helpfully setting in gEDA gschem environment
2. new c-code
1. routines
2. code-adaptation
2. automatic generating gnetlist calls in gEDA gschem
1. generated gEDA gnetlist calls
2. scheme
1. generate_netlist.scm
2. settings
3. new c-code
1. routines
2. code-adaptation
The purpose of our endevour, is that gEDA gnelist completly
supportted VHDL-AMS (VHDL Analog and Mixed-Signal) netlist
generation.
The VHDL-AMS netlist support mode is called vams.
1. FUNCTIONALITY
gEDA gnetlist in vams mode allow it to generate a VHDL-AMS
ARCHITECTURE or an ENTIY declaration. Which of both tasks is
performed, dependends on the generate-mode variable. This variable
is defined in the gnetlist command or will be set default.
If generate-mode=1 (default) gnetlist creates a netlist as an
VHDL-AMS ARCHITECTURE of the current schematic. Otherwise
(generate-mode=2), it creates an VHDL-AMS ENTITY declaration of the
selected component (this task needs information from gEDA gschem,
see below).
Now follows a stepwise discription of the program run in both
submodes.
We presuppose that you are familiar with the structure of gEDA
gnetlist usage (otherwise try gnetlist -help) and that you have
ever seen an VHDL-AMS ARCHITECTURE with its belonging ENTITY. If
you does not then the following distription will be seems very
strange to you. Maybe the syntax files (syntax_entity.txt,
syntax_architeture.txt) can helps you further.
==================================================================
1.1. ARCHITECTURE GENERATION
We suppose generate-mode is equal to 1, from this it follows that
vams creates a netlist as an ARCHITECTURE (saved to
<value-of-toplevel-attribute-entity>_arc.<output-fileextension>).
ARCHITECTURE <architecture-identifier> OF <entity-identifier> IS
The architecture-identifier we are getting from the toplevel
attribute architecture, which we have introduced. If it is not
defined, we are setting architecture-identifier default
(default_architecture). The same have we doing with the
entity-identifier (toplevel attribute entity, default_entity).
{<subnet-object> <subnet-name> : subnet-kind;}
In the signal declaration part all subnets of the schematic will be
declarated. A subnet declaration consists of an net-object, a
net-name and a net-kind. All subnets are connected to various
components pins. If this pins have all the same port-object and the
same port-kind it is ok, but if one of them different, the net is
faulty, and will be not declarated. Moreover, if the subnet-object
a quantity, then it will be checked, whether the subnet consists
exactly one output pin (port-mode), else the subnet is faulty too.
The three net attributes (object, kind, mode) we are getting from
the pin attribs, port_kind, port_object and port_mode (which we
have introduced newly) of a component pin.
BEGIN
Ok. it's only marks the start of the architecture body.
{<label> : ENTITY <entity> [(<architecture>)]
[GENERIC MAP (<set generic> => <generic-value>
{; <set-generic=> <generic-value>})]
PORT MAP ( <pin-name> => <subnet-name>{; <.. => ..>});}
We only support component instantiation statements, like this
above, because we generate simple VHDL-AMS netlists. The label of
an instance is defined from the uref of the instanciated
component. Watch out, this label must be unique,it is not checked
anywhere. The entity variable is not the same as the
entity-identifier, it is the value of the device attribute which on
its part identifies the precompiled ENTITY of this special
component. Similar is the architecture variable belonging to the
instanciated components ARCHITECTURE (note: one ENTITY can have more
ARCHITECTURES), hence we are getting it from the component
attribute ARCHITECTURE (newly introduced).
All generics of the generic-list are component parameters, which
are different from its default values (set in its ENTITY
declaration). How can we distinguish them? All defined generics
are attached to the component and looks like :
<attribute-name>=?<default-value> <- default, not in
generic-list
And if you want to change a parameter, you only must delete the
?-character and replace the default-value with your wanted value,
like this :
<attribute-name>=<new-value> <- element of generic list
If you do it this way, the new assigned value and its attribute-name
will be appear in the GENERIC MAP (set-generic=attribute-name and
generic-value=new-value).
The PORT MAP consists of all pins of a component and which nets
them connected to. The pin-name is getting from the pin# attribute
of the pin and the subnet-name means the value of the label
attribute of a net (mostly default named), which the pin is
connected to. If the pin directly wired to a PORT component (=
component, which device attribute =PORT), then we assign the uref
of this component to subnet-name.
END ARCHITECTURE <architecture-identifier>;
I think, this line needs no more explanation. The
architecture-identifier is the same like in the first line of
ARCHITECTURE declaration. Hence, the ARCHITECTURE part ends here.
==================================================================
1.2. ENTITY GENERATION
Now, we suppose generate-mode is equal to 2, from this it follows
that vams creates an ENTITY declaration of a component (save to
<component-device>.vhdl). If there no component selected (empty
top-attribs list) then it will be created an toplevel ENTITY of the
current schematic (save to
<value-of-toplevel-attribute-entity>.vhdl).
LIBRARY <library-identifier>{,<library-identifier>};
USE <package-identidier>{,<package-identifier>};
Well, the context clause part is not very ingenious. All libraries
and packages you needs for your simulation you must insert staticly
(a library contents precompiled ENTITIES, ARCHITECTURES and
PACKAGES, which are needed from base components [base of the
hierachical netlist] of your schematic. a package contents
predefined types, constants, ...). We are searching for a better
usability of this part.
ENTITY <entity-identifier> IS
[genric_clause]
[port_clause]
END ENTITY;
If you want generate a toplevel ENTITY of your current schematic
then the entity-identifier is defined from the toplevel attribute
entity of the schematic-file. Moreover, there are no generic_clause
and no port_clause.
In case of an component based ENTITY declaration, the
entity-identifier is getting from the device attribute of the
selected component (this attribute is included in top-attribs list,
which is defined in the automatic generated gnetlist command .. more
about this, later).
generic_clause :=
GENERIC ( <generic-identifier> : REAL := <default-value>
{;<generic-identifier> : REAL := <default-value>});
All needed generic-identifiers and it default-values are getting
from the top-attribs list. Note: all attached attributes of a
component appears in the generic_clause, only special attributes,
like uref, source and architecture, are taked out. The values of
this attributes are taked from the top-attribs list, too, but it
does not matter whether the value starts with a ?-character or not
(?-character always will be deleted, if it exist in front of a
value).
port_clause :=
PORT (<port-kind> <port-identifier> : [<port-mode>] <port-type>
{;<port-kind> <port-identifier> : [<port-mode>] <port-type>});
All variables of this clause are grabbed from the symbol of the
selected component. Port-kind corresponds with the value of the
port_kind attribute of the pin, which pin# attribute value is equal
to port-identifier. Just as corresponds port-type with the the
value of the pin attribute port_type and port-mode with the value
of port_mode.
===================================================================
1.3. AUTOMATISATING gnetlist CALLS
Because it is very arduous to type the whole gnetlist command,
which all its parameters, per hand into the terminal, we are
implement an automatisation of this process in gEDA gschem. This
makes it possible to create a VHDL-AMS ARCHITECTURE or ENTITY
whitout any commandline actions. The only thing you must do, is to
use one of the following hotkeys:
<g e> for generating an ENTITY
<g n> for genarating an ARCHITECTURE.
NOTE to <g e> - hotkey : If one component of the schematic
selected then the ENTITY generation
will be applied to this component !!
===================================================================
2. IMPLEMENTATION
At this section it will be explained the basic concept of the
implementation, which is splited in two sections. The first one
aimed to the gnelist implementation and the second to the gschem
implementation.
2.1. THE VAMS MODE OF gEDA gnetlist
To realize gnetlist VHDL-AMS support, it was necessary to create
new scheme and c stuff.
2.1.1. SCHEME
The scheme implementation contents two parts. On one hand the new
file gnet-vams.scm, which realize the VHDL-AMS-code generation, and
on the other hand some settings in rc-files.
2.1.1.1. SETTINGS AND NEW DEFINITIONS
The following lines insert in your gschemrc, or wherever you want,
but it must be loaded at gnetlist startup.
- load two modules, which we needs in our new implementation.
(define-module (ice-9 ls) :use-module (ice-9 common-list)
:use-module (ice-9 string-fun))
- load main file for VHDL-AMS support, which contents the
startup procedure vams.
(load "<path_of_gnet-vams.scm>/gnet-vams.scm")
2.1.1.2. gnet-vams.scm
This file contents all necessary scheme-functions to generate
VHDL-AMS-code. Especially, the main procedure vams, which can be
execute from the gnetlist command.
For example :
gnetlist -g vams schematic_filename.sch
...
2.1.2.1. ROUTINES MAIN STRUCTURE
the mainly functions structure looks like:
- (vams output-filename)
ARCHITECTURE generation
- (vams:write-secondary-unit architecture entity output-port)
- (vams:write-architecture-declarative-part output-port)
- (vams:write-signal-declarations output-port)
- (vams:write-architecture-statement-part packages output-port)
- (vams:write-generic-map output-port package)
- (vams:write-port-map package output-port)
ENTITY declaraction
- (vams:write-primary-unit entity port-list generic-list output-port)
- (vams:write-context-clause output-port)
- (vams:write-generic-clause generic-list output-port)
- (vams:write-generic-list generic-list output-port)
- (vams:write-port-clause port-list output-port)
- (vams:write-port-list port-list output-port)
2.1.1.3 HELPFULLY SETTING IN THE gEDA gschem ENVIRONMENT
This settings are not absolutly necessary, but they makes work
easier.
- set in .gEDA/gschemrc or wherever you want, but place it
right.
(attribute-promotion "enable")
(promote-invisible "enable")
(enforce-hierarchy "disabled")
(attribute-name "port_object")
(attribute-name "port_type")
(attribute-name "port_mode")
(attribute-name "entity")
(attribute-name "architecture")
2.1.2. NEW C - CODE
To got all informations, which we needed for currently netlist
generation, we must implemented two new c - functions.
2.1.2.1 NEW ROUTINES (saved in vams_misc.c)
SCM vams_get_package_attributes(SCM scm_uref)
The first function gets all attribute names (not its values) of a
component. This routine requires the name a component (package),
especially the uref of it, and returns a list of all attribute
names which are attached to this package.
We needs this functionality to produce a currectly
VHDL-AMS GENERIC MAP.
char* vams_get_attribs_list
(OBJECT *object, SCM *list, OBJECT **return_found)
It exists only for the support of the first function.
2.1.2.2. CODE ADAPTATION
To place this new functions at gnetlist scheme's disposal, you must
perform the following actions.
(1) gnetlist/src/g_register.c
gh_new_procedure1_0
("gnetlist:vams-get-package-attributes",
vams_get_package_attributes);
(2) gnetlist/include/prototype.h
SCM vams_get_package_attributes(SCM scm_uref);
(3) edit gnetlist/src/Makefile.in or directly in Makefile
(if you have edited Makefile.in you must run make config of
course)
- add "vams_misc.c" to gnetlist_SOURCES - variable
- add "vams_misc.o" to gnetlist_OBJECTS - variable
(4) copy vams_misc.c to gEDA/gnetlist/src/
(5) compile your code newly
===================================================================
2.2. AUTOMATIC GENERATING gnetlist CALLS IN gEDA gschem
To realize this new feature it was necessary to put more
information from the schematic to the scheme world of gEDA gschem.
Concretly, we needs the filename of the current schematic, because
gEDA gnetlist required it, and the attached attributes of a
selected component for creating an VHDL-AMS ENTITY. Hence, the
gnetlist command is mutated to an unidirectional interface between
the world of gschem scheme and the world of gnetlist scheme.
There are three important things, which transfer through this
interface:
(1) the source-file, which contents the complett filename
(with path) of the current schematic.
(2) the top-attribs list, which contents all attached
attributes of the selected component.
(3) the generate-mode, which is defined by the users actions.
2.2.1. STRUCTURE OF gEDA gnetlist CALLS FROM COMMANDLINE OR FROM gEDA
gschem.
typical commandline call :
gnetlist [-o <output-filename>]
-g vams
<schematic-file>
There are nothing to explain. The top-attribs list and the
generate-mode variable are default defined ('() and 1).
calls from gEDA gschem (3 possible variations) :
Note: vhdl-path is a predefined variable, which is set in
generate_netlist.scm first times. You can it simple redefine
in your local gschemrc file, which is loading everytimes you
starts gEDA gschem.
(1) hot-key-stroke: - g n (generate netlist)
--> generates a netlist of the current schematic.
gnetlist -o <vhdl-path>/<target-file>
-g vams
<source-file>
The source-file variable is equate to the complett
path+filename of the current schematic, which we get with
help of a self coded c function. If you cut out the filename
of the source-file variable (source-file without path) then
you are getting the target-file.generate-mode and
top-attribs are default again.
(2) hot-key-stroke: - g e (generate-entity)
and no component is selected.
--> generates an toplevel ENTITY of the current
schematic.
gnetlist -c <scheme-comm>
-o <vhdl-path>/<target-file>
-g vams
<source-file>
scheme-comm="(define top-attribs '<top-attribs>)
(define generate-mode '2)"
Source-file needs no comment, because it is the same as in
(1). To get all attributes of a selected component, we are
must write a new c function again. The values, which we get
from this new function are saved in top-attribs. The sense
of the scheme-comm command is to put top-attribs and
generate-mode from the gschem to the gnetlist environment.
At last, the target-file consists of the pure basefilename
of the source-file and an .vhdl extention.
(3) hot-key-stroke: - g e (generate-entity)
and only one component is selected.
--> generates an ENTITY of the selected schematic.
commandline is the same as in (2).
Differences: The target-file is different, but it does not
matter, because gnetlist generate an new output-filename in
in this case (<device-name-of-selected-component>.vhdl,
normally).But one fact is very important: the top-attribs
variable includes all attached attributes of the selected
component now.
2.2.2. SCHEME
The gnetlist command is generating from two scheme functions, which
are saved in generate_netlist.scm. This functions starts if the
gschem user is typing one of the specified hot-keys ([g e] starts
generate-entity and [g n] starts generate-netlis). Both routines
puts the whole gnetlist command together and execute it. The syntax
you see above.
2.2.2.1. generate_netlist.scm
2.2.2.2. SETTINGS
If you want use the new feature then you must do some entries in one
of your gEDA gschem rc-files
necessary defines:
- in system-gschemrc
("g" . gnetlist-keymap)
Edit your global-keymap and if "g" always defined then find
out an other free hot-key-stroke.
Note: the documentation supports the "g" - key only.
- in one of the gschem startup files
(define gnetlist-keymap
'(("n" . generate-netlist)
("e" . generate-entity)))
loads :
(load "/home/fliser3/.gEDA/generate_netlist.scm")
2.2.3. NEW C-CODE
The c-code makes it possible to get directly informations from the
gschem tool, which is necessary for the online execution of
gnetlist.
2.2.3.1. ROUTINES
It exists two new c-functions. Both are put down in
misc_for_gnetlist.c.
SCM get_selected_filename(gpointer data,
guint callback_action,
GtkWidget *widget)
This function returns the whole filename of the current schematic,
which is picked from the w_current->page_current->page_filename
string.
SCM get_selected_component_attributes(gpointer data,
guint callback_action,
GtkWidget *widget)
How the name is saying, this functions returns all attributes of
the selected component. It is realized with a simple while loop
over all objects of the schematic, which picked out all elements
where the selected flag is set.
2.2.3.2. CODE-ADAPTATION
Here are some actions you must conclude to makes the software
runable.
(1) new lines in /gschem/src/g_register.c
gh_new_procedure0_0 ("get-selected-filename",g_get_selected_filename);
(2) new lines in /gschem/include/prototype.h
SCM g_get_selected_filename();
(3) copy the file misc_for_gnetlist.c to gschem/src
(4) add in file /gschem/src/Makefile.in or directly in Makefile.
(if you have edited Makefile.in you must run make config of
course)
- add "misc_for_gnetlist.c" to gschem_SOURCES - variable
- add "misc_for_gnetlist.o" to gschem_OBJECTS - variable
(5) add new lines in /gschem/src/g_key.c
SCM g_get_selected_filename(void)
{
return (get_selected_filename(window_current, 0, NULL));
}
(6) compile your changed c-code newly
</pre>
</div>
<!-- SECTION [37-20220] -->
<h2><a name="vams_netlister_syntax_architecture" id="vams_netlister_syntax_architecture">VAMS netlister syntax architecture</a></h2>
<div class="level2">
<pre class="code">ARCHITECTURE <architecture-identifier> OF <entity-identifier> IS
{<subnet-object> <subnet-name> : subnet-kind;}
BEGIN
{<label> : ENTITY <entity> [(<architecture>)]
[GENERIC MAP (<set-generic> => <generic-value>
{; <set-generic=> <generic-value>})]
PORT MAP ( <pin-name> => <subnet-name>{; <.. => ..>});}
END ARCHITECTURE <architecture-identifier>;
</pre>
</div>
<!-- SECTION [20221-20667] -->
<h2><a name="vams_netlister_syntax_entity" id="vams_netlister_syntax_entity">VAMS netlister syntax entity</a></h2>
<div class="level2">
<pre class="code">LIBRARY <library-identifier>{,<library-identifier>};
USE <package-identidier>{,<package-identifier>};
ENTITY <entity-identifier> IS
[GENERIC ( <generic-identifier> : REAL := <default-value>
{;<generic-identifier> : REAL := <default-value>}); ]
[PORT (<port-kind> <port-identifier> : [<port-mode>] <port-type>
{;<port-kind> <port-identifier> : [<port-mode>] <port-type>});]
END ENTITY;
</pre>
</div>
<!-- SECTION [20668-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_verilog_netlister_readme.html
Index: geda_verilog_netlister_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:verilog_netlister_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:verilog_netlister_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:verilog_netlister_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:verilog_netlister_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:20:12-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="verilog_netlister_readme" id="verilog_netlister_readme">Verilog netlister README</a></h1>
<div class="level1">
<pre class="code">Verilog netlister readme.
THIS IS FREE SOFTWARE, see the included file COPYING for more info.
Latest README:
This is the fifth release of the Verilog netlister for gEDA.
New in this release:
1) Escaped Verilog identifiers.
To facilitate board level simulations, the Verilog netlister now
outputs `escaped' Verilog identifiers for any net, port or instance name
that does not appear to be a valid Verilog identifier. In this way,
chips with numbered pins can be netlisted and models constructed to run
digital simulations of complete circuits.
Mike Jarabek
----- OLDER README.verilog's -----
This is the fourth release of the Verilog netlister for gEDA.
New in this release:
1) Multiple width wires.
How to use: (mostly taken from a previous readme... )
Here's how to proceed to make a schematic that can be netlisted
to verilog.
1) Create your modules by the standard method, keep in mind
that you must supply a `pin#' attribute for each port
you want to create in the generated verilog. gmk_sym is
useful for this.
2) Place each of your newly created modules on the
schematic. You may also place primitives from the
`verilog' symbol library. Be sure to give a _unique_
`uref' to every symbol you place on the schematic,
unless two symbols are actually different parts of the
same module, and the pins listed on each symbol do not
have any names in common. Otherwise they will not get
netlisted.
3) Connect nets between the modules you want. Remember, if
you want legible Verilog later, don't forget to name all
your nets by attaching `label' attributes to them. For
Multiple bit wires just use standard Verilog notation.
The netlister will figure out which bit ordering you
want. Be sure to have at least one net labeled with the
complete range expression, otherwise the netlister will
guess at whether you wanted net[15:0] or net[0:15] in
your declarations. Any inconsistent ranges will be
reported as a warning. Strings that appear to be
invalid Verilog identifiers will be printed with a
warning, but otherwise ignored. (If you get a warning
for a valid Verilog identifier, please post a bug
report!)
4) Insert IPAD's, OPAD's, and IOPAD's for all the nets you
want to be visible in the module declaration statement.
It is especially important to make sure that the nets
you hook up to the pads are named, as the net names
could change from run to run, that's a bad thing. (I/O
pads would be a good place to put the aformentionned
full range expressions. Range expressions on I/O pads
are ignored when outputting the module declaration, but
they are used in figuring out the final bit ranges.)
Every pad must have a unique uref, otherwise the
netlister will get confused.
5) Add an unattached attribute `module_name=Your_Module'
somewhere on the schematic, near the title block is
good. This will name the generated Verilog module
`Your_Module'.
6) Save your design.
7) Run the schematic through the netlister:
gnetlist -g verilog -o output.v schematic.sch
7a) Check the output for correctness, _especially_ if you got
any warnings. (There should be no warnings.)
8) Feed the netlist to your favorite simulator/synthesis tool.
Mike Jarabek
This is the third release of the Verilog netlister for geda.
Fixed in this release:
1) Netlister no longer barfs if there are no
Input/Output/InOut ports on the module.
2) Module instantiation code much improved/cleaned up, mostly
due to g_netlist.c patch.
New in this release:
1) A whole wack-load of symbols, I created a C program that
generates n-input versions of and, nand, or, nor, xor, and
xnor symbols
2) Modules instantiated with positional port connections.
Just add the attribute `VERILOG_PORTS=POSITIONAL' to your
symbol file as an unattached attribute, or attach it to the
symbol on the schematic.
3) Added bufif?, notif?, not and buf symbols.
4) Added example of positional port module instantiation to
the example schematic
5) Added 7447 example schematic
Coming:
1) Module instantiation parameters. (probably by an attribute)
Included in this tar-ball are three patch files against the
19990705 version of gEDA. Apply g_netlist.c.diff and
g_register.c.diff to the files in gnetlist/src/ and
gnetlist.scm.diff to gnetlist.scm in the gnetlist/scheme
directory. You may have to regenerate prototype.h, or manually
patch it. Replace the symbols in the sym/verilog directory
with the symbols in this distribution. (I have modified all of
the symbols to use the new unattached attribute convention for
device et al.) (if you have applied the patch I sent to the
mailing list that fixes netlisting a module with no ports, you
may have trouble applying the gnetlist.scm.diff patch.) Don't
forget to do a `make all install' after applying the patches.
Once again, to netlist the example schematics to verilog type:
(Assuming gnetlist has been patched and is properly installed.)
gnetlist -g verilog -o test.v examples/sch/test.sch
or
gnetlist -g verilog -o 7447.v examples/sch/7447.sch
(This README was from 19990629)
Verilog netlister readme.
THIS IS FREE SOFTWARE, see the included file COPYING for more info.
This is the second release of the Verilog netlister for geda.
Fixed in this release:
1) The last comma in the argument list to instantiations and
module definitions is now suppressed
2) Better handling of `special' components has been added
New in this release:
1) Continuous assignments to 1'b0 and 1'b1 can now be
generated by connecting the `high' or `low' symbol to a
net.
Mike Jarabek
mjarabek@xxxxxxxxxxxxxx
--
This the verilog netlister for gEDA. Included in the tarball
are several diff files against the 19990327 gEDA distribution. All of
the patches apply to the gnetlist subirectory. You should be able to
apply them with `patch -p1'.
The netlister has its limitations: (most of these will
eventually get fixed, I hope..)
1) Components connected by reference, (i.e. by having named
net stubs attached to pins, but not conected by a
continuous line) create duplicate entries in the wire
declaration section of the verilog code.
2) Multiple width wires don't work. (Busses will help
this)
3) There is no way to force a signal to 1,0,z,x (yet).
4) Some scheme code needs to be improved. (Mainly the
classification code, it inserts `()' elements into the
output lists. (I should know how to fix this in a day or
two.. too bad I never got a scheme course before..))
5) I don't know if this will work on multiple page schematics.
6) The top level module is outputted with the same name
every time, I don't currently think there is a way to
get at the name of the top level schematic.
The netlister does some neat things:
1) It outputs a verilog module with proper port
declarations, outputs are declared as outputs, inputs
are declared as inputs, and bidirectional signals are
declared as inouts.
2) All nets that are found on the design are declared as
wires. (This is to allow for net attributes later to
declare wand's and such)
3) Any components placed on the schematic that are given
uref attributes create a verilog instantiation for the
name of the module as stored in the `device' attribute,
the instatiated name is given as the `uref' attribute.
4) All connections into and out of instantiated modules are
made by name, and not by order, because I can't be sure
that the order will be right coming off the schematic.
(anyway, that's better for the long run.)
5) A comment is inserted at the top of the module to say
that the file was automatically generated.
Here's how to proceed to make a schematic that can be netlisted
to verilog.
1) Create your modules by the standard method, keep in mind
that you must supply a `pin#' attribute for each port
you want to create in the generated verilog. gmk_sym is
useful for this (with the patch to allow ascii pin names).
2) Place each of your newly created modules on the
schematic
3) Connect nets between the modules you want. Remember, if
you want legible verilog later, don't forget to name all
your nets by attaching `label' attributes to them.
4) Insert IPAD's, OPAD's, and IOPAD's for all the nets you
want to be visible in the module declaration statement.
It is especially important to make sure that the nets
you hook up to the pads are named, as the net names
could change from run to run, that's a bad thing.
5) Save your design.
6) Run the schematic through the netlister:
gnetlist -g verilog -o output.v schematic.sch
6a) Edit the output file to have the right module name, and
to remove any duplicate wires.
There is an example schematic in the schematic directory, and a
copy of the verilog netlist generated.
The mechanics:
The I/O ports for the module are detected by enumerating all of
the nets attached to any symbol bearing the device name of `IPAD',
`OPAD', or `IOPAD'. If you name one of your blocks with that
name, don't be surprised if you find `extra' ports in the module
declaration.
The wires are declared by walking through the list of nets
returned by the function that I patched into gnetlist. This is
the source of the duplicate wire declarations. This should
probably get fixed when `net_is_duplicate' gets set for
connections made by reference.
Module instantiations are created by enumerating the pins found on
a symbol and connecting the nets found to the pins. If your block
has spelling errors, then the module instantiation won't work.
You will have to manually trace back to find the error.
Mike Jarabek
------------ Below is the previous version README -------------------
Verilog netlister readme.
THIS IS FREE SOFTWARE, see the included file COPYING for more info.
This the verilog netlister for gEDA. Included in the tarball
are several diff files against the 19990327 gEDA distribution. All of
the patches apply to the gnetlist subirectory. You should be able to
apply them with `patch -p1'.
[ editor's note, if you are reading this file in a gEDA dist, then all
the required patching and integration is already done ]
The netlister has its limitations: (most of these will
eventually get fixed, I hope..)
1) Components connected by reference, (i.e. by having named
net stubs attached to pins, but not conected by a
continuous line) create duplicate entries in the wire
declaration section of the verilog code.
2) Multiple width wires don't work. (Busses will help
this)
3) There is no way to force a signal to 1,0,z,x (yet).
4) Some scheme code needs to be improved. (Mainly the
classification code, it inserts `()' elements into the
output lists. (I should know how to fix this in a day or
two.. too bad I never got a scheme course before..))
5) I don't know if this will work on multiple page schematics.
6) The top level module is outputted with the same name
every time, I don't currently think there is a way to
get at the name of the top level schematic.
The netlister does some neat things:
1) It outputs a verilog module with proper port
declarations, outputs are declared as outputs, inputs
are declared as inputs, and bidirectional signals are
declared as inouts.
2) All nets that are found on the design are declared as
wires. (This is to allow for net attributes later to
declare wand's and such)
3) Any components placed on the schematic that are given
uref attributes create a verilog instantiation for the
name of the module as stored in the `device' attribute,
the instatiated name is given as the `uref' attribute.
4) All connections into and out of instantiated modules are
made by name, and not by order, because I can't be sure
that the order will be right coming off the schematic.
(anyway, that's better for the long run.)
5) A comment is inserted at the top of the module to say
that the file was automatically generated.
Here's how to proceed to make a schematic that can be netlisted
to verilog.
1) Create your modules by the standard method, keep in mind
that you must supply a `pin#' attribute for each port
you want to create in the generated verilog. gmk_sym is
useful for this (with the patch to allow ascii pin names).
2) Place each of your newly created modules on the
schematic
3) Connect nets between the modules you want. Remember, if
you want legible verilog later, don't forget to name all
your nets by attaching `label' attributes to them.
4) Insert IPAD's, OPAD's, and IOPAD's for all the nets you
want to be visible in the module declaration statement.
It is especially important to make sure that the nets
you hook up to the pads are named, as the net names
could change from run to run, that's a bad thing.
5) Save your design.
6) Run the schematic through the netlister:
gnetlist -g verilog -o output.v schematic.sch
6a) Edit the output file to have the right module name, and
to remove any duplicate wires.
There is an example schematic in the schematic directory, and a
copy of the verilog netlist generated.
The mechanics:
The I/O ports for the module are detected by enumerating all of
the nets attached to any symbol bearing the device name of `IPAD',
`OPAD', or `IOPAD'. If you name one of your blocks with that
name, don't be surprised if you find `extra' ports in the module
declaration.
The wires are declared by walking through the list of nets
returned by the function that I patched into gnetlist. This is
the source of the duplicate wire declarations. This should
probably get fixed when `net_is_duplicate' gets set for
connections made by reference.
Module instantiations are created by enumerating the pins found on
a symbol and connecting the nets found to the pins. If your block
has spelling errors, then the module instantiation won't work.
You will have to manually trace back to find the error.
Mike Jarabek
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_vhdl_netlister_readme.html
Index: geda_vhdl_netlister_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:vhdl_netlister_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:vhdl_netlister_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:vhdl_netlister_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:vhdl_netlister_readme?do=export_raw" />
<meta name="date" content="2006-04-20T03:20:52-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="vhdl_netlister_readme" id="vhdl_netlister_readme">VHDL netlister README</a></h1>
<div class="level1">
<pre class="code">The VHDL backend
Written by Magnus Danielson and improved by Thomas Heidel
A few things you have to care about:
1. In order to generate valid component declarations, you
have to add an additional attribute to each pin.
"type=IN" or "type=OUT" or "type=INOUT"
2. The "device" attribute must be unique to a symbol!
The verilog symbols of the same type for example, have all
the same device attribute and will therefore not work.
3. Make sure your component-library picks up the vhdl symbols instead
of the verilog symbols Library paths that show up last are searched
first!
</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_wcalc_mp.html
Index: geda_wcalc_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:wcalc_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:wcalc_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:wcalc_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:wcalc_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:41:42-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="wcalc_man-page" id="wcalc_man-page">Wcalc man-page</a></h1>
<div class="level1">
<pre class="code">WCALC(1) WCALC(1)
NAME
wcalc - Transmission line analysis/synthesis calculator.
SYNOPSIS
wcalc
DESCRIPTION
The wcalc program is a tool for the analysis and synthesis of transmis-
sion line structures and related components. Wcalc provides the abil-
ity to analyze the electrical parameters of a particular structure
based on the physical dimensions and material parameters. The synthe-
sis portion calculates the required physical parameters to meet desired
electrical specifications. Wcalc includes several models and places an
emphasis on accuracy.
ENVIRONMENT
WCALC_DATADIR
If set, wcalc searches in $WCALC_DATADIR for the EPS files used
when printing out models. The default value is the $pre-
fix/share/wcalc directory, where prefix is the installation pre-
fix.
SEE ALSO
stdio-wcalc(1)
AUTHORS
Wcalc was written by Dan McMahill <mcmahill@xxxxxxxxxxxx>
BUGS
None known. Please report any on the Wcalc Sourceforge Project page at
http://www.sourceforge.net/projects/wcalc
WCALC(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_wcalc_readme.html
Index: geda_wcalc_readme.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:wcalc_readme</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:wcalc_readme?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:wcalc_readme?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:wcalc_readme?do=export_raw" />
<meta name="date" content="2006-05-07T17:42:27-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="wcalc_readme" id="wcalc_readme">Wcalc README</a></h1>
<div class="level1">
<pre class="code">$Id: geda_wcalc_readme.html,v 1.1 2006/08/22 02:56:12 ahvezda Exp $
Wcalc is a tool for the analysis and synthesis of transmission line structures and
related components. Wcalc provides the ability to analyze the electrical parameters
of a particular structure based on the physical dimensions and material parameters.
The synthesis portion calculates the required physical parameters to meet desired
electrical specifications. Wcalc includes several models and places an emphasis on
accuracy. Several frontends provide the user with several options for its use.
Models include:
- single layer solenoid inductor
- single microstrip and stripline
- coupled microstrip
- metal-insulator-semiconductor microstrip
- coaxial cable
Frontends include:
- gtk gui
- web (cgi)
- scilab
- octave
- matlab
- stdio
See the file INSTALL for building and installation instructions.
Please report all bugs at the wcalc sourceforge project page
at http://wcalc.sf.net
See the file COPYING for copying conditions.</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/geda_wcalc_stdio_mp.html
Index: geda_wcalc_stdio_mp.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>geda:wcalc_stdio_mp</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/geda:wcalc_stdio_mp?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/geda:wcalc_stdio_mp?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/geda:wcalc_stdio_mp?do=export_raw" />
<meta name="date" content="2006-05-07T17:40:56-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<h1><a name="stdio_wcalc_man-page" id="stdio_wcalc_man-page">stdio Wcalc man-page</a></h1>
<div class="level1">
<pre class="code">STDIO-WCALC(1) STDIO-WCALC(1)
NAME
stdio-wcalc - Transmission line analysis/synthesis calculator.
SYNOPSIS
stdio-wcalc [ -v|--verbose ] [ file ... ]
stdio-wcalc [ -h|--help ]
stdio-wcalc [ -V|--version ]
DESCRIPTION
The stdio-wcalc program is a simple standard input/output interface to
libwcalc which is the numerical engine for the wcalc program. The
input is read from the standard input on a line at a time basis. Each
line consists of a command followed by the numerical arguments.
The analysis and synthesis functions supported by stdio-wcalc are the
same as those in the scilab, octave, and matlab frontends to wcalc.
Please refer to the man pages listed at the end of this man page for
details on each of the supported functions. The syntax used by
stdio-wcalc is slightly different than scilab/octave/matlab. Instead
of [a,b,c] = somefn(x,y,z) as you would use in scilab, octave, or mat-
lab, you simply enter somefn x y z as the input line to stdio-wcalc and
the standard output will be a b c
In addition to the analysis and synthesis functions, stdio-wcalc sup-
ports the "version" command which returns the current version of the
program.
SEE ALSO
wcalc(1), air_coil_calc(n), air_coil_syn(n), coax_calc(n), coax_syn(n),
coupled_microstrip_calc(n), coupled_microstrip_syn(n),
ic_microstrip_calc(n), ic_microstrip_syn(n), microstrip_calc(n),
microstrip_syn(n), stripline_calc(n), stripline_syn(n)
AUTHORS
Wcalc was written by Dan McMahill <mcmahill@xxxxxxxxxxxx>
BUGS
Please report any on the Wcalc Sourceforge project website at
http://wcalc.sf.net
STDIO-WCALC(1)</pre>
</div>
</div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/index.html
Index: index.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>start</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/start?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/start?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/start?do=export_raw" />
<meta name="date" content="2006-08-15T22:13:49-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#geda_project_wiki" class="toc">gEDA Project Wiki</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#what_is_geda" class="toc">What is gEDA?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#official_project_documentation" class="toc">Official Project documentation</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#faqs_and_informal_project_documentation" class="toc">FAQs and Informal Project Documentation</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#talks" class="toc">Talks</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#translations" class="toc">Translations</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#about_this_wiki" class="toc">About this Wiki</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="geda_project_wiki" id="geda_project_wiki">gEDA Project Wiki</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-33] -->
<h2><a name="what_is_geda" id="what_is_geda">What is gEDA?</a></h2>
<div class="level2">
<p>
The <a href="http://geda.seul.org/" class="urlextern" title="http://geda.seul.org" rel="nofollow">gEDA project</a> is developing a full <acronym title="GNU General Public License">GPL</acronym>‘d suite of Electronic Design Automation tools. These tools are used for electrical circuit design, schematic capture, simulation, prototyping, and production. Currently, the gEDA project offers a mature suite of free software applications for electronics design, including schematic capture, attribute management, bill of materials (BOM) generation, netlisting into over 20 netlist formats, analog and digital simulation, and printed circuit board (PCB) layout.
</p>
<p>
The tools involved in the Suite enable you to professional-quality design of low- to mid-level complexity. Using the gEDA tools, you can create PCB of up to 8 layers (soon more) with an unlimited number of components and nets. The tools are suitable for use by students, educators, hobbiests, consultants, small businesses, and even in large corporations where an engineer might need to crank out a quick PC board (e.g. for a test stand) in a hurry.
</p>
<p>
All of the software in the gEDA suite can be found on the <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">downloads page</a>.
</p>
</div>
<!-- SECTION [34-1159] -->
<h2><a name="official_project_documentation" id="official_project_documentation">Official Project documentation</a></h2>
<div class="level2">
<p>
These are the official project docs. They have been converted from LaTeX and <acronym title="HyperText Markup Language">HTML</acronym> documents into Wiki pages so that the gEDA community may more easily maintain them.
</p>
<ul>
<li class="level1"><div class="li"> <a href="geda_documentation.html" class="wikilink1" title="geda:documentation">Documentation</a> : The latest versions of the gEDA Tool Suite documentation.</div>
</li>
</ul>
</div>
<!-- SECTION [1160-1459] -->
<h2><a name="faqs_and_informal_project_documentation" id="faqs_and_informal_project_documentation">FAQs and Informal Project Documentation</a></h2>
<div class="level2">
<p>
These are FAQs, HOWTOs, and tips/tricks to help you with the practical details of using the gEDA Suite. If you are having a problem, browse these pages first.
</p>
<ul>
<li class="level1"><div class="li"> <a href="geda_faq.html" class="wikilink1" title="geda:faq">FAQ</a> : Frequently Asked Questions about the gEDA project itself.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_installation.html" class="wikilink1" title="geda:installation">Installation</a> : GEDA installation HOWTO and <acronym title="Frequently Asked Questions">FAQ</acronym>.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_glossary.html" class="wikilink1" title="geda:glossary">Glossary</a> : Glossary of terms that are specific to the gEDA Suite</div>
</li>
<li class="level1"><div class="li"> <a href="geda_usage.html" class="wikilink1" title="geda:usage">Usage</a> : Questions about how to do electronic design using the gEDA toolset – information which applies to several or all tools in the gEDA Suite.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_faq-gschem.html" class="wikilink1" title="geda:faq-gschem">FAQ-gschem</a> : Questions about installing, configuring, and using gschem. Also, questions about creating and using gschem symbols.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_faq-attribs.html" class="wikilink1" title="geda:faq-attribs">FAQ-attribs</a> : Dealing with BOMs, DRCs, attribute management, and all that.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_faq-gnetlist.html" class="wikilink1" title="geda:faq-gnetlist">FAQ-gnetlist</a> : Questions about installing, configuring, and using gnetlist.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_faq-simulation.html" class="wikilink1" title="geda:faq-simulation">FAQ-simulation</a> : Questions about simulating your design using gEDA tools.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_faq-gsch2pcb.html" class="wikilink1" title="geda:faq-gsch2pcb">FAQ-gsch2pcb</a> : How to take your design to layout using PCB.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_pcb_tips.html" class="wikilink1" title="geda:pcb_tips">PCB tips</a> : Tips and tricks for using PCB.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_pcb-quick_reference.html" class="wikilink1" title="geda:pcb-quick_reference">PCB-quick reference</a> : PCB Quick Reference Sheet.</div>
</li>
<li class="level1"><div class="li"> <a href="geda_tasks.html" class="wikilink1" title="geda:tasks">Tasks</a> : A toplevel jobs/tasks that need help. </div>
</li>
<li class="level1"><div class="li"> <a href="geda_todos.html" class="wikilink1" title="geda:todos">ToDos</a> : For developers only: lists of pending project enhancements and to-dos.</div>
</li>
</ul>
</div>
<!-- SECTION [1460-2824] -->
<h2><a name="talks" id="talks">Talks</a></h2>
<div class="level2">
<p>
These are slides of presentations done about gEDA. They provide a good top-level overview of the project for those who are interested.
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/talks/" class="urlextern" title="http://geda.seul.org/talks/" rel="nofollow">talks</a>: Various talks and presentations on gEDA </div>
</li>
</ul>
</div>
<!-- SECTION [2825-3064] -->
<h2><a name="translations" id="translations">Translations</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> En français, cela débute <a href="start_fr.html" class="wikilink1" title="start_fr">ici</a>.</div>
</li>
<li class="level1"><div class="li"> Spanish language <a href="start_es.html" class="wikilink1" title="start_es">links</a></div>
</li>
</ul>
</div>
<!-- SECTION [3065-3181] -->
<h2><a name="about_this_wiki" id="about_this_wiki">About this Wiki</a></h2>
<div class="level2">
<p>
This section of the gEDA website is dedicated to documentation that is contributed by a multitude of authors, including users. In particular, it should grow into a resource of information for those who just started to work with the tools.
</p>
<p>
Anyone is welcome to contribute. Unlike wikipedia there is no button to create a login by yourself. This is because nobody at the gEDA site has the nerves to deal with anonymous vandalism. Consequently, you have to write an email to the site admin (ahvezda AT geda.seul.org) to gain access. He will gladly send you a login.
</p>
</div>
<!-- SECTION [3182-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/start_es.html
Index: start_es.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>start_es</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/start_es?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/start_es?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/start_es?do=export_raw" />
<meta name="date" content="2006-08-16T10:00:06-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#enlaces_a_documentacion_en_espanol" class="toc">Enlaces a documentación en español</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#traducciones" class="toc">Traducciones</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#tutoriales" class="toc">Tutoriales</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#otros" class="toc">Otros</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="enlaces_a_documentacion_en_espanol" id="enlaces_a_documentacion_en_espanol">Enlaces a documentación en español</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-52] -->
<h2><a name="traducciones" id="traducciones">Traducciones</a></h2>
<div class="level2">
<p>
<a href="http://www.jcoppens.com/soft/howto/geda-spice" class="urlextern" title="http://www.jcoppens.com/soft/howto/geda-spice" rel="nofollow"> Simulación de circuitos con gEDA y SPICE</a>
</p>
</div>
<!-- SECTION [53-173] -->
<h2><a name="tutoriales" id="tutoriales">Tutoriales</a></h2>
<div class="level2">
<p>
<a href="http://el-directorio.org/ProyectoTale/Tutoriales/geda" class="urlextern" title="http://el-directorio.org/ProyectoTale/Tutoriales/geda" rel="nofollow"> Tutorial de gEDA</a>
</p>
<p>
<a href="http://el-directorio.org/ProyectoTale/Tutoriales/gnucap" class="urlextern" title="http://el-directorio.org/ProyectoTale/Tutoriales/gnucap" rel="nofollow"> Tutorial de gnucap</a>
</p>
</div>
<!-- SECTION [174-357] -->
<h2><a name="otros" id="otros">Otros</a></h2>
<div class="level2">
<p>
<a href="http://pwp.etb.net.co/jegc/out/index.html" class="urlextern" title="http://pwp.etb.net.co/jegc/out/index.html" rel="nofollow"> Verilog con Software Libre</a>
</p>
<p>
<a href="http://www.ciclope.info/display/howto_es.shtml" class="urlextern" title="http://www.ciclope.info/display/howto_es.shtml" rel="nofollow"> HowTo Proyecto gEDA y asociados</a>
</p>
<p>
<a href="http://marcelo.memebot.com/linux/Geda01.html" class="urlextern" title="http://marcelo.memebot.com/linux/Geda01.html" rel="nofollow"> Como de GEDA + Spice + easy_spice Debian Sarge.</a>
</p>
</div>
<!-- SECTION [358-] --></div>
</body>
</html>
1.1 eda/geda/gaf/docs/wiki/start_fr.html
Index: start_fr.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>start_fr</title>
<meta name="generator" content="DokuWiki Release 2006-03-09" />
<link rel="start" href="http://geda.seul.org/wiki/" />
<link rel="contents" href="http://geda.seul.org/wiki/start_fr?do=index" title="" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=" />
<link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/start_fr?do=export_xhtml" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/start_fr?do=export_raw" />
<meta name="date" content="2006-08-15T22:13:00-0400" />
<meta name="robots" content="index,follow" />
<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css" />
<link rel="stylesheet" media="print" type="text/css" href="lib/exe/001css" />
</head>
<body>
<div class="dokuwiki export">
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">Table of Contents</div>
<div id="toc__inside">
<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#wiki_du_projet_geda" class="toc">Wiki du Projet gEDA</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#qu_est_ce_que_geda" class="toc">Qu'est ce que gEDA?</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#documentation_du_projet_officiel" class="toc">Documentation du Projet Officiel</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#faq_et_documentations_du_projet_informel" class="toc">FAQ et Documentations du Projet Informel</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#presentations" class="toc">Présentations</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#a_propos_du_wiki" class="toc">Ã? propos du Wiki</a></span></div></li></ul>
</li></ul>
</div>
</div>
<h1><a name="wiki_du_projet_geda" id="wiki_du_projet_geda">Wiki du Projet gEDA</a></h1>
<div class="level1">
</div>
<!-- SECTION [1-35] -->
<h2><a name="qu_est_ce_que_geda" id="qu_est_ce_que_geda">Qu'est ce que gEDA?</a></h2>
<div class="level2">
<p>
Le <a href="http://geda.seul.org/" class="urlextern" title="http://geda.seul.org" rel="nofollow">projet gEDA</a> est de développer une suite complète d’outils <acronym title="GNU General Public License">GPL</acronym> de « Electronic Design Automation ». Ces outils sont utilisés pour la conception de circuits électriques, de saisie de schémas, de simulation, de prototypage et de produciton. Le projet gEDA offre actuellement une suite mature d’applications de logiciels libres pour la conception électronique, incluant le la saisie de schémas, la gestion d’attributs, la génération de bill of materials (BOM), le netlisting dans plus de 20 formats de netlist, la simulation analogique et numérique et le placement sur circuit imprimé « printed circuit board (PCB) ».
</p>
<p>
Les outils placés dans la Suite vous permettent de concevoir des systèmes de complexité basse à moyenne, de qualité professionnelle. En utilisant les outils gEDA, vous pouvez créer des PCB jusqu’à 8 couches (bientôt plus) avec un nombre illimité de composants et de pistes. Les outils sont adaptés à une utilisation par les étudiants, les éducateurs, les passionnés, les consultants, les petites séries et même les grandes corporations où un ingénieur peut avoir besoin de réaliser une carte rapidement (i.e. pour un test manuel), dans l’urgence.
</p>
<p>
Tous les logiciels de la suite gEDA peuvent être trouvés sur la <a href="http://geda.seul.org/download.html" class="urlextern" title="http://geda.seul.org/download.html" rel="nofollow">page de téléchargement</a>.
</p>
</div>
<!-- SECTION [36-1427] -->
<h2><a name="documentation_du_projet_officiel" id="documentation_du_projet_officiel">Documentation du Projet Officiel</a></h2>
<div class="level2">
<p>
Ce sont les docs officielles du projet. Elles ont été converties depuis des documents LaTeX et <acronym title="HyperText Markup Language">HTML</acronym> en des pages Wiki de telle manière que la communauté gEDA puisse les maintenir plus facilement.
</p>
<ul>
<li class="level1"><div class="li"> <a href="001geda_documentation.html" class="wikilink1" title="geda:documentation.fr">Documentation.fr</a> : Les dernières versions de la documentation de la Suite d’Outils de gEDA.</div>
</li>
</ul>
</div>
<!-- SECTION [1428-1781] -->
<h2><a name="faq_et_documentations_du_projet_informel" id="faq_et_documentations_du_projet_informel">FAQ et Documentations du Projet Informel</a></h2>
<div class="level2">
<p>
Ce sont les <acronym title="Frequently Asked Questions">FAQ</acronym>, les HOWTO et les trucs/astuces pour vous aider avec les détails pratiques de l’utilisation de la Suite gEDA. Si vous avez un problème, naviguez d’abord sur ces pages.
</p>
<ul>
<li class="level1"><div class="li"> <a href="001geda_faq.html" class="wikilink1" title="geda:faq.fr">FAQ.fr</a> : Questions les plus fréquement posées sur le projet gEDA lui-même.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_installation.html" class="wikilink2" title="geda:installation.fr">Installation.fr</a> : HOWTO et <acronym title="Frequently Asked Questions">FAQ</acronym> de l’installation de gEDA.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_glossary.html" class="wikilink2" title="geda:glossary.fr">Glossary.fr</a> : Glossaire de termes qui sont spécifiques à la Suite gEDA</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_usage.html" class="wikilink2" title="geda:usage.fr">Usage.fr</a> : Questions sur la manière d’effectuer de la conception électronique en utilisant le jeu d’outils – informations qui s’appliquent à plusieurs ou à tous les outils de la Suite de gEDA.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_faq-gschem.html" class="wikilink2" title="geda:faq-gschem.fr">FAQ-gschem.fr</a> : Questions sur l’installation, la configuration et l’utilisation de gschem. De même, les questions sur la création et l’utilisation de symboles avec gschem.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_faq-attribs.html" class="wikilink2" title="geda:faq-attribs.fr">FAQ-attribs.fr</a> : De l’utilisation des BOM, des DRC, de la gestion des attributs et ainsi de suite.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_faq-gnetlist.html" class="wikilink2" title="geda:faq-gnetlist.fr">FAQ-gnetlist.fr</a> : Questions sur l’installation, la configuration et l’utilisation de gnetlist.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_faq-simulation.html" class="wikilink2" title="geda:faq-simulation.fr">FAQ-simulation.fr</a> : Questions sur la simulation de votre schéma en utilisant les outils gEDA.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_faq-gsch2pcb.html" class="wikilink2" title="geda:faq-gsch2pcb.fr">FAQ-gsch2pcb.fr</a> : Comment transformer votre schéma en un circuit avec PCB.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_pcb_tips.html" class="wikilink2" title="geda:pcb_tips.fr">PCB tips.fr</a> : Trucs et astuces pour l’utilisation de PCB.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_pcb-quick_reference.html" class="wikilink2" title="geda:pcb-quick_reference.fr">PCB-quick reference.fr</a> : PCB Quick Reference Sheet.</div>
</li>
<li class="level1"><div class="li"> <a href="001geda_tasks.html" class="wikilink2" title="geda:tasks.fr">Tasks.fr</a> : Une liste des travaaux/tâches prioritaires qui nécessitent de l’aide. </div>
</li>
<li class="level1"><div class="li"> <a href="001geda_todos.html" class="wikilink2" title="geda:todos.fr">ToDos.fr</a> : Pour les développeurs seulement: liste d’améliorations de projets en cours et à faire.</div>
</li>
</ul>
</div>
<!-- SECTION [1782-3458] -->
<h2><a name="presentations" id="presentations">Présentations</a></h2>
<div class="level2">
<p>
Ce sont les transparents de présentations effectués sur gEDA. Ils fournissent un bon survol pointu du projet pour ceux qui sont intéressés.
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://geda.seul.org/talks/" class="urlextern" title="http://geda.seul.org/talks/" rel="nofollow">présentations</a>: Plusieurs discours et présentations à propos de gEDA.</div>
</li>
</ul>
</div>
<!-- SECTION [3459-3739] -->
<h2><a name="a_propos_du_wiki" id="a_propos_du_wiki">Ã? propos du Wiki</a></h2>
<div class="level2">
<p>
Cette section du site gEDA est dédiée à la documentation fournie par plusieurs auteurs, y compris des utilisateurs. En particulier, il doit devenir une source d’information pour ceux qui débutent juste avec les outils.
</p>
<p>
Toutes les contributions sont les bienvenues. Mais contrairement à wikipedia, il n’y a pas de bouton pour créer un login seul. La raison est que personne de gEDA n’a les nerfs suffisamment solides pour traiter le vandalisme anonyme. Par conséquent, vous devez écrire un courriel à l’admin du site (ahvezda AT geda.seul.org) pour obtenir un accès. Il vous enverra un accès avec plaisir.
</p>
</div>
<!-- SECTION [3740-] --></div>
</body>
</html>
_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs