|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  | // | 
|  | // Wrapper for scan sync and clock gating cell | 
|  |  | 
|  | module clkmgr_root_ctrl | 
|  | import clkmgr_pkg::*; | 
|  | import prim_mubi_pkg::mubi4_t; | 
|  | ( | 
|  | input clk_i, | 
|  | input rst_ni, | 
|  |  | 
|  | input mubi4_t scanmode_i, | 
|  | input async_en_i, | 
|  |  | 
|  | output logic en_o, | 
|  | output logic clk_o | 
|  | ); | 
|  |  | 
|  | mubi4_t scanmode; | 
|  | prim_mubi4_sync #( | 
|  | .NumCopies(1), | 
|  | .AsyncOn(0) | 
|  | ) u_scanmode_sync  ( | 
|  | .clk_i(1'b0),  //unused | 
|  | .rst_ni(1'b1), //unused | 
|  | .mubi_i(scanmode_i), | 
|  | .mubi_o({scanmode}) | 
|  | ); | 
|  |  | 
|  | prim_clock_gating_sync u_cg ( | 
|  | .clk_i(clk_i), | 
|  | .rst_ni(rst_ni), | 
|  | .test_en_i(prim_mubi_pkg::mubi4_test_true_strict(scanmode)), | 
|  | .async_en_i, | 
|  | .en_o, | 
|  | .clk_o | 
|  | ); | 
|  |  | 
|  | endmodule // clkmgr_root_ctrl |