Current Server Time: 23:12 (Central Europe)

#apertus IRC Channel Logs

2019/03/23

Timezone: UTC


00:51
RexOrCine
changed nick to: RexOrCine|away
01:00
vup2
Bertl_oO: do you know by chance wether the axihp ports of the zynq support write interleaving?
01:01
vup2
also looking at axihp_writer.vhd is there any reason to not start write data transactions indepentent of the address transactions?
01:02
vup2
in this line https://github.com/apertus-open-source-cinema/axiom-beta-firmware/blob/master/peripherals/soc_main/axihp_writer.vhd#L142
01:02
Bertl_oO
what do you mean by 'write interleaving'?
01:03
vup2
Bertl_oO: issuing multiple addresses with different AXI ID's
01:04
vup2
and then transfering the data for those burst's interleaved
01:04
vup2
so lets say you have got awid 0 and 1 and then do one beat for awid 0 and then one for 1 and so on
01:05
vup2
(obviously for the write transactions you would have to set wid to the corresponding awid)
01:05
Bertl_oO
you can do that but there is no real advantage in doing so I guess
01:05
vup2
i guess it could improve a interconnect a bit
01:06
Bertl_oO
and data and addresses should be fairly independent (even in the quite old writer)
01:06
vup2
well looking at the line linked above, could active not be replaced by enabled?
01:06
Bertl_oO
the active signal is just to empty out the fifos
01:07
Bertl_oO
when you want to reload the FPGA config, you need to make sure that there are no outstanding transactions
01:07
Bertl_oO
because the AXI bus doesn't get reset and you cannot reset it either
01:08
Bertl_oO
(except for a reboot)
01:09
Bertl_oO
so a mechanism is required to stop feeding new addresses and wait till all current transactions have finished
01:10
Bertl_oO
for the interleaving part, the limiting factor is typically the bandwidth on the AXI master, so not sure what interleaved transactions would help
01:12
Bertl_oO
but feel free to experiment and try different scenarios
01:12
vup2
yeah thinking a bit more about it, it probably wouldn't do much
01:12
Bertl_oO
with recent Vivado you also have some AXI checker and even a BFM to test with
01:13
Bertl_oO
something I really missed back then :)
01:13
vup2
re the active stuff: i don't quite understand how the line i linked ties in with the emptying the outstanding transactions
01:14
vup2
yeah the axi checker seems quite nice
01:14
Bertl_oO
there is a maximum number of outstanding transactions
01:14
Bertl_oO
the current in-flight transactions are counted in 'active'
01:14
vup2
yes
01:14
Bertl_oO
i.e. addresses submitted for a data transaction
01:15
Bertl_oO
once there are no addresses submitted, the data submission stops
01:15
Bertl_oO
this allows to align address and data when shutting down the writers
01:16
vup2
ahh ok
01:16
Bertl_oO
it might not be the most elegant solution, but it certainly worked :)
01:17
vup2
i was thinking of it after the reload and then trying to clean up the fifo
01:18
Bertl_oO
after reload you already lost
01:18
Bertl_oO
because there is an 'unknown' number of partial transactions in the AXI buffers
01:18
vup2
well you could read the fifo level
01:19
Bertl_oO
how?
01:19
vup2
SAXIHP{0-3}RCOUNT[7:0]
01:19
vup2
s/RCOUNT/WCOUNT/
01:19
vup2
and also SAXIHP{0-3}WACOUNT[5:0]
01:20
vup2
(these come out of the ps7 block)
01:20
Bertl_oO
hmm, might work
01:20
Bertl_oO
of course you might need to feed controlled amounts of dummy data
01:21
Bertl_oO
or somehow terminate the transactions (which I do not know if it is possible)
01:21
Bertl_oO
but definitely worth investigating
01:21
Bertl_oO
what are your plans on the AXI (writer/reader) side?
01:22
Bertl_oO
are you 'just' toying around a little to get comfortable or do you have some plans/ideas how to improve/adapt this code already?
01:22
vup2
well if DATA is missing you could just issue some addresses, these could even point to somewhere non existant, because as far as i can tell it should still complete the transaction
01:23
vup2
and if addresses are missing you just issue some burst to clean that out
01:23
vup2
anuejn and me have been thinking of rewriting the gateware in nmigen
01:23
vup2
so i just started by reading the axi spec and looking at your implementations
01:23
Bertl_oO
ah, so that is preparations for a migen AXI gateway
01:24
vup2
yeah
01:24
Bertl_oO
or probably more a bridge
01:25
vup2
yes, we are not quite sure how we want to do AXI
01:25
vup2
for things like configurations stuff a high level api would be quite nice where you just say these are configuration registers, map them to these addresses
01:25
Bertl_oO
what I haven't figured out yet is what the best clock rate for driving the masters would be
01:26
vup2
well looking at SAXIHP{0-3}WCOUNT[7:0] would probably yield a interesting datapoint for benchmarking them
01:26
Bertl_oO
there is a certain minimum clock you want to achieve to get the throughput, but I'm not sure how well this is actually decoupled from the bus and backpone
01:26
Bertl_oO
*backbone
01:26
vup2
as you would want them to be always filled
01:26
Bertl_oO
yes, that is a good idea
01:27
Bertl_oO
I'd also appreciate a solution to the 'priority' issue we are still seeing under extreme load (i.e. CPU stealing memory cycles from the FPGA)
01:28
vup2
oh yeah, had the same problem the other way around
01:28
Bertl_oO
from the configuration I believe we have top priority on read and write from the fabric, but still, running memory intensive I/O hurts
01:28
vup2
using the ACP port completely starves the cpu
01:29
Bertl_oO
so either we are missing something in the configuration or the Zynq AMBA is slightly borked
01:29
vup2
how are you setting the priority atm?
01:30
Bertl_oO
both on the FPGA side (via BUS) and on the CPU side via registers
01:31
Bertl_oO
IIRC, the bus side is kind of ignored (not implemented) on the Zynq
01:32
vup2
the QOS values?
01:32
Bertl_oO
but that's handwaving, I'd have to check the stuff we tried back then
01:37
vup2
ok i will keep that in mind, when we are testing axi things, maybe we can figure something out
01:37
Bertl_oO
that'd be really great! :)
01:42
vup2
ok heading to bed, good night!
01:44
aSobhy
hello Bertl :)
01:45
Bertl_oO
hey aSobhy!
01:45
aSobhy
I have speed up my code some more i reached 257 mhz on maxv
01:45
Bertl_oO
simulation or real?
01:45
aSobhy
real
01:46
Bertl_oO
not bad, how did you verify that it works?
01:48
aSobhy
I meant by real that I have run my code on "Quartus Prime Lite Edition " on maxv fpga
01:48
aSobhy
not on a real fpga
01:48
Bertl_oO
ah, so simulation (at best)
01:49
Bertl_oO
post implementation simulation I hope?
01:49
aSobhy
sorry for that :)
01:51
aSobhy
are you mean the simulation do file or what ?
01:51
aSobhy
do you *
01:52
Bertl_oO
I mean, what kind of simulation did you run
01:53
aSobhy
modelSim
01:54
Bertl_oO
yeah, but after synthesis (functional simulaton) or after placement and routing (i.e. timing based simulation)
01:56
aSobhy
yeah ok after placement and routing :)
01:57
Bertl_oO
well, so only 43 MHz to go then :)
01:58
Bertl_oO
is the code up-to-date and easy on the eyes?
01:58
aSobhy
as in Quatus is doing a sequential tasks including synthesis and routing
02:00
Bertl_oO
nah, doesn't look like the github repo is up-to-date
02:00
aSobhy
just one miniute
02:00
futarisIRCcloud
left the channel
02:00
aSobhy
minute *
02:00
aSobhy
iam pushing the code right now :)
02:02
aSobhy
now it is :)
02:03
aSobhy
I distributed the long input logic gates to be in a pipeline form as the max input to any logic gate is 2 inputs
02:03
Bertl_oO
still not properly formatted though ... note that this will be a critical aspect in the proporsal evaluation
02:04
aSobhy
and the worst paths are in those gates
02:04
Bertl_oO
you might consider sampling on both clock edges
02:05
aSobhy
is that the max words in one line ? or something else ?
02:06
Bertl_oO
nah, the long lines are just the tip of the iceberg
02:07
aSobhy
but when i sample on both edges the speed drooped to half
02:07
Bertl_oO
ser2par.vhd, first problem in line 5 and second in line 10
02:07
aSobhy
GENERIC and the space :/
02:08
Bertl_oO
when you sample on both edges, you move twice the amount of data
02:08
Bertl_oO
so if you manage to get to 150MHz, you are already processing 300MHz worth of data
02:08
aman__
joined the channel
02:09
Bertl_oO
so, what's wrong in line 38?
02:09
aSobhy
mmmm okay
02:10
aSobhy
yes missing a space
02:10
Bertl_oO
and in line 80?
02:10
aman_
left the channel
02:11
aSobhy
missing spaces
02:11
Bertl_oO
actually there is the missing space :)
02:11
Bertl_oO
you normally do not put a space before the colon (',')
02:11
Bertl_oO
lines 100-105?
02:14
aSobhy
so is the right to put a space after and before or what ?
02:14
Bertl_oO
separators like ';' or ',' only get a space after them
02:14
aSobhy
missing space before the "=>"
02:15
Bertl_oO
oeprators get spaces around the operators
02:15
aSobhy
ok :)
02:15
Bertl_oO
one acceptable exception to that is arithmetic stuff like SIZE-1
02:15
Bertl_oO
which you can format either way as long as you do it consistently
02:16
Bertl_oO
so what's wrong in lines 90-156?
02:17
aSobhy
the blank lines ?
02:17
Bertl_oO
yeah, that and something else, which is also a problem in lines 19-88 :)
02:18
aSobhy
i have a miss understand : how i write the generic what capitalize should done ?
02:18
Bertl_oO
indentation is missing there
02:18
Bertl_oO
you have a block generated by the architecture - begin - end architecture;
02:19
Bertl_oO
the parts inside are, well, 'inside' so should have one level of indentation
02:20
Bertl_oO
for the genrics, they are like constants for the code in question, so you normally format them all upper case (same for constants)
02:20
Bertl_oO
but I'm not even considering those details at the moment
02:21
aSobhy
so in my code in line 5 parallel_size should be PARALLEL_SIZE
02:22
Bertl_oO
yep, and personally I'd put the generic in a single line
02:22
Bertl_oO
same indentation as the clk in line 8
02:22
Bertl_oO
s/single/separate/
02:23
aSobhy
as in line 33 but missing the capitalization ?
02:23
Bertl_oO
yep
02:24
Bertl_oO
note that with VHDL 2008 you can drop all the component stuff for your code and use entity instantiation (avoids writing the same thing twice)
02:25
Bertl_oO
but that's okay was just for your information
02:25
aSobhy
actually at the beginning I opened the github of apertus and didint catch those difference but no one can learn from the first time :)
02:26
Bertl_oO
well, that's why I'm pointing out all the problems now and not after your submission :)
02:27
aSobhy
OK, I appreciate that :D thanks alot :D
02:28
Bertl_oO
you're welcome!
02:28
Bertl_oO
line 148?
02:28
aSobhy
missing a space
02:28
Bertl_oO
bingo!
02:29
aSobhy
bingo :)
02:30
aSobhy
so the next mission is to sample on the both edges
02:30
Bertl_oO
yes, try that as well as wrapping everything into a commandline build and test suite setup
02:31
Bertl_oO
i.e. something which can be build with a single script/make without using a GUI and verify that everything works as intended
02:32
aSobhy
a do file or a testbench
02:32
aSobhy
or something else
02:32
Bertl_oO
whatever works is fine
02:33
Bertl_oO
or more precisely, whatever works without the need to click somewhere around is fine ;)
02:33
aSobhy
yeah those GUIs are killing me and Iam working with command lines
02:34
Bertl_oO
that is a common problem and why all serious stuff is command-line based anyway
02:54
apurvanandan[m]
I have a doubt, In the task it is written that we can assume input clock of 100MHz but we have to receive data at both edges of 300 MHz clock.
02:54
apurvanandan[m]
From where will we get this 300 MHz
03:04
Bertl_oO
that is a good observation, but the task also says that you can use 'magic stuff' the FPGA manufacturers provide (for free) like DDR or in this case PLL/MMCM
03:06
Bertl_oO
so for the 100 -> 300 (or whatever you need) step you want to use some kind of PLL ... but I'm also fine if you add your own external clock (as long as it is reasonable :)
03:10
apurvanandan[m]
Actually I am trying to avoid any manufacturer's stuff.
03:10
apurvanandan[m]
So I think I will use 300 MHz in place of 100 MHz
03:11
Bertl_oO
so be it
03:12
apurvanandan[m]
Is there any proposal template that we can follow or better if a example proposal
03:13
Bertl_oO
not from our side, but IIRC, GSoC always hase some 'basic' templates
03:13
Bertl_oO
but let me double check, we probably did something last year
03:15
Bertl_oO
https://wiki.apertus.org/index.php/GSoC_Overview
03:15
Bertl_oO
section 4
03:15
Bertl_oO
(but no template)
03:16
Bertl_oO
note that a CV (and in this case the proposal) is like a business card ... you basically get one chance to make a first impression there
03:17
Bertl_oO
so you want it to look nice, be well structured and layed out and of course, on the point
03:46
Bertl_oO
off to bed now ... have a good one everyone!
03:46
Bertl_oO
changed nick to: Bertl_zZ
03:54
parimal
joined the channel
03:59
aman__
left the channel
04:00
balarajesh
joined the channel
04:11
futarisIRCcloud
joined the channel
04:20
balarajesh
left the channel
06:22
futarisIRCcloud
left the channel
06:25
kingsocarso
left the channel
06:31
aSobhy
left the channel
06:32
parimal
left the channel
07:32
aman__
joined the channel
07:44
se6astian|away
changed nick to: se6astian
08:01
BAndiT1983|away
changed nick to: BAndiT1983
10:12
se6astian
changed nick to: se6astian|away
10:41
aman__
left the channel
13:35
parimal
joined the channel
13:52
BAndiT1983
changed nick to: BAndiT1983|away
13:58
parimal
left the channel
14:07
Bertl_zZ
changed nick to: Bertl
14:07
Bertl
morning folks!
14:20
kingsocarso
joined the channel
14:45
aSobhy
joined the channel
15:34
parimal
joined the channel
15:38
parimal
Hello Bertl
15:39
parimal
I emailed you my github repo link for T872, would you please have a look and give some feedback when free? :)
15:42
Bertl
sure, but for C++ you want BAndiT1983 to check
15:42
parimal
Oh okay, I will forward him the link too
15:43
Bertl
personally I'd work on the code formatting as it has some problems
15:44
Bertl
like for example in the Debayer.cpp lines 99, 102, 106, etc
15:45
BAndiT1983|away
changed nick to: BAndiT1983
15:48
parimal
Hello BAndiT1983, I sent you an email with my repo link for T872, would you please have a look?
15:50
parimal
Bertl, yeah I will fix the formatting issues right away, anything else?
15:57
Bertl
nothing from my side but I only skimmed over it
15:58
BAndiT1983
hi parimal, i've seen the email, but will check the code later, first finding, please adjust classes according to OOP, e.g. you have everything public in some of them
15:59
parimal
Oh alright!
15:59
parimal
Will fix it
16:00
BAndiT1983
do you need more info on that? or do you know what i mean?
16:00
parimal
yes, in my BMP class file everything is public, or did you mean some other file?
16:01
parimal
I meant BMP header file *
16:02
BAndiT1983
maybe it was BMP class, haven't inspected closer yet, but it's violating the principles of OOP and can be dangerous in real applications
16:02
BAndiT1983
will give you more findings later, by mail
16:03
parimal
yes I should have known better, will work on it :)
16:03
parimal
and okay, thanks for your time
16:03
BAndiT1983
no problem, if oyu have questions, then don't hesitate to ask
16:03
BAndiT1983
*you
16:04
parimal
yes, for our project proposal, we also need to add a timeline. Any hints on how accurate that needs to be?
16:05
BAndiT1983
if possible on weekly base
16:05
BAndiT1983
as we have to grade after every month, so you should try to create a plan for each of 12 weeks or so
16:07
parimal
Oh alright, thanks, I am interested in T763, will study it more and get back to you
16:08
BAndiT1983
please read logs from last days, there were some infos for that task
16:08
parimal
oh okay sure I will have a look
16:20
se6astian|away
changed nick to: se6astian
16:50
parimal
left the channel
17:02
BAndiT1983
changed nick to: BAndiT1983|away
17:02
BAndiT1983|away
changed nick to: BAndiT1983
17:44
kingsocarso
left the channel
18:26
aman__
joined the channel
18:41
aman__
left the channel
19:24
BAndiT1983
changed nick to: BAndiT1983|away
21:21
BAndiT1983|away
changed nick to: BAndiT1983
21:47
se6astian
off to bed now
21:47
se6astian
good night
21:47
se6astian
changed nick to: se6astian|away
21:48
Bertl
nn
23:17
andrehrema
joined the channel
23:33
BAndiT1983
changed nick to: BAndiT1983|away
23:40
kingsocarso
joined the channel