bug fix and cleanups
authorMiodrag Milanovic <mmicko@gmail.com>
Fri, 4 Feb 2022 09:01:06 +0000 (10:01 +0100)
committerMiodrag Milanovic <mmicko@gmail.com>
Fri, 4 Feb 2022 09:01:06 +0000 (10:01 +0100)
kernel/fstdata.cc
passes/sat/sim.cc
tests/sat/grom.ys

index 17498c4eea295b26dde2184c7fbf799e4f9a42d3..0b62564f6d76525b5062167868a5737bd2cf1cae 100644 (file)
@@ -174,7 +174,7 @@ static void reconstruct_clb_attimes(void *user_data, uint64_t pnt_time, fstHandl
 
 void FstData::reconstruct_callback_attimes(uint64_t pnt_time, fstHandle pnt_facidx, const unsigned char *pnt_value, uint32_t /* plen */)
 {
-       if (sample_times_ndx > sample_times.size()) return;
+       if (sample_times_ndx >= sample_times.size()) return;
 
        uint64_t time = sample_times[sample_times_ndx];
        // if we are past the timestamp
index d33c20c51732fae7b7ccdebe37639ab067bef5f2..b2425b531f8108465c99a83deee849156f834c76 100644 (file)
@@ -752,7 +752,7 @@ struct SimInstance
                        } else if (shared->sim_mode == SimulationMode::gate && !fst_val.is_fully_def()) { // FST data contains X
                                for(int i=0;i<fst_val.size();i++) {
                                        if (fst_val[i]!=State::Sx && fst_val[i]!=sim_val[i]) {
-                                               log_warning("Signal '%s' in file '%s' in simulation '%s'\n", log_id(item.first), log_signal(fst_val), log_signal(sim_val));
+                                               log_warning("Signal '%s' in file %s in simulation %s\n", log_id(item.first), log_signal(fst_val), log_signal(sim_val));
                                                retVal = true;
                                                break;
                                        }
@@ -760,14 +760,14 @@ struct SimInstance
                        } else if (shared->sim_mode == SimulationMode::gold && !sim_val.is_fully_def()) { // sim data contains X
                                for(int i=0;i<sim_val.size();i++) {
                                        if (sim_val[i]!=State::Sx && fst_val[i]!=sim_val[i]) {
-                                               log_warning("Signal '%s' in file '%s' in simulation '%s'\n", log_id(item.first), log_signal(fst_val), log_signal(sim_val));
+                                               log_warning("Signal '%s' in file %s in simulation %s\n", log_id(item.first), log_signal(fst_val), log_signal(sim_val));
                                                retVal = true;
                                                break;
                                        }
                                }
                        } else {
                                if (fst_val!=sim_val) {
-                                       log_warning("Signal '%s' in file '%s' in simulation '%s'\n", log_id(item.first), log_signal(fst_val), log_signal(sim_val));
+                                       log_warning("Signal '%s' in file %s in simulation '%s'\n", log_id(item.first), log_signal(fst_val), log_signal(sim_val));
                                        retVal = true;
                                }
                        }
@@ -1048,9 +1048,9 @@ struct SimWorker : SimShared
                fst->reconstructAllAtTimes(samples);
                bool initial = true;
                int cycle = 0;
-               log("Co-simulation from %zu%s to %zu%s\n", startCount, fst->getTimescaleString(), stopCount, fst->getTimescaleString());
+               log("Co-simulation from %lu%s to %lu%s\n", (unsigned long)startCount, fst->getTimescaleString(), (unsigned long)stopCount, fst->getTimescaleString());
                for(auto &time : samples) {
-                       log("Co-simulating cycle %d [%zu%s].\n", cycle, time, fst->getTimescaleString());
+                       log("Co-simulating cycle %d [%lu%s].\n", cycle, (unsigned long)time, fst->getTimescaleString());
                        for(auto &item : inputs) {
                                std::string v = fst->valueAt(item.second, time);
                                top->set_state(item.first, Const::from_string(v));
index 2c2cd71dadd280dc8257fac6ccb66030a58e8e80..da0f3b620a9976a0e0ddc017c96896f2934f2e57 100644 (file)
@@ -1,9 +1,9 @@
 read_verilog grom_computer.v grom_cpu.v alu.v ram_memory.v;
 prep -top grom_computer; 
-sim -clock clk -reset reset -fst grom.fst -vcd grom.vcd -a -n 80
+sim -clock clk -reset reset -fst grom.fst -vcd grom.vcd -n 80
 
 sim -clock clk -r grom.fst -scope grom_computer -start 25ns -stop 100ns -sim-cmp
 
 sim -clock clk -r grom.fst -scope grom_computer -stop 100ns -sim-gold
 
-sim -clock clk -r grom.fst -scope grom_computer -n 10 -sim-gate -a
+sim -clock clk -r grom.fst -scope grom_computer -n 10 -sim-gate