Closed nchiolino closed 2 months ago
Are you using MACRO_PLACEMENT_TCL or MACRO_PLACEMENT to place the macros? If so the macro placer should be skipped.
I am using MACRO_PLACEMENT_TCL. That is what it is crashing on when called. I am assuming.
Its demonstrating to me that it might be a resource problem. I am working on increasing my resources.
@maliberty , when you say that the macro placer can be skipped if I use a placement file with exact locations, do you mean that I don't need to set the RTLMP_FLOW variable?
RTLMP_FLOW will be ignored if MACRO_PLACEMENT_TCL is set and the macro placer won't be run either. It makes me think there is something wrong in how you are setting it. You can see the logic in https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/ee899c351818915c3aa721ff4c29fe9f7fce6df0/flow/scripts/macro_place_util.tcl#L47 . Do you see the "Using manual macro placement file" message?
To provide more clarification, I have had success placing macros setting SYNTH_HIERARCHICAL = 0 and using a macro_placement.cfg file. Since my top level RTL is assembled in a hierarchical fashion AND mpl2 is a better tool, I was hoping to get macro placement using SYNTH_HIERARCHICAL = 1. Also, I was getting some very strange results with PAD net names wanting to route to internal core gates during grt. I assumed it was a failure with not using the hierarchical method. Therefore, I am trying to blaze a trail using the hierarchical synth and macro placement. For the question you asked just now. Here is a screenshot of my terminal just after floorplan and when it calls the macro placement and it does look that its not even getting to the line of code you mentioned before. I have only seen that line of code when doing the non-hierarchical method mentioned above. Does that help clarify my journey thus far? (note: I have blacked out a couple of lines of code for protection of sensitive information)
After some code debug with print statements, I was able to find out that the crash is occurring on the first line of my macro placement tcl file. Here is a screenshot of my file. Its very simple and the two memory macros are hierarchecly under the top level soc chip. Is there an issue with my syntax perhaps?
We are getting closer. Since you can't share you test case, would you build for debug and get exact line info? Does you design have routing tracks?
Yes, the design has routing tracks and the X Y locations, of the macros listed above, are whole numbers of the site location. During the exercise for building the test case with a "dummy" macro, for some reason, it worked. This is even with the proprietary technology. So now I am wondering if its an issue with the macro itself or with the RTL its inserted into. I will attempt to insert the memory macro into the test case RTL first to isolate that variable. If it works then I will insert the dummy macro in the original RTL to isolate that variable. Stay tuned.
That's a good clue. Is it possible you macro has pins without any physical geometry?
Due to deadline issues, I am moving back to flat synthesis and utilizing mpl for macro placement. I will have to pick this up if I have spare time.
Ok, reopen if you decide to pick it up.
Subject
Describe the bug
Trying to place two macros in specific locations using a placement.tcl file. When the macro placement step occurs, it receives a signal 8 and crashes.
Expected Behavior
I expect mpl2 to place the macros with no errors. I have been able to place the macros using the mpl tool and a .cfg macro placement file, however, the netlist is not correct compared to the synthesized one so I am getting incorrect routing nets for grt. I want to utilize the hierarchical synthesis and macro placement but keep receiving this signal 8 issue.
Environment
To Reproduce
I am running a proprietary pdk and cannot provide a working example at the moment.
Relevant log output
No response
Screenshots
No response
Additional Context
No response