mirror of
https://github.com/myhdl/myhdl.git
synced 2024-12-14 07:44:38 +08:00
55 lines
1.3 KiB
ReStructuredText
55 lines
1.3 KiB
ReStructuredText
|
.. currentmodule:: myhdl
|
||
|
|
||
|
.. _new09:
|
||
|
|
||
|
***********************
|
||
|
What's new in MyHDL 0.9
|
||
|
***********************
|
||
|
|
||
|
:Author:
|
||
|
|
||
|
Interfaces
|
||
|
===========
|
||
|
|
||
|
Rationale
|
||
|
---------
|
||
|
Complex designs often have many signals (ports) that
|
||
|
are passed to different levels of hierarchy. Typically
|
||
|
many of the signals can logically be grouped together.
|
||
|
Grouping the signals into an *interface* simplifies the
|
||
|
code, improves efficiency, and reduces errors.
|
||
|
|
||
|
Previous versions supported /interfaces/ for modeling
|
||
|
and for conversion if the **attributes** were locally
|
||
|
referenced in a MyHDL module. The proposed solution
|
||
|
will convert an example like the following:
|
||
|
|
||
|
def complex_mult(clock,reset,a,b,c):
|
||
|
|
||
|
@always_seq(clock.posedge,reset=reset)
|
||
|
def rtl_mult():
|
||
|
c.real.next = (a.real*b.real) - (a.imag*b.imag)
|
||
|
c.imag.next = (a.real*b.imag) + (a.imag*b.real)
|
||
|
|
||
|
return rtl_mult
|
||
|
|
||
|
|
||
|
Solution
|
||
|
--------
|
||
|
The proposed solution is to create uniques names for
|
||
|
attributes which are type Signal and used by a module.
|
||
|
The converter will create a unique name by using the
|
||
|
name of the parent and the name of the attribute along
|
||
|
with the name of the MyHDL module instance (if applicable).
|
||
|
|
||
|
Conversion
|
||
|
----------
|
||
|
|
||
|
|
||
|
See also
|
||
|
--------
|
||
|
For additional information see the original proposal `mep-107`_.
|
||
|
|
||
|
.. _mep-107: http://http://myhdl.org/doku.php/meps:mep-107
|
||
|
|