Home > Community > Blogs > Mixed-Signal Design > fred discovers 1000x 10000x speedup using wreal models
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more convenient.

Register | Membership benefits
Get email delivery of the Mixed-Signal Design blog (individual posts).


* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

Fred Discovers 1000x-10000x Speedup Using wreal Models

Comments(0)Filed under: analog, mixed-signal, mixed signal, Verilog-AMS, SPICE, wreal, Virtuoso, Fred, real value, Verilog, analog behavoral

This is the second installment in an ongoing series of blog posts that includes an email conversation between Fred and Harry, two fictional mixed-signal engineers, about analog behiavoral modeling. You can read the first installment by clicking here. (NOTE: This blog post was written by Walter Hartong and uploaded by Paul Foster).

Hi Harry,

As I said, this was really the fun stuff. We are coming into the region of 1000x, 10000x or more speedup over SPICE -- that is what I was looking for. Before I tell you about the detail, it is for sure that this speedup does not come free (you know that I never trust someone who tells me that stuff comes free). We have to leave behind some of the analog behavior details, but that is fine.

OK, back to the beginning: Wreal is doing the magic. As you know, Verilog-D is not capable of using real valued ports. This is what wreal gives you. Wreal is a "wire real" or "real wire" if you want. The fun part is that even though it is a Verilog-AMS LRM construct it only needs the digital kernel for evaluation.

Thus, we are at the digital performance level and the coding style is pretty digital-like, for example:

module vco(vin, clk);
input vin;
wreal vin;
output clk;
reg clk;
real freq,clk_delay;
always @(vin) begin
freq = center_freq + vco_gain*vin;
clk_delay = 1.0/(2*freq);
always #(clk_delay) clk = ~clk;

It's that simple, you just connect the "vin" to your real net and you have a
nice oscillator.

I asked the Cadence guy why this is coming up now and why people haven't used this before since wreal has been in the Verilog-AMS standard forever.
Interesting answer, he said it is two-fold. One point is that there is more demand for really high speed mixed signal models from the digital teams (they have realized they can't ignore analog anymore -- like us),  and secondly, Cadence has implemented some enhancements over the standard that were essential to write good models.

I will get you the details soon.

Stay tuned, Fred


Leave a Comment

E-mail (will not be published)
 I have read and agree to the Terms of use and Community Guidelines.
Community Guidelines
The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.