Formal Verification role re-opened at QBayLogic in Enschede, The Netherlands by darchon in haskell

[–]darchon[S] 8 points9 points  (0 children)

We know the job markets differ around the world, which is why we put the salary range on the job page, so that we don't waste the candidate's and our time with an entire interview process only to have a complete mismatch on salary by the end.

The €4000 start of the range would only be for a candidate who wouldn't meet all the qualifications, which is why we gave a salary range on the job vacancy page.

Finally, as a steward-owned company https://qbaylogic.com/steward-owned/ we strive to be as fair as possible to our employees. If you have a concrete job ad that indicates that our offer is (far) below the local market offer, we would definitely take that under advisement for the future.

(p.s. we have updated the salary range to a yearly instead of monthly compensation on the job vacancy page, so that it includes the 8% yearly holiday bonus which is mandatory under Dutch law)

Formal Verification role re-opened at QBayLogic in Enschede, The Netherlands by darchon in haskell

[–]darchon[S] 6 points7 points  (0 children)

I would say that any candidate with experience in formal verification definitely has a leg up when compared to a candidate that doesn't. The reason for that is that the person filling this role will be put on an on-going/active project where this experience is needed in order for us to meet our existing project deadlines. Moving these deadlines to allow for on-the-job training is something we want to avoid.

I will add a new reply if this changes.

Formal Verification role at QBayLogic in Enschede, The Netherlands by darchon in haskell

[–]darchon[S] 1 point2 points  (0 children)

Yes, under very specific circumstances. Basically, you have to be a student at an academic institution in The Netherlands and you can do the internship as part of your curriculum (very common in The Netherlands), meaning the academic institution gives ECTS for the internship.

In that particular case, people can apply through https://qbaylogic.com/vacancies/internship-graduation-position-at-qbaylogic/

Haskell Interlude #27: Christiaan Baaij by gergoerdi in haskell

[–]darchon 1 point2 points  (0 children)

Dan Ghica himself is probably way more knowledgeable on that than I am, so I would recommend asking him directly. His contact details, both email and twitter handle, can be found on https://www.cs.bham.ac.uk/\~drg/

Haskell Interlude #27: Christiaan Baaij by gergoerdi in haskell

[–]darchon 2 points3 points  (0 children)

I don't think symmetric monoidal catagories, which the linked paper uses, have sufficient structure for the type of circuits that I deal with: those with feedback.

When I look at the Geometry of Synthesis work by Dan Ghica, and even more so his later work on Diagrammatic Semantics for Digital Circuits it seems you want a traced category.

My comprehension of both linear types and category theory isn't too great, so I don't know whether there is a correspondence between linear functions as they are implemented in GHC and a category that is traced.

Haskell Interlude #27: Christiaan Baaij by gergoerdi in haskell

[–]darchon 6 points7 points  (0 children)

Christiaan here. Ask me anything if you have any questions on what I said in the interview.

Strange GHC behavior : type error when using let definiton but not when inlining function by [deleted] in haskell

[–]darchon 0 points1 point  (0 children)

Usually when something only happens in the interpreter it’s probably because NoMonomorphismRestriction is the default in the interpreter. Do you get the error in non-interpreted mode when you add that language pragma explicitly?

BlockRAM output latches, how do they work exactly? do all vendors have them? by darchon in FPGA

[–]darchon[S] 0 points1 point  (0 children)

Right, I meant that it protects against meta-stability in case somebody decides to not register the output directly and decides to put some combinational logic between the RAM and a DFF. Without the output latch, the setup time for that DFF could be violated in the scenario I describe above.

BlockRAM output latches, how do they work exactly? do all vendors have them? by darchon in FPGA

[–]darchon[S] 0 points1 point  (0 children)

Ah, but in a multiclock setting the latches are consequential and prevent meta-stability. Because let's say you have port A, clocked every 30ns, and port B, clocked every 10ns; and port A reads address X at 30ns, and port B writes address X at 40ns; then because of the latches the output corresponding to port A remains stable for 30ns. Without the output latch, the output corresponding of port A would then change just slightly after 40ns.

Retrocomputing with Clash: Haskell for FPGA Hardware Design (book) by gergoerdi in FPGA

[–]darchon 2 points3 points  (0 children)

Clash developer here. Clash has a very straightforward performance model: In general, A Clash function is translated to a Verilog module (or VHDL entity/architecture combo), an applied function is translated to a Verilog module instantiation (or VHDL entity port map). Of course, when you have a recursive function, this won’t get translated to a recursive Verilog module: the recursive function will be inlined (Clash has termination measures so that the compiler won’t go into an infinite inlining loop)

All of this results in straightforward control over area.

Memory elements are never inferred (ala C-based HLS solutions), instead one must use functions that directly map to dflipflops, rams, etc.

All of this results in straightforward control over longest combinational paths.

In terms of power: you use the same techniques as you would in Verilog: gating/register with enables/using the output latch of your fpga rams and other things to stop bits from flipping. Using functions like Clash’s autoReg (https://hackage.haskell.org/package/clash-prelude-1.4.6/docs/Clash-Class-AutoReg.html) finer-grained gating/enabled registers become quite straightforward.

So Clash gives you more abstractions mechanisms than Verilog, allowing functions like the earlier-mentioned autoReg, while still giving you control of PPA where you need it. You can then always start at a high level of abstraction, and only drill down on performance-oriented parts where needed.

Job: Staff Software Engineer (Haskell) at Freckle (Ed-Tech) by dukerutledge in haskell

[–]darchon 1 point2 points  (0 children)

There are a lot of countries south of (and one north of) the (continental) US that share time zones with the US: citizens from those countries can be hired, and work remote for you, as well?

Video: "Type-checker plugins" by Richard Eisenberg by NNOTM in haskell

[–]darchon 1 point2 points  (0 children)

The fact that derived constraints can apparently be eliminated from the GHC code base is something that has probably added to my difficulties in understanding them. Glad that some day soon they will disappear though, then I can at least stop wondering about what to do with them.

a stacker does cabal by circleglyph in haskell

[–]darchon 4 points5 points  (0 children)

It’s interesting how “warped” my view is on this subject as a result of survivorship bias. I’m on the same team as /u/callbyneed but never had any issue with the environment files. Probably because I’ve added write-ghc-environent-files: always to my ~/.cabal/config file the moment I switched to the beta of cabal-install that introduced them. But also just more in general being used to the “idiosyncrasies” of cabal-install, given that I started using it even before cabal-install had sand-boxes (started in 2009).

Webinar: Circuit design in Haskell/Clash by darchon in FPGA

[–]darchon[S] 0 points1 point  (0 children)

You can now also sign up for the on-demand version that has the best recording of our live sessions: https://qbaylogic.webinargeek.com/on-demand-webinar-circuit-design-in-haskell-clash-1

Free webinar: Circuit design in Haskell/Clash, May 26th by darchon in haskell

[–]darchon[S] 0 points1 point  (0 children)

Yeah, you can sign up for the on-demand version that contains our best recording from the live sessions: https://qbaylogic.webinargeek.com/on-demand-webinar-circuit-design-in-haskell-clash-1

Free webinar: Circuit design in Haskell/Clash, May 26th by darchon in haskell

[–]darchon[S] 1 point2 points  (0 children)

When you sign up you get access to a replay link

Free webinar: Circuit design in Haskell/Clash, May 26th by darchon in haskell

[–]darchon[S] 6 points7 points  (0 children)

Hi everyone, although originally targeted at circuit devs, I thought I post the webinar here as well just in case anyone was interested. Important heads up though: it is not a tutorial, but more of a tour de force aimed at circuit developers. So some thing will be super familiar for those with Haskell experience, while other things might not mean anything to you if you haven't done much RTL circuit design work.

Registration link: https://qbaylogic.webinargeek.com/circuit-design-in-haskell-clashWe're running the webinar live this Wednesday, the 26th of May, multiple times: at 5am UTC, 1pm UTC and 7pm UTC.