mirror of https://github.com/YosysHQ/abc.git
Fix issue with constant replacements
This commit is contained in:
parent
29c59ab009
commit
70a92ee63f
|
|
@ -61033,7 +61033,7 @@ int Abc_CommandAbc9eSLIM( Abc_Frame_t * pAbc, int argc, char ** argv ) {
|
||||||
}
|
}
|
||||||
params.synthesis_approach = atoi(argv[globalUtilOptind]);
|
params.synthesis_approach = atoi(argv[globalUtilOptind]);
|
||||||
globalUtilOptind++;
|
globalUtilOptind++;
|
||||||
if ( params.synthesis_approach < 0 || params.synthesis_approach > 2)
|
if ( params.synthesis_approach < 0 || params.synthesis_approach > 3)
|
||||||
goto usage;
|
goto usage;
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
|
|
@ -61249,7 +61249,7 @@ int Abc_CommandAbc9elSLIM( Abc_Frame_t * pAbc, int argc, char ** argv ) {
|
||||||
}
|
}
|
||||||
params.synthesis_approach = atoi(argv[globalUtilOptind]);
|
params.synthesis_approach = atoi(argv[globalUtilOptind]);
|
||||||
globalUtilOptind++;
|
globalUtilOptind++;
|
||||||
if ( params.synthesis_approach < 0 || params.synthesis_approach > 2)
|
if ( params.synthesis_approach < 0 || params.synthesis_approach > 3)
|
||||||
goto usage;
|
goto usage;
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
|
|
|
||||||
|
|
@ -83,11 +83,13 @@ namespace eSLIM {
|
||||||
}
|
}
|
||||||
int replacement_size = synth.getSizeFromActivationVars(last_model);
|
int replacement_size = synth.getSizeFromActivationVars(last_model);
|
||||||
int replacement_delay = synth.getDelayFromDelayVariables(last_model);
|
int replacement_delay = synth.getDelayFromDelayVariables(last_model);
|
||||||
assert (replacement_delay > 0);
|
assert (replacement_delay > 0 || replacement_size == 0);
|
||||||
std::vector<bool> model = synth.reduceDelay(replacement_size, replacement_delay - 1);
|
if (replacement_delay > 0) { // a constant circuit has already optimal depth
|
||||||
if (model.size() > 0) {
|
std::vector<bool> model = synth.reduceDelay(replacement_size, replacement_delay - 1);
|
||||||
replacement_size = synth.getSizeFromActivationVars(model);
|
if (model.size() > 0) {
|
||||||
std::swap(last_model, model);
|
replacement_size = synth.getSizeFromActivationVars(model);
|
||||||
|
std::swap(last_model, model);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return synth.getReplacement(last_model, replacement_size);
|
return synth.getReplacement(last_model, replacement_size);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ namespace eSLIM {
|
||||||
std::cout << "PThreads not available, minimize random window.\n";
|
std::cout << "PThreads not available, minimize random window.\n";
|
||||||
std::uniform_int_distribution<> udist(0, windows.size() - 1);
|
std::uniform_int_distribution<> udist(0, windows.size() - 1);
|
||||||
int wid = udist(rng);
|
int wid = udist(rng);
|
||||||
eSLIM_Man<SynthesisEngine, SelectionStrategy>::applyeSLIM(windows[wid], cfg, wlogs[wid])
|
eSLIM_Man<SynthesisEngine, SelectionStrategy>::applyeSLIM(windows[wid], cfg, wlogs[wid]);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue