User Tools

Site Tools


xilinx:fpga_editor

This tool is going on the wayside from a combination of PlanAhead and Vivado making it obsolete. However, some of the timing analysis still integrates only with fpga_editor so here is some info…

Other people seem to not have too much trouble getting this working on Ubuntu 12.04 x64. My system has some quirk that I have yet to figure out.

Ubuntu 12.04 x64

Notes are for Ubuntu 12.04 x64 but might work for other distros. This is a jumble of things I poked at

  • Install Xilinx tools (I'm using 14.5 as of this writing)
  • sudo apt-get install libmotif4 libstdc++5
  • export DISPLAY=:0
  • Something like: export XKEYSYMDB=/usr/share/X11/XKeysymDB
    • fixme
  • source /opt/Xilinx/14.5/ISE_DS/settings64.sh
  • fpga_editor
  • Wait 60 seconds as you think its broken…but its really just slow
  • XXX: still having problems, need to complete this list…
  • sudo apt-get install libmotif3
  • sudo apt-get install libstdc++5 libstdc++5:i386
  • sudo apt-get install x11proto-print-dev
    • Fixes: ../Xm/Xm.h:76:34: fatal error: X11/extensions/Print.h: No such file or directory
  • sudo apt-get install libxft-dev
    • Fixes: XmRenderTI.h:46:25: fatal error: X11/Xft/Xft.h: No such file or directory
  • sudo apt-get install libfreetype6-dev lsb-build-desktop3
    • Fixes: /usr/include/ft2build.h:56:38: fatal error: freetype/config/ftheader.h: No such file or directory
  • sudo apt-get install libxp-dev
    • FixeS: can't find -lXp
  • sudo apt-get install libxaw7-dev
    • Fixes: EditresCom.c:57:31: fatal error: X11/Xaw/Cardinals.h: No such file or directory
  • sudo apt-get install xfonts-75dpi xfonts-100dpi
  • Download openMotif-2.2.3
    • export LANG=en_US
      • Fixes: Error: $LANG contains an unknown character set
    • ./configure –prefix=/home/mcmaster/document/prefix/openMotif-2.2.3
      • NOTE: you need to re-run this after installing packages if you ran this first
      • Otherwise it won't know about the new include paths
      • Some of these dependencies were for 2.3.0 which builds wrong library but this is known to work
    • make
    • make install

Still didn't help: sudo ln -s /usr/lib/libXm.so.4.0.3 /usr/lib/libXm.so.3

See note above about setting DISPLAY variable

If you get:

$ fpga_editor
/opt/Xilinx/14.5/ISE_DS/ISE/bin/lin64/_fpga_editor: error while loading shared libraries: libXm.so.3: cannot open shared object file: No such file or directory

Then:

$ sudo apt-get install libmotif4

If you get:

$ fpga_editor
/opt/Xilinx/14.5/ISE_DS/ISE/bin/lin64/_fpga_editor: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Then:

$ sudo apt-get install libstdc++5

If you get:

$ fpga_editor
Wind/U Error (193): X-Resource: DefaultGUIFontSpec (-*-helvetica-medium-r-normal-*-14-*) does not fully specify a font set for this locale
Wind/U Error (248): Failed to connect to the registry on server localhost

Warning!!: XKEYSYMDB environment variable is set to a wrong location
Cannot register service: RPC: Unable to receive; errno = Connection refused
Segmentation fault

Stack trace: http://pastebin.com/zaS5iiFD

Reference

Some information from a reference working copy

johnm@autunite:~$ echo $DISPLAY 
:0
johnm@autunite:~$ echo $LANG 
en_US.UTF-8

johnm@autunite:~$ lsof -P -T -p 3035 |grep -v /opt/Xilinx |fgrep .so
_fpga_edi 3035 johnm  mem    REG                8,1    47680 5636909 /lib/x86_64-linux-gnu/libnss_nis-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1    35680 5640571 /lib/x86_64-linux-gnu/libnss_compat-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1    52120 5640561 /lib/x86_64-linux-gnu/libnss_files-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1    22536 1068007 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
_fpga_edi 3035 johnm  mem    REG                8,1    39184 1053173 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
_fpga_edi 3035 johnm  mem    REG                8,1    92720 5641186 /lib/x86_64-linux-gnu/libz.so.1.2.3.4
_fpga_edi 3035 johnm  mem    REG                8,1   170024 5641093 /lib/x86_64-linux-gnu/libexpat.so.1.5.2
_fpga_edi 3035 johnm  mem    REG                8,1    22504 1064606 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
_fpga_edi 3035 johnm  mem    REG                8,1    39336 1068010 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
_fpga_edi 3035 johnm  mem    REG                8,1   637160 1049484 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.8.0
_fpga_edi 3035 johnm  mem    REG                8,1   220896 1064916 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.4.4
_fpga_edi 3035 johnm  mem    REG                8,1   121232 1061446 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
_fpga_edi 3035 johnm  mem    REG                8,1    93728 1064483 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
_fpga_edi 3035 johnm  mem    REG                8,1    30888 1064573 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
_fpga_edi 3035 johnm  mem    REG                8,1    10328 1064586 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
_fpga_edi 3035 johnm  mem    REG                8,1    85168 1064612 /usr/lib/x86_64-linux-gnu/libXft.so.2.2.0
_fpga_edi 3035 johnm  mem    REG                8,1    69504 1067998 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
_fpga_edi 3035 johnm  mem    REG                8,1   829600 1078291 /usr/lib/x86_64-linux-gnu/libstdc++.so.5.0.7
_fpga_edi 3035 johnm  mem    REG                8,1    18896 5636397 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
_fpga_edi 3035 johnm  mem    REG                8,1  1265056 1067958 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
_fpga_edi 3035 johnm  mem    REG                8,1  1807032 5640569 /lib/x86_64-linux-gnu/libc-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1    88384 5641096 /lib/x86_64-linux-gnu/libgcc_s.so.1
_fpga_edi 3035 johnm  mem    REG                8,1  1030512 5640558 /lib/x86_64-linux-gnu/libm-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1    14768 5640573 /lib/x86_64-linux-gnu/libdl-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1    97248 5640570 /lib/x86_64-linux-gnu/libnsl-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1   135366 5640560 /lib/x86_64-linux-gnu/libpthread-2.15.so
_fpga_edi 3035 johnm  mem    REG                8,1   102488 1064618 /usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0
_fpga_edi 3035 johnm  mem    REG                8,1    35664 1056130 /usr/lib/x86_64-linux-gnu/libXp.so.6.2.0
_fpga_edi 3035 johnm  mem    REG                8,1  2847664 1049539 /usr/lib/x86_64-linux-gnu/libXm.so.4.0.3
_fpga_edi 3035 johnm  mem    REG                8,1   149280 5640562 /lib/x86_64-linux-gnu/ld-2.15.so

Ubuntu 14.04 x64

Ultimately couldn't get it to work. Simply trying to launch doesn't work:

DISPLAY=:0 LANG=en_US fpga_editor

Based on above instructions, tried to do:

sudo apt-get install -y libmotif3 libmotif4 libstdc++5 libstdc++5:i386 x11proto-print-dev libxft-dev libfreetype6-dev libxp-dev libxaw7-dev xfonts-75dpi xfonts-100dpi
mkdir -p ~/document/software/openmotif
cd ~/document/software/openmotif
wget http://pkgs.fedoraproject.org/repo/pkgs/openmotif/openMotif-2.2.3.tar.gz/94c96a0f94ee0d5e41d3dba2188b263d/openMotif-2.2.3.tar.gz
tar -xf openMotif-2.2.3.tar.gz
cd openMotif-2.2.3
./configure –prefix=/home/mcmaster/document/prefix/openMotif-2.2.3
mkdir -p /home/mcmaster/document/prefix/openMotif-2.2.3
make

gedit tools/wml/UilLexPars.h
#ifdef VERSION
#undef VERSION
#endif

# which now fails to link (/usr/bin/ld: ../../../../lib/Xm/.libs/libXm.so: undefined reference to symbol 'XFillArc')
make
# otherwise would do
# make install

LD_LIBRARY_PATH the reference libraries did not work

LD_PRELOAD just libXm did not work

Launching in edit mode

This section describes how to get FPGA editor running in edit mode.

Prereqs:

  • ISE web pack or better
  • A .ncd file. The simplest way to get one is to create a simple HDL (verilog/VHDL) project and synthesize it in ISE

Procedure:

  1. Setup Xilinx environment
    1. Ex: source /opt/Xilinx/13.4/ISE_DS/settings32.sh
  2. Launch with command “fpga_editor” in the project directory. It can take some time (a minute on my laptop) to launch without any hint of working (ie no splash screen or anything)
    • In theory you can launch this from IDE directly but its easier to debug launch failures from command line
    • Its suppose to be able to be able to take project names on the command line but I couldn't get that to work
    • If you get error: cannot open x screen or something like that
      • export DISPLAY=:0
    • I use a wrapper script: on Fedora 13 with ISE 13.4 I had to manually compile compatible motif library
      • LD_PRELOAD=/home/mcmaster/document/build/openmotif/openMotif-2.2.3/lib/Xm/.libs/libXm.so.3 /opt/Xilinx/13.4/ISE_DS/ISE/bin/lin/fpga_editor
  3. File → open and type in “project.ncd” under “Design File” and hit “Ok” at the bottom
    • In theory you could browse but it always gives me an error…
  4. File ⇒ Main Properties. Under “Edit Mode” select “Read/Write”
  5. You should be ready now
    1. Do a quick check by zooming in on an IOB or slice and double clicking to open it
    2. Hit the pencil in the upper left corner (“Begin Editing” tooltip)
    3. The screen should change color

Slice tutorial

This section shows a simple example on how to edit a pre-existing design. In particular, this tutorial converts an HDL AND gate into an OR gate by editing the slice.

Prereqs:

  • ISE web pack or better
  • Recommended: a board to run on. I used Digilent Spartan-3 board but the example is simple enough you should be able to adapt for other boards pretty quickly

Input files

HDL

`timescale 1ns / 1ps
module andg(
    input A,
    input B,
    output C
    );
    reg C_reg;
    always @ (A or B)
    begin
        C_reg = A && B; 
    end
    assign C = C_reg;
endmodule

UCF

NET "A" LOC = L14;
NET "B" LOC = M13;
NET "C" LOC = P11;

Tutorial

Procedure:

  1. Create a new Verilog project in ISE called “andg”
  2. Use the .v and .ucf files provided above
  3. Generate programming file (ie go through normal ISE design flow)
  4. Use iMPACT to program the bitstream file and verify that the LED turns on only when both buttons are pressed. We now have a working baseline
  5. Close ISE. We'll be doing the rest from command line and FPGA editor
  6. Open the .ncd in edit mode in fpga_editor (see basic tutorial)
  7. In the window “List1” with the components double click on the SLICE entry to bring it into view
  8. Double click on the red slice entry to bring up the slice editor and put it into edit mode
  9. Zoom in on the LUT with the two blue lines going through it
  10. You should have two LUTs: F and G. Identity which one you have by clicking on LUT once and seeing what shows up in the lower left hand corner or just by knowing that F is on top. We can also cheat a little since someone already wrote a baseline logic function for us and so it should be obvious which one is used.
  11. Click on the show/hide attributes button to bring up the box at the bottom
  12. Find the box and edit the logic function to change from * (AND) to + (OR). Editing the Config box directly also seems to work but the Berkeley lab recommends against it
  13. Close the SLICE by double click the upper left hand box
  14. Save the project (File ⇒ save or ctrl-s)
  15. Use bitgen to create a new bitstream: bitgen andg.ncd andg.bit -w
  16. Program the new bitstream using iMPACT
  17. The buttons should now respond as an OR function instead of an AND function

References

xilinx/fpga_editor.txt · Last modified: 2015/10/19 16:41 by mcmaster-guest