Â
Degate is a multi-platform software for semi-automatic VLSI reverse engineering of digital logic in chips. This repository is a continuation of the original Degate project, with major changes and a new maintainer. For more please visit our wiki page and, if you want to chat, visit our Gitter. The current main maintainer of Degate is Dorian Bachelot.
Â
Â
Degate was actively developed by Martin Schobert, during his thesis, from 2008 to 2011. From 2013 to 2018, the project was mainly inactive and only got some small fixes over the years. At this time, the project was composed of a library (libGate) and a GUI interface (Degate).
Degate has definitely a great potential, mainly because it is the only free and open-source software for hardware reverse engineering of chips, but never knew how to impose itself in the community. One possible reason for that is that Degate was known to be unstable and have impacting bugs in a first place.
You can browse the old Degate code here and the old repository here:
https://github.com/nitram2342/degate
This project replace the old Degate, with a focus on Windows, Linux and MacOS support, getting better stability and general modernization. To achieve this the first step was to drop GTK, move to Qt and merge the lib and the GUI part of the project. Another objective was to minimize the number of dependencies, for now it uses only Boost and Qt and the mid-term objective is to only keep Qt and remove Boost.
The stability was the main problem of the old Degate and the main reason why the community hadn't already united around it. Regarding that, we want to have fewer bugs as possible, even if some functionality needs to be dropped (for the moment).
For the moment we have (as functionalities):
- OpenGL 3 support (better performances and evolutive),
- Qt (bunch of tools, open-source and easy cross-platform),
- Multi-platform support (official support for Linux, Windows and MacOS),
- Multi-language support (for now only English and French are implemented),
- UTF-8 support for the workspace (the main area of the software, where you can work on high-definition chips images),
- Backward compatibility of old Degate project format,
- Project configuration (elements color, project name, size...),
- Layers configuration (type, position, background image...),
- Gate and gate configuration (gate template, gate instance, behavior with VHDL and Verilog support and debugging),
- Via and via configuration,
- EMarker (Electric Marker) and emarker configuration,
- Interconnection (electric connection between electric objects),
- Template matching (for gates),
- Grid,
- Via matching (can be tricky),
- Wire matching (need a rework),
- Sub-projects,
- Annotation and annotation configuration,
- Light and dark theme support,
- Rule checks,
- Modules,
- Connection inspector,
- And much more...
We dropped those functionalities from old Degate:
- Collaborative tracking of wires and vias.
A lot of bugs were fixed in this newer version, and it should be a better base to improve Degate even more in the future.
There is still a lot to do in this new version, but all core functionalities (and even more) are implemented.
Future functionalities remaining to implement (not limited):
- Explicit full netlist exporter (new feature),
- More languages (new feature),
- Integrated gate analyzer (new feature).
For a more precise roadmap see the ROADMAP.md file.
The official Degate documentation is available here. It is still under construction.
Also, you can find here the official Degate wiki. For example, you can find on it a list of tutorials for Degate and for IC Reverse-Engineering.
Degate has only 2 dependencies: Boost and Qt6.
We use vcpkg to handle installation of those, please refer to the #Quick-start section below.
- CMake 3.12.0 or newer,
- (optional) Qt 6.2.4 or newer,
For Linux (please read the Linux section below, some dependencies are only needed if using VCPKG's Qt):
- xcb-lib
- xrender-lib
- autoconf
- autoconf-archive
- xkbcommon
- egl1-mesa-lib
- xrandr-lib
For MacOS (please read the MacOS section below):
- automake
- autoconf
- autoconf-archive
If you are using a local Qt6 installation:
- For Qt6, you can specify to CMake a custom path with: -DCMAKE_PREFIX_PATH="custom_path_to_qt". For example, on Windows: Qt/VERSION/COMPILER/lib/cmake/Qt6. You can download Qt6 here: https://www.qt.io/download.
- For Linux, don't forget to install the Qt6 add-on module: ImageFormats (you just need to have the package installed, it will be embedded in the Qt6::Core module after). See https://doc.qt.io/qt-6/qtimageformats-index.html. For example, on debian, the package is: qt6-image-formats-plugins. Same problem with linguist tools, for example for debian you need the package: qttools6-dev.
First, clone this repository (help here):
> git clone https://github.com/DegateCommunity/Degate
> git submodule update --init --recursive
Prepare the install of dependencies (some of them are only needed if using VCPKG's Qt):
> ./vcpkg/bootstrap-vcpkg.sh -disableMetrics
> apt install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev
libxkbcommon-x11-dev libegl1-mesa-dev libglu1-mesa-dev mesa-common-dev libxrandr-dev libxxf86vm-dev
autoconf autoconf-archive
If anything is missing, you should be prompted with help on how to install the needed tools.
Build (in the 'build' folder, for example):
> cmake .. -DVCPKG_QT=1
> make
Binaries are in the 'build/out/bin' folder.
If you prefer to use your local Qt installation (and to avoid rebuilding Qt through VCPKG) please use the -DVCPKG_QT=0
option.
Install dependencies:
- CMake: https://cmake.org/download/
- A compiler (for example MSVC): https://visualstudio.microsoft.com/
> .\vcpkg\bootstrap-vcpkg.bat -disableMetrics
Build (in the 'build' folder, for example):
> cmake .. -DVCPKG_QT=1
> cmake --build .
Binaries are in the 'build/out/bin' folder.
If you prefer to use your local Qt installation (and to avoid rebuilding Qt through VCPKG) please use the -DVCPKG_QT=0
option and specify Qt6's path with -DCMAKE_PREFIX_PATH="path_to_qt"
.
Prepare the install of dependencies:
> ./vcpkg/bootstrap-vcpkg.sh -disableMetrics
> brew install autoconf autoconf-archive automake
Build (in the 'build' folder, for example):
> cmake .. -DVCPKG_QT=1
> cmake --build .
Binaries are in the 'build/out/bin' folder in the bundle ".app" format.
If you prefer to use your local Qt installation (and to avoid rebuilding Qt through VCPKG) please use the -DVCPKG_QT=0
option.
-
Could NOT find Boost (missing: filesystem system thread) (found version "1.71.0")
This message may be caused by default options which force to use static and multithreaded version of the Boost library. For example, this is a problem when installing Boost with MacPorts on MacOS because the installed version does not provide a static version by default. To change these default options, you can use these two commands when calling cmake (ON/OFF):
> cmake .. -DBoost_USE_STATIC_LIBS=OFF -DBoost_USE_MULTITHREADED=OFF
On Windows this can also be caused by an installed version of Boost that does not match your installed compiler.
-
/etc/cmake/ConfigureFiles.cmake:25 (file): file failed to open for reading (No such file or directory): .../VERSION
This message can appear for MacOS users. The problem comes from spaces in directory names, this is a bug from CMake. Simply move your Degate folder to a file tree without spaces in directory names.
-
CMake Error at vcpkg_execute_required_process.cmake:127 (message): Command failed: vcpkg/downloads/tools/ninja/1.10.2-linux/ninja -v
Please refer to vcpkg output, this is linked to Qt installation that need pre-installed dependencies on some platforms. For example on linux you need to execute:
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libegl1-mesa-dev
andsudo apt-get install libxi-dev libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev libxrandr-dev libxxf86vm-dev
.
You can find demo projects here.
Read the "CONTRIBUTING.md" file.
For now only English and French are supported, but if you wish you can help easily. Degate use Qt Linguist for translation, you can learn more here: https://doc.qt.io/qt-5/linguist-translators.html. You can find .ts files (to use with Qt Linguist) in 'res/languages'.
Languages:
- English (100%),
- French (100%).
- German (80%),
- Russian (0%),
- Spanish (0%),
- Italian (0%),
- Korean (0%).
To add a new language opens a new issue, or use our Crowdin project: https://crowdin.com/project/degate.
Degate is released under the GNU General Public License Version 3. See LICENSE.TXT for details.
The current main maintainer of Degate is Dorian Bachelot [email protected] and the original Degate maintainer is Martin Schobert [email protected].