tranif1 always a driver ?

This is a discussion on tranif1 always a driver ? within the verilog forums in Programming Languages category; Hi, I am not sure whether this is a verilog issue or ncsim issue. We have a verilog model of a I/O buffer that can be configured as either Analog or Digital. This is modelled using // digital signal bufif0 (PAD, I, OEN_global); // analog signal tranif1 (PAD,ANA_IN,ANAE); i.e. when the analog enable (ANAE) is active (high) the tranif1 switch is enabled. However, I have noticed that even with ANAE disabled (low), this gate is still considered a driver on PAD (checked using driver command in ncsim, and also via EVCD analysis). i.e. If the digital O/P function is enabled, ...

Go Back   Application Development Forum > Programming Languages > verilog

Object Mix

Register FAQ Calendar Search Today's Posts Mark Forums Read
  #1  
Old 08-19-2008, 12:26 PM
moogyd@yahoo.co.uk
Guest
 
Default tranif1 always a driver ?

Hi,

I am not sure whether this is a verilog issue or ncsim issue.

We have a verilog model of a I/O buffer that can be configured as
either Analog or Digital. This is modelled using

// digital signal
bufif0 (PAD, I, OEN_global);
// analog signal
tranif1 (PAD,ANA_IN,ANAE);

i.e. when the analog enable (ANAE) is active (high) the tranif1 switch
is enabled.

However, I have noticed that even with ANAE disabled (low), this gate
is still considered a driver on PAD (checked using driver command in
ncsim, and also via EVCD analysis). i.e. If the digital O/P function
is enabled, then there are two drivers on PAD (bufif0 and tranif1).

This is causing us some difficulties because our EVCD analysis tool
(for ATPG pattern generator) is giving us errors (multiple drivers).

So, questions
- Is this "logical". i.e. Does anyone believe this behaviour is
correct? Any LRM lawyers out there ?
- Is it ncsim specific issue, or is it more general.

Any initial thoughts? I will generate and post a very simple test
case.

Thanks,

Steven




Reply With Quote
  #2  
Old 08-19-2008, 08:14 PM
glen herrmannsfeldt
Guest
 
Default Re: tranif1 always a driver ?

moogyd@yahoo.co.uk wrote:

> We have a verilog model of a I/O buffer that can be configured as
> either Analog or Digital. This is modelled using


> // digital signal
> bufif0 (PAD, I, OEN_global);
> // analog signal
> tranif1 (PAD,ANA_IN,ANAE);


> i.e. when the analog enable (ANAE) is active (high) the tranif1 switch
> is enabled.


> However, I have noticed that even with ANAE disabled (low), this gate
> is still considered a driver on PAD (checked using driver command in
> ncsim, and also via EVCD analysis). i.e. If the digital O/P function
> is enabled, then there are two drivers on PAD (bufif0 and tranif1).


Is PAD declared as inout?

As far as I know, verilog doesn't allow analog signals.
Still, tranif1 should pass the signal from either side to the
other side, though that would have to be to a tri or inout line.

For synthesis it might be that you can only generate a tristate
driver with an input, output, and enable line.

-- glen

Reply With Quote
  #3  
Old 08-21-2008, 02:58 PM
moogyd@yahoo.co.uk
Guest
 
Default Re: tranif1 always a driver ?

On 19 Aug, 18:26, moo...@yahoo.co.uk wrote:
> Hi,
>
> I am not sure whether this is a verilog issue or ncsim issue.
>
> We have a verilog model of a I/O buffer that can be configured as
> either Analog or Digital. This is modelled using
>
> // digital signal
> bufif0 (PAD, I, OEN_global);
> // analog signal
> tranif1 (PAD,ANA_IN,ANAE);
>
> i.e. when the analog enable (ANAE) is active (high) the tranif1 switch
> is enabled.
>
> However, I have noticed that even with ANAE disabled (low), this gate
> is still considered a driver on PAD (checked using driver command in
> ncsim, and also via EVCD analysis). i.e. If the digital O/P function
> is enabled, then there are two drivers on PAD (bufif0 and tranif1).
>
> This is causing us some difficulties because our EVCD analysis tool
> (for ATPG pattern generator) is giving us errors (multiple drivers).
>
> So, questions
> - Is this "logical". i.e. Does anyone believe this behaviour is
> correct? Any LRM lawyers out there ?
> - Is it ncsim specific issue, or is it more general.
>
> Any initial thoughts? I will generate and post a very simple test
> case.
>
> Thanks,
>
> Steven


Hi,

I have generated a simple example.

// Simplified behavioural model of tri-state buffer with
// analog functionality
module my_buf (anae, ana_in, dout, oen,pad);
inout pad ; // Bidir Pad
inout ana_in ; // Analog in (to/from analog top)
input anae ; // Active high analog enable
input dout ; // Digital data
input oen ; // Digital data O/P enable

// Digital O/P function
assign pad = (oen == 1'b0) ? dout : 1'bz ;

// Analog Function
tranif1 (pad,ana_in,anae);
endmodule

// Simple Testcase
module tb_my_buf();

wire pad ;
wire ana_in, anae;
reg dout,oen ;

// Disable analog function for this test case
assign anae = 1'b0 ;
)
// Toggle dout
initial begin
oen = 1'b0 ; // Always enable digital I/P
dout = 1'b0 ;
end

always
#50 dout = ~dout;

// UUT

my_buf dut ( .pad(pad),
.ana_in(ana_in),
.anae(anae),
.dout(dout),
.oen(oen)
);

endmodule

When I run this simulation for 1000 ns and then check the drivers on
pad
Modelsim 6.2c shows 1 driver (as expected)
Cadence NCSIM 6 shows 2 drivers (includes tranif1 even through control
is 0)

Therefore, it looks like a cadence ncsim issue.

I would appreciate if anyone can check behaviour in the synopsys
simulator.

Thanks,

Steven
Reply With Quote
  #4  
Old 08-21-2008, 07:27 PM
sharp@cadence.com
Guest
 
Default Re: tranif1 always a driver ?

On Aug 19, 12:26*pm, moo...@yahoo.co.uk wrote:
>
> So, questions
> - Is this "logical". i.e. Does anyone believe this behaviour is
> correct? Any LRM lawyers out there ?


I agree that this seems odd, and is not what I would have expected.

The bidirectional trans are strange beasts, and require some unusual
treatment from a simulator. That might affect the reporting of
drivers. Do you really need this transistor modelled as
bidirectional? If you just want a transistor model that passes
strength through in one direction, I would suggest using the
unidirectional nmos primitive instead. That avoids the special
treatment required for trans.

Reply With Quote
Reply


Thread Tools
Display Modes


All times are GMT -5. The time now is 11:40 PM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
vB Ad Management by =RedTyger=

In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.