You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thanks for releasing this! I finally got around to trying it out briefly today, and had some questions about the architecture that is implemented.
I see #include of a core.p4 file in a few files, and softnpu.p4 in some others.
Are the struct fields named port specially recognized by the implementation when they are in structs named ingress_meta or egress_meta somehow? Or that are the 2nd parameter or 3rd parameter of the ingress or egress controls of the SoftNPU package?
I see an action defined as action drop() { } in some code examples, but it is empty. Is the action name drop somehow specially recognized by the compiler? What effects does invoking that action have, if so?
Are there any other architectures besides SoftNpu that x4c supports?
The text was updated successfully, but these errors were encountered:
I see #include of a core.p4 file in a few files, and softnpu.p4 in some others.
The loose idea here was that core.p4 has stuff that does not vary across architectures, and softnpu.p4 is specifically what is needed by the softnpu architecture. However, we're only now getting around to implementing an architecture beyond softnpu, so the distinction is more in anticipation of things to come rather than any constraints that exist today.
Are the struct fields named port specially recognized by the implementation when they are in structs named ingress_meta or egress_meta somehow? Or that are the 2nd parameter or 3rd parameter of the ingress or egress controls of the SoftNPU package?
The egress_metaedata_t and ingress_metadata_t types, along with the port member within those types, are expected by the softnpu architecture (but not necessarily other architectures or back ends). For example, see this part of the softnpu Rust code generation that depends on ingress_metadata_t and is initializing the output port to be filled in later by other generated code.
I see an action defined as action drop() { } in some code examples, but it is empty. Is the action name drop somehow specially recognized by the compiler? What effects does invoking that action have, if so?
This is just an artifact of these examples. drop is not specially recognized by the compiler.
Are there any other architectures besides SoftNpu that x4c supports?
Thanks for releasing this! I finally got around to trying it out briefly today, and had some questions about the architecture that is implemented.
I see #include of a core.p4 file in a few files, and softnpu.p4 in some others.
Are the struct fields named
port
specially recognized by the implementation when they are in structs namedingress_meta
oregress_meta
somehow? Or that are the 2nd parameter or 3rd parameter of the ingress or egress controls of the SoftNPU package?I see an action defined as
action drop() { }
in some code examples, but it is empty. Is the action namedrop
somehow specially recognized by the compiler? What effects does invoking that action have, if so?Are there any other architectures besides SoftNpu that x4c supports?
The text was updated successfully, but these errors were encountered: