OpenROAD_HelperGUI
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.
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! 🚀
Thanks this looks like an interesting contribution. I'll need a bit of time to try it out and review.
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.
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).
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
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
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.
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.