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

RE: Import Schematic from Mentor Tanner to Cadence

$
0
0
Thank you very much! I will give it a shot.

Placement Edit Persistent Snap

$
0
0
Up until recently I've been able to select a symbol for placement edit and OrCAD would automatically snap to the symbol origin for the point to move. Now, however, lately I've noticed that when I perform the same task wherever I click within the symbol is where the symbol is moved from. It no longer snaps to the symbol origin, which for me is the symbol center. I've tried using Persistent Snap and click on Snap to Symbol Origin, but I get the following error in the command window Could not satisfy the snap condition using 'Symbol Origin' mode. Could someone help me discern why this has changed and is there a way to change it back so that I can move a symbol based on the symbol's origin? Thank you.

edit schematic annotation will freeze the whole cadence session until I xkill it

$
0
0
I am using Cadence Virtuoso IC6.1.7-64b.500.21 with ADE-L. I find it in multiple cases that when I open view->annotations->Setup and try to add more DC Operating Points, the whole cadence session will be freezon. I come back the next morning, it is still hanging there. I have to kill it. Is this a bug?

RE: edit schematic annotation will freeze the whole cadence session until I xkill it

$
0
0
I know there were some issues with annotation caching in some of the IC617 ISRs which were improved in ISR23. So please check with 6.1.7.500.23 and if it's still there in ISR23, please contact customer support . I'm not sure it's necessarily going to resolve what you're seeing, but please check the latest hotfix version first. Kind Regards, Andrew

RE: Annotations are just way too overpowering

$
0
0
Thanks for that - I'll certainly look into the documentation. So the bottom line is that this is working and I'm very happy and thankful to you for your help. However, I'm also having a couple teething problems but am feeling super guilty about taking up any more of your time. Given that I have a workable solution, I won't take any offense if you politely tell me to get lost (citing relationships between camels, inches and miles). That being said... 1. The following works, great but has an annoying side effect. I'm displaying the back-annotations in cell symbol but they annoyingly keep disappearing when I do things like check and save. They all come back after a redraw so it's more an annoyance than anything else. Here are some more details - the cell contains the following CDF parameters: instName to point to the desired instance numDigits for the displayed precision Aspect1 e.g. gm, vdsat, vth etc. Aspect2 (I have 5 of these altogether) The cell symbol contains 5 ilLabels containing the text "myAbsAspect(1)", "myAbsAspect(2)" etc . The function myAbsAspect() is: procedure(myAbsAspect(index) let( ((inst_name ilInst~>instName) (inst_aspect evalstring(strcat("ilInst~>Aspect" sprintf(nil "%d" index)))) (num_digits ilInst~>numDigits) ) ; abs() can't handle nil do the following myAbsAspect = OP(strcat(geGetInstHier() "/" inst_name) inst_aspect) if(myAbsAspect then aelSuffixNotation(abs(myAbsAspect) num_digits) else "") ) ) After I run a sim to completion the ilLabels all display as nil (which is disappointing) but if I do a redraw everything populates with the proper back-annotations and it all looks great. The next disappointing thing is that every time I do a check and save all of the ilLabels become empty (not nil, but "") and again I have to do a redraw to make them all visible again. Any idea what's causing that? 2. When I run a sim I see many of these in the CIW: *WARNING* (GE-2067): geGetInstHier: There is no graphical edit environment assigned to window(3) because the window is not a graphic editor window. Make sure that your current window is a valid graphic editor window. If it is a valid graph editor window, contact customer service to investigate this issue.

RE: measurements on eyediagram

$
0
0
Hi Vamshiky, Here's an updated piece of code with an additional function, abSampledEyeRange that I think does what you want (it can also output the min or max value at each sample point, since that was easy to do at the same time): /* abSampledEye.il Author A.D.Beckett Group Custom IC (UK), Cadence Design Systems Ltd. Language SKILL Date Feb 18, 2019 Modified Feb 20, 2019 By A.D.Beckett Plot a waveform as a graph similar to an eye diagram, but only using the sampled points. The points are plotted rather than as a continuous line, to help see the spread at various instants during the eye period. A second function is provided to compute the range, min or max at each sample point within the period. To install, use the fx button in the calculator function panel or in the ADE Expression Builder. For example: abSampledEye(v("jitter" ?result "tran-tran") 160n 400u 10n 80n ) abSampledEyeRange(v("jitter" ?result "tran-tran") 160n 400u 8 80n "range" "points") *************************************************** SCCS Info: @(#) abSampledEye.il 02/20/19.22:07:22 1.2 */ /******************************************************************* * * * (abSampledEye waveform start stop sampleInterval period) * * * * Produce a plot like an eye diagram (i.e. with the x-axis shifted * * to always be on the specified period) with the points sampled * * onto the specified sampleInterval. The plot is produced with * * a hint to plot using points rather than a joined line. * * * *******************************************************************/ ( procedure ( abSampledEye waveform start stop sampleInterval period ) ( cond ;-------------------------------------------------------------------- ; Handle ordinary waveform ;-------------------------------------------------------------------- ((drIsWaveform waveform) ( let (xVec yVec outXVec outYVec len startOfPeriod endOfPeriod time sampled outWave) ( setq xVec (drGetWaveformXVec waveform)) ( setq yVec (drGetWaveformYVec waveform)) ( setq len (drVectorLength xVec)) ;--------------------------------------------------------------- ; if no start given (start less or equal to 0), use first time point ;--------------------------------------------------------------- ( when ( leqp start 0) ( setq start (drGetElem xVec 0))) ;--------------------------------------------------------------- ; if no stop given (stop less or equal to 0), use last time point ;--------------------------------------------------------------- ( when ( leqp stop 0) ( setq stop (drGetElem xVec ( sub1 len)))) ;--------------------------------------------------------------- ; cast everything to floats, just to make sure ;--------------------------------------------------------------- ( setq start ( float start)) ( setq stop ( float stop)) ( setq period ( float period)) ( if ( greaterp stop start) ( progn ( setq sampled (sample waveform start stop "linear" sampleInterval)) ( setq xVec (drGetWaveformXVec sampled)) ( setq yVec (drGetWaveformYVec sampled)) ( setq len (drVectorLength xVec)) ;---------------------------------------------------------- ; create the output vectors ;---------------------------------------------------------- ( setq outXVec (drCreateVec (drType xVec) len)) ( setq outYVec (drCreateVec (drType yVec) len)) ( setq startOfPeriod start) ( setq endOfPeriod ( plus start period)) ( for point 0 ( sub1 len) ( setq time (drGetElem xVec point)) ( when ( greaterp time endOfPeriod) ( setq startOfPeriod endOfPeriod) ( setq endOfPeriod ( plus endOfPeriod period)) ) (drAddElem outXVec ( difference time startOfPeriod)) (drAddElem outYVec (drGetElem yVec point)) ) ( putpropq outXVec ( getq xVec units) units) ( putpropq outXVec ( getq xVec name) name) ( putpropq outYVec ( getq yVec units) units) ( putpropq outYVec ( getq yVec name) name) ( setq outWave (drCreateWaveform outXVec outYVec)) (famSetExpr outWave `(abSampledEye ,famGetExpr(waveform) start stop sampleInterval period)) ( putpropq outWave "scatterPlot" plotStyle) outWave ) ( error "Start time must be before stop time\n" ) ) ) ) ;-------------------------------------------------------------------- ; Handle family ;-------------------------------------------------------------------- ((famIsFamily waveform) (famMap 'abSampledEye waveform start stop sampleInterval period) ) ; family (t ( error "eyePlot - can't handle %L\n" waveform) ) ) ; cond ) /**************************************************************************** * * * (abSampledEyeRange waveform start stop samplesPerPeriod period * * rangeType @optional (plotStyle "points") * * * * Sample the waveform with samplesPerPeriod points in each period, and then * * compute the min and max across all periods for that sample. Outputs * * either the min, max or range (dependent on the rangeType parameter), * * and plots as either discrete points or a joined line. * * * ****************************************************************************/ ( procedure ( abSampledEyeRange waveform start stop samplesPerPeriod period ran geType @optional (plotStyle "points" )) ( cond ;-------------------------------------------------------------------- ; Handle ordinary waveform ;-------------------------------------------------------------------- ((drIsWaveform waveform) ( let (xVec yVec outXVec outYVec len startOfPeriod endOfPeriod time sampled outWave minVector maxVector sampleInterval binNum yVal) ( setq xVec (drGetWaveformXVec waveform)) ( setq yVec (drGetWaveformYVec waveform)) ( setq len (drVectorLength xVec)) ( setq minVector (makeVector samplesPerPeriod nil )) ( setq maxVector (makeVector samplesPerPeriod nil )) ( setq sampleInterval ( quotient period samplesPerPeriod)) ( when ( equal plotStyle "points" ) ( setq plotStyle "scatterPlot" )) ;--------------------------------------------------------------- ; if no start given (start less or equal to 0), use first time point ;--------------------------------------------------------------- ( when ( leqp start 0) ( setq start (drGetElem xVec 0))) ;--------------------------------------------------------------- ; if no stop given (stop less or equal to 0), use last time point ;--------------------------------------------------------------- ( when ( leqp stop 0) ( setq stop (drGetElem xVec ( sub1 len)))) ;--------------------------------------------------------------- ; cast everything to floats, just to make sure ;--------------------------------------------------------------- ( setq start ( float start)) ( setq stop ( float stop)) ( setq period ( float period)) ( if ( greaterp stop start) ( progn ( setq sampled (sample waveform start stop "linear" sampleInterval)) ( setq xVec (drGetWaveformXVec sampled)) ( setq yVec (drGetWaveformYVec sampled)) ( setq len (drVectorLength xVec)) ;---------------------------------------------------------- ; create the output vectors ;---------------------------------------------------------- ( setq outXVec (drCreateVec (drType xVec) samplesPerPeriod)) ( setq outYVec (drCreateVec (drType yVec) samplesPerPeriod)) ( setq startOfPeriod start) ( setq endOfPeriod ( plus start period)) ( for point 0 ( sub1 len) ( setq time (drGetElem xVec point)) ( when ( greaterp time endOfPeriod) ( setq startOfPeriod endOfPeriod) ( setq endOfPeriod ( plus endOfPeriod period)) ) ( setq binNum ( mod ( round ( quotient ( difference time startOfPeriod) sampleInterval)) samplesPerPeriod)) ( setq yVal (drGetElem yVec point)) ( when ( or ( null ( arrayref minVector binNum)) ( lessp yVal ( arrayref minVector binNum))) ( setarray minVector binNum yVal)) ( when ( or ( null ( arrayref maxVector binNum)) ( greaterp yVal ( arrayref maxVector binNum))) ( setarray maxVector binNum yVal)) ) ( for bin 0 ( sub1 samplesPerPeriod) ( when ( arrayref minVector bin) (drAddElem outXVec ( times sampleInterval bin)) (drAddElem outYVec ( case ran geType ( "min" ( arrayref minVector bin)) ( "max" ( arrayref maxVector bin)) (t ( difference ( arrayref maxVector bin) ( arrayref minVector bin))) )) ) ) ( putpropq outXVec ( getq xVec units) units) ( putpropq outXVec ( getq xVec name) name) ( putpropq outYVec ( getq yVec units) units) ( putpropq outYVec ( getq yVec name) name) ( setq outWave (drCreateWaveform outXVec outYVec)) (famSetExpr outWave `(abSampledEyeRange ,famGetExpr(waveform) start stop samplesPerPeriod period ran geType plotStyle)) ( putpropq outWave plotStyle plotStyle) outWave ) ( error "Start time must be before stop time\n" ) ) ) ) ;-------------------------------------------------------------------- ; Handle family ;-------------------------------------------------------------------- ((famIsFamily waveform) (famMap 'abSampledEyeRange waveform start stop samplesPerPeriod period ran geType plotStyle) ) ; family (t ( error "eyePlot - can't handle %L\n" waveform) ) ) ; cond ) ; ;;;;;;;;;;;;;;;;;;;;;;;;;; GUI builder information ;;;;;;;;;;;;;;;;;;;;;;;;;;; ocnmRegGUIBuilder( '( nil function abSampledEye name abSampledEye description "Produce an eye diagram of sampled points" category ( "Custom Functions" ) analysis ( nil general ( nil args (waveform start stop sampleInterval period ) signals ( nil waveform ( nil prompt "Waveform" tooltip "Waveform" ) ) params( nil start ( nil prompt "Start Time" tooltip "Start Time" guiRowHint 1 type float default 0.0 required t ) stop ( nil prompt "Stop Time" tooltip "Stop Time" guiRowHint 1 type float default 0.0 required t ) sampleInterval ( nil prompt "Sample Interval" tooltip "Sample Interval" guiRowHint 2 type float required t ) period ( nil prompt "Eye Period" tooltip "Eye Period" guiRowHint 2 type float required t ) ) inputrange t ) ) outputs(result) ) ) ; ;;;;;;;;;;;;;;;;;;;;;;;;;; GUI builder information ;;;;;;;;;;;;;;;;;;;;;;;;;;; ocnmRegGUIBuilder( '( nil function abSampledEyeRange name abSampledEyeRange description "Compute the range, min or max for each sample in eye period" category ( "Custom Functions" ) analysis ( nil general ( nil args (waveform start stop samplesPerPeriod period ran geType plotStyle ) signals ( nil waveform ( nil prompt "Waveform" tooltip "Waveform" ) ) params( nil start ( nil prompt "Start Time" tooltip "Start Time" guiRowHint 1 type float default 0 required t ) stop ( nil prompt "Stop Time" tooltip "Stop Time" guiRowHint 1 type float default 0 required t ) samplesPerPeriod ( nil prompt "Samples Per Period" tooltip "Samples Per Period" guiRowHint 2 type int required t ) period ( nil prompt "Eye Period" tooltip "Eye Period" guiRowHint 2 type float required t ) ran geType ( nil prompt "Range Type" tooltip "Range Type" guiRowHint 3 default "range" type ( "range" "min" "max" ) required t ) plotStyle ( nil prompt "Plot Style" tooltip "Plot Style" guiRowHint 3 default "points" type ( "points" "joined" ) required nil ) ) inputrange t ) ) outputs(result) ) ) Regards, Andrew.

RE: Annotations are just way too overpowering

$
0
0
I'm actually on vacation this week, so I'm not going to be able to investigate further this week (I happened to be checking my email, which I probably shouldn't be doing, which is why I saw this!). I'll try to find a little time to do this next week. To be honest, I think the cdsParam stuff has had quite a bit of tuning over the years to avoid problems with info not being available at certain times, so it might be a bit rash to directly use OP and geGetInstHier. I can imagine that the geGetInstHier problem is probably because the schematic window isn't the current window and the schematic is redrawn nevertheless. It probably should be passed the window id of the window being redrawn, but I'm not sure that's available. So maybe my idea wasn't so great... Andrew.

RE: Placement Edit Persistent Snap

$
0
0
When you enter into the "Move" command. Make sure to check to see if the move option is set to -point /Sym Origin. That will do it for you. Cheers

Change defaults of Qt-subapplication form

$
0
0
Hi all, I would like to re-define the defaults of the Qt-subapplication when printing waveforms to file. The manual indicates that these defaults are controlled by the LC_ALL environment variable, but I can't find any reference on how to set this variable to do what I want. Especifically, this is how the form looks now: How do I make it use a custom size defined by me with a landscape orientation and different margins by default ? It's pretty annoying and time consuming to have to change the aspect ratio of the waveforms every single time I need to print a file. Regards, Lewis

RE: Annotations are just way too overpowering

$
0
0
Thanks for the comments, but I just wanted to set the record straight - I thought your OP() idea was awesome because it lets me annotate exactly what I want and where I want it. While the CCFcdsParam method didn't suffer from disappearance syndrome, it did mean having to edit all of my symbols (and all of my future symbols) to accommodate them and there was also the leg work of needing to define all of the cdsParams to the particular (and variable) aspects I want (which may also not so portable if somebody else has their own cdsParam definitions when they view my schematics). Anyway, have a good vacation and I hope to hear from you later :-)

RE: VerilogA parsing problem

$
0
0
Great! That worked. You are awesome.

RE: In the 17.2 hotfix 051 environment, the buttons on the footprint viewer of OrCAD capture (zoom in, zoom out, zoom fit) do not work.

$
0
0
This seems to be a bug. Product team have been informed about this.

allegro17.2 hotfix051 Capture can't close Property Editor window with keyboard CTRL+F4

$
0
0
allegro17.2 hotfix051 Capture can't close Property Editor window with keyboard CTRL+F4

allegro17.2 hotfix051 Linewidth of part display inconsistency between part editor and schematic diagram

$
0
0
allegro17.2 hotfix051 Linewidth of part display inconsistency between part editor and schematic diagram

Integration of MATLAB with Cadence for Image Processing

$
0
0
Dear Technical Team, I wish to have clarification and support from cadence on the following. 1.I wish to know list of features that can be integrated with matlab. 2. Can cadence be integrated with simulink ? 3. Is there any possibility to use image processing tool box to feed input to the digital circuit designed through virtuoso ? 4.does post layout simulation process after extracting parasitic and including it to schematic supports matlab? 5.Is there any document which gives step by step procedure for integrating all the features of two tools (CADENCE + MATLAB)? Please, facilitate me with the sufficient materials so that I can realize and benefit from the fruitful integration of two companies tools

how to setup connectivity between layout and schematic

$
0
0
Hi How to setup connectivity between layout and schematic? How i can know the net names in layout ? i m using Virtuoso 6.1 Regards Amit

RE: measurements on eyediagram

$
0
0
Andrew, Thats pretty useful, I appreciate your effort on this. Thanks, vamshiky

Fix "tool tip" colors in GNOME

$
0
0
Hi! I'd like to solve the known problem of barely-readable Virtuoso tooltip colors (white text in pink background) in GNOME. I repeatedly found the solution to fix it in KDE, but I was unable to find an equivalent procedure in GNOME. Has anybody been able to achieve this? Thanks and regards, Jorge.

Who Is Green Hills?

$
0
0
Cadence announced during their recent quarterly earnings announcement and call that we are acquiring approximately 16% ownership in Green Hills Software for about $150M. Lip-Bu Tan, Cadence's CEO, joined their board of directors. Talking of Green Hills always reminds me of when I was a kid. In our school assembly, we always sang a hymn (unlike the US, Britain has an official religion). One of them was: There is a green hill far away, Without a city wall I always wondered why you would expect a green hill to have a city wall. It's an old use of "without" to mean "outside". It has died out in England, but when I did my post-graduate work in Edinburgh, I discovered that the Scottish say "outwith" still. Vast, Virtutech, and RTOSes As it happens, between my two tours of duty at Cadence I worked for VaST Systems Technology and Virtutech. They were both virtual platform companies, providing software that allowed binary code written for one processor (say an Arm core, or the NEC V850, a processor that you've probably never heard of but is really big in Japanese automotive) to be run on a regular PC, which, of course, has an x86 under the hood. For example, when AMD was creating the 64-bit x86 architecture (during Intel's Itanium foray), Virtutech provided the software that allowed Microsoft to port Windows to the new processor, running the 64-bit binaries on the then-current 32-bit processors. As a result, Windows booted on the first day silicon came back from the fab. This is basically unheard of. The alternative to using a virtual platform is to use a development board. But that requires the processor to be available in silicon, and even then it is often inadequate since SoCs may have lots of complex peripherals too. People building embedded systems, all had the problem that they wanted to build a chip, and run an RTOS (real-time operating system), and compile the real source code to the real binary, and then be able to debug it, all on their desktop PC. As a result, the embedded operating system companies were major partners of ours at both companies. The two biggest companies in the space were Wind River (in Alameda...yes, on the island) and Green Hills (in Santa Barbara). The two companies came to have very different strategies. Wind River had historically had a proprietary RTOS called VxWorks and another, pSOS, that resulted from an acquisition. If you had a camera back in the late 1990s it probably ran pSOS. If you happened to have a Mars Pathfinder, it ran VxWorks. But if you happened to be in the military or aerospace, you likely used Green Hills' RTOS called Integrity. That was when Wind River made what I consider to be an error and jumped on the open source trend, with the goal to be "the Red Hat of embedded." They switched to Eclipse as their development environment, and various flavors of Linux as their RTOS. As a result Wind River struggled with the transition. They were eventually acquired by Intel, and then went on to acquire Virtutech, after I'd left. Intel divested that division last year. Green Hills and Integrity Green Hills took the opposite approach and doubled down on Integrity, investing a lot in certification. Integrity-178B is certified to NIST's EAL6+, the highest common criteria security level ever for any operating system. If you work in aerospace, the 178B number will immediately mean something to you. DO-178B is (or was, since DO-178C replaced it in 2012) the guideline Software Considerations in Airborne Systems and Equipment Certification . It is the standard for developing avionics software, despite officially being merely a guideline, since it is the starting point that the FAA uses to certify aircraft. I don't want to overstate the comparison, but it is the aerospace equivalent of ISO 26262 automotive functional safety standard. It was jointly developed with Europe, but there it has a different number, ED-12B. At Virtutech we did some work in aerospace with Green Hills. It turned out that for our virtual platform software our certification for DO-178B was minimal. We only produced verification software, so we could miss catching an error that was already there, but never introduce a new error. Green Hills has different variants of Integrity, and also a system for tiny devices called Micro Velocity, which they insist on writing µ-velOSity, a product name tic that I dearly hope Cadence doesn't decide to adopt. They also have compilers, middleware, and an IDE (integrated development environment) called MULTI. They have leadership in embedded software, requiring safety and security. In this networked era, almost all software requires safety and security to be designed in, although historically it has often been treated as an afterthought. In just the last week we have heard of radio-controlled construction site cranes , and networked supermarket freezers . It is not just the "obvious" applications like planes or medical devices that require robust safety and security. Green Hills' customer base is a list of marquee names: Boeing, Lockheed Martin, Ford, Toyota, and, a surprising entrant in this list, Nintendo (Wii). Plus lots more. Green Hills is privately held, and is profitable. System Design Enablement Partnering with Green Hills and moving into the embedded software and security market is a natural step moving up the system stack. I talked above about virtual platforms, but the challenge was always developing models for the chips in a fast enough timeframe. It has turned out that the solution to this is emulation and FPGA prototyping, products that Cadence already has. Palladium Z1 for emulation, and Protium S1 for FPGA prototyping. Although these products both model the hardware, often the reason is not so much to validate the hardware, but to provide a foundation to allow the software to be developed and debugged. For a more in-depth look at this, see my post Emulation: the Key to Virtual Platforms . Addressing safety and security requires a multi-level approach involving both hardware and software. Cadence expects to collaborate on providing integrated solutions to enable the development of highly-secure embedded systems. For a more detailed take on SDE and software, see my post Software Isn't the S in SDE . Learn More Here is the press release . Green Hill's website (ghs.com). That's pretty much all there is for now. I will cover future announcements on Breakfast Bytes, so watch this space. Sign up for Sunday Brunch, the weekly Breakfast Bytes email.

RE: how to setup connectivity between layout and schematic

$
0
0
Hi Amit, Use Virtuoso Layout Suite XL (sometimes called "VXL" or "VLS-XL") - the layout is 'generated' from the schematic which maps devices, pins and connectivity to the layout. If you have an existing layout then you would need to make it 'XL' compliant by establishing device correspondence (and also device terminal correspondence / connectivity) between the layout and the schematic. Sounds like you either need training, or you need to read the documentation and/or look at the available resources such as videos and Rapid Adoption Kits. Best regards, Lawrence.
Viewing all 33813 articles
Browse latest View live