Current Server Time: 23:49 (Central Europe)

#apertus IRC Channel Logs

2019/08/03

Timezone: UTC


01:52
aSobhy
Bertl where you set the Directory in "vivado.tcl" ?
01:53
Bertl
in the existing sources, the current directory is assumed
01:53
Bertl
(cd build.vivado && vivado -mode tcl -source ../vivado.tcl)
01:54
Bertl
will build in build.vivado subdirectory
01:57
aSobhy
I searched It sets the directory from the where it typed that command but on my side don't
01:58
aSobhy
It holds at the default path : C:/Users/Abd-ElRhman/AppData/Roaming/Xilinx/
02:00
aSobhy
I asked to see If their is a way to set the directory by command
02:01
aSobhy
also "set origin_dir 'path' " didn't work
02:01
Bertl
try setting 'DIRECTORY'
02:02
apurvanandan[m]
Bertl how de we remove negative slack in timing ananlysis
02:02
Bertl
i.e. set_property DIRECTORY [current_project] ...
02:03
Bertl
apurvanandan[m]: please share the timing path
02:04
Bertl
negative slack usually arises from either excessive path delay or from clock skew
02:05
apurvanandan[m]
How can I share it here?
02:06
Bertl
pastebin?
02:06
apurvanandan[m]
The trace reports right?
02:07
Bertl
well, specifically the timing path for one (or more) of the problematic ones (with negative slack)
02:07
Bertl
you can also commit/upload the project and I'll check for myself
02:08
apurvanandan[m]
https://pastebin.com/u8Kk8ixH
02:08
apurvanandan[m]
Ok, doing that
02:08
Bertl
the paste is rather unreadable btw :)
02:09
apurvanandan[m]
Yeah, don't know why formatting got lost
02:09
aSobhy
no It didn't accept it
02:11
Bertl
what exactly is the problem at the moment?
02:12
apurvanandan[m]
https://github.com/apurvanandan1997/BER_mesurement_x1
02:12
apurvanandan[m]
Sorry I am using GUI tools, no makefile rightnow
02:14
Bertl
so how do I build it?
02:14
apurvanandan[m]
Please teach me also how to analyze timing issues
02:15
apurvanandan[m]
Do you have Diamond 3?
02:15
Bertl
3.11
02:16
apurvanandan[m]
Open the ber_measure.ldf in proj folder from open project in Diamond
02:16
apurvanandan[m]
*Please
02:18
aSobhy
I found a way :)
02:21
Bertl
apurvanandan[m]: okay, then?
02:21
Bertl
aSobhy: excellent! let's hear!
02:22
apurvanandan[m]
Generate bitsream from process, then please go to timing analysis view from tools menu
02:22
Bertl
there is no 'Generate bitsream' under 'Process'
02:25
apurvanandan[m]
Above the console there are three tabs, file list, process, herarchy
02:25
apurvanandan[m]
It is in process tab
02:29
Bertl
http://vserver.13thfloor.at/Stuff/GSoC2019/apurva_diamond.jpg
02:30
apurvanandan[m]
Yes the bitsream file under export files
02:30
apurvanandan[m]
Please double click on that
02:32
apurvanandan[m]
After that you want to go to Tools menu above in menu bar, then timing analysis view option
02:34
Bertl
not sure what it is doing right now, spinning on 'Export Files' atm
02:35
apurvanandan[m]
Yes, once it finish we can see timing analysis from the tools menu
02:41
Bertl
so how long is it supposed to work on the Bitstream File?
02:42
apurvanandan[m]
few seconds
02:42
apurvanandan[m]
:/
02:43
Bertl
http://vserver.13thfloor.at/Stuff/GSoC2019/apurva_diamond2.jpg
02:43
Bertl
it is in this state for quite some time now
02:44
Bertl
(no output, nothing, just spinning)
02:44
apurvanandan[m]
Nevermind, stop that process. Place and route is required only for timing option there
02:45
apurvanandan[m]
Rightclick and stop
02:45
Bertl
done
02:45
apurvanandan[m]
:)
02:46
Bertl
when I select Process -> Timing view
02:46
Bertl
diamond segfaults
02:47
apurvanandan[m]
Tools -> Timing Analysis View right?
02:47
Bertl
yep, sorry, Tools
02:47
Bertl
Use of deprecated SAXv1 function comment
02:47
Bertl
Segmentation fault (core dumped)
02:47
apurvanandan[m]
:/ Okay please wait I am sending the report by some means
02:48
Bertl
how about you switch the project to commandline build
02:48
Bertl
that works just fine and doesn't require messing with the GUI
02:50
apurvanandan[m]
I know how much useful it is, I am switching definitely once things work
02:53
apurvanandan[m]
https://pastebin.com/hMYQdaS2
02:54
apurvanandan[m]
https://pastebin.com/q2GiTUeC
02:54
apurvanandan[m]
Now they are formatted well
03:04
Bertl
why is the FIFO running at 300MHz?
03:06
Bertl
cdc_fifo_inst
03:09
Bertl
and regarding 'how much useful it is, I am switching definitely once things work' this is definitely the wrong approach, because you are now wasting (your and my) time with 'GUI problems' which would be better spent on 'actual problems'
03:15
aSobhy
finished it \o/
03:16
Bertl
top.tcl?
03:19
aSobhy
yes but I'll push the latest update now
03:19
aSobhy
just 1 min
03:26
aSobhy
https://github.com/aabdosobhy/Bi-Direction-packet-protocol/tree/master/Training/ZYNQ
03:27
aSobhy
Its the same link
03:27
Bertl
vivado -mode tcl -source top.tcl ?
03:28
aSobhy
yes and you didn't need to do "cd build.vivado "
03:28
Bertl
yes, I saw that
03:29
aSobhy
okay
03:30
aSobhy
Its giving an error didn't appear before sorry sorry
03:31
Bertl
yeah, DRC INBB-3
03:32
aSobhy
I didn't do that before
03:33
aSobhy
It*
03:38
Bertl
further hints are in the critical warnings ...
03:38
Bertl
[Project 1-486] Could not resolve non-primitive black box cell 'sh_2b_rg' instantiated as 'train_inst/word_8b_Reg'
03:44
aSobhy
yeah I found them
03:45
aSobhy
and running again to check it solved or not
03:45
aSobhy
I'm very sorry
03:48
aSobhy
Bertl how many cores I can specify to be run on any machine
03:49
aSobhy
don't tell me one please xD its very slow
03:49
Bertl
doesn't matter much, Vivado is terribly bad on using multiple cores
03:49
Bertl
but you can specify up to 10 for me
03:51
aSobhy
okay that's grade I'll make them 4
03:51
Bertl
if you do not specify it, it should use all available cores
03:52
Bertl
if you specify it as '4' it will be limited to that
03:54
aSobhy
no when I reduce it to 1 it didn't add "-jobs 4" -to the max- I think
03:57
aSobhy
the error is fixed
04:01
Bertl
mkdir: cannot create directory ‘build.vivado’: File exists :)
04:01
aSobhy
ah I delete that file before runing
04:02
aSobhy
folder*
04:02
Bertl
also you want to make sure that the case is correct
04:03
Bertl
Shift_2b_reg.vhd' does not exist
04:03
Bertl
shift_2b_reg.vhd does
04:04
aSobhy
no its exist !
04:04
Bertl
note the lower case 's' versus the upper case 'S'
04:04
Bertl
on most filesystems those are different
04:06
aSobhy
yeah I missed that
04:06
aSobhy
I changed it :)
04:11
Bertl
so for the set_property
04:11
aSobhy
yes
04:11
Bertl
set_property PACKAGE_PIN T9 [get_ports "lvds_p"]
04:11
Bertl
should work
04:13
Bertl
actually
04:13
Bertl
set_property PACKAGE_PIN T9 [get_ports {lvds_p}]
04:13
Bertl
is better
04:13
aSobhy
I tried that first It didn't change
04:14
aSobhy
set_property PACKAGE_PIN T9 [get_ports "lvds_p"] is running now
04:15
Bertl
it works on the tcl console (with your project) so it should be fine
04:20
aSobhy
maybe I missed something but finally \o/
04:22
Bertl
congratulations on your first Zynq bitstream! :)
04:22
Bertl
(I wish I would have said that six weeks ago :/)
04:23
aSobhy
I can't celebrate now Its still running
04:26
aSobhy
I need a time machine now :)
04:26
aSobhy
thanks Bertl for your help :) :)
04:26
Bertl
np
04:27
Bertl
you might also consider switching from the project based workflow to the non-project based as it is a lot faster
04:40
aSobhy
but It gives a warning that their is no T9 pin name
04:40
aSobhy
what part we are using
04:40
aSobhy
I used Zynq-7000
04:41
aSobhy
xc7z020clg484-1
04:41
aSobhy
is that right?
04:41
Bertl
xc7z020clg400-1
04:42
Bertl
it is defined in the BOARD_PART
04:42
Bertl
em.avnet.com:microzed_7020:part0:1.0
04:42
aSobhy
ok
04:42
Bertl
(or 1.1 if you have a more recent vivado)
04:43
aSobhy
I'll copy it from the vivado.tcl file its the same
04:50
aSobhy
the only part I have from em.avnet.com is xc7z020clg484-1
04:52
Bertl
did you install the MicroZed Board definition files?
04:52
Bertl
http://zedboard.org/support/documentation/1519
04:52
aSobhy
actually I didn't remember
04:53
aSobhy
OK I'll see that link
06:05
Bertl
off to bed now ... have a good one!
06:05
Bertl
changed nick to: Bertl_zZ
06:09
aSobhy
Good night :)
06:13
BAndiT1983|away
changed nick to: BAndiT1983
10:03
Y_|G
joined the channel
11:09
illwieckz__
joined the channel
11:12
illwieckz_
left the channel
12:21
BAndiT1983
changed nick to: BAndiT1983|away
13:07
Bertl_zZ
changed nick to: Bertl
13:07
Bertl
morning folks!
13:08
apurvanandan[m]
Good morning Bertl
13:08
apurvanandan[m]
I was waiting for you
13:09
apurvanandan[m]
Sorry, I fell asleep today in morning
13:09
Bertl
what's up?
13:10
apurvanandan[m]
Is there a way we can skip a clock cycle every 5 cycles, like 10101010001010101000...
13:11
apurvanandan[m]
Without using falling_edge trigger
13:11
Bertl
a gated clock can do that
13:12
apurvanandan[m]
Basically I want to leave one repeated 10b data due to 4:5 gearing in DDRX4 without using falling edges
13:12
Bertl
not sure what you mean
13:13
apurvanandan[m]
You told that falling edge creates timing issues, so I am eliminating those
13:14
apurvanandan[m]
So when you group 5 8bits words into 4 10bits, one clock cycle is only used for sampling new data right?
13:14
apurvanandan[m]
Sampling the first 8 bits every cycle
13:14
Bertl
falling edges do not create more timing issues than rising edges but mixing them or alternating them will
13:15
apurvanandan[m]
Yeah, all my design has rising edge except one process that eliminates a clock cycle
13:15
Bertl
why would you modify the clock?
13:16
apurvanandan[m]
So in DDR x4 when first 8 bits are received, you don't have a 10b word, so you wait for next clock cyles and then send 10b from 16b received
13:17
apurvanandan[m]
So on reception of first 8b , not data output clock is given
13:18
apurvanandan[m]
You told me this remember?
13:18
Bertl
yes, but I didn't tell you to mess with the clock
13:18
Bertl
it's just that one of the five clock cycles does not produce new data
13:19
Bertl
what do you do with the data?
13:19
Bertl
i.e. what is the next step after the 5x8:4x10 gearing?
13:20
apurvanandan[m]
Send it to decoder with same clock and then to fifo with same clock
13:20
Bertl
so where is the problem?
13:21
Bertl
you do not need to use every decoded value
13:21
apurvanandan[m]
If I use the same clock, it will take it as new data ?
13:21
Bertl
there are 4 clock cycles where the 10bit values are correct and one where you need to wait
13:22
apurvanandan[m]
Okay, my approach was wrong here
13:22
Bertl
the decoder has to run at the speed of the clock anyway, so it will produce 5 'decoded' values
13:22
Bertl
one of them will be incorrect, because it is from the wait cycle
13:23
Bertl
at the FIFO, you only add the 4 correct ones
13:23
Bertl
and simply ignore the fifth cycle
13:23
Bertl
this only requires a simple counter which you already have to adjust the mux to combine the 8bit words
13:25
apurvanandan[m]
Okay, so I can do that by making write enable '0' of the fifo at that cycle?
13:25
Bertl
precisely
13:25
apurvanandan[m]
Ok nice, my problem solved :)
13:26
Bertl
you can also avoid that the decoder gets a wrong word
13:26
apurvanandan[m]
By introducing an enable signal in decoder?
13:27
Bertl
yep
13:27
Bertl
if the decoder has a state
13:27
Bertl
i.e. if it tracks what was decoded, then you want to do that
13:28
Bertl
if it doesn't care and just decodes the word, then you can either send the old (valid) word or a bad word depending how your logic around error and comma detection works
13:28
apurvanandan[m]
Decoder samples data at both rising and falling edge
13:29
Bertl
that sounds wrong
13:29
apurvanandan[m]
It is the one taken from FreeCores.org
13:30
apurvanandan[m]
Sorry opencores.org
13:30
Bertl
what is the purpose of 'sampling' at both edges when you only provide data at rising edge?
13:32
apurvanandan[m]
The encoder uses both edges but the decoder uses only negedge
13:32
apurvanandan[m]
https://github.com/freecores/8b10b_encdec/blob/master/8b10_dec.vhd
13:34
Bertl
odd choice ... will certainly cause some timing issues
13:34
apurvanandan[m]
:/
13:34
apurvanandan[m]
Will try to correct that also
13:36
apurvanandan[m]
Also one more question
13:37
apurvanandan[m]
DLLDEL: deser_inst/ddrx1_inst/Inst4_DLLDELC CLKI has no preference. A preference is required that provides the period of the clock to calculate the 90 degree delay.
13:38
apurvanandan[m]
I get this warning when I don't write FREQUENCY PORT "CLK_LANE" 300.000000 MHz ; in constraints file
13:38
apurvanandan[m]
But when I do I get lot of negative slack
13:39
Bertl
this is like saying: it's all fine when I do not do timing checks, but it suddenly gives timing errors when I check :)
13:39
apurvanandan[m]
oh, sorry :/
13:39
Bertl
if you do not specify the clock/phase information to the tools, they will not report problems
13:40
apurvanandan[m]
:O
13:40
Bertl
you need to have a number of timing constraints, not just for clocks, also for input/output delays for static timing analysis to make any sense
13:40
apurvanandan[m]
So is mentioning FREQUENCY PORT "CLK_LANE" 300.000000 MHz ; correct?
13:41
Bertl
if your CLK_LANE has 300MHz then yes
13:42
apurvanandan[m]
Where can I learn how to write constraints?
13:43
Bertl
http://www.latticesemi.com/~/media/LatticeSemi/Documents/UserManuals/RZ/Timing_Closure_Document.pdf?document_id=45588
13:44
apurvanandan[m]
Thanks Bertl, that was a great help
13:44
Bertl
you're welcome!
14:25
Bertl
off for now .. bbl
14:25
Bertl
changed nick to: Bertl_oO
14:26
danieel
apurvanandan[m]: maybe you are looking for a "data valid" signal, which will take shape of 01111 over the time, that creates 4 used states in 5 periods of higher freq clock
14:27
danieel
having just 8 bit in the 10bit bus is the 0, and after that, you have 4 periods of full 10bits (and extra register prepares the remainder to be used with the newly coming 8bits)
14:43
apurvanandan[m]
Exactly danieel , thanks
15:59
Fares
joined the channel
16:24
Umori
left the channel
16:28
Umori
joined the channel
16:57
illwieckz__
changed nick to: illwieckz
17:14
apurvanandan[m]
Bertl, DDR x4 gearing also worked
17:14
apurvanandan[m]
Now I am able to receive counter correctly
17:15
apurvanandan[m]
There could be two reasons it wasn't working, one can be using gated clock other can be using 40 bits reg and read and writing at same time
17:16
apurvanandan[m]
for 4 to 5 gearing
17:17
apurvanandan[m]
I am now just using a 10 bit reg and rearranging the 8 bits on the spot to form the 10 bit word
17:17
apurvanandan[m]
Now I am going to overclock and lets see what happens
17:20
apurvanandan[m]
Also both word alignment methods ie the internal one in IDDRX4B and one made by me both are working :)
17:26
BAndiT1983|away
changed nick to: BAndiT1983
17:36
Bertl_oO
sounds good
18:38
BAndiT1983
changed nick to: BAndiT1983|away
18:39
BAndiT1983|away
changed nick to: BAndiT1983
19:41
aSobhy
Bertl how do I reset the ZYNQ?
19:42
aSobhy
and for the reset I chosed the signal called "pB22B_W" that conneted to the PIC16
19:43
aSobhy
Is that fine ?
19:47
aSobhy
**and for the RFW reset**
20:07
apurvanandan[m]
Bertl, The DDRX4 is also working only till 300 MHz, at 375MHz there are lot of bit errors
20:07
apurvanandan[m]
Unmet timing constraints should be the issue right?
20:12
davidak
joined the channel
20:26
BAndiT1983
changed nick to: BAndiT1983|away
20:44
davidak
left the channel
20:57
BAndiT1983|away
changed nick to: BAndiT1983
21:03
Bertl_oO
aSobhy: you probably do not want to 'reset' the Zynq
21:03
Bertl_oO
because that will reboot the Beta
21:04
Bertl_oO
apurvanandan[m]: very likely, you need to make sure your design passes all timing checks with proper constraints
21:10
aSobhy
ok I mean to reset my modules
21:11
Bertl_oO
you can do that in many ways, for example via one of the EIOs
21:13
aSobhy
like what?
21:13
Bertl_oO
you mean, what other ways except for an EIO?
21:14
Bertl_oO
AXI Bus (register mapping), JTAG Bus, via the fclk reset interface ...
21:16
aSobhy
no I mean the EIOs, how can I do that
21:17
Bertl_oO
you simply use them, they are a direct connection between fabric and arm cores
21:17
Bertl_oO
Linux supports them as GPIO interface
21:18
Bertl_oO
(but you can also access the registers directly)
21:18
Bertl_oO
EMIO* on the fabric side (part of the PS)
21:24
apurvanandan[m]
Bertl, Most of the timing errors are in the soft ip RX_SYNC
21:24
apurvanandan[m]
I mean all the errors
21:25
apurvanandan[m]
As it was mentioned that it can be given any slow clock for reset sync, I divided the fast edge clock and gave it
21:26
Bertl_oO
well, fix it
21:27
aSobhy
Is that what we are talking about ?
21:27
aSobhy
MIO
21:27
aSobhy
Eight PS MIOs (0, 9-15) are shared between the Pmod connector on-board the MicroZed and
21:27
aSobhy
the JX2 MicroHeader. When plugged into a Carrier, it is intended that the PS MIO Pmod on the
21:27
aSobhy
MicroZed would not be used.
21:28
Bertl_oO
the MIOs are GPIOs too, but they are only connected to the PS side and are used for PS peripherials
21:28
Bertl_oO
what you want to use are the EMIOs which are connected to the fabric
21:29
Bertl_oO
they do not have a physical connection outside the ZYNQ
21:31
apurvanandan[m]
Bertl, all timing errors solved
21:31
Bertl_oO
good, what was the issue?
21:31
Bertl_oO
(or the solution :)
21:31
apurvanandan[m]
I used FT601 100MHz clock for reset syncronisation of DDR x4
21:32
Bertl_oO
that's the solution?
21:32
apurvanandan[m]
Earlier I had used the DDR input clock made it slow by counter
21:32
apurvanandan[m]
Now I am using FT601 clock
21:33
Bertl_oO
I'm pretty sure you just 'disabled' the timing checks
21:33
apurvanandan[m]
Yes that is the solution
21:33
Bertl_oO
double check that cross clock domain timing is checked
21:34
Bertl_oO
because you probably just made things worse :)
21:34
apurvanandan[m]
Do you want to have a look over timing report?
21:34
Bertl_oO
yes, especially the part related to the reset
21:34
apurvanandan[m]
I also know this at the back of mind :/
21:35
apurvanandan[m]
ahh, It isn't showing that rx part now
21:50
illwieckz_
joined the channel
21:53
apurvanandan[m]
Yes, Bertl I instantiated internal oscillator and now it is showing reset sync signals and they have timing closure correct, no negative slacks
21:53
apurvanandan[m]
Does it means the problem is fixed?
21:53
illwieckz
left the channel
21:54
aSobhy
sorry Bertl I'm searching to understand more
21:57
Bertl_oO
http://vserver.13thfloor.at/Stuff/AXIOM/BETA/cmv_hdmi3/top.vhd
21:57
apurvanandan[m]
https://pastebin.com/tcqeWUye
21:57
Bertl_oO
search for emio there, you'll find the ps7 connections
21:58
aSobhy
OK that's great :)
21:59
apurvanandan[m]
https://pastebin.com/Lb9qfQ93
21:59
apurvanandan[m]
Here are the timing report for rx_sync reset sync module
22:00
Bertl_oO
Constraints cover 3152 paths, 7 nets, and 2140 connections (96.22% coverage)
22:01
Bertl_oO
what about the missing 3.88% ?
22:02
apurvanandan[m]
:o
22:02
Bertl_oO
(roughly about 120 pathes seems to have no constraints)
22:03
Bertl_oO
might be worth checking what those are
22:05
apurvanandan[m]
Trying that now, never did anything like this before :)
22:07
apurvanandan[m]
Ok found, It is a normal signal whose rising edge syncs the prngs and it happens only once
22:08
apurvanandan[m]
So it is routed using generic clock resource and can suffer from delays
22:08
Bertl_oO
okay, you might want to add an input constraint for that
22:09
Bertl_oO
or put it through a synchronizer
22:10
apurvanandan[m]
Okay
22:10
Bertl_oO
so just to recap, you now have DDR x1 and x4 running on virtex-5 to machxo2
22:11
apurvanandan[m]
yupp
22:11
Bertl_oO
and you get similar issues at about the same clock rate
22:11
apurvanandan[m]
Both at 300 MHz
22:11
apurvanandan[m]
not working at 375 or 400 MHz
22:11
Bertl_oO
and what is the datarate?
22:11
apurvanandan[m]
Yes similar issues
22:11
Bertl_oO
because 300 Mhz x1 means 600Mbit
22:12
Bertl_oO
but 300MHz x4 would be way above that :)
22:12
apurvanandan[m]
Yes 8/10 of that
22:12
apurvanandan[m]
means 480 Mbit
22:12
Bertl_oO
so the slow clock on x4 is actually 75MHz
22:13
apurvanandan[m]
Yes
22:13
Bertl_oO
okay
22:13
apurvanandan[m]
But in x4 the bandwitdh is 600 MBits only
22:13
Bertl_oO
so let's assume this is a problem of the connection
22:13
Bertl_oO
and let's try the same on the Beta
22:14
apurvanandan[m]
Nice idea
22:14
apurvanandan[m]
Is the usb module plugged there?
22:14
Bertl_oO
nobody has been at the hub, but as I said, I have one here
22:14
apurvanandan[m]
I will need to install D3XX on ZBox
22:15
Bertl_oO
another option would be to use the Main Board MachXO2
22:15
Bertl_oO
which is probably simpler to monitor (via the PIC)
22:15
apurvanandan[m]
I don't have much idea how PIC works
22:16
Bertl_oO
doesn't matter much, you can program the MachXO2 via the PIC
22:16
aSobhy
I want attend that process
22:16
apurvanandan[m]
XD
22:16
Bertl_oO
and you have two LVDS pairs on the RFE
22:16
Bertl_oO
so you can use one for clock and one for data for a test
22:17
Bertl_oO
aSobhy: yeah, you should have done this in the first two weeks ...
22:17
apurvanandan[m]
But how will I get FT601 data?
22:17
Bertl_oO
not at all
22:18
Bertl_oO
the simplest way to get the counter values (and that is basically all you want to know for BER) is via JTAG
22:18
apurvanandan[m]
I would prefer the USB module Bertl please
22:19
apurvanandan[m]
I can work with multiple channels till then
22:19
Bertl_oO
aSobhy: so it seems you still have some time to get BER running :)
22:21
apurvanandan[m]
Bertl, why is baudrate 600MBit in both cases?
22:21
Bertl_oO
hmm?
22:21
apurvanandan[m]
Is x1 and x4 just about bit grouping for output word
22:22
apurvanandan[m]
Both are just DDR
22:22
aSobhy
:/
22:26
apurvanandan[m]
One genuine question, DDRX4 offers data width parameters also, ie I can have 5 LVDS lanes make it [5:0] data bus input. Other thing that I can do is instantiate 5 DDR x4 modules and join 5 FIFOs and then to FTDI
22:27
apurvanandan[m]
Which method seems better to you?
22:28
Bertl_oO
the difference between x1, x2 and x4 DDR (and also the 7:1 gearing) is that you get a lower clock rate with a wider bus
22:29
Bertl_oO
i.e. x1 gives you halve of the DDR rate which is equal to your high speed clock
22:29
Bertl_oO
x2 gives you a quarter (i.e. half the high speed clock)
22:29
Bertl_oO
and x4 gives you one eight (i.e. a quarter of the high speed clock)
22:33
apurvanandan[m]
Thanks, the small doubt due to naming got cleared
22:34
apurvanandan[m]
And what should I prefer one single DDRx4 for all five lanes or five different DDRx4 instantiated one each for each lane
22:35
illwieckz_
changed nick to: illwieckz
22:35
Bertl_oO
ideally you get rid of the IPexpress wrappers and use the ODDRX4
22:36
Bertl_oO
s/ODDR/IDDR/
22:36
apurvanandan[m]
There isn't any part of IPexpress left, its just module instantiation
22:37
apurvanandan[m]
But IDDR can take data as busses
22:37
Bertl_oO
so how would you do five lanes with one IDDR4?
22:38
apurvanandan[m]
Ok, sorry my bad
22:38
apurvanandan[m]
I got my answer
22:39
Bertl_oO
the 'bus' feature is something IPexpress adds to the wrapper
22:39
Bertl_oO
anyway, you might want to check what lanes can support x4
22:39
apurvanandan[m]
Yeah I realized that just now
22:39
Bertl_oO
because IIRC, it's not available on all pins
22:40
Bertl_oO
so you might need to use x2 or x1 after all and do the gearing yourself
22:40
apurvanandan[m]
The ones you joint to LVDS must be having that no?
22:40
apurvanandan[m]
*joined
22:52
apurvanandan[m]
Okay all the lanes have it mp as per schematics
22:55
Bertl_oO
the IDDRX4B primitive can only be used on A/B pairs of the I/O cells at the bottom side of the device
22:55
apurvanandan[m]
Yupp
22:55
Bertl_oO
now I knew that it has to be the bottom side, so that is covered
22:55
apurvanandan[m]
Yes
22:57
Fares
Hi, as update, I pushed a draft report please check it and advise me what other thing I need to add to the report. And also I run the random test on the FPGA for 4 days and tested more that 23k RAW12 frames with all validated successfully.
22:57
Bertl_oO
but LVDS_3 is on PB11C/D
22:57
Bertl_oO
Fares: url?
22:58
Bertl_oO
apurvanandan[m]: and LVDS_0 is on PB18C/D
22:59
Bertl_oO
we might be able to move LVDS_3 to PB11A/B in a future revision, but that is not an option for LVDS_0
22:59
apurvanandan[m]
So should I go back to DDR x1?
23:00
Bertl_oO
also I didn't check the pinout differences between MachXO2 1200 and 2000
23:00
Bertl_oO
it might be a non-issue on the 2000
23:02
Bertl_oO
aSobhy: what are you currently working on, maybe I can help you a little
23:03
aSobhy
I switched to RFE to overcome the rest problem
23:03
Bertl_oO
s/rest/reset/?
23:04
aSobhy
I will use jx1_SE_0 to be the reset for both (ZYNQ, MachXO2)
23:05
aSobhy
and one lvds is clock and the other is the data
23:05
aSobhy
is that right ?
23:05
aSobhy
reset problem*
23:05
Bertl_oO
should work, but it would probably be better the other way round in the future
23:06
BAndiT1983
changed nick to: BAndiT1983|away
23:06
Bertl_oO
i.e. use the 'clock pin' for a common clock
23:07
Bertl_oO
also regarding reset, a simple but effective way to generate a reset is to have a special line state for this
23:07
Fares
sorry for the delay, it is currently on github https://github.com/FaresMehanna/JPEG-1992-lossless-encoder-core/blob/master/Report.pdf
23:07
Bertl_oO
aSobhy: e.g. if you are sending PRNG data, you have a forbidden state (all '0' or all '1')
23:08
Bertl_oO
so assuming you are sending 8bit data, you will never enounter 16 zeros or 16 ones in a row (depending on the LFSR type)
23:10
Bertl_oO
(let's assume zeros for now) which means that you just need to count 16 clock cycles while the signal is '0' and then you can assume a reset
23:10
Bertl_oO
more importantly, on the first non zero, you can resume operation
23:11
Bertl_oO
but as I said, it's fine to use the shared clock for a test
23:13
aSobhy
that's another way to reset the receiver
23:13
aSobhy
but in my case now the ZYNQ is the sender
23:14
Bertl_oO
does that make any difference for the reset?
23:17
Bertl_oO
Fares: what's the status of the integration with the Beta?
23:17
aSobhy
nope
23:20
Fares
well, I have not work on integrating it into beta, but the core has two axi stream interfaces which will make it quite easy to integrate
23:20
Fares
when I looked into how hdmi is working, it was reader -> fifo -> hdmi_logic
23:21
Fares
the LJ92 will be quite similar, but should I integrate it with the current beta VHDL files?
23:22
Bertl_oO
it would be great to try an integration with the existing beta firmware, for example just use one HDMI output as data sink for the encoded image
23:22
apurvanandan[m]
Bertl, do you have schematics of machXO2 2000HC
23:23
Bertl_oO
once we get the USB 3 plugin working, it should then be easy to switch from HDMI to USB and have the full LJ92 functionality
23:23
Bertl_oO
apurvanandan[m]: you probably mean the pinout :)
23:23
apurvanandan[m]
Yupp sorry
23:24
Bertl_oO
pinouts can be downloaded from lattice
23:24
Bertl_oO
https://www.latticesemi.com/view_document?document_id=43047
23:26
Bertl_oO
ah yes, on 2000HC, all those are A/B
23:26
apurvanandan[m]
yes I saw :D
23:26
Bertl_oO
so x4 is no problem there for any of the LVDS pairs
23:26
apurvanandan[m]
happy
23:27
Fares
Ok I will do that, replacing hdmi logic with lj92 core logic. I will be using the beta's gateware that is currently hosted in the github, correct?
23:27
Bertl_oO
apurvanandan[m]: now the other question is the clock input
23:27
apurvanandan[m]
I didn't get
23:27
Bertl_oO
Fares: yes, that should be the most recent version
23:27
apurvanandan[m]
Clock is LVDS too?
23:28
Bertl_oO
Fares: but please double check that it builds correctly before starting the integration :)
23:28
Bertl_oO
apurvanandan[m]: well, you want to use one LVDS pair as clock
23:29
Bertl_oO
you definitely want to use a clock capable input for that :)
23:29
apurvanandan[m]
Currently I am on clock capable pin mp
23:29
Bertl_oO
hmm?
23:30
apurvanandan[m]
ie PB11A/B
23:30
Fares
can you please explain what exactly the component that "it builds correctly"?
23:30
apurvanandan[m]
pin 34,35
23:30
apurvanandan[m]
They are clock capable i think
23:30
Bertl_oO
ah, yes, the are PCLK*2_0
23:30
apurvanandan[m]
:)
23:31
Bertl_oO
and that is actually the only pair we have there
23:31
apurvanandan[m]
I remember I sorted this thing out initailly
23:32
Bertl_oO
good, then that's sorted
23:32
apurvanandan[m]
everything is sorted, now lets do it :)
23:33
Bertl_oO
go ahead, 3.2Gbit/s today! :)
23:33
Bertl_oO
I'll test it in the evening :)
23:33
apurvanandan[m]
Perfect
23:40
Fares
?
00:14
Bertl_oO
what I meant is, just rebuild the entire thing to see that it 'still works'
00:14
apurvanandan[m]
By the way, DDR x1 is performing better than x4 in terms of BER
00:15
apurvanandan[m]
DDR x4 has BER of 10^-8
00:15
Bertl_oO
Fares: if you use a different Vivado version or if you are missing board definition files, etc, it might cause problems with the integration (better to sort them out beforehand)
00:16
Bertl_oO
apurvanandan[m]: might be related to the actual timing (placement/routing) or to the training
00:16
apurvanandan[m]
Hmm, I see
00:17
Bertl_oO
so it would be advised to test a few different implementations (with different optimizations, etc)
00:17
apurvanandan[m]
Okay
00:17
apurvanandan[m]
I am cleaning up the code
00:37
Fares
left the channel
00:53
Fares
joined the channel
00:53
Fares
Ok great, I will do, thank you for your time.
00:53
Bertl_oO
my pleasure!