rohitksingh has quit [Remote host closed the connection]
proteusguy has quit [Ping timeout: 245 seconds]
mauz555 has joined #m-labs
adamgreig has quit [Ping timeout: 252 seconds]
adamgreig has joined #m-labs
adamgreig has quit [Ping timeout: 276 seconds]
adamgreig has joined #m-labs
proteusguy has joined #m-labs
adamgreig has quit [Ping timeout: 252 seconds]
adamgreig has joined #m-labs
mauz555 has quit [Remote host closed the connection]
mauz555 has joined #m-labs
adamgreig has quit [Ping timeout: 276 seconds]
adamgreig has joined #m-labs
mtrbot-ml has quit [Remote host closed the connection]
mtrbot-ml has joined #m-labs
adamgreig_ has joined #m-labs
adamgreig has quit [Disconnected by services]
adamgreig_ is now known as adamgreig
Streetwalrus has joined #m-labs
<Streetwalrus>
hi, I was wondering why python was chosen for migen and nmigen
<Streetwalrus>
migen is a really nice approach and I also love python
<Streetwalrus>
but python feels like a weird choice
<Streetwalrus>
it's not very good at anything low level nor at hosting embedded DSLs
<emily>
dunno about migen but for (n)migen/Glasgow I think it comes down to "because nobody would use it if it was in OCaml"
<emily>
I don't think whitequark has much love for Python.
<Streetwalrus>
well that's fair enough but there's plenty of more viable options
<Streetwalrus>
chisel and spinalhdl benefit from a much nicer syntax in scala, though that's also far from perfect
<Streetwalrus>
I still haven't really looked into the Haskell options either because Haskell
<mtrbot-ml>
[mattermost] <sb10q> many people also don't look into scala options because scala
<Streetwalrus>
scala is a neat language
<Streetwalrus>
main gripe is the java runtime dependency
<whitequark>
Streetwalrus: scala, haskell and ocaml are essentially equally obscure if you talk to people who come from Verilog
<Streetwalrus>
good point
<whitequark>
(n)migen isn't really something new and revolutionary; it doesn't try to experiement with radical semantics that requires a large effort for a large payoff. rather, it's a way to express RTL that isn't as boneheaded as Verilog used for that task
<Streetwalrus>
yeah I know how it works
<whitequark>
indeed
<Streetwalrus>
I've only worked with vhdl but it's the same problem
<whitequark>
the main advantage of vhdl in this area is deterministic simulation
<whitequark>
but it doesn't buy that much
<emily>
Streetwalrus: well, as a (former) Haskeller I haven't looked into the Scala options because Scala :p
<emily>
Python is a lowest-common denominator language that we can all happily hate
<whitequark>
it could have been javascript
<Streetwalrus>
oh no
<Streetwalrus>
I guess the hardest part will always be reconciling those who come from a hardware background and those who come from software
<Streetwalrus>
I'm the latter and I can't stand writing vhdl
<daveshah>
The irony being that behavioural VHDL and Verilog are nothing like "hardware"
<whitequark>
^
<Streetwalrus>
yeah
<Streetwalrus>
the lack of proper metaprogramming is also a huge handicap
<whitequark>
i wouldn't use clash because of the lack of correspondence between the source and the generated code in signal names; i don't even think nmigen is quite good enough on that
<whitequark>
not sure how chisel and spinalhdl fare there
<Streetwalrus>
I haven't really looked into it either
zng has joined #m-labs
mauz555 has quit [Remote host closed the connection]
proteusguy has quit [Ping timeout: 258 seconds]
mauz555 has joined #m-labs
mauz555 has quit [Ping timeout: 252 seconds]
rohitksingh has joined #m-labs
<davidc__>
Streetwalrus: I think python is a good choice for migen/nmigen _because_ it is not a special purpose language. I regularly use migen code as part of a larger python projects (ex: implement gateware to do a small part of a much larger system including firmware and host software)
<davidc__>
Streetwalrus: because its just python; its easy to move data back and forth between components (Ex: register maps, or filter taps, or data for connector pinouts, etc)
<davidc__>
Streetwalrus: Sure, one could do that in another language; but then you're writing your data marshalling code twice
cr1901_modern has quit [Ping timeout: 245 seconds]
<key2>
how would it be with js ?
<ZirconiumX>
key2: Painful
<key2>
and in Ocaml ?
<whitequark>
there's already hardcaml
<ZirconiumX>
Possibly painful for a different reason, if you're not used to the strong typing of OCaml
<whitequark>
it's so popular, i've never seen anyone use it. the repository doesn't have any commits or issues for years
<whitequark>
i expect that i'd be the only person using it on a regular basis if i chose to use it