cuhk-eda / ripple

Pin-Accessible Legalization for Mixed-Cell-Height Circuits
Other
26 stars 9 forks source link

Implementation problems #6

Closed tstren1223 closed 2 years ago

tstren1223 commented 2 years ago

Hi there, I found this when I read your papers about Ripple, and I'm surprised by its fastness on benchmark superblue19 within 35 mins as the paper read. Then, I decided to utilize your opensource and expect to see the same result by my self. However, When I run Ripple on the Ubuntu 18.0.4 workstation with 3.6GZ 8RAM 4 cores, I found it took more than a few hours. (Actually it was overtime.) Thus, I'm curious about whether there are some details I don't know. First, I follow your two steps to build Ripple. Second, I run the following command in ripple/bin to execute it: ./placer -bookshelf dac2012 -aux ../superblue4/superblue4.aux -pl ../superblue4/superblue4.pl -flow dac2016 -cpu 4 Is there any difference between when you used Ripple in the contest and when it is now,which may incur too much time here?

Rholais commented 2 years ago

Thanks for reporting the issue. Could you help list the paper that you referred to so that I can confirm the task that ripple is supposed to work on?

tstren1223 commented 2 years ago

Sure. The papers I mentioned are as follows: https://www.researchgate.net/publication/221627056_Ripple_An_effective_routability-driven_placer_by_iterative_cell_movement https://ieeexplore.ieee.org/document/6560745 https://dl.acm.org/doi/abs/10.1145/2925989 And the benchmarks I tried are as follows: https://www.ispd.cc/contests/11/ispd2011_contest.html http://archive.sigda.org/dac2012/contest/dac2012_contest_benchmarks.html#head-designs BTW, when I used the superblue1 in ISPD11 with the following command ./placer -bookshelf dac2012 -aux ../superblue1/superblue1.aux -pl ../superblue1/superblue1.pl -flow dac2016 -cpu 1, it showed that bad::alloc. Thanks for your help.

tstren1223 commented 2 years ago

Hi~I want to add some information about this issue. 1. I find that Ripple for these benchmark will produce the information like this: [ 11.928]E Top power rail of the row at y=1800 is not connected to power rail [ 11.928]W Bottom power rail of the row at y=1800 is not connected to power rai l [ 11.928]E Top and Bottom power rail of the row at y=1800 share the same power x [ 11.928]E Bottom power rail of the row at y=2700 is not connected to power rail

Oddly, these messages show up in every superblue data with the same content since I've tried so far. 2. Even though Ripple still run after messages showing up, it will proceed unbelievablely slow in this method: DPlacer::legalizeCell(const int threshold, const unsigned iThread) I am not sure whether it is normal for the size of variable "operatingRegions" to decrease only 1 per second. This speed rate is the main problem for why it cannot stop. PS: the original size for "operatingRegions" is about 500000.

Rholais commented 2 years ago

Hi~I want to add some information about this issue. 1. I find that Ripple for this benchmark will produce the information like this: [ 11.928]E Top power rail of the row at y=1800 is not connected to power rail [ 11.928]W Bottom power rail of the row at y=1800 is not connected to power rail [ 11.928]E Top and Bottom power rail of the row at y=1800 share the same power x [ 11.928]E Bottom power rail of the row at y=2700 is not connected to a power rail

Oddly, these messages show up in every super blue data with the same content since I've tried so far. 2. Even though Ripple still runs after messages show up, it will proceed unbelievably slow in this method: DPlacer::legalizeCell(const int threshold, const unsigned iThread) I am not sure whether it is normal for the size of variable "operatingRegions" to decrease only 1 per second. This speed rate is the main problem for why it cannot stop. PS: the original size for "operatingRegions" is about 500000.

Thanks for providing detailed information. The default value of DPModule::LGOperRegSize is 256 so I think it's not expected to have such large operatingRegions with size 500k.

tstren1223 commented 2 years ago

Oh... Then, in this case, what actions do you suggest me to take? Or, Is there any direction for me to debug by myself? In addtion, is it right for typing the command "./placer -bookshelf dac2012 -aux ../superblue1/superblue1.aux -pl ../superblue1/superblue1.pl -flow dac2016 -cpu 1"?

Or can you use this sourcecode for benchmark superblue and tell me how you work with it? Thanks.

Rholais commented 2 years ago

Oh... Then, in this case, what actions do you suggest I take? Or, Is there any direction for me to debug by myself? In addition, is it right for typing the command "./placer -bookshelf dac2012 -aux ../superblue1/superblue1.aux -pl ../superblue1/superblue1.pl -flow dac2016 -cpu 1"?

Or can you use this source code for benchmark super blue and tell me how you work with it? Thanks.

Thanks for providing the command. Flow dac2016 is used for multi-row cell legalization and no global placement is conducted. Could you try with -flow default instead?

tstren1223 commented 2 years ago

image Soory, but It still run overtime with that comment.

Rholais commented 2 years ago

image Sorry, but It still run overtime with that comment.

It seems that the global placement module is not compiled in the binary. Can you help confirm the command used to compile the binary?

tstren1223 commented 2 years ago

image Sorry, but It still run overtime with that comment.

It seems that the global placement module is not compiled in the binary. Can you help confirm the command used to compile the binary?

I have no problems now, thank you.

Rholais commented 2 years ago

image Sorry, but It still run overtime with that comment.

It seems that the global placement module is not compiled in the binary. Can you help confirm the command used to compile the binary?

I have no problems now, thank you.

The compilation command make mode=release is mainly for detailed placement tasks. Can you try compiling with make mode=release gp=?

tstren1223 commented 2 years ago

yeah it works. you can close this. Thanks.

darrenleeleelee1 commented 2 years ago

@tstren1223 Sorry to bother you,Can I ask you what commands are you typed to run the placer. Is ./placer -bookshelf dac2012 -aux ../superblue4/superblue4.aux -pl ../superblue4/superblue4.pl -flow default -cpu 4?

Rholais commented 2 years ago

yeah it works. you can close this. Thanks.

Thanks for the confirmation. I will close the issue if there is no more question related to compilation.

Rholais commented 2 years ago

@tstren1223 I will close the issue if there is no more question related to compilation.