Hi,

On Mon, Mar 23, 2015 at 12:41 PM, Henry Gomersall <h...@cantab.net> wrote:
> On 23/03/15 12:10, Sarah Mount wrote:
>

<snip>

> Well, users currently _are_ restricted to a small subset of "convertible"
> python. I would suggest this is actually more restrictive than RPython. I
> suppose the question I have is what happens at the boundary with RPython -
> can one construct an object that is crosses the boundary, with some RPython
> only methods and some general Python methods?

Ah, my mistake.

> It's worth noting the MyHDL is several overlapping things. It's first and
> foremost a library for representing hardware concurrency. If a developer is
> restricted to only a small subset of valid Python and types, the blocks that
> are described using MyHDL constructs can be converted into VHDL or Verilog.
> It allows very neat workflow - one has the full power of Python for defining
> behaviour, and then one writes the convertible code (which is verified
> against the behavioural model), and then one cosimulates the converted code,
> verifying that is doing the write thing (using a Verilog/VHDL simulator).
>

Thanks, that has certainly clarified things for me.

> > I would guess that the reason for porting MyHDL to an RPython toolchain is
> > that you don't just produce a flat Verilog file, but you also have a runtime
> > system which simulates the Verilog (or the higher level Python description)?
> > This sounds very interesting, I'm not sure how helpful the RPython GCs and
> > JIT would be in your case, but it would be interesting to hear where you
> > think a performance improvement can be made.
>
> Well, potentially, but the big win is in being allowed a broader range of
> convertible constructs. For example, there is currently no way to handle
> general iterables (only loops of the form `for i in range(N):` are allowed).
> Clearly, this is very restrictive for writing nice, expressive code.
>
> Stepping back a minute. The ultimate goal IMO would be a tool that takes a
> MyHDL instance block (that is, that represents the function of a hardware
> block), along with the associated static namespace, and converts into
> something that downstream tools can understand (VHDL or Verilog), with as
> much expressive power in the code as makes sense given the target
> restrictions.
>

Hmm. So, what I understand from this is that your current front-end
implements a very small subset of Python, you have noticed that
RPython implements a slightly larger subset of Python, so you want to
replace your front-end and maybe some internals with the RPython
equivalents? I'm not sure how well this will work. For one thing,
RPython is intended to be translated to a native format (i.e. you take
a description of an interpreter or VM in RPython and after a very long
compile you get a native executable that is your interpreter, with any
RPython internals, such as JITs and GCs, included). I'm not sure if
this is a win for you or not, because I'm not sure if an RPython
front-end can really be made to fit a MyHDL back-end, without just
re-writing the whole thing as an interpreter.

Cheers,

Sarah

-- 
Dr. Sarah Mount, Senior Lecturer, University of Wolverhampton
website:  http://www.snim2.org/
twitter: @snim2
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to