ChipGate is a structural pattern-matching tool for Verilog/SystemVerilog RTL code. It is designed to catch obviously unsafe designs before they proceed to silicon, but it has significant limitations that must be understood before relying on its results.
- Parsing Limitations
- Analysis Limitations
- External Tool Integration
- What ChipGate Does NOT Prove
- Scope Limitations
- Design Space Limitations
- Not Suitable For
- Mandatory Disclaimer
ChipGate uses regular expressions to extract structural elements from Verilog and SystemVerilog source files. It does not implement a complete language grammar or AST (abstract syntax tree).
Consequences:
- No preprocessor support —
define,include,ifdef, and conditional compilation directives are not processed. Code behindifdefguards will not be analysed. - No parameter/parameter overrides —
parameterandlocalparamvalues are not tracked through module instantiation hierarchies. - No generate block expansion —
generate/for/ifconstructs are not expanded or analysed. - No macro-awareness —
define` macros used in expressions or port lists may cause the scanner to miss patterns or produce false negatives. - Limited port parsing — Only basic
input/outputdeclarations with optional single-bit bus widths ([N:0]) are parsed. Multi-dimensional arrays, interface ports, and ANSI-style port declarations may not be fully handled. - Comment stripping is approximate — Nested block comments or comments inside string literals may be incorrectly stripped.
ChipGate performs purely structural pattern matching. It does not understand:
- Data types —
wire,reg,logic,int,struct,union,enumare treated identically when matching signal names. - Signal widths — Bit width mismatches (e.g., assigning an 8-bit signal to a 1-bit port) are not detected.
- Value propagation — Constant folding, parameter evaluation, and signal value analysis are not performed.
- Hierarchical references — Cross-module signal references (e.g.,
module_a.signal_x) are not resolved. - Operator semantics — Logical vs. bitwise operators (
&&vs&,||vs|) are not distinguished in gate detection. - Namespace resolution — Packages, classes, and typedefs are not handled.
ChipGate operates exclusively on RTL source text. It does not:
- Estimate gate count, area, or power consumption
- Perform static timing analysis (STA)
- Detect timing violations, setup/hold issues, or clock domain crossings
- Analyse synthesis results or netlists
- Evaluate resource utilisation for FPGA targets
- Check for combinational loops orglitches
All checks are based on detecting textual patterns in the source code. This means:
- False negatives are possible — Safety violations that use non-standard naming conventions, indirect assignments, or complex gate logic may be missed entirely.
- False positives are possible — Signals with actuator-like names (e.g.,
enable_debug) that are not actually safety-critical may be flagged. - No control flow analysis — The scanner does not trace signal flow through multiplexers, conditional assignments, or module hierarchies.
- No data flow analysis — Values are not propagated to determine whether a gate signal can actually influence the actuator output.
- No state reachability analysis — For FSM-based designs, ChipGate does not verify that all states are reachable or that unsafe states cannot be reached.
ChipGate does not provide:
- Code coverage metrics (line, condition, toggle, path)
- Functional coverage analysis
- Assertion coverage tracking
- Verification completeness assessment
A design that passes all ChipGate rules may still have significant unverified functionality.
The Verilator integration is optional and may be unavailable in many environments:
- Verilator must be separately installed; ChipGate does not bundle it.
- When Verilator is not installed, lint checks are gracefully skipped — the scan will not fail, but external lint data will be absent.
- Verilator's own limitations apply: it does not support all SystemVerilog constructs and may report false positives for some valid code patterns.
- The 60-second timeout may not be sufficient for large designs.
The cocotb integration is currently a placeholder:
- The simulation module detects whether cocotb is installed but does not execute any tests.
- Future releases plan to support cocotb-based regression testing.
- No testbench generation is provided — users must write their own testbenches.
The formal verification module checks readiness only — it does not execute formal proofs:
- It detects whether assertions exist and whether SBY/Yosys are installed.
- It generates a sample
.sbyconfiguration file but does not run it. - No BMC (bounded model checking) or induction proofs are performed.
- No proof results (PASS/FAIL/UNKNOWN) are reported.
| Tool | Status | What It Does |
|---|---|---|
| Verilator | Optional, functional when installed | Runs --lint-only -Wall and parses output |
| cocotb | Placeholder, future | Detects availability only |
| Yosys | Detected, not invoked | Checks which yosys for readiness reporting |
| SBY | Detected, not invoked | Checks which sby for readiness reporting |
A RTL_SCAN_PASS result means that no obvious structural violations were
detected. It does not mean:
- The design functions as intended
- All edge cases are handled correctly
- The logic is free of bugs
- The implementation matches the specification
- State machines are correct and complete
ChipGate does not validate:
- Synthesis constraints and timing signoff
- Power integrity or signal integrity
- Foundry-specific design rules
- Package and pin mapping
- Manufacturing test coverage
- Silicon debuggability
ChipGate is a pre-check tool, not a replacement for:
- Formal verification — Property checking, equivalence checking, model checking
- Simulation-based verification — Directed tests, random testing, constrained-random verification
- Lint and code review — Systematic lint rules, coding standard checks, peer review processes
- Timing analysis — Static timing analysis, clock domain crossing verification
- Physical verification — DRC, LVS, RC extraction
ChipGate is optimised for Verilog-2001 style RTL. It may not correctly handle:
- SystemVerilog classes and objects
- UVM methodology constructs
- Interfaces and modports
- Virtual interfaces
- Covergroups and coverage models
- Program blocks
- Packages and imports
- Checker blocks
- DPI (Direct Programming Interface) calls
- Assertions with complex sequences (detected by keyword but not analysed)
- Clocking blocks
- Constraint blocks
Each invocation of scan_file() processes exactly one Verilog file:
- Cross-module references are not resolved.
- Multi-module files are handled (first module is used), but multi-file hierarchies are not.
- Use
scan_directory()to scan multiple files, but each file is analysed independently — inter-module relationships are not evaluated. - File-level dependencies (
include`, instantiation hierarchy) are not resolved.
ChipGate identifies actuator/safety-critical signals by matching against a fixed list of known names and regex patterns:
actuator_enable, actuator_cmd, motor_enable, relay_on,
valve_open, heater_on, laser_enable, solenoid_on,
pump_enable, drive_enable, trigger_out, fire_cmd, deploy_cmd
Plus a general regex pattern for words like actuator, motor, relay,
valve, heater, laser, solenoid, pump, drive, enable,
trigger, fire, deploy.
Limitation: Designs that use non-standard names for safety-critical
outputs (e.g., gpio_out, pwm_duty, dac_output) will not be flagged,
even if they control physical actuators.
The verification gate detection looks for specific signal names:
verifier_ok, policy_ok, kill_switch, sensor_ok, timeout
Designs that use functionally equivalent signals with different names
(e.g., verified, policy_check, estop_n, sensor_valid, wdog_expire)
will not be recognised as safety gates.
The bypass detection uses simple heuristics on assignment expressions:
- A single identifier → bypass (e.g.,
assign out = in;) - A negated identifier → bypass (e.g.,
assign out = !in;) - Complex expressions without gate signals → unsafe bypass path
These heuristics can miss sophisticated bypass patterns or flag safe patterns that happen to use few signals.
ChipGate does not estimate:
- Dynamic or static power consumption
- Gate-level area utilisation
- FPGA resource usage (LUTs, FFs, BRAM, DSP)
- Thermal characteristics
- Clock tree synthesis feasibility
ChipGate does not detect:
- Async clock domain crossings
- Missing synchroniser chains
- Metastability risks
- Clock gating issues
ChipGate does not validate:
- AXI, AHB, APB, or Wishbone protocol compliance
- FIFO depth and overflow analysis
- Back-pressure handling
- Burst transfer correctness
ChipGate is explicitly not suitable as a verification tool for designs intended for deployment in:
ChipGate does not perform the verification rigour required by IEC 60601,
FDA guidance, or medical device regulations. A RTL_SCAN_PASS result must
never be used as evidence of medical device safety.
ChipGate does not validate real-time constraints, sensor fusion correctness, motion safety envelopes, or the complex interactions between hardware and control software required for safe robotic operation.
ChipGate does not meet the requirements of DO-254, MIL-STD-882, or equivalent defence and aerospace standards. It must not be used as a sole verification artifact for safety-critical avionics, weapons systems, or defence hardware.
ChipGate is a structural pre-check, not a safety validation tool. It must not be used as the primary means of demonstrating functional safety for any system where failure could result in:
- Personal injury or death
- Environmental damage
- Significant property damage
- Loss of critical infrastructure
For such applications, use industry-standard verification flows including formal verification, simulation-based verification, timing analysis, and independent safety assessment.
The following disclaimer text is included in every ChipGate output and must always accompany results when they are shared, published, or used for decision-making:
ChipGate checks RTL structure and verification-gated safety patterns. It does not guarantee hardware correctness, silicon readiness, physical safety, regulatory conformance or experimental validity.
This disclaimer is stored in the public_wording field of every ScanResult
and EvidencePack and must not be omitted.
- Never claim that ChipGate "verified" or "proved" a design is safe.
- Never use ChipGate results alone to justify silicon production.
- Never present ChipGate results as regulatory conformance evidence.
- Always run additional verification (formal, simulation, lint, timing) before committing a design to production.
- Always include the disclaimer when sharing ChipGate output with stakeholders, reviewers, or the public.