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 318] fix LDSTCompUnit
Date: Thu, 11 Jun 2020 23:22:31 +0000
Message-ID: <bug-318-13-SQ4pFQVnJd@https.bugs.libre-soc.org/> (raw)
In-Reply-To: <bug-318-13@https.bugs.libre-soc.org/>

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

--- Comment #25 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
(In reply to Cesar Strauss from comment #24)
> (In reply to Luke Kenneth Casson Leighton from comment #22)
> > the issue that needs looking at is to confirm that compldst_multi.py's
> > unit tests are properly functional: i'm just not confident that they
> > are.
> 
> Have yet to see the traces, but found this by inspection:
> 
> in load():
> 
> 591        yield dut.rd.go.eq(rd)
> 592        yield from wait_for(dut.rd.rel)
> 593        yield dut.rd.go.eq(0)
> 
> This is backwards, I think.

it's simply broken, violating the protocol by potentially leaving the rd.go HI
for more than one cycle.  it needs to be

yield from waitfor(dut.rd.rel)
yield rd.go.eq(rd)
yield
yield rd.go.eq(0)

now it *may* be the case that by coincidence there is one clock in waitfor. 
that would give the correct ptotocol behaviour by accident.

> We wait for the CompUnit to assert rel, then we
> send a one-clock pulse on the corresponding go.

yes.

> 
> I guess a solution is to simply wait on one rel signal at a time.


except this would be a different type of test.


> 
> Eventually I'll come back to write the parallel test for this.

that would be fantastic.

> Meanwhile I'll take a look at the traces, see if I can catch anything.

you can see i caught an error where go signals are wired directly to rel
signals.

this trick will force an immediate response, in parallel, and there were a
number of corner cases in LDST and ALU CompUnits.

these turned out to be that the latch covering that particular go/req was
receiving a set *and* reset on the *same cycle*, and, with set taking priority,
the latch was left in the "set" position where it should have been dropped to
low.

even L0CacheBuffer had this exact same bug.  have a look at the last few git
diffs.

-- 
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: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-17 10:08 [libre-riscv-dev] [Bug 318] New: " bugzilla-daemon
2020-05-17 10:09 ` [libre-riscv-dev] [Bug 318] " bugzilla-daemon
2020-05-17 10:10 ` bugzilla-daemon
2020-05-17 10:31 ` bugzilla-daemon
2020-05-17 10:35 ` bugzilla-daemon
2020-05-17 10:51 ` bugzilla-daemon
2020-05-17 11:02 ` bugzilla-daemon
2020-05-17 13:20 ` bugzilla-daemon
2020-05-17 14:44 ` bugzilla-daemon
2020-05-17 16:43 ` bugzilla-daemon
2020-05-17 17:06 ` bugzilla-daemon
2020-05-17 23:01 ` bugzilla-daemon
2020-05-17 23:31 ` bugzilla-daemon
2020-05-18  4:09 ` bugzilla-daemon
2020-05-18 16:26 ` bugzilla-daemon
2020-05-18 16:38 ` bugzilla-daemon
2020-05-18 16:56 ` bugzilla-daemon
2020-05-18 17:19 ` bugzilla-daemon
2020-05-20  3:09 ` bugzilla-daemon
2020-05-20  3:17 ` bugzilla-daemon
2020-05-20 14:40 ` bugzilla-daemon
2020-05-21 12:05 ` bugzilla-daemon
2020-05-21 12:58 ` bugzilla-daemon
2020-05-21 17:55 ` bugzilla-daemon
2020-05-25  0:14 ` bugzilla-daemon
2020-06-10 16:44 ` bugzilla-daemon
2020-06-10 17:20 ` bugzilla-daemon
2020-06-11 22:58 ` bugzilla-daemon
2020-06-11 23:22 ` bugzilla-daemon [this message]
2020-06-12 10:58 ` bugzilla-daemon
2020-06-12 11:13 ` bugzilla-daemon
2020-06-12 11:15 ` 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-318-13-SQ4pFQVnJd@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