| `default_nettype none |
| // |
| module mcve(i_clk, i_stb, o_full); |
| parameter NS = 4; |
| parameter LGCOUNT = 10; |
| input wire i_clk; |
| input wire [NS-1:0] i_stb; |
| output wire [NS-1:0] o_full; |
| |
| reg [LGCOUNT-1:0] counters [0:NS-1]; |
| |
| genvar N; |
| generate for(N=0; N<NS; N=N+1) |
| begin |
| |
| initial counters[N] = 0; |
| always @(posedge i_clk) |
| if (i_stb[N] && (~counters[N] != 0)) |
| counters[N] <= counters[N]+1; |
| |
| assign o_full[N] = (&counters[N]); |
| |
| end endgenerate |
| |
| `ifdef FORMAL |
| generate for(N=0; N<NS; N=N+1) |
| begin |
| always @(*) |
| assert(o_full[N] == (&counters[N])); |
| end endgenerate |
| `endif |
| endmodule |