UNCLASSIFIED
Hi,
I think I may have confused things in the last email by swapping topics
mid email.
The following discussion was in reference to the WCI and properties
transferred over it:
I was attempting to describe the issue of packing/unpacking of non Nx8it
properties.
While on the topic of number of wires.
When the property of a HDL worker does not use all the bits of a
standard type it would be nice to be able to describe in the xml how
many bits are actually used. This would also allow range checking and
automatic register file code (register packing/unpacking) generation.
An example:
We have a frequency tuning word (FTW) for a DDS core implemented in a
HDL worker. The FTW port on the core is 21 bits wide. Thus the FTW
property is ULong but the valid range is only 0 to 2^21-1.
As some properties may be signed, one solution would be max and min
xml attributes.
As for the WSI data width:
Originally:
I wanted to force 8-bit bytes even when the data values are never 8 bits
so I didn't have to deal with MDataInfo.
Then:
After yesterdays discussion, I was happy to just add some code in my
worker to map MData and MDataInfo to an array of 16 bit bytes.
Now:
For maintainability reasons I'd like to be able to force 8 bit bytes so
there is a constant number of bytes enables.
The reasoning goes something like this. Suppose I have a number of
workers which use a protocol where the smallest operation argument is
16bits resulting in a byte width of 16. Also assume that not all workers
use all the operations. E.g. some process samples and simply pass on all
other operations. Now lets say in the future we need to add an operation
that is used only by a few workers and has a byte sized argument thus
doubling the number of byte enables on the WSI. If we don't have a
constant number of byte enables then all workers need updating not just
the ones which use the new operation.
Follow?
Conclusion:
I'd like to be able to force the byte width.
Cheers,
Troy
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of James Kulp
Sent: Tuesday, 13 March 2012 11:42 PM
To: [email protected]
Subject: Re: [opencpi_dev] Mapping of Operation Name to
HDLopcode[SEC=UNCLASSIFIED]
Troy,
I assume we would provide an alias as an array of "bytes" where "byte"
was the byte size of the interface (i.e. input [7:0] MDataIn[3:0] in
verilog for a 32 bit wide data path with 8 bit bytes). But for the
stream_protocol with a DataValueWidth is 16, it would be:
input [15:0] MDataIn[1:0];
Or are you looking to force 8-bit bytes even when the data values are
never 8 bits?
(i.e. when DataValueWidth is> 8?)
Jim
On 3/12/12 6:57 PM, Ziersch, Troy (Contractor) wrote:
UNCLASSIFIED
Hi Jim,
If MDataOut and SDataIn are arrays of bytes rather than a flat vector
then the byte size becomes obvious.
While on the topic of number of wires.
When the property of a HDL worker does not use all the bits of a
standard type it would be nice to be able to describe in the xml how
many bits are actually used. This would also allow range checking and
automatic register file code (register packing/unpacking) generation.
An example:
We have a frequency tuning word (FTW) for a DDS core implemented in a
HDL worker. The FTW port on the core is 21 bits wide. Thus the FTW
property is ULong but the valid range is only 0 to 2^21-1.
As some properties may be signed, one solution would be max and min
attributes.
Cheers,
Troy
________________________________
From: [email protected]
[mailto:[email protected]] On Behalf Of James Kulp
Sent: Saturday, 10 March 2012 1:23 AM
To: [email protected]
Subject: Re: [opencpi_dev] Mapping of Operation Name to HDL
opcode[SEC=UNCLASSIFIED]
Hi Troy,
The opcode mapping has been added for verilog. Still being tested,
but will be pushed later today.
The byte width issue comes up due mostly to a limitation of OCP signal
configuration.
A while ago we chose to use/configure OCP to minimize wires, which
means that when the smallest units of data are, say, 16 bits, then to
use OCP byte enables for 16 bit quanities, we need to split the data
between the MData and MDataInfo fields. The hack you saw was indeed
to force byte enables to correspond to 8 bits of MData and avoid
MDataInfo entirely, in order to accomodate preexisting code.
To make this "better" we should provide/generate aliases to create new
Data signals that appropriately combine MData and MDataInfo, say
MDataOut and SDataIn.
This has the advantage of conveniently dealing with non-power-of-two
packed data while still minimizing wires. It still has the (as now)
disadvantage that implementations dealing with non-8-bit quanities
have to remember that "byte" is whatever the minimal unit of data is
(9 bits,
12 bits, 16 bits, etc.). But there are real use-cases for this.
Does this make sense to you (or anyone else)?
Jim
On 3/9/12 12:43 AM, Ziersch, Troy (Contractor) wrote:
UNCLASSIFIED
Hi,
A couple more xml questions.
Is there a way to define the mapping of operations named in a
protocol to the opcode which appears on the WSI interface.
i.e. map Protocol element / Operation element / Name property to
WSI
opcodes.
Also, I'd also like to set byteWidth=8 on a WSI interface but
that
property does not seem to be settable for streamInterface elements and
defaults to the smallest argument in the protocol used by the
interface. It seems that someone else has used the same work around as
me in opencpi/components/specs/stream_protocol.xml by adding an
operation with a byte sized argument.
Thanks,
Troy
IMPORTANT: This email remains the property of the Department of
Defence and is subject to the jurisdiction of section 70 of the Crimes
Act 1914. If you have received this email in error, you are requested
to contact the sender and delete the email.
_______________________________________________
opencpi_dev mailing list
[email protected]
http://lists.opencpi.org/listinfo.cgi/opencpi_dev-opencpi.org
IMPORTANT: This email remains the property of the Department of
Defence and is subject to the jurisdiction of section 70 of the Crimes
Act 1914.
If you have received this email in error, you are requested to contact
the sender and delete the email.
_______________________________________________
opencpi_dev mailing list
[email protected]
http://lists.opencpi.org/listinfo.cgi/opencpi_dev-opencpi.org
_______________________________________________
opencpi_dev mailing list
[email protected]
http://lists.opencpi.org/listinfo.cgi/opencpi_dev-opencpi.org
IMPORTANT: This email remains the property of the Department of Defence
and is subject to the jurisdiction of section 70 of the Crimes Act 1914.
If you have received this email in error, you are requested to contact
the sender and delete the email.
_______________________________________________
opencpi_dev mailing list
[email protected]
http://lists.opencpi.org/listinfo.cgi/opencpi_dev-opencpi.org