There is a [![Elphel video](http://community.elphel.com/pictures/icons/playbutton3-32.png) video tutorial](http://blog.elphel.com/2016/05/tutorial-02-eclipse-based-fpga-development-environment-for-elphel-cameras) that shows installation of this plugin and related software.
There is a [![Elphel video](https://community.elphel.com/pictures/icons/playbutton3-32.png) video tutorial](https://blog.elphel.com/2016/05/tutorial-02-eclipse-based-fpga-development-environment-for-elphel-cameras) that shows installation of this plugin and related software.
*[Run VEditor installation/patch script from within the top directory of vdt-plugin](#run-veditor-installationpatch-script-from-within-the-top-directory-of-vdt-plugin)
*[Run VEditor installation/patch script from within the top directory of vdt-plugin](#run-veditor-installationpatch-script-from-within-the-top-directory-of-vdt-plugin)
*[Import the VDT plugin project into the Eclipse workspace.](#import-the-vdt-plugin-project-into-the-eclipse-workspace)
*[Import the VDT plugin project into the Eclipse workspace.](#import-the-vdt-plugin-project-into-the-eclipse-workspace)
Unzip it in any convenient location - this location will be provided to Eclipse later.
Unzip it in any convenient location - this location will be provided to Eclipse later.
### Eclipse IDE
### Eclipse IDE
You will need _Eclipse IDE for Java EE Developers_ (capable of plugin development),
You will need _Eclipse IDE for Java EE Developers_ (capable of plugin development),
latest tested version is Mars (eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz). VDT plugin
latest tested version is Mars (eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz). VDT plugin
is experimental and I would recommend to have a separate (from your other development)
is experimental and I would recommend to have a separate (from your other development)
installation. VDT uses modified version of [VEditor](http://sourceforge.net/projects/veditor/)
installation. VDT uses modified version of [VEditor](http://sourceforge.net/projects/veditor/)
and any other versions of VEditor installed will conflict with VDT.
and any other versions of VEditor installed will conflict with VDT.
There are still issues with GTK3 (refresh of the windows content, animated icons), all seems
There are still issues with GTK3 (refresh of the windows content, animated icons), all seems
to work if Gtk3 is disabled (Gtk2 used instead) by adding the following 2 lines in the eclipse.ini
to work if Gtk3 is disabled (Gtk2 used instead) by adding the following 2 lines in the eclipse.ini
file (it is in the same directory as eclipse executable) .
file (it is in the same directory as eclipse executable) .
```
```
--launcher.GTK_version
--launcher.GTK_version
2
2
```
```
are added just before line
are added just before line
```
```
--launcher.appendVmargs.
--launcher.appendVmargs.
```
```
Additionally a fix is required to make menu tooltips visible (https://github.com/dirruk1/gnome-breeze/issues/7#issuecomment-109325330) :
Additionally a fix is required to make menu tooltips visible (https://github.com/dirruk1/gnome-breeze/issues/7#issuecomment-109325330) :
«go to system settings > color > options and make sure "apply colors to non-Qt colors" is switched off, then log out and back in and see if the colors are normal. The tooltips are not supposed to have a light background.»
«go to system settings > color > options and make sure "apply colors to non-Qt colors" is switched off, then log out and back in and see if the colors are normal. The tooltips are not supposed to have a light background.»
__Update for Eclipse Neon__: Tested, instructions above are still valid (including using GTK2 instead of GTK3),
__Update for Eclipse Neon__: Tested, instructions above are still valid (including using GTK2 instead of GTK3),
in the installer the needed _Eclipse IDE for Java EE Developers_ is __the second choice__ in the menu. You also need to
in the installer the needed _Eclipse IDE for Java EE Developers_ is __the second choice__ in the menu. You also need to
remove the following line in eclipse.ini. By default Neon installs executable and ini file to ~/eclipse/jee-neon/:
remove the following line in eclipse.ini. By default Neon installs executable and ini file to ~/eclipse/jee-neon/:
-XX:+UseStringDeduplication
-XX:+UseStringDeduplication
As it is not recognized on GNU/Linux (at least on my installation) and causes a crash at startup.
As it is not recognized on GNU/Linux (at least on my installation) and causes a crash at startup.
### Installation of VDT plugin itself
### Installation of VDT plugin itself
VDT plugin uses modified VEditor plugin for Eclipse and because of the license incompatibility
VDT plugin uses modified VEditor plugin for Eclipse and because of the license incompatibility
(Eclipse Public License v1.0 for VEditor and GNU General Public License v3.0+ for VDT plugin)
(Eclipse Public License v1.0 for VEditor and GNU General Public License v3.0+ for VDT plugin)
it is not possible to distribute a pre-compiled version (.jar file), so the plugin code has to be
it is not possible to distribute a pre-compiled version (.jar file), so the plugin code has to be
merged (using provided script) and compiled/built as Eclipse plugin project.
merged (using provided script) and compiled/built as Eclipse plugin project.
###Run VEditor installation/patch script from within the top directory of vdt-plugin
### Run VEditor installation/patch script from within the top directory of vdt-plugin
```
```
./install_and_patch_veditor.sh
./install_and_patch_veditor.sh
```
```
This will clone the original VEditor source tree as tmp/unmodified_veditor_1_2_0_clone,
This will clone the original VEditor source tree as tmp/unmodified_veditor_1_2_0_clone,
re-organize files to match VDT plugin code tree, apply patch and copy the produced files
re-organize files to match VDT plugin code tree, apply patch and copy the produced files
to VDT project locations (most under src/com/elphel/vdt/veditor and _generated), these
to VDT project locations (most under src/com/elphel/vdt/veditor and _generated), these
files/directories are listed in .gitignore . When VEditor-related part of the VDT code
files/directories are listed in .gitignore . When VEditor-related part of the VDT code
will be changed (and so the vdt-veditor.patch) you will need to run
will be changed (and so the vdt-veditor.patch) you will need to run
./install_and_patch_veditor.sh again
./install_and_patch_veditor.sh again
####Import the VDT plugin project into the Eclipse workspace.
#### Import the VDT plugin project into the Eclipse workspace.
At this stage I hit GTK bug that caused Eclipse to crash, working solution is described
At this stage I hit GTK bug that caused Eclipse to crash, working solution is described
in https://bugs.kde.org/show_bug.cgi?id=339174 :
in https://bugs.kde.org/show_bug.cgi?id=339174 :
For oxygen, edit the normally already existing file
For oxygen, edit the normally already existing file
**/usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc** and change **GtkComboBox::appears-as-list = 1**
**/usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc** and change **GtkComboBox::appears-as-list = 1**
into **GtkComboBox::appears-as-list = 0**
into **GtkComboBox::appears-as-list = 0**
```
```
File->Import->Git->Projects from Git->Existing local repository-> Select directory where you cloned VDT
File->Import->Git->Projects from Git->Existing local repository-> Select directory where you cloned VDT
Import Existing Projects (wizard selection)
Import Existing Projects (wizard selection)
```
```
Keep both **parsers** and **vdt** checked and press **Finish**
Keep both **parsers** and **vdt** checked and press **Finish**
####Configuring JavaCC (optional)
#### Configuring JavaCC (optional)
In the **Project Explorer** window, expand the **vdt** project folder, right-click
In the **Project Explorer** window, expand the **vdt** project folder, right-click
the **buildjavacc.xml** file and select **Properties**.
the **buildjavacc.xml** file and select **Properties**.
In the new dialog window select **Run/Debug Settings**, press **New** and agree to
In the new dialog window select **Run/Debug Settings**, press **New** and agree to
the only suggested option: **Ant Build**.
the only suggested option: **Ant Build**.
Then Select **Environment** tab and enter two variables by pressing **New** and then
Then Select **Environment** tab and enter two variables by pressing **New** and then
Name: **ECLIPSE_HOME**
Name: **ECLIPSE_HOME**
Value: Folder path that contains Eclipse executable
Value: Folder path that contains Eclipse executable
Name: **JAVACC_HOME**
Name: **JAVACC_HOME**
Value: Folder path where **javacc-6.0.zip** was unpacked (ending with /javacc-6.0).
Value: Folder path where **javacc-6.0.zip** was unpacked (ending with /javacc-6.0).
####Building and running VDT
#### Building and running VDT
In the "Project Explorer" window, expand the 'vdt' project folder and double-click (open)
In the "Project Explorer" window, expand the 'vdt' project folder and double-click (open)
the **plugin.xml** file.
the **plugin.xml** file.
Select the **Overview** tab at the bottom of the appeared window.
Select the **Overview** tab at the bottom of the appeared window.
Under the **Testing** label, click the **Launch an Eclipe application** link.
Under the **Testing** label, click the **Launch an Eclipe application** link.
You may also use "Run Eclipse Application" (green triangle) or "Debug Eclipse Application"
You may also use "Run Eclipse Application" (green triangle) or "Debug Eclipse Application"
(green bug) buttons on Eclipse toolbar to launch
(green bug) buttons on Eclipse toolbar to launch
A new instance of Eclipse will open, this new Eclipse will have VDT plugin activated.
A new instance of Eclipse will open, this new Eclipse will have VDT plugin activated.
You may minimize the original Eclipse window at this point (it can be used to monitor
You may minimize the original Eclipse window at this point (it can be used to monitor
and fix plugin errors). Next you may create a new FPGA development project or import
and fix plugin errors). Next you may create a new FPGA development project or import
an existing one. We will use DDR3 memory interface project as an example.
an existing one. We will use DDR3 memory interface project as an example.
## Import and configuration of the sample project in VDT
## Import and configuration of the sample project in VDT
Sample project is a DDR3 memory interface for Xilinx Zynq SOC that does not depend on
Sample project is a DDR3 memory interface for Xilinx Zynq SOC that does not depend on
undocumented featuers and encrypted modules and can be simulated with the Free Software
undocumented featuers and encrypted modules and can be simulated with the Free Software
tools.
tools.
### Import x393 project
### Import x393 project
You may already have it if you installed other software for Elphel NC393 camera development, if that
You may already have it if you installed other software for Elphel NC393 camera development, if that
is the case you can skip the next step and use ~/git/elphel393/fpga-elphel/x393/
is the case you can skip the next step and use ~/git/elphel393/fpga-elphel/x393/
```
```
git clone https://github.com/Elphel/x393.git
git clone https://git.elphel.com/Elphel/x393.git
cd x393
cd x393
./INIT_PROJECT
./INIT_PROJECT
```
```
Python program used on the target and during Cocotb simulation requires Python numpy module,
Python program used on the target and during Cocotb simulation requires Python numpy module,
on Ubuntu you may install it with
on Ubuntu you may install it with
```
```
sudo apt-get install python-numpy
sudo apt-get install python-numpy
```
```
The last command copies Eclipse .project and .pydevproject files to the working directory.
The last command copies Eclipse .project and .pydevproject files to the working directory.
From the Eclipse instance that runs VDT plugin (not the one with the VDT source code)
From the Eclipse instance that runs VDT plugin (not the one with the VDT source code)
use the same steps as for importing VDT plugin code (described above):
use the same steps as for importing VDT plugin code (described above):
```
```
File->Import->Git->Projects from Git->Existing local repository-> Select directory where you cloned x393
File->Import->Git->Projects from Git->Existing local repository-> Select directory where you cloned x393
Import Existing Projects (wizard selection)
Import Existing Projects (wizard selection)
```
```
Keep both **x393** and **py393** checked and press **Finish**
Keep both **x393** and **py393** checked and press **Finish**
### Configuration of VDT for x393 project
### Configuration of VDT for x393 project
The cloned x393 project does not include Verilog modules of Xilinx primitives that are
The cloned x393 project does not include Verilog modules of Xilinx primitives that are
required even for simulation of the design. The required library (unisims) is included
required even for simulation of the design. The required library (unisims) is included
with the Xilinx Vivado software and the proprietary license does not allow to redistribute
with the Xilinx Vivado software and the proprietary license does not allow to redistribute
it. VDT provides means to copy this library from your Vivado installation to the project,
it. VDT provides means to copy this library from your Vivado installation to the project,
So for the next step you need Xilinx software to be installed on the same or different
So for the next step you need Xilinx software to be installed on the same or different
computer running GNU/Linux.
computer running GNU/Linux.
Open the top module (x393.v) in the Editor (or any othe Verilog file of the project)
Open the top module (x393.v) in the Editor (or any othe Verilog file of the project)
Open "Verilog/VHDL' perspective:
Open "Verilog/VHDL' perspective:
```
```
Window->Open Perspective->Other->Verilog/VHDL
Window->Open Perspective->Other->Verilog/VHDL
```
```
It should look as shown on screenshots in [VDT-UserManualAddendum.pdf](https://github.com/Elphel/vdt-docs/blob/master/VDT-UserManualAddendum.pdf?raw=true),
It should look as shown on screenshots in [VDT-UserManualAddendum.pdf](https://git.elphel.com/Elphel/vdt-docs/blob/master/VDT-UserManualAddendum.pdf?raw=true),
with bottom-left panel showind "Design Menu" and FPGA-related tools
with bottom-left panel showind "Design Menu" and FPGA-related tools
#### Configure access to the server with Xilinx tools
#### Configure access to the server with Xilinx tools
In the "Design menu" panel select "Package" icon, it will open a dialog with "Xilinx server setup"
In the "Design menu" panel select "Package" icon, it will open a dialog with "Xilinx server setup"
tab active.
tab active.
If you have Xilinx tools installed on the same computer as VDT, leave the default value for
If you have Xilinx tools installed on the same computer as VDT, leave the default value for
*Remote Host IP* (localhost) and *Remote user name* (your current login name).
*Remote Host IP* (localhost) and *Remote user name* (your current login name).
If you are using phisically different computer - change the both fields as needed.
If you are using phisically different computer - change the both fields as needed.
You may also change Vivado Release to the current one, installation directory (if different from the
You may also change Vivado Release to the current one, installation directory (if different from the
default) and configure same parameters for Xilinx ISE if you plan to use it (VDT supports both)
default) and configure same parameters for Xilinx ISE if you plan to use it (VDT supports both)
Next you need to setup password-less access to the tools server based on the key pairs:
Next you need to setup password-less access to the tools server based on the key pairs:
Generate ssh key (if you do not have it already). Use command line tool or expand
Generate ssh key (if you do not have it already). Use command line tool or expand
*Vivado Tools* in the design menu, right-click *Start remote Vivado session* and select
*Vivado Tools* in the design menu, right-click *Start remote Vivado session* and select
*Generate public key* (or use a key icon on the Design menu toolbar)
*Generate public key* (or use a key icon on the Design menu toolbar)
Send this key to the server - you may either use a command-line program *ssh-copy-id* or right-click
Send this key to the server - you may either use a command-line program *ssh-copy-id* or right-click
*Start remote Vivado session* and select *Setup connection to user@server* (tools icon on the toolbar).
*Start remote Vivado session* and select *Setup connection to user@server* (tools icon on the toolbar).
This operation requires you to enter the password for the server and this requires a separate program
This operation requires you to enter the password for the server and this requires a separate program
to be installed, you can do this with
to be installed, you can do this with
```
```
sudo apt-get install ssh-askpass
sudo apt-get install ssh-askpass
```
```
Update: In Kubuntu 16.04 ssh-askpass is not required, there is a similar program available in base
Update: In Kubuntu 16.04 ssh-askpass is not required, there is a similar program available in base
installation. Just pay attention that the first pop-up window will ask not for the password, but for
installation. Just pay attention that the first pop-up window will ask not for the password, but for
"yes".
"yes".
If ssh will not find *ssh-askpass* or a similar program, it will fail and Eclipse console output will
If ssh will not find *ssh-askpass* or a similar program, it will fail and Eclipse console output will
output the resolution suggestions.
output the resolution suggestions.
With ssh-askpass a separate dialog window will open, likely the first question will be not the password
With ssh-askpass a separate dialog window will open, likely the first question will be not the password
itself, but your permission to connect to an unknown host, so just enter *yes* there.
itself, but your permission to connect to an unknown host, so just enter *yes* there.
If everything was configured correctly you may try opening remote Vivado session (later it will
If everything was configured correctly you may try opening remote Vivado session (later it will
happen automatically when needed):
happen automatically when needed):
Right-click *Start remote Vivado session* and select *Launch Vivado* (door with entering green arrow icon
Right-click *Start remote Vivado session* and select *Launch Vivado* (door with entering green arrow icon
on the toolbar)
on the toolbar)
If everything is correct, in Eclipse console you will see
If everything is correct, in Eclipse console you will see
```
```
puts "@@FINISH@@"
puts "@@FINISH@@"
```
```
and a few secods later server response ending with
and a few secods later server response ending with
```
```
@@FINISH@@
@@FINISH@@
```
```
@@FINISH@@ sequence is just a marker to know server successfully finished the requested command
@@FINISH@@ sequence is just a marker to know server successfully finished the requested command
*Start remote Vivado session* shold now show pulsating green dot to the right of it and the console is
*Start remote Vivado session* shold now show pulsating green dot to the right of it and the console is
open for both VDT communication and you can also manually enter TCL commands as covered in Xilinx Vivado
open for both VDT communication and you can also manually enter TCL commands as covered in Xilinx Vivado
manuals.
manuals.
#### Copy unisims library to the local directory
#### Copy unisims library to the local directory
```
```
Vivado Tools -> Vivado utilities -> Copy Vivado primitives library to the local project
Vivado Tools -> Vivado utilities -> Copy Vivado primitives library to the local project
```
```
#### Patch primitive(s) to work with Icarus Verilog
#### Patch primitive(s) to work with Icarus Verilog
Some of the Xilinx primitives can not be simulated correctly with Icarus Verilog, we will add more patches
Some of the Xilinx primitives can not be simulated correctly with Icarus Verilog, we will add more patches
when we'll hit particular problems, for x393 only one file needs to be patched - OSERDESE1.v
when we'll hit particular problems, for x393 only one file needs to be patched - OSERDESE1.v
Run patch command from the unisms subdirectory of the x393 project :
Run patch command from the unisms subdirectory of the x393 project :
After new files are added the project needs to be refreshed - you may click on the project name in the navigator window
After new files are added the project needs to be refreshed - you may click on the project name in the navigator window
and press F5 key or right-click -> Refresh
and press F5 key or right-click -> Refresh
There are many files in the library so refreshing make take a while.
There are many files in the library so refreshing make take a while.
## Simulating x393 project with Icarus Verilog
## Simulating x393 project with Icarus Verilog
```
```
Design Menu -> Verilog Development tools -> Icarus Verilog simulator
Design Menu -> Verilog Development tools -> Icarus Verilog simulator
```
```
If you get many errors "Unknown module type", you may need to refresh the project (press F5) after adding unisims library
If you get many errors "Unknown module type", you may need to refresh the project (press F5) after adding unisims library
files.
files.
If everything will work correctly, Icarus will compile and simulate the design (some warnings in the beginning are not fixed yet). After that GTKWave will open the simulation results.
If everything will work correctly, Icarus will compile and simulate the design (some warnings in the beginning are not fixed yet). After that GTKWave will open the simulation results.
In the case of problems you may get more verbose output in the console if you right-click on the
In the case of problems you may get more verbose output in the console if you right-click on the
*Icarus Verilog Simulator*, select *Tool parameters*, open *Options tab* and check *Show output
*Icarus Verilog Simulator*, select *Tool parameters*, open *Options tab* and check *Show output