<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 復雜的多核心ARM集成設計面臨的挑戰(zhàn)和提出的解決方案

          復雜的多核心ARM集成設計面臨的挑戰(zhàn)和提出的解決方案

          ——
          作者: 時間:2005-09-04 來源:EDN電子設計技術(shù) 收藏
          復雜的多核心ARM集成設計面臨的挑戰(zhàn)和提出的解決方案
          最近,英國 ASIC設計中心從一個重要客戶處收到一份富有挑戰(zhàn)性的簡報:將8個 ARM966E-S r1p0 處理器子系統(tǒng)集成到單芯片上。
            盡管這項任務很復雜,但是僅花了11個月就完成了4M-gate 5Mbit 的設計。目前,芯片已投入生產(chǎn),并作為首次推出的基礎設施的一部分,于2002年在歐洲首次使用。整個芯片是第三方和Agere設計經(jīng)驗的合作成果,Agere負責提供ARM子系統(tǒng)設計經(jīng)驗和芯片集成知識,而第三方提供特定用途知識產(chǎn)權(quán)。
            本文不僅概括了小組在開發(fā)設計過程中遇到的挑戰(zhàn),還提供了對所采用的解決方案的深刻見解。使用的技術(shù)有Agere的0.16um 6LM (金屬層) 1.5V/3.3V處理,且連線到456 PBGAM數(shù)據(jù)包,以及Agere的內(nèi)部EDA工具集、用于合成的Synopsys的設計編譯器、用于靜態(tài)時序分析的Primetime、用于測試插入和矢量生成的DC-XP/Tetramax和用于功耗分析的Primepower。小組使用了Avanti Apollo/Saturn 的布局規(guī)劃和時鐘樹綜合(CTS)技術(shù)、Mentor Graphics的Modelsim RTL 仿真技術(shù)和Cadence的NCVerilog 功能門仿真技術(shù)。 Celerity是用于Spice仿真的解決方案,而AssuraSI是用于信號集成分析的解決方案。

          本文引用地址:http://www.ex-cimer.com/article/8211.htm
            ARM966E-S子系統(tǒng)
            本設計是分等級的,它將ARM966E-S子系統(tǒng)排在最低級別。子系統(tǒng)的結(jié)構(gòu)如圖所示。
            每個ARM966E-S子系統(tǒng)在每段設計里可使用2次,并同時添加第三方IP。而該段在設計中被復制4次。在層次的上一級也包括了第三方IP,最后,包括Agere所有的IO和測試結(jié)構(gòu)。該結(jié)構(gòu)在圖2中有說明。使用該設計結(jié)構(gòu),Agere提出了SoC設計,即當設備中的最低核心電壓是1.32V,接合溫度達到125 攝氏度,且使用最慢處理特性時,這種設計最少能容納1280 MIPS,是基于每個ARM966E-S核心160 MIPS的一種測量方法。在這些條件下,限制MIP數(shù)目的因素不是ARM966E-S核心(在這種技術(shù)下能達到200MIPs),而是指令/數(shù)據(jù)緊密耦合內(nèi)存 (TCM)的大小和形狀,以及AMBA 高速總線 (AHB)的物理長度。在Agere的最新技術(shù)(0.13um)里,已獲得不止兩倍的性能,同時使用AMBA 3.0 AXI協(xié)議,克服了AHB的局限性。

             子系統(tǒng)設計工藝基礎是Agere的 "AHB Supercore macrocell"。 Agere利用子系統(tǒng)的開發(fā)經(jīng)驗,使Supercore滿足了SoC設計的要求。這就要求更改TCM配置,包括將部分數(shù)據(jù)TCM內(nèi)存映射變?yōu)殡p口RAM。而且,增加了一個雙向的外部存儲接口(EMI)  和一個定制的矢量中斷控制器(VIC)。
            測試設計功能性
            一旦完成ARM966E-S子系統(tǒng)的RTL設計,Agere的工程師就創(chuàng)建了一套系統(tǒng)測試,以證明設計的功能性。除了可以測試ARM提供的矢量外,還可以測試合成的ARM966E-S核心的有效性。用于測試子系統(tǒng)的測試基準使用了Synopsys LMC (邏輯模型化公司)軟內(nèi)存模式仿真TCM。
            該測試組件還用于檢驗各個步驟的分塊合成和構(gòu)造。一旦子系統(tǒng)設計人員確定了整個設計的合成,就會在融合到整個SoC設計前,將單獨的驗證結(jié)果傳給SoC設計人員。為了遵守ARM許可協(xié)議,無需ARM966E-S門級連線表,而是與ARM966E-S DSM系統(tǒng)仿真的DSM(設計仿真模式)一并傳給第三方。
            這是一個復雜的SoC設計,不僅需要測試性能,還需要相關(guān)的調(diào)試。將BIST、SCAN和邊界掃描結(jié)構(gòu)包含在內(nèi),才有可能對整個設計的高故障覆蓋生產(chǎn)進行測試。如果需要調(diào)試,除了需要一個結(jié)構(gòu)外,還需添加支持ICE在線仿真的ETM9 (內(nèi)置的蹤跡模塊)。
            尤其是掃描技術(shù),它不同于以往一次性掃描整個芯片的方法。每個分層的掃描都是單獨進行的,然后合并起來進入上一級。這里主要的工作區(qū)將所有以前掃描過的子模塊當作黑盒子來處理,直至插入了掃描。之后在填寫設計連線表前,子模塊代替設計中的黑盒子,為上一級掃描和合并做準備。這個過程在4 種不同層次上都有重復。從設計開始,Synopsys已發(fā)布了新版的設計編譯器,Agere用它成功掃描和編譯了許多復雜的分級設計,而無需精心制作的腳本。
            邊界掃描結(jié)構(gòu)設計使所有IO計時在IO和電壓轉(zhuǎn)換結(jié)構(gòu)中都是可預料的。這應當通過創(chuàng)建IO緩沖和邊界掃描物理布局宏單元獲得。這些宏單元與Agere的BCADu軟件相結(jié)合,建立最高級IO連接。每種接入接出宏單元都轉(zhuǎn)換為正確的電壓,并接收不同的掃描輸入和輸出。
            這就意味著功能信號在核心內(nèi)不會與掃描信號相混淆。從而,隨著設計的進行,實現(xiàn)從頂級透視預測整個時序。IO環(huán)設計的另一特性是將邊界掃描時鐘TCK發(fā)送給數(shù)據(jù)的另一端。這就消除了與TCK有關(guān)的任何保留時序問題,同時意味著不必擔心時序平衡和芯片外圍的TCK時鐘樹。
            由于這種設備是基于ARM的,且具有ICE性能,與IO邊界共享JTAG端口,所以需要進行掃描。設計的TDO針需要在每兩個測試結(jié)構(gòu)間復用。為了實現(xiàn)這一特性,將邊界掃描控制器(Agere開發(fā)的BCAD軟件部分)變?yōu)榭芍С诌吔鐠呙杌騃CE。
            復雜設計需要足夠的調(diào)試性能
            ICE和ETM性能都添加到SoCy設計中。在設計規(guī)格階段,為每個ARM966E-S提供一個獨立的ETM9,費用會很大,而且因為8 個ARM966E-S都具有同一功能,所以只需要其中的一個ARM966E-S。因此單個的ETM9放在核心最上層,并連接到單芯片的單ARM966E-S核心中,其它三個芯片的ETM接口未被連接。
            SoC 設計的ICE性能需要依靠所有8個ARM966E-S核,能經(jīng)由設備的JTAG端口,通過TDI/TDO信號進行通信。因為擁有多個JTAG端口的解決方案并不很實用,因而有必要利用ARM966E-S的菊花鏈通信性能。菊花鏈控制的說明見圖3。菊花鏈系列連接要求在每兩個ARM966E-S核間進行數(shù)據(jù)傳送,并意味著較低級別的TCK時鐘平衡變得重要了。為了使多ICE能以實用的調(diào)試速率運行,TCK時鐘樹必須首先在芯片間,然后在芯片內(nèi)的ARM966E-S間達到平衡。


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();