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.)
Comments
  • Windows build failed when run make release command

    Windows build failed when run make release command

    Describe the bug Windows build failed after installing all dependencies and adding environment variables as instructed in the foedag documentation in dependencies section. It failed when running the make "release command " after all environment configuration

    To Reproduce Steps to reproduce the behavior:

    • Install Visual Studio Community Edition o From Installer, Check "Desktop development with C++" o Ensure "CMake tools for windows is checked"
    • Install QT5 for MSVC o I tried https://download.qt.io/official_releases/qt/5.12/5.12.12/qt-opensource-windows-x86-5.12.12.exe from
      https://www.qt.io/offline-installers (there might be easier paths/better installers for this) o When asked to select components, checked MSVC 2017 32 and 64 bit
    • Update Environment Variables o System Properties > Advanced > Environment Variables… o Edit Path and add a new entry for Qt5, mine was C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\bin o Create a new Variable called Qt5_DIR and point it to cmake/Qt5, mine was C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\lib\cmake
    • Install Make Package by following command for windows: Steps for Installing "windows make": o Installed make using "winget install gnuwin32.make" on cmd o Select environment variable under the Advanced tab. o Under the variable name, enter make. o Under Variable as "make" and value as , C:\Program Files(x86)\GnuWin32\bin\make.exe.
    • MSYS2 env with the MinGW64 g++ compiler can be used to build FOEDAG as mentioned in the documentation.
    • git clone https://github.com/os-fpga/FOEDAG.git
    • cd FOEDAG
    • git submodule update --init --recursive
    • make release -ERRORS: Screenshots image

    Expected behavior FOEDAG should build and run successfully in Windows environment

    Additional context Add any other context about the problem here.

    opened by zaryabkhan-rs 16
  • [RG-185] Add support for post synthesis project

    [RG-185] Add support for post synthesis project

    Motivate of the pull request

    Add post synthesis project type

    Which part of the code base require a change

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

    Screenshots

    image image image

    opened by KochynVolodymyr 14
  • Project Settings, TCL Commands

    Project Settings, TCL Commands

    Do we have a plan for specific parameters in the project settings JSON file? Some variables can already be set by TCL commands, if these are also defined in the JSON file, would it be appropriate for the TCL command to override the JSON file settings?

    counter_16bit.json.txt A example preliminary JSON file that we are currently using is attached to provide more clarity on a possible way to organize the parameters. VPR parameters are separate as of now, and they should go into the appropriate Task Settings - it is not yet clear on how to neatly categorize them.

    opened by coolbreeze413 10
  • 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
  • RTL Library support

    RTL Library support

    http://yosyshq.net/yosys/cmd_verific.html supports Compilation Libraries. It is specially important for VHDL. Please read the Yosys documentation to understand the principles. Add additional options to the Tcl command add_design_file: -work and -L If -work is not specified, no need to pass the option to the Verific/Other parser, by default Verific/Other will compile under the "work" library (Equivalent to -work work).

    Typical Foedag usage: ... add_design_file -work lib1 file1.vhd file2.vhd add_design_file -work lib2 file21.vhd file22.vhd add_design_file -L lib1 -L lib2 top.vhd ... Will translate to the Yosys script: ... verific -work lib1 -vhdl file1.vhd file2.vhd verific -work lib2 -vhdl file21.vhd file22.vhd verific -L lib1 -L lib2 -vhdl top.vhd ...

    The GUI New Project should also support the Library concept. Compilation libraries are both usable for VHDL and Verilog files.

    opened by alain-rs 9
  • msys2 mingw64 build support

    msys2 mingw64 build support

    Motivate of the pull request

    • [x] To address an existing issue. If so, please provide a link to the issue: Add support for build all the components under Windows with MSYS2 + MinGW64
    • [ ] 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)

    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.

    The MSYS2 MinGW64 env is assumed to be setup, and has the following packages installed:

    pacman -S --needed base-devel mingw-w64-x86_64-toolchain git mingw-w64-x86_64-cmake mingw-w64-x86_64-qt5-base-debug mingw-w64-x86_64-qt5 mingw-w64-x86_64-swig mingw-w64-x86_64-qt5-declarative-debug mingw-w64-x86_64-tcl mingw-w64-x86_64-zlib
    
    build lang-make github 
    opened by coolbreeze413 9
  • 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
  • [RG-146] --project runs the project. run_project tcl command introduced

    [RG-146] --project runs the project. run_project tcl command introduced

    Motivate of the pull request

    The goal of this PR is fixing RG-146 ticked.

    Describe the technical details

    After the OpenProject call the code also does start(), which runs opened project. Next to that, run_project TCL command was registered, that also opens the project and immediately runs it.

    What does this pull request change?

    open_project keeps on existing. run_project can be used in order to open and run the project immediately. Run is also used in tests now.

    Which part of the code base require a change

    • [+] Library:
    • [ ] Plug-in:
    • [ ] Engine
    • [ ] Documentation
    • [x] Regression tests
    • [ ] Continous Integration (CI) scripts
    build lang-make 
    opened by TarasSydor 7
  • [RG-199] Add test for wave_* tcl commands

    [RG-199] Add test for wave_* tcl commands

    Note: This PR needs https://github.com/os-fpga/FOEDAG/pull/846 to be merged to main first

    Motivate of the pull request

    • [x] To address an existing issue. If so, please provide a link to the issue: [RG-199]
    • [ ] 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)

    • Testing was done manually due to CI issues

    What does this pull request change?

    • Now that GTKWave stdout and stderr are reported in the console, we can use foedag.log for normal tcl verification
      • A test has been added to test the various wave_* commands

    Which part of the code base require a change

    • [ ] Library:
    • [ ] Plug-in:
    • [ ] Engine
    • [ ] Documentation
    • [x] Regression tests
    • [ ] Continous Integration (CI) scripts
    build lang-make 
    opened by skyler-rs 2
  • GTKWave: Fix interface issues and change non-error msg to status msg.

    GTKWave: Fix interface issues and change non-error msg to status msg.

    Motivate of the pull request

    Fix a typo in the wave_refresh command and convert a normal message that gtkwave sends as an error to a status message instead.

    Describe the technical details

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

    • wave_refresh has a typo and calls gtkwave::reloadFile when it should be gtkwave::reLoadFile
    • wave_open sent relative paths to gtkwave which launches from a different bin dir which could result in files not opening.
    • GTKWave reports a file's start and end time at load, but it does it on stderr for some reason so every load prints an error message: image

    What does this pull request change?

    • wave_refresh now calls gtkwave::reLoadFile
    • wave_open now converts relative paths to full paths before passing to GTKWave. If the file doesn't exist, foedag will print an error.
    • Load messages are now treated as status instead of error: image

    Which part of the code base require a change

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

    Testing

    • Manually tested in foedag
    • tests/gtkwave_open_bad_path.tcl has been added to verify wave_open path fix
    • wave_refresh change will be tested when RG-199 is finished
    build lang-make 
    opened by skyler-rs 0
  • [RG-214] [Pin planner] No mode selection

    [RG-214] [Pin planner] No mode selection

    Motivate of the pull request

    Fixed pi planner issue. Mode selection generates wrong values for some ports.

    Which part of the code base require a change

    • [x] Library: pinassignment
    • [ ] Plug-in:
    • [ ] Engine
    • [ ] Documentation
    • [x] Regression tests
    • [ ] Continous Integration (CI) scripts
    opened by KochynVolodymyr 0
  • Initial TCL testing framework prototype

    Initial TCL testing framework prototype

    Note: This PR isn't intended for merging.

    This is to show a tcl/qt testing prototype. The goal is to show an initial idea on how we might automate our gui testing and seek feedback and possible issues etc.

    More details on the implementation, future goals, and current issue can be found under [RG-144]

    There are 3 basic examples under tests/TestGui/Automated to show what will be involved to automate our gui. Anything that uses a modal dialog requires some rather messy logic currently.

    build lang-make 
    opened by skyler-rs 4
  • Windows: LocateExecFile() fails to find python3

    Windows: LocateExecFile() fails to find python3

    Describe the bug When adding a new test, it was discovered that system calls to python in the IP Catalog were failing. After some debug, it was observed that https://github.com/os-fpga/FOEDAG/blob/809bd94533e4e0e47db656249b6c0ba6c279f7e2/src/IPGenerate/IPCatalogBuilder.cpp#L120 is always empty in CI tests run on windows. On first glance the 2 possible causes are:

    1. Python might not be properly installed on windows in our CI
    2. LocateExecFilemight not be working on windows

    To Reproduce Due to windows build not building locally for some right now, this is a bit hard to test, I'm unable to build windows locally so I can only see this error in github CI's when the tests are run on windows (note the test in question is currently disabled on windows). Steps to reproduce the behavior:

    1. Add the following to the bottom of registerBasicGuiCommands()
      auto locate_exec_file = [](void* clientData, Tcl_Interp* interp, int argc,
                                 const char* argv[]) -> int {
        if (argc < 1) {
          Tcl_AppendResult(
              interp, qPrintable("Expected Syntax: locate_exec_file <binary_name>"),
              nullptr);
          return TCL_ERROR;
        }
    
        std::filesystem::path foundPath =
            FOEDAG::FileUtils::LocateExecFile(argv[1]);
    
        Tcl_AppendResult(interp, foundPath.c_str(), nullptr);
        return TCL_OK;
      };
    
      session->TclInterp()->registerCmd("locate_exec_file", locate_exec_file,
                                        GlobalSession->MainWindow(), nullptr);
    
    1. Add #include "Utils/FileUtils.h" to the same file
    2. Build changes
    3. On windows, open foedag and try locate_exec_file python3 in the console

    Expected behavior

    • FileUtils::LocateExecFile("python3") or test tcl command locate_exec_file python3 should return a valid path on windows runs
    • tests/TestBatch/test_ip_configure_load.tcl should successfully run in windows CI (note the test currently disables itself on windows run, so remove the windows check inside the test first before verifying)

    Enviornment (please complete the following information):

    • OS: Other: Windows GitHub CI and possibly local windows
    • Version: Current main

    Additional context It's currently not known if this is a python install issue or a util function not working in windows issue so both areas need to be investigated It's possible that python3 isn't the proper name on windows, might test with python and python2 to see if our target binary names are correct

    opened by skyler-rs 2
  • Integrate VPR GUI as a widget?

    Integrate VPR GUI as a widget?

    Is your feature request related to a problem? Please describe. VPR team is developing new features for their GUI (Visualizer for FPGA architecture)

    Here are the thoughts proposed by Prof. Vaughn Betz and the student who is working on this project.

    Vpr UI: use glade (graphical GUI builder to create all widgets) or use glade only for top-level organization (grid/layout) and code to create menus
    Let me know if you have an opinion; can do either but Sebastian trying to figure out what is easiest for others for the future
    

    Describe the solution you'd like If we do want to think about integrating the GUI as a widget into FOEDAG, we should talk to them and see how the choice on GUI builder will impact the FOEDAG integration.

    opened by tangxifan 2
Owner
The Open-Source FPGA Foundation
The Open-Source FPGA Foundation
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

About wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. wxWidgets allows y

null 4.7k Dec 3, 2022
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Dec 2, 2022
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

null 95 Nov 19, 2022
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.6k Nov 24, 2022
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++ 532 Dec 4, 2022
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 2.4k Nov 30, 2022
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 1.1k Nov 25, 2022
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. 6.3k Dec 2, 2022
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.8k Nov 25, 2022
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 232 Nov 14, 2022
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 61 Nov 25, 2022
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. 52 Nov 10, 2022
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 Aug 21, 2022
Nvui: A NeoVim GUI written in C++ and Qt

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

Rohit Pradhan 1.6k Dec 6, 2022
✔️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 6.5k Dec 4, 2022
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 21 Oct 11, 2022
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 3 Aug 1, 2022
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 12 Nov 17, 2022