UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor sicksystem
Visitor
837 Views
Registered: ‎11-16-2018

ModelSim can't simulate clock buffers (IBUF/BUFG)

The code I'm working on uses a couple of clock buffers and a mux to clock the transmit and receive controllers/RAMs for an UDP core (not my code)

  U1:  ibuf port map
      ( i => rx_clk,
        o => rx_clk_ibuf);

  U2: bufg port map
      ( i => rx_clk_ibuf,
        o => rx_clk_int);

  U3: bufgmux port map    
      ( i0 => tx_clk,
        i1 => rx_clk_int ,
        S  => enable_1Gb ,
        O  => tx_clk_int);

This works fine on final hardware, but in ModelSim both rx_clk_int and tx_clk_int become "Undefined" in waveform. I tried initializing the signals with '0' at declaration, but then they just remain 0 through the whole simulation instead. If I directly connect them it works however.

rx_clk_int <= rx_clk;
tx_clk_int <= tx_clk;

How can I get those buffers to work in simulation?

Or should I try use pragmas to select between the different code snippets depending on if it's synthesis or simulation? (I only know of "synthesis translate_on/off" though, so I don't know how to make simulator skip code)

0 Kudos
7 Replies
Moderator
Moderator
807 Views
Registered: ‎04-24-2013

Re: ModelSim can't simulate clock buffers (IBUF/BUFG)

Hi @sicksystem,

Have you created a clock on tx_clk and rx_clk in your testbench?
If you have initialised them to zero and have no clock then they will remain zero.

Best Regards
Aidan

 

------------------------------------------------------------------------------------------------------------------
Please mark the Answer as "Accept as solution" if this answered your question
Give Kudos to a post which you think is helpful and may help other users
------------------------------------------------------------------------------------------------------------------
0 Kudos
799 Views
Registered: ‎06-21-2017

Re: ModelSim can't simulate clock buffers (IBUF/BUFG)

Have you compiled the Xilinx simulation libraries for ModelSim?

0 Kudos
Visitor sicksystem
Visitor
782 Views
Registered: ‎11-16-2018

Re: ModelSim can't simulate clock buffers (IBUF/BUFG)

Yes, the rx_clk and tx_clk work fine, which is why the second code snippet I wrote is working.

To clarify, If I write the second code snippet, everything in the simulation works as expected. All components in the whole system act as I want them to, sending and receiving UDP packets etc. but as soon as I use the clock buffers instead of that direct assignment, the clocks become undefined.

With some experimentation I've come up with the temporary solution of keeping both snippets in the code

  U1:  ibuf port map
      ( i => rx_clk,
        o => rx_clk_ibuf);

  U2: bufg port map
      ( i => rx_clk_ibuf,
        o => rx_clk_int);

  U3: bufgmux port map 
      ( i0 => tx_clk,
        i1 => rx_clk_int ,
        S  => enable_1Gb ,
        O  => tx_clk_int);

-- synthesis translate_off
  rx_clk_int <= rx_clk;
  tx_clk_int <= tx_clk;
-- synthesis translate_on

It seems that ModelSim lets the direct assigments override the buffers, but this way the synthesis will keep using them.

0 Kudos
Visitor sicksystem
Visitor
781 Views
Registered: ‎11-16-2018

Re: ModelSim can't simulate clock buffers (IBUF/BUFG)


@bruce_karaffa wrote:

Have you compiled the Xilinx simulation libraries for ModelSim?


If you mean the XilinxCoreLib, then yes it is compiled.

0 Kudos
Xilinx Employee
Xilinx Employee
771 Views
Registered: ‎07-16-2008

回复: ModelSim can't simulate clock buffers (IBUF/BUFG)

Is it a behavioral simulation or timing simulation? What is the clock frequency?

How do the BUFG input signals look like in the waveform?

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
Visitor sicksystem
Visitor
761 Views
Registered: ‎11-16-2018

回复: ModelSim can't simulate clock buffers (IBUF/BUFG)


@graces wrote:

Is it a behavioral simulation or timing simulation? What is the clock frequency?

How do the BUFG input signals look like in the waveform?


It is a behavioral simulation

clockbufs.png

rx_clk and tx_clk are inputs to buffers. Technically I can't say if BUFG is failing or not since the signal is Undefined already after IBUF, so of course BUFG becomes Undefined as well.

Frequency 25 MHz

0 Kudos
Xilinx Employee
Xilinx Employee
735 Views
Registered: ‎07-16-2008

回复: ModelSim can't simulate clock buffers (IBUF/BUFG)

It's strange that the output of IBUF remain undefined. It should be just a pass through.

Can you post the test case for a look?

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos