blob: 05acab6aab4eb4f3960c312c8f6b899cb6cae99d [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
package prim_pad_wrapper_pkg;
typedef enum logic [2:0] {
BidirStd = 3'h0, // Standard bidirectional pad
BidirTol = 3'h1, // Voltage tolerant pad
BidirOd = 3'h2, // Open-drain capable pad
InputStd = 3'h3, // Input-only pad
AnalogIn0 = 3'h4, // Analog input pad
AnalogIn1 = 3'h5, // Analog input pad
DualBidirTol = 3'h6 // Dual Voltage tolerant pad
} pad_type_e;
typedef enum logic [1:0] {
NoScan = 2'h0,
ScanIn = 2'h1,
ScanOut = 2'h2
} scan_role_e;
// Pad attributes
parameter int DriveStrDw = 4;
parameter int SlewRateDw = 2;
typedef struct packed {
logic [DriveStrDw-1:0] drive_strength; // Drive strength (0000: weakest, 1111: strongest).
logic [SlewRateDw-1:0] slew_rate; // Slew rate (0: slowest, 11: fastest).
logic od_en; // Open-drain enable
logic schmitt_en; // Schmitt trigger enable.
logic keep_en; // Keeper enable.
logic pull_select; // Pull direction (0: pull down, 1: pull up).
logic pull_en; // Pull enable.
logic virt_od_en; // Virtual open drain enable.
logic invert; // Input/output inversion.
} pad_attr_t;
parameter int AttrDw = $bits(pad_attr_t);
// Power OK signals (library dependent)
parameter int PokDw = 8;
typedef logic [PokDw-1:0] pad_pok_t;
endpackage : prim_pad_wrapper_pkg