[libre-riscv-dev] query in soc/TLB
Rishabh Jain
rishucoding at gmail.com
Fri Apr 26 11:30:41 BST 2019
sorry for replying late.
right, silly mistake from my side to miss checking nmigen repo.
now, i am comfortable with the working of AddressEncoder.py and it's
corresponding unit test.
On Fri, Apr 12, 2019 at 6:27 PM Luke Kenneth Casson Leighton <lkcl at lkcl.net>
wrote:
> On Fri, Apr 12, 2019 at 1:43 PM Rishabh Jain <rishucoding at gmail.com>
> wrote:
> >
> > hi everyone,
>
> hi rishabh
>
> > Daniel,luke: could you please look into these:
> > for file soc/TLB/src/AddressEncoder.py
> > 1. is this table for priority encoder correct?
> >
> > I3 I2 I1 I0 | O1 O0 V
> > 0 0 0 0 | x x 0
> > x x x 1 | 0 0 1
> > x x 1 0 | 0 1 1
> > x 1 0 0 | 1 0 1
> > 1 0 0 0 | 1 1 1
> >
> > i believe this table follows with line 87 and 96 of
> > soc/TLB/test/test_address_encoder.py.
> > though Jacob answered this previously, but his table was giving priority
> to
> > the highest bit.
>
> you need to read the docstring at the top of the class, in
> nmigen/lib/coding.py
>
> class PriorityEncoder:
> """Priority encode requests to binary.
>
> If any bit in ``i`` is asserted, ``n`` is low and ``o`` indicates
> the least significant
> asserted bit.
> Otherwise, ``n`` is high and ``o`` is ``0``.
> """"
>
> note it says **LEAST** significant bit. you have l3 l2 l1 l0 so the
> LEAST significant bit is on the RIGHT.
>
> so... L3=1 and l2/l1/l0=0.... therefore O=0b11... yes, i'd agree with that.
>
> > 3. how do i go about understanding the module priority encoder and
> encoder.
> > i really like nmigen having these built-in combinational ckts.. but to
> know
> > what member variables are present and how the module is working, where to
> > look?
>
> at the source code for the module, and for examples where it is used.
>
> > I am struggling with values "encoder.n" and "p_encoder.n" .. i guess
> these
> > are related to "valid input".
>
> again: read the docstring. it says "n is LOW" if any bit is asserted.
>
> n is **LOW** if any bit is asserted.
>
> > 4. I guess there is silly mistake on line 56 of AddressEncoder.py:
> > should be : "Line56: "# Multiple Match if encoder n is valid" "
>
> see above. n is **LOW** if any bit is asserted.
>
> > By Tuesday, I will be able to check other modules in TLB.
> > I appreciate the efforts put by Daniel in commenting on the code. Really
> > good comments.
>
> yeah, they are.
>
> _______________________________________________
> libre-riscv-dev mailing list
> libre-riscv-dev at lists.libre-riscv.org
> http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
>
More information about the libre-riscv-dev
mailing list