Name Modified Size Downloads / Week Status
old_releases 2014-02-19 0
release_notes.html 2015-08-25 8.4 kB 0
readme.txt 2015-08-25 34.6 kB 11 weekly downloads
introduction.html 2015-08-25 10.9 kB 0
alpha_0p24_open_sch_capt.zip 2015-08-25 12.1 MB 66 weekly downloads
alpha_0p23_open_sch_capt.zip 2014-11-27 11.4 MB 0
alpha_0p22_open_sch_capt.zip 2014-06-15 11.0 MB 0
Totals: 7 Items   34.5 MB 7
2015/08/20 OPEN SCHEMATIC CAPTURE README FILE 1. Quick start 1.1. What's new in release 0.24 !! NEW NAMING CONVENTION REQUIRES LIBRARY MODIFICATIONS !! This revision begins integrating VHDL more tightly into the application. The approach will be to use VHDL to Java translation which will require some modifications to the data libraries: Differences are: - Old naming convention uses directory suffixes of .lib/.tool/.set/.ckt/.view and new naming convention use suffixes of _lib/_tool/_set/_ckt/_view. - Changes have been made to this system simulator API. - Location of system sim java models has been changed. The scripts run_<os>_fix_project_naming_convention have been added to do the following: - Moves <name>.lib/.tool/.set/.ckt/.view to <name>_lib/_tool/_set/_ckt/_view - Fixes proj_file.xml project files Note: ignores project files with different names. - Fixes <name>.bsh scripts - Mostly fixes <name>.java system sim models and moves them to new location Additional changes are: - Fixed some bugs. - Brought text dialogs into work area. - Fixed point limit on graphing program. - Added vhdl simulator - currently with limited VHDL language syntax support. - Program layout has been cleaned up, with all user interface programs now located in my_proj/open_sch_capt - Updated Windows directory/file paths to use back slash 1.2. Getting it running - Ensure java 1.7 or better is installed. - Unzip the open schematic capture (osc) program directory structure to some place we'll refer to as: ${app_dir} = <some_path>/open_sch_capt - Go to ${app_dir} and run run_<os_type>_install_test to check the installation and run through the program features. - Go to ${app_dir}/open_sch_capt_data/osc_shell_scripts/open_proj_<os_type>. - Modify the appropriate shell script for the correct java path, then run the shell script. 1.3. Comments and suggestions Feel free to send comments and suggestions to openschcapt@gmail.com. 2. Introduction Open Schematic Capture is a set of programs intended to be a production grade open source mixed analog/digital IC schematic entry and layout tool along with a project manager and net listers. A system level simulator and a data viewer are also included. It has the following features: - Java based - Runs on anything that supports a java virtual machine - Inherits power of Java graphical interface - Open source - Directory based data structure - Library/tool/set/circuit/view directory structure - Easy maintainance and re-configuration of data - Schematic entry: - XML based ASCII data files - Human and XML tool readable data - Robust data structure -> able to track down and fix wierd data problems - Able to create/modify cells with external tools/programs or by hand - Supports if frames - Allows branching control for net listing to multiple tools - Supports for frames - Supports parameter passing - Supports ability to generate/run transcript files - Supports undo/redo - Maintains circuit modifications history - Supports multiple users - Simple system level simulator - Layout: - Translation of the "Magic" layout program from C into Java - Reasonable (and expanding) editoring capability - Supports Magic database format - Includes extract and LVS The downloaded package consists of three main parts. - Jar file - <path>/open_sch_capt/java_classes/open_sch_capt.jar All programs associated with Open Schematic Capture and their associated support code are compressed into a single Java Archive (jar) file, which is just a zip file with some extra stuff required for Java. A specific program is run within Java by giving the location of the jar and the path to the program within the jar. Nothing in this file should be modified, unless you want to modify the programs. - Data base directory - <path>/open_sch_capt/open_sch_capt_data The data base contains the data the programs will interact with. This includes generic schematic libraries, shell scripts, program scripts, example projects, etc. - Source code directory - <path>/open_sch_capt/java_source The source code can be ignored, unless you want to modify the programs. Interface to other tools ( system sim / analog sim / digital sim / mixed mode sim / LVS ) will be through netlists. Creating a complete design flow ( design, simulation, layout, and mask generation ) requires that this program interface with simulators and that everything be tied together with a process library. Also, the translation of the "C" version of Magic is not far enough along to stand alone and the "C" version is required for final checks and back end mask generation. An example project and a "dummy" process library are included in the data base to give an example of a complete design flow. Other open source programs will need to be installed to completely work through the example. 3. Requirements The following are required for schematic entry with Open Schematic Capture: - Required: Java virtual machine - see discussion below - Required: Open Schematic Capture installed - Optional: Java compiler - see discussion below required only for system and vhdl simulator The following open source programs are recommended for creating a complete design flow: - NGSpice for analog simulation see ngspice.sourceforge.net - GHDL, C compiler, & Gtkwave for digital simulation see ghdl.free.fr see gtkwave.sourceforge.net - "C" version of Magic layout editor. This requirement will eventually go away when the Java translation of Magic is complete. see opencircuitdesign.com/magic Open Schematic Capture should work well on multiple operating systems, however, other open source software is more particular. Linux is the best choice for getting a complete design flow up and running, and Fedora Linux in particular, gives good support for NGSpice, GHDL, Gtkwave, and the "C" version of Magic. 4. To install 4.1. For Open Schematic Capture The program suite runs under a Java virtual machine (jvm) and so the application "executable" is identical for Linux and Windows and (probably but untested) Apple. Since the program suite is not targeted to a particular operating system, no attempt has been made to support any operating system specific installs. The general philosophy is to unzip it, put it somewhere, and write/modify a few shell scripts to run it. - download the zipped application <open_sch_capt_download>.zip - unzip <open_sch_capt_download>.zip -> top output dir will be "open_sch_capt" - move "open_sch_capt" directory to final resting place which will be referred to as ${app_dir} 4.2. For NGSpice, GHDL, Gtkwave, and "C" Magic In Fedora Linux, pre-compiled versions of these programs can be downloaded directly from the repository. Other distributions or operating systems may require installation from program web sites. 5. Program layout 5.1. Structure of extracted programs and data The structure of the extracted application and associated data is as follows: ${app_dir} - top directory = <some_path>/open_sch_capt java_source - java source code top directory java_classes - java machine code directory open_sch_capt.jar - contains the programs open_sch_capt_data - data required to run osc_libraries - standard libraries osc_std_lib - standard lib osc_process_libraries - process specific libraries dummy_process_lib - dummy process used for example projects osc_example_projects - example projects, see below for project structure osc_info_files - directory containing help and information files readme.txt - this file <file_name>.txt - other info files <file_name>.html - other info files osc_shell_scripts - top direcory for shell script files open_proj_linux - directory containing shell scripts to start in linux open_proj_windows - directory containing shell scripts to start in windows other_linux - directory containing misc. linux shell scripts osc_scripts - directory containing program script files A project consists of multiple standard and project specific libraries and other stuff. This setup is a virtual rather than a real directory structure. A project file identifys where stuff is physically located. The project file is then used to set up a project virtual directory structure. <project_dir_name> - top virtual directory for project proj_file.xml - project file which defines resources ctrl_files_dir - directory containing various proj control files <lib_name>_lib - multiple standard and project specific library directories Common standard cell data libraries would be at some central location and be referenced by the project file of multiple projects. Each project points to a single process library. Process libraries need to have a fairly rigid structure in order for the program to find stuff. An example can be seen at ${app_dir}/open_sch_capt_data/osc_process_libraries/dummy_process_lib. The process library has a file system structure as follows: <lib_name>_lib - library of circuits properties.xml - file of properties associated with library documentation_tool - directory for documantation spice_tool - directory for Spice stuff models - directory for models vhdl_tool - directory for VHDL stuff design_tool - directory for design stuff layout_tool - directory for layout stuff autoroute_ctrl.txt - file to control autorouting create_cell_rules_file.txt - this file is not used yet lvs_control.txt - file to control LVS technology_files - directory for Magic stuff mos.24bit.dstyle - Magic styles file mos.24bit.std.cmap - Magic colors file scmos.tech - Magic technology file device_subckts.spice - defines oddball devices Magic extractor does not recognize Data libraries also need to have a fairly rigid structure. Libraries are layed out quite similarly to the process library. Each library has a file system structure as follows: <lib_name>_lib - library of circuits properties.xml - file of properties associated with library documentation_tool - directory for documantation spice_tool - directory for Spice stuff vhdl_tool - directory for VHDL stuff java_tool - directory for java sim model source code sim_models_sys_set - directory for hand written models sim_models_vhdl_set - direcotry for models generated from VHDL layout_tool - directory for layouts <set_name>_set - directory for set of similar circuits <ckt_name>.mag - circuit layout file ctrl_files_dir - script files to do various things design_tool - directory for schematic and simulation data <set_name>_set - directory for set of similar circuits <ckt_name>_ckt - circuit directory symbol_view - symbol view directory sheet<n>.xml - data files in xml format schematic_view - schematic view directory sheet<n>.xml - data files in xml format vhdl_view - Vhdl circuit models, simulation control files directory spice_view - Spice circuit models, simulation control files directory system_view - System level simulation control files directory <name>_tool - directory for other stuff as required There is a special data library that provides standard stuff needed by all projects. It is located at ${app_dir}/open_sch_capt_data/osc_libraries/osc_std_lib. 5.2. Directory and File Naming convention Directories: <lib>_lib - library directory <tool>_tool - tool ( schematic/layout/etc ) directory design_tool documentation_tool java_tool layout_tool scripts_tool vhdl_tool <set>_set - directory containing set of related circuits/objects <circuit>_ckt - directory for a given circuit <view>_view - directory containing circuit view ( schematic/symbol/etc ) Files: <file>.bsh - scripting file in bean shell syntax <file>.cmd - windows os command script ( linux scripts do not have an extension ) <file>.ext - magic extracted netlist file <file>.inc - spice include file <file>.java - java source file <file>.lck - locks out file from writing by other than owner <file>.mag - magic layout file <file>.props - layout properties file for a circuit residing in a layout set directory ( necessary to stay compatable with "C" Magic program ) <file>.spi - spice file <file>.sys - internal system simulator data file <file>.txt - text file <file>.vhd - vhdl file <file>.xml - data/info file in xml format sheet<n>.xml - default name for data schematic data sheets Misc: <circuit>_x_<set>_x_<lib> - circuit naming convention to avoid name collision in flat net lists 5.3. General Naming convention This program will interface with multiple operating systems, simulators, and possibly other tools, some of which are case sensative, some not. It will be uncertain whether xyz equals XYZ. Therefore, it is best to stick with only one case throughout the design. Lower case has been used in all included libraries and examples. The program assumes the "old school" unix naming convention for directory and file names, and for many things within the program. For the schematic entry tool use a character set limited to alph-numerics and underscores, with the following exceptions: - Spaces " " are allowed only in "C" like expressions, strings, and text boxes. - Never use a double underscore "__". - For unix/linux, use / for directory or file path separators - For windows, use \ for directory or file path separators for shell commands or shell scripts. Java will recognize \ or / as a path separator, so any path used by the program will handle either syntax. - File and directory names may have "." separators for extensions - [<m>:<n>] for m and n are integers with m > n is a bus with range m downto n - $<name> or ${<name>} is a variable called <name> - @<name> is a library path alias called <name> - "some string with &@-*^..whatever.." is a string - expressions use "C" like syntax For the "Magic" layout tool, consult documentation for the "C" version of the tool. The design example uses bus order of [msb:lsb] so that is what has received the most work. It also has some subtle advantages when interfacing with the simulators. If you use [lsb:msb], some testing has been done, but you may still run into net list problems. If you mix bus order, shame on you. Care needs to be taken with circuit names. The schematic entry part of Open Schematic Capture can handle circuits in different libraries or circuit sets having the same name. However, the layout part is based on "Magic" which requires all circuits to have a unique name. Therefore, you should ensure that all circuits have a unique name. 6. Included programs 6.1. Project creation GUI tool - my_proj.open_sch_capt.osc_create_proj The project creation tool provides a graphical tool to create a new project. 6.2. Project manager GUI tool - my_proj.open_sch_capt.osc_manager The project manager tool provides a graphical view of the project data base. It also executes project management commands in a somewhat friendlier manner than the schematic entry tool. 6.3. Design entry GUI tool - my_proj.open_sch_capt.osc_design The design entry tool is used for entering schematics. It can also execute project management commands. It also includes a layout viewer for layouts done with the "Magic" layout program. 6.4. Net lister - my_proj.open_sch_capt.osc_netlist_cmd_line - my_proj.open_sch_capt.osc_netlist_gui The net lister can be run from the command line or from a GUI tool. 6.5. System simulator - my_proj.open_sch_capt.osc_sim_system The system level simulator is an event driven, fixed discrete time simulator, much like a digital simulator. However, it is targeted toward analog simulations. Schematics are net listed in a flat Spice like syntax and read in. Standard digital models are built into the simulator. Java file outlines for custom models can be auto-generated and must be hand edited. They are compiled and linked in. 6.6 Vhdl simulator - my_proj.open_sch_capt.osc_sim_vhdl This release is a first attempt at a vhdl simulator. Schematics are net listed to hierarchical vhdl. Vhdl file outlines for custom models can be auto-generated and must be hand edited. All vhdl is converted to Java, compiled, and then run. At this point the vhdl syntax understood by the Java converter is limited. It can understand vhdl generated by the netlister but only fairly basic syntax when converting custom models. 6.7 Data viewer - my_proj.open_sch_capt.osc_sim_graph The data viewer is a gui data viewer for output from the system simulator and for "raw" data output from the NGSpice simulator. 6.8 Layout vs schematic - my_proj.open_sch_capt.osc_layout_vs_schematic Checks Magic layouts against the corresponding schematic. 6.9 Router - my_proj.open_sch_capt.osc_auto_route The router will route digital cells. It is rather limited in the cells it will handle and is not terribly efficient. 6.10 Modify Spice output - my_proj.open_sch_capt.osc_spice_modify_output This program will reorginize the output of a NGSpice op point text file to make it more readable. 6.11 Master program - my_proj.open_sch_capt.osc This program can call other programs. It is mainly used within a Java Web Start package that is experimental at this point. 6.12 Other There are a few helper programs for simulation and layout. Look for examples of their use in shell scripts in the example project. 7. To run 7.1. Java virtual machine (jvm) and java compiler Java is a complicated beast. You want access to version 1.7 or later of java (executable you call). This is the java virtual machine (jvm) that actually runs the programs contained in <path>/open_sch_capt/java_classes/open_sch_capt.jar. You also want the java compiler, javac, which is needed to run the simulators. It compiles java source that you write or automatically generate from VHDL. In Linux, you can download the full package from the appropriate repository. This will give you the OpenJDK version of Java which includes the Java Runtime Environment (JRE) package containing the java executable and the Java Develpment Kit (JDK) package containing javac. In Windows, you will need to download from Oracle, which hosts Java. You want to make sure you download the JDK which includes the JRE and not the stand alone JRE. For whatever reason, this will give you 2 JREs after you install: C:\Program Files\Java\jre<version> C:\Program Files\Java\jdk<version>\jre Windows will default to the former, but you must use the latter in order for java to be able to find the javac compiler. 7.2. To run schematic entry tool using included Linux script do: cd ${app_dir}/open_sch_capt_data/osc_shell_scripts/open_proj_linux edit osc_design and put in correct paths do: ./osc_design 7.3. To run schematic entry tool using included Windows script edit ${app_dir}\open_sch_capt_data\osc_shell_scripts\open_proj_windows\osc_windows.cmd and put in correct paths execute osc_windows.cmd 7.4. To run included programs from the command line Usage: [<java_path>/]java [-cp <class_path_dir>] <program_name> [options] Args: java : Path to java virtual machine executable : Not needed if included in environmental variable PATH class_path_dir : Class path is path to dir containing java classes needed for this app : Set to <install_path>/java_classes or to jar files : Not needed if included in environmental variable CLASS_PATH Options: --help|-help|--h|-h : Prints help message other options : Do help for specific program. Example: <some_path>/java -> -cp <some_path>/open_sch_capt.jar -> my_proj.open_sch_capt.osc_design -> -proj <some_path>/proj_file.xml -> -nolic <program_name> values: my_proj.open_sch_capt.osc my_proj.open_sch_capt.osc_create_proj my_proj.open_sch_capt.osc_manager my_proj.open_sch_capt.osc_design my_proj.open_sch_capt.osc_netlist_cmd_line my_proj.open_sch_capt.osc_netlist_gui my_proj.open_sch_capt.osc_layout_vs_schematic my_proj.open_sch_capt.osc_sim_system my_proj.open_sch_capt.osc_sim_vhdl my_proj.open_sch_capt.osc_sim_graph my_proj.open_sch_capt.osc_auto_route my_proj.open_sch_capt.osc_spice_modify_output 8. Simulation, Synthesis, and Digital Support For analog, the net lister will generate a net list in NGSpice format. NGSpice includes a "mixed mode" option that works well for a limited amount of digital. However, Spice is not very good for large sections of digital often found in mixed mode designs. Digital support is something of a problem. As far as I can tell, there are not any open source synthesis tools for VHDL or Verilog. Therefore, this project does not support doing design entry using VHDL or Verilog. An attempt was made to optimize the schematic entry tool for digital schematic entry. To simulate digital, the net lister has an option to generate VHDL source from schematics. Simple VHDL models can also be written for the analog, thus providing full chip simulation. GHDL is then used to simulate the resulting netlist. Gtkwave was used as the viewer for the GHDL output. Alternately, the net lister can generate a Spice like net list that is used by the included system level simulator. Here, Java models can be written for the analog, again providing full chip simulation. Release 0.24 is adding some experimental VHDL design support. This includes a VHDL parser, a VHDL to Java simulation model translator, and an accompnaying simulator. They presently support a limited fraction of the VHDL language. For this to be useful, a synthesis tool will need to be written. That is in the future. 9. Scripting Scripting in the schematic entry tool is supported by the "Bean Shell" scripting program (not to be confused with shell scripts) from an independent project. See www.beanshell.org for details. Bean Shell has a number of advantages as a scripting language: - It is designed to interface with Java, and so has access to main program functions and data structures. - It uses Java syntax, so frequently used scripts can easily be pulled into the main program if desired. - I didn't have to write it. Scripts exist as independent files that can be called up from inside the schematic entry tool and then run through the "Proj->run script" menu item. The following script directories are automatically recognized by the program: ${app_dir}/open_sch_capt_data/osc_scripts ${home_dir}/.open_sch_capt/log_files Additional script directories that contain scripts must be declared in the project xml file. ${home_dir}/.open_sch_capt/log_files/log_file.bsh contains the commands run in the most recent schematic entry session as a script file. The schematic entry tool also has a command entry line labeled as "cmd line" and a command history window, both of which can be displayed or hidden. Commands can be entered on the command entry line in one of two formats or searched for by tabbing: - exact cmd syntax example: cmd.shtMove ( "[-220,160]" ); - short cut syntax example: shtmov -200 160 - using tab example: shtm<tab> In the short cut syntax "cmd." is dropped, case of the command is ignored, only enough of the command to make it unique is required, and arguments are separated by spaces. Commands are converted to exact syntax before being executed. Note that only exact syntax can be used in script files. 10. Example projects Documentation is sparse, however, there are example projects located in ${app_dir}/open_sch_capt_data/osc_example_proj. After you get the design tool running, you can load an example by using the menu: Example_Projects -> open example proj 1 Example_Projects -> open example proj 2 Example 1 is a mixed analog/digital design with a MII serial interface, a simple current steering digital to analog converter (DAC), and a simple pipe line analog to digital converter(ADC). Most development was done using bus bit order of [msb:lsb], which is the recommended bit order. However, Example 2 is a version of example 1 paired down to just a MII serial interface and using bus bit order of [lsb:msb], included to allow trouble shooting of the tool for that alternate bit order. 11. Customization 11.1. Customizing with configuration files The program can support custom menu items, scripts, methods, and parameters, all implemented with ASCII configuration files. As an example, see ${app_dir}/open_sch_capt_data/osc_example_proj/proj_file.xml and files in ${app_dir}/open_sch_capt_data/osc_example_proj/ctrl_files_dir. 11.2. Customizing some source code If you want to modify a limited amount of source code and still be compatible with future releases, then limit your mods to files in ${app_dir}/java_source/my_proj/open_sch_capt/custom and then recompile. 12. Misc 12.1. File write locking File permissions of the native operating system must be set correctly. In order to write to a schematic/symbol xml data file, there are 2 complementary write locking mechanisms that must both be OK. Xml data files have an entry of "<xml_sheet_data ...... writable="true/false" ......... >". If writable="false" then the program will refuse to write to this file. Any cells created within the program will have writable="true". The writable attribute must be hand edited with a text editor to change it. This is intended mostly for standard library cells that should never be modified. When a schematic/symbol drawing window is opened the program attempts to create a write lock on the corresponding data file by creating a file named <xml_file_name>.lck. If the <xml_file_name>.lck file already exists the drawing window will not be able to do edits on that schematic/symbol. If the drawing window successfully acquired the lock, the <xml_file_name>.lck file will be deleted and the lock released when the window is closed. If a schematic/symbol refuses to allow writes and no one else is using it, the program probably failed to delete the <xml_file_name>.lck file. In this case, the program can demand to override the write lock, or the <xml_file_name>.lck file can be manually deleted. 12.2. Schematic net listing Schematic net listing is a 3 step process. The first step creates a file named <path_to_circuit>/base_netlist.xml for each circuit required by the final net list that is a generic base net list for that particular circuit. The second step reads the base_netlist.xml files for all required circuits and outputs a hierarchical Spice net list with some extra data added as comments. If required, the hierarchical Spice net list is used to generate a flat Spice net list or a hierarchical VHDL net list. For a VHDL net list, if a <path_to_circuit>/vhdl_view/model.vhd file exists, that file will be incoporated into the netlist, replacing the schematic for the circuit. 12.3. Mouse double click in older Linux distributions In older linux distributions the default mouse maximum click time spacing for a double click is 100 mS, which is too fast for practical use, and Java will not use the modified values set by desktop tools. See the ${app_dir}/open_sch_capt_data/osc_shell_scripts/other_linux/dotXresources file for a fix. 12.4. Multiple schematic sheets, multiple and fragmented symbols Initially the program supports only 1 schematic sheet and 1 symbol representation per circuit. Eventually it may support multiple schematic sheets and multiple symbol representations per circuit as well as the ability to fragment a symbol into several independently placable pieces. 12.5. Differences in schematic and layout tool behavior The schematic entry tool was implemented first and is set up more or less to have key strokes define an operation and mouse clicks execute the operation. The layout tool is as faithful a translation as possible of the "C" version of the program. Here a lot of operations tend to be based on using the mouse for positioning and using key strokes to define and execute the operation. This means that things like select, copy, move, etc behave differently from the schematic entry tool. 12.6. Separation of schematic and layout data Schematic and layout data are separated fairly high in the library structure. This makes life easier for the design and layout guys. 12.7. Run install test Included in the data base are scripts to test the installation of the program by exercising the example project included in the data base. To run the test go to ${app_dir} and run: run_linux_install_test or run_windows_install_test.cmd This also provides an easy way to become familiar with the program. 12.8. Status of the layout editor The layout editor is intended to be a faithful as possible translation of the "C" version of the Magic program, originally from UC Berkeley. The translation is not yet complete. The layout editor is now reasonably functional, still with bugs and holes. It will improve over the comming releases. 12.9. Viewing text files in Microsoft Windows An attempt was made to save all text files in Microsoft format, but some may have been saved in Unix format. For these files the default Microsoft Windows text editor "notepad" won't handle the format well. For these files, use "wordpad" or a third party text editor such as "vim".
Source: readme.txt, updated 2015-08-25

Thanks for helping keep SourceForge clean.

Screenshot instructions:
Red Hat Linux   Ubuntu

Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Briefly describe the problem (required):

Upload screenshot of ad (required):
Select a file, or drag & drop file here.

Please provide the ad click URL, if possible:

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks