Skip to main content

Layout Automation

Virtuoso Layout Automation with SKILL

Cadence Virtuoso combined with SKILL scripting provides the primary mechanism for automating complex layout tasks, reducing manual effort and human errors in IC design flows.

SkyCadEda Engineering·

What is Virtuoso Layout Automation?

In modern semiconductor design, the layout phase is highly repetitive, involving tasks like running physical checks, generating standard patterns, and performing cross-die linking. Virtuoso Layout Automation uses the platform's scripting capability, primarily through SKILL (Scriptable Interface Language), to script the entire workflow.

SKILL acts as the glue, allowing engineers to interact with Virtuoso's internal APIs. Instead of clicking through menus, an automation script can programmatically load libraries, place instances, modify shapes, and run analysis jobs — all from a single command line executed within the Virtuoso environment.

The Role of SKILL in ASIC/IC Design

SKILL is a Lisp-dialect language, meaning it is particularly well-suited for defining symbolic, hierarchical data structures — exactly what IC layout and schematic are. Its automation capabilities are critical for several key functions:

  • Automated Cell Placement: Scripts calculate optimal placement points based on die size, available resources, and physical constraints, replacing manual placement/routing decisions.
  • DRC/LVS Flow Management: Wrap-up scripts automatically run DRC/LVS checks across multiple library views and consolidate error reports into a single, actionable format before sign-off.
  • Parameterization and Variation: A single SKILL script can modify a core physical block (like clock buffers or I/O pads) by changing a variable and regenerate the layout — essential for process variation testing.
  • Test Pattern Generation: Automating the generation of test structures or wrapper cells (PCELLs) by iterating over boundary points and creating required connectivity metadata.

Advanced SKILL Automation: Power Grid Insertion

Consider the task of running a full-chip power grid insertion. This involves multiple steps: defining power rails, simulating voltage drop, adding mesh structures, and verifying continuity.

; SKILL pseudo-code example
(envisa-session)
(skill-run-job (run-drc-lvs))  ; Run checks
(set-param-pad-width value 0.5um) ; Modify parameter
(place-power-rails (range-corners) net 'VCC) ; Place wires
(write-report-sheet-status) ; Output report

A manual run requires dozens of commands and checks. SKILL wraps these into a function or macro, making the entire process idempotent and verifiable. This systematic approach transforms manual layout effort into an industrialized, reliable workflow.

Why SKILL over Python or Tcl/Tk?

While Python and Tcl/Tk are essential tools for overall CAD infrastructure (orchestration, job scheduling, data reporting), SKILL remains the native language of the core Virtuoso environment.

  • Intrinsic Integration: SKILL is compiled directly into Virtuoso, giving it immediate, low-level access to internal objects (cells, shapes, instances) that external languages struggle to access.
  • Data Model Affinity: The layout data model is represented in Lisp-list/symbolic structure, so SKILL naturally handles these operations with minimal overhead.
  • Workflow Continuity: Using SKILL inside the tool keeps context consistent and avoids constantly serializing/deserializing job results across language boundaries.

Best Practices for SKILL Development

  • Version Control: Treat SKILL scripts like source code. Use Git and peer-review processes.
  • Error Handling: Wrap critical sections with catch blocks to manage failures gracefully, preventing entire runs from aborting on a single error.
  • Abstraction: Break workflows into small, single-purpose functions (place_vias, check_metal_level, calculate_area) that can be tested and reused independently.
  • Documentation: Use comprehensive comments explaining why the script does something, not just how.

Related Articles

Frequently Asked Questions

What is the primary goal of SKILL automation?+

The primary goal is to eliminate low-level, repetitive, and complex manual steps in the design flow. This ensures repeatability, auditability, and drastically speeds up the iterative nature of chip design, moving from manual labor to programmatic engineering.

Can I use SKILL to automate timing closure?+

While timing closure (STA) itself is performed by specialized tools (like PrimeTime or StarRC), SKILL can write the surrounding automation flow: dynamically setting the analysis nodes, capturing the before/after critical path information, logging deviations, and re-running the simulation with adjusted parameters based on preliminary results.

Which scripting language is best for general workflow orchestration?+

For overall workflow orchestration (managing dependencies, running tools in sequence, handling file I/O across different services), Python is often the industry favorite due to its massive ecosystem and readability. However, SKILL remains required for internal tool manipulation within Virtuoso.