If you would like the setup for previous versions of Wine, please visit my older WWW page.
I will briefly describe the process of setting up your environment to execute the Xilinx Alliance 3.1i tools using our current installations of the tools and wine. The setup is significantly different with the latest install of the Alliance tools and Wine, so please read these setup suggestions carefully.
XILINX="C:\Xilinx";export XILINX
setenv XILINX "C:\Xilinx"
wine ngdbuild
If you need to execute a Windows program with arguments (as we often
need to do), you should provide the arguments after a -- to
indicate to Wine that the arguments belong to the Windows program and
not Wine itself. For instance, you can execute fpga_editor
on pe1_Counters.par.ncd as follows:
wine fpga_editor -- pe1_Counters.par.ncd
A wine option you might like for some of the GUI programs
is the -managed option; this allows the window to be managed
by your window manager rather than the Wine environment. For example:
wine -managed fpga_editor -- pe1_Counters.par.ncd
In executing programs, you might have to deal with the mixing of UNIX and Windows-style paths. Wine itself doesn't mind commands like
wine /mirrors/usr/wine-c/Xilinx/bin/nt/ngdbuild
since it can do the translation to the Windows world, assuming the
subdirectory is defined in the Wine environment (check the
.winerc file for that). To be safe, I use strictly
Windows-style paths for environment variables used by Windows programs
as well as for options passed to the Windows programs.When executing programs with wine, you will receive errors and messages like the following:
err:win32:DeleteCriticalSection Deleting owned critical section (0x40ec0ab4) err:win32:DeleteCriticalSection Deleting owned critical section (0x40ec0a54) err:win32:DeleteCriticalSection Deleting owned critical section (0x40ec09f4) err:win32:DeleteCriticalSection Deleting owned critical section (0x40ec0994) err:win32:DeleteCriticalSection Deleting owned critical section (0x78040e88)or
fixme:console:SetConsoleCtrlHandler (0x7800dd30,1) - no error checking or testing yetThese are common and to be expected. They are just messages from Wine relating debugging information and partially implemented emulation code.
In the past, the biggest shortcoming of Wine as far as executing the Xilinx tools is concerned was that Wine didn't spawn other Windows programs properly. I am glad to say that this support has improved and some Windows programs are able to successfully execute other Windows programs (for example, you can actually run the Xilinx Alliance 3.1i installer under Wine now). Unfortunately, I have noticed that ngdbuild can spawn its helper programs, but, for some reason, ngdbuild doesn't appear to know that it worked. If you run ngdbuild several times it seems will eventually complete, depending on the number netlists which must be converted to the .ngd format from XNF, EDIF, etc. For now I would recommend the execution of the ngdbuild helper programs (xnf2ngd, edif2ngd, etc.) still be explicit in Makefiles and scripts.
As an example, with the Wildforce environment, there are a few XNF drop-ins. In this case, ngdbuild tries to spawn xnf2ngd to translate those files. Since I use Makefiles to process my design files, I just execute xnf2ngd, edif2ngd, and the other translators before calling ngdbuild. Note that your main design file must be translated as well as drop-ins before executing ngdbuild.
Unlike with Wine-991212, map under Wine-20000821 appears to be able to spawn m1map for XC4000 designs properly now. As a little background, I have noticed that map actually spawns m1map for XC4000 designs, while it doesn't for Virtex. With previous versions of Wine, due to the process spawning limitations, I replaced references to map in my UNIX Makefiles with m1map as a workaround for XC4000 designs. For Virtex designs, map worked just find under Wine. With Wine-20000821, apparently, you can use just map for both XC4000 and Virtex designs without any problem since the processing spawing capabilities have improved. If you start having problems with process spawning and map for XC4000 designs, you might consider m1map again instead.
One small problem that I discovered with bitgen is that it writes out file names which only have lower case letters, even if the original design's file name had some capital letters. Of course, in Windows, this is not a problem since the tools tend to be case insensitive when it comes to file names. Under Linux, though, this complicates "make" files, but it can be handled fairly easily if you know of the problem beforehand.
I'm happy to report that the problems with fpga_editor and the "open file" dialog boxes appears to have been solved under Wine-20000821. In previous versions of Wine, the file of interest would appear to be appropriately entered in the dialog box once selected, but it couldn't actually be viewed unless it is in the root directory for the emulated Windows drive. With these previous versions of Wine, if you would really wanted to view a file you had to do one of two things:
wine "fpga_editor mydesign.ncd"
where mydesign.ncd is the name of the .ncd
file you want to view. Basically, a command-line option to
fpga_editor appears to work if the file is in the
local directory.
Also, when running fpga_editor, you will notice errors and messages such as:
fixme:mdi:MDIRefreshMenu partially function stub err:heap:HeapValidate Heap 41700000: block ffffffff is not inside heapAgain, these are common and to be expected.
Previously, with the Windows process spawning problems of Wine, programs like dsgnmgr wouldn't work at all. I have tried dsgnmgr under Wine-20000821 and things work better, but due to OLE problems (with revengine.exe), dsgnmgr doesn't appear to be able to talk to programs that it spawns or some problem like that.
Linux PII 333 (All files retrieved over NFS)
1.480u 3.090s 5:51.61 1.2% 0+0k 0+0io 7394pf+0w
-------
Linux PIII 500 (All files retrieved over NFS)
0.940u 3.010s 5:24.94 1.2% 0+0k 0+0io 7372pf+0w
-------
HP-UX J2240 (local design files)
190.30u 10.15s 4:09.03 80.4%
-------
Linux PII 333 (local design files)
1.600u 2.840s 2:56.70 2.5% 0+0k 0+0io 7394pf+0w
-------
Linux PIII 500 (local design files)
1.020u 2.910s 1:53.01 3.4% 0+0k 0+0io 7372pf+0w
-------
Clearly, NFS on Linux is really killing us for this tiny design since
much of the time is spent actually reading and writing files. In
previous tests in which much of the time is spent computing, these I/O
related problems were not as dominant and the Linux numbers look
better even with the NFS issues.Here are some comparisons provided by other members of the lab on much larger designs:
Design: CDI (Virtex)
HP-UX J2240 (All local files), no (default?) effort level:
1 hr. 37 min.
Linux PIII 500 (local design files), no (default?) effort level:
17 min.
HP-UX J2240, highest effort level, 2 delay/2 clean-up passes:
approx. 30 hrs.
Linux PIII 500 (local design files), highest effort, 2 delay/2 clean-up passes:
29 min. 18 sec.
Design: Superquant, XC4085
Linux PIII 500
76.170u 832.670s 42:33:38.53 0.5% 0+0k 0+0io 7422pf+0w
-----------
HP-UX J2240
346142.79u 338.91s 97:17:38.16 0.8%
-----------
From these larger design, it's clear that the Xilinx tools under Linux
run quite fast even using the wine emulator. Just imagine
how fast they would be if they were compiled for Linux.