clifford changed the topic of #yosys to: Yosys Open SYnthesis Suite: http://www.clifford.at/yosys/ -- Channel Logs: https://irclog.whitequark.org/yosys
danieljabailey has quit [Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in]
emeb_mac has joined #yosys
promach_ has joined #yosys
awordnot has quit [Ping timeout: 240 seconds]
awordnot has joined #yosys
promach_ has quit [Quit: WeeChat 2.3]
gsi__ has joined #yosys
promach has joined #yosys
gsi_ has quit [Ping timeout: 246 seconds]
<tpb> Title: 3D array bitwidth mismatch : yosys (at www.reddit.com)
emeb_mac has quit [Ping timeout: 245 seconds]
emeb_mac has joined #yosys
dys has quit [Ping timeout: 268 seconds]
emeb_mac has left #yosys [#yosys]
danieljabailey has joined #yosys
<chaseemory> i imagine its some confusion with packed vs unpacked arrays, in your case mixing both, but the output should be 8bits no?
rohitksingh has joined #yosys
lutsabound has quit [Quit: Connection closed for inactivity]
rohitksingh has quit [Ping timeout: 250 seconds]
pie___ has joined #yosys
pie__ has quit [Ping timeout: 245 seconds]
rohitksingh_work has joined #yosys
SpaceCoaster has joined #yosys
proteusguy has quit [Remote host closed the connection]
emeb_mac has joined #yosys
<emeb_mac> does there exist a library of stubs for the Lattice SB_* cells that can be used for linting w/ Verilator?
<emeb_mac> or is there some way to blackbox those w/o a library?
<promach> chaseemory : if you look at https://www.verilogpro.com/systemverilog-arrays-synthesizable/ , I am using "Unpacked Array Assignment"
<tpb> Title: SystemVerilog Arrays, Flexible and Synthesizable - Verilog Pro (at www.verilogpro.com)
<promach> reg [(A_WIDTH+B_WIDTH-1):0] middle_layers[(NUM_OF_INTERMEDIATE_LAYERS-1):0][0:(SMALLER_WIDTH-1)];
<promach> chaseemory
proteusguy has joined #yosys
dys has joined #yosys
jevinskie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
dys has quit [Ping timeout: 244 seconds]
<tpb> Title: yosys/cells_sim.v at master · YosysHQ/yosys · GitHub (at github.com)
<promach> is it true that yosys does not support packed array yet ? logic [A-1:0][B-1:0][C-1:0] array;
m4ssi has joined #yosys
_whitelogger has joined #yosys
leviathanch has joined #yosys
<sxpert> how would I <= the same value to multiple things at the same time ?
<sxpert> do I have to copy / paste the operation, or is there a nicer way to do that ?
<daveshah> If the destination is an array, then use a for loop
<sxpert> no, it's like I calculate some value, and needs it in 2 reg
<sxpert> which are used by 2 different things
<sxpert> say, the alu_dest register and the dbg_dest register
<daveshah> This is a rare case where non-blocking assignments are reasonable
<daveshah> e.g tmp_result = op; alu_dest <= tmp_result; dbg_dest <= tmp_result
<sxpert> ok
<sxpert> however verilator would somehow complain I guess
<sxpert> daveshah: can tmp_result be declared locally ?
<daveshah> Not in traditional Verilog, SystemVerilog probably supports something like that
<sxpert> I see
<daveshah> Either way it is essential that tmp_result is only accessed and written in one always block
<daveshah> otherwise it might be a race condition in simulation
<sxpert> I suppose reading from multiple locations would not be a biggie
<daveshah> This is definitely where VHDL wins, the "variable" local to a process is much nicer
<sxpert> I see
<daveshah> sxpert: multiple locations in one always block is fine
<sxpert> ah
<daveshah> In different always blocks there are race condition issues in simulation
<sxpert> I see
<sxpert> unlike with <=
<daveshah> Indeed
<sxpert> ok
<daveshah> This is one reason why = is generally discouraged
<daveshah> in clocked always blocks
<daveshah> Temporary results are a limited exception
<sxpert> the fact that the concept of temporary results are missing from the language is an oversight IMHO
<daveshah> Yes, just checked and it is fixed in SystemVerilog, a reg can be inside an always
<sxpert> have a link ?
<tpb> Title: Can Verilog variables be given local scope to an always block? - Stack Overflow (at stackoverflow.com)
<daveshah> Yosys only supports this if the block is named
<daveshah> ie you have :somename after begin
<sxpert> I see
<sxpert> come to think of it, it seems that there are a few combinations in the opcodes, so I could make a few wires ...
<sxpert> and reuse them elsewhere
<sxpert> should generate less logic overall, I guess
<daveshah> Maybe, but many of these cases will be dealt with by opt_merge
<sxpert> will make it nicer to read too ;)
AlexDaniel has joined #yosys
tinyhippo has joined #yosys
tinyhippo has left #yosys ["WeeChat 2.3"]
AnkurA has joined #yosys
<AnkurA> Hey all, not able to do synthesis with .plib provided by foundry
<AnkurA> any idea if .plib cannot be used?
<daveshah> Yosys supports Liberty libraries for ASIC synthesis, is that what a .plib is?
<AnkurA> any other ways to do it if the foundry has not provided .lib liberty file?
<AnkurA> .plib is some physical library file
<AnkurA> excepth, various other files are provided like .db, .sef, .nldm, etc.
<AnkurA> except .lib I meant
<daveshah> Many of these files are proprietary
<daveshah> It looks like the plib might be a heavily extended Liberty, in which case it might be possible to modify Yosys to skip over the bits it can't use
<AnkurA> Found .lib in nldm folder
<AnkurA> thanks.
AnkurA has left #yosys [#yosys]
<sxpert> daveshah: soon there will be an opensource library for opensource asics with opensource process, I understand
<daveshah> LibreSilicon?
<sxpert> yeah
<sxpert> that looks pretty interesting
<daveshah> other than the blockchain stuff
<sxpert> what blockchain stuff ?
<daveshah> > By using a blockchain solution in order to track the added value from the work of every contributor, without any human intervention required, it is ensured that everyone is being payed a fair price for the work and time she or he has invested into developing an ASIC or IP block. Manufacturing potential can be reported on a market place where customers can put up orders. The result will be something like a crypto exchange
<daveshah> just without speculation, a way for people who want to buy chips and people with a basement containing a clean room to find each other. This becomes possible with our free semiconductor manufacturing process standard which allow reproducible results with varying setups.
<sxpert> ah.
<sxpert> not really interested by that part
<sxpert> the silicon manufacturing bit is the important part here
<sxpert> guess they needed "Blockchain" somewhere in the blurb to get financing
cr1901_modern has quit [Ping timeout: 250 seconds]
rohitksingh_work has quit [Read error: Connection reset by peer]
<corecode> lol blockchain
<sxpert> it's one of those magic buzzwords to get money from know-nothing capitalists. can be considered as a nop
cr1901_modern has joined #yosys
rohitksingh has joined #yosys
<cr1901_modern> daveshah: Do you have a moment to hear about our lord and savior blockchain?
jevinskie has joined #yosys
<somlo> "If you think blockchain is the solution to your problem, you don't understand blockchain. And, you don't understand the problem"
<sxpert> so...
<sxpert> I think I'm getting somewhere
<sxpert> guess I should be splitting this ALU thing with the registers into a separate module
<sxpert> will try that later
<sxpert> feels like major surgery though
<sxpert> daveshah: what does "Clock '$glbnet$ph1' has no interior paths" means ?
<daveshah> That means there are no paths between two registers both clocked by ph1
<daveshah> Therefore a Fmax is not applicable
<daveshah> however, max delays to/from other clock domains may be printed
<sxpert> is that a problem ?
<daveshah> Probably not
<sxpert> ok
<daveshah> Are you expecting all the registers clocked by ph1 to drive and be driven by registers in other domains?
<sxpert> nope
<sxpert> I'm actually trying to isolate things into their own domain
<sxpert> one at a time
<daveshah> That sounds dangerous
<sxpert> hmm ?
<daveshah> Good practice is to have as few clock domains as possible
<daveshah> In many cases, everything except IO belongs in a single design
<daveshah> *domain
<sxpert> well, ph[0-3] are derived from a common clk
<tpb> Title: hp-saturn/saturn_core.v at master · sxpert/hp-saturn · GitHub (at github.com)
jevinskie has quit [Quit: Textual IRC Client: www.textualapp.com]
<daveshah> FPGA logic is not glitch free
<daveshah> This could end up with double clocking issues
<sxpert> ha
<sxpert> how should I do that then ? ;)
<daveshah> First of all you shouldn't
<sxpert> well. duh
<daveshah> If you really have to then a PLL is the only safe way to generate related clocks
<sxpert> I see
<daveshah> Registers will be better than combinational logic, but still far from ideal
<sxpert> say I could use some form of counter ?
<daveshah> Yes
<sxpert> ok, works for me.
<sxpert> will redo that part
<sxpert> so, one clock, and a 2 bit counter for phase
<sxpert> works for me
* ZipCPU takes a look at sxpert's saturn_core clocking logic
<ZipCPU> sxpert: +1 to everything daveshah said. Consider this post if you want further reading: http://zipcpu.com/blog/2017/06/02/generating-timing.html
<tpb> Title: Controlling Timing within an FPGA (at zipcpu.com)
* sxpert obviously does all the beginner's mistakes ;-)
<sxpert> (that's part of learning, I guess)
<ZipCPU> As long as its the fun part of learning, have at it!
<sxpert> yeah
<sxpert> having a blast
<ZipCPU> You realize I'm only a couple of years ahead of you, right? ;)
<sxpert> ZipCPU: so I need to pass clk and counter to the modules IIUC
<sxpert> ZipCPU: good enough, I'm a couple years behind ;)
<ZipCPU> I would instead pass a clock and an enable line, with four enable lines--one per phase
<sxpert> ah
<ZipCPU> That'll reduce the amount of logic required to use the phase
<ZipCPU> ... and, if you are on an iCE40, you'll need all the reductions you can get
<sxpert> so, generate those enable on neg-edge
<sxpert> and use then on posedge ?
<sxpert> (which allows the enable to be stable when posedge comes up
<ZipCPU> No. Do everything on the positive edge
<sxpert> ah
<ZipCPU> Most toolchains can't handle both edges of the clock
<ZipCPU> Part of the problem being that few clocks are sufficiently reliable on both edges too
<sxpert> this is what I understand will happen : https://github.com/sxpert/hp-saturn/blob/master/README
<tpb> Title: hp-saturn/README at master · sxpert/hp-saturn · GitHub (at github.com)
<ZipCPU> Looks good
<sxpert> however, on posedge, the phase will not be stable
<sxpert> or is the logic happening before the clock edge ?
<sxpert> ZipCPU: link above is most enlightening
<ZipCPU> You mean the one I wrote?
<sxpert> yeah
<ZipCPU> Thanks!
<sxpert> still, I'm puzzled by how this all works
<ZipCPU> How so?
<sxpert> all the logic described in the "always @(posedge clk)" block, is combinatorial logic and the clk controls all the touched flip-flops ?
<ZipCPU> I'm not sure I follow yet
<sxpert> I mean, that's how the fpga works inside ?
<ZipCPU> Internal to an FPGA are LUTs, FFs, and wires to connect them all
<ZipCPU> Many FPGAs group the LUTs and FFs together into logic blocks
<sxpert> so what's inside the block is a bunch of luts, and the ff store whatever the luts have generated on the clk (up or down) signal
<ZipCPU> The LUTs are your combinatorial logic, and are (often) immediately followed by FFs. The FF in the logic block can be bypassed, though, if you aren't interesteed in using it
<ZipCPU> Yeah, something like that
<sxpert> ok
<ZipCPU> In addition, most FPGAs have some low-latency networks for clocks to help reduce clock skew from one part of the chip to another
<ZipCPU> These low-latency networks, which are limited in number, tend to be fed to every logic block
<sxpert> yeah, I had that part in the brain ;)
<ZipCPU> The other part of the FF thing is that many FFs have CEs built into them
<ZipCPU> Hence, your phase signals (once created) should be able to use the global routing networks, and then no additional logic at the FF
<sxpert> I see
<ZipCPU> Unless Yosys adds some more combinational logic, such as the FF only changes if A & B are true
<sxpert> said phase signals should be "wire blah; assign blah = <something>;" ?
<sxpert> the something being a function of counter
<sxpert> ?
<ZipCPU> Well, you could say: wire [3:0] phase_ce; assign phase_ce[0] = counter[1:0] == 2'b00;
<ZipCPU> Did you see my explanation of timing in terms of stalagtites and stalagmites
<ZipCPU> It was on pages 10-13 of the tutorial lesson on debouncing (lesson 7) ... see http://zipcpu.com/tutorial
<tpb> Title: Verilog Beginner's Tutorial (at zipcpu.com)
<ZipCPU> If you use wire [3:0] phase_ce; assign phase_ce[0] = (counter[1:0] == 2'b00); your starting your design out in timing debt, and won't be able to do as much on the clock
<ZipCPU> On the other hand, if you use: reg [3:0] phase_ce; always @(posedge i_clk) phase_ce[0] <= (counter[1:0] == 2'b00); your phase will be delayed by one clock tick (probably irrelevant) but you'll have more time to get things done based upon that value within your design
<sxpert> ah. I see
<sxpert> as long as the thing starts with phase_0 on reset
<ZipCPU> That should be easy to verify
<sxpert> yeah
<sxpert> another Q I had was, is a monster case statement bad for timing ?
<ZipCPU> It can be
<ZipCPU> It isn't necessarily so though
<sxpert> any known red-flags ?
<ZipCPU> You mean with the monster case statement?
<sxpert> yeah
<ZipCPU> Some designs/designers use them often. I don't. Here's why ...
<ZipCPU> The larger the case statement is, or the nested if, whatever, the more logic is required to compute every value
<ZipCPU> My own design philosophy has always been about minimizing my logic usage count--hence the ZipCPU
<ZipCPU> That usually forces me to move every register's definition/assignment into its own always block
<ZipCPU> Have you seen my article on minimizing logic utilization?
<sxpert> yeah, but guess I'll have to read again
<ZipCPU> A lot of what I do is optimizing logic for those time periods where I don't care what a particular value is
<ZipCPU> Another big part of what I do is to work very hard to minimize the logic used when that logic needs to be applied to lots of values
<ZipCPU> For example, if (A) WORD <= I1 + I2; else if (B) WORD <= I1 ^ I2; else if ...
<ZipCPU> Sometimes you can't get around it, like when building an ALU, but sometimes you can
<sxpert> well, the ALU I built works in multiple phases, minimizing the work in each phase
<sxpert> ph1: get the data, ph2: do calculation, ph3: write back
<ZipCPU> What if the calculation takes longer? Such as a multiply or a divide?
<sxpert> ph0 being request data from memory
<sxpert> there's no such instruction ;)
<ZipCPU> Are you only ever using block RAM? Never any flash memory?
<sxpert> not at this time
<sxpert> I was thinking of plugging some form of cache though, that would stall the processor while it accesses said flash on PC changes
<sxpert> as I understand, flash works in a streaming fashion, as long as you request the next value
<ZipCPU> You are working on an ECP5, right? I could never get the cache to fit on an iCE40
<sxpert> yeah
<sxpert> the original processor was 4Mhz...
<sxpert> ZipCPU: how much cache were you trying to have ?
<ZipCPU> I stripped it bare, down to two cache lines of 8 items each--still too much logic
<sxpert> how big was that ice40 ?
<ZipCPU> 8k
<ZipCPU> hx
<sxpert> hmm
leviathanch has quit [Remote host closed the connection]
<sxpert> so that's 8k luts ?
<ZipCPU> 7680 if I recall, but roughly 8k, yes
<ZipCPU> They're 4-LUTs too, as opposed to the Xilinx 8-LUTs
<sxpert> not much indeed
<ZipCPU> (I'm not sure how big the LUTs are on the ECP5)
<sxpert> I can see how that gets filled up pretty fast
<daveshah> LUT4s, but with cascade muxes to combine to build larger LUTs
<daveshah> Xilinx is LUT6 btw
<ZipCPU> Thanks, daveshah!
<daveshah> but also has muxes to build larger LUTs like ECP5
<ZipCPU> Oohh, thanks, Looks like I mistyped that as 8-LUTs for the Xilinx chips, my bad
maikmerten has joined #yosys
<sxpert> ZipCPU: 1 slice is 2 LUT4 and 2 FF
<ZipCPU> daveshah would know that better than I. Are you asking regarding iCE40 or ECP5?
<daveshah> sxpert: yes
<sxpert> reading from the datasheet
<sxpert> those lut4 have carry in and out too
<daveshah> Yes, there's some carry logic in there
<sxpert> doesn't say how many outputs those luts have though
<daveshah> one
<sxpert> ok
<daveshah> in carry mode it's a bit more complicated
<sxpert> so that's a 1 bit adder or something
<daveshah> no
<daveshah> it can be drawn like this in most cases
<daveshah> effectively the LUT2 is the bottom half of the LUT4
<daveshah> although they can have separate init values if you treat the top part as a LUT3 and tie the D input to 1
<sxpert> so that uses 2 luts ?
<daveshah> no, those are both parts of the LUT4
<sxpert> ah ok
<sxpert> the lut4 is thus built with 2 lut3 internally ?
<daveshah> No
<daveshah> It's really a LUT4 with the output from the bottom LUT2 broken out
<sxpert> hmm
<daveshah> but in almost all cases the remainder is used as a LUT3
<daveshah> in the carry situation
* sxpert wonders how there's 2 outputs ;-)
<daveshah> all a LUT is is a cascade of multiplexers
<daveshah> selecting one of 2^K config bits
<daveshah> to get the second "LUT2" output, you just need to tap off from the middle
<daveshah> however, this second output is only used as part of the carry logic, it's not generally usable
<sxpert> ah, I thought it was some sort of 2^K bits ram
<daveshah> it is
<daveshah> indeed, 4 out of the 8 LUTs in a tile are usable as ram as well as rom
<sxpert> I was thinking of the config bits here
seldridge has joined #yosys
<sxpert> say you have a 4-16 mux selecting which of the 16 config bits come out the output
<daveshah> yeah
<sxpert> and then next to that, you have a ff that you can clock whatever comes out into
<daveshah> yeah
<daveshah> for LUTs not usable as distributed RAM, it will be probably be a simple shift register
<sxpert> the part I don't get is how you get a 2nd input as the cout (the c-in is just one of the 4 input bits)
<sxpert> perhaps you have a second 3-8 mux selecting one of bits [8-15]
<daveshah> the mux connecting cin/cout isn't one of those muxes, that's an extra carry mux
<daveshah> see this badly edited stolen diagram
<sxpert> oh, I see... this is much more clear
<sxpert> imho, would have been smarter to have the possibility of splitting into 2 lut3
<daveshah> yeah, but then you hit routing fabric constraints
<sxpert> is there a doc from lattice with this sort of info ? or does this comes from somewhere else ?
<daveshah> it came from careful analysis of their simulation models (see $DIAMOND/cae_library/simulation/verilog/ecp5y)
<daveshah> * $DIAMOND/cae_library/simulation/verilog/ecp5u
<sxpert> ah, bloody RPM ;)
<sxpert> ah, and one needs an account...
<daveshah> Feel free to peruse the rewritten FOSS alternatives
<tpb> Title: yosys/cells_sim.v at master · YosysHQ/yosys · GitHub (at github.com)
<daveshah> is the model for the CCU2C carry primitive
* sxpert bookmarks
emeb has joined #yosys
<emeb> Trying to run a design thru nextpnr-ice40 and it fails with "ERROR: timing analysis failed due to presence of combinatorial loops, incomplete specification of timing ports, etc."
<daveshah> emeb: could it be an inferred latch? try grepping the Yosys output for dlatch
<emeb> daveshah: thx - will look.
oldtopman has joined #yosys
<emeb> daveshah: found a few latches inferred in yosys - easily fixed w/ fully specified case. That did not eliminate the ERROR though.
<daveshah> Is it possible there are other forms of combinational loop in there?
<daveshah> If you just want to get rid of the error, run nextpnr with --ignore-loops
m4ssi has quit [Remote host closed the connection]
<emeb> daveshah: it's possible - I'm using a 6502 IP core of unknown quality.
<daveshah> In that case --ignore-loops is your best bet
<emeb> Yes - thanks. that seems to let it run further, exposing some other interesting things to chase.
rohitksingh has quit [Ping timeout: 252 seconds]
<tpb> Title: hp-saturn/saturn_core.v at master · sxpert/hp-saturn · GitHub (at github.com)
<ZipCPU> sxpert: Not yet
<ZipCPU> What do you intend to do on a reset?
<ZipCPU> You've only covered one half of the reset case
<emeb> daveshah: also - thanks for the link to the SB_ lib yesterday. just read the chl log and spotted that.
<emeb> which raises another question - is yosys able to infer the SB_SPRAM256KA ?
<daveshah> No, it isn't
<daveshah> atm Yosys doesn't support shared read/write ports of any kind
<sxpert> ZipCPU: how would I go for that reset thing ?
<daveshah> this also means it can't infer Xilinx/ECP5 true dual port RAM, only pseudo dual port (1R1W)
<sxpert> ZipCPU: for now I expected to use the initial block, but that may not be the best solution
<ZipCPU> sxpert: You want a structure such as: initial A <= 1'b0; always @(posedge i_clk) if (i_reset) A<= 1'b0; else A <= !A;
<emeb> daveshah: OK, that makes sense. I was having trouble with inference so I just instantiated.
<sxpert> ZipCPU: so as to debounce the reset ?
<sxpert> or to buffer it somehow ?
<ZipCPU> No
<emeb> daveshah: and I was able to get my whacky 6502 thing to build - found a loop, broke it, now everyone is happy.
<daveshah> :)
<ZipCPU> To set your values both on a reset as well as following the reset
<emeb> pro-tip - yosys does check for loops and warn about them. TIL. :P
<sxpert> ZipCPU: what would A be used for ?
<sxpert> initial does only apply on fpga bootup...
<sxpert> I see
<ZipCPU> I'm using A to avoid retyping all 9 of your assignments
<sxpert> yeah right
<sxpert> why !A though ?
<ZipCPU> To avoid saying: clk_phase <= clk_phase + 1;
<sxpert> should ah
<ZipCPU> I was just trying to share the form of the solution
<sxpert> and reset all other signals to 0
<sxpert> I guess
<ZipCPU> Well ... that's not quite a given
<ZipCPU> The issue is that you want all of the en_* signals set to zero during the reset, and you then want en_bus_send set on the first clock after the reset
<ZipCPU> (That was your requirement, not mine)
<sxpert> ah right
<sxpert> guess I can lose a step
<sxpert> not a biggie
<sxpert> so all to 0 would work
<sxpert> ok, I have created a delayed reset enable too
<sxpert> ZipCPU: yay, seems to work ;)
<sxpert> now, I need to figure out the rest ;)
<ZipCPU> o/
<sxpert> there, removed all the old stuff (stored in a safe place)
<sxpert> ZipCPU: the "generate if(blah)" is for optional stuff that may not get compiled in ?
<ZipCPU> I use it for that purpose, yes
<ZipCPU> blah must be a 1'bit parameter to make it work
<sxpert> ok, won't need that ;)
<ZipCPU> I suppose you could make it a localparam too ...
<sxpert> or some `define
<ZipCPU> I've had problems using `define's over the years
<ZipCPU> I've used them on many projects
<sxpert> ah
<ZipCPU> The result usually ends up with something that's less capable, since it's harder to handle `define's in these projects
<sxpert> I see
dys has joined #yosys
<tpb> Title: hp-saturn/saturn-decoder.v at master · sxpert/hp-saturn · GitHub (at github.com)
<ZipCPU> sxpert: What am I looking at?
<sxpert> well, trying to apply whatever I learned tonight, dunno if I did well
<sxpert> on i_en_dec, it receives 0, then 0, ends up setting the ins_rtnsxm reg to 1
<sxpert> one of the questions I had was respective to mucking with continue on line 59 and 78
<ZipCPU> Still not following what I'm looking at. Does it do what you want it to?
<sxpert> simulation says so
<sxpert> I'm just trying to ascertain that it's synthesizable
<sxpert> and proper ;)
<sxpert> (before I start coding the rest of the decoder in the same fashion
X-Scale has quit [Quit: I love my HydraIRC -> http://www.hydrairc.com <-]
<ZipCPU> It's not synthesizable
<ZipCPU> Neither $display nor $monitor can be synthesized ;)
<sxpert> sure
X-Scale has joined #yosys
dys has quit [Ping timeout: 250 seconds]
<sxpert> ok, not doing what I want, YET
<ZipCPU> You know .... it's a whole lot easier to get that sort of thing working with formal methods than with simulation ... just sayin'
* sxpert wonders wth are those formal methods
dys has joined #yosys
* sxpert got it to work !
<sxpert> \o/
<chaseemory> TIL you can concat wires with an enum in a case block
<sxpert> hmm ?
<chaseemory> id been curious for a while if it would work, i wrote this
<chaseemory> casex( {current, send_i, hdr_ready_i, payload_axis_tready_i} )
<sxpert> yeah, seems to work
<sxpert> generates some bitstring you can compare against
<chaseemory> where current is an enum, and the rest are wires, and just concatted them together for each case as well
<sxpert> suppose it allows for testing all cases of the enum ?
<chaseemory> could even test the same cases of the enum with different combinations of the wires as well, its being used in my next state logic block
maikmerten has quit [Remote host closed the connection]
<sxpert> good luck with that ;)
<chaseemory> hehe I like trying to new things to see how they work :D
<sxpert> yeah
<sxpert> sometimes, they fail spectacularly for no reason
<chaseemory> dont I know it, now that Ive gotten into ASIC toolchains in school vs just FPGA ones till now, they can go belly up quick and in strange ways
corecode_ has joined #yosys
Kamilion|ZNC has joined #yosys
Thorn has quit [Ping timeout: 250 seconds]
ric96 has quit [*.net *.split]
corecode has quit [*.net *.split]
bluesceada has quit [*.net *.split]
daveshah has quit [*.net *.split]
sorear has quit [*.net *.split]
Kamilion has quit [*.net *.split]
ovf has quit [*.net *.split]
zkms has quit [*.net *.split]
_florent_ has quit [*.net *.split]
adamgreig has quit [*.net *.split]
mrsteveman1 has quit [*.net *.split]
bluesceada has joined #yosys
Kamilion|ZNC is now known as Kamilion
tpb has quit [Remote host closed the connection]
tpb has joined #yosys