oxidecomputer / p4

A P4 compiler
Mozilla Public License 2.0
111 stars 5 forks source link

Relative Imports, Better SoftNpu Testing, Start Docs #13

Closed rcgoodfellow closed 1 year ago

rcgoodfellow commented 1 year ago

This PR includes the following.

Relative #include<> paths

This commit makes it so that an include like the following

#include <headers.p4>

Will just work when headers.p4 is at the same directory path as the file that is including it

Better SoftNpu Testing

The SoftNpu implementation in the test directory was a really leaky abstraction. It required the test writer to be intimately familiar with xfr mechanics, was extremely verbose, and error prone to use in terms of setting up phys, rings, pipelines etc.

This commit replaces the SoftNpu implementation in the test directory. The new implementation that makes it much easier and less error prone to write tests. There is also a blocking I/O interface now, which eliminates the need for inserting sleeps in CI tests to ensure packets have propagated.

This new SoftNpu interface also provides the basis for providing runnable documentation for users.

Start Comprehensive Documentation

This comes in the form of the x4c book. This initial commit has the first chapter that covers installation, P4 basics and running a hello world program.

SoftNpu metadata name changes

In an effort to conform more to P4 naming conventions, the following SoftNpu metadata structure names were changed.