CLI Reference

OF-CLI-001 v0.4.0

Complete reference for the openforge command-line tool. The CLI wraps the OpenForge REST API for terminal-based workflows and supports both local execution (running tools directly on the host) and remote execution (submitting jobs to an OpenForge server).

Overview #

$ openforge <command> [subcommand] [options]

Commands:
  init        Initialize a new OpenForge project
  verify      Run verification pipelines
  analyze     Run analysis (timing, power, area)
  report      Generate consolidated reports
  project     Manage projects (register, list, sync)
  ci          CI/CD integration helpers
  doctor      Check tool installation and health
  config      View/edit OpenForge configuration

Global Options #

OptionDescriptionDefault
--project-dir <path>Path to project root (containing openforge.yaml)Current directory
--config <path>Path to openforge.yaml (overrides project-dir search)Auto-detected
--server <url>OpenForge server URL for remote executionOPENFORGE_SERVER env var
--remoteExecute on remote server instead of locallyfalse
--verbose, -vVerbose output (repeat for more: -vv, -vvv)Normal
--quiet, -qSuppress non-error outputfalse
--jsonOutput results as JSON (for scripting)false
--no-colorDisable colored outputAuto-detect terminal
--help, -hShow help for any command—
--versionShow OpenForge version—

openforge init #

Initialize a new OpenForge project with directory structure and configuration.

$ openforge init <project-name> [options]
OptionDescriptionDefault
--template <name>Project template: crypto-accelerator, rng-module, hsm-controller, genericgeneric
--top-module <name>Top-level module nameDerived from project name
--pdk <name>Target PDK: sky130, gf22fdxsky130
--no-examplesDon't generate example design filesfalse
--git-initInitialize git repositorytrue

Examples

# Crypto accelerator with SKY130 target
$ openforge init my-ntt --template crypto-accelerator --pdk sky130

# HSM controller for GF22FDX production
$ openforge init hsm-ctrl --template hsm-controller --pdk gf22fdx --top-module hsm_top

# Blank project, no examples
$ openforge init scratch --template generic --no-examples

openforge verify #

Run verification pipelines. This is the primary command for validating designs.

$ openforge verify [options]

Pipeline Selection

OptionDescription
--allRun all verification stages (lint + sim + formal + crypto + analysis)
--simRun simulation pipeline only (Verilator + Cocotb)
--formalRun formal verification only (SymbiYosys)
--cryptoRun all crypto security checks
--lintRun linting only (Verible)
--stage <name>Run a specific named stage from custom flow definition

Simulation Options

OptionDescriptionDefault
--coverageEnable line, toggle, and FSM coverage trackingfalse
--traceGenerate waveform trace (VCD/FST)false
--trace-format <fmt>Trace format: vcd, fstfst
--power-traceCollect Hamming-model power tracesfalse
--seed <n>Random seed for reproducible simulationRandom
--timeout <s>Simulation timeout in seconds3600
--testbench <path>Run specific testbench file onlyAll configured testbenches

Formal Options

OptionDescriptionDefault
--timeout <s>Formal engine timeout per property3600
--depth <n>BMC exploration depth50
--engine <name>Force specific engine: smtbmc, bmc3, pdr, proveAuto (from config)
--property <name>Verify specific property onlyAll properties

Crypto Verification Options

OptionDescriptionDefault
--constant-timeRun constant-time analysis only—
--side-channelRun side-channel simulation only—
--traces <n>Number of power traces for SCA10000
--entropyRun entropy flow analysis only—
--fipsRun FIPS compliance checks only—
--nttRun NTT validation only—
--exhaustiveEnable exhaustive mode for NTT validationfalse

Examples

# Full verification suite
$ openforge verify --all

# Simulation with coverage and power traces
$ openforge verify --sim --coverage --power-trace

# Formal verification with extended depth
$ openforge verify --formal --depth 100 --timeout 7200

# Crypto: constant-time + SCA with 50K traces
$ openforge verify --crypto --constant-time --side-channel --traces 50000

# FIPS compliance check only
$ openforge verify --crypto --fips

# NTT validation in exhaustive mode
$ openforge verify --crypto --ntt --exhaustive

# Run on remote server
$ openforge verify --all --remote --server https://openforge.dyber.org

openforge analyze #

Run physical implementation analysis — timing, power, and area estimation.

$ openforge analyze [options]
OptionDescriptionDefault
--timingRun static timing analysis (OpenSTA)—
--powerRun power estimation—
--areaRun area estimation (Yosys synthesis)—
--allRun all analysis passes—
--vectors <path>Switching activity file (SAIF) for power estimationAuto-generated from sim
--pdk <name>Target PDK (overrides config)From openforge.yaml
--clock-period <ns>Target clock period for timingFrom SDC constraints
--fips-complianceRun FIPS compliance analysis—

Examples

# Full analysis suite
$ openforge analyze --all

# Timing analysis targeting 200MHz
$ openforge analyze --timing --clock-period 5.0

# Power estimation with custom activity file
$ openforge analyze --power --vectors sim/activity.saif

# FIPS compliance analysis
$ openforge analyze --fips-compliance

openforge report #

Generate consolidated reports from verification and analysis results.

$ openforge report [options]
OptionDescriptionDefault
--format <fmt>Output format: html, json, junit, sarif, csvhtml
--output <path>Output file or directory pathreports/
--template <path>Custom Jinja2 HTML templateBuilt-in template
--include <domains>Include specific domains: sim, formal, crypto, timingAll available
--openOpen HTML report in default browserfalse

Examples

# HTML dashboard with all results
$ openforge report --format html --output reports/dashboard.html --open

# SARIF output for GitHub Security tab
$ openforge report --format sarif --output reports/security.sarif

# JUnit XML for CI systems
$ openforge report --format junit --output reports/junit.xml

# JSON for custom processing
$ openforge report --format json --include crypto,formal

openforge project #

Manage projects on a remote OpenForge server.

$ openforge project <subcommand> [options]
SubcommandDescription
registerRegister current project with OpenForge server
listList all projects on the server
syncSync local project files to server
statusShow project verification status
deleteRemove project from server

Examples

# Register with server
$ openforge project register --server https://openforge.dyber.org

# List all projects
$ openforge project list --server https://openforge.dyber.org

# Check status
$ openforge project status

openforge ci #

CI/CD integration helpers for setting up automated verification pipelines.

$ openforge ci <subcommand> [options]
SubcommandDescription
setup --githubGenerate .github/workflows/openforge.yml
setup --gitlabGenerate .gitlab-ci.yml
setup --jenkinsGenerate Jenkinsfile
run --stage <name>Run a CI stage (for use inside CI pipelines)
statusShow latest CI run status

openforge doctor #

Diagnostic tool that checks your OpenForge installation health.

$ openforge doctor

┌─────────────────────────────────────────────────┐
│  OpenForge EDA — System Diagnostics              │
└─────────────────────────────────────────────────┘

✓ openforge CLI            v0.4.0
✓ Docker                   v24.0.7
✓ Python                   v3.11.6
✓ Verilator                v5.028     (power-trace: enabled, taint-track: enabled)
✓ Yosys                    v0.42
✓ SymbiYosys               v0.42
✓ Z3                       v4.13.0
✓ Bitwuzla                 v0.4.0
✓ ABC                      latest
✓ Cocotb                   v1.9.1
✓ Verible                  v0.0-3644
✓ OpenSTA                  v2.6.0
✓ openforge-ct             v0.4.0
✓ openforge-sca            v0.4.0
✓ openforge-entropy        v0.4.0
✓ openforge-fips           v0.4.0
✓ openforge-ntt            v0.4.0
✓ PDK: SkyWater SKY130     installed
âš  PDK: GlobalFoundries 22FDX  not installed (optional)

━━━ All checks passed (17/17 required, 1 optional missing) ━━━

openforge config #

View and manage OpenForge configuration.

SubcommandDescription
showDisplay resolved openforge.yaml configuration
validateValidate openforge.yaml against schema
set <key> <value>Set a configuration value
get <key>Get a configuration value

Environment Variables #

VariableDescriptionDefault
OPENFORGE_SERVERDefault OpenForge server URLNone (local execution)
OPENFORGE_TOKENAuthentication token for remote serverNone
OPENFORGE_PROJECT_DIRDefault project directoryCurrent directory
OPENFORGE_CACHE_DIRCache directory for incremental builds~/.openforge/cache
OPENFORGE_LOG_LEVELLog level: DEBUG, INFO, WARNING, ERRORINFO
PDK_ROOTRoot directory for installed PDKs/opt/pdk
VERILATOR_ROOTVerilator installation path (if not in PATH)Auto-detect

Exit Codes #

CodeMeaning
0All verification and analysis passed
1One or more verification checks failed
2Configuration error (invalid openforge.yaml)
3Tool not found or version mismatch
4Network/server error (remote execution)
5Timeout exceeded
126Permission denied
130Interrupted by user (Ctrl+C)