Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Weak 'H', Pullup on inout bidirectional signal in simulation

Tags:

vhdl

modelsim

Is there a way to tell the simulator (I'm using Modelsim) to pull a signal to weak 'H' when it's not being driven by either bidirectional interface?

For example if I have an I2C signal I2C_SDA that is declared as an inout from 2 modules. One is my actual UUT and the other is a testbench. Both have statements like this:

io_i2c_sda <= r_I2C_DATA when r_I2C_DATA_EN = '1' else 'Z'; 

So both ends are tri-stated. This works fine in simulation, except that the line is BLUE ('Z') all the time that neither end is transmitting. How can I pull-up this line to a 'H' in the code when neither end is transmitting?

like image 215
Russell Avatar asked Oct 01 '13 13:10

Russell


1 Answers

For VHDL, it should be possible to simply add an extra driver to the signal (which has to be of std_logic type), with the constant value 'H'. In Verilog one would use a simple '1' driver and the net type wand for wired and. 'H' specifically means a weak high driver, so it will be overridden by the low drivers.

like image 130
Yann Vernier Avatar answered Oct 12 '22 03:10

Yann Vernier