Configuration Reference

OF-CFG-001 v0.4.0

Complete specification for openforge.yaml, the project configuration file. This file must be placed at the root of every OpenForge project and defines all project metadata, design sources, verification settings, analysis configuration, and CI/CD integration. Validate your config at any time with openforge config validate.

Overview #

The configuration file is structured into five top-level sections:

SectionPurposeRequired
projectProject metadata — name, top module, target PDKYes
designDesign file paths — RTL sources, includes, constraintsYes
verificationVerification settings — simulation, formal, crypto checksNo (defaults used)
analysisPhysical analysis — timing, power, area targetsNo
ci_integrationCI/CD pipeline triggers and stagesNo

project #

project:
  name: "my-ntt-accelerator"    # Project identifier (alphanumeric, hyphens)
  top_module: "ntt_top"           # Top-level RTL module name
  target_pdk: "sky130"            # Target PDK: sky130 | gf22fdx
  description: "ML-KEM NTT accelerator for QCORE-C1"   # Optional
  version: "1.0.0"               # Semantic version (optional)
FieldTypeRequiredDescription
namestringYesUnique project identifier. Used in directory names, URLs, and reports.
top_modulestringYesTop-level Verilog/SystemVerilog module name for synthesis and simulation.
target_pdkstringYesProcess design kit. sky130 for prototyping, gf22fdx for production.
descriptionstringNoHuman-readable project description.
versionstringNoSemantic version string.

design #

design:
  sources:                         # RTL source files (glob patterns supported)
    - src/rtl/*.v
    - src/rtl/*.sv
    - src/rtl/ntt/*.v
  includes:                        # Include/header directories
    - src/include/
  constraints:                     # SDC timing constraint files
    - constraints/timing.sdc
  exclude:                         # Files to exclude from sources (optional)
    - src/rtl/deprecated_*.v
FieldTypeRequiredDescription
sourceslist[string]YesRTL source files. Supports glob patterns (*, **). Verilog (.v), SystemVerilog (.sv), VHDL (.vhd).
includeslist[string]NoDirectories added to the include search path (+incdir+).
constraintslist[string]NoSDC timing constraint files for OpenSTA analysis.
excludelist[string]NoGlob patterns for files to exclude from source collection.

verification #

Top-level verification configuration. Contains sub-sections for simulation, formal verification, and crypto-specific checks.

verification.simulation #

verification:
  simulation:
    tool: verilator                # verilator | icarus | ghdl
    testbenches:
      - tb/test_ntt_butterfly.py
      - tb/test_mlkem_encaps.py
    coverage:
      line: true
      toggle: true
      fsm: true
    trace:
      enabled: false
      format: fst                  # vcd | fst
    power_trace: true              # Enable Hamming-model power traces
    timeout: 3600                 # Seconds
    seed: 42                      # Random seed (null for random)
FieldTypeDefaultDescription
toolstringverilatorSimulation engine. Verilator for speed, Icarus for event-driven compatibility.
testbencheslist[string]Auto-detect tb/*.pyCocotb testbench files to execute.
coverage.linebooleantrueEnable line coverage tracking.
coverage.togglebooleantrueEnable signal toggle coverage.
coverage.fsmbooleantrueEnable FSM state/transition coverage.
power_tracebooleanfalseCollect Hamming-model power traces (requires Dyber-extended Verilator).
timeoutinteger3600Simulation timeout in seconds.
seedinteger|nullnullRandom seed for reproducibility. Null for random.

verification.formal #

verification:
  formal:
    tool: symbiyosys
    properties:
      - formal/ntt_properties.sv
      - formal/fsm_properties.sv
      - formal/crypto_properties.sv
    engines:
      - smtbmc: z3                 # Bounded model checking with Z3
      - prove: abc                 # Unbounded proofs with ABC PDR
    depth: 50                     # BMC exploration depth
    timeout: 3600                 # Per-property timeout (seconds)
    auto_assert: true             # Auto-insert crypto assertions via Yosys pass
FieldTypeDefaultDescription
toolstringsymbiyosysFormal verification frontend.
propertieslist[string]Auto-detect formal/*.svSVA property files to verify.
engineslist[map][{smtbmc: z3}, {prove: abc}]Formal engines and solvers.
depthinteger50BMC exploration depth (number of clock cycles).
timeoutinteger3600Timeout per property in seconds.
auto_assertbooleantrueEnable automatic crypto assertion insertion via Yosys pass.

verification.crypto_verification #

The crypto verification section configures all five Dyber proprietary analysis engines. Each engine can be individually enabled/disabled and configured.

verification:
  crypto_verification:
    constant_time:
      enabled: true
      secrets:                     # Signal names containing secret data
        - "key_reg"
        - "seed"
        - "private_key"
      public:                      # Signals safe to leak
        - "ciphertext"
        - "public_key"

    side_channel:
      enabled: true
      power_model: hamming_distance  # hamming_weight | hamming_distance | switching
      tvla_threshold: 4.5           # Welch's t-test threshold
      num_traces: 10000

    entropy_analysis:
      enabled: true
      sources:
        - signal: "qrng_out"
          min_entropy: 0.99
      sinks:
        - signal: "key_gen_seed"
          required_entropy: 256

    fips_compliance:
      enabled: true
      level: "140-3 Level 2"
      checks:
        - key_zeroization
        - self_test_coverage
        - error_handling
        - rng_health_tests
        - approved_algorithms

    ntt_validation:
      enabled: true
      standard: "FIPS-203"          # FIPS-203 | FIPS-204
      exhaustive_test: true

analysis #

analysis:
  timing:
    tool: opensta
    clock_period: 5.0ns           # Target clock period (200 MHz)
    corner: typical               # typical | fast | slow

  power:
    tool: openroad
    activity_file: sim/activity.saif  # From Verilator SAIF export

  area:
    tool: yosys
FieldTypeDefaultDescription
timing.toolstringopenstaStatic timing analysis tool.
timing.clock_periodstringRequiredTarget clock period with unit (e.g., 5.0ns, 10ns).
timing.cornerstringtypicalProcess corner: typical, fast, slow.
power.activity_filestringAuto from simSAIF switching activity file for realistic power numbers.
area.toolstringyosysArea estimation via synthesis gate count.

ci_integration #

ci_integration:
  github_actions: true
  on_push:                          # Stages triggered on push to any branch
    - lint
    - simulation
    - formal_quick                  # BMC only, reduced depth
  on_pr:                            # Stages triggered on pull request
    - full_verification             # All sim + formal + basic crypto
  nightly:                          # Stages triggered on nightly schedule
    - crypto_verification           # Full crypto suite
    - exhaustive_ntt                # NTT exhaustive test (long-running)
  report_format: sarif             # Output format for CI: sarif | junit | json

Complete Example #

A full openforge.yaml for an ML-KEM accelerator project targeting the QCORE-C1 chiplet:

# openforge.yaml — QCORE-C1 ML-KEM Accelerator

project:
  name: "qcore-c1-mlkem"
  top_module: "qcore_top"
  target_pdk: "sky130"
  description: "ML-KEM/ML-DSA accelerator for QCORE-C1 chiplet"
  version: "0.9.0"

design:
  sources:
    - src/rtl/*.v
    - src/rtl/*.sv
    - src/rtl/ntt/*.v
    - src/rtl/keymgmt/*.v
  includes:
    - src/include/
  constraints:
    - constraints/timing.sdc

verification:
  simulation:
    tool: verilator
    testbenches:
      - tb/test_ntt_butterfly.py
      - tb/test_mlkem_encaps.py
      - tb/test_mldsa_sign.py
      - tb/test_keymgmt.py
    coverage:
      line: true
      toggle: true
      fsm: true
    power_trace: true

  formal:
    tool: symbiyosys
    properties:
      - formal/ntt_properties.sv
      - formal/keymgmt_properties.sv
      - formal/fsm_properties.sv
    engines:
      - smtbmc: z3
      - prove: abc
    depth: 50
    auto_assert: true

  crypto_verification:
    constant_time:
      enabled: true
      secrets: ["key_reg", "seed", "private_key", "nonce"]
      public: ["ciphertext", "public_key", "signature"]

    side_channel:
      enabled: true
      power_model: hamming_distance
      tvla_threshold: 4.5
      num_traces: 10000

    entropy_analysis:
      enabled: true
      sources:
        - signal: "qrng_out"
          min_entropy: 0.99
      sinks:
        - signal: "key_gen_seed"
          required_entropy: 256

    fips_compliance:
      enabled: true
      level: "140-3 Level 2"
      checks: [key_zeroization, self_test_coverage, error_handling, rng_health_tests]

    ntt_validation:
      enabled: true
      standard: "FIPS-203"
      exhaustive_test: true

analysis:
  timing:
    tool: opensta
    clock_period: 5.0ns
  power:
    tool: openroad
    activity_file: sim/activity.saif
  area:
    tool: yosys

ci_integration:
  github_actions: true
  on_push: [lint, simulation, formal_quick]
  on_pr: [full_verification]
  nightly: [crypto_verification, exhaustive_ntt]