Browse Source

FIX discard unused signals

master
Jordi Baylina 4 years ago
parent
commit
6c48e9ba01
No known key found for this signature in database GPG Key ID: 7480C80C1BE43112
2 changed files with 22 additions and 11 deletions
  1. +11
    -7
      src/compiler.js
  2. +11
    -4
      src/construction_phase.js

+ 11
- 7
src/compiler.js

@ -81,10 +81,6 @@ async function compile(srcFile, options) {
throw new Error("A main component must be defined"); throw new Error("A main component must be defined");
} }
if (ctx.verbose) console.log("Classify Signals");
measures.classifySignals = -performance.now();
classifySignals(ctx);
measures.classifySignals += performance.now();
if (ctx.verbose) console.log("Reduce Constants"); if (ctx.verbose) console.log("Reduce Constants");
measures.reduceConstants = -performance.now(); measures.reduceConstants = -performance.now();
@ -108,9 +104,13 @@ async function compile(srcFile, options) {
measures.reduceConstraints += performance.now(); measures.reduceConstraints += performance.now();
} }
if (ctx.verbose) console.log("NConstraints After: "+ctx.constraints.length); if (ctx.verbose) console.log("NConstraints After: "+ctx.constraints.length);
if (ctx.verbose) console.log("Classify Signals");
measures.classifySignals = -performance.now();
classifySignals(ctx);
measures.classifySignals += performance.now();
measures.generateWitnessNames = -performance.now(); measures.generateWitnessNames = -performance.now();
generateWitnessNames(ctx); generateWitnessNames(ctx);
measures.generateWitnessNames += performance.now(); measures.generateWitnessNames += performance.now();
@ -462,7 +462,6 @@ async function reduceConstrains(ctx) {
} }
sig2constraint[s] = null; sig2constraint[s] = null;
lSignal.c = ctx.stDISCARDED;
} }
/* /*
@ -496,7 +495,12 @@ async function reduceConstrains(ctx) {
for (let k in l.coefs) { for (let k in l.coefs) {
k = Number(k); k = Number(k);
const signal = ctx.signals[k]; const signal = ctx.signals[k];
if ((signal.c == ctx.stINTERNAL)&&(!ctx.F.isZero(l.coefs[k])) &&(!removedSignals[k])) return k;
if ( ( ((signal.o & ctx.MAIN) == 0)
||( ((signal.o & ctx.IN) == 0)
&&((signal.o & ctx.OUT) == 0)))
&&((signal.o & ctx.ONE) ==0)
&&(!ctx.F.isZero(l.coefs[k]))
&&(!removedSignals[k])) return k;
} }
return null; return null;
} }

+ 11
- 4
src/construction_phase.js

@ -428,10 +428,17 @@ function execAssignement(ctx, ast) {
} }
// Skip if an out is assigned directly to an input. // Skip if an out is assigned directly to an input.
if ((!isIn)||(!isOut)) {
sDest.e = sIdx;
} else {
if (utils.isDefined(sSrc.v)) sDest.v = sSrc.v;
if (!(isIn&&isOut)) {
if (isIn) {
sDest.e = sIdx;
} else if (isOut) {
sSrc.e = dIdx;
} else {
sDest.e = sIdx;
}
if (!isOut) {
if (utils.isDefined(sSrc.v)) sDest.v = sSrc.v;
}
} }
} }
} }

Loading…
Cancel
Save