xschem/XSchemWin/README_WIN

152 lines
9.2 KiB
Plaintext

XSCHEM : schematic capture and netlisting EDA tool
Xschem is a schematic capture program, it allows creation of hierarchical representation
of circuits with a top down approach . By focusing on interfaces, hierarchy and instance
properties a complex system can be described in terms of simpler building blocks. A VHDL
or Verilog or Spice netlist can be generated from the drawn schematic, allowing the
simulation of the circuit. Key feature of the program is its drawing engine written in C
and using directly the Xlib drawing primitives; this gives very good speed performance,
even on very big circuits. The user interface is built with the Tcl-Tk toolkit, tcl is
also the extension language used.
DOCUMENTATION AND MANUAL
http://repo.hu/projects/xschem
BUILDING & RUNNING
Please read additional information in file INSTALL_WIN for installation instructions
SUBDIRECTORIES
XSchemWin: Windows specific files (e.g. xschem.tcl, xschemrc, config.h)
INSTRUCTIONS TO COMPILE XSCHEM IN VISUAL STUDIO 2022
1. requirements
- Microsoft Visual Studio 2022
- Wix Toolset Visual Studio 2022 Extension (Download through Microsoft Extensions on VS 2022)
- Wix Toolset Build Tools v3.11 (Download online from wixtoolset)
(WiX Toolset requires the .NET Framework 3.5.1 Windows feature to be enabled.)
Turn Windows features on or off
Select .NET framework 3.5 (include .NET 2.0 and 3.0)
- ActiveState tcl/tk 8.6 (Remember install directory where includes files are, see step h)
32-bit, 64-bit ActiveState need to match XSchem x86, x64, respectively.
- bison (Remember executabled directory for step h, preferably don't have spaces in the directory path (ie., don't use Program Files))
(http://gnuwin32.sourceforge.net/packages/bison.htm, Complete package, except sources (bison-2.4.1-setup.exe))
- flex (Remember executabled directory for step h, see bison note)
(http://gnuwin32.sourceforge.net/packages/flex.htm, Complete package, except sources (flex-2.5.4a-1.exe))
Optional:
- Windows Ghostscript (to print)
Add directory of gswin64.exe to PATH if installer didn't do it
*** NOTE: DO 2A OR 2B, but NOT BOTH ***
2A. Steps in (2B) are already saved in XSchemWin/XSchemWin.sln.
Open "XSchemWin/XSchemWin.sln" in VS2022 and proceed to (3).
2B is very helpful if you run into compile errors in VS2022.
2B. Create new XSchemWin project on Visual Studio 2022
a. Open VS2022
b. Create a new project
c. Select Empty Project
d. Project Name: XSchemWin
Location: D:\Projects\XSchem
Solution Name: XSchemWin (Check Place solution and project in the same directory).
e. Click Create
A new folder XSchemWin will be created (XschemWin.sln and XSchem.vcxproj)
f. Add C/H files under src into the project (e.g. svn://repo.hu/xschem/trunk/src)
- Exclude src/expandlabel.c, src/expandlabel.h, src/parselabel.c (add later after using Windows Flex and bison)
- Exclude src/xschem.tcl and src/xschemrc (add the two files from svn://repo.hu/xschem/trunk/src/XSchemWin/)
- Add config.h from svn://repo.hu/xschem/trunk/src/XSchemWin/
config.h is generated by Linux counterpart. Edit if necessary
g. XSchemWin Property Page > Linker > Input (All Configuration for x64 depending on what machine dependency you installed for Active State):
Add "tcl86t.lib;tk86t.lib" for Additional Dependencies
h. For (All Configurations, x64)
XSchemWin Property Page > VC++ Directories > Include Directories, Add "C:\ActiveTcl\include"
XSchemWin Property Page > VC++ Directories > Library Directories, Add "C:\ActiveTcl\lib"
XSchemWin Property Page > VC++ Directories > Executable Directories, Add "D:\GnuWin32\bin"
i. XSchemWin Property Page > C/C++ > Preprocessor, Add ";_CRT_SECURE_NO_WARNINGS" to proceed with the following compile error:
Severity Code Description Project File Line Suppression State
Error C4996 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. XSchemWin D:\Projects\XSchem\src\actions.c 117
j. Right click parselabel.l
Property Pages > Item type, change from "Does not participate in build" to "Custom Build Tool"
Click Apply to get options for "Custom Build tool"
Command Line: flex -l -oparselabel.c ..\src\parselabel.l
Outputs: parselabel.c
k. Right click expandlabel.y
Property Pages > Item type, change from "Does not participate in build" to "Custom Build Tool"
Command Line: bison -d -o expandlabel.c ..\src\expandlabel.y
Outputs: expandlabel.c
3. Compiling
- config.h can be edited to change default's XSCHEM_LIBRARY_PATH.
It's defaulted to include the following directories:
C:/Program Files/XSchem/xschem_library/devices
C:/Program Files/XSchem/xschem_library/examples
C:/Program Files/XSchem/xschem_library/ngspice
C:/Program Files/XSchem/xschem_library/logic
C:/Program Files/XSchem/xschem_library/binto7seg
C:/Program Files/XSchem/xschem_library/generators
C:/Program Files/XSchem/xschem_library/pcb
C:/Program Files/XSchem/xschem_library/rom8k
Ctrl-b
- After compiling the first time, add expandlabel.c, expandlabel.h, parselabel.c into the project.
These 3 files are created in D:\Projects\XSchem\XSchemWin
4. running from Visual Studio 2022. If you run the debug version, you can set breakpoints on the code and step the code with VS 2022.
F5
5. To compile and create Xschem Windows Installer
a. Right click on "XSchemWix" and select "Build"
b. If the compilation is successful, the Windows installer is located in XSchemWix/bin/Release/XSchem.msi
c. Double click on XSchem.msi to install it into it on your Windows machine.
d. Use Windows "Add or Remove Programs" to uninstall Xschem before installing a newer version.
INSTRUCTIONS TO COMPILE CAIRO AND COMPILE XSCHEM WITH IT ON VISUAL STUDIO 2022
1. Create a cairo_win directory in XSchemWin
2. cd cairo_win and git clone from "https://github.com/gleb-t/Cairo-VS" (inside the newly cairo_win directory, use command "git clone https://github.com/gleb-t/Cairo-VS .")
Note: Latest source can be downloaded from the following (or alternatively, you can use packed-lib-source.zip provided by gleb-t):
a. cairo: https://www.cairographics.org/releases/ (e.g. cairo-1.16.0.tar.xz)
b. freetype: https://github.com/freetype/freetype
c. libpng: http://www.libpng.org/pub/png/libpng.html (e.g., libpng-1.6.37.tar.gz)
d. pixman: https://www.cairographics.org/releases/ (e.g., pixman-0.40.0.tar.gz)
e. zlib: https://zlib.net/ (e.g., zlib-1.2.11.tar.gz)
Put each source content into the appropriate subdirectory in cairo_win directory.
For example, in cairo_win/cairo folder, you should have the following folders: boilerplate, build, doc, perf, src, test, util, ...
3. Compile freetype (x64, release_static) library in freetype directory:
a. Open freetype/builds/windows/vc2010/freetype.sln in VS2022
b. Select Release_static; x64 and build solution (library file is created in freetype\objs\x64\Release Static\freetype.lib)
4. Compile cairo: Open VS 2019 solution in projects/cairo.sln (Retarget solution if using VS 2022)
a. Change to Release, x64 build
b. Change cairo > Properties > Librarian > General > freetype271.lib to freetype.lib (Optional: Also do this for Debug,x64 build if needed, freetype271d.lib)
c. cairo > Properties > Configuration Properties > VC++ Directories, append the following to Library directories for freetype.lib compiled in (3):
;$(ProjectDir)../../freetype/objs/x64/Release Static
For Debug,x64 build: ;$(ProjectDir)../../freetype/objs/x64/Debug Static
d. Edit cairo > Header Files > cairo-features.h by adding the following line "#define CAIRO_HAS_XLIB_SURFACE 1" at the end before the last #endif
e. cairo.lib and pixman.lib are in cairo_win/projects/x64/Release
5. Setup xschem VS 2022 to compile with cairo library
a. Uncomment "#define HAS_CAIRO 1" and "#define CAIRO_WIN32_STATIC_BUILD" in config.h
*** Note: Do 5B OR 5BB, but NOT BOTH ***
Steps in (5bb) are saved in XSchemWin_cairo.vcxproj ***
b. To use it:
(i) Close the solution
(ii) Rename non cairo XSchemWin.vcxproj to some other name
(iii) Change XSchemWin_cairo.vcxproj to XSchemWin.vcxproj.
bb. For Release, x64
* Properties > VC++ Directories > Include: ;cairo_win\cairo\src;cairo_win\projects\cairo\src;
Libraries: ;cairo_win\projects\x64\Release;cairo_win\libs;cairo_win\freetype\objs\x64\Release Static
* Properties > Linker > Input > Additional Dependencies: Add ;cairo.lib;pixman.lib;zlib.lib;libpng.lib;freetype.lib;
For Debug, x64
* Properties > VC++ Directories > Include: ;cairo_win\cairo\src;cairo_win\projects\cairo\src;
Libraries: ;cairo_win\projects\x64\Debug;cairo_win\libs;cairo_win\freetype\objs\x64\Debug Static
* Properties > Linker > Input > Additional Dependencies: Add ;cairo.lib;pixman.lib;zlibd.lib;libpngd.lib;freetype.lib;