Quartus Reference
Free reference guide: Quartus Reference
About Quartus Reference
The Quartus Reference is a searchable guide to Intel Quartus Prime FPGA design tool commands and workflows. It covers the complete Tcl-based command-line compilation flow (quartus_sh, quartus_map, quartus_fit, quartus_asm, quartus_sta), pin assignment commands for I/O planning, SDC (Synopsys Design Constraints) timing constraint syntax, and SignalTap II embedded logic analyzer configuration. Each entry includes real Tcl command syntax with working examples for Cyclone V, Arria 10, and Stratix 10 device families.
This reference is organized into seven categories: Project Setup (project creation, compilation flow, device/family selection), Pin Assignment (set_location_assignment, I/O standard, drive strength, slew rate, PLL pin configuration), SDC Timing (create_clock, create_generated_clock, set_input_delay, set_output_delay, set_false_path, set_multicycle_path), SignalTap (trigger configuration, data capture depth, sample clock selection), Fitter Settings (placement effort, routing optimization, timing-driven compilation), Programming (quartus_pgm JTAG/AS configuration, SOF/POF file generation), and Advanced Settings (incremental compilation, Design Partitions, LogicLock regions, partial reconfiguration).
Built for FPGA designers, digital hardware engineers, and embedded systems developers, this tool provides instant access to Quartus-specific Tcl commands and SDC constraint syntax. Whether you are setting up timing constraints for a 200 MHz system clock, configuring differential LVDS pin pairs, debugging signal integrity issues with SignalTap, or scripting automated compilation flows, this reference delivers the exact command syntax and parameter options you need. All content runs entirely in your browser.
Key Features
- Complete Tcl command-line compilation flow reference with quartus_sh, quartus_map, quartus_fit, quartus_asm, and quartus_sta commands
- Pin assignment commands covering set_location_assignment, I/O standards (LVDS, SSTL, HSTL, LVCMOS), drive strength, and slew rate
- SDC timing constraint syntax for create_clock, create_generated_clock, set_input_delay, set_output_delay, and timing exceptions
- SignalTap II logic analyzer setup including trigger conditions, capture depth, sample clock, and data filtering configuration
- Fitter optimization settings for placement effort levels, routing optimization, and timing closure strategies
- FPGA programming commands for JTAG and Active Serial modes with SOF, POF, and JIC file generation
- Advanced features including incremental compilation, Design Partitions, LogicLock placement regions, and partial reconfiguration
- Searchable across all seven categories with Tcl code syntax highlighting, instant filtering, and dark mode support
Frequently Asked Questions
How do I run a full Quartus compilation from the command line?
Use quartus_sh --flow compile <project_name> to run the complete flow (Analysis & Synthesis, Fitter, Assembler, Timing Analysis). For individual steps, use quartus_map (synthesis), quartus_fit (place and route), quartus_asm (generate programming files), and quartus_sta (static timing analysis). Create a project first with quartus_sh --prepare -f "<device_family>" -t <device_part> <project_name>. This reference includes the complete command syntax and common options for each step.
How do I write SDC timing constraints for a system clock?
Use create_clock -name sys_clk -period 5.0 [get_ports clk_in] for a 200 MHz clock. For generated clocks from PLLs, use create_generated_clock referencing the source clock. Set interface timing with set_input_delay and set_output_delay relative to the clock. Use set_false_path for asynchronous clock domain crossings and set_multicycle_path for multi-cycle paths. The reference includes complete SDC constraint examples for common FPGA timing scenarios.
How do I assign pins and I/O standards in Quartus?
Use set_location_assignment PIN_XX -to <signal_name> for pin placement, and set_instance_assignment -name IO_STANDARD "LVDS" -to <signal_name> for I/O standard selection. Additional assignments include CURRENT_STRENGTH_NEW for drive strength and SLEW_RATE for output slew control. For differential pairs, assign both the positive and negative pins. The reference covers all I/O assignment commands with examples for LVCMOS, LVDS, SSTL, and HSTL standards.
How do I set up SignalTap II for debugging?
SignalTap II is configured through Tcl commands or the GUI. Key parameters include the sample clock (must be a free-running clock in the design), capture depth (number of samples, typically 1K-128K), trigger conditions (basic, advanced, or state-based), and signal selection. The reference includes Tcl commands for adding SignalTap instances, configuring triggers, setting capture buffers, and reading captured data programmatically for automated debug workflows.
What are the key Fitter optimization settings?
Important Fitter settings include PLACEMENT_EFFORT_MULTIPLIER (default 1.0, increase for better placement), ROUTER_TIMING_OPTIMIZATION_LEVEL (NORMAL, MAXIMUM), FITTER_EFFORT (STANDARD_FIT, AUTO_FIT), and OPTIMIZE_HOLD_TIMING (for hold time fixing). Enable PHYSICAL_SYNTHESIS_EFFORT for register retiming and logic duplication. For timing-critical designs, use OPTIMIZE_POWER_DURING_FITTING = OFF to prioritize speed. The reference details all optimization settings with recommended values.
How do I generate and program FPGA configuration files?
Run quartus_asm to generate SOF (SRAM Object File) for JTAG programming. For flash-based programming, convert to POF (Programmer Object File) or JIC (JTAG Indirect Configuration) using quartus_cpf. Program via JTAG using quartus_pgm -m JTAG -o "P;output.sof". For Active Serial mode, use quartus_pgm -m AS. The reference covers file format conversion, multi-device JTAG chains, and programming cable configuration.
What is incremental compilation and how do I use it?
Incremental compilation divides the design into partitions that can be compiled independently, preserving placement and routing results for unchanged partitions. Define partitions using set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id <partition>. Use LogicLock regions to constrain partition placement. This reduces compilation time and helps preserve timing closure when making localized changes. The reference includes partition setup, LogicLock configuration, and export/import flows.
How do I constrain timing for clock domain crossings?
For asynchronous clock domain crossings, use set_false_path -from [get_clocks clk_a] -to [get_clocks clk_b] to exclude paths from timing analysis, assuming proper synchronization logic exists. For related clocks with known phase relationships, use set_multicycle_path. For maximum delay constraints on crossing paths, use set_max_delay with -datapath_only. The reference covers all timing exception commands with examples for common CDC scenarios including FIFO-based and handshake-based crossings.