cancel
Showing results for 
Search instead for 
Did you mean: 
Contributor
Contributor
1,516 Views
Registered: ‎03-04-2016

Eyescan CSV Header has invalid format [Labtools 27-1957]

Jump to solution

Hi,

 

I've implemented the eyescan for our Virtex-7 FPGA.

In my dump file I can already receive valid data, but after writing it down to .csv file I got this error:

ERROR: [Labtools 27-1957] Invalid header format in file: filename.csv

 

I already had a look at https://www.xilinx.com/support/documentation/application_notes/xapp743-eye-scan-mb-mcs.pdf which told me the information I need. 

 

Maybe you can find the error in the .csv file.

Otherwise a working header example would be nice, too...

 

Best regards,

Michael

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Contributor
Contributor
1,309 Views
Registered: ‎03-04-2016

Re: Eyescan CSV Header has invalid format [Labtools 27-1957]

Jump to solution

I finally found the error in my C++ code.

 

Take care: data order seems to be very important to open the csv file successfully.

 

You have to start with the maximum value of vert_offset and start iterating from min. value to max. value of horz_offset.

After that count down the vert_offset one time and re-iterate from min. value to max. value of horz_offset.

 

for (int16_t i_vert = 126; i_vert >= -126; i_vert = i_vert - pCurrLane->vert_step_size) {	// iterate vertical
for (int16_t i_horz = -(pCurrLane->max_horz_offset); i_horz <= pCurrLane->max_horz_offset; i_horz=i_horz + pCurrLane->horz_step_size) { // iterate horizontal if (scan.sample_count == 0) { // assume sample = 1 as minimum scan.sample_count = 1; } BER_calculated = scan.sample_count * (pCurrLane->datawidth << (1 + scan.prescale)); if (scan.error_count == 0) { // assume error = 1 as minimum BER_calculated = 1 / abs(BER_calculated); } else { BER_calculated = scan.error_count / abs(BER_calculated); } csvfile << iter << ", " << "0" << ", " << "0" << ", " << "0" << ", " << "0" << ", " << scan.vert_offset << ", " << scan.horz_offset << ", " << "0" << ", " << scan.vert_offset << ", " << scan.horz_offset << "," << std::setprecision(16) << BER_calculated << std::endl; iter++; } }

After the eyescan is done I opened csv file successfully using Labtools 14.7 IBERTPlotter.

I will try it with the csv header style of Vivado, too, and I'll post the result if it works.

 

Best regards,

Michael

 

See an example eyescan attached.

View solution in original post

Eyescan.PNG
0 Kudos
3 Replies
Highlighted
Xilinx Employee
Xilinx Employee
1,471 Views
Registered: ‎08-07-2007

Re: Eyescan CSV Header has invalid format [Labtools 27-1957]

Jump to solution

what tcl commanded was used to generate the attached csv file?

are you using IBERT to do eye scan?

------------------------------------------------------------------------------
Don't forget to reply, give kudo and accept as solution
------------------------------------------------------------------------------
0 Kudos
Highlighted
Contributor
Contributor
1,467 Views
Registered: ‎03-04-2016

Re: Eyescan CSV Header has invalid format [Labtools 27-1957]

Jump to solution

I'm not using Tcl, because I've implemented a driver in C++ which gets access to HW, sets registers to do an eyescan and after that I write to csv file using this statements:

 

puts $f_csv "gt type,"
puts $f_csv "device,"
puts $f_csv "sw version,"
set samp_per_ui [expr (2 * $rate) + 1]
puts $f_csv "samples per ui, $samp_per_ui"
puts $f_csv "ui width,1"
puts $f_csv "date,"
puts $f_csv "time,"
puts $f_csv "voltage interval,$vert_step"
puts $f_csv "sweep test settings,RX Sampling Point,,,"
puts $f_csv "sweep test settings,TX Diff Swing,,,"
puts $f_csv "sweep test settings,TX Pre-Cursor,,,"
puts $f_csv "sweep test settings,TX Post-Cursor,,,"
puts $f_csv "=========================================="
puts $f_csv "Iteration,Elapsed Time,TX Diff Swing,TX Pre-Cursor,TX Post-Cursor,Voltage,RX Sampling Point(tap),Link,ES_VERT_OFFSET,ES_HORZ_OFFSET,BER"
	

 

I already recognized this is used for Xilinx ISE Ibertploter.

 

Now I want to translate the Vivado Tcl code

 

	# Generate CSV Header iBERTplotter
	puts $f_csv "SW Version,2013.2.0"
	puts $f_csv "GT Type,7 Series GTX"
	puts $f_csv "Date and Time Started, $start_time"
  puts $f_csv "Date and Time Ended, [clock format [clock seconds] -format {%b. %d %Y %I:%M:%S %p}]"
  puts $f_csv "Scan Name,$csv_file"
  puts $f_csv "Settings,"
  #puts $f_csv "Open Area,3072"
  puts $f_csv "Open Area,N/A"
  puts $f_csv "Dwell,BER"
  puts $f_csv "Dwell BER,1e-$prescale_arr(0,0,0)"
  puts $f_csv "Dwell Time,0"
  puts $f_csv "Horizontal Increment,$vert_step"
  puts $f_csv "Horizontal Range,-0.500 UI to 0.500 UI"
  puts $f_csv "Vertical Increment,$vert_step"
  puts $f_csv "Vertical Range,100%"
  puts $f_csv "Scan Start"

 

Is there any template for header and following data (and data ordering) available to avoid the Tcl script execution?

It's more easy to generate csv file in our driver, too. 

 

My eyescan driver is using DRP connection to the different GT lanes.

0 Kudos
Highlighted
Contributor
Contributor
1,310 Views
Registered: ‎03-04-2016

Re: Eyescan CSV Header has invalid format [Labtools 27-1957]

Jump to solution

I finally found the error in my C++ code.

 

Take care: data order seems to be very important to open the csv file successfully.

 

You have to start with the maximum value of vert_offset and start iterating from min. value to max. value of horz_offset.

After that count down the vert_offset one time and re-iterate from min. value to max. value of horz_offset.

 

for (int16_t i_vert = 126; i_vert >= -126; i_vert = i_vert - pCurrLane->vert_step_size) {	// iterate vertical
for (int16_t i_horz = -(pCurrLane->max_horz_offset); i_horz <= pCurrLane->max_horz_offset; i_horz=i_horz + pCurrLane->horz_step_size) { // iterate horizontal if (scan.sample_count == 0) { // assume sample = 1 as minimum scan.sample_count = 1; } BER_calculated = scan.sample_count * (pCurrLane->datawidth << (1 + scan.prescale)); if (scan.error_count == 0) { // assume error = 1 as minimum BER_calculated = 1 / abs(BER_calculated); } else { BER_calculated = scan.error_count / abs(BER_calculated); } csvfile << iter << ", " << "0" << ", " << "0" << ", " << "0" << ", " << "0" << ", " << scan.vert_offset << ", " << scan.horz_offset << ", " << "0" << ", " << scan.vert_offset << ", " << scan.horz_offset << "," << std::setprecision(16) << BER_calculated << std::endl; iter++; } }

After the eyescan is done I opened csv file successfully using Labtools 14.7 IBERTPlotter.

I will try it with the csv header style of Vivado, too, and I'll post the result if it works.

 

Best regards,

Michael

 

See an example eyescan attached.

View solution in original post

Eyescan.PNG
0 Kudos