blob: 61469635e7a13393457ad1e8b1e0172a62c27f51 [file] [log] [blame]
Cindy Chen496b90f2020-06-07 17:57:13 -07001// 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 Chen43b9e5f2021-10-13 11:20:11 -07008module prim_packer_tb #(
Cindy Chen496b90f2020-06-07 17:57:13 -07009 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 Kim36353a22022-08-08 14:58:43 -070026 output logic flush_done_o,
27 output logic err_o
Cindy Chen496b90f2020-06-07 17:57:13 -070028);
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 Kim36353a22022-08-08 14:58:43 -070044 .flush_done_o,
45 .err_o
Cindy Chen496b90f2020-06-07 17:57:13 -070046 );
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 Kim36353a22022-08-08 14:58:43 -070062 .flush_done_o,
63 .err_o
Cindy Chen496b90f2020-06-07 17:57:13 -070064 );
65
Cindy Chen43b9e5f2021-10-13 11:20:11 -070066endmodule : prim_packer_tb