liangrj2014 / ISPD24_contest

20 stars 0 forks source link

Questions about evaluator.cpp #12

Open dearmrlv opened 10 months ago

dearmrlv commented 10 months ago

In evaluator.cpp, the function NVR_DB::read_gr_solution maintains a vector flag to record the routing guides of a net. The valid guides are categorized to wire and via types. And during reading guides, flag can only be updated by wire type guides and function NVR_DB::update_nonstack_via_counter.

Here is my case: Access Points of a pin: [(3, 0, 396), (3, 1, 396)] I try to meet the pin by point (3, 0, 396) by a via from layer2 (metal3) to layer3 (metal4), and my guide is 0 396 2 0 396 3. The only entrance to set flag is in function NVR_DB::update_nonstack_via_counter, where flag[2][0][396] is set. Since no wire type guide is passing through the point (3, 0, 396) and no via starts from point (3, 0, 396), the variable flag[3][0][396] is not set and my guide for this net is judged to be open by evaluator.cpp.

My question is: Is it admissable to link the pin access point by a via like this? Or does the evaluator.cpp miss such case?

Looking forward to your help!

dearmrlv commented 10 months ago

@liangrj2014 Looking forward to your help

liangrj2014 commented 10 months ago

Thanks for pointing out the issue! We will address it soon

liangrj2014 commented 10 months ago

Could you please check whether adding "flag[zh][xl][yl] = net->idx()" below line 524 in the evaluator.cpp resolve this issue? Thanks in advance!

dearmrlv commented 10 months ago

Thanks! The added line works.