[P4-dev] Any examples of "register" ?

Antonin Bas antonin at barefootnetworks.com
Sat Sep 17 16:49:30 EDT 2016

Hi David,

1) Registers with a "layout" attribute (as opposed to a "width" attribute)
are not supported. I believe that a new version of the P4 spec is going to
be released, which will not mention the "layout" attribute.
I was not able to reproduce this statement: "When I tried the same with
*layout* & *instance_count*, I didn't get any error." I always get the
CRITICAL error message whenever I use the "layout" attribute. If you could
provide a P4 program that supports your statement, that would be great; I
would be able to fix the compiler so that it always rejects "layout".

2) As for a register example, there is one (along with a small demo) here:
Since only the "width" attribute is supported, if you need to store
multiple fields in a register entry, you actually need to instantiate
multiple register arrays in P4 (one per field).

3) You can use the register_write and register_read primitive:

*register_write(<register array>, <index>, <value>)*

*register_read(<field destination>, <register array>, <index>)*
These primitives are not described in the spec right now, but they will be
in the next P4v1 spec version that I mentioned earlier.

Let us know if you need help with the register example.



On Fri, Sep 16, 2016 at 9:12 PM, David Gatting <gattingd at gmail.com> wrote:

> Hi,
> Are there any examples of "register" usage ?
> 1) I tried out register with *layout* & *direct* keywords and got an
> error (shown below) while compiling the p4 file.
> *CRITICAL:gen_json:registers with layout not supported*
> When I tried the same with *layout* & *instance_count*, I didn't get any
> error. Is this only partially supported ?
> 2) How do I use runtime_CLI.py to do register write and read ? especially
> if register with layout where there could be multiple fields. I tried
> "register_write <register_name> <index> <val>" (on a register with width
> and instance_count, however write failed, complaining that index in
> invalid).
> 3) While processing the packet, I would like to modify few fields of a
> register entry as part of one of the actions.
> Is there any working example showing all this ?
> Thanks,
> D.
> _______________________________________________
> P4-dev mailing list
> P4-dev at lists.p4.org
> http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.p4.org/pipermail/p4-dev_lists.p4.org/attachments/20160917/93fd5ae6/attachment-0002.html>

More information about the P4-dev mailing list