Project Full coverage report
Current view: Cores-VeeR-EL2—Cores-VeeR-EL2—design—dmi—dmi_mux.v Coverage Hit Total
Test Date: 19-09-2024 Toggle 100.0% 17 17
Test: all Branch 0.0% 0 0

            Line data    Source code
       1              : // DMI core aperture ranges from 0x00 to 0x4F. Addresses starting from 0x50
       2              : // and above are considered uncore.
       3              : 
       4              : module dmi_mux (
       5              : 
       6              :     // Uncore access enable
       7            1 :     input wire uncore_enable,
       8              : 
       9              :     // DMI upstream
      10          270 :     input  wire        dmi_en,
      11          128 :     input  wire        dmi_wr_en,
      12            3 :     input  wire [ 6:0] dmi_addr,
      13           22 :     input  wire [31:0] dmi_wdata,
      14           14 :     output wire [31:0] dmi_rdata,
      15              : 
      16              :     // DMI downstream for core
      17          262 :     output wire        dmi_core_en,
      18          124 :     output wire        dmi_core_wr_en,
      19            3 :     output wire [ 6:0] dmi_core_addr,
      20           22 :     output wire [31:0] dmi_core_wdata,
      21           13 :     input  wire [31:0] dmi_core_rdata,
      22              : 
      23              :     // DMI downstream for uncore
      24            8 :     output wire        dmi_uncore_en,
      25            4 :     output wire        dmi_uncore_wr_en,
      26            3 :     output wire [ 6:0] dmi_uncore_addr,
      27           22 :     output wire [31:0] dmi_uncore_wdata,
      28            1 :     input  wire [31:0] dmi_uncore_rdata
      29              : );
      30            7 :   logic is_uncore_aperture;
      31              : 
      32              :   // Uncore address decoder
      33              :   assign is_uncore_aperture = (dmi_addr[6] & (dmi_addr[5] | dmi_addr[4]));
      34              : 
      35              :   // Core signals
      36              :   assign dmi_core_en        = dmi_en & ~is_uncore_aperture;
      37              :   assign dmi_core_wr_en     = dmi_wr_en & ~is_uncore_aperture;
      38              :   assign dmi_core_addr      = dmi_addr;
      39              :   assign dmi_core_wdata     = dmi_wdata;
      40              : 
      41              :   // Uncore signals
      42              :   assign dmi_uncore_en      = dmi_en & is_uncore_aperture & uncore_enable;
      43              :   assign dmi_uncore_wr_en   = dmi_wr_en & is_uncore_aperture & uncore_enable;
      44              :   assign dmi_uncore_addr    = dmi_addr;
      45              :   assign dmi_uncore_wdata   = dmi_wdata;
      46              : 
      47              :   // Read mux
      48              :   assign dmi_rdata          = is_uncore_aperture ? dmi_uncore_rdata : dmi_core_rdata;
      49              : 
      50              : endmodule