Cindy Chen | 496b90f | 2020-06-07 17:57:13 -0700 | [diff] [blame] | 1 | // Copyright lowRISC contributors. |
| 2 | // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| 3 | // SPDX-License-Identifier: Apache-2.0 |
| 4 | // |
| 5 | // Testbench module for prim_packer. Intended to be used with a formal tool. |
| 6 | // To reduce the runtime for prim_packer, we limited the width parameter. |
| 7 | |
Cindy Chen | 43b9e5f | 2021-10-13 11:20:11 -0700 | [diff] [blame] | 8 | module prim_packer_tb #( |
Cindy Chen | 496b90f | 2020-06-07 17:57:13 -0700 | [diff] [blame] | 9 | parameter int unsigned MaxInW = 64, |
| 10 | parameter int unsigned MaxOutW = 64 |
| 11 | ) ( |
| 12 | input clk_i , |
| 13 | input rst_ni, |
| 14 | |
| 15 | input valid_i, |
| 16 | input [MaxInW-1:0] data_i, |
| 17 | input [MaxInW-1:0] mask_i, |
| 18 | output ready_o, |
| 19 | |
| 20 | output logic valid_o, |
| 21 | output logic [MaxOutW-1:0] data_o, |
| 22 | output logic [MaxOutW-1:0] mask_o, |
| 23 | input ready_i, |
| 24 | |
| 25 | input flush_i, |
Eunchan Kim | 36353a2 | 2022-08-08 14:58:43 -0700 | [diff] [blame] | 26 | output logic flush_done_o, |
| 27 | output logic err_o |
Cindy Chen | 496b90f | 2020-06-07 17:57:13 -0700 | [diff] [blame] | 28 | ); |
| 29 | |
| 30 | for (genvar k = 1; k <= 16; k++) begin : gen_prim_packer |
| 31 | prim_packer #(.InW(k), .OutW(17-k) |
| 32 | ) i_prim_packer ( |
| 33 | .clk_i, |
| 34 | .rst_ni, |
| 35 | .valid_i, |
| 36 | .data_i (data_i[k-1:0]), |
| 37 | .mask_i (mask_i[k-1:0]), |
| 38 | .ready_o, |
| 39 | .valid_o, |
| 40 | .data_o (data_o[16-k:0]), |
| 41 | .mask_o (mask_o[16-k:0]), |
| 42 | .ready_i, |
| 43 | .flush_i, |
Eunchan Kim | 36353a2 | 2022-08-08 14:58:43 -0700 | [diff] [blame] | 44 | .flush_done_o, |
| 45 | .err_o |
Cindy Chen | 496b90f | 2020-06-07 17:57:13 -0700 | [diff] [blame] | 46 | ); |
| 47 | end |
| 48 | |
| 49 | prim_packer #(.InW(MaxInW), .OutW(MaxOutW) |
| 50 | ) i_prim_packer_max ( |
| 51 | .clk_i, |
| 52 | .rst_ni, |
| 53 | .valid_i, |
| 54 | .data_i (data_i), |
| 55 | .mask_i (mask_i), |
| 56 | .ready_o, |
| 57 | .valid_o, |
| 58 | .data_o (data_o), |
| 59 | .mask_o (mask_o), |
| 60 | .ready_i, |
| 61 | .flush_i, |
Eunchan Kim | 36353a2 | 2022-08-08 14:58:43 -0700 | [diff] [blame] | 62 | .flush_done_o, |
| 63 | .err_o |
Cindy Chen | 496b90f | 2020-06-07 17:57:13 -0700 | [diff] [blame] | 64 | ); |
| 65 | |
Cindy Chen | 43b9e5f | 2021-10-13 11:20:11 -0700 | [diff] [blame] | 66 | endmodule : prim_packer_tb |