lets kickstart our own cpu! risc-v

monstercameron

Diamond Member
Feb 12, 2013
3,818
1
0
A completely open ISA that is freely available to academia and industry.
A real ISA suitable for direct native hardware implementation, not just simulation or binary translation.

An ISA that avoids "over-architecting" for a particular microarchitecture style (e.g., microcoded, in-order, decoupled, out-of-order) or implementation technology (e.g., full-custom, ASIC, FPGA), but which allows efficient implementation in any of these.

An ISA separated into a small base integer ISA, usable by itself as a base for customized accelerators or for educational purposes, and optional standard extensions, to support general-purpose software development.

Support for the revised 2008 IEEE-754 floating-point standard.

An ISA supporting extensive user-level ISA extensions and specialized variants.

32-bit, 64-bit, and 128-bit address space variants for applications, operating system kernels, and hardware implementations.

An ISA with support for highly-parallel multicore or manycore implementations, including heterogeneous multiprocessors.

Optional variable-length instructions to both expand available instruction encoding space and to support an optional dense instruction encoding for improved performance, static code size, and energy efficiency.

A fully virtualizable ISA to ease hypervisor development.

An ISA that simplifies experiments with new supervisor-level and hypervisor-level ISA designs.



Source: http://riscv.org/
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,224
589
126
Why is there no open source sharing tradition within the hardware community, similar to in the software community? For example I can get open source USB driver code, but hot an open HW USB design block.

It's kind of interesting that the software area is so dominating in sharing intellectual work. It should be possible to do in other industries such as mechanical or medical too, but it's not (at least nowhere near to the same extent).
 
Last edited:

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
Why is there no open source sharing tradition within the hardware community, similar to in the software community? For example I can get open source USB driver code, but hot an open HW USB design block.

It's kind of interesting that the software area is so dominating in sharing intellectual work. It should be possible to do in other industries such as mechanical or medical too, but it's not (at least nowhere near to the same extent).

I think there are a number of open source hardware resources available (often VHDL ones, i.e. for FPGAs), including complete cpus.

But the commercial versions (licence fee ones), would offer many benefits, which are usually/often worth the potentially affordable licence fees.

E.g. Arm.
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,224
589
126
I think there are a number of open source hardware resources available (often VHDL ones, i.e. for FPGAs), including complete cpus.

But the commercial versions (licence fee ones), would offer many benefits, which are usually/often worth the potentially affordable licence fees.

E.g. Arm.

Sure, but it's nowhere near the sharing available in the software open source community.
 

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
Sure, but it's nowhere near the sharing available in the software open source community.

Too true.

Real life hardware designs, have the problem that they are far less flexibly, in terms of overall changes, than software (source code).

This is part of the reason why, Intel/AMD/Arm have such difficulties moving to the new smaller feature sized processes. It is not just a simple matter of tweaking/improving the logic design, flipping a switch, and then immediately starting production.

But with software, it can be a simple matter of re-compiling, re-running (somewhat) automated tests, or manually testing it again, then releasing it.

Hardware is rarely so quick and simple, even the testing can take a long time.
E.g. Intel server chips, usually are released (for a particular architecture, these days), a long time after the normal ones, such as a year later.
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,224
589
126
Too true.

Real life hardware designs, have the problem that they are far less flexibly, in terms of overall changes, than software (source code).

This is part of the reason why, Intel/AMD/Arm have such difficulties moving to the new smaller feature sized processes. It is not just a simple matter of tweaking/improving the logic design, flipping a switch, and then immediately starting production.

But with software, it can be a simple matter of re-compiling, re-running (somewhat) automated tests, or manually testing it again, then releasing it.

Hardware is rarely so quick and simple, even the testing can take a long time.
E.g. Intel server chips, usually are released (for a particular architecture, these days), a long time after the normal ones, such as a year later.

You have similar problems in SW too. Lots of code is OS, programming language, hardware, and CPU arch specific. But if you design wisely, you can often keep large parts of the code common, and only have adaption layers / modules / configs to accommodate for such differences.

I assume similar solutions ought to be possible for HW, although I do not have so much experience with that as with SW. And worst case, you could always have several different variants of the HW blocks. That's how it's done for SW when not possible to make common.
 

Homeles

Platinum Member
Dec 9, 2011
2,580
0
0
Sure, but it's nowhere near the sharing available in the software open source community.
Software guys are a dime a dozen. Really, the entire hardware ecosystem is not conducive to the FOSS philosophy. Business stand to lose far too much by opening up.
Most software worth mentioning is also closed source, and where it is open source, it's generally because it doesn't negatively impact profits by doing so.

Hardware is hard. Software's a joke, relative to it. You don't need a college degree to program, but hardware practically requires it. Software guys are generally overpaid, and that's a bubble that will be popping soon. There's roughly 5x more software than hardware guys in the US, according to Wikipedia. It's easy to find software labor.

There's also a lot more expense involved in creating hardware. You need a lot of capital to get started in hardware, even if you have access to an open source architecture.
 
Last edited:

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
You have similar problems in SW too. Lots of code is OS, programming language, hardware, and CPU arch specific. But if you design wisely, you can often keep large parts of the code common, and only have adaption layers / modules / configs to accommodate for such differences.

I assume similar solutions ought to be possible for HW, although I do not have so much experience with that as with SW. And worst case, you could always have several different variants of the HW blocks. That's how it's done for SW when not possible to make common.

VHDL (the "programming like" language for FPGAs, programmable logic arrays), is suppose to do for hardware, what programming languages like C/C++ do for software. In terms of its original design goals.
To some extent it has succeeded, but things are still a long way from being ideal.

The problem with hardware, is that the entire design needs to be sort of coordinated.

Example:
If I was designing some kind of semi-smart door bell unit, which varied the sound, with light levels, so that at night, it was quieter, to avoid disturbing people too much.
I could design it with discrete transistors, or op-amps, or microcontrollers (using the analogue input(s) to read the light level using a photo diode/transistor or LDR or something), or an FPGA (which would be real overkill here!).

So if I wanted to use an open source hardware design for generating the warbled door bell sound, it would have to be a completely different design, depending on if it was done using all discrete transistors, using op-amps, using microcontrollers or VHDL (FPGAs).

At the moment, software/C/C++ source code is potentially re-compilable and usable by almost anyone.
Or at least someone who knows how to use GCC and/or clang or another compiler (or whatever is needed for your software language(s) ).

But FPGAs are usually only programmed/used, by experts. Especially if large amounts of VHDL need to be written.

Yes, someone on a university course can buy a $99 FPGA demo PCB board, and flash some leds on it. But serious FPGA/VHDL work, really needs someone who knows a lot about what they are doing.
So unless the task is trivial, or the company does not care much about the quality of the results, they would be best of, getting an experienced VHDL design engineer.

An inexperienced person can create FPGA/VHDL stuff, in the same way, someone who can hardly program at all, can generate C/C++ source code, and compile it.
The problem is if there are tight time scales and/or you want something which works to its specification, close to 100% of the time, then an experienced engineer is the best solution.
 
Last edited:

ch424

Junior Member
Jun 1, 2004
15
0
66
As Homles and SOFTengCOMPelec have already said, there's loads of reasons for having more open source software than hardware:

- The barriers to entry are far lower for software: you can code in pretty much any language you want on any consumer hardware. When you're developing even moderately compex hardware, you can pay thousands to millions of dollars on the tools you need (eg Altera tools start at $3K/year; ModelSim at $1K/year). Once you've put that investment in, you'd want some way to make your money back!

- Test quality: You can't patch hardware. If there's a bug in your hardware, then /all future software/ has to have a workaround for it. Eg if there was a context-switching bug in Silvermont Atom cores, all future Linux x86 builds would have to check/correct for it, even if that software was running on a Core i5 at the time. Therefore companies that make hardware work very carefully and rigorously to a single deadline; there's no concept of "release early, release often" because everything has to be perfect first time. As a hardware company, you therefore don't get any benefit from users around the world submitting patches; if there's a bug it's already too late to fix it. In hardware, you may often find that 2/3 of the engineers work on testing, and only 1/3 do the product development. Again, if you've made all this investment in testing, why would you open-source the results?

- Liability: If you're making an SoC, it's going to cost you $50M+ to take it to silicon. Would you prefer to license the core off ARM/MIPS and have a contract that makes them liable if it's broken, or would you take an open source core that was written by some people on the internet, without warranty?

- Competition: If you write some software that's 2-5x slower than the competition, your users often won't even notice. In the semiconductor industry, if you're 20% out from the competion, people won't even buy your stuff at all. Keeping a competitive edge is therefore shrouded in patents and secret-sauce. Look how Qualcomm out-right refuses to talk to Anand about Adreno. It's also much harder to say "oh, we'll put an abstraction layer around that" because that'll cost you a few extra % silicon area in one of the most cost-sensitive industries in the world. This is why the whole design is generally done at once, by one close-knit team. This again doesn't lend itself to open source distributed across the internet!
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,224
589
126
Business stand to lose far too much by opening up.
But why should that differ for the software industry compared to all other industries?
Most software worth mentioning is also closed source, and where it is open source, it's generally because it doesn't negatively impact profits by doing so.
Not true at all. Do you have any idea what SW is available as open source? There is a vast range of SW is available as open source, and often in very high quality. We have the complete Linux OS, Android, media encoders/decodes, web browsers, media players, just to name a few.
Hardware is hard. Software's a joke, relative to it. You don't need a college degree to program, but hardware practically requires it.
That's a common misconception - it's not as simple as that. Coding complex software of high quality, that is maintainable, and has good architecture is not simple. And for sure not less hard than designing hardware. For both SW and HW there are simple vs complicated tasks.

And sure, you can probably do some easier coding without a college degree. But if you intend to work with it professionally you will have to spend years of studying and gathering experience at home if you go down that route. But then you're more or less acquiring the college degree on your spare time. That could be done for any profession and education, and certainly HW too.
Software guys are generally overpaid, and that's a bubble that will be popping soon. There's roughly 5x more software than hardware guys in the US, according to Wikipedia. It's easy to find software labor.
You sound a bit bitter to be honest. ;) The reason there are more SW guys is that there is more demand for them. SW is typically application oriented, so you have to design individual SW programs for each situation (although sharing through open source code helps).

With HW it is much more generic. Everything gets more integrated these days. So you typically just buy a standard SoC with most stuff already included, and add some external components according to some reference design, and then connect everything. Due to this high level of integration, there is less and less need for HW designers. That's why there are also fewer of them these days, which you also have noted.
There's also a lot more expense involved in creating hardware. You need a lot of capital to get started in hardware, even if you have access to an open source architecture.
Depends on what HW you intend to develop. There are plenty of discrete components, SoCs, FPGAs, etc that is easily available and at low cost. Sure if you're going to develop your own top performing desktop CPU things are different. But it's a quite small part of all HW designers that work on such tasks. Same with SW by the way. If you want to work on designing e.g. mobile phone network or fighter jet control SW, you're going to have to work at a company dedicated to that which has the required resources.
 
Last edited:

Maxima1

Diamond Member
Jan 15, 2013
3,549
761
146
It would be great, but there's too many obstacles.

Hardware is hard. Software's a joke, relative to it. You don't need a college degree to program, but hardware practically requires it. Software guys are generally overpaid, and that's a bubble that will be popping soon.
The median for software engineers is around ~85K. There are many jobs requiring significantly less skill for not that much less in compensation. Teachers and librarians, for example, are around ~55K median. Considering they also work less days throughout the year and the other perks, that's not too shabby. I've even had a high school teacher who literally knew nothing about programming (elective class), but she still received her 60K each year while we did the learning ourselves. There's plenty more. No need to bash STEM. Education is just an artificial barrier, so I don't see your point there. Any high school student could be the high school librarian, yet you need a masters in library science for consideration.
 

Homeles

Platinum Member
Dec 9, 2011
2,580
0
0
But why should that differ for the software industry compared to all other industries?

Not true at all. Do you have any idea what SW is available as open source? There is a vast range of SW is available as open source, and often in very high quality. We have the complete Linux OS, Android, media encoders/decodes, web browsers, media players, just to name a few.

That's a common misconception - it's not as simple as that. Coding complex software of high quality, that is maintainable, and has good architecture is not simple. And for sure not less hard than designing hardware. For both SW and HW there are simple vs complicated tasks.

And sure, you can probably do some easier coding without a college degree. But if you intend to work with it professionally you will have to spend years of studying and gathering experience at home if you go down that route. But then you're more or less acquiring the college degree on your spare time. That could be done for any profession and education, and certainly HW too.

You sound a bit bitter to be honest. ;) The reason there are more SW guys is that there is more demand for them. SW is typically application oriented, so you have to design individual SW programs for each situation (although sharing through open source code helps).

With HW it is much more generic. Everything gets more integrated these days. So you typically just buy a standard SoC with most stuff already included, and add some external components according to some reference design, and then connect everything. Due to this high level of integration, there is less and less need for HW designers. That's why there are also fewer of them these days, which you also have noted.

Depends on what HW you intend to develop. There are plenty of discrete components, SoCs, FPGAs, etc that is easily available and at low cost. Sure if you're going to develop your own top performing desktop CPU things are different. But it's a quite small part of all HW designers that work on such tasks. Same with SW by the way. If you want to work on designing e.g. mobile phone network or fighter jet control SW, you're going to have to work at a company dedicated to that which has the required resources.
You are so misinformed, I don't even know where to begin. I'm getting awfully tired of having to set you straight, so maybe some of the other guys can take care of that.
The median for software engineers is around ~85K. There are many jobs requiring significantly less skill for not that much less in compensation. Teachers and librarians, for example, are around ~55K median. Considering they also work less days throughout the year and the other perks, that's not too shabby. I've even had a high school teacher who literally knew nothing about programming (elective class), but she still received her 60K each year while we did the learning ourselves. There's plenty more. No need to bash STEM. Education is just an artificial barrier, so I don't see your point there. Any high school student could be the high school librarian, yet you need a masters in library science for consideration.
It's all fun and games, until your software engineering needs are outsourced to India. Also, everyone and their mother knows that teachers are underpaid, so your argument is rather weak.

Anyway, I do see hardware opening up a bit more someday... but we're way off from that. Costs need to come down a lot. The best that can really be done right now is on a PCB level... but if you're wanting to do IC design as a hobbyist or small business owner... forget about it.
 
Last edited:

monstercameron

Diamond Member
Feb 12, 2013
3,818
1
0
As Homles and SOFTengCOMPelec have already said, there's loads of reasons for having more open source software than hardware:

- The barriers to entry are far lower for software: you can code in pretty much any language you want on any consumer hardware. When you're developing even moderately compex hardware, you can pay thousands to millions of dollars on the tools you need (eg Altera tools start at $3K/year; ModelSim at $1K/year). Once you've put that investment in, you'd want some way to make your money back!

- Test quality: You can't patch hardware. If there's a bug in your hardware, then /all future software/ has to have a workaround for it. Eg if there was a context-switching bug in Silvermont Atom cores, all future Linux x86 builds would have to check/correct for it, even if that software was running on a Core i5 at the time. Therefore companies that make hardware work very carefully and rigorously to a single deadline; there's no concept of "release early, release often" because everything has to be perfect first time. As a hardware company, you therefore don't get any benefit from users around the world submitting patches; if there's a bug it's already too late to fix it. In hardware, you may often find that 2/3 of the engineers work on testing, and only 1/3 do the product development. Again, if you've made all this investment in testing, why would you open-source the results?

- Liability: If you're making an SoC, it's going to cost you $50M+ to take it to silicon. Would you prefer to license the core off ARM/MIPS and have a contract that makes them liable if it's broken, or would you take an open source core that was written by some people on the internet, without warranty?

- Competition: If you write some software that's 2-5x slower than the competition, your users often won't even notice. In the semiconductor industry, if you're 20% out from the competion, people won't even buy your stuff at all. Keeping a competitive edge is therefore shrouded in patents and secret-sauce. Look how Qualcomm out-right refuses to talk to Anand about Adreno. It's also much harder to say "oh, we'll put an abstraction layer around that" because that'll cost you a few extra % silicon area in one of the most cost-sensitive industries in the world. This is why the whole design is generally done at once, by one close-knit team. This again doesn't lend itself to open source distributed across the internet!

I don't know how accurate that is, adapteva had successful run under a million via kickstarter...although they did get some investment later on.
 

monstercameron

Diamond Member
Feb 12, 2013
3,818
1
0
Why is there no open source sharing tradition within the hardware community, similar to in the software community? For example I can get open source USB driver code, but hot an open HW USB design block.

It's kind of interesting that the software area is so dominating in sharing intellectual work. It should be possible to do in other industries such as mechanical or medical too, but it's not (at least nowhere near to the same extent).

http://opencores.org/
 

Fjodor2001

Diamond Member
Feb 6, 2010
4,224
589
126
It's all fun and games, until your software engineering needs are outsourced to India.

Some Software Engineering salary statistics for the US:

http://www.indeed.com/salary/q-Software-Engineer-l-United-States.html

trends





http://www.datamation.com/careers/it-salary-guide-2014-1.html

http://www.datamation.com/careers/it-salary-guide-2014-6.html

"Software Engineer

2014 average salary range: $89,750 – $137,250.

• The 2014 salary range is an increase of 7.5% over this job’s 2013 salary range, which was $83,500 – $127,750."
 

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91

videogames101

Diamond Member
Aug 24, 2005
6,783
27
91
Which is not hardware design, and therefore not applicable.

What? At least half of ASIC design is HDL and sim work. Whether you complete the back-end design, or implement it on an fpga doesn't really change the functionality of your hardware. Saying an FPGA implementation of an HDL designs isn't "hardware design" is pretty bullshit. In any semiconductor company you'll find dedicated fpga guys testing designs before they get sent off to the foundry.

As has been mentioned, if you're a hobbyist/small business, FPGA's are the best (and often only) option for hardware design implementation. And many are actually quite affordable. I too would recommend opencores.org

EDIT: The other thing I would say is that in my experience compiling and running/testing existing C code on an arbitrary PC is actually quite a bit easier than implementing/testing existing HDL code on an arbitrary FPGA.
 
Last edited:

ch424

Junior Member
Jun 1, 2004
15
0
66
Indeed, it's important to make the distinction between front-end HDL design and back-end FPGA/silicon implementation, but they are both "hardware engineering" disciplines
 

Homeles

Platinum Member
Dec 9, 2011
2,580
0
0
Some Software Engineering salary statistics for the US:
The bubble's not popping tomorrow. Wage statistics aren't relevant right now.

As for the rest, it appears that this is a touchy subject for some people, and the realities of why hardware is closed off offends them. I'll abstain from participating in this thread further.