RE: always @(implicit_net)

From: Martin O'Leary <oleary_at_.....>
Date: Mon Aug 29 2005 - 08:07:40 PDT
Comments below.


________________________________

	From: owner-verilog-ams@eda.org
[mailto:owner-verilog-ams@eda.org] On Behalf Of Jonathan David
	Sent: Friday, August 26, 2005 12:46 AM
	To: Tamhankar Prasanna-A14507; verilog-ams@eda.org
	Subject: RE: always @(implicit_net)
	
	
	You can also assign the value of a wire to another wire..
	assign output2 = !output1||input ; 
	oleary>as all of these nets (output2, output1, input) are used
as discrete nets, they are considered discrete nets and cannot resolve
to continuous.
	 
	if either of those are wires, and get resolved to a continuous
discipline, there could be a difficulty, but I would assume that a
simple 
	declaration added with the desired discrete discipline should
resolve this, which means that if its NOT resolved, and the wire is used
in an assign, it should be assumed to be of the default discrete
discipline and the appropriate connect_module should be inserted at
elaboration. 
	 
	If this is NOT currently in the spec, is there ANY reason we
couldn't add it? 
	 
	 

	Jonathan David   Mixed-Signal IC
	jbdavid@cadence.com Ph (408)894-2646
	

	 


________________________________

		From: owner-verilog-ams@eda.org
[mailto:owner-verilog-ams@eda.org] On Behalf Of Tamhankar
Prasanna-A14507
		Sent: Thursday, August 25, 2005 11:32 PM
		To: 'verilog-ams@eda.org'
		Subject: always @(implicit_net)
		
		

		All,
		
		Have a question about usage of implicit nets in
Verilog-AMS, can implicit nets be used in behavioral blocks ?
		
		AMS LRM section 3.4.5 says they can be used in
structural descriptions, there are no restrictions on implicit net usage
withing behavior block.
		
		Looks like in a pure digital module (no mixed signal),
usage of always @(implicit_net) is actually allowed.  However, this gets
complicated in a mixed-signal module because the implicit net may either
get resolved to be analog or digital, and doing always
@(analog_implicit_net) is wrong even within a digital block. I have
attached a simple module illustrating the issues below
		
		`include "disciplines.vams"
		
		`timescale 1ns/1ns
		//`default_nettype wire
		
		module testImplicitNets;
		
		  reg d;
		  wire dout;
		
		  not #1 (implicitNet1, d);
		  not #1 (implicitNet2 , implicitNet1);
		  not #1 (dout , implicitNet2);
		
		  initial begin
		    #100 d  = 0;
		    #100 d  = 1;
		    #100 d  = 0;
		    #1 $finish;
		  end
		
		  always @( d )              $display( $time,
"[DIGITAL]d toggled to \t",     d );
		  always @( implicitNet1 or implicitNet2 ) $display(
$time, "[DIGITAL]\t\t", implicitNet1, implicitNet2);
		
		  analog begin
		    // @( implicitNet1 or implicitNet2 )
$strobe("[ANALOG]\t\t", implicitNet1, implicitNet2);
		        @(implicitNet1) $strobe("[ANALOG]implicitNet1
toggled at time = %g!\n",  $abstime);
		  end
		endmodule
		
		Cheers,
		Prasanna
		------------------------------------------------------
		Prasanna Tamhankar
		Freescale Semiconductors, Adelaide
		+61 8 81683585
		------------------------------------------------------ 
Received on Mon Aug 29 08:07:50 2005

This archive was generated by hypermail 2.1.8 : Mon Aug 29 2005 - 08:09:44 PDT