User Setup Guide
Set up a working Python and Conda environment on your computer, then connect to the VeriQuest DVA server.
Provisioning Flow
Follow these three steps in order to get your computer ready for VeriQuest DVA:
- Step 1: Create the
veriquestConda environment with Python 3.12. - Step 2: Install
veriquest-clientpackage into the environment. - Step 3: Run
veriquest --helpto verify installation and explore commands.
veriquest-client, then use veriquest --help to confirm the installation.1. Create the VeriQuest environment
Choose your operating system to show the matching setup commands.
chmod +x user_setup.sh
./user_setup.sh2. Install veriquest-client
Activate the new environment, then install the client package.
3. Verify the installation
Confirm that the client is ready and see the available commands.
conda activate veriquest
veriquest --help
veriquest --versionCommand Reference
Complete reference for the VeriQuest CLI commands.
4. Configure your environment
After installation, connect the client to your infrastructure services.
veriquest configurelogin and reset-password refuse to run without it. Jira and Bug Memory are optional.veriquest configure --show5. Activate your license
Bind the license to this computer. Run only once per machine.
veriquest license activateVQ-XXXXXXXX-XXXXXXXX-XXXX. The license is bound to this computer — it cannot be used on another machine. To check it later run veriquest license status. Do not run activate again unless your admin gives you a new key.6. Set your own password
Your admin created your account with a temporary password. Change it the first time you log in.
veriquest reset-password7. Login
Start a session.
veriquest login8. Configure your LLM API key
Every AI command — init, parse, analyze, assertion plan, assertion code, analyze_coverage and chat — runs on an AI provider key. Your company key is synced to this machine when you activate the license; use this command to check it or to set your own instead.
veriquest llmveriquest llm --show
veriquest llm --validate--show prints current provider/model (no key shown). --validate tests the key against the provider.veriquest llm --restore9. Make a project config file
There is no separate "create project" step. A project is defined by one JSON config file, and every work command reads it. Create e.g. aes.json anywhere you like:
aes_core, uart_top, pcie), up to 100 characters. Avoid path separators and Windows reserved names such as CON or NUL.10. Init — build the Spec KB and Design KB
Reads the RTL and spec files named in your config and builds the two knowledge bases the later commands rely on.
veriquest init --config aes.json<work_dir>/dva_analysis/design_kb/<project_name>/ (Design KB) and one <work_dir>/dva_analysis/<specfile>_specs.json per spec document (Spec KB).work_dir — no source code is uploaded anywhere.assertion plan needs both knowledge bases, so init must succeed before it.11. Parse the simulation log
Runs the unified pipeline — vendor detect → parsing → clustering → triage. One scan across all logs, deduplication of repeated failures, then an LLM agent analyzes each unique failure and determines signal, module, protocol, failure_type, and clusters.
veriquest parse --config aes.jsonveriquest parse --config aes.json --export results.json<work_dir>/dva_analysis/<project_name>_parsed_<date>_<time>.json — one file per run, so a re-parse never overwrites the previous run's failures. analyze reads the most recent one.12. Analyze — AI root-cause analysis
Works out why each failure happened. It reads the failures from the newest _parsed_<date>_<time>.json that parse wrote, then investigates each one against your own files — the design, testbench, tests and specification named in the config.
veriquest analyze --config aes.jsonveriquest analyze --config aes.json --failure <cluster_id><work_dir>/dva_analysis/<project_name>_rca_<date>_<time>.md13. Assertion plan (optional)
Turns your DV requirement document into a reviewable assertion plan, backed by evidence selected from the Spec KB.
Assertion_requirements path and at least one spec entry, and veriquest init --config aes.json must have run.veriquest assertion plan --config aes.jsonveriquest assertion plan --config aes.json --only-dv-requirements<work_dir>/dva_analysis/assertion_agent_output/assertion_plan.json plus a human-readable assertion_plan.md next to it. Review the Markdown before generating code.14. Assertion code (optional)
Translates the reviewed plan into compilable SystemVerilog Assertion properties.
veriquest assertion code --config aes.jsonveriquest assertion code --config aes.json --only-dv-requirements<work_dir>/dva_analysis/assertion_agent_output/: <project_name>_assertions.sv (property blocks) and <project_name>_assertions_bind.sv (per-module checker wrappers).15. Coverage closure (optional)
An RCA-style agent that explains every coverage gap and recommends a fix. It groups gaps by type and scope, then investigates each group by reading RTL, testbench, logs and specification before handing in an evidence-checked recommendation.
coverage entry pointing at your coverage report — UCDB, HTML, CSV, or text export.veriquest analyze_coverage --config aes.jsonanalyze_coverage, not analyze-coverage. Report saved at <work_dir>/dva_analysis/<project_name>_coverage_closure_<DDMMYYYY_HHMMSS>.md16. Chat — the VeriQuest assistant (optional)
A persistent assistant in your terminal that can discover a project, build the config for you, and run the tools conversationally. Requires a login.
veriquest chat --config aes.jsonveriquest chat --project "C:/sample dataset/opentitan/opentitan"veriquest chat --config aes.json --once "summarise the last run"17. Raise a Jira ticket (optional)
Attach one or more reports to a single Jira bug. Configure Jira first with veriquest configure (menu entry 2).
veriquest jira --report "C:/proj/dva_analysis/opentitan_rca_20260827_101500.md"veriquest jira -r "path/report1.md" -r "path/report2.md"18. Logout
Log out when finished.
veriquest logout★ Daily workflow
Steps 1–8 are one-time per machine; step 9 is once per project. Day to day you pick one of three tracks — all of them start with a login and end with a logout.
Debug a failing regression:
veriquest login --email you@company.com
veriquest parse --config aes.json
veriquest analyze --config aes.json
veriquest jira -r <report.md>
veriquest logoutMine assertions from requirements:
veriquest assertion plan --config aes.json
veriquest assertion code --config aes.jsonClose a coverage gap:
veriquest analyze_coverage --config aes.json⚑ Quick problem fixes
Server Setup Guide
Everything an admin needs to provision and bootstrap the central VeriFast server — Python, PostgreSQL, MinIO, Ollama, Qdrant, and the database bootstrap.
1. Run server_setup
Installs the server prerequisites on the central VeriFast server (Python 3.12+, PostgreSQL 16, MinIO, Ollama, Qdrant).
chmod +x server_setup.sh
sudo ./server_setup.shVerify Qdrant
After the server setup script finishes, verify that Docker is installed, the qdrant container is running, and the REST health endpoint responds.
docker --version
docker ps --filter "name=qdrant"
curl http://localhost:6333/healthz2. Run init_client.py
Bootstrap the client server and configure it to connect to the VeriQuest Verification Intelligence Platform server.
init_client.py and update the CONFIG block at the top of the file first — set your server URL and credentials. Do not run it until your settings are saved.nano init_client.py
conda activate veriquest
python3 --version
python3 init_client.py3. Install Bug-memory
Install the Bug-memory package into the veriquest conda environment on the client server.
4. Run Bug-memory
Run Bug-memory to ingest and sync ticket history from your source. Activate the veriquest conda environment first.
conda activate veriquest
python -m bug_memory backfill --source acme-jira
python -m bug_memory --since 7D sync --source acme-jira5. Schedule the cron job
Each source's cron: field in config/sources.yaml declares when it should run. The scripts/setup_cron.py script installs one job per enabled source, so the YAML becomes the single source of truth for both what runs and when.
python scripts/setup_cron.py --help
python scripts/setup_cron.py install --dry-run
python scripts/setup_cron.py install
python scripts/setup_cron.py status