Explore Virtuoso Cellviews
SkillMediaExplore Virtuoso cellviews - list libraries, cells, instances, nets, layers, and hierarchy. Use when browsing a design, understanding circuit topology, or inspecting layout/schematic contents.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Explore Virtuoso Cellviews skill
What this skill tells your AI
The instructions your AI receives, as published by deanyou/virtuoso-cli in .agents/skills/cell-explore/SKILL.md and read by ahel’s review.
Query design hierarchy, instances, nets, and properties via SKILL.
Library browsing
# List all libraries
virtuoso skill exec 'foreach(mapcar lib ddGetLibList() lib~>name)' --format json
# List cells in a library
virtuoso skill exec 'let((lib) lib=ddGetObj("LIB") foreach(mapcar c lib~>cells c~>name))' --format json
# List views for a cell (use v~>name, NOT v~>viewName)
virtuoso skill exec 'let((cell) cell=ddGetObj("LIB" "CELL") foreach(mapcar v cell~>views v~>name))' --format json
Cellview inspection
# Open and inspect (read-only)
virtuoso skill exec 'let((cv) cv=dbOpenCellViewByType("LIB" "CELL" "VIEW" nil "r") when(cv sprintf(nil "inst=%d nets=%d shapes=%d" length(cv~>instances) length(cv~>nets) length(cv~>shapes))))' --format json
# Instance details (first N)
virtuoso skill exec 'let((cv result n) cv=dbOpenCellViewByType("LIB" "CELL" "schematic" nil "r") result=nil n=0 foreach(inst cv~>instances when(n<20 result=cons(sprintf(nil "%s: %s/%s" inst~>name inst~>cellName inst~>viewName) result) n=n+1)) result)' --format json
# Net connectivity
virtuoso skill exec 'let((cv result n) cv=dbOpenCellViewByType("LIB" "CELL" "schematic" nil "r") result=nil n=0 foreach(net cv~>nets when(n<20 result=cons(sprintf(nil "%s [%d terms]" net~>name length(net~>instTerms)) result) n=n+1)) result)' --format json
# Layer/purpose pairs in layout
virtuoso skill exec 'let((cv lpps) cv=geGetEditCellView() lpps=nil foreach(shape cv~>shapes let((lpp) lpp=sprintf(nil "%s:%s" car(shape~>lpp) cadr(shape~>lpp)) unless(member(lpp lpps) lpps=cons(lpp lpps)))) lpps)' --format json
# Shape types
virtuoso skill exec 'let((cv types) cv=geGetEditCellView() types=nil foreach(shape cv~>shapes let((tp) tp=shape~>objType unless(member(tp types) types=cons(tp types)))) types)' --format json
Cell management
# Open cellview
virtuoso cell open --lib LIB --cell CELL --view layout --format json
# Current cellview info
virtuoso cell info --format json
# Save
virtuoso cell save --format json
Key gotcha
- View property is
v~>name, notv~>viewName— the latter returns nil in IC23.1 nthCdrandsubListdon't exist — useforeachwith counter for paginationbuildStringmay not work with nil values — guard withwhen(views ...)
Signals
- GitHub stars
- 32
- Forks
- 10
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
cell-explore- Source
- github.com/deanyou/virtuoso-cli