OpenROAD-flow-scripts icon indicating copy to clipboard operation
OpenROAD-flow-scripts copied to clipboard

OpenROAD_HelperGUI

Open BattusaiKuroKame opened this issue 10 months ago • 7 comments

Here's a well-structured GitHub pull request description for your OpenROAD GUI:


OpenROAD GUI for Design Setup on Ubuntu, CentOS, and Debian

Summary

This PR introduces a Python-based GUI application designed to simplify and accelerate the setup of OpenROAD designs and platform (PDKs) on Ubuntu, CentOS, and Debian. The GUI provides an intuitive interface for linking designs and managing configurations, reducing manual effort and improving workflow efficiency.

image

Key Features

  • Multi-Distribution Support: Works seamlessly on Ubuntu, CentOS, and Debian.
  • Easy Design & PDK Linking: Simplifies the process of associating designs with the appropriate process design kits (PDKs).
  • Integrated Pop-up Text Editor: Allows in-app editing of configuration and constraint files without needing an external editor.
  • User-Friendly Interface: Reduces the complexity of manual setup by providing an accessible and structured GUI.

Implementation Details

  • Developed in Python with a focus on simplicity and usability.
  • Provides dynamic UI elements for intuitive navigation and file management.
  • Ensures smooth interaction with OpenROAD design flow and platform configurations.

Testing & Compatibility

  • Verified functionality on Ubuntu 22.04.
  • Successfully tested with OpenROAD workflows to confirm ease of use and correctness.

Next Steps

  • Future enhancements may include additional OS support and integration with other EDA toolchains.

Note

  • All the necessary files are inside the OpenROAD_HelperGUI folder

Let me know if you need any refinements! 🚀

BattusaiKuroKame avatar Apr 02 '25 12:04 BattusaiKuroKame

Thanks this looks like an interesting contribution. I'll need a bit of time to try it out and review.

maliberty avatar Apr 02 '25 18:04 maliberty

I think this feature would shine when running through a class/introduction to ORFS.

Some thoughts on experiences of ORFS and GUI:

  • I tinkered with a vscode plugin for ORFS, but not everybody is using vscode so the users become the intersection of ORFS and vscode users. The user base is further whittled down by to those who are interested in installing the plugin for ORFS. Text editor preferences are an important part of developer create comforts and preferences vary significantly. Switching text editor is a big step, I don't think a vscode plugin would be a significant factor in anyone's decision to switch or use another text editor.
  • QFlow has a GUI that at first glance looks a bit along the lines of what is being done here
  • I'm using bazel-orfs so I won't be using this. bazel-orfs is only used by me(and my immediate colleagues) for now. Perhaps it will become more popular over time. However, there are Bazel plugins for vscode. Some of the use-cases in this PR are covered there, but not e.g. launching a GUI.
  • ORFS supports github codespaces, but it has not been maintained and I don't think anyone has complained.

image

oharboe avatar Apr 03 '25 09:04 oharboe

This is aimed towards beginner users who are being introduced to ORFS using a native ubuntu or virtual machine ubuntu environment. The learning curve for beginners is quite steep, especially for students who are just being introduced to the core of ASIC workflow.

I have planned to add more functionality to the GUI as development progresses, even the ability to add more user customizable GUI interface where users can add custom button, selection menus , etc. and assign custom commands as per their need. End goal of this GUI is to make ORFS as user friendly as possible (at least for beginners and intermediate users).

BattusaiKuroKame avatar Apr 03 '25 12:04 BattusaiKuroKame

It is also possible to turn openROAD's embedded GUI into a standalone project and add some features. (e.g., inspired by the FOEDAG/raptor-projects that are also based on Qt and are kind of GUI-wrappers for a (simple) development system for FPGAs, but can also be adapted for ASICs)

https://github.com/os-fpga/FOEDAG, https://github.com/os-fpga/Raptor

mi-and-core avatar Apr 03 '25 16:04 mi-and-core

It is also possible to turn openROAD's embedded GUI into a standalone project and add some features. (e.g., inspired by the FOEDAG/raptor-projects that are also based on Qt and are kind of GUI-wrappers for a (simple) development system for FPGAs, but can also be adapted for ASICs)

https://github.com/os-fpga/FOEDAG, https://github.com/os-fpga/Raptor

Good proposal, however, that will be a little bit too invasive for the ORFS. I hope the core developers would implement these features in the their main GUI

BattusaiKuroKame avatar Apr 03 '25 18:04 BattusaiKuroKame

It is also possible to turn openROAD's embedded GUI into a standalone project and add some features.

I'm curious what you are proposing - I'm not familiar with those systems.

maliberty avatar Apr 03 '25 20:04 maliberty

Each time you push to an open PR it starts another CI run. Please be judicious or close the PR and reopen it when ready.

maliberty avatar Jun 15 '25 15:06 maliberty