Fix cycle 0 in aiger witness co-simulation

Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
This commit is contained in:
Claire Xenia Wolf 2022-02-18 16:27:41 +01:00
parent 5f918803de
commit 1aa9ad25d0
1 changed files with 15 additions and 12 deletions

View File

@ -1198,31 +1198,34 @@ struct SimWorker : SimShared
std::string line; std::string line;
std::getline(f, line); std::getline(f, line);
if (line.size()==0 || line[0]=='#') continue; if (line.size()==0 || line[0]=='#') continue;
log("Simulating cycle %d.\n", cycle);
if (init) { if (init) {
if (line.size()!=latches.size()) if (line.size()!=latches.size())
log_error("Wrong number of initialization bits in file.\n"); log_error("Wrong number of initialization bits in file.\n");
write_output_header(); write_output_header();
top->setState(latches, line); top->setState(latches, line);
set_inports(clock, State::S0);
set_inports(clockn, State::S1);
update();
write_output_step(0);
init = false; init = false;
} else { } else {
log("Simulating cycle %d.\n", cycle);
if (line.size()!=inputs.size()) if (line.size()!=inputs.size())
log_error("Wrong number of input data bits in file.\n"); log_error("Wrong number of input data bits in file.\n");
top->setState(inputs, line); top->setState(inputs, line);
set_inports(clock, State::S1); if (cycle) {
set_inports(clockn, State::S0); set_inports(clock, State::S1);
set_inports(clockn, State::S0);
} else {
set_inports(clock, State::S0);
set_inports(clockn, State::S1);
}
update(); update();
write_output_step(10*cycle); write_output_step(10*cycle);
set_inports(clock, State::S0); if (cycle) {
set_inports(clockn, State::S1); set_inports(clock, State::S0);
update(); set_inports(clockn, State::S1);
write_output_step(10*cycle + 5); update();
write_output_step(10*cycle + 5);
}
cycle++;
} }
cycle++;
} }
write_output_step(10*cycle); write_output_step(10*cycle);
write_output_end(); write_output_end();