Fix for last clock edge data
authorMiodrag Milanovic <mmicko@gmail.com>
Fri, 25 Feb 2022 15:15:32 +0000 (16:15 +0100)
committerMiodrag Milanovic <mmicko@gmail.com>
Fri, 25 Feb 2022 15:15:32 +0000 (16:15 +0100)
kernel/fstdata.cc
passes/sat/sim.cc

index 2e1000178daaff308f597198cc3295834188a8cb..af816e57eac0294ae116656091aea7d07afcecef 100644 (file)
@@ -184,6 +184,7 @@ void FstData::reconstructAllAtTimes(std::vector<fstHandle> &signal, uint64_t sta
        fstReaderSetUnlimitedTimeRange(ctx);
        fstReaderSetFacProcessMaskAll(ctx);
        fstReaderIterBlocks2(ctx, reconstruct_clb_attimes, reconstruct_clb_varlen_attimes, this, nullptr);
+       past_data = last_data;
        callback(last_time);
        if (last_time!=end_time)
                callback(end_time);
index a5494a08899655682325ae96940cbbdbf6acbf12..f28fd21e500d988f992fda69ac566619bd1ca027 100644 (file)
@@ -1125,7 +1125,7 @@ struct SimWorker : SimShared
                try {
                        fst->reconstructAllAtTimes(fst_clock, startCount, stopCount, [&](uint64_t time) {
                                log("Co-simulating %s %d [%lu%s].\n", (all_samples ? "sample" : "cycle"), cycle, (unsigned long)time, fst->getTimescaleString());
-                               bool did_something = time < stopCount;  // FIXME
+                               bool did_something = false;
                                for(auto &item : inputs) {
                                        std::string v = fst->valueOf(item.second);
                                        did_something |= top->set_state(item.first, Const::from_string(v));
@@ -1138,8 +1138,6 @@ struct SimWorker : SimShared
                                }
                                if (did_something)
                                        update();
-                               else
-                                       log("nothing to update.\n");
                                write_output_step(time);
 
                                bool status = top->checkSignals();