# What is Quil?

[Quil](https://docs.rigetti.com/qcs/references/quil) — which stands for Quantum Instruction Language — is the language in which you'll write programs for execution on Rigetti QPUs. Quil is is an open standard governed by the [Quil-Lang organization](https://github.com/quil-lang/quil).

Quil is most easily written and executed by using the [Quil SDK](https://docs.rigetti.com/qcs/master#quil-sdk).

## Quil-T

[Quil-T](https://docs.rigetti.com/qcs/references/quil) is an extension of Quil which supports analog, pulse-level control. Quil-T is natively supported by Rigetti QPUs.

### Calibrations

Calibrations are a description of how a high-level Quil (or Quil-T) program should be transpiled into a series of analog pulse instructions. In particular, the calibrations that are provided by Rigetti are derived by a careful process of tuning various parameters to maximize the execution quality for the target QPU.

Within QCS, all Quil programs (even those not using Quil-T syntax) are transpiled to a Quil-T pulse program as a step in the assembly process. When you compile your Quil program for execution on a QPU, the most current calibrations available for the QPU will be used to calibrate your program. You can override these calibrations by supplying calibrations explicitly within your program in the form of `DEFFRAME`, `DEFWAVEFORM`, and `DEFCAL` blocks. This support for user-calibrated programs gives you more precise control over how your programs are executed on our QPUs.

{% hint style="warning" %}
Frame definitions (`DEFFRAME` blocks) may not be modified within programs, but must be included verbatim as provided in the Rigetti calibrations.
{% endhint %}

#### Inspection using the QCS CLI

If you'd like to inspect Quil-T calibrations for a QPU, you can use the QCS API's [get-quilt-calibrations](https://docs.api.qcs.rigetti.com/#operation/GetQuiltCalibrations) endpoint. To call this endpoint using the [QCS CLI](https://docs.rigetti.com/qcs/references/qcs-cli), use the [`qcs api`](https://docs.rigetti.com/qcs/references/qcs-cli#api-commands) command. For instance, to get calibrations for `Aspen-11`, run:

```bash
qcs api get-quilt-calibrations Aspen-11
```

{% hint style="success" %}
If you have [`jq`](https://github.com/stedolan/jq) installed, you can get more human-readable output with:

```bash
qcs api get-quilt-calibrations Aspen-11 | jq -r '.quilt'
```

{% endhint %}

#### Inspection using pyQuil

To inspect Quil-T calibrations for a QPU using [pyQuil](https://docs.rigetti.com/qcs/references/pyquil), you can use the `calibration_program` property on `QPUCompiler`. For instance, to get calibrations for `Aspen-11`, write:

```python
from pyquil import get_qc

qc = get_qc("Aspen-11")

print(qc.compiler.calibration_program)
```

## Other Languages

OpenQASM v2 may be transpiled to Quil using the [Quil compiler](https://docs.rigetti.com/qcs/references/quilc).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.rigetti.com/qcs/guides/quil/quil.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
