Re: [myhdl-list] List of Signals
Brought to you by:
jandecaluwe
|
From: Vanheesbeke S. <Ste...@va...> - 2008-02-18 13:28:59
|
Terrific, this is what I looked for, and indeed as you siggest the solution was already ion other posts...
For a reference to others I send my little sample application, modified.
Thanks
<code>
from myhdl import *
def TestFunc(Clk, Reset, Enable, DataIn, DataOut):
@always(Clk.posedge, Reset.posedge)
def functionality():
if Reset:
DataOut.next = 0
elif Enable:
DataOut.next = DataIn
return functionality
def TestFixed(Clk, Reset, Enable, DataIn, DataOut, Size=3):
#Size not used in fixed implementation (fixed to 3)
Out0 = Signal(bool(0))
Out1 = Signal(bool(0))
Out2 = Signal(bool(0))
In0 = Signal(bool(0))
In1 = Signal(bool(0))
In2 = Signal(bool(0))
@always_comb
def Connect():
In0.next = DataIn
In1.next = Out0
In2.next = Out1
DataOut.next = Out2
blocks = []
blocks.append(TestFunc(Clk, Reset, Enable, In0, Out0))
blocks.append(TestFunc(Clk, Reset, Enable, In1, Out1))
blocks.append(TestFunc(Clk, Reset, Enable, In2, Out2))
return Connect, blocks
def Connect(In, Out):
@always_comb
def connect():
Out.next = In
return connect
def TestGeneric(Clk, Reset, Enable, DataIn, DataOut, Size=3):
Out = [Signal(bool(0)) for i in range(Size)]
In = [Signal(bool(0)) for i in range(Size)]
connect = []
connect.append(Connect(DataIn, In[0]))
for k in range(1,Size):
connect.append(Connect(Out[k-1], In[k]))
connect.append(Connect(Out[Size-1], DataOut))
blocks = []
for i in range(Size):
blocks.append(TestFunc(Clk, Reset, Enable, In[i], Out[i]))
return connect, blocks
def convert_TestFunc():
"""Verify testfunc conversion"""
Clk = Signal(bool(0))
Reset = Signal(bool(0))
Enable = Signal(bool(0))
DataIn = Signal(bool(0))
DataOut = Signal(bool(0))
toVerilog(TestFunc, Clk, Reset, Enable, DataIn, DataOut)
def convert_TestFixed():
Clk = Signal(bool(0))
Reset = Signal(bool(0))
Enable = Signal(bool(0))
DataIn = Signal(bool(0))
DataOut = Signal(bool(0))
toVerilog(TestFixed, Clk, Reset, Enable, DataIn, DataOut)
def convert_TestGeneric():
Clk = Signal(bool(0))
Reset = Signal(bool(0))
Enable = Signal(bool(0))
DataIn = Signal(bool(0))
DataOut = Signal(bool(0))
toVerilog(TestGeneric, Clk, Reset, Enable, DataIn, DataOut)
if __name__ == '__main__':
convert_TestFunc()
convert_TestFixed()
convert_TestGeneric()
</code>
|