liangrj2014 / ISPD24_contest

20 stars 0 forks source link

Some nets being flagged as open #24

Open profmadden opened 9 months ago

profmadden commented 9 months ago

I'm getting a small number of nets flagged as open, and am wondering if I'm not understanding stacked vias correctly, or if there's a glitch in the evaluator (I'm using the v1 version). I have not checked them all, but it seems like it happens on nets where some of the pins are not on layer 0. Here's a small example from ariane133_51. The net is this:

axi_req_o[10]
(
[(3, 0, 654), (3, 1, 654)]
[(0, 4, 653)]
)

I'm using the first access point on the first pin on layer 3, and ignoring the second access point. My router uses metal 2 for the horizontal connection, and metal 3 for the vertical, generating a routing (annotated) like this:

axi_req_o[10]
(
0 654 2  4 654 2  # Horizontal wiring, M2
4 653 3  4 654 3  # Vertical wiring, M3

0 654 2   0 654 3 # Via drops from first point down to horizontal M2
4 653 0   4 653 1 # Second point - via up to M1
4 653 1   4 653 2 # Second point - via up to M2
4 653 2   4 653 3 # Second point - via up to M3

4 654 2   4 654 3 # Connect two the wire segments
)

I think this should be connected -- but maybe I'm missing something?

profmadden commented 9 months ago

Looking at a few more of these, the trouble seems to be with pins from the input file that are not on the lowest layer (metal 0).

If a pin is located on layer X, it seems like the evaluator is looking for a via from layer X to layer X+1.

liangrj2014 commented 9 months ago

Thanks for pointing out this issue! We will fix it soon!

liangrj2014 commented 9 months ago

Could you please try the latest version of evaluator? It should fix this issue. Thanks!

profmadden commented 9 months ago

Looks like evaluator_v2.cpp fixes this -- thanks!