Cadence® system design and verification solutions, integrated under our System Development Suite, provide the simulation, acceleration, emulation, and management capabilities.
Verification 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.
The Cadence Academic Network helps build strong relationships between academia and industry, and promotes the proliferation of leading-edge technologies and methodologies at universities renowned for their engineering and design excellence.
Participate in CDNLive
A huge knowledge exchange platform for academia to network with industry. We are looking for academic speakers to talk about their research to the industry attendees at the Academic Track at CDNLive EMEA and Silicon Valley.
Come & Meet Us @ Events
A huge knowledge exchange platform for academia. We are looking for academic speakers to talk about their research to industry attendees.
Americas University Software Program
Join the 250+ qualified Americas member universities who have already incorporated Cadence EDA software into their classrooms and academic research projects.
EMEA University Software Program
In EMEA, Cadence works with EUROPRACTICE to ensure cost-effective availability of our extensive electronic design automation (EDA) tools for non-commercial activities.
Apply Now For Jobs
If you are a recent college graduate or a student looking for internship. Visit our exclusive job search page for interns and recent college graduate jobs.
Cadence is a Great Place to do great work
Learn more about our internship program and visit our careers page to do meaningful work and make a great impact.
Get the most out of your investment in Cadence technologies through a wide range of training offerings.
Overview All Courses Asia Pacific EMEANorth America
Instructor-led training [ILT] are live classes that are offered in our state-of-the-art classrooms at our worldwide training centers, at your site, or as a Virtual classroom.
Online Training is delivered over the web to let you proceed at your own pace, anytime and anywhere.
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 have written SKILL functions to change or add parameters to a cellView. What I need to do now is grab the value of a parameter from a schematic and copy that value to the corresponding layout.
The parameter is called "connectivity" and I only want to change the value in cell "option". Yes, "option" is the cellName.
I know how to grab and instance and grab the property in SKILL but what I can't understand is how to know I'm getting the corresponding layout view for that instance.
A parameter and a property are two distinct objects, a parameter is assigned to pcells as the interface to the pcell program. A property is a way to assign data to a database object like a cellView master or an instance.
I am assuming you are assigning a property to a cellView master. When you find the instance, you are assigning/adding/getting the value of the property on the instance's master cellView. That cellView master in the schematic is a symbol view. The symbol view should have corresponding views in the same library for layout and schematic. If the layout is in another library or goes by another name, you have to follow your design group methodology to get the correct library/cell name. Once you have determined the name of the layout cellView, you can open that master using dbOpenCellViewByType with "a" for append. Then you can add the property using dbReplaceProp on the cellView ID.
masterId = dbOpenCellViewByType( instId~>libName "option" "layout" nil "a" )
dbReplaceProp( masterId "connectivity" 'string "new value" )
dbSave( masterId )
I hope I understood what you needed to do.
In reply to theopaone:
I appreciate your response. It is a parameter in a layout cell that I'm am trying to set. However the value of the parameter comes from the corresponding schematic view property.
The difficulty for me is not setting parameters. What I've been unable to figure out is how to extract that value from the same instance in the schematic.
I have a cell with numerous instantiations of the 'option' cell. The instantiations in the schematic are using pPar("var") as value for the "connectivity" property. In the layout the connectivity parameter is hardcoded to an integer value. What I want to do is grab the value from the schematic instantiation and set it to the value for the corresponding layout instantiation.
I can get the values of each schematic instantiation in a list but I haven't yet been able to get the values set is the correct layout instantiations.
Hope that makes sense. This is one of those things that is really actually very simple to show but difficult to explain.
In reply to 40Ford:
OK, there is a difference in the use of certain terms here. When you speak of a view, it is assumed that you are refering to the master of the cellView. The property would be on the master and would be the same no matter how many times the cell was instantiated. In your case, you want to modify the parameter on a layout instance based on the corresponding schematic instance.
If you are using the VXL layout methodology, each instance in the schematic has an instance name and the layout has a corresponding instance name (based on the hierarchy which was flattened from the schematic). I don't know if there is an exposed API for finding the corresponding named instances but the names are hierarchical with a pipe (|) as a separator.
If you are not using VXL, you have to use some extraction tool to find the correspondence between the schematic and master. You will have to get more help to figure that one out.
It is tricky. For now I am assuming that the baseName (instance name in the views) are in line. I might be able to get something to work with that assumption. Definitely not a bullet proof method but that's my approach until someone with more skill than me comes across with a better suggestion.
This may have worked. I haven't thoroughly verified it yet.
procedure(reset_default_param() let((clv csv instList layInstList schInstList schInstName schParamValue numelem) clv = geGetEditCellView() csv = dbOpenCellViewByType(clv~>libName clv~>cellName "schematic" "schematic" "r") layInstList = clv~>instances schInstList = csv~>instances schInstName = setof(inst schInstList inst~>cellName == "option")~>baseName schParamValue = list() foreach(inst schInstList if(inst~>cellName == "option" then schParamValue = append(schParamValue list( dbSearchPropByName(inst "connectivity")~>value)) ) ; end if ) ; end foreach dbClose(csv) numelem = 1 foreach(inst layInstList foreach(elem schInstName if(inst~>baseName == strcat("|" elem) then printf("\nmatch") dbReplaceProp(inst "connectivity" 'string nthelem(numelem schParamValue)) ) ; end if ) ; foreach numelem = numelem + 1 ) ; end foreach ) ; end let) ; end procedure
Something to try is to search through the instHeaders instead of the instances. The instHeader defines the virtual memory master for the instances. It is much quicker becasue there are fewer instHeaders than instances.
schIh = setof( ih csv~>instHeaders ih~>cellName == "option" )schInsts = foreach( mapcan schIh schIh~>instances )
; Check the last line because I don't have Virtuoso access from home
; It should return a flattened list of the instances of the cell option
layIh = setof( ih clv~>instHeaders ih~>cellName == "option" )layInsts = foreach( mapcan layIh layIh~>instances )
I think mapcan is the right mappng function to use but read about them as they are very useful.
It will greatly speed up your program as you are only sorting a few instHeaders.
You can also make a DPL or a table which will map the schematic values using the schematic instance name. I would use a table:
schParamValue = makeTable('values "" )
;; Add the pipe to the beginning of the nameschParamValue[strcat( "|" inst~>name) ] = dbSearchPropByName( inst "connectivity")~>value
In the layout processing part you can then get the layout instance name and get the value from the table directly:
dbReplaceProp( inst "connectivity" 'string schParamValue[layoutInst~>name]
Look up the table data structure for more info.