ChanServ changed the topic of #nmigen to: nMigen hardware description language · code at https://github.com/nmigen · logs at https://freenode.irclog.whitequark.org/nmigen · IRC meetings each Monday at 1800 UTC · next meeting TBD
futarisIRCcloud has joined #nmigen
<_whitenotifier> [YoWASP/nextpnr] whitequark pushed 1 commit to develop [+0/-0/±1] https://git.io/Jt0Eb
<_whitenotifier> [YoWASP/nextpnr] whitequark c2ade66 - Update dependencies.
Bertl is now known as Bertl_zZ
lf_ has quit [Ping timeout: 260 seconds]
lf has joined #nmigen
revolve has quit [Read error: Connection reset by peer]
revolve has joined #nmigen
<lkcl> ani
<lkcl> anuejn: unfortunately this is not the case.... and have m.If, m.Else, m.Switch work correctly as expected
<lkcl> dynamic partitioned SIMD signals require a context that is non-global in nature, but is instead context-sensitive and specific to the PartitionedSignal
<lkcl> this requirement is in direct conflict with the global definition of nmigen.Mux etc.
<lkcl> i have been investigating and thinking about this for around 5-7 months, and, after all that time, the changes required are surprisingly small
<lkcl> once Part / Mux / etc. change to call lhs.part(...), the capability exists to "carry through" the critical context-sensitive information which in the case of PartitionedSignal is... well.. the partition bits.
<lkcl> without that context-sensitive information. m.If / m.Else and m.Switch literally fall apart.
<lkcl> *with* that context-sensitive information correctly carried, it works perfectly fine
lkcl has quit [Ping timeout: 264 seconds]
revolve has quit [Read error: Connection reset by peer]
lkcl has joined #nmigen
revolve has joined #nmigen
Degi_ has joined #nmigen
Degi has quit [Ping timeout: 265 seconds]
Degi_ is now known as Degi
electronic_eel has quit [Ping timeout: 240 seconds]
electronic_eel has joined #nmigen
lkcl has quit [Ping timeout: 272 seconds]
lkcl has joined #nmigen
sakirious has quit [Read error: Connection reset by peer]
sakirious has joined #nmigen
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
PyroPeter_ has joined #nmigen
PyroPeter has quit [Ping timeout: 265 seconds]
PyroPeter_ is now known as PyroPeter
jjeanthom has joined #nmigen
jjeanthom has quit [Ping timeout: 265 seconds]
emeb_mac has quit [Quit: Leaving.]
revolve has quit [Read error: Connection reset by peer]
revolve has joined #nmigen
lkcl has quit [Ping timeout: 258 seconds]
chipmuenk has joined #nmigen
lkcl has joined #nmigen
jjeanthom has joined #nmigen
jjeanthom has quit [Ping timeout: 264 seconds]
chipmuenk1 has joined #nmigen
chipmuenk has quit [Ping timeout: 260 seconds]
chipmuenk1 is now known as chipmuenk
electronic_eel has quit [Ping timeout: 246 seconds]
electronic_eel has joined #nmigen
proteusguy has quit [Ping timeout: 264 seconds]
XgF has quit [Quit: No Ping reply in 180 seconds.]
proteusguy has joined #nmigen
XgF has joined #nmigen
XgF has quit [Disconnected by services]
XgFgX has joined #nmigen
electronic_eel has quit [Ping timeout: 258 seconds]
electronic_eel_ has joined #nmigen
electronic_eel_ has quit [Client Quit]
electronic_eel has joined #nmigen
Bertl_zZ is now known as Bertl
aquijoule_ has joined #nmigen
richbridger has quit [Ping timeout: 264 seconds]
lkcl has quit [Ping timeout: 256 seconds]
chipmuenk1 has joined #nmigen
chipmuenk has quit [Ping timeout: 258 seconds]
chipmuenk1 is now known as chipmuenk
lkcl has joined #nmigen
<_whitenotifier> [nmigen] hellow554 opened issue #587: Enable githubs discussion tab - https://git.io/JtEvg
lkcl has quit [Ping timeout: 256 seconds]
lkcl has joined #nmigen
<_whitenotifier> [nmigen] whitequark commented on issue #587: Enable githubs discussion tab - https://git.io/JtETe
Bertl is now known as Bertl_oO
revolve has quit [Read error: Connection reset by peer]
revolve has joined #nmigen
<revolve> in nmigen is there a limit on clock speed? how do I know the top speed something can be taped out at?
<whitequark> this is not something that a HDL translator can tell you; only downstream tools like nextpnr can
<revolve> whitequark: thanks. is there one with a python interface?
<revolve> sorry if this is a dumn question; can something like nextpnr tell me the top clock speed something can be taped out at or just how fast it can be simulated at?
lkcl has quit [Ping timeout: 246 seconds]
<vup> revolve: nextpnr is used for fpga's, so it can tell you the top clock speed for a fpga implementation (for one of the fpga families it supports)
lkcl has joined #nmigen
<revolve> thanks vup
<revolve> vup: in the design process how do I determine the speed limit of a taped-out design?
<vup> that depends on your design flow
<vup> how do you convert your digital design (for example verilog / vhdl files) into the asic layout?
<revolve> I'm just starting out
<vup> ok, usually timing analysis is part of this flow. Which flow you are using strongly depends on which fab / technology you are targeting and the tools you have available.
<revolve> thanks for you help, vup
<vup> For example a commonly used proprietary tool is cadence Innovus
<vup> but there are also free / open source variants
<vup> there is the openroad flow, which has atleast opensta for timing analysis
<revolve> thanks a tonne, vup
lkcl has quit [Ping timeout: 256 seconds]
<sorear> "how do I determine the speed limit of a taped-out design" arguably the answer here is "by adjusting the clock up until it misbehaves"; timing analysis tools will tell you a safe clock but they are necessarily conservative
<vup> and then do a sweep over external factors, like temperature
lkcl has joined #nmigen
pftbest has quit [Remote host closed the connection]
pftbest has joined #nmigen
<revolve> thanks. can these tools tell me anything about operating temperature?
lkcl has quit [Ping timeout: 240 seconds]
<vup> Commercial tools certainly can, not sure about opensta for example, but I would assume it can, as its wore about the cell models than the timing analysis part
<revolve> thanks
lkcl has joined #nmigen
lambda has quit [Ping timeout: 246 seconds]
lambda has joined #nmigen
chipmuenk1 has joined #nmigen
chipmuenk has quit [Ping timeout: 258 seconds]
chipmuenk1 is now known as chipmuenk
peeps[zen] has joined #nmigen
peepsalot has quit [Ping timeout: 240 seconds]
<lkcl> does anyone know how to assign attributes to a module instance?
<lkcl> in verilog this would be:
<lkcl> (* blackbox = 1 *) module SPBlock_512W64B8W(input [8:0] a, ....
<lkcl> currently the workaround is to include a verilog instance
<vup> lkcl: is SPBlock_512W64B8W written in nmigen or a instance created with `Instance`
<vup> ?
<vup> for the latter you can use `a_attrname = value` in the `Instance` constructor
<vup> for the former a slightly different workaround is converting the submodule to a Fragment and adding the attr there before adding it to `m.submodules`
<vup> not sure thats actually nicer tho :)
chipmuenk has quit [Ping timeout: 240 seconds]
jjeanthom has joined #nmigen
emeb_mac has joined #nmigen
pftbest has quit [Remote host closed the connection]
pftbest has joined #nmigen
jjeanthom has quit [Ping timeout: 246 seconds]
<lkcl> vup: it's a black box which coriolis2 will look for the name, and substitute a hard-coded Cell, rather than use whatever is inside of it (as defined by Yosys)
<lkcl> m.submodules.a.attrs["test"] = "value"
<lkcl> ah ha! perfect!
<lkcl> that's exactly what i need, thank you
<lkcl> basically, Staf Verhaegen is writing a 4K SRAM cell for Libre-SOC. it therefore has exactly the same interface as $mem but we absolutely cannot let yosys get its hands on the process, it'll make a dog's dinner mess
<lkcl> the solution we came up with was to have an explicit hard-coded Cell, and a "dummy" verilog module
<lkcl> the trick of adding the "blackbox=1" attribute is to help coriolis2 to identify it.
jjeanthom has joined #nmigen
jjeanthom has quit [Ping timeout: 264 seconds]
<vup> I see, makes sense
XgFgX is now known as XgF
revolve has quit [Read error: Connection reset by peer]
revolve has joined #nmigen
peeps[zen] is now known as peepsalot
<lkcl> vup: being able to stick in nmigen means we can run nmigen simulations, don't have any $Instance(Verilogs), so was really appreciated the trick about submodule.x.attrs.
marble has quit [Quit: WeeChat 2.3]
chipmuenk has joined #nmigen
pftbest has quit [Remote host closed the connection]
<_whitenotifier> [nmigen] hellow554 opened issue #588: Left shift + simulator = infinite (?) loop - https://git.io/JtEgb
pftbest has joined #nmigen
<_whitenotifier> [nmigen] rroohhh commented on issue #588: Left shift + simulator = infinite (?) loop - https://git.io/JtEVv
chipmuenk has quit [Quit: chipmuenk]
jjeanthom has joined #nmigen
<_whitenotifier> [nmigen] hellow554 commented on issue #588: Left shift + simulator = infinite (?) loop - https://git.io/JtErf
<smkz> when doing bit_select(a, b) does it output [a, a+b] (inclusive) or [a, a+b) (exclusive)?
<agg> lkcl: when you create the nmigen Instance you can pass a_blackbox=1 to the Instance constructor alongside like i_input=X and o_output=y (and p_param=z too)
<_whitenotifier> [nmigen] rroohhh commented on issue #588: Left shift + simulator = infinite (?) loop - https://git.io/JtErY
<vup> agg: the way I understood it, this is not actually using `Instance`
bvernoux has quit [Quit: Leaving]
<agg> aah, I see what you mean, it's a Module instance and the resulting verilog module wants the attribute so that the nmigen facsimile is replaced by the special cell, perhaps
<vup> smkz: exclusive
<vup> its the equivalent of the 'something[a +: b]` thing from verilog, if you know that
* smkz nods
pftbest has quit [Quit: Leaving...]
jjeanthom has quit [Ping timeout: 240 seconds]