Category Archives: ASIC Design

Framework For Creating An Hardware Startup For EE Students

If you are reading this post , it means you want to start a hardware company or  interested in HW startups in general.  This is especially written for college or grad student who have novel ideas and feel they dont have the necessary engineering skills and above all no capital. Sp big question for them is where do I start?
You should develop the creative thinking process, analyzing and breaking complex problem into small pieces and then solving them by learning what it takes. This is what engineering in nutshell is irrespective of the domain. 
 
I will try to present a framework for you to get started and you should refine slightly as you go depending on your project/idea.  I assume your parents or  you have access to couple of hundred of dollars capital and be able to spend atleast 20-25hrs of time every week for next 1yr  (besides your regular school work etc…)
 
Prereq: Find 1-2 mentors who are hands on . If I were you I would pick one person with Embedded HW/SW and Hardware/System level design engineer. If you dont know anyone, start attending local meetups (www.meetup.com) , TIE sessions etc  to meet and form some relationships. Many univ EE profs or depts would also be happy to mentor you . Forming relationships with profs will also help you later .
 
1. Buy an Arduino shield and Raspberry-pi . Enroll at local techshop.ws class for the following. These are very cheap.
a. Arduino/Raspberry pi related workshops
b. Autocad for inventor 2013 workshops
  c. Fabrication and Rapid Prototyping class
Also, learn some breadboard basic/basic electronics …there are tons of youtube/online courses on these…
 
If you have access to someone who knows above and can teach you or if you know of any other institution which offers the above, that would also do the trick. 
 
2. Once you learned above, make a prototype of what you are envisioning. You can first start with paper/board prototypes, refine it and then a cardboard prototype to show it around. IF any feedback, re-iterate and then using skills from 1, make a real non-function prototype which should be good enough for end users to visualize .
 
3. Next you know the physical limitations . So all your electronics/PCB/hardware board should fit in it.  Remember this
 
4. With help from mentors, start with simple circuit or core functionality and the Input and output of the product. Then expand on it. When you build the circuit you can use Arduino & Raspberry-pi  . 
 
5. Put this whole barebone circuit into the prototype case you designed. Initially it might be bit larger , but since its a concept, its understood and acceptable. Later you can work with real manf to shrink it. But for now , fit it in. Borrow drill m/c, soldering iron etc either from your friends or pick it up from local stores either for rent or buy it.
 
6. Show this to end users. Ask them various questions like physical appearance (look and feel, touch, weight) and the output of it. Observe if the prototype is getting hot.
If its getting hot, you have to get back to your 3D printer and Autocad workstation and revise again.
 
7. Based on feedback from 6, re-iterate
 
8. Once you think you are there, open an account on upverter.com or use http://schemes.io/ etc, and learn how to draw schematics using various vendors/manf components. Based on the knowledge you picked from 1,& 4 and with your mentors help, you can be confident that you will be able to do this.
 
9.Most of them will let you order a sample (Complete board with all components ) which you can fit in your case and repeat 6.
 
10. By now, you have something that you can show to potential angel investors or apply to some incubators  for seed money. Dont attempt to go beyond unless you have access to capital and a talented technical team to manage the whole thing. Even though you have walked through the whole process, there is lot experienced engrs can do and manage crisis to crisis . 
 
Dont let these overwhelm you. Do it one step a time. The whole thing should not cost you more than 1K-1.5K USD at the max. 
 
Good luck and All the best. Have confidence and thats the first step to start something.
Advertisements

How do you launch a hardware startup?

This is a repost of my  answer on Quora .

Whether its hardware or software or any product, spend lot of time and energy in customer development . Finding out what users want and think they will pay for is more critical than what we think will be cool for them.

Since HW involves lot of capital, you need to get the above part right.Once you have it, you would need to figure out the device/product environment conditions aka environment limitations, regulatory restrictions/guidelines/requirement whatever you call and very likely you will be changing the product spec or operating conditions to match the new reality.

Then come up with product design (look and feel), in layman terms, the product casing or how users should feel like when they see the product. Very likely because of the product casing/packaging, you will very likely revise your spec again..

Next, from the spec you came up with talking to users etc, figure out what it translated to technical components. Like how many HDMI ports , VGA, optical . USB ports etc, what network interfaces you support, what will be the capacity of hard drive and whether it should be SSD etc..

In case of Apple-TV for example, you might need to video encoding/decoding etc, you need good video decoder…check who sells video decoder chips (probably ARM or imagination tech) , also depending what addln functionality you need, you will also need main CPU processor, so figure out if its going to be ARM or MIPS or Intel Atom ..While you are figuring this, also check the embedded OS you want the device to be running and then check if the compatibility of OS with HW at device driver level…

Check all potential vendors for each component and many times they give you sample pricing (typically in volume of 10K pricing …some times they might give you pricing for 1K pieces as well )

Once you have selected vendors, figure out the power consumption and see if the power budget makes sense.Figure out if you want to your device to be running both in Africa and Siberia ..Accordingly revise your power budget and therefore you will change product spec and/or product casing etc..

Next implement the design spec using platforms from upverter etc and simulate the design.  Next select the PCB vendor who can do the design and manufacturing for you…Board design/packaging might impact lot of factors starting from Design spec all the way to casing etc..So this is important..

Add all the pricing and get the BOM (bills of materials) ..Check if the BOM makes sense for the price range you are planning to sell..If your initial BOM at this stage is for example 25$ , triple that number because you are still missing  pcb design and manf, board packaging , yield, lab bring up , compliance testing , QA and other NRE costs…Now check if you are still making money for the price that your customer is willing to pay …If you initially planned to sell for 50$, but your BOM is around 75$, you are loosing money and unless you have lot of money where you can afford losses initially to gain traction, you might have to change your spec again..Most likely you will remove some components and/or reduce some components..for example you might say I will only add 2 HDMI instead of 4, you might reduce processor speed from 1GhZ to 750MHz etc…

Now go back to your customer and convince him that what you are still delivering is lot of value to him and you are still solving their pain points and only removing the nice to have features…If they agree, proceed further..

While you are doing all this, start your embedded and SW development process in parallel using developer or emulator prototyping boards…Have this ready first so that you can do the demo to potential customers/investors on how the product will perform once HW is done …Show them once manufactured, its plug and play ..get their reactions/feedback..very likely you might change your spec totally or part of it…Once you do this 2-3 times and feeling confident, accelerate your PCB board design and manufacturing and get the prototype out…As a start up ,never go for manf without getting SW/Embedded part ready ..Its more like a lean start up development model for hardware..

If you are building a ASIC like Apple does for their Apple-TV , its different on lot of other aspects and I wont recommend it unless you can raise 10-20M$ easily and can hire 10-20 HW engg team …Of course not every product needs an ASIC or even an FPGA and don’t have to rely on leading manf technologies….

As as others have commented , you need to worry if you are infringing IP or if you are creating IP, make IP protection as part of your design thinking and strategy process..You can start with a provisional patent to buy you time and give you a opp to figure if you still want to go ahead after the feedback from SW demo/product demo..

BTW, try to use opensource technologies and customize it where you can…especially the design tools..Some tools are very expensive…Some vendors give their tools free for folks using their IC platform…Another good advice is try to limit vendors as much as you can, it will save you lot of headaches on lot of areas…

I might have left lot of other pieces, but this should give you a good idea of the process involved..If you need details or clarifications, feel free to ping me..

Formal verification of SOC

There was an interesting question that was asked during the interview with Moshar from Broadcom
http://www.eetimes.com/news/design/showArticle.jhtml;jsessionid=MKCJBAP5HOPZKQSNDLPCKH0CJUNN2JVN?articleID=196902151

==================
EE Times: Are you using formal verification, and does it reduce the need for simulation and acceleration?

Moshar: We are using formal verification, but I don’t believe it is reducing the scope of the work we need to do. It will help you make sure that your IP is golden, but formal verification really does not apply at the SoC level. You have to go through all the traffic scenarios you need to cover.

===================

It would have been nice if a detailed answer was given ..From the question posed and reading the answer , it appears as if it is a limitation of Formal Verification. I think if you describe in terms of Formal properties using PSL , it would be still possible to formally verify the traffic between various cores on SOC..

I think it would be interesting to know on how companies operating in ESL space view this. As systemC and C based language design becoming popular and support TLM, it would interesting to see how one can extract information from these abstract models and verify the design intentions.

Personalization of Silicon and need for Design Flow Automation

I was just looking at some of the latest anouncements and the prototypes at the recent CES show and if you look at the trend and the products that consumers are crazy about, and if you want to sum it up..The market is all about how much personalization can the users do in the product. Every consumer wants to see himself/herself in the product..so what does this translate it to for the Semi-Conductor industry folks.. “ Personalization of Silicon “..

Look at the famous Apple IPOD ..Many see it as the symbol of the youth…So the closer the silicon is to the hearts the consumers, the better are the chances for product success…But this personalization all comes with a price…Everyone knows pricing is one key element which determines the reach and sucess of the product .

So, the big question is , how can the IC industry reduce its IC design and packaging (I mean chip packaging and not feature/product packaging ) costs  and yet be profitable? The answer partly comes from the EDA industry. Automation of the design flow. It is the degree of automation and the accuracy of the results which it can deliver over a short span of time . Multi-million transistors ( 10M+ transistors) and SOC’s are becoming common and the TTM is becoming shorter day by day. For example, with-in few days/weeks of the Apple’s IPHONE announcement, LG released a similar competetive product with almost the same functionality as IPHONE. Imagine how fierece the competetion is. Each single day counts.

How can the design teams manage this pressure ? Marketing teams often wants to add new features in the last minute. People involved in the IC Design knows what this translates to. It is not a matter of simple ECO . Sometimes a small feature addition can lead to couple of weeks delay. I know a customer who has to do go through the entire design cycle twice as marketing asked them to add 2 more new features each time and this effected their tape-out schedules by 6 weeks..Not every Semi-conductor company can afford such a delay ( especially folks operating in Consumer Electronics market  segment ).  So , the solution doesnt come by adding few more engineers or simply delaying the product launch.. You need design tools which are smart enough to detect the incremental changes anywhere in the flow and automatically do the appropriate steps in the design flow with no or minimum intervention from designer.

Not many EDA companies are recognizing the importance of the automation and their perception of automation is awefully wrong. I would say in years to come, the company which manages to bring the true “automation” of the design flow to the industry will emerge as the real winner.

If your customer makes money, you make money. It is as simple as that.

BTW, You need engineers to find smarter ways to design and bring “true” personalization of the silicon :)

Logic Synthesis Primer

I have recently seen many folks asking questions like “How to write a synthesis script” or “Whats is in a synthesis environment” . Many freshers right out of the school claim to know about synthesis but in reality doesnt have a clue where to start.

When I refer to Synthesis in this post…I mean Logic Synthesis and I mostly cover only logic synthesis and it doesnt include any STA (Timing analysis). I will cover some points which overlap between logic synthesis and front end timing optimization. I will write a seperate post on Front-end timing optimization and Physical Synthesis (Floorplan , Global Placement and Routing , CTS ).

Synthesis is not just a script you write for a specific tool. It is actually much more than that. I have seen many folks who loosly couple it with a specific tool like Synopsys DC or Magma Blast Create. It is in a sense a methodology which evolves over the time by doing many runs as the block/chip evolves. Before you start synthesis , One has to know

1. What are the area goals? If area is one of the important criteria, then one needs to know what are the area reduction techniques available from the tool . I’m assuming that RTL has conforms to best design practices. Check the number of logic levels and cells used after first iteration. Accordingly decide what your strategy for area reduction should be. One benefit of reducing the area will help to comeup with a relatively smaller floorplan. Ofcourse most EDA folks prefer bigger floorplans sothat their floorplanning or placement tools can easily do the job :) , easily avoid the congestion and cross-talk issues :). But I strongly suggest synthesis folks to have some understanding of physical synthesis.

2. What are the power goals? Some tools have advanced power savings schemes in synthesis itself like Power gating flops/Retention flops. They do this when the RTL designer uses some special pragmas in their RTL code and they capture this when the tools parse the RTL.

3. If clock gating allowed? Are there any modules/blocks for which clock gating has to be disabled? You need to understand why it has to enabled/disabled and should be aware of its impact. You should know if the technology library has the support for ICG (Integrated
clock gating cells) .

4.How much hierarchy has to be kept? Keep in mind that Logical Hierarchy is different from Physical Hierarchy. When you decide to maintan hierarchy, it has to be considered that some optimization algorithms are limited by the module hierarchies/boundaries and so care should be taken as if and how much QOR can be sacrificed.

5. Is flattening allowed ? The answer to this question depends partly on the decision you make on the above question. If yes , is it allowed on entire design ? If not, can you atleast do flattening selectively. Other relevant information you need to know is , if rtl inferred models can be flattened .

6. What is your DFT strategy and methodology. Many might wonder why is it important to consider at Logic Synthesis stage. This is especially important when you plan for DFT during RTL development. Like you might have declared the test/scan ports in RTL and since scan insertion will not be done till synthesis has been done, many optimization algos in the synthesis engine will see them as floating and will blow them away. So, you might need to instruct the tool not to touch them.

7. Resource sharing and Operator Merging : If the these options are available in the synthesis and if you dont have any constraint or reason for not using them, then it is highly recommended to take advantage of these . But care has to be taken as some formal tools either dont have good support for this or dont support them at all .

8. Datapath architecture selection : Some advanced synthesis tool allows you to configure/pre-select the datapath architectures . If timing is critical for a particular block, then you might want to overide the area optimization steps by selecting the fastest architecture available for all the datapath components in that particular block. Do remeber that selecting fastest architecture might blow up area sometimes.

9. Formal Verification : FV (Formal Verification) tools dont do agressive optimizations ( or should I say, it is not a good idea to so :) ) as synthesis tools do. So, it is highly important that you let your FV tool know about the synthesis options when exists & possible. You should try to mimic the synthesis env in your FV environment. Else you can see some false failures.

10. Hard Macros : When macros are used and if some of the inputs/outputs are unused, they might be removed. So if any macros or hard instantiated gates are present , you should set the appropriate commandslike force keep or set_dont_touch .

11. Spare gates/registers : When spare registers are described in the RTL itself, synthesis tools should be instructed to preserve them else they are treated as a part of unreachable registers and might be thrown off during
synthesis (deadcode removal ). Some people use spare registers in the backend and sprinkle them evenly.

12. It is important to analyze the technology library for the cell delays and area. One another important factor most people forget is to consider the effect of EM (electro-migration) and yield . All the bad cells ( which have high delays , or bad for EM or yield, bad area ) should be hidden or disabled from being used by synthesis engine. Forgetting to disable cells bad for EM or yield effects timing closure with cross-talk/SI during backend.

Apart from this, make sure all complex cells like AOI, OAI, Full Adders and Half Adders, XOR etc are available to the synthesis tool. It helps save area and increases drive load capability resulting less buffering.

13. Dont use highest effort levels in synthesis by default ( unless you know what you are doing ). Some optimization algorithms might hurt your design by doing agressive optimizations. Synthesis knobs have to be used with care and by studying what it does to the design.

14. Designware usage: Sometimes, it makes sense to use Designware components in RTL . Make sure the synthesis tool used can detect the Designware components , understand and synthesize them. Some synthesis tool vendors change them to their equivalent models ( for example, Lavaware components from magma ) . If not , you might need to black box them and read in the gate level netlist of those designware components after synthesis is done.

15. Pipe-lining : Almost all synthesis tool support this . So where necessary, the designer or synthesis expert has to know which block/module needs pipe-lining ; how many stages are required and what is the latency at each stage etc.

16. Re-Timing : Sometimes when RTL has those designware or lavaware components , some synthesis tools automatically apply re-timing and some synthesis tools require you to explicilty set the relevant re-timing configs . But keep in mind that re-timing is not supported that well in FV tools.

17. Dontcare optimization : If the RTL contains dont-cares (X) , many synthesis tools allow you to choose whether you want x to be treated as “0″ or “1″. I suggest it would be better if we leave it to the synthesis tool to decide. Most dontcare algorithms select the value of x which will result in smaller ckt area if area optimization is enabled or better ckt with better timing if timing mode is enabled.

18. Clock Edge mapping: Some synthesis tool map to neg edge flops and add a inverter if they see that is has better area savings than pickingup a pos edge flop. Some design methodologies especically back-end teams dont prefer this sometimes. So, you need to set the configs accordingly.

19. If there are any complex cells like Full Adders, Half Adders etc with multiple outputs in your library , then most synthesis tools dont utilize them and so if your want to synthesis tool  to use them , then you have to hand instantiate them in RTL. Remeber these cells will be timed, but will not infered or decomped to simpler cells/logic during optimization phases .
With all these said, I cant stress enough how important it is for RTL coders to follow best practices. There is lot of information out there or one can refer to STARC methodology guide or Design-Reuse methodology manual for information .

Design/IP Reuse ..well understood..how about prototyping??

I have been hearing about the design/IP reuse from time to time. Today there was an article on EE times which can read by clicking this link Design-Reuse

I think many big companies have adopted the reuse methodology and realize the benefits of it. Even small-medium companies re-use the blocks or IP’s in most of their chips. So, I dont think there is any need to keep repeating the importance over and over again. Most of the companies cut down their design cycle time and costs using this reuse methodology. I think now one should look forward and see if they can get good prototyping flow . I recently worked on prototyping efforts and it correlated very well with 90nm , 130nm and 180nm. For 65nm and below, special considerations have to be adopted like taking the account of parasitic effects . With this flow, the time to achieve timing closure is significantly smaller as designer gets early feedback.

I would appreciate if anyone has any experience in developing/using the prototyping flow and  can share their concerns. It will be very informative and good discussion.

What is the DeCoupling point for EDA Industry

The De-Coupling point principle put forth by Clayton M. Christensen, Christopher S. Musso and Scott D. in their article “MAXIMIZING THE RETURNS FROM RESEARCH”, says that “The company developing a new technology must plan to integrate forward from the point at which a new technology is developed, across every interdependent interface in the chain of value-adding activities out to that point at which there is a modular interface with the next stage of value-added.” They say that, it is the activity just before the decoupling point where the most attractive profitability in the value chain can be achieved. The reason for this is that performance in a modular product is not determined within the product’s architecture, but within the subsystems from which the modular product is assembled. At the stage of value-added just before the decoupling point, performance differences are determined primarily by the interdependent architecture and less by the components that are used.

EDA industry is very competitive and is more technology driven than any other field in the IT industry. As the design complexities increase, designers demand more innovative and complex tools and as the time to market pressures are increasing (for many chips it is less than 6-9 months), EDA companies are always under great pressure to roll out sophisticated tools to understand and solve design complexities . Having said this, it can be easily understood that EDA industry works in tight integration with the Design companies and the manufacturers. Each chip is designed in a different way and the Methodology engineers propose new
Methodologies and flows which indirectly puts pressure on the EDA industry.

Now let’s look at various perspectives: An EDA Startup Company can roll out sophisticated software for a specific stage in the ASIC/FPGA/Structured ASIC design flow. The problems typical EDA start-up companies’ faces are: They have to make sure that the algorithm on which they built the software delivers both the performance (how fast the tool can analyze the design sources say RTL or Netlist) and the design capacity it can handle (20 million gate design is very typical now-a-days), the output of the tool should be compatible with the tools from the four big giants (Cadence, Synopsys, Mentor and Magma) so that the designer can take the output from the tool and use it in the next steps of the design flow with the implementation tools. The tool interoperability issues are always a painful task for the EDA engineers.The success rate for the EDA startups is very less for the reason said earlier. They have to see a way where their tool suite can be seamlessly integrated. So for EDA startups, the De-Coupling point lies in effectively addressing the design complexities, able to handle higher capacity and performance that the competitor tools. But the companies have to keep in mind that de-coupling point might shift to higher point in the value chain.

For an already big company like Cadence, Synopsys and Mentor, their de-coupling point doesn’t lie in the new tool offerings, but rather understanding the design flow gaps in the already offered tools and quickly filling it out and thus enabling a better and fully integrated platform.

If anyone out there has any ideas/opinions on the de-coupling point…please comment….