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.
Sometimes these articles just write themselves...
Last week, 3 different people asked me questions about the ADE XL Run Options form. Sadly, the odds that 3 people in the same week would ask a question to which I actually knew the answer are vanishingly slim, so that meant I needed to do some research. And, in the course of that research, I discovered why there were so many questions about this topic. It is quite confusing and the documentation seems to make sense only after you thoroughly understand the subject.
Sounds like something that needs to be blogged -- if only so I have a place I can go to look up the answer the next time someone asks me that question.
So, here we go. We're talking about 2 forms here. The first, the Job Policy Setup form, is accessed by selecting Options->Job Setup from the ADE XL window. The second, where most of the confusion seems to come in, is the Run Options form, accessed by selecting Options->Run Options. Here they are for reference...
The upper part of the Job Policy Setup form concerns how you want to distribute your simulation runs in ADE XL. This will vary depending on what type of job distribution system your company uses (LSF, SGE, etc.). We'll take that up another time. For now, let's just assume you have some sort of system that lets you fire off simulations onto a farm of machines.
Now we need to define some terms:
The way ADE XL works is that each run starts a number of jobs (actually the process is called "ICRP") on whatever machines you tell it to use (local, SGE, LSF, etc). It uses the "Max. Jobs" field on the Job Policy Setup form to determine the maximum number of those jobs to start.
Those processes stay alive for some "linger time" so that ADE XL can more efficiently start new simulations as needed. So it will start by sending out a simulation to each job, and then as each simulation completes, it will send that job a new simulation until all simulations in the run are completed.
Remember that. A "job" is assigned to a particular "run" and will likely receive a series of simulations to perform (assuming the "run" involves more than a single simulation).
Let's skip to the Run Options form now.
The default in the Run Options form is Serial - i.e. if you hit the green Run button twice, the second run will not use any jobs until the first run completes.
If you set this to Parallel, if you hit the green Run button twice, the runs will start in parallel. They will either share resources equally (which means if Max Jobs = 10, each run will use 5 jobs). Or you can specify - something like 3 jobs per run.
This applies to all run modes--corners, sweeps, Monte Carlo, optimization, etc.
So - for any given run, all jobs run in parallel. However multiple runs in ADE XL are serial by default and can be made parallel.
Now, what about the fields at the bottom of the Job Policy Setup form--For Multiple Runs (reassign immediately or wait until currently running points complete)?
Let's say your setup is:
You start a run and the simulations are going to take 10 minutes. All ten jobs start running the simulations.
Now you start another run after making some changes to the setup.
So -- the question is -- do you want to immediately kill five of the current jobs and re-assign them to the second run or do you want to wait until the first five currently running simulations finish before re-assigning the jobs to the second run.
(Don't worry, the simulations that were killed will be assigned to re-run on one of the (now) five jobs assigned to the first run)
It's an efficiency issue. Do you want to waste the progress already made by the jobs on a simulation or do you want to make sure the subsequent run(s) start right away?
I hope this is a bit enlightening. You may need to read the above a couple of times until it becomes clear (I know I did).
Hi, Yes, by default you will get a run directory for each corner. To help with disk space, you can set the environment variable: envSetVal("adexl.simulation" "ignoreDesignChangesDuringRun" 'boolean t) in your .cdsinit file. This will do the netlisting up front once for each test and create symbolic links for redundant files in each run directory.
Hi Stacy, Very informative article. I have a ques wrt to job distribution system. As to how exactly is it done. We use Sungrid for the distribution. I notice that there is netlisting done for each distributed job (corner/parametric sim) and hence for each corner the AMAP folder is created (Unlike the case of a locally run job). Thus hugely multiplying the space. Is there a way to eliminate this? Also, is the job distribution done in a similar way in IC615 and IC5141 as i use the latter? Could you please do a blog on this as well.. Would be of great help!
There is an extensive set of Skill API commands useful for interacting with ADE XL. Refer to the Virtuoso Analog Design Environment XL SKILL Reference manual.
The commands you are looking involve setting up a pre-run trigger function, which can be done using the command "axlSessionConnect". This also allows you to create triggers into many other events in the ADE XL environment.
The function can be integrated into every ADE XL session using the command "axlSessionRegisterCreationCallback".
Something like (apologies to the person from whom I've plagiarized this):
(define (RegisterPreRunCallback session_name)
(axlSessionConnect session_name "preRun" 'PreRun))
;; when ADE XL creates a new session it will call the RegisterPreRunCallback
(define (PreRun session_name sdb_handle mode_string test_name)
(printf "Launching a new run %L %L %L %L\n" session_name sdb_handle mode_string test_name)
;; per-run customization goes here
Do you know what skill command I need to use for customize changes behind the green play button in ADEXL?
Make "hello" prompt on the CIW every play hit.
Not really. The number of simulation licenses is dictated by the "Max Jobs" setting in the Job Policy Setup form. The "run in series/parallel" options just control how those "Max Jobs" get distributed.
Licenses / Tokens - If I'm running standard Spectre simulations. Is is correct that setting the "Runs in series" option will only pull 1 spectre license OR 1 MMSIM token and use it each time a new run starts, but "Runs in parallel" will pull licenses/tokens for however many runs I'm trying to do at once? So, for say 3 simulation runs, series only takes 1 license/token, but parallel would pull 3.