Hi, Use a table: ll='("a" "b" "c" "a" "d" "f" "a" "c" "b") llUniq = nil tbl=(makeTable 'tbl nil) (foreach el ll (unless tbl[el] tbl[el] = t llUniq = (append llUniq (list el)) ) ) Max
↧
Forum Post: RE: Finding and counting duplicates in a list
↧
Forum Post: RE: Finding and counting duplicates in a list
procedure( MpFindDuplicated( lx ) let( (myTable) myTable = makeTable("myTable" 0) foreach( e lx myTable[e] = 1 + myTable[e] ) foreach( e myTable~>? if( myTable[e] == 1 then remove(e myTable) ) ) ;; return value myTable ) ) myList = list("a" "b" "c" "a" "d" "f" "a" "c" "b") duplicated = MpFindDuplicated(myList) printf("%L\n" duplicated~>??) Output will be something like : ("a" 3 "b" 2 "c" 2)
↧
↧
Forum Post: RE: Finding and counting duplicates in a list
[quote userid="386178" url="~/cadence_technology_forums/f/custom-ic-skill/38941/finding-and-counting-duplicates-in-a-list/1355560#1355560"]foreach( e myTable~>? if( myTable[e] == 1 then remove(e myTable) ) [/quote] Marcel - a small change - you don't really need to do myTable->? here because if you do a foreach over a table the loop variable will be set to each key anyway. So you can just do: foreach(e myTable ... )
↧
Forum Post: Unable to complete the loop of ECAD-MCAD collaboration using IDX format in 17.2
Is anybody using the IDX format? We have used IDF for years, but are starting to transition to IDX. We did testing using 16.6, and after a few bumps were smoothed out, we thought we had the process down. The projects we started to use it with happened to be 17.2 designs, but that shouldn't have been a problem. What we found was that 17.2 is unable to import MCAD acceptances of changes made by ECAD, so the propose-accept loop of the IDX process cannot be completed. We started with a baseline in Creo, saved to IDX and imported the holes, outline, areas into Allegro. Components were added in Allegro and exported as an incremental IDX. These changes were "additions". The IDX is opened in Creo, the changes accepted, and the accepted status saved in the IDX. Importing the IDX back into Allegro is supposed to mark the transactions as accepted in the BRD, but Allegro states "No change to process. The following are up to date: 1. MCAD's proposed transactions. 2. ECAD's approved or rejected transactions." So, if another change is made to any of those components that were already accepted into Creo (but not recorded as accepted in Allegro), the new change is exported as an "addition" again, and Creo can't import because the component already exists! Has anyone else experienced this? Have a work around? We opened a case with Cadence, and they've submitted it as a bug report, but don't know how quickly a resolution would be found.
↧
Forum Post: Accessing spectre sweep waveforms with two analysis of the same type
Hi Everyone, I would like to run a command line spectre simulation with an ocean script as postprocessing. My problem is that I can not access the two ac simulation results in the inner loop of the sweep. I would like to get a waveform family to work with. I have done parametric sweep in the past couple of times, but not in the recent years, and I am not sure I used two analysis of the same type inside the sweep loop. I would expect that a sweep analysis will not alter the analysis names, just it would add multiple waveforms for a signals. My simulation statements in my netlist: sw_vg sweep param=VGS start=0.1 stop=0.6 step=0.05 { dcOp dc dcOpInfo info what=oppoint where=rawfile // AC source @ VG ac_g ac start=1M stop=1T alt_gac0 alter param=VAC_G value=0 alt_dac1 alter param=VAC_D value=1 // AC source @ VD ac_d ac start=1M stop=1T } My OCEAN output: ocean> results() ocean> (dcOp dcOpInfo ac "sw_vg_ac_d-sweep" model instance output designParamVals primitives subckts ) I would like to access the two AC simulations as "ac_g-ac" and "ac_d-ac", just as in the case without the sweep analysis, to make the script more general and easier to read and make it future proof - maybe the AC simulation statement changes and the postprocessing commands for the old AC analysis would give misleading results. Seemingly there are two AC analysis in the result() output, but all waveforms are the same except one if I plot them - checked with ' plot(i("VD_AC:p" ?result "sw_vg_ac_d-sweep") - i("VD_AC:p" ?result "ac")) ', so I am pretty sure that I make something wrong, but I was not able to figure out what it is. I want to see/access all waveforms in both AC simulation. How am I supposed to do that? Regards, Zoltan MMSIM Version: 15.1.0.627.isr12 Cadence/OCEAN Version: ICADV12.2-64b.500.7
↧
↧
Forum Post: RE: Need to perform boolean operation on layers
thanks Andrew !!
↧
Forum Post: RE: ade assembler output expression plot by matlab
thanks, Andrew, maybe my question relates more details, cost so much time, appreciate for you comments, here is my screen, the first figure is interactive.17, and i set oppoint according to you advice. now without save_op.scs file, i can get my required information. then i open MATLAB by right click in the "result" tab. and with the help of matlab script. i can get information like figure two. but variable "res", show false at "result" column. why? there are four folders in the interactive 17, what four folders used for? see figure in the bottom, thanks.
↧
Forum Post: Moving a module in Innovus
Hi! i have a module which consist of some standard cells. The design browser can identify the standard cells as a module, as described in the verilog file. I want to move the entire module in the floorplan. But when selecting a module i can acceess and move just one standard cell at a time and not the entire module. Is there any option to move an entire module? thanks!
↧
Forum Post: RE: 3D Canvas Export
Hi Dale, Thanks for the reply. That was better, but only about 30% of the symbols w/ step mapping came through. And of course, those with only place bound heights, did not either. Are you able to get WYSIWYG from 3D canvas export? Thanks, Emmett
↧
↧
Forum Post: RE: XML Parser
The attachment is a xml reader in Skill that I did as proof-of-concept for automatic parser generation some time ago. The parser itself is of LALR1 type, automata of lexer and parser are generated directly from EBNF. The grammar is visible in the comments at the reduce rules and should cover all of XML1.0 and probably also most of XML1.1 spec (not tested though), but is limited to 8bit extended ASCII characters only. The reductions are manually written to generate disembodied property lists (and lists of those) out of parsed xml nodes/content/attributes. This could be modified to build plain lists, tables, or whatever structure is needed. Usage is to call it with the xml in a string or a filename. An optional callback can be given to enable somewhat similar to SAX mode. community.cadence.com/.../5852.xml.zip
↧
Forum Post: Cadence Calculator functions
Hello, I am seeking help to know if there is a built-in function in the Cadence calculator which accomplishes what I need. I have to signals 1 and 2. The first signal is a square pulse and the second signal is a ramp. I need to know the x value when signal 1 crosses a certain threshold. I know I can do this using the cross function. At the same x value I need to know the corresponding y value on signal 2. Is there a way to do this using calculator functions or building your own expression incorporating the "cross" function? Thanks
↧
Forum Post: RE: Cadence Calculator functions
Hi, I assume you are looking for 'value' function in the calculator. It returns the y value of a signal at a user-defined time value (you will get this value using cross on signal 1). Regards, Saloni
↧
Forum Post: RE: Generating Gerber RS274X In 2:3 Format & Gerber File Syntax Issue.
Hi Dale, Thanks for the reply. In my case, for RS274X 2.4 format (99.9999"), I assumed I would need to make: Integer places = 2 (before the decimal point) Decimal places = 4 (after the decimal point) Are these fields defined some other way? Thanks, Emmett
↧
↧
Forum Post: Can i create a capture schematic by pspice netlist
Hi everyone I wish to find a way to import a text format into capture other than design xml. There is an option to create pspice netlist. but what does it do? i can only read it? PCB editor takes a netlist, generating everything with few clicks. Does the pspice netlist do the same thing? Thanks
↧
Forum Post: RE: Cadence Calculator functions
Thanks Ms. Chhabra, that was it.
↧
Forum Post: RE: Why does integrated tdnoise grow without bounds?
Great, thank you, that makes sense! I used now VAR("fint")/2 for pnoise end range as well as for the total integrated noise integral limit. However, I have still trouble to reproduce the 125uV from .noise with .pnoise. I should get these in the limit when I wait until the system has sufficiently settled. In the plots above I do not wait too long enough so I set the clock fint to 476kHz such that the system settles. Based on the .noise output I would expect that a maxacfreq of 10-100 MHz should bring me into the range of 125uV. However, with: maxacfreq=10M, numberOfHarmonics=10MHz / (476kHz/2) = 42 I get 57uVrms maxacfreq=100M, numberOfHarmonics=420: 85uVrms maxacfreq=1GHz, numberOfHarmonics=4200: ... the simulation runs forever, I think the number of harmonics is prohibitive Based on the .noise output, what would be the proper value for maxacfreq and numberOfHarmonics?
↧
Forum Post: RE: Export physical error
I am experiencing this same error message when exporting physical from DE HDL to an existing board file. I selected "overwrite constraints" but it still aborts on this error. I am not intending to do anything with xnets. Did you find a solution?
↧
↧
Forum Post: RE: Copper plane with complex shapes
I add them all the time, mostly for relieving the next layer down copper for impedance requirement. It's pretty simple. When you add the 'shape/manual void' use the polygon. When adding, set the 'Segment type' to ARC, then start adding. You can make something like that quite easy.
↧
Forum Post: RE: Copper plane with complex shapes
Adding the copper plane acts the same way. Set your 'segment type' to ARC.
↧
Forum Post: Hide text fields I don't need in parameters section
Good day to everyone, I'm new in this funny world of Skill and I have a problem at the moment of display/hide parameters of a Pcell. I have a power grid Pcell that has 7 metals (from M4 to M10) and I'm able to select differents parameters like power grid domains (VDD, VSS, VDDREG), width, pitch etc. To select the top and bottom metal, I have two cyclic, so I can have a power grid connected from M4 to M10, and with text field to write the width, pitch and power domain of every "finger" in each metal. My problem is that I can't hide the text field that I don't need. For example, in case my power grid is from M8 to M10, I just need to display the text fields of M8, M9 and M10 and nothing else. Do I need a callback to make this? Can I use a list of my main procedure in the CDF file? How Can I use it? Thanks for the help and your time, Jorge
↧