Cadence® system design and verification solutions, integrated under our System Development Suite, provide the simulation, acceleration, emulation, and management capabilities.
System Development Suite Related Products A-Z
Cadence® digital design and signoff solutions provide a fast path to design closure and better predictability, helping you meet your power, performance, and area (PPA) targets.
Full-Flow Digital Solution Related Products A-Z
Cadence® custom, analog, and RF design solutions can help you save time by automating many routine tasks, from block-level and mixed-signal simulation to routing and library characterization.
Overview Related Products A-Z
Driving efficiency and accuracy in advanced packaging, system planning, and multi-fabric interoperability, Cadence® package implementation products deliver the automation and accuracy.
Cadence® PCB design solutions enable shorter, more predictable design cycles with greater integration of component design and system-level simulation for a constraint-driven flow.
An open IP platform for you to customize your app-driven SoC design.
Comprehensive solutions and methodologies.
Helping you meet your broader business goals.
A global customer support infrastructure with around-the-clock help.
24/7 Support - Cadence Online Support
Locate the latest software updates, service request, technical documentation, solutions and more in your personalized environment.
Cadence offers various software services for download. This page describes our offerings, including the Allegro FREE Physical Viewer.
Get the most out of your investment in Cadence technologies through a wide range of training offerings.
This course combines our Allegro PCB Editor Basic Techniques, followed by Allegro PCB Editor Intermediate Techniques.
Virtuoso Analog Design Environment Verifier 16.7
Learn learn to perform requirements-driven analog verification using the Virtuoso ADE Verifier tool.
Exchange ideas, news, technical information, and best practices.
The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information.
It's not all about the technlogy. Here we exchange ideas on the Cadence Academic Network and other subjects of general interest.
Cadence is a leading provider of system design tools, software, IP, and services.
I am migrating my pcells to IC6, and I am wrestling with the new via model. Our PDK uses "standard vias", so I understand that I need to use the dbCreateVia function.
Apparently, I can override paramaters, even for standard vias, so I can use the following syntax:
dbCreateVia(cvId viaId list(x y) list(list("cutRows" 2) list("cutColumns" 3)))
There is several unique stuff in creating via compare to other instances. As what i know, there is no pption to specify the justification if you using SKILL function -dbCreateVia to create via rather than the GUI.
Fortunately, the justification can be specific by doing some manual calculation and input the value as an option - "originOffset". The full syntax of dbCreateVia will be:
dbCreateVia( d_cvId d_viaDefId l_origin t_orientation l_paramlist)
eg: dbCreateVia( cvId vidDefId list(x y) "R0"
list( list("cutRows" 2) ;row
list("cutColumns" 4) ;column
list("cutSpacing" list(x y)) ; cut spacing for x and y
list("layer1Enc" list(x y)) ; enclosure for layer1
list("layer2Enc" list(x y)) ; enclosure for layer2
list("cutWidth" 0.2) ; cut width
list("cutHeight" 0.4) ;cut height
list("originOffset" list(x y))) ; justification
You can change the justification by changing the option -"originOffset". The input must be in l_point which specify the x and y offset from center of the via. A mathematic calculation is needed to measure the distance from the origin point to the center of the via.
In reply to kbhow:
Let's say, I wanted to specify the x-cutSpacing, but I did not know the y-cutSpacing, and I wanted to leave the y-cutSpacing at the default value.
How would I do this inside the pcell's SKILL environment? Surely, there is something more elegant than lxComputeViaParams. Does it even work in the pcell environment?
In reply to TrevorB:
Please create a service request at Cadence Customer Support. lx functions are not legal in pcells, so that's not an option; I'm not aware of a convenient way of doing this within a pcell, so it would be best to ask via customer support and then an enhancement request can be filed, and maybe R&D can come up with a workaround.
In reply to Andrew Beckett:
Thanks, Andrew! I filed a SR. Hopefully, R&D can come up with something.
Just wondering if you were able to come up with a solution to your problem? I would also like to write some skill code to convert one via type to another. But it seems like the only way possible in IC6 is to delete the old via and recreate a new one. But to create an identical via to the original, I would need to set the parameters such as justification.
In reply to Tsien:
I never found or was given a clean solution. I wrote some bimodal code to consistently place a contact in either IC5.1 or IC6.1, like below.
procedure(apcCreateContact(@key ;_Oct 7 11 tbowen 528
origin = 0:0
rotation = "R0"
params = append1(params list("cutRows" rows))
params = append1(params list("cutColumns" columns))
when(xPitch && yPitch && width && height
params = append1(params list("cutSpacing" list(xPitch-width yPitch-height)))
params = append1(params list("cutWidth" width))
params = append1(params list("cutHeight" height))
inst = dbCreateVia(cv master origin rotation params)
when((stringp(xBias) && rexMatchp("[lLrR][eEiI][fFgG][tThH]" xBias) && columns > 1) ||
(stringp(yBias) && rexMatchp("[lLuU][oOpP][wWpP][eE][rR]" yBias) && rows > 1)
xOffset = yOffset = 0.0
bBox = inst~>bBox
when(stringp(xBias) && !rexMatchp("[cC]enter" xBias) && columns > 1
xOffset = viaEdgeCenter - width(bBox)/2.0
xOffset = width(bBox)/2.0 - viaEdgeCenter
) ; ** cond rexMatchp **
) ; ** when xBias **
when(stringp(yBias) && !rexMatchp("[cC]enter" yBias) && rows > 1
yOffset = viaEdgeCenter - height(bBox)/2.0
yOffset = height(bBox)/2.0 - viaEdgeCenter
) ; ** cond rexMatchp **
) ; ** when yBias **
inst~>originOffset = xOffset:yOffset
fprintf(stdout "(E) apcCreateContact: Offset bias ignored, because viaEdgeCenter was not a number (xBias=%L, yBias=%L\n" xBias yBias)
) ; ** if numberp **
) ; ** when xBias **
inst = dbCreateInst(cv master nil origin rotation)
inst~>l = width
inst~>w = height
inst~>row = rows
inst~>column = columns
inst~>xPitch = xPitch
inst~>yPitch = yPitch
inst~>xBias = xBias
inst~>yBias = yBias
) ; ** if isOA **
) ; ** let **
) ; ** procedure apcCreateContact **
Yes, that definitely helps. Thanks for the reply.
Its too bad that cadence doesn't improve the via accessibility through SKILL in OA.