| // Copyright 2023 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| |
| /** |
| * Tile-Link package |
| */ |
| package tl_package; |
| // Bit-vector definitions |
| typedef logic [2:0] opcode_t; |
| typedef logic [2:0] param_t; |
| typedef logic [3:0] combined_atomic_param_t; |
| typedef logic [3:0] size_t; |
| |
| // Enum definitions |
| typedef enum opcode_t { |
| APutFullData = 3'd0, |
| APutPartialData = 3'd1, |
| AArithmeticData = 3'd2, |
| ALogicalData = 3'd3, |
| AGet = 3'd4, |
| AIntent = 3'd5, |
| AAcquireBlock = 3'd6, |
| AAcquirePerm = 3'd7 |
| } a_opcode_e; |
| |
| typedef enum opcode_t { |
| BPutFullData = 3'd0, |
| BPutPartialData = 3'd1, |
| BArithmeticData = 3'd2, |
| BLogicalData = 3'd3, |
| BGet = 3'd4, |
| BIntent = 3'd5, |
| BProbeBlock = 3'd6, |
| BProbePerm = 3'd7 |
| } b_opcode_e; |
| |
| typedef enum opcode_t { |
| CAccessAck = 3'd0, |
| CAccessAckData = 3'd1, |
| CHintAck = 3'd2, |
| CProbeAck = 3'd4, |
| CProbeAckData = 3'd5, |
| CRelease = 3'd6, |
| CReleaseData = 3'd7 |
| } c_opcode_e; |
| |
| typedef enum opcode_t { |
| DAccessAck = 3'd0, |
| DAccessAckData = 3'd1, |
| DHintAck = 3'd2, |
| DGrant = 3'd4, |
| DGrantData = 3'd5, |
| DReleaseAck = 3'd6 |
| } d_opcode_e; |
| |
| typedef enum param_t { |
| ArithmeticAtomicParamMin = 3'd0, |
| ArithmeticAtomicParamMax = 3'd1, |
| ArithmeticAtomicParamMinU = 3'd2, |
| ArithmeticAtomicParamMaxU = 3'd3, |
| ArithmeticAtomicParamAdd = 3'd4 |
| } arithmetic_data_param_e; |
| |
| typedef enum param_t { |
| LogicalAtomicParamXor = 3'd0, |
| LogicalAtomicParamOr = 3'd1, |
| LogicalAtomicParamAnd = 3'd2, |
| LogicalAtomicParamSwap = 3'd3 |
| } logical_data_param_e; |
| |
| |
| typedef enum combined_atomic_param_t { |
| CombinedAtomicParamMin = 4'd0, |
| CombinedAtomicParamMax = 4'd1, |
| CombinedAtomicParamMinU = 4'd2, |
| CombinedAtomicParamMaxU = 4'd3, |
| CombinedAtomicParamAdd = 4'd4, |
| CombinedAtomicParamXor = 4'd8, |
| CombinedAtomicParamOr = 4'd9, |
| CombinedAtomicParamAnd = 4'd10, |
| CombinedAtomicParamSwap = 4'd11 |
| } combined_atomic_param_e; |
| |
| typedef enum param_t { |
| PrefetchRead = 3'd0, |
| PrefetchWrite = 3'd1 |
| } hint_param_e; |
| |
| typedef enum param_t { |
| toT = 3'd0, |
| toB = 3'd1, |
| toN = 3'd2 |
| } cap_param_e; |
| |
| typedef enum param_t { |
| NtoB = 3'd0, |
| NtoT = 3'd1, |
| BtoT = 3'd2 |
| } grow_param_e; |
| |
| typedef enum param_t { |
| TtoB = 3'd0, |
| TtoN = 3'd1, |
| BtoN = 3'd2 |
| } prune_param_e; |
| |
| typedef enum param_t { |
| TtoT = 3'd3, |
| BtoB = 3'd4, |
| NtoN = 3'd5 |
| } report_param_e; |
| |
| endpackage |