注一:Eclipse现在稳定发布版本是
注二:在程序的开发过程中,重点参考了:
八进制:您的《GEF入门系列》博客是我这个程序的基础;
子在川上曰:您的《Eclipse从入门到精通》这本书给了我非常大的帮助;
中国Eclipse社区:这个社区解决了我的一些疑惑,虽然该社区人气好像不足;
感谢这些从来没见过面、却给过我帮助的人。
[名词解释]
流片(Tapeout):简单地说,就是把图纸上的设计(由IC设计公司来设计,如:我们公司)变成实实在在的芯片(让专门的芯片制造公司根据图纸来制造,如:中芯国际)的过程。
[需求]
我现在的公司是家IC设计企业,在芯片设计的流程中,最后一个环节是:流片。在把芯片拿出去流片前,工程师们会对准备流片的技术文件进行非常严格的验证、测试。虽然我们公司的某些产品在全世界都处于领先地位,但在验证芯片里的每个Pin、Pad、Chip的位置,及连线时,仍然没有非常好的工具,只能依靠工程师们的经验。这有可能会导致某些产品流片失败,而每次流片的最低成本都在几千美元以上。
因此,公司希望能做一个软件,把Pin、Pad、Chip及其它相关的数据输进去,能直观地把它们之间的关系表达出来,并按照一定的规则来自动进行验证,如果出现了错误,应该还可以对其进行直接地拖动、平移、旋转,以得到正确的结果,最后将结果输出为AutoCAD能打开的文件格式。
另外,该软件需要在设计工程师们的机器上运行,而他们的机器均为Solaris、Linux,因此,该软件需要能跨平台运行。
[实现]
1、由于需要跨平台(Windows、Linux、Unix),所以,只能选择Java;
2、Java下的编程平台,风头最劲的似乎只有Eclipse了,NetBeans 5.0当时还没有发布(这个软件是三个多月前开工的,由于需求的多变性,才完工没多久),在此之前,我在2001年接触过它的前身Visual Age,但对Eclipse只是听说过;
3、OK,开发平台、语言都选择好了,就可以开工了。
4、具体开发过程,我这里就不多说了,主要是也没什么好说的,把八进制的那一系列文章看完就差不多会了,再次感谢八进制。
5、AutoCAD可以支持两种格式的文件:DWG和DXF。其中,DWG是二进制格式,DXF是ASCII文件格式,签于DXF格式的资料比较多,因此,我在输出文件时,选择了DXF格式(简单形状、文本的输出并不难,写几个小函数就搞定了),其格式说明,附在每个版本的AutoCAD帮助文件中。
[运行截图]
1、在Window运行如下:
2、在Red Hat AS4(GTK)运行如下:
3、在Solaris 8(Motif SPARC)运行如下:
BTW:为了测试该软件在Solaris平台的运行情况,我曾经在开发机器上安装了一个VPC2004,并用2005年第8期的《程序员》杂志赠送的Solaris 10 for x86的DVD光盘安装成功。
说实话,Solaris 10确实是个非常优秀的操作系统,高性能就不用说的,而且其中的Java Desktop 3界面非常精致,操作也相当方便,没安装过的朋友,可在此看看界面,最最重要的是:Solaris 10是开源的。
[后记]
在开发过程中,碰到了几个有意思的问题,特记录如下:
1、程序在Eclipse
java.lang.RuntimeException: No application id has been found.
但如果用Eclipse 3.2版的程序来打包,得到的可运行程序,就能正确运行(八进制的例子里用的是Eclipse 3.2)。
原因(应该是一个Bug):
我把在网上查找了大量的资料,虽然也有很多人碰到这种问题,但他们的方法都不能解决我的问题,百思不得其解。后来,实在是没办法了,就把用
由于在程序里使用到EclipseUML来建模,并生成了相应的xxxModel、xxxxModel.edit包。但用
解决办法:
自然是手工选择所需要的文件,然后再打包,即可
2、该程序需要在Unix/Linux下运行,所以,在程序里显式地写程序路径时,注意Windows和Unix/Linux的路径区别,前者支持“/”、“\”两种,而后者只支持“/”一种。
3、在插入了RCP Delta包来Export多平台包时,Eclipse
两种解决办法:
A、升级你的Eclipse到最新版本,至少是3.2RC5以后的版本;
B、先下载Eclipse-RCP-SDK-
[总结]
第一次使用Eclipse做项目,感觉Eclipse还是相当不错的,界面美观友好,编辑器功能强大,操作方便,至少有GEF 这个框架(.Net下有类似框架吗?知道的朋友还请通告一声),而且如果出现了什么问题,可以自己去看源代码,修正错误(.Net就只能等MS的升级包了)。
但是Eclipse也有不太舒服的地方,比如:需要自己去手动配置开发环境,自己去找你并不熟悉的、但需要对应版本的开发包,而且有较多的Bug(上面两个Bug花费了我相当长的时间,.Net里至少还没碰到这种低级的、但又相当严重的Bug),虽然它升级很快。
而且因为升级太快,也造成了我的困惑:我有必要每几个月就升级一次我的编程平台吗?升级平台毕竟是件比较麻烦的事情,说不定其中有些包的API就不再被支持了,而我一个项目都还没做完呢。但如果不升级,某些功能又享受不到,某些Bug也还得继续存在,两难呀……
[幸好我的下一个项目是.Net,可以等Eclipse 3.2出炉再说了]