[libre-riscv-dev] [Bug 154] Cell for Dependency Matrices is needed

bugzilla-daemon at libre-riscv.org bugzilla-daemon at libre-riscv.org
Mon Jan 13 01:27:55 GMT 2020


http://bugs.libre-riscv.org/show_bug.cgi?id=154

--- Comment #3 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
staf i apologise if this is wellkniwb to you already, i went through the two
truth tables and it seems that SRNand is just the logical inverted equivalent
of SRNor, *including* the so-called "instability".

when SRNAND S,R=0,0 i see that the output is *not* unstable, it is 1,1

however if there is a simultaneous transition to 1,1 *then* the output is
indeterminate.

this is exactly the same as for SRNor except all input and output inverted from
the above paragraphs.

so i see no reason at all why SRNAND should not be used, and the simplest and
quickest way to check that would be to flip Q and ~Q as outputs and put
inverters on SRLatch's inputs:

https://git.libre-riscv.org/?p=ieee754fpu.git;a=blob;f=src/nmutil/latch.py;h=84235ffada66bb4b69249e585970e5097e939277;hb=a60f0c986284e28b204c1057ba9a501353683449#l33

_s and _r can be created which will be set to ~s and ~r.

oh, ah... you can probably see straight away from that code, it is *not* an
SRNOR (it should be).  it is a priority-set SR latch which you can see at line
47:

m.d.sync += q_int.eq((q_int & ~self.r) | self.s)

also... ah :)  one thing that turned out to be very important: hum.  a register
mechanism is built-in to that code.

this you can see from the fact that line 47 is a *sync* not a comb.

it turns out that these built-in registers help avoid having to sprinkle them
consistently across the entire set of DM Cells.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-riscv-dev mailing list