Nov 21, 2007

Physical Design Flow

Labels:

删除文本文件中包含特定字符串所在行[script tips]

grep
-v, --invert-match select non-matching lines
grep -v "string" tee tmp.file
mv -f tmp.file original.file
Or
vi
:g/string/d

Labels:

Nov 20, 2007

[转]What is the difference between FPGA and ASIC?

  • This question is very popular in VLSI fresher interviews. It looks simple but a deeper insight into the subject reveals the fact that there are lot of thinks to be understood !! So here is the answer.
FPGA vs. ASIC
  • Difference between ASICs and FPGAs mainly depends on costs, tool availability, performance and design flexibility. They have their own pros and cons but it is designers responsibility to find the advantages of the each and use either FPGA or ASIC for the product. However, recent developments in the FPGA domain are narrowing down the benefits of the ASICs.
FPGA
  • Field Programable Gate Arrays
FPGA Design Advantages
  • Faster time-to-market: No layout, masks or other manufacturing steps are needed for FPGA design. Readymade FPGA is available and burn your HDL code to FPGA ! Done !!
  • No NRE (Non Recurring Expenses): This cost is typically associated with an ASIC design. For FPGA this is not there. FPGA tools are cheap. (sometimes its free ! You need to buy FPGA.... thats all !). ASIC youpay huge NRE and tools are expensive. I would say "very expensive"...Its in crores....!!
  • Simpler design cycle: This is due to software that handles much of the routing, placement, and timing. Manual intervention is less.The FPGA design flow eliminates the complex and time-consuming floorplanning, place and route, timing analysis.
  • More predictable project cycle: The FPGA design flow eliminates potential re-spins, wafer capacities, etc of the project since the design logic is already synthesized and verified in FPGA device.
  • Field Reprogramability: A new bitstream ( i.e. your program) can be uploaded remotely, instantly. FPGA can be reprogrammed in a snap while an ASIC can take $50,000 and more than 4-6 weeks to make the same changes. FPGA costs start from a couple of dollars to several hundreds or more depending on the hardware features.
  • Reusability: Reusability of FPGA is the main advantage. Prototype of the design can be implemented on FPGA which could be verified for almost accurate results so that it can be implemented on an ASIC. Ifdesign has faults change the HDL code, generate bit stream, program to FPGA and test again.Modern FPGAs are reconfigurable both partially and dynamically.
  • FPGAs are good for prototyping and limited production.If you are going to make 100-200 boards it isn't worth to make an ASIC.
  • Generally FPGAs are used for lower speed, lower complexity and lower volume designs.But today's FPGAs even run at 500 MHz with superior performance. With unprecedented logic density increases and a host of other features, such as embedded processors, DSP blocks, clocking, and high-speed serial at ever lower price, FPGAs are suitable for almost any type of design.
  • Unlike ASICs, FPGA's have special hardwares such as Block-RAM, DCM modules, MACs, memories and highspeed I/O, embedded CPU etc inbuilt, which can be used to get better performace. Modern FPGAs are packed with features. Advanced FPGAs usually come with phase-locked loops, low-voltage differential signal, clock data recovery, more internal routing, high speed, hardware multipliers for DSPs, memory,programmable I/O, IP cores and microprocessor cores. Remember Power PC (hardcore) and Microblaze (softcore) in Xilinx and ARM (hardcore) and Nios(softcore) in Altera. There are FPGAs available now with built in ADC ! Using all these features designers can build a system on a chip. Now, dou yo really need an ASIC ?
  • FPGA sythesis is much more easier than ASIC.
  • In FPGA you need not do floor-planning, tool can do it efficiently. In ASIC you have do it.
FPGA Design Disadvantages
  • Powe consumption in FPGA is more. You don't have any control over the power optimization. This is where ASIC wins the race !
  • You have to use the resources available in the FPGA. Thus FPGA limits the design size.
  • Good for low quantity production. As quantity increases cost per product increases compared to the ASIC implementation.
ASIC
  • Application Specific Intergrated Circiut
ASIC Design Advantages
  • Cost....cost....cost....Lower unit costs: For very high volume designs costs comes out to be very less. Larger volumes of ASIC design proves to be cheaper than implementing design using FPGA.
  • Speed...speed...speed....ASICs are faster than FPGA: ASIC gives design flexibility. This gives enoromous opportunity for speed optimizations.
  • Low power....Low power....Low power: ASIC can be optimized for required low power. There are several low power techniques such as power gating, clock gating, multi vt cell libraries, pipelining etc are available to achieve the power target. This is where FPGA fails badly !!! Can you think of a cell phone which has to be charged for every call.....never.....low power ASICs helps battery live longer life !!
  • In ASIC you can implement analog circuit, mixed signal designs. This is generally not possible in FPGA.
  • In ASIC DFT (Design For Test) is inserted. In FPGA DFT is not carried out (rather for FPGA no need of DFT !) .
ASIC Design Diadvantages
  • Time-to-market: Some large ASICs can take a year or more to design. A good way to shorten development time is to make prototypes using FPGAs and then switch to an ASIC.
  • Design Issues: In ASIC you should take care of DFM issues, Signal Integrity isuues and many more. In FPGA you don't have all these because ASIC designer takes care of all these. ( Don't forget FPGA isan IC and designed by ASIC design enginner !!)
  • Expensive Tools: ASIC design tools are very much expensive. You spend a huge amount of NRE.
Structured ASICS
  • Structured ASICs have the bottom metal layers fixed and only the top layers can be designed by the customer.
  • Structured ASICs are custom devices that approach the performance of today's Standard Cell ASIC while dramatically simplifying the design complexity.
  • Structured ASICs offer designers a set of devices with specific, customizable metal layers along with predefined metal layers, which can contain the underlying pattern of logic cells, memory, and I/O.
FPGA vs. ASIC Design Flow Comparison Other links

Labels: ,

Nov 14, 2007

a new gmail account for file sharing

I have created a email account[gmail file sytem] for file sharing.
password: ipcoretech.com
Powered By Gmail.com
I have uploaded the "gmail driver" in it,and everyone can login and download it.
Everyone can use this account by gmail dirver[maybe windows only] for sharing your files.

Labels:

Nov 10, 2007

Google搜索在工作上的应用技巧[ 转]

      Google良好的搜索和易用性已经得到了广大网友的欢迎,但是除了我们经常使用的Google网站、图像和新闻搜索之外,它还有很多其他搜索功能和搜索技巧。如果我们也能充分利用,必将带来更大的便利。这里我介绍几个很有用的搜索技巧,在平时搜索中可以结合使用。

  一、限定搜索范围的技巧

  1、文件类型

  有时候我们可能不需要搜索网页文件或者图片,我们可能想要搜索其他类型的问题,比如文档文件(Word,Excel,PPT),Flash文件,甚至是Google地图文件,我们都可以使用"filetype"功能来实现。

  比如我想搜索一篇关于最新加密技术的Word论文,使用Google搜索"filetype:doc 加密技术 "即可得到大量相关信息。我想搜索关于中国的Google Earth卫星图片,那么就在Google中搜索"filetype:kmz china"即可。

  2、指定网站

  有时我们进行网页搜索,想要在某一个指定的网站内搜索感兴趣的内容,这时候我们可以使用"site"功能来限定搜索的网站。

  比如,我想在新浪网上搜索关于世界杯赛程的消息,只需要用Google搜索"site:sina.com.cn 世界杯赛程"即可得到结果。

  如果你想把搜索结果限制在大学的网站之中,可以使用"site:.edu 关键词"。

  通过限定搜索范围的方法,我们可以更快更准确的搜索到我们想要的东西。

  3、其他限定搜索方法

  intitle:搜索关键词(intitle:关键字)只搜索网页标题含有关键词的页面。

  inurl:搜索关键词(intitle:关键字)只搜索网页链接含有关键词的页面。

  intext:搜索关键词(intext:关键字)只搜索网页body标签中的文本含有关键词的页面。

  二、写作辅助小工具

  Google有一些小工具,为我们的日常工作学习提供了很多方便之处。

  1、翻译工具

  Google本身带有中英文翻译的功能,只需输入一个关键词("翻译"或"fy"任选其一)和要查的中(英)文单词,Google会直接显示您要查的单词的英文(或中文)翻译。

  比如我们想要翻译"香蕉"这个词为英文,那么只需要在Google中搜索"翻译 香蕉"或者"fy 香蕉",返回的第一条记录就是翻译的结果。同样,我们搜索"fy banana"可以得到这个单词的中文翻译。

  2、学术词典工具

  我们有时候想要知道一个具体词汇的定义,可以使用"定义"或"define",接着键入一个空格,然后键入您需要其定义的词。

  比如,我们想要知道氨基酸是什么意思,只需要在Google中搜索"定义 氨基酸",就可以找到氨基酸的定义。

  三、改进工作效率

  做为一个公司员工,每天都要关注自己公司和竞争对手的最新消息,怎么才能在最短的时间内获得最多的信息呢?Google可以帮助你。

  Google 快讯是Google的新闻定制自动发送,用户可以定制自己需要的内容,Google会在设定的时间内(即时、每天、每周)给用户发送Google最新搜索到的新闻文章,非常方便,我们就可以用这个功能来跟踪自己公司和竞争对手的最新消息。

  例如我是一家做搜索的开发公司,我需要每天关注自己的竞争对手,因此我只要登录:http://www.google.com/alerts?hl=zh-CN,然后在"搜索字词"中输入"Google","频率"为每天,即可每天收到关于Google的最新消息,同样在"搜索字词"中输入"百度",可以获得百度的最新消息。

  当然,搜索关键字不只是公司,开动我们的脑筋,我们可以用这个工具跟踪任何信息,比如输入某个名人的名字,可以追踪这个名人的最新消息和新闻,搜索某个行业名称,可以追踪这个行业的相关新闻,搜索某个新闻事件,可以得到这个事件的最新报道。

  因此,我们只要灵活掌握和运行Google的搜索技巧,那会给自己的工作和学习带来相当大的提升,使得自己的事业能够更上一层楼。

Labels:

blogspot又不能访问了

很不幸blogspot又不能正常访问了,刚刚好了几天,我还以为以后都没问题了呢,还准备回归blogspot,看来还是不行
更郁闷的是现在blogger的ftp发布也出现了问题,这段时间yanzhi.org/blog/的内容也不能正常显示了
-_-

Labels:

Nov 6, 2007

New blog for backup

I have build a new blog for this one's backup.
http://digital-ic-design.blogspot.com/
And the new posts will be added at the same time from now on.

Labels:

Nov 5, 2007

Some Testing Glossary

Black box testing
not based on any knowledge of internal design or code. Tests are based on requirements and functionality.
White box testing
based on knowledge of the internal logic of an application's code. Tests are based on coverage of code statements, branches, paths, conditions.
Unit testing
the most 'micro' scale of testing; to test particular functions or code modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. Not always easily done unless the application has a well-designed architecture with tight code; may require developing test driver modules or test harnesses.
Incremental integration testing
continuous testing of an application as new functionality is added; requires that various aspects of an application's functionality be independent enough to work separately before all parts of the program are completed, or that test drivers be developed as needed; done by programmers or by testers.
Integration testing
testing of combined parts of an application to determine if they function together correctly. The 'parts' can be code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.
Functional testing
black-box type testing geared to functional requirements of an application; this type of testing should be done by testers. This doesn't mean that the programmers shouldn't check that their code works before releasing it (which of course applies to any stage of testing.)
System testing
black box type testing that is based on overall requirement specifications; covers all combined parts of a system.
End-to-end testing
similar to system testing; the 'macro' end of the test scale; involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
Sanity testing
typically an initial testing effort to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems to a crawl, or destroying databases, the software may not be in a 'sane' enough condition to warrant further testing in its current state.
Regression testing
re-testing after fixes or modifications of the software or its environment. It can be difficult to determine how much re-testing is needed, especially near the end of the development cycle. Automated testing tools can be especially useful for this type of testing.
Acceptance testing
final testing based on specifications of the end-user or customer, or based on use by end-users/customers over some limited period of time.
Load testing
testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the systems response time degrades or fails.
Stress testing
term often used interchangeably with 'load' and 'performance' testing. Also used to describe such tests as system functional testing while under unusually heavy loads, heavy repetition of certain actions or inputs, input of large numerical values, large complex queries to a database system, etc.
Performance testing
term often used interchangeably with 'stress' and 'load' testing. Ideally 'performance' testing (and any other 'type' of testing) is defined in requirements documentation or QA or Test Plans.
Usability testing
testing for 'user-friendliness'. Clearly this is subjective, and will depend on the targeted end-user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.
Install/uninstall testing
testing of full, partial, or upgrade install/uninstall processes.
Recovery testing
testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
Security testing
testing how well the system protects against unauthorized internal or external access, willful damage, etc; may require sophisticated testing techniques.
Compatibility testing
testing how well software performs in a particular hardware/software/operating system/network/etc. environment.
Exploratory testing
often taken to mean a creative, informal software test that is not based on formal test plans or test cases; testers may be learning the software as they test it.
Ad-hoc testing
similar to exploratory testing, but often taken to mean that the testers have significant understanding of the software before testing it.
User acceptance testing
determining if software is satisfactory to an end-user or customer.
Comparison testing
comparing software weaknesses and strengths to competing products.
Alpha testing
testing of an application when development is nearing completion; minor design changes may still be made as a result of such testing. Typically done by end-users or others, not by programmers or testers.
Beta testing
testing when development and testing are essentially completed and final bugs and problems need to be found before final release. Typically done by end-users or others, not by programmers or testers.
Mutation testing
a method for determining if a set of test data or test cases is useful, by deliberately introducing various code changes ('bugs') and retesting with the original test data/cases to determine if the 'bugs' are detected. Proper implementation requires large computational resources.

Labels:

Nov 1, 2007

set false path

A mistake in my work:
      In the  synthesis script, we use the script below to set false path between each clock.
set _all_clks [all_clocks];
foreach_in_collection _clk $_all_clks {
 foreach_in_collection _other_clk [remove_from_collection $_all_clks $_clk] {
  set_false_path -from $_clk -to $_other_clk;
 }
}
       However, there are  two clocks with the same source(frenquence&phase) but different clock gatin cell , and we think they are the same in the design. So we need reset them.
      reset_path -from A_CLK -to B_CLK;
      reset_path -from B_CLK -to A_CLK;
 

Labels: