CHIA Logo

Getting Started

  • CHIA Basics
  • Installation
    • Optional extras
    • Core dependencies
    • Next steps
  • Quickstart: Say Hello (World) with CHIA
    • What we will do in this tutorial
    • Requirements
    • 0. Project Setup
      • Fix default .bashrc
    • 1. print() ing Hello from a worker
    • 2. Print Hello in Verilator
    • 3. Asking an LLM to say Hello
    • 4. Editing RTL to say Hello

Concepts

  • Architecture Overview
    • CHIA flows
      • Nodes
      • Programmatic edges
      • Agentic edges with tools
    • CHIA clusters
      • Physical machines and logical workers
      • Containerization
      • Cloud integration
      • The cluster config and CLI
    • Fault tolerance & reproducibility
    • Infrastructure

User Guides

  • ChiaFunction
    • A few Ray concepts
    • Executing a CHIA node
      • Local call
      • Remote, asynchronous (chia_remote)
      • Remote, blocking (chia_remote_blocking)
      • Chaining refs into a task graph
      • Per-call option overrides (.options)
      • Functional form (ChiaCallRemote)
    • Collecting results
      • Cancellation
    • Worker-side setup and cleanup hooks
    • Defining your own node
    • Wrapping actors (chia_actor)
    • Cross-cutting features
    • See also
  • ChiaTool
    • A few MCP concepts
    • Anatomy of a tool
    • The tool lifecycle
      • Constructing a tool deploys it
      • Attaching a tool to an agent
      • Stopping a tool
    • Bridging tools back to nodes
    • Defining your own tool
    • Tool placement and resources
    • Advanced
      • The explicit initialization idiom
      • Intermediate base classes
    • See also
  • Cluster Configuration Reference
    • Top-level structure
      • Top-level keys
    • provider
    • auth
    • available_node_types
      • Container config
    • Cloud nodes
      • aws_nodes
      • gcp_nodes
      • Referencing cloud nodes (@ placeholders)
      • tunnel_defaults
    • A mixed on-prem + cloud example
    • Command execution order
      • chia up — head node
      • chia up — worker node
      • chia down
  • Building a CHIA-compatible Docker image
    • What “CHIA-compatible” means
    • Extend a CHIA base image with your tool
    • Extend your tool image with CHIA
    • Wiring the image into a cluster
    • Pitfalls
    • See also
  • Caching and Bypass
    • Tags
    • Bypass
      • Configuration
      • Setup and providers
      • Serving a file instead of a provider
      • Gating with a condition
    • Cache
      • Writing is automatic
      • Reading is manual (via bypass)
    • Putting it together: populate, then replay
  • Profiling
    • Enabling profiling
    • What gets recorded
      • Dependency edges
    • Attaching custom metadata
    • Visualizing a profile
  • Example: Agentic RoCC Accelerator (MemCpy)
    • What it does
    • Components
    • The accelerator contract
    • Running it
    • Tunable parameters
    • Debug feedback
    • Output and per-iteration diffs
  • gem5 ↔ BOOM Microarchitecture Alignment
    • Overview
    • How it works
      • The per-iteration flow
      • The Verilator golden cache
      • Distributing gem5 work across the cluster
      • The LLM in the loop
      • Targeting a different configuration
    • Setup
  • Autonomous CIRCT Issue Solving
    • Overview
    • How it works
      • The per-issue pipeline
      • Triage on the head
      • The deterministic verify gate
      • Distributing work across the cluster
      • The LLM in the loop
      • The review flow
      • Principled fixes and maintainer friendliness
      • Targeting a different repository
    • Setup
  • BOOM Critical-Path Timing Optimization
    • Overview
    • How it works
      • The per-iteration pipeline
      • The timing_experiment A/B tool
      • Distributing work across the cluster
      • The LLM in the loop
      • The seed flow
    • Setup

CLI Reference

  • CLI Reference
    • Cluster management
      • chia up <config.yaml>
      • chia down <config.yaml>
    • Visualization
      • chia viz <source.py>
      • chia viz-profile <log...>
    • Jobs
      • chia job stop <job_id>
    • FireSim

API Reference

  • Base Runtime
    • Bypass
      • How it works
      • Usage
      • YAML format
      • Provider signature
      • Condition gate
      • get_active_bypass()
      • Bypass
        • Bypass.file_server()
        • Bypass.set_provider()
        • Bypass.set_cond()
        • Bypass.active
        • Bypass.is_bypassed()
        • Bypass.get_provider_info()
        • Bypass.get_state()
        • Bypass.load_state()
    • Cache
      • Usage
      • YAML format (same file as bypass, parallel cache: section)
      • start_cache()
      • stop_cache()
      • get_active_cache()
      • is_cached()
    • Chia Function
      • ChiaWrapped
      • ChiaFunction
      • ChiaCallRemote()
      • ObjectRefCallback
      • ChiaActorHandle
        • ChiaActorHandle.actor
      • chia_actor()
      • get()
      • chia_cancel()
    • Chia Wait
      • TrackedRef
      • chia_wait()
    • Chia KV Store
      • get_or_create_kv_store()
      • query_kv()
    • Colocated
      • PinnedChiaFn
        • PinnedChiaFn.options()
      • ColocatedNode
        • ColocatedNode.placement_group
        • ColocatedNode.owns_placement_group
        • ColocatedNode.task_options
        • ColocatedNode.close()
    • Dispatch Proxy
      • should_proxy()
      • get_dispatch_proxy()
    • PID Registry
      • PidRegistryActor
        • PidRegistryActor.kill_all()
      • chia_cancel()
    • LLM Call
      • QueryResult
      • LLMCallBase
        • LLMCallBase.prompt()
    • MCP tool servers
      • Chia Tool
        • ToolInfo
        • ChiaTool
        • resolve_tool_url()
        • start_router()
        • stop_router()
      • Chia Tool Template
        • ChiaToolTemplate
      • Bash Tool
        • BashTool
      • Async Bash Tool
        • AsyncBashTool
      • Async Job Tool
        • AsyncJobTool
      • Util
        • make_router_lifespan()
  • Chipyard Nodes
    • State definitions
      • BuildTarget
        • BuildTarget.VERILATOR
        • BuildTarget.VERILATOR_DEBUG
        • BuildTarget.FIRESIM_METASIM_VERILATOR
      • WaveWindow
      • BuildArtifact
        • BuildArtifact.name
        • BuildArtifact.simulator_binary_content
        • BuildArtifact.simulator_binary_name
        • BuildArtifact.config
        • BuildArtifact.config_package
        • BuildArtifact.target
        • BuildArtifact.success
        • BuildArtifact.stdout
        • BuildArtifact.stderr
        • BuildArtifact.returncode
        • BuildArtifact.generated_src_files
      • RiscvBuildArtifact
        • RiscvBuildArtifact.binary_name
        • RiscvBuildArtifact.binary_content
        • RiscvBuildArtifact.target
        • RiscvBuildArtifact.success
        • RiscvBuildArtifact.stdout
        • RiscvBuildArtifact.stderr
        • RiscvBuildArtifact.returncode
        • RiscvBuildArtifact.dump
      • RiscvObjdumpArtifact
        • RiscvObjdumpArtifact.binary_name
        • RiscvObjdumpArtifact.dump
        • RiscvObjdumpArtifact.target
        • RiscvObjdumpArtifact.success
        • RiscvObjdumpArtifact.stdout
        • RiscvObjdumpArtifact.stderr
        • RiscvObjdumpArtifact.returncode
      • RunResult
        • RunResult.test_binary_name
        • RunResult.log
        • RunResult.out
        • RunResult.returncode
        • RunResult.success
        • RunResult.vcd_s3_path
        • RunResult.vcd_size_bytes
        • RunResult.out_s3_path
        • RunResult.log_s3_path
        • RunResult.wave_windows
      • CosimResult
        • CosimResult.elf_name
        • CosimResult.match
        • CosimResult.matched
        • CosimResult.completed
        • CosimResult.first_divergence
        • CosimResult.sim_cycles
        • CosimResult.failing_trace_gz
      • SpikeResult
        • SpikeResult.test_binary_name
        • SpikeResult.isa
        • SpikeResult.log
        • SpikeResult.commit_log
        • SpikeResult.returncode
        • SpikeResult.success
      • SpikeBuildArtifact
        • SpikeBuildArtifact.success
        • SpikeBuildArtifact.spike_bin
        • SpikeBuildArtifact.stdout
        • SpikeBuildArtifact.stderr
        • SpikeBuildArtifact.returncode
      • TortureMode
        • TortureMode.SINGLE
        • TortureMode.OVERNIGHT
        • TortureMode.REPLAY
      • TortureTestRun
        • TortureTestRun.name
        • TortureTestRun.success
        • TortureTestRun.test_s
        • TortureTestRun.test_dump
        • TortureTestRun.spike_sig
        • TortureTestRun.rtlsim_sig
        • TortureTestRun.pseg_test_s
      • TortureResult
        • TortureResult.name
        • TortureResult.config
        • TortureResult.config_package
        • TortureResult.mode
        • TortureResult.success
        • TortureResult.num_tests
        • TortureResult.num_failures
        • TortureResult.tests
        • TortureResult.stdout
        • TortureResult.stderr
        • TortureResult.returncode
        • TortureResult.build_artifact
    • Chisel build
      • ChiselBuildNode
        • ChiselBuildNode.build()
    • CIRCT
      • firtool_lower_chirrtl_to_hw()
      • circt_opt_run()
      • circt_opt_lower_hw_to_verilog()
      • rebuild_circt_opt_with_custom_pass()
      • list_circt_passes()
      • chisel_elaborate_to_chirrtl()
      • circt_ninja_build()
      • circt_warm_build()
      • circt_run_lit()
      • BuildTool
        • BuildTool.build()
        • BuildTool.build_status()
      • LitTool
        • LitTool.run_lit()
        • LitTool.lit_status()
    • Macro compiler
      • SRAMSpec
      • rename_ports()
      • parse_mems_conf()
      • generate_macrocompiler_lib()
      • remap_with_macrocompiler()
      • assemble_generated_src_with_macros()
      • generate_macro_stubs()
    • Chipyard / Hammer
      • ChipyardHammerResult
      • ChipyardHammerCollectResult
      • ChipyardHammerNode
        • ChipyardHammerNode.make()
        • ChipyardHammerNode.collect()
    • RISC-V build
      • RiscvBuildNode
        • RiscvBuildNode.build()
    • RISC-V objdump
      • RiscvObjdumpNode
        • RiscvObjdumpNode.dump()
    • RISC-V DV generation
      • GenSpec
        • GenSpec.test
        • GenSpec.iterations
        • GenSpec.instr_cnt
        • GenSpec.plusargs
        • GenSpec.gen_timeout
        • GenSpec.seed
        • GenSpec.extra_args
        • GenSpec.sim_opts()
      • RiscvDvGenNode
        • RiscvDvGenNode.compile_generator()
        • RiscvDvGenNode.generate()
    • Torture
      • TortureRunNode
        • TortureRunNode.torture()
    • Verilator run
      • VerilatorRunNode
        • VerilatorRunNode.run()
        • VerilatorRunNode.run_metasim()
    • Spike cosim
  • Model Backends
    • Claude
      • ClaudeCodeQueryResult
      • ClaudeCodeError
      • RateLimitError
      • AuthenticationError
      • BillingError
      • InvalidRequestError
      • ServerError
      • MaxOutputTokensError
      • UnknownClaudeError
      • parse_rate_limit_reset()
      • parse_rate_limit_event()
      • ClaudeCodeLLM
        • ClaudeCodeLLM.prompt()
    • Bedrock
      • BedrockError
      • RateLimitError
      • AuthenticationError
      • InvalidRequestError
      • ServerError
      • MaxOutputTokensError
      • UnknownBedrockError
      • BedrockLLM
        • BedrockLLM.prompt()
    • Vertex
      • VertexError
      • RateLimitError
      • AuthenticationError
      • InvalidRequestError
      • ServerError
      • MaxOutputTokensError
      • UnknownVertexError
      • ContentBlockedError
      • VertexGeminiLLM
        • VertexGeminiLLM.prompt()
      • VertexGenericLLM
        • VertexGenericLLM.prompt()
    • Antigravity
      • AntigravityError
      • RateLimitError
      • AuthenticationError
      • BillingError
      • InvalidRequestError
      • ServerError
      • MaxOutputTokensError
      • UnknownAntigravityError
      • parse_rate_limit_reset()
      • AntigravityLLM
        • AntigravityLLM.prompt()
    • Codex
      • CodexError
      • RateLimitError
      • AuthenticationError
      • BillingError
      • InvalidRequestError
      • ServerError
      • MaxOutputTokensError
      • UnknownCodexError
      • CodexQueryResult
      • parse_session_id()
      • parse_rate_limit_reset()
      • CodexLLM
        • CodexLLM.prompt()
    • Opencode
      • OpenCodeError
      • RateLimitError
      • AuthenticationError
      • BillingError
      • InvalidRequestError
      • ServerError
      • MaxOutputTokensError
      • UnknownOpenCodeError
      • parse_session_id()
      • parse_run_error()
      • OpenCodeLLM
        • OpenCodeLLM.prompt()
    • Openai Compat
      • OpenAICompatError
      • RateLimitError
      • AuthenticationError
      • InvalidRequestError
      • ServerError
      • MaxOutputTokensError
      • ContextLengthExceededError
      • BillingError
      • UnknownOpenAIError
      • OpenAICompatLLM
        • OpenAICompatLLM.prompt()
    • Openai Providers
      • OpenAILLM
        • OpenAILLM.prompt()
      • FireworksLLM
        • FireworksLLM.prompt()
      • GroqLLM
        • GroqLLM.prompt()
      • OpenRouterLLM
        • OpenRouterLLM.prompt()
    • Ollama
      • Auth
      • OllamaLLM
        • OllamaLLM.prompt()
    • vLLM
      • One model per server
      • Auth
      • VLLMLLM
        • VLLMLLM.prompt()
  • FireSim
    • Config
      • FireSimBuildConfig
        • FireSimBuildConfig.name
        • FireSimBuildConfig.platform
        • FireSimBuildConfig.target_project
        • FireSimBuildConfig.target_project_makefrag
        • FireSimBuildConfig.design
        • FireSimBuildConfig.target_config
        • FireSimBuildConfig.platform_config
        • FireSimBuildConfig.fpga_frequency
        • FireSimBuildConfig.build_strategy
        • FireSimBuildConfig.bit_builder_recipe
        • FireSimBuildConfig.deploy_quintuplet
        • FireSimBuildConfig.post_build_hook
        • FireSimBuildConfig.metasim_customruntimeconfig
        • FireSimBuildConfig.build_id
        • FireSimBuildConfig.build_group
        • FireSimBuildConfig.incremental_base_build_id
        • FireSimBuildConfig.market
        • FireSimBuildConfig.enable_pr
        • FireSimBuildConfig.pr_module_name
        • FireSimBuildConfig.pr_base_build_id
        • FireSimBuildConfig.pr_partition_cell
      • FireSimRunConfig
        • FireSimRunConfig.hw_config_name
        • FireSimRunConfig.build_ref
        • FireSimRunConfig.agfi
        • FireSimRunConfig.workload_name
        • FireSimRunConfig.num_sims
        • FireSimRunConfig.instance_type
        • FireSimRunConfig.plusarg_passthrough
        • FireSimRunConfig.terminate_on_completion
        • FireSimRunConfig.driver_tarball_path
        • FireSimRunConfig.ami_id
        • FireSimRunConfig.market
        • FireSimRunConfig.bootbinary_path
        • FireSimRunConfig.rootfs_path
        • FireSimRunConfig.result_id
        • FireSimRunConfig.driver_s3_path
        • FireSimRunConfig.bootbinary_s3_path
        • FireSimRunConfig.rootfs_s3_path
        • FireSimRunConfig.resolve_build()
      • FireSimConfig
        • FireSimConfig.chipyard_path
        • FireSimConfig.deploy_path
        • FireSimConfig.build_recipes_file
      • load_build_recipes()
      • load_hwdb()
      • fetch_build_info()
    • Chia Functions
      • firesim_build_bitstream()
      • firesim_run_workload()
    • State Def
      • BitstreamBuildResult
        • BitstreamBuildResult.recipe_name
        • BitstreamBuildResult.agfi
        • BitstreamBuildResult.afi
        • BitstreamBuildResult.success
        • BitstreamBuildResult.build_log
        • BitstreamBuildResult.hwdb_entry
        • BitstreamBuildResult.driver_s3_path
        • BitstreamBuildResult.build_id
        • BitstreamBuildResult.build_ref
        • BitstreamBuildResult.bitstream_path
      • FireSimRunResult
        • FireSimRunResult.workload_name
        • FireSimRunResult.success
        • FireSimRunResult.uartlogs
        • FireSimRunResult.rootfs_outputs
        • FireSimRunResult.sim_outputs
        • FireSimRunResult.duration_seconds
  • VLSI
    • Hammer
      • HammerResult
      • HammerCollectResult
      • HammerMatchResult
      • HammerCollectFsResult
      • HammerNode
        • HammerNode.run()
        • HammerNode.collect()
        • HammerNode.list_matches()
        • HammerNode.read_chunk()
        • HammerNode.collect_fs()
    • SRAM characterization (CACTI)
      • CACTI Runner
        • CACTIResult
        • run_cacti()
        • analytical_area_estimate()
      • CACTI Macrocompiler
        • generate_cacti_macrocompiler_lib()
      • SRAM Characterize
        • CharacterizedSRAM
        • CactiCharacterization
        • characterize_top_mems_conf_with_cacti()
        • characterize_srams_with_cacti()
      • Liberty Gen
        • LibertyCorner
        • generate_liberty()
      • LEF Gen
        • generate_lef()
  • Databases
    • Base
      • ExecResult
      • DatabaseNode
        • DatabaseNode.paramstyle
        • DatabaseNode.close()
        • DatabaseNode.init_schema()
        • DatabaseNode.executescript()
        • DatabaseNode.add_column_if_missing()
        • DatabaseNode.schema()
        • DatabaseNode.execute()
        • DatabaseNode.executemany()
        • DatabaseNode.transaction()
        • DatabaseNode.query()
        • DatabaseNode.query_one()
        • DatabaseNode.query_value()
        • DatabaseNode.spawn_query_tool()
    • Postgres Node
      • PostgresNode
        • PostgresNode.paramstyle
        • PostgresNode.spawn_query_tool()
        • PostgresNode.init_schema()
        • PostgresNode.executescript()
        • PostgresNode.add_column_if_missing()
        • PostgresNode.schema()
        • PostgresNode.execute()
        • PostgresNode.executemany()
        • PostgresNode.transaction()
        • PostgresNode.query()
        • PostgresNode.query_one()
        • PostgresNode.query_value()
      • PostgresQueryTool
        • PostgresQueryTool.query()
        • PostgresQueryTool.schema()
        • PostgresQueryTool.execute()
    • Sqlite Node
      • SQLiteExecResult
      • SQLiteNode
        • SQLiteNode.paramstyle
        • SQLiteNode.spawn_query_tool()
        • SQLiteNode.init_schema()
        • SQLiteNode.executescript()
        • SQLiteNode.add_column_if_missing()
        • SQLiteNode.schema()
        • SQLiteNode.execute()
        • SQLiteNode.executemany()
        • SQLiteNode.transaction()
        • SQLiteNode.query()
        • SQLiteNode.query_one()
        • SQLiteNode.query_value()
        • SQLiteNode.wal_checkpoint()
      • SQLiteQueryTool
        • SQLiteQueryTool.query()
        • SQLiteQueryTool.schema()
        • SQLiteQueryTool.execute()
  • GitHub
    • Github Client
      • GithubError
      • GithubAuthError
      • GithubRateLimitError
      • GithubNotFoundError
      • GithubRequestError
      • GithubServerError
      • GithubClient
    • Github Issues Node
      • GithubIssuesNode
        • GithubIssuesNode.recent()
        • GithubIssuesNode.get_issue()
        • GithubIssuesNode.get()
        • GithubIssuesNode.linked_pull_requests()
    • Github Pulls Node
      • GithubPullsNode
        • GithubPullsNode.recent()
        • GithubPullsNode.get_pull()
        • GithubPullsNode.get()
        • GithubPullsNode.pull_diff()
        • GithubPullsNode.reviews()
        • GithubPullsNode.review_comments()
        • GithubPullsNode.conversation_comments()
        • GithubPullsNode.check_runs()
        • GithubPullsNode.review_feedback()
    • State Def
      • GithubComment
      • GithubIssue
        • GithubIssue.to_markdown()
      • GithubReview
      • GithubReviewComment
      • GithubPull
      • GithubCheckAnnotation
      • GithubCheckRun
      • GithubPullFeedback
        • GithubPullFeedback.is_empty()
        • GithubPullFeedback.to_markdown()
  • AWS
    • Config
      • AWSConfig
      • EC2InstanceConfig
    • EC2
      • EC2Instance
      • get_default_ami()
      • launch_ec2_instances()
      • wait_for_instances()
      • terminate_ec2_instances()
    • Host
      • EphemeralEC2Host
        • EphemeralEC2Host.wait_ready()
        • EphemeralEC2Host.rsync_up()
        • EphemeralEC2Host.rsync_down()
        • EphemeralEC2Host.run()
        • EphemeralEC2Host.run_script()
        • EphemeralEC2Host.terminate()
    • S3
      • S3Error
      • S3AuthError
      • S3NotFoundError
      • S3RequestError
      • S3ServerError
      • S3ObjectInfo
      • S3Node
        • S3Node.upload_file()
        • S3Node.download_file()
        • S3Node.put_bytes()
        • S3Node.get_bytes()
        • S3Node.list()
        • S3Node.exists()
        • S3Node.delete()
        • S3Node.ensure_bucket()
  • Simulators
    • gem5
      • Gem5Isa
      • Gem5Variant
      • Gem5BuildArtifact
      • Gem5RunResult
      • Gem5SourceState
      • Gem5Node
        • Gem5Node.placement_group
        • Gem5Node.owns_placement_group
        • Gem5Node.task_options
        • Gem5Node.spawn_tool()
        • Gem5Node.close()
        • Gem5Node.build_gem5()
        • Gem5Node.run_gem5()
        • Gem5Node.capture_gem5_source_state()
        • Gem5Node.restore_gem5_source_state()
        • Gem5Node.parse_gem5_stats()
        • Gem5Node.parse_gem5_stats_file()
        • Gem5Node.truncate_gz_trace()
        • Gem5Node.summarize_o3_pipeview()
      • Gem5ToolServer
        • Gem5ToolServer.build()
        • Gem5ToolServer.run()
        • Gem5ToolServer.stats()
        • Gem5ToolServer.list_workloads()
  • Analysis
    • Focal
      • FocalComparison
        • FocalComparison.more_sustainable
        • FocalComparison.verdict
        • FocalComparison.pct_change
        • FocalComparison.breakeven_alpha
      • focal_compare()
      • FocalSweep
        • FocalSweep.crosses_unity
      • FocalBothRefs
      • focal_sweep()
      • sweep_both_arches_as_ref()
    • PFAS
      • num_lith_masks()
      • get_PFAS_proxy()
  • LLM servers, providers, and agent Nodes
    • Base class
      • QueryResult
      • LLMCallBase
        • LLMCallBase.prompt()
    • Providers
      • CLIs
      • Remote providers
      • On-prem servers
CHIA
  • Search


© Copyright 2025-2026, Berkeley Architecture Research.

Built with Sphinx using a theme provided by Read the Docs.