Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16597 Discussions

Assigning XCVR_RECONFIG_GROUP constraint to transceiver's differential lane

Altera_Forum
Honored Contributor II
1,849 Views

Hi, 

 

 

I am testing Diaplay Port I/P on Altera's Arria 10 board. My top module has the following I/Os 

 

rx1_l0_p 

rx1_l1_p 

rx1_l2_p 

rx1_l3_p 

rx1_l0_n 

rx1_l1_n 

rx1_l2_n 

rx1_l3_n 

 

tx1_l0_p 

tx1_l1_p 

tx1_l2_p 

tx1_l3_p 

tx1_l0_n 

tx1_l1_n 

tx1_l2_n 

tx1_l3_n 

 

 

I need to make pin assignments to them and assign "HIGH SPEED DIFFERENTIAL I/O" constraints to them in QSF. 

Here, Quartus fitter takes compliment pin assignment automatically. That means, I have to assign PIN assignments to *_P pins only,  

if I assign "HIGH SPEED DIFFERENTIAL I/O" constraints to *_P pins. But doing so, it generates *_P(n) pins.  

 

 

But I don't want that. Please note that I can't change my top module or it's I/Os. 

 

 

So, instead of letting Quartus automatically assign compliment differential pin, can I assign the pins manually. Like this? 

set_location_assignment pin_aw7 -to rx1_l0_p 

set_location_assignment pin_aw8 -to rx1_l0_n 

set_instance_assignment -name io_standard "high speed differential i/o" -to rx1_l0_p 

set_instance_assignment -name io_standard "high speed differential i/o" -to rx1_l0_n 

 

 

 

 

Second question 

The above mentioned I/Os are transceiver channels. In Altera's reference design, they have following I/Os 

rx1_l0 

rx1_l1 

rx1_l2 

rx1_l3 

 

tx1_l0 

tx1_l1 

tx1_l2 

tx1_l3 

 

 

Here, they have drawn out only positive ends of differential I/Os 

And they have put each TX-RX channel pair under one XCVR_RECONFIG_GROUP 

 

 

set_instance_assignment -name xcvr_reconfig_group 1 -to tx1_l0 

set_instance_assignment -name xcvr_reconfig_group 1 -to rx1_l0 

set_instance_assignment -name xcvr_reconfig_group 2 -to tx1_l1 

set_instance_assignment -name xcvr_reconfig_group 2 -to rx1_l1 

set_instance_assignment -name xcvr_reconfig_group 3 -to tx1_l2 

set_instance_assignment -name xcvr_reconfig_group 3 -to rx1_l2 

set_instance_assignment -name xcvr_reconfig_group 4 -to tx1_l3 

set_instance_assignment -name xcvr_reconfig_group 4 -to rx1_l3 

 

 

 

 

In my top module, both (_P and _N) ends of differential I/Os have been drawn out 

RX1_L0_P 

RX1_L1_P 

RX1_L2_P 

RX1_L3_P 

RX1_L0_N 

RX1_L1_N 

RX1_L2_N 

RX1_L3_N 

 

 

TX1_L0_P 

TX1_L1_P 

TX1_L2_P 

TX1_L3_P 

TX1_L0_N 

TX1_L1_N 

TX1_L2_N 

TX1_L3_N 

 

 

What should I write in QSF to put TX-RX pair under same XCVR_RECONFIG_GROUP?
0 Kudos
1 Reply
Altera_Forum
Honored Contributor II
886 Views

With Altera's tools you only code and constrain the positive half of differential signals. By virtue of the fact you're specifying the signals as a differential I/O standard Quartus will automatically assign the negative pin accordingly. 

 

So, no. You shouldn't be adding the constraints you listed. Code for "RX1_L0", for example. Then, in the constraints editor, by specifying this is a differential I/O standard it'll automatically create the assignment for negative pin when you specify the pin for the positive pin. 

 

I recommend you play around with the 'Pin Planner', with a simple project, exploring the I/O standards and see what .qsf entries result. I think that'll clear things up for you and help answer your second question too. Then you can write your .qsf file from scratch - if you wish. 

 

Cheers, 

Alex
0 Kudos
Reply