-
Hi guys, congratulations on all the great job done with the OpenROAD project!! I want to use it to develop my ideas during my Ph.D. I am trying to build a dataset for graph neural network training. My idea is to perform physical design predictions with a mapped circuit before P&R. I am trying to extract features from Verilog with Yosys, send them to the DGL python library and perform training with DGL. These steps are already operational, but I am missing an essential aspect of the prediction: the label! To solve the mentioned issue I would like to have the data shown by the heatmaps in the GUI, such as placement density and routing congestion. I would like them not as images but the actual numeric values. The positions of the cells and wires would also be essential.
I noticed there are some heatmap codes in ./src/gui/src, but there are so many attributes and methods. Also, I am not used to the odb database yet. Any help is welcome. |
Beta Was this translation helpful? Give feedback.
Replies: 14 comments 50 replies
-
By the way I couldn't find the path |
Beta Was this translation helpful? Give feedback.
-
The bit of documentation is out of date as we now include the tcl functionality in openroad itself and no longer build standalone executables for odb. (@vvbandeira) @arlpetergadfort My first thought was to look at each engine but maybe it would be easier to provide a dump_heatmap command in the GUI since it has already abstracted the interface to each engine. Does that seem reasonable to you? |
Beta Was this translation helpful? Give feedback.
-
#1612 is merged so you should be good to go. |
Beta Was this translation helpful? Give feedback.
-
You are repeating the previous rule and probably want something like: my_gui: my_gui_6_final.def You are getting the bbox of each instance. You'll have to map that back to the grid you are working with (an instance may be across a boundary as well). |
Beta Was this translation helpful? Give feedback.
-
Hey guys, I have some issues with the heatmap features. I noticed that running the GCD project from a fresh OpenROAD-flow with this exact sequence of commands:
Renders no output on the circuit's image when clicking on the checkbox for
If I run the AES project I can see the Placement and Power heatmaps. Although I have the same errors with Routing and IR Drop. The Routing and IR Drop also gives errors when trying to call gui::dump_heatmap: |
Beta Was this translation helpful? Give feedback.
-
I don't see any issue with placement density. This is gcd/ng45: |
Beta Was this translation helpful? Give feedback.
-
@arlpetergadfort I'm seeing:
This used to work - do you know what has changed? |
Beta Was this translation helpful? Give feedback.
-
Hi again! I am progressing with my dataset generation. Looking real promising. I am only having issues trying to close the gui. Even if I use gui::hide it goes to the By the way if you uncoment the part where I try to use the Routing and IRdrop heatmaps the gui::hide doesn't work. |
Beta Was this translation helpful? Give feedback.
-
Hi everyone! I am coming back to this project. I was focusing on other tasks the last months. I wanted to share with you an example of what my code is able to generate by editing Yosys and OpenROAD: https://drive.google.com/drive/folders/1xTz4iTuGx0bDD-ZWAOV-MDQWKI0a8XA8?usp=sharing . This pair of CSV files can be used as input for DGL Python library and create a GNN. There is an issue though, I created a Python script to check for collisions among the heatmaps and logic gate locations, and it is really slow. I made it by comparing the location of all the gates against each of the 4 heat types. I would like to ask any suggestions on how to improve this. Is this able to be solved on the OpenROAD db? |
Beta Was this translation helpful? Give feedback.
-
The link to your script is broken. The heatmaps are a grid so it should be easy to compute the index into the map. Matt |
Beta Was this translation helpful? Give feedback.
-
Hello again! I found a bug on my code to retrieve learning data using OpenROAD. The logic gate names don't match! My machine learning model features come from the verilog generated during the flow. Optionally I can use the 1_1_yosys.v ( post tech map ) or the 6_final.v ( post route ). Afterwards I get the labels using some TCL commands discussed previously in this post. For example:
At last, I have to build up my dataset by matching the logic gates names from the verilog, the logic gate names(from the TCL snippet pasted here and the heatmap dumps (positions). But there is a problem: I noticed that sometimes the flow changes the names of the gates between the verilog and the names retrieved from the TCL command ( My question is: Is there anyway to be sure that OR flow won't change the names of the gates? If not when and how does the tool changes the names of the gates, does it simply remove the starting |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Hello again. I wonder if there is a way to get the heatmaps considering only certain metal layers, is that possible? |
Beta Was this translation helpful? Give feedback.
The bit of documentation is out of date as we now include the tcl functionality in openroad itself and no longer build standalone executables for odb. (@vvbandeira)
@arlpetergadfort My first thought was to look at each engine but maybe it would be easier to provide a dump_heatmap command in the GUI since it has already abstracted the interface to each engine. Does that seem reasonable to you?