The only answer is simple in principle, you just have to find the time and energy: do a lot of programming. If you're hard core or want to find out if you are or have that potential, I'd start with SICP/6.001: http://en.wikipedia.org/wiki/Structure_and_Interpretation_of...
Good luck! People with your background can bring a lot to the table, you just need to achieve the relevant software background first.
In the meantime, make sure to carry around one of your MOSIS chips, that earns you a lot of geek cred for those who know what it means ^_^.
(Seriously, it does.)
What were you doing before the VLSI course? How did you get your experience with C, HTML, CSS and Perl? Can you rewrite your resume so it emphasizes the experience you have had with programming, even if it wasn't part of a course?
"Design of VLSI Systems" at http://lsiwww.epfl.ch/LSI2001/teaching/webcourse/ch01/ch01.h... says "The design process, at various levels, is usually evolutionary in nature. It starts with a given set of requirements. Initial design is developed and tested against the requirements. When requirements are not met, the design has to be improved. If such improvement is either not possible or too costly, then the revision of requirements and its impact analysis must be considered." That sounds a lot like what we do for programming. Is there some way to emphasize the skills you learned for VLSI and state how you would use them for software?
Isn't VLSI mainly software driven these days? I would state what software you used and what you did with it. That's a kind of programming.
During your course, did you work in a team or on your own? Did you gather requirements, obtain resources, prioritise and allocate tasks and follow up to make sure each team member did his/her job? You could reuse that experience for programming.
With your hardware background, I'd aim for low-level technical programming jobs like writing device drivers rather than more business-oriented software like account packages, CRMs, databases, GUIs or possibly websites.
Did you debug hardware by using a CRO, JTAG port, signal injector or protocol analyser? Those can be useful for device driver writers too.
Is there an Arduino group in your area that you could do voluntary programming for? That would get you started with simple device drivers.
You might have to take a VLSI job for a while to keep the cash flowing while you get more software experience by programming part time or on a volunteer basis. There's a list of VLSI companies at http://www.vlsi-world.com/index.php?option=com_glossary&...
Why would you want to do this? If you have a friend with software company work for him for a year! Any sw company worth its existence always needs more programmers. You can work at low pay (or even for no pay if you are okw ith it) for a couple of months while you are learning and then get into a fulltime position. With friends you can make such unorthodox arrangements. If you have a friend who owns a software company, use that to learn!
Getting your foot in the door only works if you can then perform, and while mr_b has learned a number of fantastically valuable things, he hasn't learned a number of critical software things. Some people can pull it off if their manager(s) aren't too attentive and/or bright and they're working alone, but he'd be far better off with people who are good and who would mentor him in his first few jobs.
Plus he'd get much better recommendations for his next job if they're from people with clues.