<div dir="ltr"><div><div><div><div><div><div><div>Hi David,<br><br></div>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.<br></div>I was not able to reproduce this statement: "When I tried the same with <i>layout</i> & <i>instance_count</i>, 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".<br><br></div>2) As for a register example, there is one (along with a small demo) here: <a href="https://github.com/p4lang/tutorials/tree/master/examples/register">https://github.com/p4lang/tutorials/tree/master/examples/register</a><br></div>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).<br><br></div><div>3) You can use the register_write and register_read primitive:<br></div><div><i>register_write(<register array>, <index>, <value>)<br></i></div><div><i>register_read(<field destination>, <register array>, <index>)<br></i></div><div>These primitives are not described in the spec right now, but they will be in the next P4v1 spec version that I mentioned earlier.<br></div><div><br></div>Let us know if you need help with the register example.<br><br></div>Best,<br><br></div>Antonin<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 16, 2016 at 9:12 PM, David Gatting <span dir="ltr"><<a href="mailto:gattingd@gmail.com" target="_blank">gattingd@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>Are there any examples of "register" usage ?</div><div><br></div><div>1) I tried out register with <i>layout</i> & <i>direct</i> keywords and got an error (shown below) while compiling the p4 file.</div><div><br></div><div><b>CRITICAL:gen_json:registers with layout not supported<br></b></div><div><br></div><div>When I tried the same with <i>layout</i> & <i>instance_count</i>, I didn't get any error. Is this only partially supported ?</div><div><br></div><div>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).</div><div><br></div><div>3) While processing the packet, I would like to modify few fields of a register entry as part of one of the actions.</div><div><br></div><div>Is there any working example showing all this ?</div><div><br></div><div>Thanks,</div><div>D.</div></div>
<br>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/<wbr>listinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div>