Тест Am2910
2016-10-02 13:43![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Имеющийся тест чипа Am2910 проходит на файле alg_beh/alg_beh2910.vhdl, но выдаёт кучу ошибок на файле funct_block_alg_beh/funct_block_alg_beh2910.vhdl. Вывод - нельзя слепо доверять этим исходникам, без тестов никак нельзя.
Возможно, это всё проблемы GHDL. На симуляторе Modelsim оба теста проходят чисто. Modelsim входит в состав бесплатной версии Altera Quartus (с некоторыми ограничениями).
На симуляторе Cadence IUS оба теста alg_beh тоже проходят. OEM-версия IUS содержится в бесплатном пакете Xilinx Vivado. Но у него есть минус: он не понимает guard-выражения языка VHDL.
ghdl -r -fexplicit --ieee=synopsys E --vcd=am2910.vcd --stop-time=140ms --ieee-asserts=disable 2>&1 | tee run.log
../test_vectors_2910.vhdl:256:1:@69ns:(assertion warning): Assert 2 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:312:1:@89ns:(assertion warning): Assert 4 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:371:1:@109ns:(assertion warning): Assert 7 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:551:1:@179ns:(assertion warning): Assert 11 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:607:1:@199ns:(assertion warning): Assert 13 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:666:1:@219ns:(assertion warning): Assert 16 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:846:1:@289ns:(assertion warning): Assert 20 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:902:1:@309ns:(assertion warning): Assert 22 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:961:1:@329ns:(assertion warning): Assert 25 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:1141:1:@399ns:(assertion warning): Assert 29 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:1197:1:@419ns:(assertion warning): Assert 31 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:1256:1:@439ns:(assertion warning): Assert 34 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:1436:1:@509ns:(assertion warning): Assert 38 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:1492:1:@529ns:(assertion warning): Assert 40 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:1551:1:@549ns:(assertion warning): Assert 43 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:1731:1:@619ns:(assertion warning): Assert 47 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:1787:1:@639ns:(assertion warning): Assert 49 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:1846:1:@659ns:(assertion warning): Assert 52 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:2026:1:@729ns:(assertion warning): Assert 56 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:2082:1:@749ns:(assertion warning): Assert 58 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:2141:1:@769ns:(assertion warning): Assert 61 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:2321:1:@839ns:(assertion warning): Assert 65 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:2377:1:@859ns:(assertion warning): Assert 67 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:2436:1:@879ns:(assertion warning): Assert 70 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:2544:1:@919ns:(assertion warning): Assert 73 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:2621:1:@949ns:(assertion warning): Assert 75 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:2672:1:@969ns:(assertion warning): Assert 76 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:2731:1:@989ns:(assertion warning): Assert 79 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:2839:1:@1029ns:(assertion warning): Assert 82 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:2916:1:@1059ns:(assertion warning): Assert 84 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:2967:1:@1079ns:(assertion warning): Assert 85 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:3026:1:@1099ns:(assertion warning): Assert 88 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:3206:1:@1169ns:(assertion warning): Assert 92 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:3262:1:@1189ns:(assertion warning): Assert 94 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:3321:1:@1209ns:(assertion warning): Assert 97 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:3501:1:@1279ns:(assertion warning): Assert 101 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:3557:1:@1299ns:(assertion warning): Assert 103 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:3616:1:@1319ns:(assertion warning): Assert 106 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:3796:1:@1389ns:(assertion warning): Assert 110 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:3852:1:@1409ns:(assertion warning): Assert 112 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:3911:1:@1429ns:(assertion warning): Assert 115 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:4091:1:@1499ns:(assertion warning): Assert 119 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:4147:1:@1519ns:(assertion warning): Assert 121 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:4206:1:@1539ns:(assertion warning): Assert 124 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:4386:1:@1609ns:(assertion warning): Assert 128 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:4442:1:@1629ns:(assertion warning): Assert 130 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:4501:1:@1649ns:(assertion warning): Assert 133 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:4681:1:@1719ns:(assertion warning): Assert 137 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:4737:1:@1739ns:(assertion warning): Assert 139 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:4796:1:@1759ns:(assertion warning): Assert 142 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:4904:1:@1799ns:(assertion warning): Assert 145 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:4976:1:@1829ns:(assertion warning): Assert 146 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:4981:1:@1829ns:(assertion warning): Assert 147 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:5032:1:@1849ns:(assertion warning): Assert 148 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:5091:1:@1869ns:(assertion warning): Assert 151 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:5194:1:@1909ns:(assertion warning): Assert 153 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:5199:1:@1909ns:(assertion warning): Assert 154 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:5276:1:@1939ns:(assertion warning): Assert 156 : < FULL_BAR /= 1 >
../test_vectors_2910.vhdl:5386:1:@1979ns:(assertion warning): Assert 160 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:5566:1:@2049ns:(assertion warning): Assert 164 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:5622:1:@2069ns:(assertion warning): Assert 166 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:5681:1:@2089ns:(assertion warning): Assert 169 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:5861:1:@2159ns:(assertion warning): Assert 173 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:5917:1:@2179ns:(assertion warning): Assert 175 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:5976:1:@2199ns:(assertion warning): Assert 178 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:6156:1:@2269ns:(assertion warning): Assert 182 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:6212:1:@2289ns:(assertion warning): Assert 184 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:6271:1:@2309ns:(assertion warning): Assert 187 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:6451:1:@2379ns:(assertion warning): Assert 191 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:6507:1:@2399ns:(assertion warning): Assert 193 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:6566:1:@2419ns:(assertion warning): Assert 196 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:6746:1:@2489ns:(assertion warning): Assert 200 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:6802:1:@2509ns:(assertion warning): Assert 202 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:6861:1:@2529ns:(assertion warning): Assert 205 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:7041:1:@2599ns:(assertion warning): Assert 209 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:7097:1:@2619ns:(assertion warning): Assert 211 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:7156:1:@2639ns:(assertion warning): Assert 214 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:7336:1:@2709ns:(assertion warning): Assert 218 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:7392:1:@2729ns:(assertion warning): Assert 220 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:7451:1:@2749ns:(assertion warning): Assert 223 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:7631:1:@2819ns:(assertion warning): Assert 227 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:7687:1:@2839ns:(assertion warning): Assert 229 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:7746:1:@2859ns:(assertion warning): Assert 232 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:7926:1:@2929ns:(assertion warning): Assert 236 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:7982:1:@2949ns:(assertion warning): Assert 238 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:8041:1:@2969ns:(assertion warning): Assert 241 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:8221:1:@3039ns:(assertion warning): Assert 245 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:8277:1:@3059ns:(assertion warning): Assert 247 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:8336:1:@3079ns:(assertion warning): Assert 250 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:8516:1:@3149ns:(assertion warning): Assert 254 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:8572:1:@3169ns:(assertion warning): Assert 256 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:8631:1:@3189ns:(assertion warning): Assert 259 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:8814:1:@3259ns:(assertion warning): Assert 263 : < Y /= 000000000001 >
../test_vectors_2910.vhdl:8890:1:@3289ns:(assertion warning): Assert 265 : < Y /= 000000000010 >
../test_vectors_2910.vhdl:8966:1:@3319ns:(assertion warning): Assert 267 : < Y /= 000000000100 >
../test_vectors_2910.vhdl:9042:1:@3349ns:(assertion warning): Assert 269 : < Y /= 111111110111 >
../test_vectors_2910.vhdl:9047:1:@3349ns:(assertion warning): Assert 270 : < FULL_BAR /= 0 >
../test_vectors_2910.vhdl:9118:1:@3379ns:(assertion warning): Assert 271 : < Y /= 000000001000 >
../test_vectors_2910.vhdl:9123:1:@3379ns:(assertion warning): Assert 272 : < FULL_BAR /= 0 >
../test_vectors_2910.vhdl:9176:1:@3399ns:(assertion warning): Assert 273 : < Y /= 000000001000 >
../test_vectors_2910.vhdl:9181:1:@3399ns:(assertion warning): Assert 274 : < FULL_BAR /= 0 >
../test_vectors_2910.vhdl:9207:1:@3409ns:(assertion warning): Assert 275 : < Y /= 000000000100 >
../test_vectors_2910.vhdl:9240:1:@3419ns:(assertion warning): Assert 277 : < Y /= 000000000100 >
../test_vectors_2910.vhdl:9271:1:@3429ns:(assertion warning): Assert 279 : < Y /= 000000000010 >
../test_vectors_2910.vhdl:9304:1:@3439ns:(assertion warning): Assert 281 : < Y /= 000000000010 >
../test_vectors_2910.vhdl:9335:1:@3449ns:(assertion warning): Assert 283 : < Y /= 000000000001 >
../test_vectors_2910.vhdl:9368:1:@3459ns:(assertion warning): Assert 285 : < Y /= 000000000001 >
../test_vectors_2910.vhdl:9399:1:@3469ns:(assertion warning): Assert 287 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:9690:1:@3579ns:(assertion warning): Assert 296 : < Y /= 111111111110 >
../test_vectors_2910.vhdl:9766:1:@3609ns:(assertion warning): Assert 298 : < Y /= 111111111101 >
../test_vectors_2910.vhdl:9842:1:@3639ns:(assertion warning): Assert 300 : < Y /= 111111111011 >
../test_vectors_2910.vhdl:9918:1:@3669ns:(assertion warning): Assert 302 : < Y /= 000000001000 >
../test_vectors_2910.vhdl:9923:1:@3669ns:(assertion warning): Assert 303 : < FULL_BAR /= 0 >
../test_vectors_2910.vhdl:9994:1:@3699ns:(assertion warning): Assert 304 : < Y /= 111111110111 >
../test_vectors_2910.vhdl:9999:1:@3699ns:(assertion warning): Assert 305 : < FULL_BAR /= 0 >
../test_vectors_2910.vhdl:10052:1:@3719ns:(assertion warning): Assert 306 : < Y /= 111111110111 >
../test_vectors_2910.vhdl:10057:1:@3719ns:(assertion warning): Assert 307 : < FULL_BAR /= 0 >
../test_vectors_2910.vhdl:10083:1:@3729ns:(assertion warning): Assert 308 : < Y /= 111111111011 >
../test_vectors_2910.vhdl:10116:1:@3739ns:(assertion warning): Assert 310 : < Y /= 111111111011 >
../test_vectors_2910.vhdl:10147:1:@3749ns:(assertion warning): Assert 312 : < Y /= 111111111101 >
../test_vectors_2910.vhdl:10180:1:@3759ns:(assertion warning): Assert 314 : < Y /= 111111111101 >
../test_vectors_2910.vhdl:10211:1:@3769ns:(assertion warning): Assert 316 : < Y /= 111111111110 >
../test_vectors_2910.vhdl:10244:1:@3779ns:(assertion warning): Assert 318 : < Y /= 111111111110 >
../test_vectors_2910.vhdl:10275:1:@3789ns:(assertion warning): Assert 320 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:10308:1:@3799ns:(assertion warning): Assert 322 : < Y /= 111111111111 >
../test_vectors_2910.vhdl:12567:1:@4739ns:(assertion warning): Assert 357 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:12637:1:@4769ns:(assertion warning): Assert 358 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:12707:1:@4799ns:(assertion warning): Assert 359 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:12777:1:@4829ns:(assertion warning): Assert 360 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:12848:1:@4859ns:(assertion warning): Assert 361 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:12918:1:@4889ns:(assertion warning): Assert 362 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:12988:1:@4919ns:(assertion warning): Assert 363 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:13058:1:@4949ns:(assertion warning): Assert 364 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:13129:1:@4979ns:(assertion warning): Assert 365 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:13199:1:@5009ns:(assertion warning): Assert 366 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:13269:1:@5039ns:(assertion warning): Assert 367 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:13339:1:@5069ns:(assertion warning): Assert 368 : < Y /= 000000000000 >
../test_vectors_2910.vhdl:13482:1:@5117ns:(assertion warning): Assert 369 : < Y /= 111111111110 >
../test_vectors_2910.vhdl:13552:1:@5147ns:(assertion warning): Assert 370 : < Y /= 111111111101 >
../test_vectors_2910.vhdl:13622:1:@5177ns:(assertion warning): Assert 371 : < Y /= 111111111011 >
../test_vectors_2910.vhdl:13692:1:@5207ns:(assertion warning): Assert 372 : < Y /= 111111110111 >
../test_vectors_2910.vhdl:13762:1:@5237ns:(assertion warning): Assert 373 : < Y /= 111111101111 >
../test_vectors_2910.vhdl:13832:1:@5267ns:(assertion warning): Assert 374 : < Y /= 111111011111 >
../test_vectors_2910.vhdl:13902:1:@5297ns:(assertion warning): Assert 375 : < Y /= 111110111111 >
../test_vectors_2910.vhdl:13972:1:@5327ns:(assertion warning): Assert 376 : < Y /= 111101111111 >
../test_vectors_2910.vhdl:14042:1:@5357ns:(assertion warning): Assert 377 : < Y /= 111011111111 >
../test_vectors_2910.vhdl:14112:1:@5387ns:(assertion warning): Assert 378 : < Y /= 110111111111 >
../test_vectors_2910.vhdl:14182:1:@5417ns:(assertion warning): Assert 379 : < Y /= 101111111111 >
../test_vectors_2910.vhdl:14252:1:@5447ns:(assertion warning): Assert 380 : < Y /= 011111111111 >
./e:error: simulation stopped by --stop-delta
./e:error: simulation failed
Возможно, это всё проблемы GHDL. На симуляторе Modelsim оба теста проходят чисто. Modelsim входит в состав бесплатной версии Altera Quartus (с некоторыми ограничениями).
На симуляторе Cadence IUS оба теста alg_beh тоже проходят. OEM-версия IUS содержится в бесплатном пакете Xilinx Vivado. Но у него есть минус: он не понимает guard-выражения языка VHDL.
ERROR: [XSIM 43-3147] "funct_block_alg_beh2901.vhdl" Line 135. Guard expressions are not supported.
ERROR: [XSIM 43-3147] "funct_block_alg_beh2901.vhdl" Line 151. Guard expressions are not supported.
no subject
Date: 2016-10-03 04:18 (UTC)no subject
Date: 2016-10-03 08:02 (UTC)