From: yu.dongliang <18588496441@163.com>
Date: Sat, 11 Nov 2023 11:54:21 +0000 (+0800)
Subject: Revert "__ses_de_cross()"
X-Git-Url: http://baseworks.info/?a=commitdiff_plain;h=a419f01f716d1a257cc913ff23fe4afaeb300399;p=ses.git

Revert "__ses_de_cross()"

This reverts commit 1fc3497fad908b35f1a2653a83424086e0ce5b99.
---

diff --git a/ses_layout.c b/ses_layout.c
index c279985..4c17f1f 100644
--- a/ses_layout.c
+++ b/ses_layout.c
@@ -1133,46 +1133,6 @@ next:
 	return 0;
 }
 
-static void decross_mov_before(ScfEfunction* f, int d, intptr_t dst, intptr_t src)
-{
-	ScfEcomponent* c;
-	ScfEline*      el;
-	ScfEpin*       p;
-	ScfLine*       l;
-
-	intptr_t i;
-	intptr_t j;
-	intptr_t k;
-
-	intptr_t min = dst < src ? dst : src;
-	intptr_t max = dst > src ? dst : src;
-
-	int y0 = f->elines[min]->lines[0]->y0;
-
-	eline_mov_before(f, dst, src);
-
-	for (i = min; i <= max; i++) {
-		el = f->elines[i];
-
-		int y = y0 + (i - min) * d;
-
-		for (j = 0; j < el->n_lines; j++) {
-			l  =        el->lines[j];
-
-			l->y0 = y;
-			l->y1 = y;
-		}
-
-		for (j = 0; j + 1 < el->n_pins; j += 2) {
-
-			c  = f->components[el->pins[j]];
-			p  = c->pins      [el->pins[j + 1]];
-
-			p->y = y;
-		}
-	}
-}
-
 static int __ses_de_cross(ScfEfunction* f, int d)
 {
 	ScfEcomponent* c;
@@ -1213,8 +1173,7 @@ static int __ses_de_cross(ScfEfunction* f, int d)
 	for (j = 1; j <= N; j++)
 		scf_vector_add(colors, (void*)j);
 
-	int try = 0;
-	for (j = N; j >= 2; ) {
+	for (j = N; j >= 2; j--) {
 
 		int ret = ses_graph_kcolor(graph, j, colors);
 		if (ret < 0) {
@@ -1232,41 +1191,8 @@ static int __ses_de_cross(ScfEfunction* f, int d)
 			}
 		}
 
-		if (n > 0) {
-			if (try > 0)
-				break;
-
-			ScfEcomponent* max = NULL;
-
-			for (i = 0; i < graph->size; i++) {
-				v         = graph->data[i];
-
-				c = v->data;
-				if (v->color < 0 && SCF_EDA_NPN == c->type) {
-
-					if (!max || max->color < c->color)
-						max = c;
-				}
-
-				v->color = 0;
-			}
-
-			i = __ses_find_eline_index(f, max->pins[SCF_EDA_NPN_B]->lid);
-			k = __ses_find_eline_index(f, max->pins[SCF_EDA_NPN_C]->lid);
-
-			scf_logw("mov c%ld: el%ld [%ld] --> [%ld] el%ld\n\n", max->id, f->elines[k]->id, k, i, f->elines[i]->id);
-
-			decross_mov_before(f, d, i, k);
-
-			scf_vector_clear(graph, ( void (*)(void*) )ses_vertex_free);
-
-			ret = __ses_get_crosses(f, d, graph);
-			if (ret < 0)
-				return ret;
-
-			try++;
-			continue;
-		}
+		if (n > 0)
+			break;
 
 		for (i = 0; i < graph->size; i++) {
 			v         = graph->data[i];
@@ -1277,7 +1203,6 @@ static int __ses_de_cross(ScfEfunction* f, int d)
 		}
 
 		scf_vector_del(colors, (void*)j);
-		j--;
 	}
 
 	scf_vector_clear(graph, ( void (*)(void*) )ses_vertex_free);
@@ -1681,12 +1606,12 @@ int ses_layout_function(ScfEfunction* f, int d)
 	__ses_layout_components(f, d);
 	__ses_xchg_components(f, d);
 
+	qsort(f->elines, f->n_elines, sizeof(ScfEline*), eline_cmp_id);
+
 	ret = __ses_de_cross(f, d);
 	if (ret < 0)
 		return ret;
 
-	qsort(f->elines, f->n_elines, sizeof(ScfEline*), eline_cmp_id);
-
 	__ses_setc_xy(f, d);
 	__ses_layout_cx(f, d);