awygle has quit [Quit: No Ping reply in 180 seconds.]
kmehall has quit [Quit: No Ping reply in 180 seconds.]
awygle has joined ##openfpga
kmehall has joined ##openfpga
dj_pi has joined ##openfpga
azonenberg_work has quit [Ping timeout: 268 seconds]
genii has quit [Remote host closed the connection]
_whitelogger has joined ##openfpga
Richard_Simmons has quit [Remote host closed the connection]
Richard_Simmons3 has joined ##openfpga
dj_pi has quit [Ping timeout: 272 seconds]
<Sprite_tm>
Hi all, n00b question: if I have a PLL like in the ECP5 that can generate multiple clock outputs with the same phase, if I generate a clock of, say, 48 and one of 96 MHz, do I still need to do full clock domain crossing? Or can I just make sure my signal is stable for 2 96MHz clock cycles for the 48MHz clock domain to read it and call it a day?
<flea86>
Sprite_tm: If they're both coming from the same PLL, I'd imagine what you wrote working too.
<flea86>
ie. at worst, slap in a few dual FFs and call it a day :)
<Sprite_tm>
flea86: FFs? But but but... muh latency! :P
<flea86>
hehe
<flea86>
oh ffs xD
<Sprite_tm>
Tbh, the reason I ask is because I'd like not to have the clock-sync FFs. As far as I can read, the PLL outputs should be synchroneous, making the two clocks be in the same clock domain and I think I also should not get any risk of metastability... so I can do without the FFs. But I have about zero experience with this scenario :)
<flea86>
Sprite_tm: I'm by no means expert either. I avoid multiple clocks where possible myself...
<Sprite_tm>
I kinda want them here... Risc5 at 48MHz, but 4-bit psram interface also at 48MHz... guess where the bandwidth bottleneck is :P
Bike has quit [Quit: Lost terminal]
<flea86>
hehe
<flea86>
Sprite_tm: I don't envy your sitch there
<flea86>
sprite_tm: Speaking of CPU cores, my 32-bit pipelined CPU is now working :D
<flea86>
Runs at 100+ MHz on ECP5 with 8kB RAM/ROM and UART
<Sprite_tm>
Grats! It doesn't happen to be RISCV by any chance?
<flea86>
Well no, I wanted single-cycle 32-bit immediate register loads, as well as 1T branch and skip tasks without prediction :)
<flea86>
RISCV needs two cycles for immediate loads IIRC
<flea86>
*32bit immediate
<flea86>
I modded my old Sweet32 CPU assembler to suit the new arch... it's a dirty hack tho
<tnt>
Sprite_tm: no, you can get aways with much less in theory. _but_ ... nextpnr currently can't constraint clock domain path.
<tnt>
err "cross-clock domain path"
rohitksingh_work has joined ##openfpga
emeb has quit [Quit: Leaving.]
<Sprite_tm>
tnt: Erm, what does that mean in practice? It doesn't know the two clocks are related?
<tnt>
Sprite_tm: yes and it won't do any analysis on that path (just report the max-delay but without pass/fail or attempt to optimize AFAIK).
<tnt>
In general for those, I don't use a full cross clock, but I do make sure the output is a register and the input is either a register or a single LUT + FF.
<Sprite_tm>
Hm, gotcha, good advice, thanks.
Jybz has joined ##openfpga
Maya-sama has joined ##openfpga
conmega_ has joined ##openfpga
Maya-sama is now known as Miyu
conmega has quit [Ping timeout: 268 seconds]
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
uovo has joined ##openfpga
oeuf has quit [Ping timeout: 245 seconds]
oeuf has joined ##openfpga
uovo has quit [Ping timeout: 245 seconds]
<sorear>
risc5 and riscv are unrelatedly projects, and risc5/Project Oberon is much older so usurping the name is a dick move
m4ssi has joined ##openfpga
<flea86>
sorear: Oberon is quite an underrated effort IMHO.
emeb_mac has quit [Ping timeout: 268 seconds]
mifune has quit [Remote host closed the connection]
<emily>
sorear: ...but RISC-V is pronounced "risc five", right?