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.
Is it possible to save an object before I run dbDeleteObject so that it can be restored. I am working on a script where I may want to restore an instance I deleted.
Is the only way to do this brute force by saving all of the instances properties?
inst = car( cvid->instances); Get my instancebackupInst = instdbDeleteObject(inst); delete inst
inst = car( cvid->instances); Get my instance
backupInst = inst
dbDeleteObject(inst); delete inst
Both inst->?? and backupInst return:
-> dbGetq: object is a purged/freed object - db:0x2057b31b
What I want to do next:
dbCreateObject(backupInst); A function that doesn't exist.....
If you don't have a dbSave in your script, you should be able to do an undo and get the inst/objects back.
If you are wanting specific inst/objects, you are going to have to write to a file or create a variable to hold the deleted inst/object value.
In reply to psill000:
The simple answer to the original question is "no". The closest is hiUndo, as the previous poster explained.
There's no dbCreateObject - you have to use the specific dbCreate.* function to recreate the object. Bear in mind that deleting some objects actually can delete multiple objects - for example, if you delete a net, it will delete any terminals on that net, plus any pins on those terminals (not the figures though). I think it deletes the instTerms too. So restoring it will not be that straightforward.
I'd really advise against any methodology which relied on deleting something temporarily and then restoring, unless that objects is quite constrained - i.e. it's a known type of object which you can capture the info about an recreate using the appropriate API, rather than trying to make this work for any arbitrary kind of object.
In reply to Andrew Beckett:
OK. Thank you for the responses. The item in question is specifically an instance within a schematic so I can do as you say and just save specific properties required to reproduce the item (brute force but it works alright).
I'm curious, could you do something like create a temporary cellview and the set the cellView property of the instance you are "deleting" so that it moves to the temporary cellView?
tempCvid = A new schematic
inst = some schematic instance
-> db.....the original schematic Cvid
inst->cellView = tempCvid
Message: *Error* unknown: (DB-370034): dbSetq: Cannot set attribute - cellView
Doesn't look like this is possible.
In reply to acook:
Correct, you cannot change the cellView attribute. Using dbCopyFig() you could copy the instance to the scratch cellview:
scv = dbOpenCellViewByType("test" "scratch" "schematic" "schematic" "s")
I've assumed that the instance in question is selected in the schematic, but if you are working non-graphically in that cellview too, you could use something like dbFindAnyInstByName() to get the instance database ID.
Hope this helps.
In reply to skillUser:
Or you could use dbMoveFig() instead to move it directly from one cellView to a scratch one, and then move it back again afterwards. That's even simpler.