본문으로 건너뛰기Skip to content 1:1 문의 — [email protected]로 이메일 작성 Contact us — email [email protected]

What does PASS prove when AI repairs HLS code?

Executable tests are a starting point for automated repair. Distinguishing test inputs, result checking and post-synthesis verification keeps source-level success from being mistaken for hardware success.

ZeptoBars photograph of an Altera Cyclone EP1C3 FPGA die, with a central logic array and surrounding input-output circuitry.
Historical Altera Cyclone EP1C3 FPGA die, published in 2013. Reference photograph for the physical implementation stage, not hardware evaluated in the repair study. Photo: ZeptoBars, CC BY 3.0. Unmodified. Original photo · License

An HLS repair tool displays a green PASS. Is that enough to move an accelerator design forward? The answer depends on the check behind the label. It might mean that a compiler accepted the source, or that outputs matched reference values for the supplied inputs. Verification of a synthesized circuit requires separate evidence. Engineers need a record explaining the scope of the result alongside the success indicator.

C-level checking, RTL simulation and physical implementation answer different questions.
Figure 1. A passing result is scoped to its stage. Original VLSI Korea synthesis; the stages are not interchangeable.

A University of New Hampshire study in the latest public listings makes this question timely. Its authors evaluated 125 bug instances with executable checks. The scope is C-level functional repair; post-synthesis correctness is outside it. Starting from that distinction, this article considers the evidence an engineering team should add. The calculations and examples below are original VLSI Korea teaching examples, not reproductions of the paper’s measurements. Study

Study scope Beyond the reported experiment
Executable C-level repair checks Generated-RTL correctness and physical implementation

Between a correct source file and a working chip

High-Level Synthesis translates algorithms expressed in C or C++ into hardware structures. It must decide where operations execute and how they are scheduled, bringing software behavior and circuit constraints into the same workflow. First identify what a repair changes: the algorithm, synthesis directives or an interface. Applying the same acceptance rule to different targets can admit a patch that preserves results while losing required performance.

The actual photograph in this article shows an early Altera FPGA, the Cyclone EP1C3. Its central logic array and peripheral circuitry make the physical destination of an implementation concrete. Published in 2013, it is a historical reference photograph, not a device evaluated in the study or a claim of support by current tools. An FPGA configures logic, routing, memory and input-output resources through a bitstream. Correct computation in a C file alone cannot establish the interfaces and timing of the resulting physical design. Original photograph, Altera’s FPGA explanation

Evidence Question answered Still open
Compilation Is this source accepted? Functional correctness
C test Do observed outputs match? Untested inputs, RTL behavior
RTL co-simulation Does generated RTL pass these tests? Physical timing, system behavior
Implementation and board test Does this configured system meet its checks? Untested operating conditions

A written functional contract clarifies the scope. “Sum the valid elements of an input array” leaves several questions unanswered: is an empty input legal, what are the sign and range of the values, and what happens on overflow? Inferring those answers backward from an implementation risks treating a bug as the specification. Separate behavior that must remain unchanged from implementation choices that may change. The checker should independently assess the stated requirements.

Before reading a pass rate, ask what inputs were supplied and what the outputs were compared against. (VLSI Korea editorial interpretation)

First establish that the test can fail

An oracle is the mechanism that judges an execution result against an expected answer. Copying an original program’s behavior differs from verifying a requirement. If the original is wrong, a copied reference may inherit the mistake. Conversely, if a deliberately broken implementation still passes, the test cannot detect that particular defect. Before comparing repair models, a team can check whether its oracle distinguishes a trusted implementation from an intentionally faulty one.

The reference must pass and a known faulty implementation must fail before evaluating repair.
Figure 2. Sanity-check the checker before scoring a repair. An undetected injected defect exposes a gap in this test, not a successful repair.

CHStone is a collection of C-based HLS benchmarks drawn from different applications. Its paper’s abstract describes a resource for quantitative evaluation of design ideas and tools. Reusing such kernels for repair evaluation requires checking whether the original purpose matches the needed defect-detection scope. Inputs useful for comparing design performance do not automatically expose every functional bug. CHStone abstract

Consider a small accumulator that returns the sum of the valid elements of an integer array. For this example, an empty input has sum 0, and none of the inputs overflows. The trusted implementation adds every valid element; the faulty one omits the last. For [1, 2, 3], the correct output is 6 and the faulty output is 3. This test distinguishes the omission, but it cannot establish that an arbitrary repair is correct.

Checker sanity test Expected result Interpretation
Trusted sum on [1, 2, 3] 6, pass Positive control works
Omit last element 3, fail This defect is observable
Always return 6 6, pass A false repair can still pass

The last row matters. A patch that always returns 6 passes the single input without implementing a sum. Making a defect observable is weaker than excluding incorrect repairs. A failed test on an injected bug should therefore not turn that test into a complete specification. Record which input exposed which difference, so the next stage can identify missing behavior.

Add inputs that separate competing answers

The number of tests matters less than whether they distinguish candidate implementations. Adding [2, 2, 2] to the accumulator tests produces another sum of 6. It does not reject the constant-return patch. Changing the input to [1, 2, 4] produces an expected sum of 7 and immediately separates the candidates. Empty and single-element inputs exercise loop boundaries. Rather than changing values without a purpose, describe which failures the length, boundary or value distribution is intended to expose.

A constant-return repair passes the seed input but fails discriminating inputs.
Figure 3. Executed toy example: the constant-return patch passes the seed case but fails the boundary and changed-sum cases. These are not benchmark measurements.

It is also useful to distinguish validation inputs from those shown to the repair system. Repeatedly providing the same tests may encourage a tool to satisfy the visible checks rather than the intended behavior. Reviewers can run held-out inputs separately and record the rule tested by each added failure case. A finite held-out set still cannot prove completeness, but it provides additional opportunities to reject patches fitted only to the visible examples.

Input class Example here Intended distinction
Seed [1, 2, 3] → 6 Known missing-element bug
Same total [2, 2, 2] → 6 Does not reject constant output
Changed total [1, 2, 4] → 7 Rejects constant output
Boundary [] → 0; [9] → 9 Empty and single-element handling

The official MachSuite README warns of a portability issue in its validation approach and says the final output check is not performed. This does not establish that every subsequent study has a broken checker: researchers may build their own harness. The practical lesson is to inspect the actual version, harness, failure return value and comparison path instead of assuming a repository name establishes verification capability. A successful exit code does not justify counting a functional pass if the comparison routine never ran. MachSuite repository

Repeating the same answer does not establish correctness

Different patches on successive attempts deserve investigation. The description may be incomplete, the failure may be poorly localized, or generation may simply be diverse. Yet different text does not necessarily mean different behavior. A for loop and a while loop can compute the same sum over the defined input domain. Conversely, a model that always returns the constant 6 can produce the same wrong answer consistently.

Patch diversity and functional correctness are separate axes.
Figure 4. Textual diversity and correctness are different dimensions. This conceptual matrix proposes diagnostic questions; it is not a model ranking.

Patch diversity is therefore useful as a clue for choosing the next check. Finding inputs on which candidates disagree can strengthen the oracle. If every candidate fails the same boundary case, revisit the contract or input domain. If only one candidate fails to compile, separate syntax and type errors first. These diagnostics produce information for the current design without pretending to establish a model’s general capability.

Repeated outcome Next question
Same patch, tests fail Is the model repeating one wrong assumption?
Different patches, same tested outputs Which new input distinguishes their behavior?
Different patches, different failures Is the defect localized and the contract explicit?
Tests pass consistently What remains outside these tests?

The same principle applies to comparison tables. Changing the attempt budget or test inputs changes the meaning of a success rate. Getting a repair right on the first attempt and finding one passing candidate among several do not imply equal selection cost. More generation can add testing time or synthesis queues. Choosing a model requires accounting for the effort of identifying an acceptable candidate and why candidates fail later stages, not merely whether a passing answer exists.

Carry the repair into RTL and the time domain

AMD’s Vitis HLS documentation describes C/RTL co-simulation as generating inputs from a C testbench, simulating the generated RTL and returning its outputs to the testbench for checking. The testbench must judge its own results. This extends the check to a synthesized circuit, but weak inputs or comparison conditions carry their limitations into that stage. AMD UG1399

An engineering acceptance contract should also describe timing. Correct results can still miss a streaming workload’s requirements if the design accepts new inputs too slowly. Latency is the time from one operation’s start to completion; Initiation Interval is the spacing between successive starts. In the idealized example below, latency is 12 cycles and the interval is 3 cycles. The 4 operations start at 0, 3, 6, 9 and finish at 12, 15, 18, 21. The last completion occurs after 21 cycles.

Four idealized overlapping transactions finish at cycle 21 with latency 12 and interval 3.
Figure 5. Illustrative schedule with no stalls: latency = 12 cycles, initiation interval = 3 cycles. Clock frequency and board performance are not specified.

With the same latency but no overlapping operations, completion takes 48 cycles. This is a calculation under stated assumptions, not a product measurement. A repair may preserve results while changing resource sharing or memory accesses and therefore changing the conditions for overlap. In addition to checking values, verify whether the design accepts work at the permitted input rate and delivers results when required.

Acceptance layer Record with the patch
Source behavior Input domain, reference result, compiler configuration
Generated RTL Tool version, interfaces, testbench, observed outputs
Timing and resources Clock target, latency, initiation interval, resource limits
System operation Reset behavior, stalls, backpressure, allowed operating conditions

The contract should address relevant interface stalls, resets during operation and consecutive inputs of changing lengths. This does not mean adding an identical checklist to every design. Select missing cases from the product’s legal operating conditions. Also distinguish a synthesis report’s target frequency from timing results for an actual implementation. Recording functionality and timing separately makes it possible to explain when a functional repair breaks throughput requirements.

Carrying source correctness into hardware requires carrying the conditions of the result, not just its value. (VLSI Korea editorial interpretation)

Keep the denominator visible to Korean design teams

A Korean fabless or FPGA accelerator team adopting automated repair can place a small internal evaluation between public-kernel scores and its own IP requirements. This does not require sending confidential design material to an external service. Begin in an approved environment with public or authorized examples, then assess how well their defects and inputs represent the work. Separate compilation failures, functional failures, post-synthesis failures and unmet performance constraints to reveal where improvement is needed.

A hypothetical candidate funnel keeps all attempted candidates in the denominator.
Figure 6. Hypothetical accounting example: retain every attempted candidate in the denominator and report why candidates leave the flow. Counts are illustrative.

Suppose 10 candidates lose 2 at compilation, 3 at C testing, 2 at RTL testing and 1 at timing or resource acceptance. That leaves 2 candidates. Using only candidates that reached C testing as the denominator obscures the yield of the overall process. Labeling every failure an “AI error” also merges tool configuration problems with functional defects. Track the same starting set and retain the reasons for leaving each stage before comparing adoption results.

Decision record Why it matters
All attempted candidates Preserves the denominator
Failure stage and reason Separates configuration from functional defects
Human review and tool time Exposes the cost of finding an acceptable patch
Rejected and held-out cases Prevents easy cases from silently defining the score

Over the next 6–12 months, the useful development to watch is the connection between verification stages. Do evaluations provide the inputs and oracle version, continue into generated-RTL checks, and retain throughput and resource conditions? Teams can test the value of this proposal internally. If stronger checks uncover almost no additional defects while greatly increasing review time, redesign the input selection and order of checks. Increasing the test count while hiding its total cost is not the objective.

The value of automated repair should be established through faster production of candidates that people can assess. Accepting a candidate into a product design requires a record linking requirements, inputs, the oracle, generated circuitry and implementation conditions. With that record beside PASS, a team can judge what has been checked and what remains for the next stage. That is the form of automation that can earn a lasting place in design work.

Sources and evidence scope

  • HLS repair study, arXiv v1: submitted 2026-10-02; observed in the 2026-10-06 public listing. The manuscript states acceptance at ICCD 2026. This is the authors’ acceptance statement, not independent confirmation of a presentation or proceedings publication. The full manuscript was read; experiments were not reproduced. Inconsistencies between abstract and table figures or distribution descriptions mean that model pass-rate comparisons are omitted.
  • CHStone: abstract and metadata of the 2009 paper. MachSuite: official README. These are separate research assets, distinct from the accumulator executed for this article.
  • AMD UG1399: C/RTL verification procedure in the 2026.1 documentation. Altera: vendor explanation of FPGA configuration.
  • ZeptoBars photo, rights: real Cyclone EP1C3 die photograph, used unmodified. Diagrams, tables, decision criteria and accumulator/scheduling examples are original VLSI Korea material, not measured product performance.

AI assisted research and drafting. The illustrative calculations and example were separately checked; this article does not present a reproduction of model performance or physical hardware experiments.

Disclosure

This article is provided for informational purposes only and does not constitute a recommendation to buy or sell any security. Factual statements are based on the cited public research, technical documentation and benchmark materials; illustrative examples and calculations were created by VLSI Korea. Errors may occur in source material or in the preparation of this article. The author may own shares in companies mentioned. All investment decisions and their outcomes are the reader's responsibility.

Discussion

VLSI KOREA BRIEFING

반도체를 읽는 안목, 메일함으로.

엔지니어의 시각과 산업의 흐름을 함께. 무료로 구독하세요.

이미 구독 중인가요? 로그인