Hacker News new | ask | show | jobs
by retrac 1071 days ago
> none of that works in the physical world

Are you sure? The most common way to specify hardware these days is with a hardware description language, and the usual programming language tools like diff work for that. I'd personally be loathe to work any other way.

I won't give an answer either way as to your grouping question, just some things to consider:

Do you have a well-defined spec such that the two could work in isolation and finally merge the software and hardware at the end -- likely successfully? Then you should consider separating them completely.

As a general rule, the software that "goes with" the hardware should be in the hardware repository. That would include stuff like test frameworks of the HDL code, any tools or code used to generate further HDL code, as well as probably the on-chip firmwares (though sometimes I see those separated out). Stuff that would help you test and debug the chip as you develop it, should probably be in the chip repository.

I'd note that in a very big design it's not uncommon for different parts of the final IC to be developed in relative isolation from each other (possibly in different repositories); see my first point about whether there are well-defined interfaces.