cancel
Showing results for 
Search instead for 
Did you mean: 
Observer
Observer
5,373 Views
Registered: ‎11-14-2013

Artix7 Differential pair pullup / pulldown fail in Vivado

Jump to solution

Hi ,

 

The RTL code is very simple.

 

module blvds_test(
input dp,
input dn,
output rx
    );
 
 
  IBUFDS #(
      .DIFF_TERM("FALSE"),       // Differential Termination
      .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE"
      .IOSTANDARD("LVDS_25")     // Specify the input I/O standard
   ) IBUFDS_inst (
      .O(rx),  // Buffer output
      .I(dp),  // Diff_p buffer input (connect directly to top-level port)
      .IB(dn) // Diff_n buffer input (connect directly to top-level port)
   );
 
    
     PULLUP PULLUP_inst (
      .O(dp)     // Pullup output (connect directly to top-level port)
   );
    
     PULLDOWN PULLDN_inst (
      .O(dn)     // Pulldown output (connect directly to top-level port)
   );
endmodule

 

 

 

Get following warning message :

[Constraints 18-4379] The N and P sides of the following differential port(s) have connections to PULLUP/DOWN primitives that conflict with the setting of iconstr.diffPairPulltype param.  The PULLUP/DOWN connection for these ports will be ignored. dn, dp

 

I checked the IO properties,PULLUP on both dp and dn.

 

Kim

 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Scholar
Scholar
9,699 Views
Registered: ‎06-05-2013

Re: Artix7 Differential pair pullup / pulldown fail in Vivado

Jump to solution

@kimwen From Vivado 2014.1 Vivado implementation we have changed the way.

 

If you would like to keep pullup/pulldown on diff pairs this is controlled by param called iconstr.diffPairPulltype param.

 

if you would like to keep pullup on p and pulldown on n just set this parm to opposite by setting Pullup on P port.

 

lets take your example here

 

module blvds_test(
input dp,
input dn,
output rx
    );
 
 
  IBUFDS #(
      .DIFF_TERM("FALSE"),       // Differential Termination
      .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE"
      .IOSTANDARD("LVDS_25")     // Specify the input I/O standard
   ) IBUFDS_inst (
      .O(rx),  // Buffer output
      .I(dp),  // Diff_p buffer input (connect directly to top-level port)
      .IB(dn) // Diff_n buffer input (connect directly to top-level port)
   );
 
    
     PULLUP PULLUP_inst (
      .O(dp)     // Pullup output (connect directly to top-level port)
   );
    
endmodule

 

Please note i have removed pulldown from above code. now before running this code just run this tcl command in vivado tcl console

 

set_param iconstr.diffPairPulltype opposite

 

Above tcl command would set the opp pulltype on N port. After running impl you would see Pull up on P and Pul down on N

 

 

-Pratham

----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------

View solution in original post

3 Replies
Highlighted
Scholar
Scholar
9,700 Views
Registered: ‎06-05-2013

Re: Artix7 Differential pair pullup / pulldown fail in Vivado

Jump to solution

@kimwen From Vivado 2014.1 Vivado implementation we have changed the way.

 

If you would like to keep pullup/pulldown on diff pairs this is controlled by param called iconstr.diffPairPulltype param.

 

if you would like to keep pullup on p and pulldown on n just set this parm to opposite by setting Pullup on P port.

 

lets take your example here

 

module blvds_test(
input dp,
input dn,
output rx
    );
 
 
  IBUFDS #(
      .DIFF_TERM("FALSE"),       // Differential Termination
      .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE"
      .IOSTANDARD("LVDS_25")     // Specify the input I/O standard
   ) IBUFDS_inst (
      .O(rx),  // Buffer output
      .I(dp),  // Diff_p buffer input (connect directly to top-level port)
      .IB(dn) // Diff_n buffer input (connect directly to top-level port)
   );
 
    
     PULLUP PULLUP_inst (
      .O(dp)     // Pullup output (connect directly to top-level port)
   );
    
endmodule

 

Please note i have removed pulldown from above code. now before running this code just run this tcl command in vivado tcl console

 

set_param iconstr.diffPairPulltype opposite

 

Above tcl command would set the opp pulltype on N port. After running impl you would see Pull up on P and Pul down on N

 

 

-Pratham

----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------

View solution in original post

Highlighted
Scholar
Scholar
5,235 Views
Registered: ‎06-05-2013

Re: Artix7 Differential pair pullup / pulldown fail in Vivado

Jump to solution

@kimwen Did that help?

-Pratham

----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------
0 Kudos
Highlighted
Observer
Observer
5,213 Views
Registered: ‎11-14-2013

Re: Artix7 Differential pair pullup / pulldown fail in Vivado

Jump to solution

Hi Pratham,

 

Thank you for your kindly help.

 

The solution is working for me.

 

 

Kim

0 Kudos