[libre-riscv-dev] [Bug 316] bperm TODO

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Fri May 22 01:06:51 BST 2020


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

--- Comment #91 from Cole Poirier <colepoirier at gmail.com> ---
(In reply to Cole Poirier from comment #90)
> (In reply to Michael Nolan from comment #89)
> > (In reply to Cole Poirier from comment #88)
> > > (In reply to Luke Kenneth Casson Leighton from comment #87)
> > > > (In reply to Cole Poirier from comment #86)
> > > > > Is there a way to access the values of the Signals instead of just their
> > > > > type and name? It would be really useful if I could print the values of
> > > > > signals while trying to get the test to pass.
> > > > 
> > > > x = yield val
> > > > 
> > > > then print (x)
> > > 
> > > I have tried doing the following:
> > > ```
> > > def elaborate(self, platform):
> > >     m = Module()
> > >     width = yield self.width
> > >     rs = yield self.rs
> > >     ra = yield self.ra
> > >     rb = yield self.rb
> > >     print("width: ", width, "rs: ", rs, "rb: ", rb, "ra: ", ra)
> > > ```
> > > 
> > > Which unfortunately does not print the values, but gives me the following
> > > error:
> > > ```
> > > File "/home/colepoirier/src/nmigen/nmigen/hdl/ir.py", line 50, in get
> > >     raise AttributeError("Object {!r} cannot be elaborated".format(obj))
> > > AttributeError: Object <generator object Bpermd.elaborate at 0x7f1f4ca00750>
> > > cannot be elaborated
> > > ```
> > > 
> > > What am I doing wrong?
> > 
> > Sorry, the x = yield sig only works inside the simulator. There's not a way
> > to print the value of a signal from inside the module itself
> > 
> > This should make sense, the module is *building* a circuit, it has no idea
> > what the values of any of the parts of the circuit are while it's being
> > built.
> 
> I see. Thank you, that does indeed make sense. I've been working on this for
> a few hours and am struggling. I'm going to try writing this in regular
> python code so I can debug print the values, and properly understand how
> endian-ness affects the code.

At this point my head is going in circles over and over with respect to the
endianness of python and the inputs to the function, and I keep flipping from
one understanding to another, essentially leaving me with no understanding...
I'd describe it as unpleasant and unhelpful self recursion. So this seems like
a good point to stop today, and try my luck with understanding endianness again
tomorrow.

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


More information about the libre-riscv-dev mailing list