Quantcast
Channel: Jason Andrews Blog
Viewing all articles
Browse latest Browse all 33813

RE: How to Save Optimized Design Variables to a new Corner for Later Simulation

$
0
0
Hi Justin, I get it. Unfortunately there's no built-in way of doing this - seems a reasonable enhancement request (please contact customer support for that). As a workaround, you could use this SKILL code. You have to create each setup state (the three you want that you're showing in your picture) and then load each setup state (with overwrite on), and then call abCreateCornerFromVarsAndParams("globalOpt1") - use a different name for each corner. This will create a corner from all currently active variables and parameters (just the parameters with values rather than the matched or ratio parameters). Perhaps that makes life a bit easier? I can't do it directly from a named setup state because there's no SKILL function to retrieve the content of the setup state - you have to load them. /* abCreateCornerFromVarsAndParams.il Author A.D.Beckett Group Custom IC (UK), Cadence Design Systems Ltd. Language SKILL Date Feb 02, 2018 Modified By Create corners from the current variables and parameters. Examples: abCreateCornerFromVarsAndParams("localOpt1") ; just parameters abCreateCornerFromVarsAndParams("localOpt1" ?variables nil) ; just variables abCreateCornerFromVarsAndParams("localOpt1" ?parameters nil) ; include disabled vars and params abCreateCornerFromVarsAndParams("localOpt1" ?enabledOnly nil) *************************************************** SCCS Info: @(#) abCreateCornerFromVarsAndParams.il 02/02/18.13:39:32 1.2 */ /******************************************************************* * * * Create a corner from the current variables and parameters * * * * Omits any parameter with an "@" - these have to be defined in * * the parameters section still. Can control whether to include * * just parameters or just variables, and whether to ignore whether * * the param/var is enabled or not. * * * *******************************************************************/ procedure (abCreateCornerFromVarsAndParams(cornerName @key (session axlGetWindowSession ()) (parameters t) (variables t) (enabledOnly t) ) let ((sdb param paramVal var varVal corner) sdb= axlGetMainSetupDB (session) corner= axlPutCorner (sdb cornerName) when (parameters foreach (paramName axlGetParameters (sdb) param= axlGetParameter (sdb paramName) when (enabledOnly && axlGetEnabled (param) || !enabledOnly paramVal= axlGetParameterValue (sdb paramName) unless ( index (paramVal "@" ) axlSetParameter (corner paramName paramVal) ) ) ) ) when (variables foreach (varName cadr ( axlGetVars (sdb)) var= axlGetVar (sdb varName) when (enabledOnly && axlGetEnabled (var) || !enabledOnly varVal= axlGetVarValue (var) axlPutVar (corner varName varVal) ) ) ) t ) ) Regards, Andrew

Viewing all articles
Browse latest Browse all 33813

Trending Articles