Support for Tofino pipeconfs in ECMP app

Change-Id: I34c16f5f349c480f53b1bfc6a1fd91ec5a328ee3
diff --git a/tools/test/p4src/p4-14/p4c-out/tofino/ecmp/mavericks/logs/mau.characterize.log b/tools/test/p4src/p4-14/p4c-out/tofino/ecmp/mavericks/logs/mau.characterize.log
new file mode 100644
index 0000000..ea74364
--- /dev/null
+++ b/tools/test/p4src/p4-14/p4c-out/tofino/ecmp/mavericks/logs/mau.characterize.log
@@ -0,0 +1,387 @@
++---------------------------------------------------------------------+
+|  Log file: mau.characterize.log                                     |
+|  Compiler version: 5.1.0 (fca32d1)                                  |
+|  Created on: Thu Sep  7 14:48:49 2017                               |
++---------------------------------------------------------------------+
+
+Match+Action Resource Usage
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+|            1             |    2    |   3   |    4    |  5   |        6        |   7   |         8          |       9       |    10   |   11  |          12         |     13     |       14      |       15      |   16   |      17     |      18      |      19      |       20      |       21      |        22       |
+|          Table           |   Dir   | Stage |    P4   | Mem  |      Total      | Total |       Table        |     Match     |   TCAM  |  SRAM |        Match        |    Imm.    |      TCAM     |      SRAM     |   P4   |    Action   |    Ideal     |    Actual    |      TCAM     |      SRAM     |       SRAM      |
+|           Name           |         |       |  Lookup | Type |      SRAMs      | TCAMs |      Entries       |      Bits     |  Over-  | Over- |       Overhead      |   Action   |      Bits     |      Bits     | Action |     Bits    |    Match     |    Match     |     Match     |     Match     |      Action     |
+|                          |         |       | Type(s) |      | TOT(M/A/S/MT/I) |       |     Requested      |      Per      |   head  |  head |      Structure      |    Data    |      Per      |      Per      |  Bits  |     Per     |   Entries-   |   Entries-   |    Packing    |    Packing    |     Packing     |
+|                          |         |       |         |      |     (legend     |       |         /          |     Entry     |   Bits  |  Bits | NT/AI/AD/M/S/SL/V/I |     in     |     Entry     |     Entry     |        |    Entry    |    Number    |    Number    |      Eff.     |      Eff.     |       Eff.      |
+|                          |         |       |         |      |      below)     |       |     Allocated      |   R/A(diff)   |   Per   |  Per  |       (legend       |  Overhead  |   R/A(diff)   |   R/A(diff)   |        |  R/A(diff)  |     Per      |     Per      |     Ideal/    |     Ideal/    |      Ideal/     |
+|                          |         |       |         |      |                 |       |       (diff)       |               |  Entry  | Entry |        below)       | R/A(diff)  |               |               |        |             |    Memory    |    Memory    |     Actual    |     Actual    |      Actual     |
+|                          |         |       |         |      |                 |       |                    |               | ver/vld |       |                     |            |               |               |        |             |    Units     |    Units     |               |               |                 |
+|                          |         |       |         |      |                 |       |                    |               |         |       |                     |            |               |               |        |             |    (bits)    |    (bits)    |               |               |                 |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+|       ingress_pkt        | ingress |   0   |         |  -   |  0 (0/0/0/0/0)  |   0   |  1024 / 1 (-1023)  |   0 / 0 (0)   |    0    |   0   |   0/0/0/0/0/0/0/0   | 0 / 0 (0)  |   0 / 0 (0)   |   0 / 0 (0)   |   0    |  0 / 0 (0)  |  0 in 0 (0)  |  1 in 0 (0)  |     - / -     |     - / -     |      - / -      |
+|        egress_pkt        |  egress |   0   |         |  -   |  0 (0/0/0/0/0)  |   0   |  1024 / 1 (-1023)  |   0 / 0 (0)   |    0    |   0   |   0/0/0/0/0/0/0/0   | 0 / 0 (0)  |   0 / 0 (0)   |   0 / 0 (0)   |   0    |  0 / 0 (0)  |  0 in 0 (0)  |  1 in 0 (0)  |     - / -     |     - / -     |      - / -      |
+|      stage 0 totals      |    -    |   -   |    -    |  -   |  0 (0/0/0/0/0)  |   0   |         -          |       -       |    -    |   -   |          -          |     -      |       -       |       -       |   -    |      -      |      -       |      -       |       -       |       -       |        -        |
+|                          |         |       |         |      |                 |       |                    |               |         |       |                     |            |               |               |        |             |              |              |               |               |                 |
+|          table0          | ingress |   1   | ternary | tcam |  4 (0/1/2/0/1)  |   3   |   512 / 512 (0)    | 121 / 121 (0) |    4    |   5   |   1/4/0/0/0/0/0/0   | 0 / 0 (0)  | 125 / 132 (7) |   5 / 8 (3)   |   16   | 16 / 16 (0) | 1 in 3 (132) | 1 in 3 (132) | 91.7% / 91.7% |     - / -     | 100.0% / 100.0% |
+|      stage 1 totals      |    -    |   -   |    -    |  -   |  4 (0/1/2/0/1)  |   3   |         -          |       -       |    -    |   -   |          -          |     -      |       -       |       -       |   -    |      -      |      -       |      -       |       -       |       -       |        -        |
+|                          |         |       |         |      |                 |       |                    |               |         |       |                     |            |               |               |        |             |              |              |               |               |                 |
+|     ecmp_group_table     | ingress |   2   |  exact  | sram |  5 (3/0/2/0/0)  |   0   | 1024 / 3072 (2048) | 32 / 22 (-10) |    0    |   20  |   0/0/0/0/0/0/4/16  | 9 / 16 (7) |   0 / 0 (0)   | 52 / 42 (-10) |   9    |  0 / 0 (0)  | 3 in 1 (128) | 1 in 1 (128) |     - / -     | 96.1% / 29.7% |      - / -      |
+|      stage 2 totals      |    -    |   -   |    -    |  -   |  5 (3/0/2/0/0)  |   0   |         -          |       -       |    -    |   -   |          -          |     -      |       -       |       -       |   -    |      -      |      -       |      -       |       -       |       -       |        -        |
+|                          |         |       |         |      |                 |       |                    |               |         |       |                     |            |               |               |        |             |              |              |               |               |                 |
+| ingress_port_count_table | ingress |   3   |         |  -   |  2 (0/0/2/0/0)  |   0   |  1024 / 1 (-1023)  |   0 / 0 (0)   |    0    |   0   |   0/0/0/0/0/0/0/0   | 0 / 0 (0)  |   0 / 0 (0)   |   0 / 0 (0)   |   0    |  0 / 0 (0)  |  0 in 0 (0)  |  1 in 0 (0)  |     - / -     |     - / -     |      - / -      |
+| egress_port_count_table  | ingress |   3   |         |  -   |  2 (0/0/2/0/0)  |   0   |  1024 / 1 (-1023)  |   0 / 0 (0)   |    0    |   0   |   0/0/0/0/0/0/0/0   | 0 / 0 (0)  |   0 / 0 (0)   |   0 / 0 (0)   |   0    |  0 / 0 (0)  |  0 in 0 (0)  |  1 in 0 (0)  |     - / -     |     - / -     |      - / -      |
+|      stage 3 totals      |    -    |   -   |    -    |  -   |  4 (0/0/4/0/0)  |   0   |         -          |       -       |    -    |   -   |          -          |     -      |       -       |       -       |   -    |      -      |      -       |      -       |       -       |       -       |        -        |
+|                          |         |       |         |      |                 |       |                    |               |         |       |                     |            |               |               |        |             |              |              |               |               |                 |
+|      overall totals      |    -    |   -   |    -    |  -   |  13 (3/1/8/0/1) |   3   |         -          |       -       |    -    |   -   |          -          |     -      |       -       |       -       |   -    |      -      |      -       |      -       |       -       |       -       |        -        |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+Total SRAMs Legend:
+TOT (M/A/S/MT/I)
+TOT = Total
+M = Match
+A = Action
+S = Statistics
+MT = Meter / Stateful / Selection
+I = Ternary Indirection
+
+Match Overhead Structure Legend:
+NT/AI/AD/M/S/SL/V/I
+NT = Next Table Pointer
+AI = Action Instruction Pointer
+AD = Action Data Pointer
+M = Meter/Selection/Stateful Pointer
+S = Statistics Pointer
+SL = Selection Length
+V = Entry Version
+I = Immediate Action Data
+
+
+
+
+
++----------------------------------------------------------------+
+    OVERHEAD STRUCTURES
++----------------------------------------------------------------+
+
++----------------------------------------------------------------+
+   ingress_port_count_table
++----------------------------------------------------------------+
+Match Overhead:
+  Field --instruction_address-- [1:0] (2 bits)
+  Field --statistics_pointer-- [19:0] (20 bits)
+
+  Total bits: 22
++----------------------------------------------------------------+
+   egress_port_count_table
++----------------------------------------------------------------+
+Match Overhead:
+  Field --statistics_pointer-- [19:0] (20 bits)
+
+  Total bits: 20
++----------------------------------------------------------------+
+   ingress_pkt
++----------------------------------------------------------------+
+Match Overhead:
+  Field --instruction_address-- [1:0] (2 bits)
+
+  Total bits: 2
++----------------------------------------------------------------+
+   egress_pkt
++----------------------------------------------------------------+
+Match Overhead:
+  Field --instruction_address-- [1:0] (2 bits)
+
+  Total bits: 2
++----------------------------------------------------------------+
+   table0
++----------------------------------------------------------------+
+Match Overhead:
+  Field --next_table-- [0:0] (1 bits)
+  Field --instruction_address-- [3:0] (4 bits)
+
+  Total bits: 5
++----------------------------------------------------------------+
+   ecmp_group_table
++----------------------------------------------------------------+
+Match Overhead:
+  Field --version_valid-- [3:0] (4 bits)
+  Field --immediate-- [15:0] (16 bits)
+
+  Total bits: 20
+
+
+
+
+
++----------------------------------------------------------------+
+   ingress_port_count_table__action__:
++----------------------------------------------------------------+
+
+Action count_ingress:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 1
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- is 0 bits   : in bits [127:0]
+]
+
++----------------------------------------------------------------+
+   egress_port_count_table__action__:
++----------------------------------------------------------------+
+
+Action count_egress:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 1
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- is 0 bits   : in bits [127:0]
+]
+
++----------------------------------------------------------------+
+   ingress_pkt__action__:
++----------------------------------------------------------------+
+
+Action _packet_out:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 1
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- is 0 bits   : in bits [127:0]
+]
+
++----------------------------------------------------------------+
+   egress_pkt__action__:
++----------------------------------------------------------------+
+
+Action add_packet_in_hdr:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 1
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- is 0 bits   : in bits [127:0]
+]
+
++----------------------------------------------------------------+
+   table0__action__:
++----------------------------------------------------------------+
+
+Action set_egress_port:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 8
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 7
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [127:121]
+       Field port [8:0]          : in bits [120:112]
+  entry_number : 6
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [111:105]
+       Field port [8:0]          : in bits [104:96]
+  entry_number : 5
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [95:89]
+       Field port [8:0]          : in bits [88:80]
+  entry_number : 4
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [79:73]
+       Field port [8:0]          : in bits [72:64]
+  entry_number : 3
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [63:57]
+       Field port [8:0]          : in bits [56:48]
+  entry_number : 2
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [47:41]
+       Field port [8:0]          : in bits [40:32]
+  entry_number : 1
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [31:25]
+       Field port [8:0]          : in bits [24:16]
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- [6:0]   : in bits [15:9]
+       Field port [8:0]          : in bits [8:0]
+]
+
+
+Action ecmp_group:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 8
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 7
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [127:112]
+  entry_number : 6
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [111:96]
+  entry_number : 5
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [95:80]
+  entry_number : 4
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [79:64]
+  entry_number : 3
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [63:48]
+  entry_number : 2
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [47:32]
+  entry_number : 1
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [31:16]
+  entry_number : 0
+  field_list : [
+    ]
+       Field groupId [15:0]   : in bits [15:0]
+]
+
+
+Action send_to_cpu:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 8
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 7
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [127:112]
+  entry_number : 6
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [111:96]
+  entry_number : 5
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [95:80]
+  entry_number : 4
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [79:64]
+  entry_number : 3
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [63:48]
+  entry_number : 2
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [47:32]
+  entry_number : 1
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [31:16]
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [15:0]
+]
+
+
+Action _drop:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 8
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 7
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [127:112]
+  entry_number : 6
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [111:96]
+  entry_number : 5
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [95:80]
+  entry_number : 4
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [79:64]
+  entry_number : 3
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [63:48]
+  entry_number : 2
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [47:32]
+  entry_number : 1
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [31:16]
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- [15:0]   : in bits [15:0]
+]
+
++----------------------------------------------------------------+
+   ecmp_group_table__action__:
++----------------------------------------------------------------+
+
+Action set_egress_port:
+---------------------------
+Pack Format:
+  table_word_width: 128
+  memory_word_width: 128
+  entries_per_table_word: 1
+  number_memory_units_per_table_word: 1
+  entry_list: [
+  entry_number : 0
+  field_list : [
+    ]
+       Field --padding-- is 0 bits   : in bits [127:0]
+]
+
+