SPICE簡史

??????? 如今每一天都有不知其數的半導體芯片設計公司與設計驗證工程師,在用著電路仿真軟件SPICE。SPICE廣泛應用在仿真模擬電路(例如運放Op Amp,能隙基準穩壓電源Bandgap Reference,數模/模數轉換 AD/DA等),混合信號電路(例如鎖相環PLL,存儲器SRAM/DRAM,高速輸入/輸出接口high-speed I/O),精確數字電路(例如延時,時序,功耗,漏電流等),建立SoC的時序及功耗單元庫,分析系統級的信號完整性,等等。作為最早的電子設計自動化軟件,它今天仍然是最重要的軟件之一。可以說沒有SPICE就沒有電子設計自動化這個產業,也就沒有今天的半導體工業。它的市場超過上億美元。所有這一切,都是從1970年加州大學伯克利分校電機工程系的一堂課開始的。

SPICE的誕生

??????? 時間回到1970年,在加州大學伯克利分校電機工程與計算機科學系(UCBerkeley , Dept. EECS),Ron Rohrer 教授給七個研究生上“電路綜合”課。Rohrer教授那時剛剛從仙童半導體公司(Fairchild Semiconductor)返回伯克利,沒有時間準備教材。所以在第一堂課,他就宣布:學生們一起寫一個電路仿真程序。他跟系里的管教學的主任Don Peterson教授達成一個協議:只要Peterson教授認可學生們寫的仿真程序,他們就全部通過,否則的話,他們就全部不及格。這七個學生中有一個還是從機械系來的。他感到十分委屈:教授啊,俺啥電路都不會,俺就是來學電路的。這倒好,電路沒學到,反而要去寫電路仿真程序。這可咋辦啊?Rohrer教授想了想,說沒關系。雖然電路你不懂,但你的數值分析不是很厲害嗎?OK,你就負責解方程這塊吧。最后的結果證明了恰恰是學生們自己開發的解稀疏矩陣的模塊是一個亮點,它使得可處理的電路規模成倍的增大。為什么這么說呢?如果你學過數值方法,你就知道一般解方程組用的是高斯消元法。它的復雜度是O(n^3)。也就是說,電路規模增大一倍,你的運算時間就要增大到8倍。當時的電路仿真程序最多可以仿真10個晶體管。超過這個數,不是你的預算被燒沒了,就是你的耐心被耗沒了。但是,學生們注意到從電路搭出來的矩陣有個特點,就是它的稀疏性。一個電路矩陣里很多元素都是0(意味著兩個電路節點之間沒有連接關系)。既然是0,那就沒有必要去存儲和計算它了。這樣一來,存儲量和計算量大大減少了(是啊,連小學生都知道任何數乘0還是0。你沒事兒就別搞一大堆乘0的運算了)。

??????? 多SPICE里面的基本要素都來自于Rohrer教授指導的這一堂電路分析課的項目,包括上面講到的解稀疏矩陣的模塊,還有隱式積分算法的使用使得瞬態分析更加穩定。并且,程序里加入了自帶的半導體器件模型,用戶只需要給出一組模型參數,用不著自己提供器件模型的FORTRAN模塊了。

??????? 這七個學生推舉Laurence Nagel為代表,由他負責向Peterson教授匯報結果。這個結果就是CANCER。沒錯,它的意思就是“癌癥”。它是“不包括輻射的非線性電路計算機分析”(”Computer Analysis of Nonlinear Circuits, Excluding Radiation”)的縮寫。不要忘了,這是在一個叛逆的時代。當時絕大部分的電路分析軟件來自于大公司與政府/軍方的合同開發。在冷戰和核威脅的環境下,政府/軍方要求這些軟件都具有分析電路抗核輻射的能力。伯克利是反戰的大本營,學生們自己開發的程序當然要跟政府/軍方的要求對著干了。

??????? 有同學可能會問:為什么要開發一個電路仿真程序?呵呵,要知道在這之前,人們分析電路,要么是用筆和紙,要么就要搭電路板(bread board)。Peterson教授就被學生們稱之為“信封教授”,因為他認為電路分析用個信封的背面來做就足夠了。但隨著電路規模的增大,用筆紙變得越來越不可能,搭電路板又不能精確反應芯片上的電路特性,而且費用也越來越高。因此,用軟件來做電路仿真就變得日益迫切了。

??????? 當課程結束,Nagel向Peterson教授匯報CANCER之后,Peterson教授給予了全心的認可。學生們都通過了!CANCER成了Nagel的碩士論文課題。它在伯克利被很多本科生及研究生使用,并且給了大量的建議去改進它。呵呵,都說學生是最好的“小白鼠”,這話果然不假(再插一段話:基于這堂課的巨大成功,Rohrer教授后來又用同樣的辦法試了幾堂課,但都失敗了。他自己總結說,是因為有Nagel,伯克利的那堂課才成功了。所以,如果沒有Rohrer教授那樣的功力和Nagel那樣天分的學生,SPICE也不可能從一堂課里誕生出來。)

??????? 到了1971年的秋天,Nagel在伯克利又開始了他的博士生生活,這一回是在Peterson教授的指導下了。(在這之前,Rohrer教授離開了伯克利到工業界去發展。原因嘛,據說Rohrer教授與Peterson教授在是否要公開CANCER的源代碼上有不同意見。Rohrer教授后來又回到了學術界,在卡內基-梅隆大學(CMU)做教授,并指導開發了AWE,這是后話。)

??????? Peterson教授給Nagel的第一個任務是給程序起個新名字。確實,CANCER太難聽了,誰都不喜歡。Nagel花了天知道多長時間才想出來這樣好聽的,也是我們現在還在用的名字:SPICE(Simulation Program with Integrated Circuit Emphasis)。(所以,同學,如果你要寫一個新程序,創建一個新公司,生一個小孩,一定要給她/他起個好聽的名字。)1971年被正式認定為SPICE誕生的年份。

981de455-0d32-4f0f-ab75-3c14d6a8c93e

9d8134b8-c42a-4f2d-ab73-4baaa1ba1dfa

850f7a1e-7066-44db-bfb9-b45da842a0a4

Nagel當年在伯克利的照片

Rohrer教授

Peterson教授

??????? SPICE還是開源代碼的先驅。當時也有開源代碼,但都沒有太大的商業價值。SPICE就不同了。有人已經看到它的商業價值,但Peterson教授堅持要把代碼開源(我們都得真心的感謝Peterson教授)。任何人只要花20美元的手續費,就可以得到SPICE的源代碼(當然,在冷戰時期,SPICE被禁止出口到政府認為的“共產國家“)。有人會問,那這樣一來,伯克利是不是損失了一大筆錢呢?事實并非如此。伯克利的SPICE幫助數字設備公司(DEC)賣出了很多臺VAX機。反過來,DEC給伯克利電子系捐贈了一千八百萬美元(這可是二十年前的數目,考慮到通貨膨脹,你可以想象現在值多少錢)。這么多錢可不是一個學校賣代碼能獲得的。所以,做好事終究還是會得到好報的。

SPICE2和SPICE3

??????? 在70年代初期,伯克利電子系用的計算機是CDC6400大型機,它的運算能力相當于286(它的時鐘頻率是10兆赫,可它的成本是六百萬美元。再看看今天你手中的iPhone,它的時鐘頻率超過1000兆赫,成本不到六百美元–這是一百萬倍性價比的差別!)分給每個學生的主內存白天為256K字節。到了晚上人少,你就可得到384K。運行一個不算太大的電路仿真,用Nagel的話來說,就像把你11碼大的腳穿進嬰兒的鞋里–你得想盡一切辦法節省內存。能仿真的最大的電路規模也就是25個雙極晶體管(相當于50個電路節點)。而且,那時候SPICE還只有雙極晶體管模型。71年的秋季,從貝爾實驗室來到伯克利的David Hodges教授帶來了第一個MOSFET模型: Shichman-Hodges模型。如果你用過SPICE(并且年頭足夠多的話),你應該知道這就是Level1 MOSFET 模型。它是所有MOSFET模型的鼻祖(下面我們還會講到MOSFET模型的)。

??????? 1975年Nagel從伯克利博士畢業。他的論文“SPICE2:A COMPUTER PROGRAM TO SIMULATE SEMICONDUCTOR CIRCUITS”, 成為了EDA行業被引用最多的文章。

??????? SPICE2這個版本基本上奠定了今天電路仿真程序的基石,其中包括:改進的節點分析法(Modified Nodal Analysis),稀疏矩陣解法(Sparse Matrix Solver),牛頓-拉夫遜迭代(Newton-Raphson Iteration),隱性數值積分(Implicit Numerical Integration),動態步長的瞬態分析(Dynamic Time Step Control),局部截斷誤差(Local Truncation Error),等等-- 說太多技術細節了,還是接著講故事吧。

??????? Nagel畢業后去了貝爾實驗室。從此以后,SPICE2的改進就由Nagel的室友,Ellis Cohen,繼續進行下去。Ellis是個計算機編程能手。用當時周圍學生的話說,他就是一個長成人形的計算機。是他(以及后來的AndreiVladimirescu和Sally Liu)把學校里開發的程序SPICE改造成了實用的SPICE2G6。在SPICE的早期開發中,他是個無名英雄。今天工業界里的很多商業SPICE就是基于SPICE2G6開發出來的。 這是Nagel博士論文的封面。

1509121148975502fbe6324943[1]

??????? 你可以用下面的鏈接下載這篇論文: http://www.eecs.berkeley.edu/Pubs/TechRpts/1975/9602.html 如果你想了解SPICE的核心秘密,就下載一份好好讀讀吧!

??????? 最早的SPICE2沒有用戶界面。它的運行是批處理方式。也就是說,你準備好了你的電路描述和仿真命令,就把它們提交給主機系統里。然后呢?然后你就可以下班回家了(多好啊)。因為你的幾十個(或幾百個)同事也在做著同樣的事。這就好像在一個銀行里只有一個辦事員(主機),而有幾百個顧客(提交的仿真任務)排著隊。這個辦事員動作又慢(286的速度)。所以,等第二天早上上了班再看結果吧!(下面在講HSPICE時我們還會講到這個情況)。

??????? SPICE2的輸入是用打卡。你可能會問:什么是打卡啊?呵呵,祝賀你年紀夠小。對那些年過半百的人,最初接觸到的計算機輸入界面就是像下面這樣的卡:

1509121150aefe2791d9879d41[1]

??????? 你把你的電路描述及仿真命令打在一疊這樣的卡上,然后放到讀卡機里。你可能聽說過SPICE的輸入叫“SPICE DECK”,這個名字就是從這疊卡來的。

??????? SPICE2的輸出是行打印機。是的,就是用下面這樣的打印機打出仿真結果在紙上(想象一下那時消耗了多少紙張)。

150912115130c72bbc46ead4d7[1]

??????? 你也可以打印輸入輸出的信號波形。每個波形是用不同的字符畫的。像下面這樣(看著是不是很粗糙啊):

15091211539560b9f4c826ffff[1]

??????? 有同學讀SPICE手冊時會看到一個奇怪的選擇項叫”NOPAGE“。這是因為SPICE的輸出在頁與頁之間的折線處會加入一個分頁符,留出空白。這個選項就是要求不要停止打印的。這樣一來,波形就不會因為換頁而在頁與頁之間斷掉了。隨著行打印機的消失,這個選擇項也進入了歷史。呵呵,如果有誰知道這個選項,那他的“年齡”至少在40歲以上。

??????? 后來SPICE2的輸入/出也進化成了文件輸入/出,像下面這樣:

1509121154eff3124d78255689[1]

??????? 到了八十年代,SPICE2已經遍及了各個大學。但它的問題也顯現出來:FORTRAN代碼太難維護,加新的器件模型需要改動的地方太多,等等。在此同時,C作為一種新的程序語言正方興未艾。于是,用C語言重新寫SPICE就被提到了議事日程上來。這個任務被伯克利的Thomas Quarles在89年的時候完成了。比起SPICE2來,SPICE3增加了用戶界面,你可以使用命令,甚至命令串來控制程序。另外,還增加了圖形界面看波形。更重要的是,SPICE3的程序構架更加清晰,更加模塊化。維護及修改起來更加容易。八十年代也是計算機硬件突飛猛進的時代:大型機(mainframe)被工作站(workstation)取代。UNIX及架構在它上面的C-shell和X-window成為軟件開發及應用的基本框架。另外,個人電腦(PC)也越來越普及。這些都為SPICE的廣泛應用打下了堅實的基礎(下面我們講商業SPICE時會提到)。 這是Quarles論文的封面。

15091211559a3053900f177d4a[1]

??????? 同樣,你可以用下面的鏈接下載Quarles的論文http://www.eecs.berkeley.edu/Pubs/TechRpts/1989/ERL-89-46.pdf?

??????? 下面是SPICE3(版本3f5)的執行語句,注意它是交互式的。每一個“Spice->”后面是一個Spice3的命令。比如“source”就是把電路讀入,“run”就是運行,”display”就是顯示,”quit”就是退出。

150912115615aa0f6765e2bf05[1]

??????? SPICE3自帶了一個圖形模塊nutmeg。下面是nutmeg顯示的波形,是不是比SPICE2的行打印的字符波形好看多了?

1509121157679e43ddba1fb6b3[1]

??????? 自從上世紀九十年代后,學術界SPICE的發展基本就停止在SPICE3f5這個版本了。這是不是意味著SPICE停滯不前了呢?非也。至少在兩個方向上SPICE還在一直發展:一個是器件模型(特別是MOSFET模型),另一個是商業SPICE程序。(這里值得提一下,有一批SPICE的愛好者及高校把SPICE3f5接過來,并整合了其他幾個開源軟件(xspice,cider, gss, adms,等),建成了ngspice。Ngspice也在緩慢的進化著,但比起商業SPICE進化的速度慢多了。你可以在sourceforge上找到ngspice。)

SPICE中器件模型的演變

??????? SPICE里面自帶了很多模型。像無源元件電阻,電容,電感等等,以及有源器件二極管,雙極管等。但花樣最多的,變化最頻繁的,復雜度最高的,當屬MOSFET的模型了。這主要是因為從七八十年代以后,MOSFET的工藝因它的低功耗,高集成度而變成了主流。那時候還是個半導體工業百花爭鳴的年代。很多半導體公司如雨后春筍般的冒出來(就像現在的社交媒體公司一樣)。幾乎每一家公司都在工藝及器件上有點自己的絕活,所以集成電路公司大多是個獨立器件制造商(IDM)。這就造成了MOSFET的模型也層出不窮。誰家的SPICE支持的MOSFET模型越多,誰的SPICE用戶群就越大。這點我們在下面HSPICE的章節中還會提到。

??????? 前面我們說過SPICE2中加上了MOSFET Level 1的模型。等到SPICE3出來的時候,里面已經加入了Level2, 及Level3模型。到了九十年代,又加入了著名的BSIM(Berkeley Short-channel IGFET Model)模型。可以這樣說,現在所有的foundry用的模型都來自于BSIM家族。為什么在那么多MOSFET模型中,BSIM勝出了呢?

??????? 我們知道,SPICE是用來解含有非線性器件的電路方程的。解非線性方程的一個有效方法就是牛頓迭代–把非線性方程在某個點給它線性化,然后逐次逼近最終解。這個過程有點像倆個宇航飛船對接– 如果對方的接口在你的左邊,你就往左偏一下。如果你偏多了,對方的接口在你的右邊了,你就再稍往右偏點,直到最后倆個接口對準鎖定。但這里面有個要求:就是非線性曲線的一階導數要連續。如果不連續的話,就好像喝醉酒的人來控制飛船對接,忽左忽右,或者根本就掉過頭來,不知東西南北,上下左右了,如何能對接上呢?不幸的是,很多早期的MOSFET模型(包括Level1,2,3)都有這個問題–模型的電流曲線的一階導在工作區域內不連續。這是因為人為的把器件分成了不同的工作區域(呵呵,如果你是學器件的,你應該知道截止區,線性區,飽和區)。不同區之間能保證電流連續已經不錯了,哪還去管它的導數呢!這樣做的后果就像管對接的人喝醉了酒(呵呵),沒法瞄準目標,最后導致SPICE不收斂(non-convergence),或時間步長太小(Time Step Too Small – 這有很大可能也是不收斂造成的)。

??????? 早期的BSIM模型還保留了工作區域的觀念。但在不同的區域之間加入了平滑過渡曲線,以保證電流曲線及其一階導的連續性。在它后來的版本中,就徹底拋棄了工作區域的觀念–干脆只用一個(連續且可導的)曲線來代表整個工作區域里的特性。這樣就從根本上解決了不連續的問題。BSIM家族中最成功的代表是BSIM3v3(HSPICE中的Level49)和BSIM4v5(HSPICE中的Level54)。從此以后,再也沒有其他的模型能出其右。它們倆也是工業界的MOSFET器件模型標準。BSIM3v3跨越了亞微米的工藝(0.3微米至0.13微米,大致從1993年到2000年),BSIM4v5跨越了深亞微米到納米的工藝(90納米至20納米,大致從2002年到2012年)。

??????? 你可能會問:這么好的器件模型是誰做的?猜一下–對了,還是伯克利。是伯克利電子系器件模型小組。它的掌門人就是胡正明教授(Prof. Chenmin Hu)。

1509130224e4dc561aa0fe054a[1]

??????? 今天的SPICE開發者要感謝胡教授。如果BSIM不是工業標準,那你就得像HSPICE一樣加幾十上百個MOSFET模型。不光工作量大,容易出錯,還有很多內部的模型人家還不愿意給你呢(參見下面Smart-Spice的故事)。而現在,你只要加一、二個開源的BSIM標準模型就可以覆蓋絕大部分用戶了。

??????? 有同學要問:現在的最新工藝不是已經到了16納米,14納米,以至10納米,那這些工藝的器件結構與模型又是什么呢?答案已經有了:還是胡教授的小組開發的FinFET(也叫3維MOSFET)模型。實際上,早在99年胡教授就發表了FinFET的文章。因此他也被稱作FinFET之父。他同時是美國和中國的科學院士。同學,如果你的一生中能達到以上其中的任何一項,是不是就可以笑傲江湖了呢?

??????? 就像半導體工藝由簡到繁的過程一樣,MOS器件模型也從Level1的幾個公式/幾十行代碼,發展到BSIM的幾百個公式/上萬行代碼。這里值得提出的一點,與BSIM3/BSIM4模型不同的是,FinFET模型不是用C語言,而是用Verilog-A語言寫的。這直接導致了把它加到SPICE3中的困難。雖然很多商業SPICE已經支持Verilog-A,但現在開源的SPICE3卻還沒有做到(這里插一句:基于SPICE3的ngspice當中包含了支持Verilog-A的開源編譯器ADMS。但要做到完全自動編譯FinFET模型這樣重量級的模塊還有一段路要走)。也就是說,雖然FinFET模型是開源的,但現在它的仿真載體并不開源。這種現象與早期的SPICE研發反了過來。現在學術界落到了工業界的后面。看到這兒,學術界的同學是不是要深思一下呢?

商業SPICE的演變

??????? 前面我們提到當CANCER出來的時候就有人意識到了它的商業價值。毫無疑問,SPICE的出世必定會有人把它商業化。事實確實如此。八九十年代是商業SPICE出現的高峰期。至少有幾十個SPICE的變種冒出來。有的獲得了巨大成功,有的毫無聲息的消失了,有的還在慘淡經營著。同學,如果你想創業,這里面有太多的經驗和教訓了。

  • HSPICE

??????? 我們先來說說HSPICE。 記得我們前面講過的批處理運行吧。在當時的大公司里,這是電路仿真標準的運行方式,但這么做的效率太低了。設計者需要盡量短的時間看到仿真結果,然后修改電路參數再做仿真。如此多次以達到最佳結果。有倆個孿生兄弟Shawn Hailey及Kim Hailey,當時都在AMD做設計,看到了這里面的問題。與其讓幾百個客戶排隊等一個銀行柜員,為什么不讓每一個客戶都有一個柜員呢?問題就是商機。他們決定跳出來開自己的公司。于是78年,Meta-Software成立了,他們把改進的SPICE變種取名為HSPICE(你現在明白了吧,為什么要以H開頭?這可是兄弟倆姓的第一個字母啊)。他們把SPICE2從大型機移植到了VAX小型機上,后來又移植到Sun工作站上。就這樣,借著計算機硬件改朝換代的東風,越來越多的公司開始使用HSPICE了。直到如今,這個HSPICE成了工業界的”金標準“。只要你做個仿真器,人們一定會跟HSPICE比結果的。而且,在SPICE前面加一個字母成了時尚。到今天,有人開玩笑說A-SPICE一直到Z-SPICE都已經被人用過了(當然,HSPICE仍然是最出名的)。

??????? 有人可能會問:要是我當時也把SPICE移植到小型機上,我是不是也可以成功?呵呵,成功的要素有很多,光用一條是遠遠不夠的。比如說用戶的反饋就是相當重要的一條。舉個例子,HSPICE是第一個把器件模型庫卡(.LIB)和結果測量卡(.MEASURE)做進去的。像這樣的例子還有很多。這些雖然不是什么革命性的技術創新,但它們很實用,能大大提高用戶的使用效率。甚至某些時候,對用戶來說,這樣的小改進比創新的算法更重要。

??????? 前面我們提到了七八十年代有很多的MOSFET器件模型。HSPICE把能拿到的器件模型都收進去了。所以,HSPICE的MOSFET器件模型是最全的(不信的話,你就去拿本HSPICE的MOSFET模型手冊讀一下–注意,它是一本獨立的手冊。也就是說,光是它里面的七八十個MOSFET模型就是一本書了)。但這樣還不夠。Meta還開發了自己的MOSFET模型:Level28。他們跟用戶的工藝線緊密聯系。在工藝線流片之前,相應的器件模型參數已由芯片加工廠(foundry)提供給芯片設計者了。如果你是設計者,你還能不用它嗎?這樣做的結果直接導致了HSPICE用戶群急速的擴大。就像滾雪球一樣,一旦超過了臨界質量(critical mass),它自己就會越滾越大。據Meta-Software的人說,在公司巔峰的時候,他們的銷售員就是一臺傳真機。你只要把傳真機號碼告訴客戶,他們就把訂單發來啦(那時候的錢真好賺啊,當然公司里肯定不止一臺傳真機)。從78年成立到96年這18年期間,公司一共賣出了一萬一千多套HSPICE,它的年成長率達到了25-30%。

??????? 1996年Meta-Software被Avant!收購。到2001年,Avant!又被Synopsys收購。關于Avant!的故事有很多。這個公司(包括它的頭Jerry Hsu)就像EDA業界的一匹黑馬。它的故事足可以寫另一個長篇了。這里且按下不表。

??????? Meta-Software兄弟倆中的老大,Shawn Hailey,已于2011年去世。在此之前,他把自己的名字改成了Ashawna Hailey。

1509130850515ded38904644e3[1]

  • PSPICE

??????? PSPICE像HSPICE一樣,PSPICE的故事也跟它的名字有關。首先,這第一個字母“P”并不是其創始人的名字。事實上,創始人的名字Wolfram Blume里根本沒有字母“P”。那這字母“P”到底是什么意思呢?對了,它就是PC。PSPICE的發展跟PC的發展是密不可分的。但這并不是PSPICE的初衷。

??????? 時間回到1984年,那時Wolfram Blume從加州理工(CalTech)畢業加入南加州一家半導體公司。工作中他聽到很多抱怨,說公司內部的SPICE速度太慢了。這位老兄也不含糊,立馬對其SPICE來了一個詳盡的分析。結果發現,大部分時間花在了算MOSFET模型的方程上(記得前面我們講的MOSFET的復雜性吧)。他一想,如果能用硬件來并行處理這些方程,豈不就可以加快仿真速度了嗎(呵呵,又是一個看到商機的主)?恰恰那個時候英特爾推出了支持硬件并行的8085/8086/8087。說干就干。這位老哥創立了MicroSim公司。又是在這時,IBM推出了基于Intel芯片的IBM-PC。另一個機會又來了:只要把SPICE從大型機上移植到PC上就行了。這事兒比起第一個事兒簡單太多了。可是,人們當時認為PC就是個游戲機而已,沒人拿它來做什么正經事兒(呵呵,看看現在不還是這樣嗎?)。所以這位老哥并沒有把這第二件事看得太重,而是集中絕大部分精力和資源去做硬件并行。

??????? 當時的IBM-PC有640KB內存。最大的數組只允許64KB內存。而SPICE是用一個巨長的數組來存儲所有的數據。把SPICE的數據放到IBM-PC的結構,用這位老哥的話說,就像把一只鯨魚塞進一個金魚缸里。但他們做到了(中間略去他們N個睡不著的工作之夜)。并行硬件的確加快了方程的處理,可他們也快沒錢了。這位老兄忽然想到,咱不是把SPICE移植到PC上了嗎?咱就先賣著這個軟件,用賣它的錢繼續開發咱的并行硬件。就這樣,PSPICE就開始在PC上出現了。

??????? 最初這位老兄想賣硬件加速器的PSPICE版本,可結果恰恰相反,倆年后,純軟件的PSPICE賣出去了一千多套,而硬件加速器只賣了倆套。到這時候,這位老兄也明白了。做硬件吃力不討好,市場并不需要。他把賣出去的倆套硬件加速器又自己買了回來(當然又半賣半送給人家N套純軟件的版本)。

??????? 同學你看,一個高新復雜的技術并不一定會做出一個賣座的產品。反過來,一個貌似簡單的技術可能很受市場的歡迎。另外,PSPICE雖然不是賺錢最多的,但它的用戶數絕對是最大的(遍及全世界五大洲)。你可以下載一個免費的PSPICE用。當然,只限于十個晶體管。但這對一般學生的學習來講,大部分情況下已經夠用了(想一想當年的大型機也就只能算這么多)。你如果在網上搜一搜,就會發現阿拉伯語(以及其他語言)的PSPICE教材。你如果是在校生的話,很可能也在用PSPICE。 下面是PSPICE第二版的封面。

1509130851ecb6421a938ec04d[1]

??????? MicroSim1998年被OrCAD收購。OrCAD在2000年又被Cadence收購。

??????? Spectre話說89年,伯克利畢業了最后一批做SPICE研究的學生。其中一個叫Ken Kundent。Ken非常有才氣。他在伯克利的研究成果后來成為了安捷倫的微波仿真軟件。同時他的傲氣也不小。在加入了Cadence后,他看到HSPICE賣的很火,就決定做個新的仿真工具去取代它。這就是Spectre。據說他用了倆個星期就寫出了第一個版本(呵呵,不愧是伯克利SPICE大本營出來的)。SPECTRE比HSPICE要快倆三倍,還具有更高的精度及更好的收斂性。但它并沒能取代HSPICE。為什么呢?一個原因是兼容性。SPECTRE的輸入格式跟HSPICE有很大不同。Ken計算機編程的功底很深,他設計的Spectre的輸入格式像C語言一樣。雖然從計算機語言角度看,Spectre的輸入比HSPICE的輸入更規范,但SPICE的用戶是電路設計者,他們才不管你的語言多么優美,只要好用就行。另外,如果你是個電路設計者,花了幾年功夫好不容易才學會了一種語言格式,用它已經寫了成百上千個電路網表,而且它們都工作的好好的,為什么要去換成另外一個呢?另外,還有一個更重要的原因,就是用戶對HSPICE的信賴。這種信賴不是一時半會兒就能建立起來的。它是經過幾十年,成千上萬遍仿真,幾百次tapeout(送出去流片)才能形成的。怎么能說換就換呢?

??????? Ken琢磨著,既然更快更好還沒辦法取代SPICE,那我們就得做點SPICE沒有的東西。做什么呢?恰好在九十年代中期,一種標準的設計語言VHDL開始向模擬電路擴展,這就是VHDL-AMS(VHDL的模擬電路及數模混合電路描述語言)。(這里再插一句,最早的數模混合電路描述語言是MAST,它是Analogy公司的仿真器Saber里面使用的。VHDL-AMS是基于歐洲Anacad公司開發的HDL-A語言發展而來的。后來Anacad的仿真器成為Mentor的Eldo)。但當時還沒有Verilog的AMS擴展(原因是VHDL主要在歐洲使用。而Verilog主要在美國使用)。Ken就想,好吧,我們也來做個標準的設計語言到Spectre里。這就是Verilog-AMS(Verilog的模擬電路及數模混合電路描述語言)。不過這事兒說起來容易做起來難。首先,既然你是標準,那就要大伙兒都同意。讓大伙兒都同意的事是要花時間的,沒那么快。其次更重要的,是你要讓模擬電路設計者來學習并使用這個語言。這可是比登天還難的事兒。如果你是一個模擬電路設計者,你想想你在學校的課本上看到的是運放的電路還是它的描述語言?當然是電路了。至少到今天為止,還沒有一本模擬電路的教科書是只用描述語言的。你再看看數字電路的教材,幾乎全部都是VHDL或Verilog描述語言(呵呵,如果你還用晶體管來設計數字電路,那你的年齡夠大了)。另外,當你做模擬設計的時候,你是在搭晶體管電路呢,還是在寫描述語言?對模擬電路設計者來說,用語言而不用電路來做設計是不可想象的。反過來,對數字電路設計者來說,用電路而不用語言來做設計也是不可想象的。

??????? Spectre-AMS做出來后,Ken發現當時的感興趣者寥寥無幾(呵呵,這哥兒們專找硬骨頭啃)。那怎么辦?在公司做產品是要賣錢的。Ken有點兒絕望了。這時,他想到了回去做他在學校做的老本行:射頻電路仿真。至少這個功能別的SPICE還沒有。他把這個想法告訴了當時Cadence的市場經理Jim Hogan。Jim做了個市場調查。那時射頻電路設計市場幾乎不存在,只有幾家做鎵砷電路的算搭點邊兒。當Jim把這調查結果告訴Ken,Ken也無可奈何的聳聳肩。Jim對Ken看了好一會兒,說,管它呢,你就做去吧。誰知道這一次卻是歪打正著了。九十年代中后期正是無線通信市場騰飛的時候。很多在學校用Spectre-RF的畢業生加入了新的做射頻電路芯片的設計公司。這些公司必須要用Spectre-RF做射頻仿真。而Spectre-RF是Spectre的一個選項。因此,Spectre也就借著Spectre-RF的東風開始流行起來了。后來,HSPICE和Smart-Spice也跟風在自己的SPICE中加進了RF的選項。這也算是Spectre對SPICE的功能擴展做的貢獻吧。

150913085392b99d8e65458055[1]

Smart-Spice

??????? Smart-Spice是Silvaco公司的產品。說到Silvaco,就不得不說它的創始人Ivan Pesic。Ivan來自黑山共和國(Montenegro歐洲巴爾干半島的一個小國家)。像所有第三世界國家的窮學生一樣,通過自己的勤奮努力來到美國。來美國之后,他先開了一家修車店。直到攢夠了錢,才在1984年成立了Silvaco。他有一個兒子。可能是年幼時受了老爸的修車店的熏陶,決定長大了當個汽車修理工。因此學習也不上進。怎么讓這小子好好學習呢?簡單。有一天,老Ivan把兒子帶到了圣荷塞(SanJose,硅谷一大城市)一個最破的修車店的馬路對面,對兒子說:你就坐在這兒,看看汽車修理工一天的工作是什么樣的。自從那一天結束以后,兒子的學習成績就全變成A了。

??????? 說到Ivan Pesic,我們還不得不說他打官司的故事。Silvaco的歷史上與N家公司打過官司(而且大部分都贏了)。在此我們只講講與Meta-Software(后被Avant!并購)的官司。話說八十年代末到九十年代初,Meta-Software和它的HSPICE如日中天,這其中它自己的Level28模型起了重要作用。Silvaco最初的產品是TCAD(TechnologyCAD),并不是SPICE。這時它也準備開發自己的Smart-Spice,但它拿不到HSPICE的Level28模型。怎么辦?Silvaco采用了一個瞞天過海的迂回戰術。Silvaco有個不錯的模型參數提取軟件叫Utmost。它就找到Meta-Software說,你看,如果把你們的Level28模型公式放到我們的Utmost中,就會有更多的用戶用你們的HSPICE。Meta一想也對,就把Level28模型給了Silvaco。沒成想,過了二年,Silvaco自己的Smart-Spice出來了,而且里面還帶著Level28模型。這下Meta-Software氣壞了。就把Silvaco告上了法庭。也就在這個前后,Avant!并購了Meta-Software。但Avant!只看到了HSPICE這只下金蛋的鵝,卻忽略了Meta-Software跟Silvaco的官司。也許是因為Avant!恰恰正在和Cadence打著一場更大的官司,從而忽略了這個小案子。不管是什么原因,當法庭開庭要宣判的那一天,Avant!居然沒有人出庭。這下法官可氣壞了。好啊,竟敢藐視本法庭,來啊,判Avant!輸,并賠Silvaco倆千萬!本來Silvaco上庭前戰戰兢兢的,盼望著和解就不錯了。這下到好,不光不用和解了,還得了一大筆錢。呵呵,人們都說國外重視知識產權。這種重視其實是來自于眾多這樣的動不動就成百上千萬的官司。所以同學,如果你是學理工出身的,那你不妨去學學法律。如果你是學文科出身的,那你不妨去學學理工。估摸著在不久的將來,國內這樣的涉及知識產權的大官司也會越來越多。做為一個懂高科技的律師(或者一個懂知識產權法律的工程師)會很搶手的。

??????? 但是,一個公司如果光靠打官司,那也是贏得不了客戶的。說實話,Smart-Spice做得還是蠻不錯的,價格又便宜。Smart-Spice還是第一個“基于使用時間許可證”(use-timebased license)的工具。這對許多小公司或個人用戶是個好消息。如果你沒幾萬美元去買高大上的商業SPICE,或者你就只需跑幾次仿真,那就可以最少花十幾美元用Smart-Spice完成你要做的事。這就像買車還是租車一樣。賣車店能賺錢,租車店也會有很多顧客的。這不也是一個很好的商業模式嗎?

??????? Ivan Pesic于2012年因癌癥在日本去世。如今,他本來想當汽車修理工的兒子已經繼承了老爸的事業,接替掌管Silvaco了。

150913085575622514adde92d6[1]

  • Aeolus-AS

??????? 我們應該感到驕傲– 這是我們中國本土的SPICE。雖然名字叫起來很拗口。光從名字上也看不出這是SPICE。它是由北京華大九天開發的。至于為什么起這樣一個名字,還是請華大的劉總來解答吧(呵呵)。本人并沒有用過這個工具。下面的幾句話是從華大的網頁上摘下來的,也算給他們做個廣告吧。“它是新一代高速高精度并行晶體管級電路仿真工具,能夠在保持高精度的前提下突破目前驗證大規模電路所遇到的容量、速度瓶頸。Aeolus-AS能夠處理上千萬個元器件規模的設計,仿真速度也比上一代晶體管級電路仿真工具有大幅提升,同時支持多核并行。“

??????? 還有一類是工業界但非商業(也就是不拿出來賣的)SPICE。通常它們都是在公司內部開發使用的。一般只有擁有fab的大公司(像Intel,前Infenion,前Motorola,Fujitsu等)才能負擔得起一個開發團隊。這種公司內部的SPICE基本都會有自己的器件模型。在這里我們就不多說了。

SPICE的變異與進化

??????? SPICE最初是用來做小型電路仿真的。電路中的元器件數也就幾十最多到幾百個。隨著電路規模越做越大,電路種類越來越多,人們會問:SPICE能不能跑得更快一些,能運行的電路更大一些?自然而然的,SPICE的變種就出現了。我們在這兒講三個方面:第一是快速仿真,第二是數模混合仿真,第三是擴展應用。

??????? 先說說快速仿真(fast SPICE)。這也是市場最大,發展最多的一塊兒。因為SPICE是把整個電路放到一個矩陣中來解。人們就想能不能把電路分成小塊單獨解,然后再把各塊之間聯接起來,這樣不就快了嗎?的確,對數字電路,確實可以用分割的方法。因為數字電路的信號是有方向的,我們可以在沒有直流通路的地方把它分開(例如在兩個串聯的反相器中間)。另外就是數字信號是離散的,我們可以把它分成幾段。分的段越大,時間步長也就能越大,需要解的次數就少了(當然結果也就沒那么精確了)。還有就是器件模型。我們前面講過如今的MOSFET模型非常復雜,要花很多時間去算,那能不能把它簡化呢?可以。事實證明對數字電路以及數模混合電路(像PLL,memory,serdes)來說,用表格模型(tablemodel)來代替復雜的方程模型是個不錯的選擇。通過這些簡化,快速仿真可以比原來的SPICE快幾十到上百倍,而精度是在SPICE的5-10%之內。像EPIC的PowerMill(后來成為Synopsys的Nanosim),Anagram的ADM(后來成為Avant!的StarSim),Celestry(后來成為Cadence)的Ultrasim,Nassda(后來成為Synopsys)的HSIM,等等。最近比較流行的是Magma(現在是Synopsys)的Finesim,BDA(現在是Mentor)的AFS,Proplus的Nanospice。

??????? 其次來說說數模混合仿真。當一個系統中既有模擬電路,又有數字電路,人們自然就會想到把SPICE和數字仿真器(如Synopsys的VerilogVCS,Cadence的NC,Mentor的Modelsim)聯在一起運行。SPICE去算模擬電路部分,數字仿真器去算數字電路部分,它們之間用數模/模數轉換器(AD/DA)連接。注意這種運行方式跟上面的快速仿真不同。這樣的混合仿真需要兩個仿真器。但這樣的構架有缺點。主要的問題是數模轉換沒有一個標準。市面上有很多SPICE以及verilog仿真工具,每一個工具的轉換界面都不一樣,這就造成混合仿真的界面非常復雜。因此,最近發展的混合仿真都采用數模一體化的構架,大大簡化了轉換界面,而且用戶只需在一個環境下就可進行混合仿真。這樣的工具有Cadence的Virtuoso-AMS,Synopsys的HSIM-plusHDL,Silvaco的Harmony,華大的Aeolus-ADS等。

??????? 最后再來說說SPICE的擴展應用。雖說SPICE是針對集成電路(IC)開發的,但它的應用已擴展到系統級(systemlevel),主要是電路板(PCB)級的仿真。那系統級仿真與集成電路仿真有何區別呢?它們不都是電路嗎?呵呵,沒錯,它們都是電路,但區別還是蠻大的。主要是它們的規模與尺寸的不同。我們知道,集成電路是集成在芯片上的。其器件尺寸現在已做到納米級。而系統級的尺寸還在毫米,厘米,甚至米的數量級。學過電磁的同學都知道,當器件的尺寸大于信號波長的時候,就要考慮分布的場效應了。拿一段導線做例子。一段在芯片上的導線,你可以把它看作一個電阻。而一段電路板上的導線,你就必須用傳輸線(transmission line)來代表它,否則誤差就太大了。如果信號的頻率再高,那就要用S參數了(S-parameter)。由此,電路仿真發展出一大分支,這就是所謂的“信號完整性”工具。像Agilent的ADS,Mentor的HyperLynx,以及Cadence的OrCAD和Allegro。

SPICE今后的道路

??????? 從70年代初到如今的四十多年里,SPICE從只能仿真十幾個節點/器件到今天可以仿真上百萬個節點/器件的電路,這是一個非常驚人的成就。但這個成就的主要原因是摩爾定律。前面我們講過自從90年代中期,SPICE本身就沒有太大的變化了。這怪就怪(不,應該是感謝才對)SPICE的先驅們。他們奠定了一個堅實的基礎,使得我們后面的人都沒什么可做的了(呵呵,這不是好事嗎)。的確,要改變SPICE的基石,例如改進的節點分析法(Modified Nodal Analysis),稀疏矩陣解法(Sparse Matrix Solver),牛頓-拉夫遜迭代(Newton-Raphson Iteration),隱性數值積分(Implicit Numerical Integration),等等,確實不容易。說到底,SPICE是一個解非線性常微分方程的工具。你要想從根本上有個革命性的改變,那你還是從數學上著手吧。

??????? SPICE是一個非常通用的工具。雖然集成電路是它的著重點,但我們看到它也被廣泛應用到了系統級,電源級,甚至延伸到了不同領域的仿真。我們前面講到了數模混合(mixed-signal),但它還是在電路的范疇內。可不可以把它擴展到其他領域(mixed domain/multiple discipline),比如機械,熱力,甚至生物領域?答案是可以的。例如,在電路領域中,我們解的是跨過兩個節點的電壓和通過一個支路電流。而在機械領域中,我們解的是兩個點的位置和力。從早期Saber的MAST語言,到現在的工業標準Verilog-AMS和VHDL-AMS都已經支持不同領域的描述。這就給跨領域的仿真帶來了可能。雖然Verilog-AMS還沒有被模擬電路設計者廣泛采用,但它很可能先從另一個地方發揚光大。比如,微機電系統(MEMS)很有可能是下一個大的應用領域。

??????? 另外一方面,雖然SPICE可以解很多類型的電路,但它的運算速度也因此受到了制約。每一種電路都有它自己的特點,比如數字電路信號的離散性,存儲器(ram)結構的重復性,等等。我們可以在SPICE的基礎上,利用這些電路的特點來開發特制的“SPICE”以提高仿真的效率。前面說的快速SPICE仿真工具就屬于這一類。它們的通用性不如SPICE,但它們針對某一類電路的仿真效率是非常高的。

??????? 最后一方面,我們從SPICE的發展可以清晰得看到,軟件的發展是與硬件的發展密不可分的。現在的處理器基本上都是多核,多線程的,新一代的商業SPICE也利用了這些新的處理器架構。最新的圖形處理器(GPU)更是達到了上百個核,上萬個線程。并行的開發工具像開放計算語言(OpenCL),CUDA也逐漸成熟。高性能計算(HPC)以及云計算也在日益普及。SPICE能否利用這些新的的環境來提高仿真效率呢?呵呵,這個問題就需要你來解答了。

??????? 下面的圖給出了主要SPICE的發展過程。其中的代號如下:UCB:伯克利,gEDA:GNU EDA,Meta:Meta-Software,SNPS:Synopsys,μSIM:MicroSIM,CDN:Cadence,MENT:Mentor

150913092007ad2e9b83c72ffd[1]??

??????? 下面的圖給出了主要快速仿真工具的發展過程,“+”代表并購。

??????? 注意這些快速仿真工具都是商業化的。目前還沒有一個開源的快速仿真工具具有像伯克利SPICE那樣廣泛的影響力。

1509130922246d75d0d4819acb[1]

轉載于:https://www.cnblogs.com/hwBeta/p/6445058.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284484.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284484.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284484.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【GlobalMapper精品教程】003:影像裁剪、批量影像分幅案例詳解

本文以案例的形式,講解Globalmapper中進行影像矩形框裁剪,矢量范圍裁剪,標準圖幅批量分幅的方法,配套實驗數據為數據包中的data003.rar。訂閱專欄后私信作者,獲取中文安裝包及配套實驗數據包,便于同步學習。…

基于Kubernetes v1.24.0的集群搭建(三)

1 使用kubeadm部署Kubernetes 如無特殊說明&#xff0c;以下操作可以在所有節點上進行。1.1 首先我們需要配置一下阿里源cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttp://mirrors.aliyun.com/kubernetes/yum/repos/kubernet…

C++獲取本機的ip地址程序

C獲取本機的ip地址程序 #include <WinSock2.h> #pragma comment(lib,"ws2_32") //鏈接到ws2_32動態鏈接庫class CInitSock { public:CInitSock(BYTE minorVer 2,BYTE majorVer 2){WSADATA wsaData;WORD VersionRequset;VersionRequset MAKEWORD(mino…

BAT批處理代碼快速打開注冊表并定位到指定目錄

主要代碼&#xff1a; echo off echo %1 copy %~nx0 c:\windows\system32 if "%1" NEQ "" (set regPath%1) else (set /p regPath輸入打開的注冊表路徑:) :trimRight if "%regPath:~-1%""\" set "regPath%regPath:~0,-1%" …

Elasticsearch的Groovy Script自定義評分檢索

需求&#xff1a;以索引中的boostapp列作為評分的基礎分值&#xff0c;同時根據carpublishtime&#xff08;數據的刷新時間字段&#xff09;按時間進行衰減。 基于Groovy腳本實現。 1、query腳本方式&#xff1a; {"fields": ["boost","ucarid",…

stm32串口通訊問題

stm32串口通訊問題 在串口試驗中&#xff0c;串口通訊不正常&#xff0c;則可能會出現以下問題&#xff1a; 1. 配置完成后&#xff0c;串口沒有任何消息打印。 原因&#xff1a;1&#xff0c;端口配置有問題&#xff0c;需要重新檢查I/O口的配置 2&#xff0c;接線有問題&…

中國元宇宙白皮書

PS&#xff1a;PDF目錄&#xff08;書簽&#xff09;是為便于閱讀&#xff0c;重新整理過的。 2022《中國元宇宙白皮書》-互聯網文檔類資源-CSDN下載1月26日&#xff0c;2022《中國元宇宙白皮書》在北京中關村正式全網發布。該白皮書由國科創新研究院首席科學家更多下載資源、學…

【GlobalMapper精品教程】002:GlobalMapper中文版安裝后的基本設置

本文講述安裝globalmapper后的一些簡單基本設置&#xff08;持續更新&#xff09;&#xff0c;為后續深入學習軟件打下基礎。訂閱專欄后私信作者&#xff0c;獲取中文安裝包及配套實驗數據包。 文章目錄1. 工具條的顯示與關閉2. 面積單位設置3. 選擇所選面要素的邊框4. 二三維聯…

SaltStack入門篇之遠程執行和配置管理

一、SaltStack概述 Salt&#xff0c;,一種全新的基礎設施管理方式&#xff0c;部署輕松&#xff0c;在幾分鐘內可運行起來&#xff0c;擴展性好&#xff0c;很容易管理上萬臺服務器&#xff0c;速度夠快&#xff0c;服務器之間秒級通訊。 salt底層采用動態的連接總線, 使其可以…

ArgoCD 用戶管理、RBAC 控制、腳本登錄、App 同步

命令行登錄參考&#xff1a;argocd 登錄登出[1]登錄&#xff1a;echo y | argocd login argocd-server.argocd.svc.cluster.local --password argoadmin.smallsoup --username admin登出&#xff1a;argocd logout argocd-server.argocd.svc.cluster.local創建用戶、授權創建用…

敏捷需要重構嗎?不需要嗎?

在傳統的Scrum中&#xff0c;Sprint的長度為一個月&#xff0c;現在一般時間更短。這意味著團隊就得在項目剛開始的兩周或者一個月內交付完成的軟件。軟件來自于產品負責人的backlog。它必須由特征組成。要正確的做到Scrum&#xff0c;我們不能做基礎架構之類的東西&#xff0c…

【GlobalMapper精品教程】005:影像拼接與裁切(分幅)作業案例教程

本文講述Globalmapper影像拼接與裁剪案例教程。 文章目錄 一、影像的拼接(1)針對少量影像的拼接(2)針對大量影像的拼接二、影像的裁剪一、影像的拼接 (1)針對少量影像的拼接 如果影像數量比較小,可以通過加載→導出的方式進行拼接。 如下圖所示,案例數據(配套實驗數…

元宇宙行業深度研究報告:為什么元宇宙是下一代互聯網?

目錄 1、什么是元宇宙&#xff1f;為什么元宇宙是下一代互聯網 1.1、 元宇宙&#xff1a;下一代沉浸式互聯網 1.1.1、超越虛擬與現實的科幻暢想&#xff1a;元宇宙概念來源 1.1.2、新技術由點突破連接成面&#xff0c;移動互聯網繼承者的孕育 1.1.3、元宇宙的五大要素&…

細節總結(一)

self.XXX與_XXX的區別 通過self.XXX得到的數據相當于調用get函數取值,等價于[self XXX];而通過_XXX獲取的是自己的實例變量,直接對變量進行操作,并未調用get函數。所以,通過懶加載方式初始化的變量只能通過self.XXX調用,否則可能會存在未初始化的問題。self.xxx是對屬性的訪問;…

redis 安裝錯誤 jemalloc.h: No such file or directory

為什么80%的碼農都做不了架構師&#xff1f;>>> 錯誤描述 [rootmysql-rtb-slave redis-4.0.1]# make && make install cd src && make all make[1]: Entering directory /usr/local/src/redis-4.0.1/srcCC Makefile.dep make[1]: Leaving director…

OAuth,JWT ,OIDC你們搞得我好亂啊

hi&#xff0c;這里是桑小榆&#xff0c;這次分享的不是生活文&#xff0c;而是技術文。基于OAuth2.0協議的授權認證&#xff0c;初次接觸授權認證知識的時候&#xff0c;出現了不少熱門名詞&#xff0c;“OAuth”&#xff0c;“JWT”&#xff0c;“OIDC”&#xff0c;這簡直讓…

MyEclipse快捷鍵大全

存盤 Ctrls(肯定知道) 注釋代碼 Ctrl/ 取消注釋 Ctrl\(Eclipse3已經都合并到Ctrl/了) 代碼輔助 Alt/ 快速修復 Ctrl1 代碼格式化 CtrlShiftf 整理導入 CtrlShifto 切換窗口 Ctrlf6 <可改為ctrltab方便> ctrlshiftM 導入未引用的包 ctrlw 關閉單個窗口 F3 跳轉到類、變量的…

軟件測試技術第二次作業——程序錯誤的判斷

在做作業之前我們首先要明確軟件測試過程中的幾個名詞&#xff1a; Fault&#xff1a;在軟件測試中&#xff0c;fault是指程序中靜態的缺陷&#xff0c;也就是指在程序中存在的編程錯誤。 Error&#xff1a;在軟件測試中&#xff0c;error是指由于程序中存在的fault而產生的不正…

【GlobalMapper精品教程】006:Excel等表格(.xls)或文本(.txt .csv)坐標文件生成矢量點

【拓展閱讀】: 【QGIS入門實戰精品教程】4.5:QGIS打開Excel中的點坐標,并生成矢量文件 【ArcGIS微課1000例】0022:ArcGIS點(點坐標)自動連成線操作案例教程 【ArcGIS風暴】ArcGIS 10.2導入Excel數據X、Y坐標(經緯度、平面坐標),生成Shapefile點數據圖層 【ArcGIS風暴】…