# Troubleshooting Common issues and solutions when using STG. ## Verilog Parsing Issues ### "No modules found in DUT file" Make sure your Verilog file contains valid module definitions and iverilog is installed: ```bash iverilog -t null -g2009 your_file.v ``` You can also use `stg parse` to inspect what modules are detected: ```bash stg parse --verilog your_file.v --out modules.yaml ``` ### "Multiple modules found, please specify --module" Your file contains multiple module definitions. Specify which one to test: ```bash stg generate --verilog file.v --module my_module ... ``` Use `stg parse` to see all available modules and their hierarchy. ### Parser fallback STG uses a hybrid parsing approach: [sv-parser](https://github.com/dalance/sv-parser) for Rust-native parsing, with iverilog as a fallback. If sv-parser fails on your file, ensure iverilog v11+ is installed. Use `--debug` for detailed parser output. ## C++/SystemC Mode Issues ### "There are two stages to compile the testbench" You're in stage 1 of the CC/SC workflow. First generate the template: ```bash stg generate --verilog dut.v --type combinational --out tb.cpp --out-header golden.h --cc ``` Then implement the golden model in `golden.h` and run stage 2: ```bash stg generate --verilog dut.v --golden golden.h --type combinational --out tb.cpp --out-exe exe --cc ``` See the [C++/SystemC Mode Guide](user_guide/cc_sc_mode.md) for the full two-stage workflow. ## Compilation Issues ### Verilator compilation errors Try ignoring width warnings: ```bash stg generate ... --verilator --compile-flags -Wno-WIDTH ``` ### Verilator version compatibility STG requires Verilator v5.020 or later. Older versions shipped with Linux distributions may not support required features. See the [installation guide](getting_started.md#install-verilator) for building from source. ### Module name conflicts (SV mode) When multiple Verilog files contain modules with the same name, compilation will fail. In SV mode, use `--emplace-module` to add prefixes: ```bash stg generate --verilog dut1.v --verilog dut2.v --golden golden.v \ --type combinational --out tb.sv --emplace-module ``` In CC/SC mode, Verilator handles renaming automatically. ## Signal Classification Issues ### Important signals misclassified If control signals are classified as data (or vice versa), specify them explicitly: ```bash stg generate ... --control-signals op mode --data-signals a b ``` Use `stg identify` to preview the automatic classification: ```bash stg identify --verilog dut.v --module my_module --type combinational --out signals.yaml ``` ## FSM Coverage Issues ### "No state machines found" The design may not contain a detectable FSM, or the coding style is not recognized by the deterministic parser. Try LLM-based extraction: ```bash stg generate-fsm design.sv --golden golden.sv --out tb.cpp --fsm-method lm --lm-provider gemini ``` ### LM method fails - Ensure `uv` is installed: - Check API keys in `.env` or environment variables - Supported keys: `GOOGLE_API_KEY`, `OPENAI_API_KEY`, `OPENROUTER_API_KEY` ### Missed states in coverage - Increase `--dfs-passes` for more edge coverage - Increase `--transition-timeout` if internal conditions (counters, timers) take many cycles - Inspect the extracted FSM with `--state-analysis fsm.json` and verify correctness ## Runtime Issues ### Non-deterministic test results Random test generation uses different seeds across runs. For reproducibility, consider using a fixed seed (if supported) or saving the `test_stats.json` output for comparison. ### Coverage file conflicts with MPI In SV mode, MPI processes write to the same `coverage.dat` file, which causes conflicts. Use CC/SC mode for MPI coverage — rank-specific filenames are generated automatically. ### Path issues Relative paths may break in different execution contexts. Use absolute paths or ensure you run STG from the correct working directory. ## Getting Help - Run `stg --help` or `stg --help` for command-line usage - Use `--debug` for detailed diagnostic output - Check the [CLI Reference](reference/cli.md) for all available options - See the [examples](examples.md) for working configurations