You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Exports both designs as Verilog simulation models
294
-
- Generates testbench with random stimulus (LFSR-based)
294
+
- Generates a testbench with LFSR-based stimulus and reactive drivers for recognized ready/valid, command/response, streaming, and HLS control interfaces
295
295
- Runs xsim simulation with configurable test vector count
|`revised_dcp`| Revised (optimized) DCP file to validate | Required |
401
404
|`--vectors`, `-n`| Number of random test vectors to simulate | 200 |
402
405
|`--debug`| Enable debug logging | False |
406
+
|`--no-reactive`| Disable reactive interface stimulus and use pure LFSR randomness | False |
403
407
404
408
### Notes
405
409
406
410
-**Simulation time**: Dominated by `xelab` (must compile every cell in both designs) plus per-cycle `xsim` cost. For huge benchmarks like `corescore_500_mod` (~6.7K user modules, ~100K primitives) `xelab` alone takes ~14 minutes, so run-to-run wall-clock is bounded by that even with very few vectors.
407
411
-**Vector count**: 200 vectors is sufficient to catch functional regressions on most designs while keeping wall-clock reasonable on the largest benchmarks. For higher confidence on small/medium designs use `--vectors 10000` (or more). xsim cost scales roughly linearly with vectors.
408
-
-**Working directory**: Preserved after validation in `/tmp/dcp_validation_*` with simulation logs and intermediate files.
412
+
-**Working directory**: Preserved after validation in a repo-local `dcp_validation_*` directory with simulation logs and intermediate files.
409
413
-**No testbench required**: The tool automatically generates stimulus based on design I/O structure.
414
+
-**Reactive stimulus**: By default, the generated testbench recognizes common interface naming patterns and drives simple reactive behavior. This is a heuristic, golden-driven shared environment: the testbench uses the golden DUT's recognized control outputs to schedule shared inputs, and separately checks corresponding control outputs for divergence. Use `--no-reactive` to fall back to pure LFSR stimulus if those heuristics are not appropriate for a design or benchmark.
410
415
-**Clock/reset detection**: Automatically identifies clock and reset signals by name pattern matching.
411
416
412
417
### Limitations
413
418
414
419
- Simulation-based validation is not exhaustive (depends on test vector coverage)
420
+
- Simulator crashes, timeouts, or tool failures are treated as validation failures, even if no output mismatches were observed before the failure.
415
421
- For formal proof of equivalence, use commercial tools like Synopsys Formality or Cadence Conformal
416
422
- Designs with encrypted IP blocks are not supported
417
423
- Asynchronous designs may require custom testbenches
0 commit comments