Uncovered statements:
Copy Exclude Command to Clipboard
Sequential statement on line 326: 326: return x"00"; Count: 0Threshold: 1
Covered statements:
Sequential statement on lines 222 to 328: 222: case idx is 223: ... 327: 328: end case; Count: 9139Threshold: 1
Sequential statement on line 226: 226: return x"FF"; Count: 367Threshold: 1
Sequential statement on line 230: 230: return x"D8"; Count: 367Threshold: 1
Sequential statement on line 234: 234: return x"FF"; Count: 367Threshold: 1
Sequential statement on line 238: 238: return x"F7"; Count: 367Threshold: 1
Sequential statement on line 242: 242: return x"00"; Count: 367Threshold: 1
Sequential statement on line 246: 246: return x"0B"; Count: 367Threshold: 1
Sequential statement on line 250: 250: return std_logic_vector(to_unsigned(BITNESS, 8)); Count: 367Threshold: 1
Sequential statement on line 254: 254: return std_logic_vector(height(15 downto 8)); Count: 367Threshold: 1
Sequential statement on line 258: 258: return std_logic_vector(height(7 downto 0)); Count: 367Threshold: 1
Sequential statement on line 262: 262: return std_logic_vector(width(15 downto 8)); Count: 367Threshold: 1
Sequential statement on line 266: 266: return std_logic_vector(width(7 downto 0)); Count: 367Threshold: 1
Sequential statement on line 270: 270: return x"01"; Count: 367Threshold: 1
Sequential statement on line 274: 274: return x"01"; Count: 367Threshold: 1
Sequential statement on line 278: 278: return x"11"; Count: 367Threshold: 1
Sequential statement on line 282: 282: return x"00"; Count: 366Threshold: 1
Sequential statement on line 286: 286: return x"FF"; Count: 366Threshold: 1
Sequential statement on line 290: 290: return x"DA"; Count: 366Threshold: 1
Sequential statement on line 294: 294: return x"00"; Count: 366Threshold: 1
Sequential statement on line 298: 298: return x"08"; Count: 365Threshold: 1
Sequential statement on line 302: 302: return x"01"; Count: 365Threshold: 1
Sequential statement on line 306: 306: return x"01"; Count: 365Threshold: 1
Sequential statement on line 310: 310: return x"00"; Count: 365Threshold: 1
Sequential statement on line 314: 314: return std_logic_vector(to_unsigned(NEAR, 8)); Count: 365Threshold: 1
Sequential statement on line 318: 318: return x"00"; Count: 365Threshold: 1
Sequential statement on line 322: 322: return x"00"; Count: 347Threshold: 1
Loop statement on lines 342 to 350: 342: for k in 0 to EOI_FIFO_DEPTH - 2 loop 343: ... 349: 350: end loop; Count: 330Threshold: 1
If statement on lines 344 to 348: 344: if (k + 1 < cnt) then 345: fifo(k) := fifo(k + 1) - emit; 346: else 347: fifo(k) := 0; 348: end if; Count: 330Threshold: 1
Variable assignment statement on line 345: 345: fifo(k) := fifo(k + 1) - emit; Count: 3Threshold: 1
Variable assignment statement on line 347: 347: fifo(k) := 0; Count: 327Threshold: 1
Variable assignment statement on line 352: 352: fifo(EOI_FIFO_DEPTH - 1) := 0; Count: 330Threshold: 1
Variable assignment statement on line 353: 353: cnt := cnt - 1; Count: 330Threshold: 1
Loop statement on lines 366 to 372: 366: for k in 0 to EOI_FIFO_DEPTH - 1 loop 367: ... 371: 372: end loop; Count: 11132Threshold: 1
If statement on lines 368 to 370: 368: if (k < cnt) then 369: fifo(k) := fifo(k) - emit; 370: end if; Count: 22264Threshold: 1
Variable assignment statement on line 369: 369: fifo(k) := fifo(k) - emit; Count: 150Threshold: 1
Signal assignment statement on line 390: 390: sAxiHandshake <= (iReady and sOutValid) = '1'; Count: 39377Threshold: 1
Signal assignment statement on line 400: 400: oWord <= sOutWord; Count: 12432Threshold: 1
Signal assignment statement on line 401: 401: oValid <= sOutValid; Count: 21513Threshold: 1
Signal assignment statement on line 402: 402: oByteEnable <= sValidBytes; Count: 692Threshold: 1
Signal assignment statement on line 403: 403: oLast <= sOutLast; Count: 683Threshold: 1
If statement on lines 408 to 409: 408: oReady <= '1' when sFifoByteCount < BUFFER_BYTES_NOMINAL else 409: '0'; Count: 41516Threshold: 1
Signal assignment statement on line 408: 408: oReady <= '1' when sFifoByteCount < BUFFER_BYTES_NOMINAL else Count: 41485Threshold: 1
Signal assignment statement on line 409: 409: '0'; Count: 31Threshold: 1
If statement on lines 432 to 648: 432: if rising_edge(iClk) then 433: if (iRst = '1') then ... 647: end if; 648: end if; Count: 228538Threshold: 1
If statement on lines 433 to 647: 433: if (iRst = '1') then 434: sFsmState <= idle; ... 646: sNextPending <= vNextPending; 647: end if; Count: 114269Threshold: 1
Signal assignment statement on line 434: 434: sFsmState <= idle; Count: 318Threshold: 1
Signal assignment statement on line 435: 435: sBuffer <= (others => '0'); Count: 318Threshold: 1
Signal assignment statement on line 436: 436: sFifoByteCount <= 0; Count: 318Threshold: 1
Signal assignment statement on line 437: 437: sEoiFifo <= (others => 0); Count: 318Threshold: 1
Signal assignment statement on line 438: 438: sEoiCount <= 0; Count: 318Threshold: 1
Signal assignment statement on line 439: 439: sOutWord <= (others => '0'); Count: 318Threshold: 1
Signal assignment statement on line 440: 440: sOutValid <= '0'; Count: 318Threshold: 1
Signal assignment statement on line 441: 441: sOutLast <= '0'; Count: 318Threshold: 1
Signal assignment statement on line 442: 442: sValidBytes <= (others => '0'); Count: 318Threshold: 1
Signal assignment statement on line 443: 443: sHeaderByteIdx <= 0; Count: 318Threshold: 1
Signal assignment statement on line 444: 444: sNextPending <= 0; Count: 318Threshold: 1
Variable assignment statement on line 446: 446: vBuffer := sBuffer; Count: 113951Threshold: 1
Variable assignment statement on line 447: 447: vFifoByteCount := sFifoByteCount; Count: 113951Threshold: 1
Variable assignment statement on line 448: 448: vEoiIdxFifo := sEoiFifo; Count: 113951Threshold: 1
Variable assignment statement on line 449: 449: vEoiCount := sEoiCount; Count: 113951Threshold: 1
Variable assignment statement on line 450: 450: vWidth := resize(iImageWidth, 16); Count: 113951Threshold: 1
Variable assignment statement on line 451: 451: vHeight := resize(iImageHeight, 16); Count: 113951Threshold: 1
Variable assignment statement on line 452: 452: vCanEmit := sAxiHandshake or sOutValid = '0'; Count: 113951Threshold: 1
Variable assignment statement on line 453: 453: vNextPending := sNextPending; Count: 113951Threshold: 1
If statement on lines 457 to 462: 457: if (iStart = '1') then 458: assert vNextPending < START_QUEUE_DEPTH 459: report "jls_framer: iStart dropped (start queue full)" 460: severity failure; 461: vNextPending := vNextPending + 1; 462: end if; Count: 113951Threshold: 1
Assertion statement on lines 458 to 460: 458: assert vNextPending < START_QUEUE_DEPTH 459: report "jls_framer: iStart dropped (start queue full)" 460: severity failure; Count: 374Threshold: 1
Variable assignment statement on line 461: 461: vNextPending := vNextPending + 1; Count: 374Threshold: 1
If statement on lines 468 to 471: 468: if (sAxiHandshake) then 469: sOutValid <= '0'; 470: sOutLast <= '0'; 471: end if; Count: 113951Threshold: 1
Signal assignment statement on line 469: 469: sOutValid <= '0'; Count: 12355Threshold: 1
Signal assignment statement on line 470: 470: sOutLast <= '0'; Count: 12355Threshold: 1
Sequential statement on lines 473 to 606: 473: case sFsmState is 474: ... 605: 606: end case; Count: 113951Threshold: 1
If statement on lines 477 to 481: 477: if (vNextPending > 0) then 478: sFsmState <= header; 479: sHeaderByteIdx <= 0; 480: vNextPending := vNextPending - 1; 481: end if; Count: 1390Threshold: 1
Signal assignment statement on line 478: 478: sFsmState <= header; Count: 334Threshold: 1
Signal assignment statement on line 479: 479: sHeaderByteIdx <= 0; Count: 334Threshold: 1
Variable assignment statement on line 480: 480: vNextPending := vNextPending - 1; Count: 334Threshold: 1
If statement on lines 485 to 559: 485: if (vCanEmit) then 486: vHeaderBytesRemain := HEADER_LEN - sHeaderByteIdx; ... 558: end if; 559: end if; Count: 10905Threshold: 1
Variable assignment statement on line 486: 486: vHeaderBytesRemain := HEADER_LEN - sHeaderByteIdx; Count: 6832Threshold: 1
If statement on lines 488 to 558: 488: if (vHeaderBytesRemain >= BYTES_OUT) then 489: -- Full header beat from HEADER ROM ... 557: end if; 558: end if; Count: 6832Threshold: 1
Loop statement on lines 491 to 495: 491: for i in 0 to BYTES_OUT - 1 loop 492: 493: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= get_header_byte(sHeaderByteIdx + i, vWidth, vHeight); 494: 495: end loop; Count: 902Threshold: 1
Signal assignment statement on line 493: 493: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= get_header_byte(sHeaderByteIdx + i, vWidth, vHeight); Count: 6999Threshold: 1
Signal assignment statement on line 497: 497: sValidBytes <= to_unsigned(BYTES_OUT, sValidBytes'length); Count: 902Threshold: 1
Signal assignment statement on line 498: 498: sOutValid <= '1'; Count: 902Threshold: 1
Signal assignment statement on line 499: 499: sOutLast <= '0'; Count: 902Threshold: 1
If statement on lines 501 to 505: 501: if (sHeaderByteIdx + BYTES_OUT = HEADER_LEN) then 502: sFsmState <= data; 503: else 504: sHeaderByteIdx <= sHeaderByteIdx + BYTES_OUT; 505: end if; Count: 902Threshold: 1
Signal assignment statement on line 502: 502: sFsmState <= data; Count: 34Threshold: 1
Signal assignment statement on line 504: 504: sHeaderByteIdx <= sHeaderByteIdx + BYTES_OUT; Count: 868Threshold: 1
Variable assignment statement on line 509: 509: vDataNeededBytes := BYTES_OUT - vHeaderBytesRemain; Count: 5930Threshold: 1
Variable assignment statement on line 512: 512: vEoiInBeat := vEoiCount > 0 and vEoiIdxFifo(0) < vDataNeededBytes; Count: 5930Threshold: 1
If statement on lines 513 to 517: 513: if (vEoiInBeat) then 514: vEmitDataBytes := vEoiIdxFifo(0) + 1; 515: else 516: vEmitDataBytes := vDataNeededBytes; 517: end if; Count: 5930Threshold: 1
Variable assignment statement on line 514: 514: vEmitDataBytes := vEoiIdxFifo(0) + 1; Count: 48Threshold: 1
Variable assignment statement on line 516: 516: vEmitDataBytes := vDataNeededBytes; Count: 5882Threshold: 1
If statement on lines 519 to 557: 519: if (vFifoByteCount >= vEmitDataBytes) then 520: -- FIFO has enough bytes ... 556: end if; 557: end if; Count: 5930Threshold: 1
Loop statement on lines 523 to 534: 523: for i in 0 to BYTES_OUT - 1 loop 524: ... 533: 534: end loop; Count: 313Threshold: 1
If statement on lines 525 to 532: 525: if (i < vHeaderBytesRemain) then 526: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= get_header_byte(sHeaderByteIdx + i, vWidth, vHeight); ... 531: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= (others => '0'); 532: end if; Count: 10951Threshold: 1
Signal assignment statement on line 526: 526: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= get_header_byte(sHeaderByteIdx + i, vWidth, vHeight); Count: 2140Threshold: 1
Variable assignment statement on line 528: 528: vOffsetI := i - vHeaderBytesRemain; Count: 6161Threshold: 1
Signal assignment statement on line 529: 529: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= vBuffer(BUFFER_WIDTH - 1 - vOffsetI * 8 downto BUFFER_WIDTH - (vOffsetI + 1) * 8); Count: 6161Threshold: 1
Signal assignment statement on line 531: 531: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= (others => '0'); Count: 2650Threshold: 1
Signal assignment statement on line 536: 536: sValidBytes <= to_unsigned(vHeaderBytesRemain + vEmitDataBytes, sValidBytes'length); Count: 313Threshold: 1
Signal assignment statement on line 537: 537: sOutValid <= '1'; Count: 313Threshold: 1
Variable assignment statement on line 538: 538: vBuffer := std_logic_vector(shift_left(unsigned(vBuffer), vEmitDataBytes * 8)); Count: 313Threshold: 1
Variable assignment statement on line 539: 539: vFifoByteCount := vFifoByteCount - vEmitDataBytes; Count: 313Threshold: 1
If statement on lines 541 to 556: 541: if (vEoiInBeat) then 542: sOutLast <= '1'; ... 555: sFsmState <= data; 556: end if; Count: 313Threshold: 1
Signal assignment statement on line 542: 542: sOutLast <= '1'; Count: 48Threshold: 1
Sequential statement on line 543: 543: pop_eoi(vEoiIdxFifo, vEoiCount, vEmitDataBytes); Count: 48Threshold: 1
If statement on lines 545 to 551: 545: if (vNextPending > 0) then 546: sFsmState <= header; ... 550: sFsmState <= idle; 551: end if; Count: 48Threshold: 1
Signal assignment statement on line 546: 546: sFsmState <= header; Count: 11Threshold: 1
Signal assignment statement on line 547: 547: sHeaderByteIdx <= 0; Count: 11Threshold: 1
Variable assignment statement on line 548: 548: vNextPending := vNextPending - 1; Count: 11Threshold: 1
Signal assignment statement on line 550: 550: sFsmState <= idle; Count: 37Threshold: 1
Signal assignment statement on line 553: 553: sOutLast <= '0'; Count: 265Threshold: 1
Sequential statement on line 554: 554: dec_eoi(vEoiIdxFifo, vEoiCount, vEmitDataBytes); Count: 265Threshold: 1
Signal assignment statement on line 555: 555: sFsmState <= data; Count: 265Threshold: 1
If statement on lines 563 to 604: 563: if (vCanEmit) then 564: vEoiInBeat := vEoiCount > 0 and vEoiIdxFifo(0) < BYTES_OUT; ... 603: end if; 604: end if; Count: 101656Threshold: 1
Variable assignment statement on line 564: 564: vEoiInBeat := vEoiCount > 0 and vEoiIdxFifo(0) < BYTES_OUT; Count: 93064Threshold: 1
If statement on lines 565 to 569: 565: if (vEoiInBeat) then 566: vEmitDataBytes := vEoiIdxFifo(0) + 1; 567: else 568: vEmitDataBytes := BYTES_OUT; 569: end if; Count: 93064Threshold: 1
Variable assignment statement on line 566: 566: vEmitDataBytes := vEoiIdxFifo(0) + 1; Count: 282Threshold: 1
Variable assignment statement on line 568: 568: vEmitDataBytes := BYTES_OUT; Count: 92782Threshold: 1
If statement on lines 571 to 603: 571: if (vFifoByteCount >= vEmitDataBytes) then 572: ... 602: end if; 603: end if; Count: 93064Threshold: 1
Loop statement on lines 573 to 581: 573: for i in 0 to BYTES_OUT - 1 loop 574: ... 580: 581: end loop; Count: 11149Threshold: 1
If statement on lines 575 to 579: 575: if (i < vEmitDataBytes) then 576: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= vBuffer(BUFFER_WIDTH - 1 - i * 8 downto BUFFER_WIDTH - (i + 1) * 8); 577: else 578: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= (others => '0'); 579: end if; Count: 112191Threshold: 1
Signal assignment statement on line 576: 576: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= vBuffer(BUFFER_WIDTH - 1 - i * 8 downto BUFFER_WIDTH - (i + 1) * 8); Count: 108712Threshold: 1
Signal assignment statement on line 578: 578: sOutWord(OUT_WIDTH - 1 - i * 8 downto OUT_WIDTH - (i + 1) * 8) <= (others => '0'); Count: 3479Threshold: 1
Signal assignment statement on line 583: 583: sValidBytes <= to_unsigned(vEmitDataBytes, sValidBytes'length); Count: 11149Threshold: 1
Signal assignment statement on line 584: 584: sOutValid <= '1'; Count: 11149Threshold: 1
Variable assignment statement on line 585: 585: vBuffer := std_logic_vector(shift_left(unsigned(vBuffer), vEmitDataBytes * 8)); Count: 11149Threshold: 1
Variable assignment statement on line 586: 586: vFifoByteCount := vFifoByteCount - vEmitDataBytes; Count: 11149Threshold: 1
If statement on lines 588 to 602: 588: if (vEoiInBeat) then 589: sOutLast <= '1'; ... 601: dec_eoi(vEoiIdxFifo, vEoiCount, vEmitDataBytes); 602: end if; Count: 11149Threshold: 1
Signal assignment statement on line 589: 589: sOutLast <= '1'; Count: 282Threshold: 1
Sequential statement on line 590: 590: pop_eoi(vEoiIdxFifo, vEoiCount, vEmitDataBytes); Count: 282Threshold: 1
If statement on lines 592 to 598: 592: if (vNextPending > 0) then 593: sFsmState <= header; ... 597: sFsmState <= idle; 598: end if; Count: 282Threshold: 1
Signal assignment statement on line 593: 593: sFsmState <= header; Count: 29Threshold: 1
Signal assignment statement on line 594: 594: sHeaderByteIdx <= 0; Count: 29Threshold: 1
Variable assignment statement on line 595: 595: vNextPending := vNextPending - 1; Count: 29Threshold: 1
Signal assignment statement on line 597: 597: sFsmState <= idle; Count: 253Threshold: 1
Signal assignment statement on line 600: 600: sOutLast <= '0'; Count: 10867Threshold: 1
Sequential statement on line 601: 601: dec_eoi(vEoiIdxFifo, vEoiCount, vEmitDataBytes); Count: 10867Threshold: 1
If statement on lines 611 to 636: 611: if (iValid = '1') then 612: ... 635: end if; 636: end if; Count: 113951Threshold: 1
Loop statement on lines 613 to 619: 613: for i in 0 to BYTES_IN - 1 loop 614: ... 618: 619: end loop; Count: 31067Threshold: 1
If statement on lines 615 to 617: 615: if (i < to_integer(iByteEnable)) then 616: vBuffer(BUFFER_WIDTH - 1 - (vFifoByteCount + i) * 8 downto BUFFER_WIDTH - (vFifoByteCount + i + 1) * 8) := iWord(IN_WIDTH - 1 - i * 8 downto IN_WIDTH - (i + 1) * 8); 617: end if; Count: 124268Threshold: 1
Variable assignment statement on line 616: 616: vBuffer(BUFFER_WIDTH - 1 - (vFifoByteCount + i) * 8 downto BUFFER_WIDTH - (vFifoByteCount + i + 1) * 8) := iWord(IN_WIDTH - 1 - i * 8 downto IN_WIDTH - (i + 1) * 8); Count: 114457Threshold: 1
Variable assignment statement on line 621: 621: vFifoByteCount := vFifoByteCount + to_integer(iByteEnable); Count: 31067Threshold: 1
If statement on lines 623 to 635: 623: if (iEoi = '1') then 624: -- Push FOOTER into the FIFO right after the last data byte ... 634: vEoiCount := vEoiCount + 1; 635: end if; Count: 31067Threshold: 1
Variable assignment statement on line 625: 625: vBuffer(BUFFER_WIDTH - 1 - vFifoByteCount * 8 downto BUFFER_WIDTH - (vFifoByteCount + 1) * 8) := x"FF"; Count: 330Threshold: 1
Variable assignment statement on line 626: 626: vBuffer(BUFFER_WIDTH - 1 - (vFifoByteCount + 1) * 8 downto BUFFER_WIDTH - (vFifoByteCount + 2) * 8) := x"D9"; Count: 330Threshold: 1
Variable assignment statement on line 627: 627: vFifoByteCount := vFifoByteCount + 2; Count: 330Threshold: 1
Assertion statement on lines 629 to 631: 629: assert vEoiCount < EOI_FIFO_DEPTH 630: report "jls_framer: EoI FIFO overflow; back-to-back images closer than depth allows" 631: severity failure; Count: 330Threshold: 1
Variable assignment statement on line 633: 633: vEoiIdxFifo(vEoiCount) := vFifoByteCount - 1; Count: 330Threshold: 1
Variable assignment statement on line 634: 634: vEoiCount := vEoiCount + 1; Count: 330Threshold: 1
Assertion statement on lines 638 to 640: 638: assert vFifoByteCount <= BUFFER_BYTES 639: report "jls_framer: payload FIFO overflow (vCount exceeds BUFFER_BYTES; check sizing assumptions or sustained backpressure)" 640: severity failure; Count: 113951Threshold: 1
Signal assignment statement on line 642: 642: sBuffer <= vBuffer; Count: 113951Threshold: 1
Signal assignment statement on line 643: 643: sFifoByteCount <= vFifoByteCount; Count: 113951Threshold: 1
Signal assignment statement on line 644: 644: sEoiFifo <= vEoiIdxFifo; Count: 113951Threshold: 1
Signal assignment statement on line 645: 645: sEoiCount <= vEoiCount; Count: 113951Threshold: 1
Signal assignment statement on line 646: 646: sNextPending <= vNextPending; Count: 113951Threshold: 1