clifford changed the topic of #yosys to: Yosys Open SYnthesis Suite: http://www.clifford.at/yosys/ -- Channel Logs: https://irclog.whitequark.org/yosys
dpiegdon has quit [Quit: leaving]
jevinskie has joined #yosys
jevinskie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
cr1901_modern has quit [Ping timeout: 240 seconds]
pthomas has joined #yosys
cr1901_modern has joined #yosys
gsi__ has joined #yosys
gsi_ has quit [Ping timeout: 268 seconds]
cr1901_modern has quit [Ping timeout: 244 seconds]
emeb_mac has joined #yosys
cr1901_modern has joined #yosys
jevinskie has joined #yosys
tlwoerner has quit [Quit: Leaving]
tlwoerner has joined #yosys
leviathanch has joined #yosys
_whitelogger has joined #yosys
dys has quit [Ping timeout: 240 seconds]
rohitksingh_work has joined #yosys
proteusguy has quit [Remote host closed the connection]
seldridge has joined #yosys
srk has quit [Ping timeout: 245 seconds]
srk has joined #yosys
_whitelogger has joined #yosys
rohitksingh_work has quit [Read error: Connection reset by peer]
* MoeIcenowy considering whether I should buy a UPduino2
rohitksingh_work has joined #yosys
rohitksingh_work has quit [Ping timeout: 250 seconds]
proteusguy has joined #yosys
seldridge has quit [Ping timeout: 244 seconds]
emeb_mac has quit [Quit: Leaving.]
proteusguy has quit [Ping timeout: 240 seconds]
proteusguy has joined #yosys
dys has joined #yosys
dys has quit [Ping timeout: 250 seconds]
<promach_> Why https://gist.github.com/promach/5f2d9a9494704ed93cf65687c982198c passed yosys bmc base-case test but failed in iverilog simulation https://www.edaplayground.com/x/3TuQ ?
<tpb> Title: A signed multiply verilog code using row adder tree multiplier and modified baugh-wooley algorithm · GitHub (at gist.github.com)
<MoeIcenowy> promach_: I don't think iverilog supports SV
<promach_> it does have systemverilog support, check -g 2012 option http://iverilog.wikia.com/wiki/Iverilog_Flags
<tpb> Title: Iverilog Flags | Icarus Verilog | FANDOM powered by Wikia (at iverilog.wikia.com)
<promach_> MoeIcenowy
<MoeIcenowy> promach_: "Actual SystemVerilog support is ongoing."
<MoeIcenowy> if you enable -g 2012, it will enable the check for SV keywords, but no real SV support is present
finnb has joined #yosys
citypw has quit [Ping timeout: 268 seconds]
citypw has joined #yosys
finnb has quit [Read error: Connection reset by peer]
<promach_> MoeIcenowy: ok, but why does cover(in_valid) failed ? https://gist.github.com/promach/5f2d9a9494704ed93cf65687c982198c#file-multiply-v-L181
<tpb> Title: A signed multiply verilog code using row adder tree multiplier and modified baugh-wooley algorithm · GitHub (at gist.github.com)
s_frit has quit [Remote host closed the connection]
s_frit has joined #yosys
leviathanch has quit [Remote host closed the connection]
_whitelogger has joined #yosys
<MoeIcenowy> I'm not familiar with formal verification...
<sorear> all I know is that formal verification is infamous for not working with multipliers
<ZipCPU> promach_: You are trying to verify a synchronous multiply. Why would you ever set "multiclock on"? or use $global_clock ?
jevinskie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<promach_> ZipCPU: ok
<promach_> but why error : Unsupported cell type $dffsr for cell
<promach_> I have no code line number indicated in the error log
<ZipCPU> With or without multiclock?
<promach_> without
<ZipCPU> You have a latch within your design, or an always block with something other than the clock within it
<ZipCPU> and by "within it" I mean something other than the clock in the sensitivity list
<promach_> yes, reset
<promach_> I have updated the gist
<ZipCPU> Check your always @(*) blocks for values that aren't always set too. Those can infer latches which will get in the way of things as well.
<promach_> the multiply code does not have any always @(*) blocks
<ZipCPU> Have you gotten rid of your $global_clock block?
<promach_> yes, already gotten rid of your $global_clock block
<promach_> yes, already gotten rid of my $global_clock block
<ZipCPU> Sounds good. Is it building now?
<promach_> no, still error : Unsupported cell type $dffsr for cell
<daveshah> Do you have any `posedge clk, posedge reset`s left?
<promach_> daveshah: what is wrong with always @(posedge clk, posedge reset) ?
<daveshah> That is an async reset which creates the $dffsr
<promach_> and ?
<daveshah> If you don't want to use multiclock, you have to have sync resets
<ZipCPU> You don't need them: you are buiding/testing a multiply
<qu1j0t3> .b 34
<ZipCPU> Hike!
<promach_> daveshah ZipCPU: ok, it is building now using your suggestion
<promach_> but cover(in_valid) still fail :|
<ZipCPU> What's your top-level?
<promach_> module multiply()
<ZipCPU> multiply.v, and in_valid is an input to multiply.v? Check your assumptions.
<promach_> module multiply(clk, reset, in_valid, out_valid, in_A, in_B, out_C);
<promach_> ZipCPU: just checked, nothing to do with the assumption related to in_valid
<ZipCPU> Look harder
leviathanch has joined #yosys
rohitksingh has joined #yosys
<promach_> I commented out this line https://gist.github.com/promach/5f2d9a9494704ed93cf65687c982198c#file-multiply-v-L159 , but cover(in_valid) still fail :|
<tpb> Title: A signed multiply verilog code using row adder tree multiplier and modified baugh-wooley algorithm · GitHub (at gist.github.com)
<sxpert> ZipCPU: am progressing at a good pace here. small question though, what's the proper way to optimize a state machine ?
<ZipCPU> sxpert: Normally the tools will do that for you
<ZipCPU> But the answer is also state machine dependent
<ZipCPU> The biggest thing you can do is to reduce the size of the state space
<sxpert> ZipCPU: yeah, I saw that, but it takes a while to reduce all states
<sxpert> ah, so recode the states with smaller numbers. ok
<ZipCPU> Well ... yes/no
<ZipCPU> Smaller size, but it may use more signals
<ZipCPU> Many synthesizers will recognize a state machine, and automatically switch the encoding to a one hot encoding
<ZipCPU> ... where there's one signal that's high for every possible state in the space
<ZipCPU> I like to optimize my state machines by working my way through my always blocks, and trying to minimize the number of input wires needed to determine the input of any FF
<sxpert> so, instead of having one extra large always @(posedge clk), make plenty of tiny ones ?
emeb has joined #yosys
<sxpert> or have I misunderstood?
<ZipCPU> sxpert: No, you aren't misunderstanding me
<ZipCPU> That's what I do all the time. It's a style of mine, but that's why I do it
<sxpert> leads to smaller things ? or just a writing style ?
<sxpert> ah, clearly I'm doing something wrong ;)
<sxpert> I'm getting an insult about combinatorial loops...
<tpb> Title: Info: Annotating ports with timing budgets for target frequency 5.00 MHz Info - Pastebin.com (at pastebin.com)
<sxpert> hah, found my mistake
<ZipCPU> sxpert: Have you found this link: http://zipcpu.com/blog/2017/06/12/minimizing-luts.html
<tpb> Title: Minimizing FPGA Resource Utilization (at zipcpu.com)
<ZipCPU> It sort of goes over my thoughts on logic minimization
* shapr snickers at "byte the bullet"
<sxpert> ZipCPU: yeah, I have read it, but I suspect this may come at a later stage, as I want something functional first
* ZipCPU offers shapr a .45, in case he wants to try it
* ZipCPU figures a 0.45 is roughly an 0x73 in "byte" form
AlexDaniel has joined #yosys
* sxpert learns that sometimes things declared as reg should be wires
<ZipCPU> Inputs should always be declared as wires, ex: input wire i_clk;
<ZipCPU> Outputs from submodules should always be declared as wires
<ZipCPU> Anything with an assign statement should always be declared as a wire.
<shapr> ZipCPU: I prefer 9mm, easier to fund for practice
* ZipCPU tries to convert 9mm to a byte representation
<shapr> heh
* ZipCPU figures a 9mm in "byte" form is roughly an 8'h5b
<shapr> oh man
lutsabound has joined #yosys
supervacuus has joined #yosys
m4ssi has quit [Remote host closed the connection]
supervacuus has quit [Quit: Page closed]
FL4SHK has joined #yosys
gsi__ is now known as gsi_
m4ssi has joined #yosys
lutsabound has quit [Quit: Connection closed for inactivity]
rohitksingh has quit [Remote host closed the connection]
<emeb> ZipCPU: what's the rationale for "Outputs from submodules should always be declared as wires"?
fsasm_ has joined #yosys
<emeb> I guess you mean they need to be wires in the higher level module.
<ZipCPU> emeb: Yes, that's exactly what I mean
<ZipCPU> If module top has module sub beneath it, then within module top sub's outputs need to be declared as wires
<ZipCPU> Within module sub, they can be declared as either--depending on how you want them to behave
<emeb> Makes sense. I remember long ago we had some Verilog tools that wouldn't let you take a reg straight out of a module. You had to assign it to a wire before going out.
<ZipCPU> My flavor of Verilog is rather ancient ... I'm surprised, though, I didn't realize there was something more ancient :D
<emeb> ZipCPU: Well, this was like 25yrs ago. :P
<ZipCPU> .... and? ;)
<emeb> heh
<emeb> VHDL has something like that - it won't let you use an output signal in the module that creates it. You have to reassign it to something else.
<emeb> don't know what the advantage of that is from a language standpoint.
<daveshah> It avoids the issue that reading an `output` has different behaviour to reading an `inout`
<daveshah> iirc VHDL also has a `buffer` type that behaves like a Verilog `output`
<emeb> Hmm... never used that.
<emeb> Speaking of strange languages - did anyone here ever use a language called "Module Compiler"? This was something that Synopsys acquired & sold for a while back in the late 90's. I got pretty good at using it for DSP stuff. It looked sort of like Verilog but did all the pipeline balancing and much of the math at a high level.
<emeb> I suspect that today a lot of what it did is handled in plain Verilog through more advanced inference, but it was like magic at the time.
leviathanch has quit [Remote host closed the connection]
seldridge has joined #yosys
<emeb> lol - I google for Module Compiler and find an old promotional article that quotes me -> https://www.design-reuse.com/news/1354/synopsys-module-compiler-slashes-design-time-boosts-performance-sicom-broadband-wireless-modem.html
<tpb> Title: Synopsys' Module Compiler Slashes Design Time and Boosts Performance of SiCOM's New Broadband Wireless Modem (at www.design-reuse.com)
seldridge has quit [Ping timeout: 268 seconds]
seldridge has joined #yosys
seldridge has quit [Ping timeout: 244 seconds]
m4ssi has quit [Remote host closed the connection]
fsasm_ has quit [Ping timeout: 244 seconds]
utzig has quit [Remote host closed the connection]
utzig has joined #yosys
tpb has quit [Remote host closed the connection]
tpb has joined #yosys