Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
From: bugzilla-daemon@libre-soc.org
To: libre-riscv-dev@lists.libre-riscv.org
Subject: [libre-riscv-dev] [Bug 353] formal proof of soc.regfile classes RegFile and RegFileArray needed
Date: Thu, 28 May 2020 20:00:00 +0000
Message-ID: <bug-353-13-g2bJvxrmWn@https.bugs.libre-soc.org/> (raw)
In-Reply-To: <bug-353-13@https.bugs.libre-soc.org/>

https://bugs.libre-soc.org/show_bug.cgi?id=353

--- Comment #19 from Michael Nolan <mtnolan2640@gmail.com> ---
(In reply to Cole Poirier from comment #18)

> Further with regard to Michael's comments about needing to use Initial() and
> ResetSignal() should I wrap the if writethru..else in a "with
> m.If(init)...with m.Else()" similar to proof_fu.py? Is it the case that, if
> Initial() then do rd operations, and else do wr operations?

I don't know specifically for this module, but generally you want to make sure
that the module and control signals are initialized to a default state. 

For instance, you're going to be proving that a write to a register works sort
of like this:

with m.If(Past(rd_en)):
    comb += Assert(data_out == something)

However, on cycle 0, yosys may choose Past(rd_en) to be High, but no data will
be output because it didn't happen during the actual proof (basically, yosys
saves the past state of the signal to a register, which is then read whenever
you call Past(signal). But on cycle 0, that register has a random value)

If you wait one cycle (with m.If(~init)) before doing your assertion, you won't
have that issue because Past(signal) will return the actual value from the
cycle before.

However, if you decide to use the initial cycle to reset your register file,
you'll have other issues because you're resetting it at the same time you're
reading it, so once again your assertion will probably fail. To fix this, you'd
want to use an Assume to force rd_en (or whatever other signals you're using)
to be disabled during reset.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

  parent reply index

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-26  0:13 [libre-riscv-dev] [Bug 353] New: " bugzilla-daemon
2020-05-26  0:13 ` [libre-riscv-dev] [Bug 353] " bugzilla-daemon
2020-05-26 23:20 ` bugzilla-daemon
2020-05-27  4:12 ` bugzilla-daemon
2020-05-27 11:14 ` bugzilla-daemon
2020-05-27 16:45 ` bugzilla-daemon
2020-05-27 17:26 ` bugzilla-daemon
2020-05-27 17:42 ` bugzilla-daemon
2020-05-27 18:08 ` bugzilla-daemon
2020-05-27 18:40 ` bugzilla-daemon
2020-05-27 18:48 ` bugzilla-daemon
2020-05-27 18:56 ` bugzilla-daemon
2020-05-27 19:25 ` bugzilla-daemon
2020-05-27 19:43 ` bugzilla-daemon
2020-05-28  1:18 ` bugzilla-daemon
2020-05-28  1:33 ` bugzilla-daemon
2020-05-28  1:50 ` bugzilla-daemon
2020-05-28  2:59 ` bugzilla-daemon
2020-05-28 10:18 ` bugzilla-daemon
2020-05-28 14:18 ` bugzilla-daemon
2020-05-28 16:41 ` bugzilla-daemon
2020-05-28 19:50 ` bugzilla-daemon
2020-05-28 20:00 ` bugzilla-daemon [this message]
2020-05-28 20:27 ` bugzilla-daemon
2020-05-28 23:18 ` bugzilla-daemon
2020-05-28 23:41 ` bugzilla-daemon
2020-05-28 23:57 ` bugzilla-daemon
2020-05-30 21:41 ` bugzilla-daemon
2020-05-30 22:03 ` bugzilla-daemon
2020-05-30 22:13 ` bugzilla-daemon
2020-05-30 22:38 ` bugzilla-daemon
2020-05-31 14:12 ` bugzilla-daemon
2020-05-31 18:20 ` bugzilla-daemon
2020-06-01 17:06 ` bugzilla-daemon
2020-06-01 17:51 ` bugzilla-daemon
2020-06-01 17:52 ` bugzilla-daemon
2020-06-01 17:53 ` bugzilla-daemon
2020-06-01 17:55 ` bugzilla-daemon
2020-06-01 18:06 ` bugzilla-daemon
2020-06-01 18:07 ` bugzilla-daemon
2020-06-01 18:35 ` bugzilla-daemon
2020-06-02 12:27 ` bugzilla-daemon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-353-13-g2bJvxrmWn@https.bugs.libre-soc.org/ \
    --to=bugzilla-daemon@libre-soc.org \
    --cc=libre-riscv-dev@lists.libre-riscv.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Libre RISC-V Mailing list Archives (accessible via public-inbox)

Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev

Example config snippet for mirrors


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git