From 069197aeaa4dace1032ffc8ca515bbc280e2239c Mon Sep 17 00:00:00 2001 From: KrystalDelusion Date: Thu, 9 Jun 2022 14:29:21 +1200 Subject: [PATCH] Add section on sby to newstart List tasks and run through failing noskip example. Includes pictures (both fail and pass) plus .gtkw file for setting up. --- docs/examples/fifo/noskip.gtkw | 28 ++++++ docs/source/media/gtkwave_coverskip.png | Bin 0 -> 13487 bytes docs/source/media/gtkwave_noskip.png | Bin 0 -> 13593 bytes docs/source/newstart.rst | 111 ++++++++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 docs/examples/fifo/noskip.gtkw create mode 100644 docs/source/media/gtkwave_coverskip.png create mode 100644 docs/source/media/gtkwave_noskip.png diff --git a/docs/examples/fifo/noskip.gtkw b/docs/examples/fifo/noskip.gtkw new file mode 100644 index 0000000..df81a20 --- /dev/null +++ b/docs/examples/fifo/noskip.gtkw @@ -0,0 +1,28 @@ +[*] +[*] GTKWave Analyzer v3.4.0 (w)1999-2022 BSI +[*] Thu Jun 09 02:02:01 2022 +[*] +[timestart] 0 +[size] 1000 320 +[pos] -1 -1 +*-3.253757 18 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +[sst_width] 246 +[signals_width] 200 +[sst_expanded] 1 +[sst_vpaned_height] 58 +@28 +fifo.clk +@22 +fifo.data_count[4:0] +fifo.addr_diff[4:0] +@28 +fifo.ren +fifo.wen +@22 +fifo.raddr[3:0] +fifo.waddr[3:0] +@28 +fifo.rskip +fifo.wskip +[pattern_trace] 1 +[pattern_trace] 0 diff --git a/docs/source/media/gtkwave_coverskip.png b/docs/source/media/gtkwave_coverskip.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b4d4a414713738972ea59ce26f099d749fe1e3 GIT binary patch literal 13487 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 overwrite oldest data, move read pointer + assign rskip = wen && !ren && data_count >= MAX_DATA; + // read while empty => read invalid data, keep write pointer in sync + assign wskip = ren && !wen && data_count == 0; + `endif // NOSKIP + +The last few lines of output for the noskip task should be similar to the +following: + +.. code-block:: text + + SBY [fifo_noskip] engine_0: ## 0:00:00 BMC failed! + SBY [fifo_noskip] engine_0: ## 0:00:00 Assert failed in fifo: a_count_diff + SBY [fifo_noskip] engine_0: ## 0:00:00 Writing trace to VCD file: engine_0/trace.vcd + SBY [fifo_noskip] engine_0: ## 0:00:00 Writing trace to Verilog testbench: engine_0/trace_tb.v + SBY [fifo_noskip] engine_0: ## 0:00:00 Writing trace to constraints file: engine_0/trace.smtc + SBY [fifo_noskip] engine_0: ## 0:00:00 Status: FAILED + SBY [fifo_noskip] engine_0: finished (returncode=1) + SBY [fifo_noskip] summary: Elapsed clock time [H:MM:SS (secs)]: 0:00:01 (1) + SBY [fifo_noskip] summary: Elapsed process time unvailable on Windows + SBY [fifo_noskip] summary: engine_0 (abc pdr) returned FAIL + SBY [fifo_noskip] summary: counterexample trace: fifo_noskip/engine_0/trace.vcd + SBY [fifo_noskip] DONE (FAIL, rc=2) + SBY The following tasks failed: ['noskip'] + +Using the ``noskip.gtkw`` file provided, use the below command to examine the +error trace. + + gtkwave fifo_noskip/engine_0/trace.vcd noskip.gtkw + +This should result in something similar to the below image. We can immediately +see that ``data_count`` and ``addr_diff`` are different. Looking a bit deeper +we can see that in order to reach this state the read enable signal was high in +the first clock cycle while write enable is low. This leads to an underfill +where a value is read while the buffer is empty and the read address increments +to a higher value than the write address. + +.. image:: media/gtkwave_noskip.png + +During correct operation, the ``w_underfill`` witness will cover the underflow +case. Examining ``fifo_cover_oss/logfile.txt`` will reveal which trace file +includes the witness we are looking for. If this file doesn't exist, run the +code below. + + sby fifo.sby fifo_cover_oss + +Searching the file for ``w_underfill`` will reveal the below. + +.. code-block:: text + + $ grep "w_underfill" fifo_cover_oss/logfile.txt -A 1 + SBY [fifo_cover_oss] engine_0: ## 0:00:00 Reached cover statement at w_underfill in step 2. + SBY [fifo_cover_oss] engine_0: ## 0:00:00 Writing trace to VCD file: engine_0/trace2.vcd + +We can then run gtkwave with the trace file indicated to see the correct +operation as in the image below. When the buffer is empty, a read with no write +will result in the ``wksip`` signal going high, incrementing *both* read and +write addresses and avoiding underflow. + + gtkwave fifo_cover_oss/engine_0/trace2.vcd noskip.gtkw + +.. image:: media/gtkwave_coverskip.png + +For more on using the .sby file, see the :ref:`.sby reference page `. + Concurrent assertions *********************