Framework Open EDA Gui

Related tags

GUI FOEDAG
Overview

FOEDAG

Documentation Status

FOEDAG denotes Qt-based Framework Open EDA Gui

Documentation

FOEDAG's full documentation includes tutorials, tool options and contributor guidelines.

Build instructions

Read INSTALL for more details

  make
or
  make debug
or
  make release_no_tcmalloc (For no tcmalloc)
  
make install (/usr/local/bin and /usr/local/lib/foedag by default which requires sudo privilege,
             use PREFIX= for alternative locations.)
Issues
  • About create new projects

    About create new projects

    I intend to implement the following functions on the dialog.

    New project wizard
    Project Location
        project name(default project_1)
        project location (support create subdirectory)
        
    Project Type
        RTL project (default)
        Post-synthesis project
        
    Add Design Source Files
        Add files
        Add directories
        Create file
            file name
            file type
            file path
        Display source file list
        Remove
        Move up
        Move Down
        Support copy design files to project
        
    Add Constraints
        Add files
        Create file
            file name
            file type
            file path
        Display source file list
        Remove
        Move up
        Move Down
        Support copy files to project
        
    Select device/board
        Display the device/board list(Read data form a device/board file(like *.xml))
        Support search by family, device,package and so on.
        
    Summary
        Displays the details of the project you are about to create.
    

    The project type and file type can be configured through a configuration file(like *.xml).

    image

    After clicking finish, the project file and project directory will be generated.As follows: image image

    About the widget window floorplanning ,I will do it soon by QT designer.

    Open to discussion here.

    opened by liibin 10
  • Now Main Window and Tcl are working and synchronized

    Now Main Window and Tcl are working and synchronized

    Motivate of the pull request

    • [x] To address an existing issue. If so, please provide a link to the issue: #36
    • [ ] Breaking new feature. If so, please describe details in the description part.

    Describe the technical details

    What is currently done? (Provide issue link if applicable)

    Currently, FOEDAG has the following limitations:

    • The start gui command cannot be typed in through Tcl interface. Main window pops up directly at the beginning
    • When you close main window, the complete program ends. There is no interaction possible between GUI and tcl

    What does this pull request change?

    This PR improves in the following aspects:

    • [x] Added a Tcl-Qt notifier which enables the interaction between GUI and tcl
    • [x] Added a command gui_end which can close Qt without terminating tcl. GUI can be restarted any time when gui_start command is typed in

    Which part of the code base require a change

    • [ ] Library:
    • [ ] Plug-in:
    • [x] Engine
    • [ ] Documentation
    • [ ] Regression tests
    • [ ] Continous Integration (CI) scripts

    Impact of the pull request

    • [ ] Require a change on Quality of Results (QoR)
    • [ ] Break back-compatibility. If so, please list who may be influenced.
    build lang-make github 
    opened by tangxifan 9
  • MIT license might be a problem

    MIT license might be a problem

    Since we're going to use Qt's open source and @tangxifan asked about our GUI's license, I just checked Qt Open source Licensing FAQ and Qt Open Source Obligations of the GPL and LGPL. MIT licensed software can be integrated with GPL software, though not being a law expert and lacking experience with mixed-license open source projects, I'm not sure if that means we can take GPL/LGPL code from Qt (headers, libraries, modules etc.), modify it and then make it MIT, or do we have to keep our own MIT code strictly seperated from Qt's GPL/LGPL code, or how else should this be properly handled. As the definitive versions of all the above licenses are in English, I recommend someone in the States consult a law expert familar with this field. Keep in mind that GPL/LGPL both have several versions so that's another thing to watch out for. If consulting a lawyer is not viable, maybe we should go with LGPLv3 for the peace of mind?

    opened by MidsummerNight 9
  • Create a Tcl/QT event loop time splicing

    Create a Tcl/QT event loop time splicing

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Clone repository and checkout commit id:
    2. Execute a test case or your own example:
    3. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Enviornment (please complete the following information):

    • OS:
    • Compiler:
    • Version:

    Additional context Add any other context about the problem here.

    opened by alain-rs 8
  • Support Windows machine in Github Action Workflows

    Support Windows machine in Github Action Workflows

    Is your feature request related to a problem? Please describe. Windows is a popular platform where most GUI projects are run. It is reasonable to ensure that our GUI is continuously deliverable on Windows platform

    Describe the solution you'd like Set up a workflow on Github Actions, testing

    • Build compatibility of the codes on Windows machines
    • Run regression tests on Windowns machines

    Refer to the workflow example at

    https://github.com/chipsalliance/Surelog/blob/ac38329a10128579831ee8fd8dfa7a8bcfbfb936/.github/workflows/main.yml#L128

    opened by tangxifan 8
  • Add Qt main window to be triggered by ``start_gui``

    Add Qt main window to be triggered by ``start_gui``

    Motivate of the pull request

    • [x] To address an existing issue. If so, please provide a link to the issue: #34
    • [ ] Breaking new feature. If so, please describe details in the description part.

    Describe the technical details

    What is currently done? (Provide issue link if applicable)

    Currently, FOEDAG has the following limitations:

    • start_gui only triggers a toy Qt widget

    What does this pull request change?

    This PR improves in the following aspects:

    • [x] Replace the Qt widget with a Qt main window

    image

    Which part of the code base require a change

    • [ ] Library:
    • [ ] Plug-in:
    • [x] Engine
    • [ ] Documentation
    • [ ] Regression tests
    • [ ] Continous Integration (CI) scripts

    Impact of the pull request

    • [ ] Require a change on Quality of Results (QoR)
    • [ ] Break back-compatibility. If so, please list who may be influenced.
    build lang-make 
    opened by tangxifan 6
  • Main branch msvc starts failing with no code change

    Main branch msvc starts failing with no code change

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Simply rerun one of the runs from main that used to pass, and observe the msvc failure, something about a .vc file syntax and multiple processes accessing a file. Looks like something changed in the compilation environment.

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Enviornment (please complete the following information):

    • OS:
    • Compiler:
    • Version:

    Additional context Add any other context about the problem here.

    opened by alaindargelas 6
  • Is C++17 O.K. as the minimum requirement

    Is C++17 O.K. as the minimum requirement

    Describe the bug A clear and concise description of what the bug is.

    The CMakefile requires C++17 standard as the minimum requirement

    https://github.com/os-fpga/FOEDAG/blob/fa4af5c5960169f613ad3d63c6120b319dbcf918/CMakeLists.txt#L27-L28

    I do not know if this will cause some incompatibility for any libraries.

    OpenFPGA is complying with C+14, so is VPR:

    https://github.com/verilog-to-routing/vtr-verilog-to-routing/blob/5409e84341dde0292951c273ffc3b5c2065a2fec/CMakeLists.txt#L90

    Expected behavior May need a discussion to see if the C++17 will cause any issues

    opened by tangxifan 5
  • Add a newproject GUI

    Add a newproject GUI

    Motivate of the pull request

    • [ ] To address an existing issue. If so, please provide a link to the issue:
    • [x ] Breaking new feature. If so, please describe details in the description part.

    Describe the technical details

    What is currently done? (Provide issue link if applicable) #77

    What does this pull request change?

    This PR improves in the following aspects: menu

    Which part of the code base require a change

    • [ ] Library:
    • [ ] Plug-in:
    • [x ] Engine
    • [ ] Documentation
    • [ ] Regression tests
    • [ ] Continous Integration (CI) scripts

    Impact of the pull request

    • [ ] Require a change on Quality of Results (QoR)
    • [ ] Break back-compatibility. If so, please list who may be influenced.
    build lang-make 
    opened by liibin 5
  • add third_party QScintilla and TextEditor

    add third_party QScintilla and TextEditor

    Motivate of the pull request

    • [ ] To address an existing issue. If so, please provide a link to the issue:
    • [x] Breaking new feature. If so, please describe details in the description part. #105

    Describe the technical details

    What is currently done? (Provide issue link if applicable)

    What does this pull request change?

    image

    Which part of the code base require a change

    • [ ] Library:
    • [ ] Plug-in:
    • [ ] Engine
    • [ ] Documentation
    • [ ] Regression tests
    • [ ] Continous Integration (CI) scripts

    Impact of the pull request

    • [ ] Require a change on Quality of Results (QoR)
    • [ ] Break back-compatibility. If so, please list who may be influenced.

    add third_party QScintilla.

    build lang-make 
    opened by liibin 4
  • Realize basic editing feature

    Realize basic editing feature

    Motivate of the pull request

    • [ ] To address an existing issue. If so, please provide a link to the issue:
    • [x] Breaking new feature. If so, please describe details in the description part. #105

    Describe the technical details

    What is currently done? (Provide issue link if applicable)

    What does this pull request change?

    Which part of the code base require a change

    • [ ] Library:
    • [ ] Plug-in:
    • [ ] Engine
    • [ ] Documentation
    • [ ] Regression tests
    • [ ] Continous Integration (CI) scripts

    Impact of the pull request

    • [ ] Require a change on Quality of Results (QoR)
    • [ ] Break back-compatibility. If so, please list who may be influenced.
    build lang-make 
    opened by liibin 0
  • Console widget

    Console widget

    This is initial pull request for #101

    opened by KochynVolodymyr 1
  • Text Editor

    Text Editor

    Motivation

    Provides an interface for editing HDL code.

    Technical Details

    Code flow

    image

    Basic functions

    • HDL syntax highlight and error indicator
    • Multi-tab to open multiple files
    • Basic editing operations,such as cut,copy,paste,delete,undo,redo.

    I will use a third-party open source library: QScintilla。 https://www.riverbankcomputing.com/static/Docs/QScintilla/

    Open to discussion here.

    opened by liibin 2
  • Console widget

    Console widget

    Motivation.

    Provide tcl console for the GUI.

    Plan

    First step: Standalone application with full featured tcl console. The console should behave like regular console. Second step: Integration into main GUI.

    Requirements for standalone:

    • When start gui – no need tcl interpreter anymore.
    • Tcl console should be a part of the project as well as standalone
    • Main functionality: -- Text field for the input and output like standard console -- The widget doesn’t allow to enter command while running smth. -- There is should be possibility to terminate current run.
    • Common console functionality: -- Abort current running. -- History
      -- Possibility to run prev command with ! -- Autocompletion by tab -- Autocomplete for command parameters is more like nice to have feature. -- In case multiple choice show all cases -- Clear
    • Search
    • Hyperlinks (e.g., file line)
    • The command should run in some thread in order not block gui.
    • Multiline command like regular console – more like nice to have feature
    • Interface between console and main part: TBD

    Libraries for command line functionality:

    Readline 
    
    https://github.com/JuliaAttic/readline port for windows 
    
    Libedit  
    
    Libeditline is fork for C++. 
    
    Linenoise  
    
    linenoise-ng C++ with window support but the repo is archiched 
    

    Requirements for main application:

    • Possibility to add and remove console.
    • TBD

    Open questions: What is A filter to display only errors and warnings

    opened by volodymyrkochyn 2
  • Should we offer FOEDAG as an Universal App for Linux platforms?

    Should we offer FOEDAG as an Universal App for Linux platforms?

    This isn't an urgent matter at all, I'm just posting for future discussion.

    Is your feature request related to a problem? Please describe. Problem: Distributing software for Linux platforms has always been painful compared to Windows and Mac. There are 2 conventional methods:

    1. The developers offers source code and the user has to build it. This approach burdens the developers the least (in a sense) yet can cause the user much trouble. Missing libraries, outdated toolchains...you name it. Uninstalling and updating the software can also prove to be difficult.
    2. The developers offers the binary package and the user installs it via comands like apt install Users can still counter dependency issues but it should be much milder than the troubles from building the source. This method also allows incremental updates. This time the headache is the developers', as different Linux distributions use different packages, for example .deb packages cannot be installed on RPM-based distros and vice versa. Adding to the confusion, even distros using the same package formats might not be able to use the same package. RHEL and SUSE are both RPM-based but their RPMs are different, for instance. This method requires the developer to maintain the packages themselves -- they'll have to choose between either diverge significant effort to maintain packages for each Linux distro, or focus on a small range of distros and leave users of other platforms to build the software from source.

    Describe the solution you'd like Enter the concept of Universal Apps, where the developers bundle their code and dependencies in an sandboxed package and the user can safely run/installed these ready-to-run software without worrying if their OS might conflict with the software. I recently had a taste of Universal Apps as a user and I think these 2 solutions feel pretty nice: Flatpak and AppImage. A user can easily install a Flatpak software by first installing flatpak (like sudo apt install flatpak) then running flatpak install <software_source_repository> <software_name>, whereas AppImage software is simply one execuatble file that can be launched by chmod +x <software_name>.Appimage (if the file doesn't have the execute permission) then ./<software_name>.Appimage. In both cases, the developer needs to maintain only 1 single binary package, period. Flatpak allows for incremental updates, and I think Appimage is starting to do so too.

    Describe alternatives you've considered Docker can definitely do the job -- OpenFPGA is already offering Docker images. But Docker might be overkill and still a bit complicated.

    Snap is practically Canonical's counterpart of Flatpak, except Canonical completly controls the Snap platform much like how Apple controls App Store (we cannot distribute snap packages without uploading them to Snapcraft and have Canonical review our requests). In contrast, flatpaks can be hosted on our own repos.

    Additional context There are a few potential setbacks of Universal Apps.

    1. Performance and size. Compared to conventional methods, Universal Apps tend to take more disk space, as they rely on bundled dependencies, instead of reusing what the OS already has. Universal Apps also seem to suffer from performance penalties, though I don't think either of these issues are of big concern for our GUI.
    2. Worth the effort? Building an Universal App isn't exactly a cakewalk, especially when all of us lack the experience and have other priorities. If FOEDAG ends up mostly being used by FPGA companies to be the foundation of their own software suite, then offering it as an end-user-oriented Universal App might not make much sense. Besides that, a sandboxed FOEDAG might have trouble interfacing with EDA backends, but my grasp of Universal Apps is too thin to be sure right now.
    opened by MidsummerNight 1
  • Add a step to generate the installation package

    Add a step to generate the installation package

    Is your feature request related to a problem? Please describe. I think we should add a step to generate the installation package

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    opened by liibin 4
  • Create help system that populates readthedocs automatically

    Create help system that populates readthedocs automatically

    Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    opened by alain-rs 0
  • Add

    Add "make doc" target

    Is your feature request related to a problem? Please describe. I already forgot the steps to compile the docs, a make doc target is needed in the top-level Makefile

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    opened by alain-rs 4
  • A List of Widgets Required

    A List of Widgets Required

    Is your feature request related to a problem? Please describe. As seen in PR https://github.com/os-fpga/FOEDAG/pull/35, the main window has been created. I have learned from Qt online documentation: https://doc.qt.io/qt-5/qtwidgets-index.html As the Qt framework is modularized, the main window will finally be a place where all the widgets are added. Each widget will be an independent class inherit from Qt classes, e.g., QDockWidget, QApplication etc. Therefore, it is time to split our workload and parallelize the effort.

    Describe the solution you'd like

    Work plan

    I propose that we work in this style

    • Define the list of Widgets to be created
    • Each team member claims the Widget to work on
    • We keep a track on the progress of each Widget. One Widget -> one or more pull requests

    List of Widgets

    Here, I only list the minimum Widgets required to build a mini FPGA IDE Each widget can be in a separated issue

    • Console which includes
      • A text box where Tcl command can be typed in
      • A label box where all the logs can be shown
      • A filter to display only errors and warnings
    • Flow navigator which includes
      • A QTreeWidget which show steps required to perform a complete design flow
      • (Optional) Progress bars to show success and failures of each step
      • Right click to open any log files outputted by each step
    • Text Editor which supports
      • TextBox to load and write HDL codes from/to files
      • HDL syntax highlight and error indicator
      • Multi-tab to open multiple files
    • Project navigator which shows
      • Project settings
      • Source file categories and hierarchies
    • New project wizard
      • Select device/board from a list
      • Select source files/design constraints
      • Create project description file
    • New file wizard
    • I/O plan wizard
      • Select the I/O plan from figures
      • Output I/O constraints to files
    • Timing analysis stats
      • Show bar graph on the slack/path delay distribution on all the paths
    opened by tangxifan 6
  • Support ``start_gui`` command in Tcl interface

    Support ``start_gui`` command in Tcl interface

    Is your feature request related to a problem? Please describe. start_gui command is a standard used in many EDA softwares to launch the GUI through Tcl interface. In current codes, we have a command gui_start, which can launch the Qt Mainwindow

    https://github.com/os-fpga/FOEDAG/blob/eef1c3a0b59428fccb2264a072bd6145a7053c70/src/Main/main.cpp#L50

    Not sure, we do need start_gui or gui_start

    Describe the solution you'd like Some useful document:

    • https://www.tcl.tk/community/tcl2017/assets/talk85/Slides.pdf
    • https://wiki.tcl-lang.org/page/Extending+Tcl
    • https://www.tcl.tk/man/tcl/TclLib/contents.html
    opened by tangxifan 0
Owner
The Open-Source FPGA Foundation
The Open-Source FPGA Foundation
Free open-source modern C++17 / C++20 framework to create console, forms (GUI like WinForms) and unit test applications on Microsoft Windows, Apple macOS and Linux.

xtd Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applicat

Gammasoft 153 Dec 3, 2021
Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io

BODEN CROSS-PLATFORM FRAMEWORK Build purely native cross-platform experiences with Boden Website ⬡ Getting Started ⬡ API Reference ⬡ Guides ⬡ Twitter

Ashampoo Systems GmbH & Co KG 1.5k Dec 1, 2021
U++ is a C++ cross-platform rapid application development framework focused on programmer's productivity. It includes a set of libraries (GUI, SQL, Network etc.), and integrated development environment (TheIDE).

Ultimate++ Ultimate++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of librar

Ultimate++ 367 Dec 4, 2021
Elements C++ GUI library

Elements C++ GUI library Introduction Elements is a lightweight, fine-grained, resolution independent, modular GUI library. Elements is designed with

Cycfi Research 2k Dec 6, 2021
Minimalistic C++/Python GUI library for OpenGL, GLES2/3, Metal, and WebAssembly/WebGL

NanoGUI NanoGUI is a minimalistic cross-platform widget library for OpenGL 3+, GLES 2/3, and Metal. It supports automatic layout generation, stateful

Mitsuba Physically Based Renderer 837 Dec 5, 2021
A single-header ANSI C immediate mode cross-platform GUI library

Nuklear This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed a

Immediate Mode UIs, Nuklear, etc. 5k Dec 5, 2021
A library for creating native cross-platform GUI apps

Yue A library for creating native cross-platform GUI apps. Getting started Documentations FAQ Development Examples Sample apps (with screenshots) Muba

Yue 2.7k Dec 1, 2021
A barebones single-header GUI library for Win32 and X11.

luigi A barebones single-header GUI library for Win32 and X11. Building example Windows Update luigi_example.c to #define UI_WINDOWS at the top of the

Nakst 108 Nov 29, 2021
Clight GUI written in Qt.

CLight GUI Clight GUI written in Qt. Huge thanks to @FedeDP for writing Clight and Clightd, the daemons upon which this is built on.

null 38 Nov 30, 2021
YARA pattern matching scannner GUI

YARA GUI This is a GUI for the binary pattern matching scanner YARA. Features Drag and drop targets Directory scanning Compiled rule cache Favorite/re

null 9 Jul 2, 2021
It's a simple Canvas GUI for Unreal Engine 4 with mouse operation

ue4-canvas-gui It's a simple Canvas GUI for Unreal Engine 4 with mouse operation. Included elements: Rendering Text (left/center); Rendering Rects; Re

Superior. 23 Nov 25, 2021
Proof-of-concept code to reconstruct the GUI of a Xen guest running Windows

vmi-reconstruct-gui A proof-of-concept to reconstruct the GUI of a Xen VM running Windows 7. ❗ Disclaimer This repository is work in progress. It curr

Jan 12 Oct 22, 2021
Nvui: A NeoVim GUI written in C++ and Qt

Nvui: A NeoVim GUI written in C++ and Qt

Rohit Pradhan 1.3k Nov 30, 2021
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 5.8k Nov 28, 2021
GUI for calibrating the wacom tablet to a screen or window

wacom-settings GUI for calibrating the wacom tablet to a screen or window. Learning project for writing in C. Uses GTK4 library for the GUI and X11 li

null 19 Nov 28, 2021
rCalc is a Simple GUI Calculator

rCalc is a simple calculator created as a hobby project to improve my C programming language knowledge and GUI creation skills. GTK3 toolkit is used to create the GUI.

null 2 Sep 30, 2021
Python GUI for seeing what's happening inside a fuzzer

Fuzzwatch Fuzzwatch is a Python GUI made to show what's going on inside of a fuzzer. It is currently integrated with Manul, which is a coverage-guided

null 9 Nov 7, 2021
Low Latency GUI on top of Vulkan

Low Latency GUI on top of Vulkan

the ttauri project 238 Dec 5, 2021
ChessBurger is a modern chess GUI written by Progmaster.

ChessBurger ChessBurger is a modern chess GUI written in C++. The reason I started working on a new chess GUI, is because the GUIs out there are somew

Progmaster 1 Nov 9, 2021