> _However_, using C++ is the "worst" way to write typical "business
> application" programs -- at least at this point in time.
> There are now two good reasons to use C++; one is to write
> "highly optimized" code which uses pointer manipulations, ...
> the other is to write for a platform which _only_ supports C++

I'm in the second boat. We do hardware design.
The hardware is designed in verilog and verilog-ams.
These two languages describe the digital and analog
pieces of the chip respectively.

To simulate this stuff, you use basically one of two
possible tools: one by cadence, the other by synopsys.
And if you're heavy in the Verilog-AMS, then you can
really only use cadence.

Up until recently, all verification was written in verilog.
Verilog is an OK language for digital design but a lousy
language for verification. It doesn't support anything
resembling a pointer or reference. Everything is passed
by value. There is nothing in verilog that is intrinsically
an object oriented language. Verilog essentially looks like
basic C, with some of the capabilities (like pointers)
chopped out.

A few years ago, the problems with verilog as a verification
language became a problem in delivering designs on time.
When chips were small, a small, simple testbench was OK.
As chips grew, the problems with a dumb language slowed
things down.

System-Verilog was invented as a language addition which
is intended for simulation/verification, not for the
hardware design. It has object-oriented concepts, you can
create instances of classes. It has pointers. System verilog
is more akin to a specialized flavor of C++ or something like
that.

But this is also not without its problems.

Relatively recently, simulators started putting hooks
in place so that you could pull in code in from another
language and use that instead. This is done through an interface
called DPI. Currently, the two main simulator companies
support DPI for "C" only. When you cross the boundary
from verilog/system verilog to DPI the language you can
jump into is "C".

After you get into "C", you can expand into c++.
The interface files the cross the boundary have to be C,
but this can tie into C++ if you want.

So, I've been doing verilog testbenches for years,
system verilog test benches for years, and they all
have their limtations as not being what I would call
a "real" language. So, I'm trying to write a testbench
in C++, interface it with "C", use that to jump the DPI
barrier to verilog, and tie into the hardware simulation.

So, I'm limited to c/c++ because we're tied to hardware
simulators which can only run hardware languages such
as verilog/vhdl and can only interface to one software
language, namely c, which can then tie into c++.

That is, at the moment, my only option for any testbench
that isn't written in verilog or vhdl. The simulator
limits me to c and c++.

Greg



_______________________________________________
Boston-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/boston-pm

Reply via email to