ses layout
authoryu.dongliang <18588496441@163.com>
Sun, 16 Jul 2023 06:50:25 +0000 (14:50 +0800)
committeryu.dongliang <18588496441@163.com>
Sun, 16 Jul 2023 06:50:25 +0000 (14:50 +0800)
ses_layout.c

index 4c1beb5e16d3fd777ae98246398478f3da020687..85b416fbf3d31186d7316622304d7f1cc919e9d0 100644 (file)
@@ -542,6 +542,8 @@ int ses_layout_function(ScfEfunction* f, int d)
        for (i = 0; i < f->n_elines; i++) {
                el0       = f->elines[i];
 
+               el0->lines[0]->x1 -= mx;
+
                for (m = 0; m + 3 < el0->n_pins; m += 2) {
 
                        c0 = f->components[el0->pins[m]];
@@ -577,11 +579,6 @@ int ses_layout_function(ScfEfunction* f, int d)
                }
        }
 
-       f->w += d;
-       f->h += d;
-
-       scf_loge("f->x: %d, y: %d, w: %d, h: %d\n", f->x, f->y, f->w, f->h);
-
        for (i = 0; i < f->n_components; i++) {
                c0 =        f->components[i];
 
@@ -591,6 +588,8 @@ int ses_layout_function(ScfEfunction* f, int d)
                for (j = 0; j < c0->n_pins; j++) {
                        p0 =        c0->pins[j];
 
+                       p0->x -= mx;
+
                        cx += p0->x;
                        cy += p0->y;
                }
@@ -599,6 +598,12 @@ int ses_layout_function(ScfEfunction* f, int d)
                c0->y = cy / c0->n_pins;
        }
 
+       f->w -= mx;
+       f->w += d;
+       f->h += d;
+
+       scf_loge("f->x: %d, y: %d, w: %d, h: %d, mx: %d\n", f->x, f->y, f->w, f->h, mx);
+
        return 0;
 }