For loops in Cadence

If one is doing an analysis over a range of variables, one should use the paramAnalysis ocean function. That said, I’m constantly having to look up how to do a for loop in Skill. So, I’m placing a couple examples where I know I can get to them.

Read More »

Posted in Analog Professional | Tagged , , | Leave a comment

Skill File I/O

I keep having to look this up, so I’m going to put it here for easy reference:

Open a File

h = outfile("new_file.txt", "w")
h = infile("existing_file.txt")
h = outfile("partial_file.txt", "a")

Opens new file for writing, existing file for reading, and partial file for appending, respectively.

Write to a file

write("Hello World!\n", h)
fprintf(h, "gm = %f", OP("/M23" "gm"))
print(OP("/M23" "gm"), h)
pprint(OP("/M23" "gm"), h)

Write “Hello World!” to a file (newlines are explicit); construct formatted string and write to file; print using native format to a file; pretty-print (useful for nested lists etc) to a file. File handle is h.

Read from a file

str = lineread(h)

Reads a single line as a string

Posted in Analog Professional | Tagged , , | Leave a comment

Updates to Cadence/Subversion (CDSVN) scripts

Our Brazilian Friends PCS and NGJr have offered the following changes to the CDSVN package:

  • Into the file “cdsLibMgr.lib” was created the menu item “SVN Unlock Cell”
  • Into the file “svnLockCell.il” were created the procedures “svnUnlockCell” and “svnUnlockCellFormCB”
  • Inside the procedures “svnUnlockCellFormCB” and “svnUnlockCVFormCB” were made the following changes:
  • where you have: if( !(rexMatchp(“.*.svn$”, file~>readPath) || rexMatchp(“.*%”, file~>readPath))
  • was changed to: if( !(rexMatchp(“.*.svn$”, file~>readPath) || rexMatchp(” “, file~>readPath))

Behaviors observed:

  • We don´t want the files *.cd% under version control, but if for some reason they are under version control that exist the possibility to lock them or unlock them.
  • Copying a “cell” or a “view” by “Library Manager” doesn´t copy files *.cd% which is not a problem because we don´t want these files under version control.
  • The command “[user@host CDSVN]$ svn lock *” or “[user@host CDSVN/bin]$ lock directory/” locks the files *.cd%, however, the “CDSVN Unlock Cell” or “CDSVN Unlock View” does not unlock.
  • The “CDSVN Lock Cell” or “CDSVN Lock View” does not unlock the files *.cd%, however, the commands “[user@host CDSVN]$ svn unlock *” or “[user@host CDSVN/bin]$ unlock directory/” are able to unlock.
  • Copying by the command “[user@host CDSVN]$ svn copy” copies the files *.cd% only if they are already under version control. The same behavior occurs for “CDSVN Copy Cell” or “CDSVN Copy View”. This is not a problem.
  • The command “[user@host CDSVN]$ svn add”, “CDSVN Add Cell” or “CDSVN Add View” does not add files *.cd% even because this type of file is in the list of ignored files as showed below:
    [user@host /home/user/.subversion] vi config
    global-ignores = *.cd% *.cd- *.cdslck *.Cat% *.abstract.status *.abstract.messages *.inca* *inca* .cdsvmod expand.cfg% transcript_ms

    [user@host CDSVN/]vi cadence_ignores.txt
    *.cd%
    *.cd-
    *.cdslck
    *.Cat%
    *.abstract.status
    *.abstract.messages
    *.inca*
    *inca*
    ….
    cdsvmod
    expand.cfg%
    transcript_ms

Their updated files are attached. Special thanks to PCS for coordinating this. Remember, the CDSVN scripts are licensed under GPL.

cdsLibMgr.il
svnLockCell.il
cdsLibMgr.il

Posted in Analog Professional | Tagged , , , , | Leave a comment

My other blogs & plans for the future

It used to be that I’d post just about anything here. However, after a few months of posting circuit design articles, I developed a consistent readership and decided that most of you aren’t interested in my daily life and/or the tech hobbies that I might be up to. As a result, I separated my personally-centered blogs from this blog.
I just wanted to quickly mention that if anyone is interested, I have two other blogs:
Personal Blog
Tech (software/computer) Blog

Also, you’ll notice that Google Ads are prominently displayed on this blog. I wanted to recoup the hosting costs of running this blog. Unfortunately, that didn’t end up being as profitable as I thought. So, as soon as I hit $100 of ad revenue (which is the minimum to cash out of my Google AdSense account), I’ll remove the ads. I’ll essentially be eating the hosting cost (in addition to the time I’ve put into the blog).

Unless I change my mind. Which is unlikely.

Also, I might try out some more social features on the web site. If I get the time. Which is also unlikely.

Posted in Uncategorized | Tagged , , | Leave a comment

Tunable Non-Foster Match Using Switched Capacitor

Foster’s reactance theorem states that any reactance Cannot render equation. Use Firefox instead. increases as a function of frequency Cannot render equation. Use Firefox instead.. This is true of the impedance looking into an antenna, where the reactance may be a large part of the overall impedance. The task in matching the antenna (for maximum power transfer and therefore maximum SNR) is to cancel the reactance (or susceptance) and match the resistance.

Unfortunately, this can’t be done over a large range, because as Foster’s reactance theorem states, as soon as you deviate a little from your center frequency, both the inductive reactance of your antenna and the reactance of whatever you’re using to cancel it (most likely a capacitive element) both increase (go toward Cannot render equation. Use Firefox instead.). So, for every change Cannot render equation. Use Firefox instead. in frequency from the center frequency, your antenna reactance goes up by some amount Cannot render equation. Use Firefox instead., but your matching element’s reactance also goes up by some amount Cannot render equation. Use Firefox instead..

If you had a Non-Foster element, the reactance of your tuning element would go down by some amount Cannot render equation. Use Firefox instead., compensating for the increased reactance of the antenna. You would then have  a broadband (or broader) match.

Most attempts to do this have required the use of active elements (such as gyrators) so synthesis a negative impedance. However, I’m wondering if  a switched-capacitor circuit can be used to synthesize this Non-Foster reactance. Most analyses of switched-capacitor circuits show that they are synthetic resistors at frequencies far below the switching frequency. However, what does the impedance look like near the switching frequency? Read More »

Posted in Analog Professional | Tagged , , , | Leave a comment

Median vs Mean

I’ve been doing some statistical measurements lately (more to follow). It occurs to me that while most people measure the mean of a set of measurements, the median is more useful.

Read More »

Posted in Analog Professional, Digital Professional, Software | Tagged , | Leave a comment

CircuitDesign.Info: Site maintenance

Some of you may have noticed that the site was down for a day last week.

Expect a bit more down-time: I’m going to do a bit of experimentation to ensure that future down-time doesn’t happen again (improve reliability).

Posted in Uncategorized | Tagged | Leave a comment

Special thanks to Justin Patrin

Special thanks to Justin Patrin for his awesome ASCIIMathML plugin. From now on, equations will look nicer, like:

Cannot render equation. Use Firefox instead.

You rock, Justin! I (and my readers) thank you.

Posted in Software | Tagged , | 1 Comment