NVC code coverage report

Back to summary

Coverage report for file:

File:  ../../Sources/byte_stuffer.vhd

Current File:

File Statement Branch Toggle Expression FSM state Functional Average
byte_stuffer.vhd 100.0 % (250/250) 100.0 % (51/51) N.A. N.A. N.A. N.A. 100.0 % (301/301)

Details:

Statement Branch Toggle Expression FSM state Functional

Uncovered statements:

Excluded statements:

Covered statements:

Assertion statement on lines 191 to 193:

191:  assert not (sFifoInValid = '1' and sFifoInReady = '0') 
192:    report "byte_stuffer: FIFO write dropped - AlmFull cushion undersized vs stall latency" 
193:    severity failure; 

Count: 49619
Threshold: 1

Signal assignment statement on line 204:

204:  oWord       <= sOutWordReg
Count: 28882
Threshold: 1

Signal assignment statement on line 205:

205:  oWordValid  <= sOutValidReg
Count: 48754
Threshold: 1

Signal assignment statement on line 206:

206:  oValidBytes <= sOutBytesValidReg
Count: 2368
Threshold: 1

Signal assignment statement on line 207:

207:  oFlushDone  <= sFlushDone
Count: 776
Threshold: 1

Signal assignment statement on line 208:

208:  oAlmostFull <= sFifoAlmFull
Count: 152
Threshold: 1

If statement on lines 220 to 232:

220:    if rising_edge(iClk) then 
221:      if (iRst = '1') then 
...
231:      end if; 
232:    end if; 

Count: 232097
Threshold: 1

If statement on lines 221 to 231:

221:      if (iRst = '1') then 
222:        sWord         <= (others => '0'); 
...
230:        sFlush        <= iFlush; 
231:      end if; 

Count: 116044
Threshold: 1

Signal assignment statement on line 222:

222:        sWord         <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 223:

223:        sWordValidLen <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 224:

224:        sWordValid    <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 225:

225:        sFlush        <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 227:

227:        sWord         <= iWord; 
Count: 108407
Threshold: 1

Signal assignment statement on line 228:

228:        sWordValidLen <= iWordValidLen; 
Count: 108407
Threshold: 1

Signal assignment statement on line 229:

229:        sWordValid    <= iWordValid; 
Count: 108407
Threshold: 1

Signal assignment statement on line 230:

230:        sFlush        <= iFlush; 
Count: 108407
Threshold: 1

If statement on lines 262 to 398:

262:    if rising_edge(iClk) then 
263:      if (iRst = '1') then 
...
397:      end if; 
398:    end if; 

Count: 232097
Threshold: 1

If statement on lines 263 to 397:

263:      if (iRst = '1') then 
264:        sAccumBuffer         <= (others => '0'); 
...
396:          severity failure; 
397:      end if; 

Count: 116044
Threshold: 1

Signal assignment statement on line 264:

264:        sAccumBuffer         <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 265:

265:        sAccumCountBits      <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 266:

266:        sAccumCountBitsFlush <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 267:

267:        sFlushValidBits      <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 268:

268:        sFlushPending        <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 269:

269:        sFifoInValid         <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 270:

270:        sFifoInData          <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 271:

271:        sBvQueueInValid      <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 272:

272:        sBvQueueInData       <= (others => '0'); 
Count: 314
Threshold: 1

Variable assignment statement on line 274:

274:        vAccumBuffer         := sAccumBuffer; 
Count: 115730
Threshold: 1

Variable assignment statement on line 275:

275:        vAccumCountBits      := to_integer(sAccumCountBits); 
Count: 115730
Threshold: 1

Variable assignment statement on line 276:

276:        vAccumCountBitsFlush := to_integer(sAccumCountBitsFlush); 
Count: 115730
Threshold: 1

Variable assignment statement on line 277:

277:        vFlushValidBits      := to_integer(sFlushValidBits); 
Count: 115730
Threshold: 1

Variable assignment statement on line 278:

278:        vValidLenInt         := to_integer(sWordValidLen); 
Count: 115730
Threshold: 1

Variable assignment statement on line 279:

279:        vFlushPending        := sFlushPending; 
Count: 115730
Threshold: 1

Signal assignment statement on line 281:

281:        sFifoInValid    <= '0'; 
Count: 115730
Threshold: 1

Signal assignment statement on line 282:

282:        sBvQueueInValid <= '0'; 
Count: 115730
Threshold: 1

If statement on lines 289 to 306:

289:        if (sWordValid = '1' and iStall = '0') then 
290:          vWide                                              := (others => '0'); 
...
305:          vAccumCountBits := vAccumCountBits + vValidLenInt; 
306:        end if; 

Count: 115730
Threshold: 1

Variable assignment statement on line 290:

290:          vWide                                              := (others => '0'); 
Count: 88845
Threshold: 1

Variable assignment statement on line 291:

291:          vWide(ACCUM_BITS - 1 downto ACCUM_BITS - IN_WIDTH) := sWord; 
Count: 88845
Threshold: 1

Variable assignment statement on line 292:

292:          vMaskTop                                           := (others => '0'); 
Count: 88845
Threshold: 1

Loop statement on lines 294 to 300:

294:          for i in 0 to IN_WIDTH - 1 loop 
295: 
...
299: 
300:          end loop; 

Count: 88845
Threshold: 1

If statement on lines 296 to 298:

296:            if (i < vValidLenInt) then 
297:              vMaskTop(ACCUM_BITS - 1 - i) := '1'; 
298:            end if; 

Count: 2902816
Threshold: 1

Variable assignment statement on line 297:

297:              vMaskTop(ACCUM_BITS - 1 - i) := '1'; 
Count: 893784
Threshold: 1

Variable assignment statement on line 302:

302:          vShifted        := std_logic_vector(shift_right(unsigned(vWide), vAccumCountBits)); 
Count: 88845
Threshold: 1

Variable assignment statement on line 303:

303:          vMask           := std_logic_vector(shift_right(unsigned(vMaskTop), vAccumCountBits)); 
Count: 88845
Threshold: 1

Variable assignment statement on line 304:

304:          vAccumBuffer    := (vAccumBuffer and not vMask) or (vShifted and vMask); 
Count: 88845
Threshold: 1

Variable assignment statement on line 305:

305:          vAccumCountBits := vAccumCountBits + vValidLenInt; 
Count: 88845
Threshold: 1

If statement on lines 311 to 351:

311:        if (sFlush = '1' and iStall = '0') then 
312:          assert vFlushPending = '0' 
...
350:          vFlushPending := '1'; 
351:        end if; 

Count: 115730
Threshold: 1

Assertion statement on lines 312 to 314:

312:          assert vFlushPending = '0' 
313:            report "byte_stuffer: iFlush asserted while a flush is already pending" 
314:            severity failure; 

Count: 375
Threshold: 1

Variable assignment statement on line 320:

320:          vFlushRawBits := vAccumCountBits; 
Count: 375
Threshold: 1

If statement on lines 323 to 335:

323:          if ((vAccumCountBits mod 8) /= 0) then 
324:            vPadBits := 8 - (vAccumCountBits mod 8); 
...
334: 
335:          end if; 

Count: 375
Threshold: 1

Variable assignment statement on line 324:

324:            vPadBits := 8 - (vAccumCountBits mod 8); 
Count: 326
Threshold: 1

Loop statement on lines 326 to 333:

326:            for j in 0 to 7 loop 
327: 
...
332: 
333:            end loop; 

Count: 326
Threshold: 1

If statement on lines 328 to 331:

328:              if (j < vPadBits) then 
329:                vAccumBuffer(ACCUM_BITS - 1 - vAccumCountBits) := '0'; 
330:                vAccumCountBits                                := vAccumCountBits + 1; 
331:              end if; 

Count: 2608
Threshold: 1

Variable assignment statement on line 329:

329:                vAccumBuffer(ACCUM_BITS - 1 - vAccumCountBits) := '0'; 
Count: 1436
Threshold: 1

Variable assignment statement on line 330:

330:                vAccumCountBits                                := vAccumCountBits + 1; 
Count: 1436
Threshold: 1

If statement on lines 338 to 341:

338:          if ((vAccumCountBits mod FIFO_BITS) /= 0) then 
339:            vPadBits        := FIFO_BITS - (vAccumCountBits mod FIFO_BITS); 
340:            vAccumCountBits := vAccumCountBits + vPadBits; 
341:          end if; 

Count: 375
Threshold: 1

Variable assignment statement on line 339:

339:            vPadBits        := FIFO_BITS - (vAccumCountBits mod FIFO_BITS); 
Count: 332
Threshold: 1

Variable assignment statement on line 340:

340:            vAccumCountBits := vAccumCountBits + vPadBits; 
Count: 332
Threshold: 1

Variable assignment statement on line 343:

343:          vAccumCountBitsFlush := vAccumCountBits; 
Count: 375
Threshold: 1

Variable assignment statement on line 348:

348:          vFlushValidBits := vFlushRawBits + FIFO_BITS - vAccumCountBitsFlush; 
Count: 375
Threshold: 1

Variable assignment statement on line 350:

350:          vFlushPending := '1'; 
Count: 375
Threshold: 1

Assertion statement on lines 358 to 360:

358:        assert not (sFifoFull = '1' and (vFlushPending = '1' or vAccumCountBits >= FIFO_BITS)) 
359:          report "byte_stuffer: FIFO full but accumulator didn't stall" 
360:          severity failure; 

Count: 115730
Threshold: 1

If statement on lines 362 to 386:

362:        if (sFifoFull = '0') then 
363:          if (vFlushPending = '1') then 
...
385:          end if; 
386:        end if; 

Count: 115730
Threshold: 1

If statement on lines 363 to 385:

363:          if (vFlushPending = '1') then 
364:            if (vAccumCountBitsFlush = FIFO_BITS) then 
...
384:            vAccumCountBits := vAccumCountBits - FIFO_BITS; 
385:          end if; 

Count: 115730
Threshold: 1

If statement on lines 364 to 371:

364:            if (vAccumCountBitsFlush = FIFO_BITS) then 
365:              vLastFlag       := '1'; 
...
370:              vLastFlag := '0'; 
371:            end if; 

Count: 465
Threshold: 1

Variable assignment statement on line 365:

365:              vLastFlag       := '1'; 
Count: 375
Threshold: 1

Signal assignment statement on line 366:

366:              sBvQueueInValid <= '1'; 
Count: 375
Threshold: 1

Signal assignment statement on line 367:

367:              sBvQueueInData  <= std_logic_vector(to_unsigned(vFlushValidBits, LAST_BITS_WIDTH)); 
Count: 375
Threshold: 1

Variable assignment statement on line 368:

368:              vFlushPending   := '0'; 
Count: 375
Threshold: 1

Variable assignment statement on line 370:

370:              vLastFlag := '0'; 
Count: 90
Threshold: 1

Signal assignment statement on line 373:

373:            sFifoInData  <= vAccumBuffer(ACCUM_BITS - 1 downto ACCUM_BITS - FIFO_BITS) & vLastFlag; 
Count: 465
Threshold: 1

Signal assignment statement on line 374:

374:            sFifoInValid <= '1'; 
Count: 465
Threshold: 1

Variable assignment statement on line 376:

376:            vAccumBuffer         := std_logic_vector(shift_left(unsigned(vAccumBuffer), FIFO_BITS)); 
Count: 465
Threshold: 1

Variable assignment statement on line 377:

377:            vAccumCountBits      := vAccumCountBits - FIFO_BITS; 
Count: 465
Threshold: 1

Variable assignment statement on line 378:

378:            vAccumCountBitsFlush := vAccumCountBitsFlush - FIFO_BITS; 
Count: 465
Threshold: 1

Signal assignment statement on line 380:

380:            sFifoInData  <= vAccumBuffer(ACCUM_BITS - 1 downto ACCUM_BITS - FIFO_BITS) & '0'; 
Count: 26714
Threshold: 1

Signal assignment statement on line 381:

381:            sFifoInValid <= '1'; 
Count: 26714
Threshold: 1

Variable assignment statement on line 383:

383:            vAccumBuffer    := std_logic_vector(shift_left(unsigned(vAccumBuffer), FIFO_BITS)); 
Count: 26714
Threshold: 1

Variable assignment statement on line 384:

384:            vAccumCountBits := vAccumCountBits - FIFO_BITS; 
Count: 26714
Threshold: 1

Signal assignment statement on line 388:

388:        sAccumBuffer         <= vAccumBuffer; 
Count: 115730
Threshold: 1

Signal assignment statement on line 389:

389:        sAccumCountBits      <= to_unsigned(vAccumCountBits, sAccumCountBits'length); 
Count: 115730
Threshold: 1

Signal assignment statement on line 390:

390:        sAccumCountBitsFlush <= to_unsigned(vAccumCountBitsFlush, sAccumCountBitsFlush'length); 
Count: 115730
Threshold: 1

Signal assignment statement on line 391:

391:        sFlushValidBits      <= to_unsigned(vFlushValidBits, sFlushValidBits'length); 
Count: 115730
Threshold: 1

Signal assignment statement on line 392:

392:        sFlushPending        <= vFlushPending; 
Count: 115730
Threshold: 1

Assertion statement on lines 394 to 396:

394:        assert vAccumCountBits <= ACCUM_BITS 
395:          report "byte_stuffer: stage 1 accumulator overflow" 
396:          severity failure; 

Count: 115730
Threshold: 1

Signal assignment statement on line 430:

430:  sBvQueueOutReady <= sSkidTaken and sSkidLast
Count: 49804
Threshold: 1

If statement on lines 462 to 466:

462:  sSkidTaken <= '1' when sSkidValid = '1' 
463:                         and sStuffBufferBits <= to_unsigned(HOLD_BITS - FIFO_BITS, sStuffBufferBits'length) 
464:                         and iReady = '1' 
465:                         and sLastPending = '0' else 
466:                '0'; 

Count: 51890
Threshold: 1

Signal assignment statement on line 462:

462:  sSkidTaken <= '1' when sSkidValid = '1' 
Count: 25022
Threshold: 1

Signal assignment statement on line 466:

466:                '0'
Count: 26868
Threshold: 1

If statement on lines 468 to 469:

468:  sFifoOutReady <= '1' when sSkidValid = '0' or sSkidTaken = '1' else 
469:                   '0'; 

Count: 96495
Threshold: 1

Signal assignment statement on line 468:

468:  sFifoOutReady <= '1' when sSkidValid = '0' or sSkidTaken = '1' else 
Count: 71709
Threshold: 1

Signal assignment statement on line 469:

469:                   '0'
Count: 24786
Threshold: 1

Signal assignment statement on line 471:

471:  sSkidData <= sSkidWord(FIFO_WIDTH - 1 downto DATA_LSB)
Count: 27213
Threshold: 1

Signal assignment statement on line 472:

472:  sSkidLast <= sSkidWord(LAST_POS)
Count: 711
Threshold: 1

If statement on lines 477 to 490:

477:    if rising_edge(iClk) then 
478:      if (iRst = '1') then 
...
489:      end if; 
490:    end if; 

Count: 232097
Threshold: 1

If statement on lines 478 to 489:

478:      if (iRst = '1') then 
479:        sSkidValid <= '0'; 
...
488:        end if; 
489:      end if; 

Count: 116044
Threshold: 1

Signal assignment statement on line 479:

479:        sSkidValid <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 480:

480:        sSkidWord  <= (others => '0'); 
Count: 314
Threshold: 1

If statement on lines 482 to 484:

482:        if (sSkidTaken = '1') then 
483:          sSkidValid <= '0'; 
484:        end if; 

Count: 115730
Threshold: 1

Signal assignment statement on line 483:

483:          sSkidValid <= '0'; 
Count: 27138
Threshold: 1

If statement on lines 485 to 488:

485:        if (sFifoOutValid = '1' and sFifoOutReady = '1') then 
486:          sSkidWord  <= sFifoOutData; 
487:          sSkidValid <= '1'; 
488:        end if; 

Count: 115730
Threshold: 1

Signal assignment statement on line 486:

486:          sSkidWord  <= sFifoOutData; 
Count: 27149
Threshold: 1

Signal assignment statement on line 487:

487:          sSkidValid <= '1'; 
Count: 27149
Threshold: 1

If statement on lines 529 to 784:

529:    if rising_edge(iClk) then 
530:      if (iRst = '1') then 
...
783:              vEmitLastFF := vStuffed(i); 
784:            end if; 

Count: 232097
Threshold: 1

If statement on lines 530 to 785:

530:      if (iRst = '1') then 
531:        sStuffBuffer      <= (others => '0'); 
...
784:            end if; 
785: 

Count: 116044
Threshold: 1

Signal assignment statement on line 531:

531:        sStuffBuffer      <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 532:

532:        sStuffBufferBits  <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 533:

533:        sStuffBufferLast  <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 534:

534:        sPrevFF           <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 535:

535:        sOutWordReg       <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 536:

536:        sOutValidReg      <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 537:

537:        sOutBytesValidReg <= (others => '0'); 
Count: 314
Threshold: 1

Signal assignment statement on line 538:

538:        sFlushDone        <= '0'; 
Count: 314
Threshold: 1

Signal assignment statement on line 539:

539:        sLastPending      <= '0'; 
Count: 314
Threshold: 1

If statement on lines 545 to 577:

545:        if (iReady = '1') then 
546:          vStuffBufferBits := to_integer(sStuffBufferBits); 
...
576:          sFlushDone   <= '0'; 
577:        end if; 

Count: 846
Threshold: 1

Variable assignment statement on line 546:

546:          vStuffBufferBits := to_integer(sStuffBufferBits); 
Count: 375
Threshold: 1

Variable assignment statement on line 547:

547:          vPadByte         := (others => '0'); 
Count: 375
Threshold: 1

If statement on lines 549 to 556:

549:          if (sPrevFF = '1') then 
550:            -- Stuff '0' at MSB, up to 7 real bits below it, zero pad. 
...
555:            vPadByte(7 downto 8 - vStuffBufferBits) := sStuffBuffer(HOLD_BITS - 1 downto HOLD_BITS - vStuffBufferBits); 
556:          end if; 

Count: 375
Threshold: 1

If statement on lines 551 to 553:

551:            if (vStuffBufferBits > 0) then 
552:              vPadByte(6 downto 7 - vStuffBufferBits) := sStuffBuffer(HOLD_BITS - 1 downto HOLD_BITS - vStuffBufferBits); 
553:            end if; 

Count: 31
Threshold: 1

Variable assignment statement on line 552:

552:              vPadByte(6 downto 7 - vStuffBufferBits) := sStuffBuffer(HOLD_BITS - 1 downto HOLD_BITS - vStuffBufferBits); 
Count: 26
Threshold: 1

Variable assignment statement on line 555:

555:            vPadByte(7 downto 8 - vStuffBufferBits) := sStuffBuffer(HOLD_BITS - 1 downto HOLD_BITS - vStuffBufferBits); 
Count: 314
Threshold: 1

If statement on lines 558 to 565:

558:          if (vStuffBufferBits = 0 and sPrevFF = '0') then 
559:            sOutWordReg       <= (others => '0'); 
...
564:            sOutBytesValidReg                               <= to_unsigned(1, sOutBytesValidReg'length); 
565:          end if; 

Count: 375
Threshold: 1

Signal assignment statement on line 559:

559:            sOutWordReg       <= (others => '0'); 
Count: 30
Threshold: 1

Signal assignment statement on line 560:

560:            sOutBytesValidReg <= (others => '0'); 
Count: 30
Threshold: 1

Signal assignment statement on line 562:

562:            sOutWordReg(OUT_WIDTH - 1 downto OUT_WIDTH - 8) <= vPadByte; 
Count: 345
Threshold: 1

Signal assignment statement on line 563:

563:            sOutWordReg(OUT_WIDTH - 9 downto 0)             <= (others => '0'); 
Count: 345
Threshold: 1

Signal assignment statement on line 564:

564:            sOutBytesValidReg                               <= to_unsigned(1, sOutBytesValidReg'length); 
Count: 345
Threshold: 1

Signal assignment statement on line 567:

567:          sOutValidReg     <= '1'; 
Count: 375
Threshold: 1

Signal assignment statement on line 568:

568:          sFlushDone       <= '1'; 
Count: 375
Threshold: 1

Signal assignment statement on line 569:

569:          sLastPending     <= '0'; 
Count: 375
Threshold: 1

Signal assignment statement on line 570:

570:          sStuffBufferLast <= '0'; 
Count: 375
Threshold: 1

Signal assignment statement on line 571:

571:          sPrevFF          <= '0'; 
Count: 375
Threshold: 1

Signal assignment statement on line 572:

572:          sStuffBuffer     <= (others => '0'); 
Count: 375
Threshold: 1

Signal assignment statement on line 573:

573:          sStuffBufferBits <= (others => '0'); 
Count: 375
Threshold: 1

Signal assignment statement on line 575:

575:          sOutValidReg <= '0'; 
Count: 471
Threshold: 1

Signal assignment statement on line 576:

576:          sFlushDone   <= '0'; 
Count: 471
Threshold: 1

Variable assignment statement on line 579:

579:        vStuffBuffer     := sStuffBuffer; 
Count: 114884
Threshold: 1

Variable assignment statement on line 580:

580:        vStuffBufferBits := to_integer(sStuffBufferBits); 
Count: 114884
Threshold: 1

Variable assignment statement on line 581:

581:        vStuffBufferLast := sStuffBufferLast; 
Count: 114884
Threshold: 1

Variable assignment statement on line 582:

582:        vPrevFF          := sPrevFF; 
Count: 114884
Threshold: 1

Variable assignment statement on line 583:

583:        vEmitBytes       := 0; 
Count: 114884
Threshold: 1

Variable assignment statement on line 584:

584:        vEmitData        := (others => '0'); 
Count: 114884
Threshold: 1

Variable assignment statement on line 585:

585:        vConsumed        := 0; 
Count: 114884
Threshold: 1

Signal assignment statement on line 586:

586:        sFlushDone       <= '0'; 
Count: 114884
Threshold: 1

If statement on lines 592 to 616:

592:        if (sSkidTaken = '1') then 
593:          if (sSkidLast = '0') then 
...
615:          end if; 
616:        end if; 

Count: 114884
Threshold: 1

If statement on lines 593 to 615:

593:          if (sSkidLast = '0') then 
594:            vStuffBuffer(HOLD_BITS - 1 - vStuffBufferBits downto HOLD_BITS - vStuffBufferBits - FIFO_BITS) := sSkidData; 
...
614:            vStuffBufferLast := '1'; 
615:          end if; 

Count: 27138
Threshold: 1

Variable assignment statement on line 594:

594:            vStuffBuffer(HOLD_BITS - 1 - vStuffBufferBits downto HOLD_BITS - vStuffBufferBits - FIFO_BITS) := sSkidData; 
Count: 26763
Threshold: 1

Variable assignment statement on line 595:

595:            vStuffBufferBits                                                                               := vStuffBufferBits + FIFO_BITS; 
Count: 26763
Threshold: 1

Variable assignment statement on line 600:

600:            vValidBitsInt  := to_integer(unsigned(sBvQueueOutData)); 
Count: 375
Threshold: 1

Variable assignment statement on line 601:

601:            vValidBytesInt := (vValidBitsInt + 7) / 8; -- bytes physically present 
Count: 375
Threshold: 1

Loop statement on lines 603 to 611:

603:            for k in 0 to FIFO_BYTES - 1 loop 
604: 
...
610: 
611:            end loop; 

Count: 375
Threshold: 1

If statement on lines 606 to 609:

606:              if (k < vValidBytesInt) then 
607:                vStuffBuffer(HOLD_BITS - 1 - vStuffBufferBits - k * 8 downto HOLD_BITS - vStuffBufferBits - (k + 1) * 8) 
608: := sSkidData(FIFO_BITS - 1 - k * 8 downto FIFO_BITS - (k + 1) * 8); 
609:              end if; 

Count: 1930
Threshold: 1

Variable assignment statement on lines 607 to 608:

607:                vStuffBuffer(HOLD_BITS - 1 - vStuffBufferBits - k * 8 downto HOLD_BITS - vStuffBufferBits - (k + 1) * 8) 
608: := sSkidData(FIFO_BITS - 1 - k * 8 downto FIFO_BITS - (k + 1) * 8); 

Count: 1054
Threshold: 1

Variable assignment statement on line 613:

613:            vStuffBufferBits := vStuffBufferBits + vValidBitsInt; 
Count: 375
Threshold: 1

Variable assignment statement on line 614:

614:            vStuffBufferLast := '1'; 
Count: 375
Threshold: 1

Variable assignment statement on line 622:

622:        ff0  := bool2bit(vStuffBuffer(HOLD_BITS - 1 downto HOLD_BITS - 8) = x"FF"); 
Count: 114884
Threshold: 1

Variable assignment statement on line 623:

623:        ff1a := bool2bit(vStuffBuffer(HOLD_BITS - 8 downto HOLD_BITS - 15) = x"FF"); 
Count: 114884
Threshold: 1

Variable assignment statement on line 624:

624:        ff1b := bool2bit(vStuffBuffer(HOLD_BITS - 9 downto HOLD_BITS - 16) = x"FF"); 
Count: 114884
Threshold: 1

Variable assignment statement on line 625:

625:        ff2a := bool2bit(vStuffBuffer(HOLD_BITS - 16 downto HOLD_BITS - 23) = x"FF"); 
Count: 114884
Threshold: 1

Variable assignment statement on line 626:

626:        ff2b := bool2bit(vStuffBuffer(HOLD_BITS - 17 downto HOLD_BITS - 24) = x"FF"); 
Count: 114884
Threshold: 1

Variable assignment statement on line 627:

627:        ff3a := bool2bit(vStuffBuffer(HOLD_BITS - 23 downto HOLD_BITS - 30) = x"FF"); 
Count: 114884
Threshold: 1

Variable assignment statement on line 628:

628:        ff3b := bool2bit(vStuffBuffer(HOLD_BITS - 24 downto HOLD_BITS - 31) = x"FF"); 
Count: 114884
Threshold: 1

Variable assignment statement on line 629:

629:        ff3c := bool2bit(vStuffBuffer(HOLD_BITS - 25 downto HOLD_BITS - 32) = x"FF"); 
Count: 114884
Threshold: 1

Sequential statement on lines 634 to 765:

634:        case vPrevFF is 
635: 
...
764: 
765:        end case; 

Count: 114884
Threshold: 1

Variable assignment statement on line 639:

639:            vByte(0)    := '0' & vStuffBuffer(HOLD_BITS - 1 downto HOLD_BITS - 7); 
Count: 1994
Threshold: 1

Variable assignment statement on line 640:

640:            vStuffed(0) := '0'; 
Count: 1994
Threshold: 1

Variable assignment statement on line 641:

641:            vCumu(0)    := 7; 
Count: 1994
Threshold: 1

Variable assignment statement on line 643:

643:            vByte(1)    := vStuffBuffer(HOLD_BITS - 8 downto HOLD_BITS - 15); 
Count: 1994
Threshold: 1

Variable assignment statement on line 644:

644:            vStuffed(1) := ff1a; 
Count: 1994
Threshold: 1

Variable assignment statement on line 645:

645:            vCumu(1)    := 15; 
Count: 1994
Threshold: 1

Sequential statement on lines 647 to 682:

647:            case vStuffed(1) is 
648: 
...
681: 
682:            end case; 

Count: 1994
Threshold: 1

Variable assignment statement on line 652:

652:                vByte(2)    := '0' & vStuffBuffer(HOLD_BITS - 16 downto HOLD_BITS - 22); 
Count: 592
Threshold: 1

Variable assignment statement on line 653:

653:                vStuffed(2) := '0'; 
Count: 592
Threshold: 1

Variable assignment statement on line 654:

654:                vCumu(2)    := 22; 
Count: 592
Threshold: 1

Variable assignment statement on line 655:

655:                vByte(3)    := vStuffBuffer(HOLD_BITS - 23 downto HOLD_BITS - 30); 
Count: 592
Threshold: 1

Variable assignment statement on line 656:

656:                vStuffed(3) := ff3a; 
Count: 592
Threshold: 1

Variable assignment statement on line 657:

657:                vCumu(3)    := 30; 
Count: 592
Threshold: 1

Variable assignment statement on line 662:

662:                vByte(2)    := vStuffBuffer(HOLD_BITS - 16 downto HOLD_BITS - 23); 
Count: 1402
Threshold: 1

Variable assignment statement on line 663:

663:                vStuffed(2) := ff2a; 
Count: 1402
Threshold: 1

Variable assignment statement on line 664:

664:                vCumu(2)    := 23; 
Count: 1402
Threshold: 1

Sequential statement on lines 666 to 680:

666:                case vStuffed(2) is 
667: 
...
679: 
680:                end case; 

Count: 1402
Threshold: 1

Variable assignment statement on line 670:

670:                    vByte(3)    := '0' & vStuffBuffer(HOLD_BITS - 24 downto HOLD_BITS - 30); 
Count: 19
Threshold: 1

Variable assignment statement on line 671:

671:                    vStuffed(3) := '0'; 
Count: 19
Threshold: 1

Variable assignment statement on line 672:

672:                    vCumu(3)    := 30; 
Count: 19
Threshold: 1

Variable assignment statement on line 676:

676:                    vByte(3)    := vStuffBuffer(HOLD_BITS - 24 downto HOLD_BITS - 31); 
Count: 1383
Threshold: 1

Variable assignment statement on line 677:

677:                    vStuffed(3) := ff3b; 
Count: 1383
Threshold: 1

Variable assignment statement on line 678:

678:                    vCumu(3)    := 31; 
Count: 1383
Threshold: 1

Variable assignment statement on line 687:

687:            vByte(0)    := vStuffBuffer(HOLD_BITS - 1 downto HOLD_BITS - 8); 
Count: 112890
Threshold: 1

Variable assignment statement on line 688:

688:            vStuffed(0) := ff0; 
Count: 112890
Threshold: 1

Variable assignment statement on line 689:

689:            vCumu(0)    := 8; 
Count: 112890
Threshold: 1

Sequential statement on lines 691 to 763:

691:            case ff0 is 
692: 
...
762: 
763:            end case; 

Count: 112890
Threshold: 1

Variable assignment statement on line 696:

696:                vByte(1)    := '0' & vStuffBuffer(HOLD_BITS - 9 downto HOLD_BITS - 15); 
Count: 1223
Threshold: 1

Variable assignment statement on line 697:

697:                vStuffed(1) := '0'; 
Count: 1223
Threshold: 1

Variable assignment statement on line 698:

698:                vCumu(1)    := 15; 
Count: 1223
Threshold: 1

Variable assignment statement on line 699:

699:                vByte(2)    := vStuffBuffer(HOLD_BITS - 16 downto HOLD_BITS - 23); 
Count: 1223
Threshold: 1

Variable assignment statement on line 700:

700:                vStuffed(2) := ff2a; 
Count: 1223
Threshold: 1

Variable assignment statement on line 701:

701:                vCumu(2)    := 23; 
Count: 1223
Threshold: 1

Sequential statement on lines 703 to 717:

703:                case vStuffed(2) is 
704: 
...
716: 
717:                end case; 

Count: 1223
Threshold: 1

Variable assignment statement on line 707:

707:                    vByte(3)    := '0' & vStuffBuffer(HOLD_BITS - 24 downto HOLD_BITS - 30); 
Count: 498
Threshold: 1

Variable assignment statement on line 708:

708:                    vStuffed(3) := '0'; 
Count: 498
Threshold: 1

Variable assignment statement on line 709:

709:                    vCumu(3)    := 30; 
Count: 498
Threshold: 1

Variable assignment statement on line 713:

713:                    vByte(3)    := vStuffBuffer(HOLD_BITS - 24 downto HOLD_BITS - 31); 
Count: 725
Threshold: 1

Variable assignment statement on line 714:

714:                    vStuffed(3) := ff3b; 
Count: 725
Threshold: 1

Variable assignment statement on line 715:

715:                    vCumu(3)    := 31; 
Count: 725
Threshold: 1

Variable assignment statement on line 722:

722:                vByte(1)    := vStuffBuffer(HOLD_BITS - 9 downto HOLD_BITS - 16); 
Count: 111667
Threshold: 1

Variable assignment statement on line 723:

723:                vStuffed(1) := ff1b; 
Count: 111667
Threshold: 1

Variable assignment statement on line 724:

724:                vCumu(1)    := 16; 
Count: 111667
Threshold: 1

Sequential statement on lines 726 to 761:

726:                case vStuffed(1) is 
727: 
...
760: 
761:                end case; 

Count: 111667
Threshold: 1

Variable assignment statement on line 731:

731:                    vByte(2)    := '0' & vStuffBuffer(HOLD_BITS - 17 downto HOLD_BITS - 23); 
Count: 612
Threshold: 1

Variable assignment statement on line 732:

732:                    vStuffed(2) := '0'; 
Count: 612
Threshold: 1

Variable assignment statement on line 733:

733:                    vCumu(2)    := 23; 
Count: 612
Threshold: 1

Variable assignment statement on line 734:

734:                    vByte(3)    := vStuffBuffer(HOLD_BITS - 24 downto HOLD_BITS - 31); 
Count: 612
Threshold: 1

Variable assignment statement on line 735:

735:                    vStuffed(3) := ff3b; 
Count: 612
Threshold: 1

Variable assignment statement on line 736:

736:                    vCumu(3)    := 31; 
Count: 612
Threshold: 1

Variable assignment statement on line 741:

741:                    vByte(2)    := vStuffBuffer(HOLD_BITS - 17 downto HOLD_BITS - 24); 
Count: 111055
Threshold: 1

Variable assignment statement on line 742:

742:                    vStuffed(2) := ff2b; 
Count: 111055
Threshold: 1

Variable assignment statement on line 743:

743:                    vCumu(2)    := 24; 
Count: 111055
Threshold: 1

Sequential statement on lines 745 to 759:

745:                    case vStuffed(2) is 
746: 
...
758: 
759:                    end case; 

Count: 111055
Threshold: 1

Variable assignment statement on line 749:

749:                        vByte(3)    := '0' & vStuffBuffer(HOLD_BITS - 25 downto HOLD_BITS - 31); 
Count: 369
Threshold: 1

Variable assignment statement on line 750:

750:                        vStuffed(3) := '0'; 
Count: 369
Threshold: 1

Variable assignment statement on line 751:

751:                        vCumu(3)    := 31; 
Count: 369
Threshold: 1

Variable assignment statement on line 755:

755:                        vByte(3)    := vStuffBuffer(HOLD_BITS - 25 downto HOLD_BITS - 32); 
Count: 110686
Threshold: 1

Variable assignment statement on line 756:

756:                        vStuffed(3) := ff3c; 
Count: 110686
Threshold: 1

Variable assignment statement on line 757:

757:                        vCumu(3)    := 32; 
Count: 110686
Threshold: 1

Variable assignment statement on line 772:

772:        vEmitBytes  := 0; 
Count: 114884
Threshold: 1

Variable assignment statement on line 773:

773:        vConsumed   := 0; 
Count: 114884
Threshold: 1

Variable assignment statement on line 774:

774:        vEmitLastFF := vPrevFF; 
Count: 114884
Threshold: 1

If statement on lines 776 to 788:

776:        if (iReady = '1') then 
777: 
...
787: 
788:        end if; 

Count: 114884
Threshold: 1

Loop statement on lines 778 to 786:

778:          for i in 0 to OUT_BYTES_PER_CYCLE - 1 loop 
779: 
...
785: 
786:          end loop; 

Count: 101493
Threshold: 1

If statement on lines 780 to 784:

780:            if (vStuffBufferBits >= vCumu(i)) then 
781:              vEmitBytes  := i + 1; 
782:              vConsumed   := vCumu(i); 
783:              vEmitLastFF := vStuffed(i); 
784:            end if; 

Count: 405972
Threshold: 1

Variable assignment statement on line 781:

781:              vEmitBytes  := i + 1; 
Count: 111641
Threshold: 1

Variable assignment statement on line 782:

782:              vConsumed   := vCumu(i); 
Count: 111641
Threshold: 1

Variable assignment statement on line 783:

783:              vEmitLastFF := vStuffed(i); 
Count: 111641
Threshold: 1

Loop statement on lines 793 to 797:

793:        for i in 0 to OUT_BYTES_PER_CYCLE - 1 loop 
794: 
795:          vEmitData(OUT_WIDTH - 1 - (i * 8) downto OUT_WIDTH - ((i + 1) * 8)) := vByte(i); 
796: 
797:        end loop; 

Count: 114884
Threshold: 1

Variable assignment statement on line 795:

795:          vEmitData(OUT_WIDTH - 1 - (i * 8) downto OUT_WIDTH - ((i + 1) * 8)) := vByte(i); 
Count: 459536
Threshold: 1

If statement on lines 799 to 803:

799:        if (vEmitBytes > 0) then 
800:          vStuffBuffer     := std_logic_vector(shift_left(unsigned(vStuffBuffer), vConsumed)); 
801:          vStuffBufferBits := vStuffBufferBits - vConsumed; 
802:          vPrevFF          := vEmitLastFF; 
803:        end if; 

Count: 114884
Threshold: 1

Variable assignment statement on line 800:

800:          vStuffBuffer     := std_logic_vector(shift_left(unsigned(vStuffBuffer), vConsumed)); 
Count: 28501
Threshold: 1

Variable assignment statement on line 801:

801:          vStuffBufferBits := vStuffBufferBits - vConsumed; 
Count: 28501
Threshold: 1

Variable assignment statement on line 802:

802:          vPrevFF          := vEmitLastFF; 
Count: 28501
Threshold: 1

If statement on lines 808 to 814:

808:        if (vEmitBytes > 0) then 
809:          sOutWordReg       <= vEmitData; 
...
813:          sOutValidReg <= '0'; 
814:        end if; 

Count: 114884
Threshold: 1

Signal assignment statement on line 809:

809:          sOutWordReg       <= vEmitData; 
Count: 28501
Threshold: 1

Signal assignment statement on line 810:

810:          sOutBytesValidReg <= to_unsigned(vEmitBytes, sOutBytesValidReg'length); 
Count: 28501
Threshold: 1

Signal assignment statement on line 811:

811:          sOutValidReg      <= '1'; 
Count: 28501
Threshold: 1

Signal assignment statement on line 813:

813:          sOutValidReg <= '0'; 
Count: 86383
Threshold: 1

If statement on lines 819 to 823:

819:        if (iReady = '1' 
820:            and vStuffBufferLast = '1' 
821:            and vStuffBufferBits < 8) then 
822:          sLastPending <= '1'; 
823:        end if; 

Count: 114884
Threshold: 1

Signal assignment statement on line 822:

822:          sLastPending <= '1'; 
Count: 375
Threshold: 1

Signal assignment statement on line 825:

825:        sStuffBuffer     <= vStuffBuffer; 
Count: 114884
Threshold: 1

Signal assignment statement on line 826:

826:        sStuffBufferBits <= to_unsigned(vStuffBufferBits, sStuffBufferBits'length); 
Count: 114884
Threshold: 1

Signal assignment statement on line 827:

827:        sStuffBufferLast <= vStuffBufferLast; 
Count: 114884
Threshold: 1

Signal assignment statement on line 828:

828:        sPrevFF          <= vPrevFF; 
Count: 114884
Threshold: 1

Uncovered branches:

Excluded branches:

Covered branches:

"if" / "when" / "else" condition on line 220:

220:    if rising_edge(iClk) then 
Evaluated toCountThreshold
BinTrue1160441

"if" / "when" / "else" condition on line 221:

221:      if (iRst = '1') then 
Evaluated toCountThreshold
BinTrue3141

"if" / "when" / "else" condition on line 226:

226:      elsif (iStall = '0') then 
Evaluated toCountThreshold
BinTrue1084071

"if" / "when" / "else" condition on line 262:

262:    if rising_edge(iClk) then 
Evaluated toCountThreshold
BinTrue1160441

"if" / "when" / "else" condition on line 263:

263:      if (iRst = '1') then 
Evaluated toCountThreshold
BinTrue3141

"if" / "when" / "else" condition on line 289:

289:        if (sWordValid = '1' and iStall = '0') then 
Evaluated toCountThreshold
BinTrue888451

"if" / "when" / "else" condition on line 296:

296:            if (i < vValidLenInt) then 
Evaluated toCountThreshold
BinTrue8937841

"if" / "when" / "else" condition on line 311:

311:        if (sFlush = '1' and iStall = '0') then 
Evaluated toCountThreshold
BinTrue3751

"if" / "when" / "else" condition on line 323:

323:          if ((vAccumCountBits mod 8) /= 0) then 
Evaluated toCountThreshold
BinTrue3261

"if" / "when" / "else" condition on line 328:

328:              if (j < vPadBits) then 
Evaluated toCountThreshold
BinTrue14361

"if" / "when" / "else" condition on line 338:

338:          if ((vAccumCountBits mod FIFO_BITS) /= 0) then 
Evaluated toCountThreshold
BinTrue3321

"if" / "when" / "else" condition on line 362:

362:        if (sFifoFull = '0') then 
Evaluated toCountThreshold
BinTrue1157301

"if" / "when" / "else" condition on line 363:

363:          if (vFlushPending = '1') then 
Evaluated toCountThreshold
BinTrue4651

"if" / "when" / "else" condition on line 364:

364:            if (vAccumCountBitsFlush = FIFO_BITS) then 
Evaluated toCountThreshold
BinTrue3751

"if" / "when" / "else" condition on line 379:

379:          elsif (vAccumCountBits >= FIFO_BITS) then 
Evaluated toCountThreshold
BinTrue267141

"if" / "when" / "else" condition on lines 462 to 465:

462:  sSkidTaken <= '1' when sSkidValid = '1' 
463:                         and sStuffBufferBits <= to_unsigned(HOLD_BITS - FIFO_BITS, sStuffBufferBits'length) 
464:                         and iReady = '1' 
465:                         and sLastPending = '0' else 

Evaluated toCountThreshold
BinTrue250221

"if" / "when" / "else" condition on line 468:

468:  sFifoOutReady <= '1' when sSkidValid = '0' or sSkidTaken = '1' else 
Evaluated toCountThreshold
BinTrue717091

"if" / "when" / "else" condition on line 477:

477:    if rising_edge(iClk) then 
Evaluated toCountThreshold
BinTrue1160441

"if" / "when" / "else" condition on line 478:

478:      if (iRst = '1') then 
Evaluated toCountThreshold
BinTrue3141

"if" / "when" / "else" condition on line 482:

482:        if (sSkidTaken = '1') then 
Evaluated toCountThreshold
BinTrue271381

"if" / "when" / "else" condition on line 485:

485:        if (sFifoOutValid = '1' and sFifoOutReady = '1') then 
Evaluated toCountThreshold
BinTrue271491

"if" / "when" / "else" condition on line 529:

529:    if rising_edge(iClk) then 
Evaluated toCountThreshold
BinTrue1160441

"if" / "when" / "else" condition on line 530:

530:      if (iRst = '1') then 
Evaluated toCountThreshold
BinTrue3141

"if" / "when" / "else" condition on line 540:

540:      elsif (sLastPending = '1') then 
Evaluated toCountThreshold
BinTrue8461

"if" / "when" / "else" condition on line 545:

545:        if (iReady = '1') then 
Evaluated toCountThreshold
BinTrue3751

"if" / "when" / "else" condition on line 549:

549:          if (sPrevFF = '1') then 
Evaluated toCountThreshold
BinTrue311

"if" / "when" / "else" condition on line 551:

551:            if (vStuffBufferBits > 0) then 
Evaluated toCountThreshold
BinTrue261

"if" / "when" / "else" condition on line 554:

554:          elsif (vStuffBufferBits > 0) then 
Evaluated toCountThreshold
BinTrue3141

"if" / "when" / "else" condition on line 558:

558:          if (vStuffBufferBits = 0 and sPrevFF = '0') then 
Evaluated toCountThreshold
BinTrue301

"if" / "when" / "else" condition on line 592:

592:        if (sSkidTaken = '1') then 
Evaluated toCountThreshold
BinTrue271381

"if" / "when" / "else" condition on line 593:

593:          if (sSkidLast = '0') then 
Evaluated toCountThreshold
BinTrue267631

"if" / "when" / "else" condition on line 606:

606:              if (k < vValidBytesInt) then 
Evaluated toCountThreshold
BinTrue10541

"case" / "with" / "select" choice on line 636:

636:          when '1' => 
Choice ofCountThreshold
Bin'1'19941

"case" / "with" / "select" choice on line 649:

649:              when '1' => 
Choice ofCountThreshold
Bin'1'5921

"case" / "with" / "select" choice on line 659:

659:              when others => 
Choice ofCountThreshold
Binothers14021

"case" / "with" / "select" choice on line 668:

668:                  when '1' => 
Choice ofCountThreshold
Bin'1'191

"case" / "with" / "select" choice on line 674:

674:                  when others => 
Choice ofCountThreshold
Binothers13831

"case" / "with" / "select" choice on line 684:

684:          when others => 
Choice ofCountThreshold
Binothers1128901

"case" / "with" / "select" choice on line 693:

693:              when '1' => 
Choice ofCountThreshold
Bin'1'12231

"case" / "with" / "select" choice on line 705:

705:                  when '1' => 
Choice ofCountThreshold
Bin'1'4981

"case" / "with" / "select" choice on line 711:

711:                  when others => 
Choice ofCountThreshold
Binothers7251

"case" / "with" / "select" choice on line 719:

719:              when others => 
Choice ofCountThreshold
Binothers1116671

"case" / "with" / "select" choice on line 728:

728:                  when '1' => 
Choice ofCountThreshold
Bin'1'6121

"case" / "with" / "select" choice on line 738:

738:                  when others => 
Choice ofCountThreshold
Binothers1110551

"case" / "with" / "select" choice on line 747:

747:                      when '1' => 
Choice ofCountThreshold
Bin'1'3691

"case" / "with" / "select" choice on line 753:

753:                      when others => 
Choice ofCountThreshold
Binothers1106861

"if" / "when" / "else" condition on line 776:

776:        if (iReady = '1') then 
Evaluated toCountThreshold
BinTrue1014931

"if" / "when" / "else" condition on line 780:

780:            if (vStuffBufferBits >= vCumu(i)) then 
Evaluated toCountThreshold
BinTrue1116411

"if" / "when" / "else" condition on line 799:

799:        if (vEmitBytes > 0) then 
Evaluated toCountThreshold
BinTrue285011

"if" / "when" / "else" condition on line 808:

808:        if (vEmitBytes > 0) then 
Evaluated toCountThreshold
BinTrue285011

"if" / "when" / "else" condition on lines 819 to 821:

819:        if (iReady = '1' 
820:            and vStuffBufferLast = '1' 
821:            and vStuffBufferBits < 8) then 

Evaluated toCountThreshold
BinTrue3751

Uncovered toggles:

Excluded toggles:

Covered toggles:

Uncovered expressions:

Excluded expressions:

Covered expressions:

Uncovered FSM states:

Excluded FSM states:

Covered FSM states:

Uncovered functional coverage:

Excluded functional coverage:

Covered functional coverage: