zircon: Use SV enums in zircon

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2026-02-27 16:08:57 -08:00
parent 08f6586c2e
commit b7aa9623c4
2 changed files with 80 additions and 74 deletions

View File

@@ -69,7 +69,7 @@ if (META_W != 64)
if (m_axis_meta.KEEP_W * 8 != META_W) if (m_axis_meta.KEEP_W * 8 != META_W)
$fatal(0, "Error: Interface requires byte (8-bit) granularity (instance %m)"); $fatal(0, "Error: Interface requires byte (8-bit) granularity (instance %m)");
localparam [15:0] typedef enum logic [15:0] {
ETHERTYPE_IPV4 = 16'h0800, ETHERTYPE_IPV4 = 16'h0800,
ETHERTYPE_ARP = 16'h0806, ETHERTYPE_ARP = 16'h0806,
ETHERTYPE_VLAN_C = 16'h8100, ETHERTYPE_VLAN_C = 16'h8100,
@@ -77,9 +77,10 @@ localparam [15:0]
ETHERTYPE_IPV6 = 16'h86DD, ETHERTYPE_IPV6 = 16'h86DD,
ETHERTYPE_PBB = 16'h88E7, ETHERTYPE_PBB = 16'h88E7,
ETHERTYPE_PTP = 16'h88F7, ETHERTYPE_PTP = 16'h88F7,
ETHERTYPE_ROCE = 16'h8915; ETHERTYPE_ROCE = 16'h8915
} ethertype_t;
localparam [7:0] typedef enum logic [7:0] {
PROTO_IPV6_HOPOPT = 8'd0, PROTO_IPV6_HOPOPT = 8'd0,
PROTO_ICMP = 8'd1, PROTO_ICMP = 8'd1,
PROTO_IGMP = 8'd2, PROTO_IGMP = 8'd2,
@@ -98,7 +99,8 @@ localparam [7:0]
PROTO_HIP = 8'd139, PROTO_HIP = 8'd139,
PROTO_SHIM6 = 8'd140, PROTO_SHIM6 = 8'd140,
PROTO_253 = 8'd253, PROTO_253 = 8'd253,
PROTO_254 = 8'd254; PROTO_254 = 8'd254
} proto_t;
localparam localparam
FLG_VLAN_S = 1, FLG_VLAN_S = 1,
@@ -118,41 +120,42 @@ localparam
FLG_L4_BAD_LEN = 25, FLG_L4_BAD_LEN = 25,
FLG_PARSE_DONE = 31; FLG_PARSE_DONE = 31;
localparam [4:0] typedef enum logic [4:0] {
STATE_IDLE = 5'd0, STATE_IDLE,
STATE_ETH_1 = 5'd1, STATE_ETH_1,
STATE_ETH_2 = 5'd2, STATE_ETH_2,
STATE_ETH_3 = 5'd3, STATE_ETH_3,
STATE_VLAN_1 = 5'd4, STATE_VLAN_1,
STATE_VLAN_2 = 5'd5, STATE_VLAN_2,
STATE_IPV4_1 = 5'd6, STATE_IPV4_1,
STATE_IPV4_2 = 5'd7, STATE_IPV4_2,
STATE_IPV4_3 = 5'd8, STATE_IPV4_3,
STATE_IPV4_4 = 5'd9, STATE_IPV4_4,
STATE_IPV4_5 = 5'd10, STATE_IPV4_5,
STATE_IPV4_6 = 5'd11, STATE_IPV4_6,
STATE_IPV6_1 = 5'd12, STATE_IPV6_1,
STATE_IPV6_2 = 5'd13, STATE_IPV6_2,
STATE_IPV6_3 = 5'd14, STATE_IPV6_3,
STATE_IPV6_4 = 5'd15, STATE_IPV6_4,
STATE_IPV6_5 = 5'd16, STATE_IPV6_5,
STATE_IPV6_6 = 5'd17, STATE_IPV6_6,
STATE_IPV6_7 = 5'd18, STATE_IPV6_7,
STATE_IPV6_8 = 5'd19, STATE_IPV6_8,
STATE_IPV6_9 = 5'd20, STATE_IPV6_9,
STATE_IPV6_10 = 5'd21, STATE_IPV6_10,
STATE_EXT_HDR_1 = 5'd22, STATE_EXT_HDR_1,
STATE_TCP_1 = 5'd23, STATE_TCP_1,
STATE_TCP_2 = 5'd24, STATE_TCP_2,
STATE_TCP_3 = 5'd25, STATE_TCP_3,
STATE_TCP_4 = 5'd26, STATE_TCP_4,
STATE_TCP_5 = 5'd27, STATE_TCP_5,
STATE_UDP_1 = 5'd28, STATE_UDP_1,
STATE_UDP_2 = 5'd29, STATE_UDP_2,
STATE_FINISH_1 = 5'd30, STATE_FINISH_1,
STATE_FINISH_2 = 5'd31; STATE_FINISH_2
} state_t;
logic [4:0] state_reg = STATE_IDLE, state_next; state_t state_reg = STATE_IDLE, state_next;
logic frame_reg = 1'b0, frame_next; logic frame_reg = 1'b0, frame_next;
logic run_reg = 1'b0, run_next; logic run_reg = 1'b0, run_next;

View File

@@ -86,7 +86,7 @@ function [31:0] swab32(input [31:0] data);
end end
endfunction endfunction
localparam [15:0] typedef enum logic [15:0] {
ETHERTYPE_IPV4 = 16'h0800, ETHERTYPE_IPV4 = 16'h0800,
ETHERTYPE_ARP = 16'h0806, ETHERTYPE_ARP = 16'h0806,
ETHERTYPE_VLAN_C = 16'h8100, ETHERTYPE_VLAN_C = 16'h8100,
@@ -94,9 +94,10 @@ localparam [15:0]
ETHERTYPE_IPV6 = 16'h86DD, ETHERTYPE_IPV6 = 16'h86DD,
ETHERTYPE_PBB = 16'h88E7, ETHERTYPE_PBB = 16'h88E7,
ETHERTYPE_PTP = 16'h88F7, ETHERTYPE_PTP = 16'h88F7,
ETHERTYPE_ROCE = 16'h8915; ETHERTYPE_ROCE = 16'h8915
} ethertype_t;
localparam [7:0] typedef enum logic [7:0] {
PROTO_IPV6_HOPOPT = 8'd0, PROTO_IPV6_HOPOPT = 8'd0,
PROTO_ICMP = 8'd1, PROTO_ICMP = 8'd1,
PROTO_IGMP = 8'd2, PROTO_IGMP = 8'd2,
@@ -115,7 +116,8 @@ localparam [7:0]
PROTO_HIP = 8'd139, PROTO_HIP = 8'd139,
PROTO_SHIM6 = 8'd140, PROTO_SHIM6 = 8'd140,
PROTO_253 = 8'd253, PROTO_253 = 8'd253,
PROTO_254 = 8'd254; PROTO_254 = 8'd254
} proto_t;
localparam localparam
FLG_VLAN_S = 1, FLG_VLAN_S = 1,
@@ -130,39 +132,40 @@ localparam
FLG_ESP = 11, FLG_ESP = 11,
FLG_EN = 31; FLG_EN = 31;
localparam [4:0] typedef enum logic [4:0] {
PKT_STATE_IDLE = 5'd0, PKT_STATE_IDLE,
PKT_STATE_ETH_1 = 5'd1, PKT_STATE_ETH_1,
PKT_STATE_ETH_2 = 5'd2, PKT_STATE_ETH_2,
PKT_STATE_ETH_3 = 5'd3, PKT_STATE_ETH_3,
PKT_STATE_VLAN_1 = 5'd4, PKT_STATE_VLAN_1,
PKT_STATE_VLAN_2 = 5'd5, PKT_STATE_VLAN_2,
PKT_STATE_IPV4_1 = 5'd6, PKT_STATE_IPV4_1,
PKT_STATE_IPV4_2 = 5'd7, PKT_STATE_IPV4_2,
PKT_STATE_IPV4_3 = 5'd8, PKT_STATE_IPV4_3,
PKT_STATE_IPV4_4 = 5'd9, PKT_STATE_IPV4_4,
PKT_STATE_IPV4_5 = 5'd10, PKT_STATE_IPV4_5,
PKT_STATE_IPV4_6 = 5'd11, PKT_STATE_IPV4_6,
PKT_STATE_IPV6_1 = 5'd12, PKT_STATE_IPV6_1,
PKT_STATE_IPV6_2 = 5'd13, PKT_STATE_IPV6_2,
PKT_STATE_IPV6_3 = 5'd14, PKT_STATE_IPV6_3,
PKT_STATE_IPV6_4 = 5'd15, PKT_STATE_IPV6_4,
PKT_STATE_IPV6_5 = 5'd16, PKT_STATE_IPV6_5,
PKT_STATE_IPV6_6 = 5'd17, PKT_STATE_IPV6_6,
PKT_STATE_IPV6_7 = 5'd18, PKT_STATE_IPV6_7,
PKT_STATE_IPV6_8 = 5'd19, PKT_STATE_IPV6_8,
PKT_STATE_IPV6_9 = 5'd20, PKT_STATE_IPV6_9,
PKT_STATE_IPV6_10 = 5'd21, PKT_STATE_IPV6_10,
PKT_STATE_TCP_1 = 5'd23, PKT_STATE_TCP_1,
PKT_STATE_TCP_2 = 5'd24, PKT_STATE_TCP_2,
PKT_STATE_TCP_3 = 5'd25, PKT_STATE_TCP_3,
PKT_STATE_TCP_4 = 5'd26, PKT_STATE_TCP_4,
PKT_STATE_TCP_5 = 5'd27, PKT_STATE_TCP_5,
PKT_STATE_UDP_1 = 5'd28, PKT_STATE_UDP_1,
PKT_STATE_UDP_2 = 5'd29, PKT_STATE_UDP_2,
PKT_STATE_FINISH_1 = 5'd30; PKT_STATE_FINISH_1
} pkt_state_t;
logic [4:0] pkt_state_reg = PKT_STATE_IDLE, pkt_state_next; pkt_state_t pkt_state_reg = PKT_STATE_IDLE, pkt_state_next;
logic [31:0] meta_flag_reg = '0, meta_flag_next; logic [31:0] meta_flag_reg = '0, meta_flag_next;
logic [15:0] meta_payload_len_reg = '0, meta_payload_len_next; logic [15:0] meta_payload_len_reg = '0, meta_payload_len_next;