From: Clifford E. Cummings (cliffc@sunburst-design.com)
Date: Wed Jun 16 1999 - 08:15:31 PDT
BAD MSG:
Hi, Robert -
-Lines: 79
Content-Type: text/plain; charset="us-ascii"
Content-Length: 3003
X-Status: $$$$
X-UID: 0000000960
Status: RO
I am copying your requests and my responses to the Behavioral Task Force
(BTF). The BTF e-mail address is: btf@boyd.com.
We have been working on Verilog enhancements for the past three years and
are trying to wrap up our work in the next month. I'm guessing that you
have been to the Behavioral Task Force enhancements web page? (
http://www.ovi.org/ieee-1364/btf.html )
At 03:18 PM 6/15/99 -0500, you wrote:
>I noticed that the IEEE 1364 WG is considering language changes again.
>
>On the multidimensional arrays that were accepted: can a multidimensional
>array be passed as an argument to a task?
No, multi-dimensional arrays cannot be passed as arguments. Passing an
entire array as an argument must either be done by a reference (a pointer),
which is not permitted, or else it causes a simulator to become very
inefficient. We tended to vote against enhancements that would slow down a
simulator without offering significant functional enhancement. Translation:
we want Verilog to be fast!
>I had a request back in the OVI days I'd like to be reconsidered if it has
>not already been. The "nonblocking event" proposal has some similarities.
>
>"background" construct
>----------------------
>Add a "fork without join" construct, to start another thread without
>blocking the thread which starts it. If it were called "background", code
>might use it like this:
> while (something)
> begin
> o_data <= mem[addr];
> background
> begin
> parity = parity_calc (data); //** Is this a typo?? (o_data)?
> @(posedge clk);
> o_parity <= parity;
> end
> @(posedge clk);
> end
>
>Right now, the only way to program pipelines like this is with an event.
> while (something)
> begin
> o_data = mem[addr];
> ->issue_parity;
> @(posedge clk)
> end
> ...
>always @(issue_parity)
>begin
> parity = parity_calc data); //** typo (data) or (o_data)??
> @(posedge clk);
> o_parity <= parity;
>end
Please note the typo questions in your code above(?)
Could you help me to understand this example better? Are you trying to do
behavioral modeling or testbench generation? The code is clearly
non-synthesizable (events, fork-join, while-loop).
In the top example, if the "background" and the second "@(posedge clk)" are
removed, what is this block of code not doing that the second block of code
does?
>---
>PC: Robert.Elliott@compaq.com
>UNIX: relliott@hobbit.eng.hou.compaq.com
Regards - Cliff Cummings
//********************************************************************//
// Cliff Cummings E-mail: cliffc@sunburst-design.com //
// Sunburst Design, Inc. Phone: 503-579-6362 / FAX: 503-579-7631 //
// 15870 SW Breccia Dr., Beaverton, OR 97007 //
// //
// Verilog & Synthesis Training //
// Verilog, VHDL, Synopsys, LMG, FPGA, Consulting and Contracting //
//********************************************************************//
This archive was generated by hypermail 2.1.4
: Mon Jul 08 2002 - 12:53:28 PDT
and
sponsored by Boyd Technology, Inc.