|  | // 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 |