{"id":13774938,"url":"https://github.com/RTimothyEdwards/netgen","last_synced_at":"2025-05-11T07:30:58.676Z","repository":{"id":42008147,"uuid":"177686668","full_name":"RTimothyEdwards/netgen","owner":"RTimothyEdwards","description":"Netgen complete LVS tool for comparing SPICE or verilog netlists","archived":false,"fork":false,"pushed_at":"2025-03-10T07:00:10.000Z","size":3792,"stargazers_count":114,"open_issues_count":43,"forks_count":25,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-05T05:04:02.254Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RTimothyEdwards.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":"Copying","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-26T00:37:58.000Z","updated_at":"2025-03-17T10:47:19.000Z","dependencies_parsed_at":"2023-11-21T09:26:08.458Z","dependency_job_id":"cf26aa90-e43d-4c98-907f-26ad68c1f31d","html_url":"https://github.com/RTimothyEdwards/netgen","commit_stats":{"total_commits":499,"total_committers":12,"mean_commits":"41.583333333333336","dds":0.2645290581162325,"last_synced_commit":"7d910b616c4b73d90308ce3079b54fdddfee5e48"},"previous_names":[],"tags_count":254,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RTimothyEdwards%2Fnetgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RTimothyEdwards%2Fnetgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RTimothyEdwards%2Fnetgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RTimothyEdwards%2Fnetgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RTimothyEdwards","download_url":"https://codeload.github.com/RTimothyEdwards/netgen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253533186,"owners_count":21923375,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T17:01:31.975Z","updated_at":"2025-05-11T07:30:58.194Z","avatar_url":"https://github.com/RTimothyEdwards.png","language":"C","readme":"![Continuous Integration](https://github.com/RTimothyEdwards/netgen/actions/workflows/main.yml/badge.svg)\n\n# NETGEN\n\n### VERSION 1.5\n\nNETGEN is a general-purpose netlist management system.  It can read\nand write several netlist formats, including NTK (Caltech, CMU),\nWOMBAT (Berkeley), SIM (Berkeley), ACTEL (Actel Inc., Sunnyvale), and\nSPICE (Berkeley).  In addition, a C-language embedded interface exists\nfor specifying netlists directly.  Please see the documentation file\nNETGEN.DOC\n\nNETGEN was intended as an efficient specification language for\nhierarchical systems.  Secondary features, such as testing isomorphism\nbetween two netlists, have been added over time.  As netgen has\nprimarily been used in its capacity as a netlist comparator, this\nhas essentially become the primary useful feature of netgen.\n\nVersion 1.5 (September 2014) was created largely to allow the\nwell-developed version 1.4 to be marked as the stable version.\nBug fixes will continue on version 1.4 as version 1.5 continues\ndevelopment.\n\nVersion 1.4 (November 2007) is an effort to make netgen into an\nindustry-standard LVS tool, handling device classes, device\nproperties, hierarchy, and providing a sensible output making it\neasy to trace a problem to its exact source.\n\nVersion 1.2/1.3 (Mar. 2003) takes the original netgen and recasts it\nas a Tcl extension in the same manner as magic version 7.2 and\nIRSIM version 9.6, while retaining the option to compile the original,\nnon-interpreter-based version(s).  Under Tcl, all of the single-character\ncommands have been recast as complete function names.  The syntax has\nbeen changed to match Tcl generally-accepted syntactical norms.  The\nX11 GUI has been scrapped and may eventually be replaced by a Tk GUI.\nVersion 1.3 is a minor update on version 1.2 with GNU autoconf and a\nnumber of associated make-process fixes that were applied to magic\nand irsim.\n\nREVISION HISTORY:\n-----------------\nRevision 0: December 29, 2002  (first cut of port to Tcl).\n\t1) New command-line interface with full-word commands.\n\t2) The usual \"toolscript\" stuff with printf() functions\n\t   passed to Tcl's \"eval\" function, support for and use\n\t   of the TkCon console, compilation as a Tcl shared-object file.\n\t3) New \"make config\" script to match magic's.\n\nRevision 1: January 10 2003.\n\t1) Improved \"nodes\" and \"elements\" commands so they return relevant\n \t   information about specific points in the network.\n\t2) Added position information to \".sim\" file elements, so this can\n\t   be used to trace back problems to a layout and/or schematic.\n\t3) Fixed errors in the printing routines.\n\t4) Improved some horribly inefficient code; speeds up some node\n\t   printing commands and causes the \"compare\" command to become\n\t   nearly instantaneous.\n\t5) Removed regular-expression matching from the code.  It is\n\t   intended that Tcl's built-in regular expression matching will\n\t   suffice, although it will be necessary to rewrite some functions\n\t   to return Tcl lists instead of just dumping text to the screen.\n\t   The main effect this has is that arrayed nodes in magic retain\n\t   their names, simplifying the (intended) interface to magic.\n\nVersion 1.2, Revision 0: March 10 2003.\n\t1) Fixed and extended the log file capability through the Tcl\n\t   command \"log\".  Includes the ability to turn screen echo on\n\t   and off while logging.\n\t2) Implemented Control-C interrupts during lengthy procedures,\n\t   both for the TkCon console window and for the terminal-based\n\t   mode.\n\t3) Created the scripted command \"lvs\" to do what the standalone\n\t   program \"netcomp\" used to do.\n\nVersion 1.3, Revision 0: November 13, 2004.\n\t1) Implemented the GNU \"autoconf\" configure method in the same\n\t   manner as magic-7.3 and irsim-9.7.\n\nFor further revision information, see the automatically-generated list\nof CVS check-in notes on http://opencircuitdesign.com/netgen/.\n\nBUILDING NETGEN:\n----------------\nNETGEN version 1.5 uses the same \"make\" procedure as Magic version 8.1\nand IRSIM version 9.7:\n\n   ./configure\n   make\n   make install\n\nNote: For FreeBSD, use 'gmake' instead.\n\nNote: On MacOS (Big Sur) follow the following procedure. If you have installed `xschem` and `magic` already on MacOS then steps (1) and (2) can likely be skipped.\n\n**1) Build Tcl for X11**\n\nWe are following the instructions from `xschem` (https://github.com/StefanSchippers/xschem/blob/master/README_MacOS.md). \n\n* Download `Tcl` from https://prdownloads.sourceforge.net/tcl/tcl8.6.10-src.tar.gz\n\nWe are using not `opt` but `opt2` so that this `Tcl` does not interfere with `tcl-tk` from HomeBrew.\n\n```\n./configure --prefix=/usr/local/opt2/tcl-tk  \nmake\nmake install\n```\n\n**2) Build Tk for X11**\n\n* Download `Tk` from https://prdownloads.sourceforge.net/tcl/tk8.6.10-src.tar.gz\n\n```\n./configure --prefix=/usr/local/opt2/tcl-tk \\\n--with-tcl=/usr/local/opt2/tcl-tk/lib --with-x \\\n--x-includes=/opt/X11/include --x-libraries=/opt/X11/lib  \nmake\nmake install\n```\n\n**3) Build netgen**\n\nWe need to provide this custom-built `tcl-tk` and suppress compilation errors.\n\n```\n./configure --with-tcl=/usr/local/opt2/tcl-tk/lib \\\n--with-tk=/usr/local/opt2/tcl-tk/lib \\\n--x-includes=/opt/X11/include \\\n--x-libraries=/opt/X11/lib \\\nCFLAGS=-Wno-error=implicit-function-declaration\nmake\nmake install\n```\n\n\nIN CASE OF FAILURE\n-------------------\nPlease contact me (tim@opencircuitdesign.com) to report compile-time and\nrun-time errors.  The website at\n\n\thttp://opencircuitdesign.com/netgen/\n\nhas complete information about compiling, configuring, and using netgen\nversion 1.4.\n\nRUNNING NETGEN UNDER TCL\n------------------------\nThe normal procedure for doing a netlist comparison (LVS) is the following:\n\n1) Build \".sim\" files for the two netlists to be compared (e.g., run\n   \"exttosim\" on the magic layout, and generate sim output on an xcircuit\n   schematic.\n2) Run netgen.\n3) As of version 1.4, configuration of LVS is done by commands in a\n   command file which is passed to the \"lvs\" command (see below).  This\n   file declares which device classes should be considered matching\n   between two circuits, which subcircuits should be considered\n   matching between two top-level circuits, and which ports of devices\n   or subcircuits permute.\n4) As of version 1.2, netgen has a script-level procedure \"lvs\" which\n   takes care of the above sequence of commands, as well as dumping the\n   majority of the output to an output file, and reporting only the\n   final analysis in the console window.  The syntax of this command is:\n\n\tlvs \u003cfilename1\u003e \u003cfilename2\u003e [\u003csetupfilename\u003e] [\u003clogfilename\u003e]\n\n   If \"setupfilename\" is not specified, then the default filename \"setup.tcl\"\n   will be used.  If this file does not exist, then a default setup is\n   assumed.\n\n   If \"logfilename\" is not specified, then the default filename \"comp.out\"\n   will be used.\n\n   \"lvs\" is equivalent to the following sequence of individual commands:\n\n\treadnet sim \u003cfilename1\u003e\n\treadnet sim \u003cfilename2\u003e\n\tsource \u003csetupfilename\u003e\n\tcompare \u003cfilename1\u003e \u003cfilename2\u003e\n\trun converge\n\n5) Interpreting the output:\n\n   The feedback from netgen is still rather crude but improving in each\n   generation.  Illegal fragments are generated around areas where the\n   netlists cannot be resolved.  The worst matches will be listed at the\n   top, which is usually the place to start looking.\n\n   Connectivity of elements and nodes is much easier to trace now, with\n   commands:\n\t\n\tnodes \u003celement_name\u003e \u003ccellname\u003e\n\telements \u003cnode_name\u003e \u003ccellname\u003e\n\n   Where \"cellname\" is the filename (one of the two files loaded for\n   comparison).  The \"elements\" command prints all of the elements\n   (transistors, capacitors, resistors, etc.) connected to a specific\n   named node.  The \"nodes\" command prints the node names for each\n   pin of the specified element.  For \".sim\" netlists containing\n   position information for each transistor, all transistor elements\n   (and some non-transistor elements such as poly-poly capacitors and\n   rpoly resistors extracted from magic) will have names like\n   \"n@45,376\" indicating an n-type transistor at position x=45, y=376\n   on the layout.  This naming convention permits tracing errors back\n   to the layout and schematic.\n\n","funding_links":[],"categories":["Verification Frameworks","C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRTimothyEdwards%2Fnetgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRTimothyEdwards%2Fnetgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRTimothyEdwards%2Fnetgen/lists"}