Xilinx 開(kāi)源TCL庫正式發(fā)布
用于共享工具命令語(yǔ)言腳本的開(kāi)源庫已發(fā)布在GitHub.com上。
本文引用地址:http://dyxdggzs.com/article/201610/308463.htm在過(guò)去五年里,賽靈思把戰略重點(diǎn)放在設計方法和工具上,通過(guò)提供業(yè)界最先進(jìn)、最全面的開(kāi)發(fā)環(huán)境,解決生產(chǎn)力問(wèn)題,加快設計周期,促使產(chǎn)品更快上市。
即便新一代Vivado設計套件和綜合全面的UltraFast設計方法可以提高生產(chǎn)力,但使用當今的All Programmable器件開(kāi)展設計工作仍然面臨諸多挑戰。設計人員必須將數百個(gè)高度參數化的IP核、數十萬(wàn)個(gè)可放置的對象和數百萬(wàn)個(gè)邏輯單元與賽靈思All Programmable FPGA、3D IC和SoC完美集成。隨著(zhù)設計人員不斷拓寬復雜設計的疆域,需要應對的情況也千變萬(wàn)化。
隨著(zhù)今年4月份Vivado 2014.1版本的發(fā)布,賽靈思正在籌備一個(gè)用于共享工具命令語(yǔ)言(TCL)代碼的開(kāi)源庫,這一舉措無(wú)疑在進(jìn)一步提升設計人員生產(chǎn)力方面又前進(jìn)了一大步。這個(gè)名為“賽靈思TCL庫”的開(kāi)源庫能夠顯著(zhù)簡(jiǎn)化查找和共享其他工程人員開(kāi)發(fā)的TCL(發(fā)音為“tickle”)腳本。借助Tcl,這些腳本能夠擴展Vivado設計套件強大的核心功能,進(jìn)而提升生產(chǎn)力,簡(jiǎn)化使用。“Tcl庫”對用戶(hù)社區開(kāi)放,通過(guò)發(fā)布對他人可能有用的Tcl代碼,讓所有設計人員受益。
日趨復雜的設計
Vivado設計套件建立在開(kāi)放的可擴展數據模型上。作為一種開(kāi)源系統,要想提高生產(chǎn)力,其中一個(gè)關(guān)鍵就是提高工具的智能化水平,提供更多定制選項和分析功能,以便設計人員更全面了解并充分運用工具,實(shí)現最佳設計。
自2012年Vivado設計套件推出以來(lái),用于執行各種規模任務(wù)的Tcl腳本呈現出爆炸性發(fā)展。Tcl是Vivado XDC約束語(yǔ)言的基礎,因此掌握和運用Tcl對設計人員來(lái)說(shuō)越發(fā)重要。
使用Tcl命令可以交互式地開(kāi)發(fā)和優(yōu)化時(shí)序約束,節省編譯時(shí)間,減少調試工作量。其核心命令可進(jìn)行對象查詢(xún),并據以提供定制報告和完成極為精細的工具控制。使用Vivado設計工具還可以開(kāi)發(fā)自己的DRC和Lint檢查,配合高度定制化的流程即可實(shí)現更優(yōu)異的結果質(zhì)量或是更快的運行時(shí)間。設計人員使用Tcl還可以通過(guò)工程變更命令(ECO)操作進(jìn)行針對性的設計變更。
TCL帶來(lái)的生產(chǎn)力改善,代碼創(chuàng )建的便捷性和代碼的易讀性,使之成為共享有用代碼的理想選擇。到目前這種共享還主要處于自發(fā)階段,采用電子郵件和用戶(hù)論壇方式。部分企業(yè)也已經(jīng)在內部建立自己的TCL庫,供自己項目使用。
現在賽靈思通過(guò)自己全新的“賽靈思Tcl庫”,讓Tcl共享邁上新的臺階。
歡迎使用Tcl庫
賽靈思Tcl庫提供多種樣例,用于示范如何編寫(xiě)定制報告,控制特定工具行為,進(jìn)行定制網(wǎng)表變更,與仿真、綜合、時(shí)序與功耗分析及l(fā)int工具等第三方電子設計自動(dòng)化(EDA)工具集成。
Tcl庫可從Vivado集成設計環(huán)境(IDE)本地訪(fǎng)問(wèn),便于用戶(hù)直接從工具內部選擇和安裝稱(chēng)為“應用程序”(app)的Tcl腳本集。安裝完成后,這些應用程序的命令如同Vivado設計套件內置的命令一樣,可通過(guò)幫助命令查看其用法。Vivado設計套件使用Tcl的標準封裝工具支持不同版本的應用程序,故即便有更新的版本發(fā)布,只需單擊鼠標即可選擇升級。
賽靈思Tcl庫的目的是使用與Linux開(kāi)發(fā)環(huán)境相同的方式,簡(jiǎn)化由用戶(hù)社區開(kāi)發(fā)和支持的優(yōu)質(zhì)Tcl腳本的查找和使用。Tcl腳本編寫(xiě)與選擇IDE按鈕相比稍微高級一些。但它易于學(xué)習和掌握。有大量技術(shù)文檔和用戶(hù)指南詳細介紹Tcl API提供的具體命令,詳情請訪(fǎng)問(wèn)china.xilinx.com/support。
下面詳細介紹從賽靈思Tcl庫安裝和使用Tcl應用程序的方式。

圖1:Vivado IDE中的Tcl庫對話(huà)框為安裝應用程序和瀏覽命令提供方便。
安裝和使用
在首次啟動(dòng)Vivado IDE時(shí),設計人員可以通過(guò)“Getting Started”頁(yè)面上的圖標訪(fǎng)問(wèn)賽靈思Tcl庫。設計人員也可以轉到工具菜單(Tools Menu),選擇“Xilinx Tcl Store”菜單選項。此時(shí)會(huì )彈出庫對話(huà)框,提供可供安裝的應用程序清單(圖1)。
瀏覽應用程序清單時(shí),可以看到每個(gè)應用程序下又有一個(gè)命令清單(Tcl中稱(chēng)為“procs(進(jìn)程)”),列出了可供執行的命令??梢圆榭疵總€(gè)應用程序及每個(gè)應用程序中每個(gè)進(jìn)程的介紹,了解其功能。點(diǎn)擊安裝按鈕就可以安裝和注冊應用程序,隨后可以如同Vivado設計套件本地命令一樣顯示和使用。應用程序安裝完畢后,每次啟動(dòng)Vivado設計套件它都會(huì )自動(dòng)加載,無(wú)需每打開(kāi)一個(gè)新的界面都安裝一次應用程序。
進(jìn)程有命名規則,使用Tcl中名為“命名空間”的工具。命令的名稱(chēng)看似比正常的Tcl命令稍顯復雜,同時(shí)內嵌有“::”字符。例如xilinx::ultrafast::check_pll_connectivity用于對賽靈思器件中的時(shí)鐘修改模塊進(jìn)行連接檢查。該命名法則的目的是確保Tcl代碼的唯一性以及一個(gè)應用程序中的某個(gè)進(jìn)程不會(huì )與另一個(gè)應用程序中的同名進(jìn)程發(fā)生沖突。命名空間是Tcl的標準特性。
運行應用程序命令的方法是鍵入包括命名空間在內的進(jìn)程的完整合法名稱(chēng),并有選擇地輸入任何要求的命令行參數,就和其它Tcl命令一樣。由于這些命令使用標準命名空間,也可選擇導入命令到全局空間中。如果不和任何其他命令名稱(chēng)發(fā)生沖突,這個(gè)方法是適用的。這樣可以略去命名空間限定符,只使用進(jìn)程名稱(chēng)。在上面的例子中,如果把UltraFast應用程序導入全局命名空間,無(wú)需命名空間限定符即可直接調用check_pll_connectivity命令。
設計人員只需單點(diǎn)應用程序詳細介紹部分中的“Uninstall App”超鏈接,就可以卸載應用程序。另外,點(diǎn)擊“Refresh”按鈕便可更新應用程序目錄。Tcl庫目錄由第三方網(wǎng)站托管,與Vivado版本無(wú)關(guān),因此可隨時(shí)更新應用版本。目錄更新后,Vivado工具會(huì )占用少許資源執行應用程序清單同步。如果有更新后的已安裝應用程序可用,請使用“Update”按鈕來(lái)取得。Vivado設計套件會(huì )復制并同步該應用程序的最新版本,完成其安裝。為避免發(fā)生配置控制問(wèn)題,更新只根據設計人員的要求安裝。對在意安全性,不愿意讓Vivado設計套件隨時(shí)從自己的網(wǎng)絡(luò )防火墻外同步的用戶(hù),可以使用一個(gè)參數禁用目錄同步功能。
使用賽靈思Tcl庫的Tcl應用程序簡(jiǎn)單且方便。賽靈思的目標是鼓勵世界各地的開(kāi)發(fā)團隊使用和共享Tcl庫,提升生產(chǎn)力。庫中只顯示任何給定應用程序的最新版本,設計人員只能安裝或升級到所支持的最新版本。當然充分利用的最好方式是保證有豐富的有用代碼庫。賽靈思在庫中植入了一整套非常有用的實(shí)用工具和集成腳本,可供用戶(hù)當作范本研究,掌握如何構建自己的可重用Tcl腳本。
使用賽靈思Tcl庫的Tcl應用程序簡(jiǎn)單且方便。賽靈思的目標是鼓勵世界各地的開(kāi)發(fā)團隊使用和共享Tcl庫,提升生產(chǎn)力。
向Tcl庫提供代碼
有兩種途徑可向Tcl庫提供代碼,讓腳本供所有的Vivado設計套件用戶(hù)使用。第一個(gè)途徑是修改現有的應用程序。第二個(gè)途徑是開(kāi)發(fā)新應用程序,然后提交新應用程序申請。要提供代碼給Tcl庫,用戶(hù)需要對用于版本控制的軟件開(kāi)發(fā)工具有一定熟悉,或至少有學(xué)習意愿。
每個(gè)應用程序都由一個(gè)人控制,一般是編寫(xiě)大部分代碼的人,也稱(chēng)為“應用程序負責人”。賽靈思庫在整體上由賽靈思控制,且賽靈思公司負責維護把應用程序發(fā)布到公共域的流程,以保持各應用程序之間的基本一致性。賽靈思員工起著(zhù)質(zhì)量保障“守門(mén)員”的作用。
想要修改現有應用程序或添加新應用程序的“提供人”可與“守門(mén)員”和應用程序責任人合作,遵循與其他開(kāi)源項目一樣的流程,完成提交工作。在代碼托管網(wǎng)站上有個(gè)維基(wiki)用于把這個(gè)流程形成文檔。
所有代碼提交都應滿(mǎn)足基本要求。賽靈思盡量讓隨時(shí)可能發(fā)生變化的基本要求項目保持簡(jiǎn)潔,同時(shí)確保合理的用戶(hù)體驗。下面是用戶(hù)需要遵循的基本應用程序要求:
遵循基本的編碼方法指南,把進(jìn)程與不使用或訪(fǎng)問(wèn)全局變量的命令行參數配合使用。
在進(jìn)程內包含基本文檔,用于描述進(jìn)程的功能、使用的命令行參數和返回的結果。
確保代碼通過(guò)語(yǔ)法檢查和Vivado設計套件提供的lint工具的檢查。
對每個(gè)進(jìn)程至少進(jìn)行一次基本測試,確保代碼的運行和行為基本符合預期。
GITHUB上的TCL庫
賽靈思Tcl庫托管在名為GitHub.com的第三方網(wǎng)站上。該庫使用版本控制工具來(lái)保證分布開(kāi)發(fā)工作以可控方式進(jìn)行。這個(gè)過(guò)程的關(guān)鍵就是Git,一種常見(jiàn)的開(kāi)源分布式版本控制工具,常用于Linux。如果要訪(fǎng)問(wèn)Tcl庫以提交和測試代碼,可以在GitHub.com上注冊一個(gè)免費賬號,安裝和設置Git。GitHub提供供Windows PC機使用的Git工具安裝版本。Linux機器一般已經(jīng)安裝有,或是可通過(guò)標準軟件包安裝。GitHub提供輔導資料,幫助用戶(hù)入門(mén)Git。
用戶(hù)注冊得到GitHub賬號后,就可以按下列步驟向Tcl庫提供代碼:
1. 復制賽靈思Tcl庫主庫。這樣可以在用戶(hù)的測試環(huán)境(Sandbox)中創(chuàng )建一個(gè)本地復本,便于用戶(hù)在本地開(kāi)發(fā)和測試,避免給其他應用程序造成影響。
2. 遵循按照應用程序名稱(chēng)及企業(yè)或GitHub名稱(chēng)確立的指引,把自己的新代碼放在正確的目錄中。使用標準Git添加命令。
3. 使用本地庫中的Vivado設計套件,調用注冊代碼和生成Catalog.xml文件所需的命令。這是用戶(hù)所需的三個(gè)文件之一。另兩個(gè)是軟件包索引文件和Tcl索引文件。
4. 在另一個(gè)位置打開(kāi)Vivado設計套件,轉到本地庫,然后測試自己的應用程序。運行Linter和本地測試,直至對所有運行情況滿(mǎn)意為止。
5. 確認修改,并提供信息簡(jiǎn)要介紹所做的改動(dòng)。
6. 發(fā)送申請允許提交代碼到tclstore@xilinx.com的電子郵件。說(shuō)明是否想要創(chuàng )建新應用程序,準備如何命名該新應用程序。如果想要修改現有應用程序或是把代碼提供給現有應用程序,應明確說(shuō)明。另外需要取得應用程序負責人的許可。
7. 使用Web瀏覽器轉到GitHub.com,發(fā)出拉請求。這樣會(huì )正式啟動(dòng)把用戶(hù)提供的代碼合并到庫中的流程。應適當與“守門(mén)員”和應用程序負責人合作,通過(guò)GitHub和電子郵件解決任何問(wèn)題。
8. 恭喜!幫助大家是一件快樂(lè )的事情。

圖2:賽靈思Tcl庫提交應用程序的工作流程歷經(jīng)幾個(gè)非連續步驟
圖2所示的是提交應用程序的工作流程示意圖。
細枝末節
賽靈思Tcl庫屬于開(kāi)源庫,沒(méi)有為商業(yè)化提供的代碼或用提供的代碼收費提供機制。提交給Tcl庫的應用程序可以通過(guò)開(kāi)源項目中常用的BSD許可證,供各類(lèi)衍生作品免費使用。為便于提供的代碼被大家接受和發(fā)布,向Tcl庫提供的代碼應包含BSD許可證的版本。如果有企業(yè)或用戶(hù)不想把自己的知識產(chǎn)權發(fā)布到公共域,Vivado設計套件也可照搬發(fā)出拉請求前測試工作所采用的機制,為本地版本的Tcl庫提供支持。
此外由于該項目使用GitHub進(jìn)行托管,提交人在注冊賬號時(shí)必須同意GitHub的服務(wù)條款,因為這屬于第三方服務(wù)。
應用程序庫中的應用程序由用戶(hù)社區開(kāi)發(fā)和支持。這意味著(zhù)賽靈思技術(shù)支持部未接受過(guò)與該功能有關(guān)的培訓,無(wú)法回答與Tcl代碼有關(guān)的問(wèn)題。請直接把這些應用程序的支持性問(wèn)題提交到賽靈思用戶(hù)論壇上。如果發(fā)現代碼段中存在的缺陷或問(wèn)題,可以直接在GitHub.com項目中備案并跟蹤。由于這屬于開(kāi)源開(kāi)發(fā)模式,我們鼓勵用戶(hù)修改這些問(wèn)題,改善代碼質(zhì)量,為所有用戶(hù)造福,就如同Linux一樣。
發(fā)展規劃
Vivado 2014.1版本推出Tcl庫只是一個(gè)開(kāi)始。賽靈思今年將不斷改進(jìn)Tcl庫,落實(shí)其搜索應用程序和進(jìn)程的能力,簡(jiǎn)化功能查找工作。賽靈思將提供一種無(wú)需安裝應用程序即可瀏覽和查看源代碼的途徑。此外賽靈思還考慮提供一種評價(jià)機制,用戶(hù)可評定一星到五星等級,并可選擇提供書(shū)面評語(yǔ)。這樣便于人們?yōu)檩^受歡迎的代碼留下反饋意見(jiàn)。
賽靈思還準備根據應用類(lèi)別提供篩選功能,實(shí)現更好的分類(lèi)。例如按仿真、綜合、實(shí)現、項目和網(wǎng)表實(shí)用工具分類(lèi)。隨著(zhù)庫規模越來(lái)越大,賽靈思可能會(huì )增加分類(lèi)數量,豐富應用程序門(mén)類(lèi),以體現提交的代碼的多樣性。
賽靈思希望盡量簡(jiǎn)化應用程序的提交工作,因此可能會(huì )探索讓用戶(hù)通過(guò)電子郵件提交Tcl腳本的途徑,從而盡量減少支持工作量,避免繞道GitHub。這個(gè)過(guò)程的無(wú)控性質(zhì)與目前的安裝方案不對接,故只是作為例子介紹。
世界各地有成千上萬(wàn)的用戶(hù)在使用Vivado設計套件,有數以百計的企業(yè)已經(jīng)采用UltraFast設計方法。賽靈思Tcl庫提供了一個(gè)新的開(kāi)源項目,旨在讓賽靈思、賽靈思合作伙伴和客戶(hù)之間共享Tcl腳本,從而可以進(jìn)一步提高設計人員生產(chǎn)力。
評論