clifford changed the topic of #yosys to: Yosys Open SYnthesis Suite: http://www.clifford.at/yosys/ -- Channel Logs: https://irclog.whitequark.org/yosys
kuldeep has quit [Ping timeout: 252 seconds]
<shapr> sorear: what's the answer?
<sorear> i don't think a way has been found
kuldeep has joined #yosys
promach_ has joined #yosys
<promach_> For https://i.imgur.com/gaDcefK.png , why does the assert() at line 354 fail ?
<ZipCPU> Because your received data isn't equal to your data register.
<ZipCPU> Looks like your data register is changing before the check
<ZipCPU> You should be able to see that in the window though.
<ZipCPU> That is, in the gtkwave chart.
<promach_> changing before the check ??
<ZipCPU> Yes. You have your vertical marker one timestep too early.
<promach_> I suppose you miss looking at 'data_is_valid' signal
<ZipCPU> No, you're missing it still. There's a CDC taking place here.
<ZipCPU> The assertion is being evaluated at the timestep just before rx_clk rises for the last time.
<promach_> vertical marker one timestep too early ?
<ZipCPU> You left your red marker in the image.
<promach_> what about 'data_is_valid' signal ?
<ZipCPU> By the time the assertion is checked, data_reg has changed.
<ZipCPU> It's a multiclock issue.
<promach_> what about 'data_is_valid' signal ?
<ZipCPU> The assertion is checked on the *rising edge* of rx_clk
<promach_> if(data_is_valid)
<ZipCPU> Hence, the timestep while rx_clk is low just before it rises is the time step where the data is evaluated.
<promach_> assert(received_data == data_reg);
<ZipCPU> While data_is_valid that assertion goes from true to false--there are two timesteps taking place there.
<ZipCPU> data_reg is changing on the second of the two timesteps composing the rx_clk
<promach_> so, the assert() failed at step 199 instead of step 198 ?
<ZipCPU> I can't read the time steps from your image to verify that
<promach_> smt_step
<promach_> the last is 200
<ZipCPU> Yes, the failing time step is 199.
<promach_> ok, thanks ZipCPU
<ZipCPU> ;D
<promach_> do you think I should go down to multiclock induction of 50 ?
<ZipCPU> How/why would that make things better?
maartenBE has quit [Ping timeout: 240 seconds]
<ZipCPU> A lower depth doesn't mean you have a better proof, neither does it necessarily demonstrate any better skill of the engineer. It could just be that the problem needs a longer depth. In that case, why suffer through the problems associated with a shorter depth?
maartenBE has joined #yosys
<promach_> ok, I will stick with induction depth 200
<ZipCPU> There's a rule for when to go lower ..../
<ZipCPU> If your design passes before the induction length gets to zero, then choose a shorter depth
<promach_> passes before the induction length gets to zero ???
<ZipCPU> Yes.
<promach_> I am a bit confused
<ZipCPU> This afternoon, I was working with HDMI. If you give SymbiYosys a "mode prove" with the default depth of 20, the TMDS encoder would pass with about 12 steps of induction.
<ZipCPU> You can then reduce the depth.
<ZipCPU> Until it passes, though .... you sort of have to work with your problem to know what the right answer is.
<ZipCPU> Sometimes it makes sense to set the depth to the length of the entire operation. That's certainly the simplest initial depth.
<promach_> I see
<ZipCPU> That doesn't always work. Classic example: video. There's no way you'd verify a full frame without induction.
<ZipCPU> Incidentally, 20 time-steps was plenty for my HDMI transmitter to pass. ;)
<ZipCPU> 20 was not sufficient for my UART.
<ZipCPU> In many ways, it's just the nature of the problem.
<promach_> HDMI is also multiclock, right ?
<ZipCPU> No.
<ZipCPU> The components I'm doing are all synchronous with the pixel clock.
<ZipCPU> The memory fetch uses a separate clock, but I'm moving through my design one piece at a time.
<ZipCPU> Right now, my next step is to get the HDMI simulation running
<promach_> :)
<ZipCPU> Have you seen my FFT-Demo? That's the project I'm working on. I need to switch from VGA to HDMI, and from (simulated) block RAM to DDR3 SDRAM.
<promach_> DDR3 ? that is so...
<ZipCPU> Necessary?
<promach_> I have not tried the FFT-Demo
<ZipCPU> There's a lot to be learned from it from the stand point of process.
<promach_> yes
<promach_> ZipCPU: https://symbiyosys.readthedocs.io/en/latest/reference.html?highlight=cover#options-section for mode cover, there is counterexample trace generated even though I put "append 20" and "depth 20"
<promach_> why so ?
<promach_> ZipCPU: https://symbiyosys.readthedocs.io/en/latest/reference.html?highlight=cover#options-section for mode cover, there is *NO* counterexample trace generated even though I put "append 20" and "depth 20"
X-Scale has quit [Ping timeout: 246 seconds]
kuldeep has quit [Ping timeout: 245 seconds]
emeb has quit [Quit: Leaving.]
kuldeep has joined #yosys
kuldeep has quit [Ping timeout: 250 seconds]
Elec_A__ has quit [Quit: Page closed]
kuldeep has joined #yosys
emeb_mac has quit [Quit: Leaving.]
seldridge has joined #yosys
seldridge has quit [Ping timeout: 240 seconds]
kuldeep has quit [Ping timeout: 252 seconds]
kuldeep has joined #yosys
rohitksingh has joined #yosys
rohitksingh has quit [Quit: Leaving.]
clifford has joined #yosys
kuldeep has quit [Ping timeout: 250 seconds]
maikmerten has joined #yosys
kuldeep has joined #yosys
jfng has quit [Remote host closed the connection]
rohitksingh has joined #yosys
rohitksingh has quit [Quit: Leaving.]
X-Scale has joined #yosys
jfng has joined #yosys
rohitksingh has joined #yosys
rohitksingh has quit [Quit: Leaving.]
maikmerten has quit [Ping timeout: 252 seconds]
maikmerten has joined #yosys
<ZipCPU> promach_: I use cover all the time. What's the problem?
<promach_> ZipCPU: just a moment
<promach_> When I add "assume(!reset_tx); cover(counter_tx_clk == 1);" to https://github.com/promach/UART/blob/development/rtl/test_UART.v#L114
<promach_> I have SBY 20:54:40 [UART] engine_0: ## 0:00:04 Unreached cover statement at test_UART.v:114.
<ZipCPU> It simply means that yosys is unable to find any path that would make your cover statement true, after exhausting all paths through your logic for the first 20 formal verification cycles..
<ZipCPU> Debugging a failed cover statement is ... different from debugging a failed assertion.
<ZipCPU> In the case of a failed assertion, you have a trace showing you what went wrong.
<ZipCPU> In the case of the failed cover, you won't get any traces.
<promach_> TRUE
<ZipCPU> If I need to debug a cover statement, I'll typically walk backwards. If there's a chain of events, A->B->C->D, and cover(D) fails, I'll cover (C). If that fails I'll cover (B), etc.
<promach_> ok
<ZipCPU> Perhaps a better strategy would be to bisect A->B->C->D and cover(B) before (C) or (A).
<promach_> YES
<promach_> strange, I incremented TX_CLK_THRESHOLD to 4 but cover(!tx_clk) still fail
<promach_> does "mode cover" actually take into account "assume()" ?
<ZipCPU> Yes. assert() too,
maikmerten has quit [Remote host closed the connection]
<promach_> strange, both cover(tx_clk) and cover(!tx_clk) failed
<promach_> this is not making sense
<ZipCPU> Could be that your assumptions are prohibiting any solution.
<promach_> what ? tx_clk is only a one-bit register
<promach_> reg tx_clk
<ZipCPU> I'm just saying that's a plausable reason why both cover(tx_clk) and cover(!tx_clk) would fail.
<ZipCPU> If somewhere within your design you were to assume(0), then cover would fail immediately before it even gets to tx_clk
<promach_> assume(0); ? I do not have this in the code
<ZipCPU> Can you share a screen capture of the output of SymbiYosys?
<ZipCPU> Hmm ... okay. I was expecting something different.
<ZipCPU> Hmm ... okay. I was expecting something different.
<ZipCPU> Oops ... it's amazing the mistakes you can make with an up-arrow and a return key ;)
<promach_> huh ?
<ZipCPU> Oops
<promach_> what do you mean by "return key" ?
<ZipCPU> I wanted to repeat the last command in a terminal window, and didn't pay attention to which window had the "focus"
<ZipCPU> I then hit up arrow and return in my IRC window instead of the terminal window
<ZipCPU> Oops.
tmiw has joined #yosys
rohitksingh has joined #yosys
sandeepkr has joined #yosys
maikmerten has joined #yosys
<jer> ZipCPU, at least they weren't other characters, like the ones in passwords =][
<ZipCPU> Doh!
<ZipCPU> My thought was, at least it wasn't an rm -rf * in the wrong window :)
<jer> to be fair, i'd like an rm -rf * in the right window -- the one that won't remove all my files
<jer> =D
<ZipCPU> Perhaps you should try a Hanning window?
<jer> =]
AlexDaniel has quit [Read error: No route to host]
rohitksingh has quit [Quit: Leaving.]
AlexDaniel has joined #yosys
emeb has joined #yosys
rqou has quit [*.net *.split]
rqou has joined #yosys
fsasm has joined #yosys
nats` has quit [*.net *.split]
nats` has joined #yosys
kuldeep has quit [Ping timeout: 252 seconds]
kuldeep has joined #yosys
maikmerten has quit [Remote host closed the connection]
jfng has quit [Read error: Connection reset by peer]
jfng has joined #yosys
fsasm has quit [Quit: Leaving]
emeb_mac has joined #yosys