<daveshah>
(oops, I typed 1.2 and meant 1.1 for LocalMux before)
<daveshah>
I'm not sure if it can be lower than that actually
<daveshah>
Looking at icetime it seems like it would use the same combination of delays for that routing too
<tnt>
mmm, ok, I'll recheck. Would the path from a FF to DOUT_x be the same ? I would think so but ...
<daveshah>
Numerically yes (it would use an IoInMux rather than an InMux but it looks like those have the same delay for up5k at least)
<tnt>
ok.
<tnt>
All ice40 FFs are pos edge right ? they're not configurable that I could find. So I assume any negedge ff would end up using a LUT to invert the clock ?
<daveshah>
No they are configurable
<daveshah>
the DFFN variants are negedge
<daveshah>
it's the NegClk bits in logic and IO tiles
<tnt>
Oh I missed that. Ah and it's for all 8 LCs (kind of expected that)
<daveshah>
Yep
<tnt>
Mmm, looks like the higher fmax I'm seeing on the output path (FF -> DOUT) is because the DOUT setup time is (suspiciously) low.
<tnt>
although I guess because there is no LUT in front it's not all that suspicious.
gregdavill has quit [Ping timeout: 256 seconds]
solo1 has quit [Ping timeout: 264 seconds]
solo1 has joined ##openfpga
<tnt>
No matter what I do, I don't see how I could pass back from the negedge domain into the posedge one. timing from FF to FF are worse than from the DIN1 to FF.
gregdavill has joined ##openfpga
gregdavill has quit [Ping timeout: 252 seconds]
gregdavill has joined ##openfpga
gregdavill has quit [Ping timeout: 240 seconds]
<lambda>
hehe, fun with induction - turns out there's a distinct difference between PSL `s |=> t` and `s |=> t!`. I was using the former to assume my 'run' input is high all the way through a transation (`assume always run |=> run or valid`). The assertion `always not valid -> run` was inexplicably failing on the last cycle after 'run' just went low during a transaction, something the assumption should
<lambda>
prevent. yep, without the force (!), not matching at the end of the trace is totally allowed.
<tnt>
Is the router somehow biased against using the sp12_h ? Seems like when spannning 3 * sp4_h, using a sp_12 would be faster.
<daveshah>
There's nothing particular that would encourage it to use sp4s
<daveshah>
It's probably just some consequence of delay estimates
<tnt>
mm, yeah, it might be right to use sp4. The sp12 are faster to cross long distances but getting on/off them is tricky, they're not super well connected compared to sp4s.
Bike has joined ##openfpga
<tnt>
So, as far as I can tell delays are 'bound' to PIPs and not wires. So doesn't it make any difference at which "point" you enter a span wire and at which point you exit ?
<daveshah>
This is a bit of an approximation, it does matter slightly but I think claire never quite figured out the pattern icecube uses (this is equivalent to icetime -m)
OmniMancer has quit [Quit: Leaving.]
<tnt>
Oh, so it always use Span{4,12}Mux_{h,v}{4,12} and and never the 0..3 and 0...11 values.
<tnt>
(although I'm not sure that the 0 values span issue is supposed to be really ?!)
<daveshah>
Although it appears that the numbers correspond to length, icecube sometimes uses a higher number for higher fanouts
<daveshah>
I think you can route on and off a span in the same tile
<tnt>
Ok, I guess that can make sense.
<tnt>
The up5k and u4k timings have two IOPATH lines for Span12Mux_v12 that looks like a bug in the icestorm db.
mumptai_ has quit [Quit: Verlassend]
<daveshah>
Based on how icefuzz dedups timings, that means that icecube must use different delay values in different places
<daveshah>
Good catch, that's quite interesting
<daveshah>
Seems like they must have changed the timing model from hx/lp
mumptai has joined ##openfpga
emeb has joined ##openfpga
solo1 has quit [Ping timeout: 252 seconds]
solo1 has joined ##openfpga
_whitelogger has joined ##openfpga
rohitksingh has quit [Ping timeout: 240 seconds]
grazfather has joined ##openfpga
<grazfather>
hey guys, I have a problem with verilator: I am trying to build the headers and source files, but it seems to quietly ignore my package with an enum in it