blob: 5333b5e70212da7c16e089e5def7928c3fb3d35f [file] [log] [blame]
// 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