<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > IC設計工程師需要這樣牛X的知識架構

IC設計工程師需要這樣牛X的知識架構

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

  剛畢業(yè)的時(shí)候,我年少輕狂,以為自己已經(jīng)可以獨當一面,廟堂之上所學(xué)已經(jīng)足以應付業(yè)界需要。然而在后來(lái)的工作過(guò)程中,我認識了很多牛人,也從他們身上學(xué)到了很多,從中總結了一個(gè)工程師需要具備的知識架構,想跟大家分享一下。

本文引用地址:http://dyxdggzs.com/article/201706/360065.htm

  技能清單

  作為一個(gè)真正合格的數字工程師,你永遠都需要去不斷學(xué)習更加先進(jìn)的知識和技術(shù)。因此,這里列出來(lái)的技能永遠都不會(huì )是完整的。我盡量每年都對這個(gè)列表進(jìn)行一次更新。如果你覺(jué)得這個(gè)清單不全面,可以在本文下留言,我會(huì )盡可能把它補充完整。

  語(yǔ)言類(lèi):Verilog-2001/ VHDL ,SystemVerilog/ SystemC,Makefile/ Perl/ Python/ Shell,Tcl

  工具類(lèi):NCVerilog/ VCS/ ModelSim,SimVision/ DVE/ Verdi,Vim/ Emacs,SVN/ CVS/ Git,Microsoft Office

  平臺類(lèi):Windows,Linux,OS X

  其他加分項目:MATLAB,ISE/ Synplify/ Vivado/ Quartus,LEC/Formality,VMM/ UVM,ESL,ZeBu Server,JIRA/ Confluence,C/ Assembly Language,Computer Architecture/ ARM Architecture/ MIPS Architecture

  為什么 & 怎么辦

  A) Verilog-2001/ VHDL

  這里之所以強調Verilog-2001而不是Verilog-1995,是因為在Verilog-2001中規定了很多新特性,因此可以產(chǎn)生更好的代碼風(fēng)格。

  我曾經(jīng)在什么是良好的Verilog代碼風(fēng)格一文中對新版的接口語(yǔ)法進(jìn)行過(guò)詳細的舉例說(shuō)明。這種新的接口方式修改起來(lái)更加簡(jiǎn)單,例化模塊的時(shí)候使用也更加方便,不像舊版的接口語(yǔ)法由于一個(gè)接口需要分3次描述,無(wú)端端增加了代碼行數而且閱讀和改動(dòng)都很困難,尤其是當一個(gè)模塊的接口數目超過(guò)一個(gè)屏幕的顯示范圍時(shí)Verilog-2001的這種優(yōu)勢更加突出。

  學(xué)習Verilog最大的問(wèn)題就是:很多國內的書(shū)寫(xiě)得都很不好,書(shū)中的很多例子都是為了說(shuō)明語(yǔ)法特征而存在的,沒(méi)有任何實(shí)用價(jià)值,甚至很多代碼都是錯誤的(這里錯誤的意思并不是說(shuō)他語(yǔ)法錯誤,而是說(shuō)他是不可綜合的,無(wú)法用數字電路來(lái)對等實(shí)現的)。

  所以,對于學(xué)習Verilog,我的建議是,隨便找一本類(lèi)似語(yǔ)法手冊的書(shū)籍,匆匆把基本語(yǔ)法看過(guò)一遍,搞清楚模塊定義,接口定義,模塊例化,寄存器定義,線(xiàn)定義,always塊怎么寫(xiě)這些基本內容后,就開(kāi)始到OpenCores網(wǎng)站上去下載已經(jīng)經(jīng)過(guò)FPGA驗證的完整開(kāi)源項目代碼進(jìn)行學(xué)習。先做到看懂別人寫(xiě)的代碼,然后再?lài)L試自己去模仿,有不懂的問(wèn)題再有針對性地去網(wǎng)上搜索答案。

  Verilog語(yǔ)言與軟件語(yǔ)言最大的區別就是,因為它是用于描述電路的,因此它的寫(xiě)法是非常固定的,因為電路的變化是非常有限的。學(xué)習Verilog的時(shí)候,很多時(shí)候我們并不是在學(xué)習這門(mén)語(yǔ)言本身,而是學(xué)習其對應的電路特征,以及如何對這個(gè)電路進(jìn)行描述。

  如果心中沒(méi)有電路,那么你是不可能寫(xiě)好Verilog的。從基礎開(kāi)始,一點(diǎn)點(diǎn)積累類(lèi)似計時(shí)器,譯碼器這樣的小型電路描述方法是非常重要的。Verilog鼓勵在電路中進(jìn)行創(chuàng )新,而不是在描述方法上進(jìn)行創(chuàng )新。因此,即使是世界上最牛的Verilog高手,他寫(xiě)出來(lái)的Verilog代碼語(yǔ)法也都是很普通的,而他的創(chuàng )意則在于如何去組合這些基本的小型電路。

    

IC設計工程師需要這樣牛X的知識架構

 

  VHDL雖然我并不是太了解,但是目前在歐洲很多國家,VHDL還是主流的RTL設計語(yǔ)言。VHDL語(yǔ)言的嚴謹性比Verilog要好,不像Verilog中一樣存在大量符合語(yǔ)法卻永遠無(wú)法綜合的語(yǔ)句,容易對新人造成誤導(仿真通過(guò)的代碼卻在FPGA綜合時(shí)報錯,或者FPGA實(shí)現結果與仿真不一致)。而VHDL和Verilog雖然可以相互轉化,但是轉化過(guò)程中仍然存在很多問(wèn)題,無(wú)法做到完全的自動(dòng)化。關(guān)于這一點(diǎn)我之前寫(xiě)過(guò)一篇專(zhuān)題進(jìn)行探討:如何將VHDL轉化為Verilog。有興趣的同學(xué)可以去看看。

  B) SystemVerilog/ SystemC

  這兩種語(yǔ)言都是為了驗證而存在的。作為工程師,驗證知識不是必須的,但是掌握基本的驗證方法學(xué)有助于提高自己的debug效率和結果。我曾經(jīng)在如何快速搭建模塊驗證平臺一文中詳細介紹過(guò)一種我自己總結的驗證方法,這種方法就是基于SystemVerilog語(yǔ)法實(shí)現的。由于SystemVerilog對Verilog完全兼容,就像C++對C語(yǔ)言的兼容一樣,所以SystemVerilog(或SV)學(xué)起來(lái)其實(shí)并不算難。

  SystemVerilog是一種面向對象的語(yǔ)言,其設計的本意是用于搭建驗證平臺,主流的VMM/UVM方法也都是基于SystemVerilog實(shí)現的,所以立志成為IC驗證工程師的同學(xué),SystemVerilog的深入學(xué)習和流行方法論的學(xué)習都是必不可少的。

  而對于那些只想做IC設計的同學(xué)而言,SystemVerilog同樣也是值得學(xué)習的。且不說(shuō)本文前面提到的用于提高驗證效率的debug方法,即使只是為了做好設計,SystemVerilog也是大有用武之地。在歐美很多發(fā)達國家,很多世界頂級的IC設計公司內部都已經(jīng)開(kāi)始使用SystemVerilog進(jìn)行RTL設計了。由于在SystemVerilog中加入了很多類(lèi)似always_ff、always_comb等用于顯式表明綜合電路意圖的新語(yǔ)法,代碼的可讀性更高,綜合過(guò)程中也減少了歧義,盡可能地保證了綜合結果與設計意圖的一致性。從另一個(gè)角度來(lái)說(shuō),asserTIon的加入也極大地提高了代碼的debug效率,非常有助于在大規模的數據交互過(guò)程中定位到出錯的初始點(diǎn),沒(méi)有掌握的同學(xué)可以多花一些時(shí)間研究一下。

  C) Makefile/ Perl/ Python/ Shell

  以上四種都是IC設計工程師們常用的腳本語(yǔ)言,看起來(lái)似乎它們都跟IC設計的專(zhuān)業(yè)能力沒(méi)有絲毫關(guān)系,但是由于本行業(yè)的專(zhuān)業(yè)工具價(jià)格非常昂貴,項目需求差異極大,因此掌握一門(mén)得心應手的腳本語(yǔ)言將對你工作效率的提升幫助極大。如果你還沒(méi)有嘗試過(guò)編寫(xiě)自己的腳本語(yǔ)言,那么問(wèn)問(wèn)你自己,有沒(méi)有曾經(jīng)為了完成一批仿真用例熬到深夜?有沒(méi)有曾經(jīng)因為要比對幾萬(wàn)個(gè)數據搞到眼瞎?有沒(méi)有曾經(jīng)因為要修改一個(gè)全局信號的比特位寬而無(wú)比抓狂?要把一個(gè)hex類(lèi)型數據文件轉換為memory模型需要的特殊格式怎么辦?沒(méi)錯,如果你掌握了腳本語(yǔ)言,以上這些奇奇怪怪的需求都不是事兒,重復而細致的體力勞動(dòng)就交給計算機來(lái)完成吧。我一向信奉的口號就是:但凡做過(guò)一次的事情,就沒(méi)有必要重復第二次。

  如果你已經(jīng)在工作中使用過(guò)其它工程師開(kāi)發(fā)的平臺或者腳本,那么它很可能是用這4種語(yǔ)言寫(xiě)成的。如果執行腳本的方式是make run,那么很可能你用到的是一個(gè)Makefile腳本;如果執行方式是source run,那么這應該是一個(gè)Shell語(yǔ)言寫(xiě)成的腳本;如果是其它情況,那么就得看具體這個(gè)腳本首行是怎么寫(xiě)的了。Makefile和Shell語(yǔ)言比Perl/Python要更容易上手,寫(xiě)起來(lái)也更加簡(jiǎn)單,比較適合滿(mǎn)足一些非常簡(jiǎn)單的批量任務(wù)需求。Perl的強項則在于它強大的文本處理能力和無(wú)所不能的CPAN庫,隨時(shí)可以滿(mǎn)足你的各種任性需求。Python的優(yōu)點(diǎn)則是較好的可維護性。

  關(guān)于腳本語(yǔ)言的重要性,大家可以到這里看看相關(guān)討論:Perl等腳本語(yǔ)言在IC設計中有哪些用處?。

  D) Tcl

  嚴格來(lái)說(shuō),Tcl是一門(mén)非常單純而簡(jiǎn)單的語(yǔ)言,而它的學(xué)習難點(diǎn)在于,只是掌握它的語(yǔ)法是遠遠不夠的。這種情況有點(diǎn)類(lèi)似javascript,如果你用js來(lái)開(kāi)發(fā)網(wǎng)頁(yè),那么你必須深入了解DOM和HTML;如果你用js來(lái)開(kāi)發(fā)游戲,那么你必須深入了解Unity3D引擎的各種知識;如果你用js來(lái)開(kāi)發(fā)Web App,那么你必須會(huì )用node.js的各種庫和常見(jiàn)的服務(wù)端框架。

  語(yǔ)言永遠只是工具,這句話(huà)放在Tcl上再合適不過(guò)了。在IC設計這個(gè)領(lǐng)域中,Tcl是一門(mén)非常常見(jiàn)的語(yǔ)言。他可以用于描述時(shí)序和管腳約束文件,UPF信息,也可以用來(lái)搭建簡(jiǎn)單的工作平臺。它既是很多IC領(lǐng)域EDA工具默認支持的腳本語(yǔ)言,也是這些工具配置和輸出的文件格式。因此,能夠讀懂Tcl,掌握Tcl語(yǔ)言的基本語(yǔ)法,就可以幫助你更好的使用EDA工具,真可謂是Tcl在手,天下我有!

  但是,成也蕭何敗蕭何,正如前文一開(kāi)始提到的,僅僅掌握了Tcl的語(yǔ)法還遠遠不是全部。不同的EDA工具對Tcl腳本提供的命令和參數支持都是不一樣的,每當你需要為一種新工具編寫(xiě)Tcl腳本時(shí),都必須要熟讀官方給出的用戶(hù)手冊,了解這種工具支持的Tcl命令結構,才能確保寫(xiě)出的腳本是可以被正確執行的。

  E) NCVerilog/ VCS/ ModelSim/ iVerilog

  以上三種都是比較業(yè)界比較主流的仿真工具,其中NCVerilog和VCS都只支持Linux平臺,而ModelSim貌似是同時(shí)支持Linux平臺和Windows平臺的。但是不管哪一種,我都希望大家能意識到兩件事:

  第一,仿真器和波形查看器是兩回事,本條目介紹的只是仿真器,仿真器的工作原理跟波形查看器是有天差地別的,同時(shí)由于IEEE對標準波形文件*.vcd格式的規范,任意仿真器都是可以和任意波形查看器組合使用的。

  第二,仿真器通常是沒(méi)有圖形界面的,為了更好地使用仿真器,你要熟讀自己常用仿真器的用戶(hù)手冊,了解一些常見(jiàn)需求的命令行參數,至少要做到了解如下內容:如何指定編譯的文件類(lèi)型,如何指定編譯文件清單,如何指定索引目錄,如何指定仿真精度,如何指定臨時(shí)的宏變量,如何指定語(yǔ)法檢查的嚴苛等級,如何混合編譯由多種語(yǔ)言寫(xiě)成的工程,如何調用不同波形生成工具的pli接口,如何配合SDF反標進(jìn)行后仿等等。

  不同仿真器的功能其實(shí)都大同小異,但是是不是只掌握一種仿真器就可以打遍天下無(wú)敵手了呢?當然不是。在實(shí)際的工程中,我們經(jīng)常用到第三方IP核,有時(shí)候出于保密的需要,第三方IP核會(huì )以加密二進(jìn)制文件的方式提供,加密二進(jìn)制文件長(cháng)啥樣呢?

  它們一般以“*.vp”格式命名,文件的開(kāi)頭部分就是標準的Verilog語(yǔ)法,但是在一行注釋之后就全部變成了亂碼。通常亂碼之前的那行注釋會(huì )指定該加密二進(jìn)制文件支持的仿真器類(lèi)型。所以你看,如果你是一個(gè)重度VCS使用者,而有一天項目經(jīng)理突然塞給你一個(gè)只支持NCVerilog的加密文件,你內心一定會(huì )有千萬(wàn)只草泥馬呼嘯而過(guò)。

  F) SimVision/ DVE/ Verdi/ ModelSim/ gtkWave

  與上面的仿真器相對應,以上三種也是業(yè)界比較主流的波形查看工具。所有的波形查看器都必須支持標準波形文件*.vcd格式,但是由于*.vcd格式的存儲性能并不好,冗余信息過(guò)多,所以各家波形查看工具都紛紛推出了自己獨家支持的波形文件格式,如DVE的*.vpd,Verdi的*.fsdb,ModelSim的*.wlf, SimVision的*.shm等。通常波形查看工具獨家支持的文件格式都具有較高的壓縮率。

  舉例來(lái)說(shuō)的話(huà),通常1G左右的*.vcd格式波形轉換為*.vpd格式后只有40MB左右,而轉換為*.fsdb后通常會(huì )更小,因此將標準波形文件*.vcd轉換為其他壓縮格式更加有利于數據備份。

  如果希望在仿真過(guò)程中不生產(chǎn)*.vcd,而是直接生成壓縮率更高的其他波形查看器專(zhuān)用格式,則需要調用對應工具提供的pli接口,同時(shí)配合測試平臺代碼中的系統函數調用(如$fsdbDumpOn等)來(lái)完成。

  G) Vim/ Emacs

  經(jīng)??吹揭恍¬erilog新人提出這樣一個(gè)讓人啼笑皆非的問(wèn)題:“請問(wèn)一般Verilog編程用什么樣的軟件?

  首先,Verilog是一種電路描述語(yǔ)言,它本質(zhì)上可能跟電路圖的血緣還更近一些,至少不應該把這個(gè)描述過(guò)程說(shuō)成是“編程”。

  其次,寫(xiě)Verilog其實(shí)并沒(méi)有什么專(zhuān)門(mén)的軟件,大部分業(yè)界的工程師都是用Vim或Emacs這樣原始粗獷的文本編輯器來(lái)寫(xiě)Verilog代碼的,如果你愿意的話(huà)用Notepad或Texteditor來(lái)寫(xiě)也未嘗不可,只是如果你有深入了解過(guò)Vim或Emacs的話(huà),自然就會(huì )明白這么多人選擇它們的原因所在——提高效率。

  1、你是否曾經(jīng)在代碼寫(xiě)完之后被老大臭罵一頓原因是你沒(méi)有把所有的reg和wire定義都放到文件的統一位置(如第38行)?如果使用Vim編輯器的話(huà),只需要使用:g%^s*regs*%m 38加上:g%^s*wires*%m 38就可以了。

  2、你是否曾經(jīng)被要求刪除某個(gè)文件中所有的注釋?只需要:%s%//.*$%%g就可以了。

  3、你是否曾經(jīng)需要把一個(gè)模塊例化256次,然后因為每次例化的一點(diǎn)微小不同導致你不能直接使用for循環(huán)?沒(méi)關(guān)系,用qq錄像功能,你只需要操作一次,然后使用256@q就可以把你的動(dòng)作自動(dòng)重復256次啦。

  4、你是否曾經(jīng)遇到鍵盤(pán)壞掉了,“a”鍵經(jīng)常失靈甚至沒(méi)有反應?沒(méi)關(guān)系,用:inoremap ‘ a把‘鍵重新映射為a鍵吧。

  類(lèi)似的例子簡(jiǎn)直數都數不完,更多內容參見(jiàn)與Verilog有關(guān)的Vim實(shí)用技巧。

  所以說(shuō),使用Vim或Emacs最大的好處就是,你會(huì )感覺(jué)到你的大腦比手更忙,因為從你想清楚到代碼寫(xiě)好只需要花費極短的時(shí)間。你可以把全部精力投入到代碼的內容上,而不是代碼輸入這個(gè)機械的過(guò)程中,就好像用打字機代替毛筆的感覺(jué)一樣。只要是你能用編程描述清楚的事情,Vim就可以代替你快速完成,而前提就是你要先學(xué)會(huì )大量的Vim命令和正則表達式,以保證你的表述能被編輯器正確理解。

  G) SVN/ CVS/ Git

  以上三種都是目前比較主流的“版本管理”工具。什么是版本管理?

  簡(jiǎn)而言之,就是一種用于記錄和查詢(xún)文件版本改動(dòng)的工具,通常都會(huì )被部署在公共服務(wù)器上,以保證數據的安全和可恢復。在項目的開(kāi)始階段,首先需要創(chuàng )建好版本管理的根目錄,然后由不同的工程師逐一把自己的設計文件首次加入到版本管理的各級子目錄下。

  在項目執行的過(guò)程中,每當有人修改一個(gè)文件,都需要通過(guò)版本管理工具上傳代碼并注釋改動(dòng)內容,版本管理工具會(huì )自動(dòng)檢查改動(dòng)內容與服務(wù)器上的最新版本是否沖突(沖突的意思即是說(shuō),在該工程師改動(dòng)這個(gè)文件的過(guò)程中,有其它人也對該文件的同一行代碼進(jìn)行了改動(dòng)并上傳了新版本),如果沒(méi)有沖突,則會(huì )自動(dòng)將新上傳的改動(dòng)合并到當前最新版本,反之,則將沖突部分進(jìn)行對比顯示,讓工程師手工判斷應當如何合并沖突行的內容,解決沖突后可以再次重新上傳。

  H) ISE/ Synplify/ Vivado/ Quartus

  ISE和Vivado都是Xilinx旗下的FPGA工具,其中ISE比較老,官方已經(jīng)停止更新了,目前最新的版本是14.7,而Vivado作為新一代的FPGA工具一直在繼續更新。Quartus則是Altera旗下的FPGA工具,功能和ISE/ Vivado大同小異。筆者平日里對FPGA工具的接觸并不多,但從有限的接觸體會(huì )而言,Quartus比ISE/ Vivado更適合用于學(xué)習,入門(mén)的門(mén)檻更低一些,操作界面也更加簡(jiǎn)單易學(xué)(但千萬(wàn)不要使用6.2版本以下Quartus中自帶的波形仿真工具,那是垃圾)。

  I) Windows/ Linux/ OS X

  相信大多數人的個(gè)人計算機使用的都是以上系統或類(lèi)似以上系統的其他系統吧。以上3個(gè)系統,對于專(zhuān)業(yè)的數字IC前端設計人員而言,工作的方便程度(注意,是專(zhuān)業(yè)人員的方便程度,而非學(xué)習曲線(xiàn)的陡峭程度,這里是指均已達到熟練掌握的前提下對于工作效率的幫助)由方便到困難分別是:Linux 》 Windows 》 OS X。

  在Windows下,你可能需要的工具有Cygwin(模擬Linux shell,帶有大部分GNU工具),Modelsim,Debussy(更名Verdi后的版本沒(méi)有對應的Windows版本), Quartus, ISE等。在Linux下,你可能需要的工具包括Bash/Csh/Tcsh,Modelsim,Quartus,ISE,VCS,Simvision,DVE,NCVerilog,Formality,LEC,Synplify等。而在OS X下(筆者不幸就位于該平臺下),你可以使用的工具就只剩下Bash/Csh/Zsh,iVerilog,gtkWave這些選擇了。

  從以上內容不難看出,在工具的多樣性角度而言,Linux完爆其它平臺,這也是為什么絕大多數IC開(kāi)發(fā)公司的服務(wù)器都選擇部署在Linux下的主要原因之一。對于個(gè)人電腦而言,大部分同學(xué)會(huì )選擇使用虛擬機來(lái)兼顧不同平臺的工具選擇,個(gè)人建議大家最好在熟練掌握Linux平臺及其工具的前提下,同時(shí)也了解一下其它平臺的解決方案。



關(guān)鍵詞: IC設計 VHDL

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>