1Getting Involved 2================ 3 4Thank you for taking the time to read this document and to contribute, 5the OpenROAD project will not reach all of its objectives without help! 6 7Possible ways to contribute 8 9- Open Source PDK information 10- Open Source Designs 11- Useful scripts 12- Tool improvements 13- New tools 14- Improving documentation including this document 15- Star our project and repos so we can see the number of people 16 interested 17 18Licensing Contributions 19----------------------- 20 21As much as possible, all contributions should be licensed using the BSD3 22license. You can propose another license if you must but contributions 23made with BSD3 fit in the spirit of OpenROAD’s permissively open source 24philosophy. We do have exceptions in the project but over time we hope 25that all contributions will be BSD3, or some other permissive license. 26 27Contributing Open Source PDK information and Designs 28---------------------------------------------------- 29 30If you have new design or PDK information to contribute, please add this to 31the repo `OpenROAD-flow-scripts`_. In the `flow directory`_ you will see a directory 32for `designs`_ with Makefiles to run them, and one for PDK `platforms`_ 33used by the designs. If you add a new PDK platform be sure to add at least 34one design that uses it. 35 36Contributing Scripts and Code 37----------------------------- 38 39We follow the `Google C++ style guide`_. If you find code that is not 40following this guide, within each file that you edit, follow the style in 41that file. Please pay careful attention to the :ref:`tool-checklist` for 42all code. If you want to add or improve functionality in OpenROAD please 43start with the top level `app`_ repo. You can see in the src directory that 44submodules exist pointing to tested versions of the other relevant repos 45in the project. Please look at the tool workflow in the developer guide 46:doc:`document <DeveloperGuide>` to work with the app and its submodule 47repos in an efficient way. 48 49Please pay attention to the `test directory`_ and be sure to add tests 50for any code changes that you make with open sourceable PDK and design 51information. We provide the nandgate45 PDK in the OpenROAD-flow-scripts repo to 52help with this. Pull requests with code changes are unlikely to be accepted 53without accompanying test cases. There are many `examples`_ tests. Each 54repo has a test directory as well with tests you should run and add to if 55you modify something in one of the submodules. 56 57.. If you want to add a new tool please look in the 58.. `src/tool <https://github.com/The-OpenROAD-Project/OpenROAD/tree/add_tool/src/tool>`__ 59.. directory of the add_tool branch for an example of how to add one. 60 61For changes that claim to improve QoR or PPA, please run many tests and 62ensure that the improvement is not design specific. There are designs 63in the `OpenROAD-flow-scripts`_ repo which can be used unless the improvement is 64technology specific. 65 66Do not add runtime or build dependencies without serious thought. For a 67project like OpenROAD with many application sub components, the software 68architecture can quickly get out of control. Changes with lots of new 69dependencies which are not necessary are less likely to be integrated. 70 71If you want to add TCL code to define a new tool command look at pdngen 72as an example of how to do so. Take a look at the `cmake file`_ which 73automatically sources the tcl code and the `tcl code`_ itself. 74 75Questions 76--------- 77 78You can file git issues to ask questions, file issues or you can contact 79us via email openroad at eng.ucsd.edu 80 81.. _`OpenROAD-flow-scripts`: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/ 82.. _`flow directory`: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/tree/master/flow 83.. _`designs`: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/tree/master/flow/designs 84.. _`platforms`: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/tree/master/flow/platforms 85.. _`Google C++ style guide`: https://google.github.io/styleguide/cppguide.html 86.. _`app`: https://github.com/The-OpenROAD-Project/OpenROAD/ 87.. _`test directory`: https://github.com/The-OpenROAD-Project/OpenROAD/tree/master/test 88.. _`examples`: https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/test/gcd_nangate45.tcl 89.. _`cmake file`: https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/CMakeLists.txt 90.. _`tcl code`: https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/pdngen/src/PdnGen.tcl 91