You can do this with ADE XL (and ADE Assembler in IC617). You need to define the sweeps for the two global variables, and then select them both and do Right Mouse->Group as Parametric Set. The sweeps can be set up however you like (start, step, stop etc). You can also have more than one parametric set - so you could have three variables swept together, and another set (swept orthogonally to the first set) with two variables which are also swept together. Regards, Andrew.
↧
Forum Post: RE: Sweeping 2 variables (at a time) in Parametric analysis
↧
Forum Post: RE: Sweeping 2 variables (at a time) in Parametric analysis
The linear sweep can be defined with: start:step:stop as variable value, like 0:0.1:1
↧
↧
Forum Post: RE: Tcl script, for library manipulation
Strictly speaking, you get a reference to a Class (object) returned by "[DboState]" and some subsequent operations use this reference to handle the status.
↧
Forum Post: find parameter dependencies in a PCell
Hi all, Currently, I'm working on finding a way how to determine dependencies between parameters in the PCell generically. F.i. totalWidth = numberOfGates * Width (in order to get totalWidth you need know (calculate) numberOfGates and Width) Now I'm trying to extract a callBack function, but the issue sometimes a parameter has more 2-3 callback functions. So, the question: Are there some useful SKILL functions which can help me? Or maybe there is an existing solution? Best regards, Vadim
↧
Forum Post: RE: find parameter dependencies in a PCell
Vadim, I think formally proving dependencies between parameters when the callback function can be something very complex - some foundries have callback functions (which are not readable either) which run to thousands of lines and call many other functions. Whilst SKILL has a reasonable number of introspection features - and you could parse the expressions to find some simple dependencies, I think it would be so error prone (or only able to handle very simple cases) that it's of dubious value. Regards, Andrew.
↧
↧
Forum Post: RE: SKILL for Substrate Integrated Waveguide layout
Hi Jack, There are many factors involved but I have a few suggestions. First, you can use dbLayerTile() to fracture a polygon into trapezoids, you can then further process any that are not rectangular into approximations of rectangular areas. From the rectangular areas you might then use something like dbCreateViaShapeArray() or dbCreateVia() with appropriate rows, columns, spacing etc. For any slotted areas you could use dbCreateOverlaps() to identify areas that should be free of vias/via shapes and remove those using dbDeleteObject() (i.e. delete them after they were created, rather than trying to decide up front if they should be created). You might need to align vias/cut shapes and so you could use rodAlign() or leAlign() (don't use the latter in a PCell, if you are creating PCells). You might use something like techGetLayerFunctions() to identify the metals and vias between in a more generic fashion than hard-coding the values. Similarly you might use techGetSpacingRule() and techGetOrderedSpacingRule() to get the information on spacings etc. more generically. Hopefully this helps? Best regards, Lawrence.
↧
Forum Post: RE: DEFT
Thanks Andrew. Actually it is IC616. And I can see DEFT in the software packages available but it seems like Cadence is unable to see it. Do you have any recommendations as to how I can make it work? Do I have to modify something in startcad?
↧
Forum Post: RE: DEFT
Which IC616 subversion are you using? You can find this from Help->About or by typing getVersion(t) in the CIW. I tried in ISR14 (IC6.1.6.500.14) and as far as I can see (from the code as well) it should definitely appear. I don't know what "startcad" is - presumably something in your own environment? Regards, Andrew.
↧
Forum Post: RE: Integrating Perl with Ocean
Thanks Lawrence for your reply, Yes i got your point I have another question please, now my perl script generate a .txt file for the variables values which is included in the "input.scs" netlist and this file is included inside the ocean script, but when i simulate this script it doesn't see the new values, but simulate using the old values saved from the state in the "desvar", so how can i make ocean see the new values of the variables?
↧
↧
Forum Post: layer map file for GDS transfer to virtuoso
Hello all, I have a GDS layout previously designed in SoC encounter, I want to import it in Virtuoso but I don't have a layer map provided with PDK (I'm using Nangate Open Cell Library 45nm). I now have two files; a technology file provided with PDK and a streamOut.map file generated from GDS export in Encounter. Here is the technology file: --------------- ; Technology File NCSU FreePDK 45nm ;******************************** ; LAYER DEFINITION ;******************************** layerDefinitions( techLayers( ;( LayerName Layer# Abbreviation ) ;( --------- ------ ------------ ) ( IP 63 IP ) ( nwell 3 nwell ) ( pwell 2 pwell ) ( nimplant 4 nimplant ) ( pimplant 5 pimplant ) ( active 1 active ) ( vtg 6 vtg ) ( vth 7 vth ) ( thkox 8 thkox ) ( poly 9 poly ) ( contact 10 contact ) ( metal1 11 metal1 ) ( via1 12 via1 ) ( metal2 13 metal2 ) ( via2 14 via2 ) ( metal3 15 metal3 ) ( via3 16 via3 ) ( metal4 17 metal4 ) ( via4 18 via4 ) ( metal5 19 metal5 ) ( via5 20 via5 ) ( metal6 21 metal6 ) ( via6 22 via6 ) ( metal7 23 metal7 ) ( via7 24 via7 ) ( metal8 25 metal8 ) ( via8 26 via8 ) ( metal9 27 metal9 ) ( via9 28 via9 ) ( metal10 29 metal10 ) ( DRC 400 DRC ) ) ;techLayers techLayerPurposePriorities( ;layers are ordered from lowest to highest priority ;( LayerName Purpose ) ;( --------- ------- ) ( IP drawing ) ( nwell drawing ) ( pwell drawing ) ( nimplant drawing ) ( pimplant drawing ) ( active drawing ) ( vtg drawing ) ( vth drawing ) ( thkox drawing ) ( poly drawing ) ( contact drawing ) ( metal1 drawing ) ( via1 drawing ) ( metal2 drawing ) ( via2 drawing ) ( metal3 drawing ) ( via3 drawing ) ( metal4 drawing ) ( via4 drawing ) ( metal5 drawing ) ( via5 drawing ) ( metal6 drawing ) ( via6 drawing ) ( metal7 drawing ) ( via7 drawing ) ( metal8 drawing ) ( via8 drawing ) ( metal9 drawing ) ( via9 drawing ) ( metal10 drawing ) ( DRC drawing ) ) ;techLayerPurposePriorities techDisplays( ;( LayerName Purpose Packet Vis Sel Con2ChgLy DrgEnbl Valid ) ;( --------- ------- ------ --- --- --------- ------- ----- ) ( IP drawing PacketName_0 t t t t t ) ( nwell drawing PacketName_2 t t t t t ) ( pwell drawing PacketName_3 t t t t t ) ( nimplant drawing PacketName_4 t t t t t ) ( pimplant drawing PacketName_5 t t t t t ) ( active drawing PacketName_6 t t t t t ) ( vtg drawing PacketName_11 t t t t t ) ( vth drawing PacketName_12 t t t t t ) ( thkox drawing PacketName_13 t t t t t ) ( poly drawing PacketName_14 t t t t t ) ( contact drawing PacketName_19 t t t t t ) ( metal1 drawing PacketName_26 t t t t t ) ( via1 drawing PacketName_30 t t t t t ) ( metal2 drawing PacketName_31 t t t t t ) ( via2 drawing PacketName_35 t t t t t ) ( metal3 drawing PacketName_36 t t t t t ) ( via3 drawing PacketName_40 t t t t t ) ( metal4 drawing PacketName_41 t t t t t ) ( via4 drawing PacketName_45 t t t t t ) ( metal5 drawing PacketName_46 t t t t t ) ( via5 drawing PacketName_50 t t t t t ) ( metal6 drawing PacketName_51 t t t t t ) ( via6 drawing PacketName_55 t t t t t ) ( metal7 drawing PacketName_56 t t t t t ) ( via7 drawing PacketName_60 t t t t t ) ( metal8 drawing PacketName_61 t t t t t ) ( via8 drawing PacketName_65 t t t t t ) ( metal9 drawing PacketName_66 t t t t t ) ( via9 drawing PacketName_70 t t t t t ) ( metal10 drawing PacketName_71 t t t t t ) ( DRC drawing PacketName_77 t t t t t ) ) ;techDisplays ) ;layerDefinitions ------------------------------------------------------------------------ and here is the streamOut.map file: ------------------- metal1 NET 1 0 metal1 SPNET 2 0 metal1 PIN 3 0 metal1 LEFPIN 4 0 metal1 FILL 5 0 metal1 FILLOPC 6 0 metal1 VIA 7 0 metal1 VIAFILL 8 0 metal1 VIAFILLOPC 9 0 metal1 LEFOBS 10 0 NAME metal1/NET 11 0 NAME metal1/SPNET 12 0 NAME metal1/PIN 13 0 NAME metal1/LEFPIN 14 0 via1 LEFPIN 15 0 via1 FILL 16 0 via1 FILLOPC 17 0 via1 VIA 18 0 via1 VIAFILL 19 0 via1 VIAFILLOPC 20 0 metal2 NET 21 0 metal2 SPNET 22 0 metal2 PIN 23 0 metal2 LEFPIN 24 0 metal2 FILL 25 0 metal2 FILLOPC 26 0 metal2 VIA 27 0 metal2 VIAFILL 28 0 metal2 VIAFILLOPC 29 0 metal2 LEFOBS 30 0 NAME metal2/NET 31 0 NAME metal2/SPNET 32 0 NAME metal2/PIN 33 0 NAME metal2/LEFPIN 34 0 via2 LEFPIN 35 0 via2 FILL 36 0 via2 FILLOPC 37 0 via2 VIA 38 0 via2 VIAFILL 39 0 via2 VIAFILLOPC 40 0 metal3 NET 41 0 metal3 SPNET 42 0 metal3 PIN 43 0 metal3 LEFPIN 44 0 metal3 FILL 45 0 metal3 FILLOPC 46 0 metal3 VIA 47 0 metal3 VIAFILL 48 0 metal3 VIAFILLOPC 49 0 metal3 LEFOBS 50 0 NAME metal3/NET 51 0 NAME metal3/SPNET 52 0 NAME metal3/PIN 53 0 NAME metal3/LEFPIN 54 0 via3 LEFPIN 55 0 via3 FILL 56 0 via3 FILLOPC 57 0 via3 VIA 58 0 via3 VIAFILL 59 0 via3 VIAFILLOPC 60 0 metal4 NET 61 0 metal4 SPNET 62 0 metal4 PIN 63 0 metal4 LEFPIN 64 0 metal4 FILL 65 0 metal4 FILLOPC 66 0 metal4 VIA 67 0 metal4 VIAFILL 68 0 metal4 VIAFILLOPC 69 0 metal4 LEFOBS 70 0 NAME metal4/NET 71 0 NAME metal4/SPNET 72 0 NAME metal4/PIN 73 0 NAME metal4/LEFPIN 74 0 via4 LEFPIN 75 0 via4 FILL 76 0 via4 FILLOPC 77 0 via4 VIA 78 0 via4 VIAFILL 79 0 via4 VIAFILLOPC 80 0 metal5 NET 81 0 metal5 SPNET 82 0 metal5 PIN 83 0 metal5 LEFPIN 84 0 metal5 FILL 85 0 metal5 FILLOPC 86 0 metal5 VIA 87 0 metal5 VIAFILL 88 0 metal5 VIAFILLOPC 89 0 metal5 LEFOBS 90 0 NAME metal5/NET 91 0 NAME metal5/SPNET 92 0 NAME metal5/PIN 93 0 NAME metal5/LEFPIN 94 0 via5 LEFPIN 95 0 via5 FILL 96 0 via5 FILLOPC 97 0 via5 VIA 98 0 via5 VIAFILL 99 0 via5 VIAFILLOPC 100 0 metal6 NET 101 0 metal6 SPNET 102 0 metal6 PIN 103 0 metal6 LEFPIN 104 0 metal6 FILL 105 0 metal6 FILLOPC 106 0 metal6 VIA 107 0 metal6 VIAFILL 108 0 metal6 VIAFILLOPC 109 0 metal6 LEFOBS 110 0 NAME metal6/NET 111 0 NAME metal6/SPNET 112 0 NAME metal6/PIN 113 0 NAME metal6/LEFPIN 114 0 via6 LEFPIN 115 0 via6 FILL 116 0 via6 FILLOPC 117 0 via6 VIA 118 0 via6 VIAFILL 119 0 via6 VIAFILLOPC 120 0 metal7 NET 121 0 metal7 SPNET 122 0 metal7 PIN 123 0 metal7 LEFPIN 124 0 metal7 FILL 125 0 metal7 FILLOPC 126 0 metal7 VIA 127 0 metal7 VIAFILL 128 0 metal7 VIAFILLOPC 129 0 metal7 LEFOBS 130 0 NAME metal7/NET 131 0 NAME metal7/SPNET 132 0 NAME metal7/PIN 133 0 NAME metal7/LEFPIN 134 0 via7 LEFPIN 135 0 via7 FILL 136 0 via7 FILLOPC 137 0 via7 VIA 138 0 via7 VIAFILL 139 0 via7 VIAFILLOPC 140 0 metal8 NET 141 0 metal8 SPNET 142 0 metal8 PIN 143 0 metal8 LEFPIN 144 0 metal8 FILL 145 0 metal8 FILLOPC 146 0 metal8 VIA 147 0 metal8 VIAFILL 148 0 metal8 VIAFILLOPC 149 0 metal8 LEFOBS 150 0 NAME metal8/NET 151 0 NAME metal8/SPNET 152 0 NAME metal8/PIN 153 0 NAME metal8/LEFPIN 154 0 via8 LEFPIN 155 0 via8 FILL 156 0 via8 FILLOPC 157 0 via8 VIA 158 0 via8 VIAFILL 159 0 via8 VIAFILLOPC 160 0 metal9 NET 161 0 metal9 SPNET 162 0 metal9 PIN 163 0 metal9 LEFPIN 164 0 metal9 FILL 165 0 metal9 FILLOPC 166 0 metal9 VIA 167 0 metal9 VIAFILL 168 0 metal9 VIAFILLOPC 169 0 metal9 LEFOBS 170 0 NAME metal9/NET 171 0 NAME metal9/SPNET 172 0 NAME metal9/PIN 173 0 NAME metal9/LEFPIN 174 0 via9 LEFPIN 175 0 via9 FILL 176 0 via9 FILLOPC 177 0 via9 VIA 178 0 via9 VIAFILL 179 0 via9 VIAFILLOPC 180 0 metal10 NET 181 0 metal10 SPNET 182 0 metal10 PIN 183 0 metal10 LEFPIN 184 0 metal10 FILL 185 0 metal10 FILLOPC 186 0 metal10 VIA 187 0 metal10 VIAFILL 188 0 metal10 VIAFILLOPC 189 0 metal10 LEFOBS 190 0 NAME metal10/NET 191 0 NAME metal10/SPNET 192 0 NAME metal10/PIN 193 0 NAME metal10/LEFPIN 194 0 NAME COMP 195 0 COMP ALL 196 0 DIEAREA ALL 197 0 --------------------------------------------------------------- Please anyone give me a hint how to map my layer correctly to virtuoso. Thanks
↧
Forum Post: RE: Integrating Perl with Ocean
Two things: Don't define the variables with desVar and specify them via an include file - otherwise you have two definitions for the same variable. Depending on the order in the netlist, only one will win. If you're running in the default "interactive" mode, if you run one simulation in the OCEAN session, change the include file, and run() again, then spectre won't restart (it expects variable value changes to communicated directly by OCEAN to the simulator rather than re-reading the netlist). You can get around that by using envSetVal("spectre.envOpts" "controlMode" 'string "batch") before the simulator() call in the OCEAN script. Regards, Andrew.
↧
Forum Post: RE: Integrating Perl with Ocean
about note no.1: so you mean i can have a text file having the same format like the desvar e.g: "VAR1" "100", then write includeFile("file.txt" path) correct? about note no.2: i don't get what do you mean by "interactive" mode, can you explain point no.2 more please? Thanks so Andrew
↧
Forum Post: RE: Integrating Perl with Ocean
I thought you already had this .txt file included in the netlist? If so, how? The file wouldn't be in the format you are suggesting here - it would presumably be a spectre "parameters" statement (see "spectre -h parameters") and you'd not include it with includeFile() in OCEAN because that's not supported with spectre. Normally when ADE or OCEAN starts spectre it (by default) runs in "interactive" mode. The idea being that if you run a simulation, then change a parameter (by calling desVar() again with different values) and then run() again, spectre does not need to exit, restart, re-read the netlist, re-checkout the license and then run; instead ADE/OCEAN sends the new variable/parameter value to the simulator in memory and it can re-run directly which is faster. However, if the existing spectre invocation is dependent upon some file which was included for which the contents have now changed, it won't see those contents (since everything is already in memory) - by forcing spectre to run in batch mode, each simulation starts the simulator from scratch and reads the files off disk again. Whether this makes sense or not depends on what you're doing - and your last reply suggests to me that you're not doing what you earlier said you were doing - so I think you need to clarify things. Regards, Andrew.
↧
↧
Forum Post: RE: layer map file for GDS transfer to virtuoso
I'd be surprised if the NCSU FreePDK doesn't come with a layer map file. That said, I would have thought it's not to difficult to map the layer/datatype numbers used to the layer/purpose names used in the PDK - it's a straightforward enough and well documented format.
↧
Forum Post: RE: Integrating Perl with Ocean
I have a perl script which generates the file attached ("output_vairiables.txt") in the following format 1) output_variables.txt file simulator lang=spectre parameters VAR1=100m\ VAR2=900m\ VAR3=300m\ VAR4=700m\ VAR5=700m\ VAR6=300m\ VAR7=900m\ VAR8=100m\ VAR9=700m\ VAR10=900m\ VAR11=700m\ VAR12=500m\ 2) Then this file is included inside the "input.scs" file like the following for the BOLD line: // Generated for: spectre // Generated on: Feb 26 20:38:45 2017 // Design library name: Islam_patterns_largeVGS_5patterns_test3 // Design cell name: TB_NMOS_CM_8x8_v03 // Design view name: schematic simulator lang=spectre global 0 include "/root/Desktop/output_variables.txt" include "/usr/local/IC614/TSMC_65nm/tsmcN65/../models/spectre/crn65gplus_2d5_lk_v1d0.scs" section=tt_bip include "/usr/local/IC614/TSMC_65nm/tsmcN65/../models/spectre/crn65gplus_2d5_lk_v1d0.scs" section=tt_dio include "/usr/local/IC614/TSMC_65nm/tsmcN65/../models/spectre/crn65gplus_2d5_lk_v1d0.scs" section=tt_dio_33 .............. 3) Then this file is included in the Ocean script i saved from the ADE in the design() command like the following for the BOLD line simulator( 'spectre ) design( "/root/simulation/TB_NMOS_CM_8x8_v03/spectre/schematic/netlist/netlist_test") resultsDir( "/root/simulation/TB_NMOS_CM_8x8_v03/spectre/schematic" ) modelFile( '("/usr/local/IC614/TSMC_65nm/tsmcN65/../models/spectre/crn65gplus_2d5_lk_v1d0.scs" "tt_bip") '("/usr/local/IC614/TSMC_65nm/tsmcN65/../models/spectre/crn65gplus_2d5_lk_v1d0.scs" "tt_dio") .................... 4) Then i commented the desvar() lines to make it see the variables values included before. But the old results always appear. I wish i made it clear by that. so i don't know where is the issue, why the Ocean can't see the new values? Thanks, Regards, Inas
↧
Forum Post: RE: Integrating Perl with Ocean
The "output_variables.txt" format is like that as i made like the shape that was written originally in the "input.scs" file
↧
Forum Post: RE: layer map file for GDS transfer to virtuoso
I searched in NangateOpenCellLibrary 45nm but didn't find any. Can you give me some hints how to modify the streamOut.map file according to the provided technology file ? or just direct me to good resources. Should I change all layer purpose to "drawing" and/or modify layer numbers ?
↧
↧
Forum Post: RE: Sweeping 2 variables (at a time) in Parametric analysis
i tried it in ADE L, but its not working many thanks for your kind reply
↧
Forum Post: RE: create labels from text file input.
It looks I can't reply via mail. Post my mail: Andrew, just found that after I sent out mail. Thanks. Fred
↧
Forum Post: dump all the layer from Palette Assistant window in case of no LSW layer definitions in the specified technology database
Any ideas from skill? LSW LSW View Results Total Votes: 0 User Voting Report
↧