Re: my suggestions for Verilog-AMS extensions

From: Xavier Bestel <Xavier_Bestel@mentor.com>
Date: Thu Feb 17 2011 - 07:40:55 PST

Hi Achim,

just a few remarks:

On Thu, 2011-02-17 at 15:27 +0100, Achim Bauer wrote:
[...]
> further suggestions
> ===================
> * also solved for real variables, not only electrical with access
> operator

On one hand being able to promote arbitrary variables to simple solvable
states would be useful (à la VHDL-AMS), but you would have to specify
tolerances for the solver to work properly, so you can as well specify a
new discipline and work with that.
On that topic, I have seen people write designs with a complete Newton
solver written in Verilog-A, of course it's fragile and would have been
better done using the simulator's solver, but that show that Verilog-A
misses an obvious way of resolving non-electrical equations.

> * the syntax for specifying the equation system might be simplified
> e.g. like V(x) : 0 == ... instead of V(x) : V(x) == V(x) + ...

Yes, I can't see why it shouldn't work.
(It already does on some simulators).

> * it should be possible to constrain/guide/initialize the solver
> e.g. like constraint : x > y/10; instead of + ( ( V(x) >
> V(y)/10 )? 0 : 1M );

How about V(x) : abs(V(x) - V(y)/10) == V(x) - V(y)/10; ?
You can rewrite it so that V(x) is alone on the LHS.

> * implicit (real-value) equations at both the analog and the digital
> side

Any example, and why ?

> * powerful solver algorithm, e.g. using randomized logarithmic start
> vectors

I think this is an implementation detail of the solver.

[...]
> 3) DYNAMIC ARRAY
> =
> of scalars, of arrays, of structs...
> With VHDL-like attributes, e.g. LEFT, RIGHT, RANGE, LENGTH, LOW,
> HIGH ...
>
> why?
> ====
> to measure an unknown number of samples,
> e.g. for asserting a rolling average or for extracting statistical
> data.
> currently: wasting memory, (simulation) performance and the users
> time:
> a worst case parameter has to be set for the width, but in diverse
> reuse/application scenarios the number of samples to be
> measured/asserted might vary/scale over many orders of magnitude.
>
> example
> =======
> ...
> real y_array [1:+]; real t_array [1:+];
> ...
> if ( sampling ) begin
> sample = y_array'RIGHT + 1;
> y_array[sample] = Vprobe;
> t_array[sample] = $abstime;
> end //if
> ...
> samples = y_array'LENGTH;
> ...
[...]

Correct me if I'm wrong, but isn't that handled by parametrized arrays ?

> 4) OOMR READ AND WRITE OF INTEGER AND REAL VALUES
> =
> why?
> ====
> modify/write/direct/control and observability of real values e.g.
> from a remote testbench or correlated modules.

Why not.

        Xav

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Thu Feb 17 07:41:20 2011

This archive was generated by hypermail 2.1.8 : Thu Feb 17 2011 - 07:41:21 PST