| // SPDX-FileCopyrightText: Copyright 2020 Jecel Mattos de Assumpcao Jr |
| // |
| // SPDX-License-Identifier: Apache-2.0 |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // https://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // test vectors for user_proj_block 16x16 ycell block connected to |
| // the rest of the Caravel chip using the logic analyzer pins. |
| // The verilog test bench that reads this file is test005upblock.v |
| // |
| // each vector in the the format of 1+4+8+4+8 = 25 hex digits |
| // |
| // The first three groups are the values to be sent from Caravel's |
| // logic analyzer to the block while the last two groups are the |
| // results that the block is expected to send to the logic analyzer. |
| // |
| // The first digit only controls two bits, so only 0 to 3 are valid |
| // values. Bit 0 is the configuration clock and bit 1 is reset. The |
| // top two bits of the digit disable comparisons with the fourth |
| // and fifth group respectively, which has to be done for the first |
| // few vectors while the circuit under test is outputting unknowns |
| // |
| // The second group is the configuration bits for the 16 columns of |
| // ycells |
| // |
| // The third group is the uin data to be injected into the 16 columns |
| // with two bits each. The two bits can be 0 (empty), 1 (value 0) or |
| // 2 (value 1). While 3 is not supposed to be used, it might be a good |
| // idea to see what happens |
| // |
| // The fourth group is the expected value from the configuration bits |
| // coming out of the bottom of the 16 columns. They should be the same |
| // value as 3*BLOCKHEIGHT (48 in the default case of 16 rows) bits ago |
| // for the configuration in |
| // |
| // The fifth (and last) group is the expected value from uout coming |
| // from the 16 columns with two bits each |
| // |
| // example configuration: |
| // .101Y||......... |
| // .0+0-YN......... |
| // .+10-Y.......... |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // ................ |
| // |
| // breaking it into bits: . + - | 1 0 Y N |
| // msb 0 0 0 0 1 1 1 1 |
| // 0 0 1 1 0 0 1 1 |
| // lsb 0 1 0 1 0 1 0 1 |
| |
| C_0000_00000000_0000_00000000 // first three vectors have the output ignored to settle down |
| E_0000_00000000_0000_00000000 // reset everything |
| E_0000_00000000_0000_00000000 // msb bit 15: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 14: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 13: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 12: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 11: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 10: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 09: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 08: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 07: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 06: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 05: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 04: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // msb bit 03: ................ |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // middle bit |
| B_0000_00000000_0000_00000000 |
| A_0000_00000000_0000_00000000 // lsb bit |
| B_0000_00000000_0000_00000000 |
| A_3400_00000000_0000_00000000 // msb bit 02: .+10 -Y.. .... .... |
| B_3400_00000000_0000_00000000 // 0011 0100 0000 0000 |
| A_0C00_00000000_0000_00000000 // middle bit 0000 1100 0000 0000 |
| B_0C00_00000000_0000_00000000 // 0101 0000 0000 0000 |
| A_5000_00000000_0000_00000000 // lsb bit |
| B_5000_00000000_0000_00000000 |
| A_5600_00000000_0000_00000000 // msb bit 01: .0+0 -YN. .... .... |
| B_5600_00000000_0000_00000000 // 0101 0110 0000 0000 |
| A_0E00_00000000_0000_00000000 // middle bit 0000 1110 0000 0000 |
| B_0E00_00000000_0000_00000000 // 0111 0010 0000 0000 |
| A_7200_00000000_0000_00000000 // lsb bit |
| B_7200_00000000_0000_00000000 |
| A_7800_00000000_0000_00000000 // msb bit 00: .101 Y||. .... .... |
| B_7800_00000000_0000_00000000 // 0111 1000 0000 0000 |
| A_0E00_00000000_0000_00000000 // middle bit 0000 1110 0000 0000 |
| B_0E00_00000000_0000_00000000 // 0010 0110 0000 0000 |
| A_2600_00000000_0000_00000000 // lsb bit |
| B_2600_00000000_0000_00000000 |
| 0_0000_00000000_0000_00000000 // normal operation! |
| 0_0000_15A80000_0000_15000000 // inject E0 00 11 1E EE EE EE EE |