Overview
SoC integration appears in the processor verification flow after individual subunits have been validated and integrated. The evidence emphasizes that finding a submodule bug only after booting Linux would be difficult, so a hybrid verification strategy is needed before and during integration. [SoC integration follows subunit validation]
Role in verification
Simulation is described as necessary for three related purposes: validating all modules of a large processor, ensuring correct SoC integration, and running software on the device under test. [Simulation supports SoC integration]
Formal verification is valuable for exhaustively exploring input combinations against ISA-specified behavior, often expressed as SystemVerilog assertions, but the evidence states that simulation remains necessary for large-processor module validation and SoC integration. [Formal and simulation roles]
Software-driven exposure of integration issues
Booting a real Linux system can expose issues not found by other EDA checks or formal proofs, including asynchronous timing anomalies. The evidence also notes that a processor core may still boot Linux despite many latent bugs, so software execution is useful but not sufficient as a sole correctness criterion. [Linux boot and latent bugs]
Impact of custom processor features
For RISC-V designs, custom instructions and added features increase verification effort and complexity. When changes affect pipeline control, ALU conflicts, cache behavior, or load-store paths, teams must re-verify impacted functionality and ensure the additions do not negatively affect the rest of the design. The evidence further states that understanding how microarchitectural changes affect the SoC and workloads is essential. [Custom features affect SoC verification]
Practical implication
The evidence presents SoC integration as part of a broader verification flow rather than a one-time checklist item. Because verification is never truly complete, teams rely on coverage, hardware-assisted validation techniques, and operational software workloads to reduce residual risk and improve confidence. [Verification sufficiency and operational testing]