From: yu.dongliang <18588496441@163.com> Date: Mon, 13 Nov 2023 04:13:50 +0000 (+0800) Subject: __topo_path_diodes() X-Git-Url: http://baseworks.info/?a=commitdiff_plain;h=17dcea6ba7aeab6235e1030802cd75e556163fe1;p=ses.git __topo_path_diodes() --- diff --git a/ses_step_jr.c b/ses_step_jr.c index 2ce1961..4e2dfb3 100644 --- a/ses_step_jr.c +++ b/ses_step_jr.c @@ -60,9 +60,13 @@ void __ses_path_pr(ScfEfunction* f, ses_path_t* path, int i, int j, ScfEpin* cp1 if (cp1 != p1) p1 = path->pins->data[j - 1]; - } else if (j > 0) + } else if (j > 0) { p1 = path->pins->data[j - 1]; - else { + c1 = f->components[p1->cid]; + + if (SCF_EDA_NPN == c1->type && SCF_EDA_NPN_E == p1->id) + p1 = path->pins->data[j - 2]; + } else { *r = 0; *jr = 0; return; @@ -92,8 +96,7 @@ void __ses_path_pr(ScfEfunction* f, ses_path_t* path, int i, int j, ScfEpin* cp1 *r = p1->pr - p0->pr; *jr = p1->jpr - p0->jpr; } - - scf_logd("c%ldp%ld-c%ldp%ld, r: %lg, p0->pr: %lg, p1->pr: %lg\n", p0->cid, p0->id, p1->cid, p1->id, *r, p0->pr, p1->pr); + scf_loge("c%ldp%ld-c%ldp%ld, r: %lg, p0->pr: %lg, p1->pr: %lg\n", p0->cid, p0->id, p1->cid, p1->id, *r, p0->pr, p1->pr); } static int __ses_path_jr(ScfEfunction* f, ses_path_t* path) diff --git a/ses_step_topo.c b/ses_step_topo.c index fc959c1..af5a4bd 100644 --- a/ses_step_topo.c +++ b/ses_step_topo.c @@ -499,8 +499,10 @@ static int __topo_path_diodes(ScfEfunction* f, ses_path_t* path) if (SCF_EDA_Diode_NEG == p->id) { info->n_diodes++; - if (__ses_branch_exist(path, i)) + if (__ses_branch_exist(path, i)) { + j = i; goto _add; + } } continue; } @@ -521,16 +523,18 @@ static int __topo_path_diodes(ScfEfunction* f, ses_path_t* path) } else if (SCF_EDA_NPN_E == p->id) { - if (__ses_branch_exist(path, i)) + if (__ses_branch_exist(path, i)) { + j = i; goto _add; - + } continue; } } + j = i - 1; _add: if (info) { - info->j = i - 1; + info->j = j; if (scf_vector_add(path->diodes, info) < 0) { free(info);