Hello Toolman, Curious if you every heard anything through other channels or progressed on this in any way? Have an outstanding project that was considering doing outside of SKILL/Allegro, but would be curious to see if there's some reasonable starting point. Thanks
↧
Forum Post: RE: Skill code to Calculating PCB Real-estate usage using placement boundaries and package keep ins
↧
Forum Post: RE: is there a skill code which grabs a text string from an external file and attaches this as user defined property value to an object in allegro?
Sure. I'll leave the reading of the text file to you, but there are plenty of examples around. You can start with looking at subfolders of $CDS_ROOT\share\pcb\examples\skill. axlDBAddProp() will add the property to the object, and you will likely need to use axlDBCreatePropDictEntry() as well.
↧
↧
Forum Post: RE: CALCULATOR DNL/ INL DAC
I made a waveform for testing The result of the dnl function is as follows Which is the X-axis and the Y-axis are in terms of voltage The result of the dnl function in mathlab is as follows Which is the X-axis in terms of time and the Y-axis are in terms of voltage As is clear from the signal of the value (0v to 1.8v) after that (1.8v to 0v) after that (0 to 3.2) And because one axis is in terms of voltage and the other is time, the waveform is not the same. you can't use the YvsY() function i use dc signal 0v as the time axis as a waveform (/net011) when i plot two out put in simulation Draws them in the subwindows form I can use YvsY for (/net11) and (/net05) Because both of the in same windows and choose select trace i can not plot inl and (/net11) in same window that YvsY What should I do to solve the problem? In your opinion, it is not better to write a program VHDL or verilog
↧
Forum Post: Undo within a function OR interactive undo command with function having key parameters
I have written a function that works great. It accepts one required string argument and one a second string argument can be provided if desired. The second parameter is using the @key keyword. The code loops through each symbol in a design and manipulates graphical elements. (Just explaining that I haven't used axlDBCloak() .) Because I wrote this function after the introduction of the Design Workflow, I added an entry in that XML file which calls the function directly. I did not find a reason to need to use axlCmdRegister() . The workflow entry contains a genericized section that looks like command="skill myFunction("thing1" ?optionalArgument "thing2")" . That works fine. But I'd like to be able to undo the changes in my function. Since everything happens in one fell swoop, there is no real need for user interaction. What would work is in my function ran to completion and could be undone with a single-click from the standard Allegro undo menu. Just a single undo for everything. From the documentation, that appears to require axlCmdRegister() in interactive mode with the undo argument given. To check this, however, I added x_mark = axlDBTransactionStart() at the start of my function and two lines with axlDBTransactionMark(x_mark) and axlDBTransactionCommit(x_mark) at the end of the function. x_mark is in the let() statement local to the function, but if I make it global there seems to be no effect. That does nothing. Allegro's undo button is greyed out after running my function. There is not a transaction being added to the Allegro stack that can be undone. So then I added axlCmdRegister("myFunction" 'myFunction ?cmdType "interactive" ?undo t) to my SKILL code in the hope that I could use the default (read: simple) undo function which would seem to do everything that I wanted. Then instead of calling my function directly from the Design Workflow I can use the command interface to my function and get the same result. But no. When I try myFunction thing1 I get an issue about arguments in the console unless I specifically make the second argument default to nil in the function definition (which usually doesn't need to be done). With myFunction thing1 thing2 and myFunction thing1 ?optionalArgument thing2 the console shows that there are extra arguments or a keyword missing. So none of those work or I've done something wrong. I can see two ways to implement the undo feature I would like, which I described above: 1. Keep my existing function and make it have an undo feature. 2. Register my function and give it the generic undo feature. I have tried to describe my experiments toward making either option above work. I have not been successful. Maybe someone can give me a hand to fix my error above? Or perhaps there's another way that I haven't tried? Any help is appreciated! Thank you all!
↧
Forum Post: RE: QR Barcode
i usually create a gerber file for bar codes then import it. for importing dxf files, u need to convert lines to shapes. https://community.cadence.com/cadence_technology_forums/f/pcb-skill/7407/axlskill-function-to-convert-a-cline-to-a-shape
↧
↧
Forum Post: RE: QR Barcode
TY for the reply. I understand the dxf conversions and the steps that will need to be done. I prefer not to edit the gerbers, there always last minute changes that seem to be required after I create the artwork, I would rather do it in Allegro. There is a tool from FlowCAD, but it costs..... My boss doesn't like to spend $ The import using logo maker is not usable. Looks like I will need do the dxf in and creat filed shapes as needed. Many thanks, Wild
↧
Forum Post: RE: QR Barcode
do u have a tool to convert a dxf file to a gerber file? if so, u can import the gerber file to ur allegro.
↧
Forum Post: atft model (Level=15) does not give Id=0 although sigma0, MUBAND, and IOL are made 0 (zero)
Tool: Spectre sub-version 19.1.0.455.isr11 According to the equations provided in spectremod.pdf file (Model reference), aTFT RPI model calculates Ids = I_leakage + I_ab If we make IOL = 0 and sigma0=0, then I_leakage=0. Similarly, making MUBAND=0 will make I_ab=0. So, Ids should be 0. However, I get a constant current output around 1e-11 for Vd=10V and 1e-13 for Vd=0.1V (100 times the Vd is giving 100 times the constant remaining Id). I am wondering why this is happening. I cross-checked the code with another program called AIM-Spice which also implements LEVEL=15 atft model. AIM-Spice did not reproduce this behavior and Id was 0 for the above parameters. PS: Circuit file and output graphs are attached for checking purpose. Spectre output: AIM-Spice output: Linear Id-Vg shows Id=0 Checking Log Id-Vg for values near 1E-15 to 1E-10 shows nothing as expected Code: IGZO TFT simulator lang=spectre insensitive=yes parameters vdd=0 vg (1 0) vsource dc=0 vd (d 0) vsource dc=vdd model tft atft type=n \ iol=0 \ sigma0=0 \ lambda=0.0 \ muband=0 atft1 (d 1 0 0) tft l=10u w=10u vgvdsweep sweepVgVd subckt sweepVgVd() SweepVdDC sweep param=vdd start=0.1 stop=10 lin=1 { SweepVgDC dc start=-15 stop=20 dev=vg step=0.1 } ends sweepVgVd
↧
Forum Post: RE: when cross() fails
thanks Andrew and Shawn for the reply. I also realized that original question wasn't very clear, sorry.. Below is a picture, output_B goes up as a result of input code_A, when there is crossing, I can use value() function to find corresponding code_A, when there is no crossing between output_B and B_target, cross() returns nil . The question is, can there be an expression that ouputs max(code_A) instead of nil in this case? thanks, Kevin
↧
↧
Forum Post: geToggleAreaSelectOption( ) - want to be able to set without cycling
There are 3 selection modes - "enclosed", "crossed", "enclosedAndCrossed" I want to set the current mode to a variable then set the mode to "enclosedAndCrossed" perform a function then set the mode back to original. There does not appear to be a way to set it other than cycling thru the choices. I checked for env settings and there is none that I can see.
↧
Forum Post: RE: Memory issue and the crash while plotting in wavescan
Thanks Andrew. Yes, with logic waveforms it should not take much memory. I need to contact customer support.
↧
Forum Post: ncsim: *E,STRPIN: Could not initialize SimVision connection: SimVision process terminated before a connection was established.
Dear All, I have enabled SimVision for a AMS simulation. For batch mode ViVa it had worked fine. But with SimVision mode it is giving following error. ncsim: *E,STRPIN: Could not initialize SimVision connection: SimVision process terminated before a connection was established. Could anybody please tell why it is happening and how to get over this. Kind Regards,
↧
Forum Post: RE: when cross() fails
Dear Kevin, [quote userid="337385" url="~/cadence_technology_forums/f/custom-ic-design/47282/when-cross-fails/1371956"]Below is a picture, output_B goes up as a result of input code_A, when there is crossing, I can use value() function to find corresponding code_A, when there is no crossing between output_B and B_target, cross() returns nil . The question is, can there be an expression that ouputs max(code_A) instead of nil in this case?[/quote] The picture is quite useful - thank you!! I think I may have understood your original question as I believe my comment is still applicable. Basically, you need to do a search to determine the last value of A that results in a non-nil cross() function with B as its waveform argument and a threshold of B_target. There can not be a single expression as, if Code A has N transitions and if Code B has M where M<=N, there need to be at M "tests" (i.e. evaluating M expressions of code B with the cross() function. The example I mentioned requires the same algorithm as what I believe you need. in my example, you sweep the DC input voltage of an inverter from 0 to VDD in some increment delta_V. At each input voltage value, you examine the output of the cross function whose arguments are the CMOS inverter output voltage with a crossing threshold of VDD/2 and a "falling" slope (i.e, direction). You save the last input voltage value and when the cross() function returns a non-nil value (since the output voltage first crosses VDD/2 with a negative slope), you have bounded the input threshold to the current value of vin and the prior value at vin-delta_V. If you are familiar with ocean Kevin, the code to so this is pretty straightforward. In reality, the inverter threshold determination problem can also be studied using a new expression defined as the slope of the ratio of vout/vin. In this case, when t he slope of the ratio of vout/vin becomes -1.0 the first time, the input voltage corresponds to the input threshold. In your case, if you know the relationship that should exist between B and A, you might consider the same approach. The slope will become undefined when B no longer crosses the target value and hence the slope will be undefined. Hence, you could search the expression you create to find its last non-nil value and this will locate the last value of A where B does achieve its expected value. Do either of these approaches help or, at least, provide some insight Kevin? Shawn
↧
↧
Forum Post: RE: CALCULATOR DNL/ INL DAC
Dear mirtaji65, [quote userid="493365" url="~/cadence_technology_forums/f/custom-ic-design/47205/calculator-dnl-inl-dac/1371952"]What should I do to solve the problem?[/quote] I hope the following solves your latest problem. I have included the specific steps I followed and the resulting plots of INL versus voltage and the new plot of INL versus Time. Shawn community.cadence.com/.../example_5F00_plot_5F00_inl_5F00_vs_5F00_time.txt
↧
Forum Post: RE: Component placement -Draw Rectangle
Thanks Joma. It was working fine as per my requirements. thanks for your support
↧
Forum Post: RE: QR Barcode
You could give this a try: https://www.mediafire.com/file/9m6lohjnnr1n01h/AllegroQRCodeGenerator172.zip/file Windows only. QR Code is traditionally dark dots and light gaps but silkscreen is light dots and dark gaps so options to "reverse" and add a border to simulate a "normal" image (either seems to be recognized though). This hasn't been tested in a good while so there may be issues now, security with later Windows 10 builds for example, that weren't apparent when this was last tested.
↧
Forum Post: RE: ncsim: *E,STRPIN: Could not initialize SimVision connection: SimVision process terminated before a connection was established.
Not sure what IC version you're using, but this article may help explain it: Simvision exiting with STRPIN error when running AMS in ADE XL interactive simulations on remote host Andrew
↧
↧
Forum Post: RE: geToggleAreaSelectOption( ) - want to be able to set without cycling
Hi Michael, You can use: hiGetCurrentWindow()~>fullSelectionMode to get the current setting, and use: hiGetCurrentWindow()~>fullSelectionMode="enclosedAndCrossed" (or similar) to set it. So this way you can change it in the current window the way you want. There is the graphic fullSelectionMode cdsenv var, but that only affects new windows, not existing windows. One a window has been opened, you alter this via window properties instead. Andrew
↧
Forum Post: RE: atft model (Level=15) does not give Id=0 although sigma0, MUBAND, and IOL are made 0 (zero)
What you are seeing is the gmin conductance that is added across junctions to improve convergence when junctions are off. Given that circuit simulators cannot really handle complete off devices as this leads to an ill-conditioned matrix (put simply, a floating node means that you have an infinite number of possible solutions for that node), spectre handles this by placing a conductance (using the option gmin ) across potentially off junctions. The default value of gmin is 1e-12 Siemens (so 1e12 Ohms) and this is responsible for the leakage current you're seeing. You can reduce it (or even set it to 0) by using something like: myOpts options gmin=1e-15 but bear in mind that this might degrade convergence when devices are off (particularly if set to 0 or a very low conductance). Typically this gmin "leakage" would be less than real leakage in the technology if set appropriately. Andrew
↧
Forum Post: RE: Skill code to Calculating PCB Real-estate usage using placement boundaries and package keep ins
There is an old script created by Dave Elder that still works in V17.2, I have not tried it in V17.4 though. Jim O'Mahony community.cadence.com/.../taitComponentBoardRatio_5F00_public.zip
↧