進(jìn)程有命名規(guī)則,使用TCL 中名為“命名空間”的工具。命令的名稱看似比正常的T C L 命令稍顯復(fù)雜, 同時(shí)內(nèi)嵌有“ : : ” 字符。例如XILINX::ULTRAFAST::CHECK_PLL_CONNECTIVITY 用于對(duì)賽靈思器件中的時(shí)鐘修改模塊進(jìn)行連接檢查。該命名法則的目的是確保TCL 代碼的唯一性以及一個(gè)應(yīng)用程序中的某個(gè)進(jìn)程不會(huì)與另一個(gè)應(yīng)用程序中的同名進(jìn)程發(fā)生沖突。命名空間是TCL 的標(biāo)準(zhǔn)特性。
運(yùn)行應(yīng)用程序命令的方法是鍵入包括命名空間在內(nèi)的進(jìn)程的完整合法名稱,并有選擇地輸入任何要求的命令行參數(shù),就和其它TCL 命令一樣。由于這些命令使用標(biāo)準(zhǔn)命名空間,也可選擇導(dǎo)入命令到全局空間中。如果不和任何其他命令名稱發(fā)生沖突,這個(gè)方法是適用的。這樣可以略去命名
空間限定符,只使用進(jìn)程名稱。在上面的例子中,如果把ULTRAFAST 應(yīng)用程序?qū)肴置臻g,無(wú)需命名空間限定符即可直接調(diào)用CHECK_PLL_CONNECTIVITY 命令。
可選擇導(dǎo)入命令到全局空間中。如果不和任何其他命令名稱發(fā)生沖突,這個(gè)方法是適用的。這樣可以略去命名空間限定符,只使用進(jìn)程名稱。在上面的例子中,如果把ULTRAFAST 應(yīng)用程序?qū)肴置臻g,無(wú)需命名空間限定符即可直接調(diào)用CHECK_PLL_CONNECTIVITY 命令。
使用賽靈思TCL 庫(kù)的TCL 應(yīng)用程序簡(jiǎn)單且方便。賽靈思的目標(biāo)是鼓勵(lì)世界各地的開發(fā)團(tuán)隊(duì)使用和共享TCL庫(kù),提升生產(chǎn)力。庫(kù)中只顯示任何給定應(yīng)用程序的最新版本,設(shè)計(jì)人員只能安裝或升級(jí)到所支持的最新版本。當(dāng)然充分利用的最好方式是保證有豐富的有用代碼庫(kù)。賽靈思在庫(kù)中植入
了一整套非常有用的實(shí)用工具和集成腳本,可供用戶當(dāng)作范本研究,掌握如何構(gòu)建自己的可重用TCL 腳本。
向Tcl 庫(kù)提供代碼
有兩種途徑可向Tcl 庫(kù)提供代碼,讓腳本供所有的Vivado 設(shè)計(jì)套件用戶使用。第一個(gè)途徑是修改現(xiàn)有的應(yīng)用程序。第二個(gè)途徑是開發(fā)新應(yīng)用程序,然后提交新應(yīng)用程序申請(qǐng)。要提供代碼給Tcl 庫(kù),用戶需要對(duì)用于版本控制的軟件開發(fā)工具有一定熟悉,或至少有學(xué)習(xí)意愿。
每個(gè)應(yīng)用程序都由一個(gè)人控制,一般是編寫大部分代碼的人,也稱為“應(yīng)用程序負(fù)責(zé)人”。賽靈思庫(kù)在整體上由賽靈思控制,且賽靈思公司負(fù)
責(zé)維護(hù)把應(yīng)用程序發(fā)布到公共域的流程,以保持各應(yīng)用程序之間的基本一致性。賽靈思員工起著質(zhì)量保障“守門員”的作用。
想要修改現(xiàn)有應(yīng)用程序或添加新應(yīng)用程序的“提供人”可與“守門員”和應(yīng)用程序責(zé)任人合作,遵循與其他開源項(xiàng)目一樣的流程,完成提交工作。在代碼托管網(wǎng)站上有個(gè)維基(wiki)用于把這個(gè)流程形成文檔。
所有代碼提交都應(yīng)滿足基本要求。賽靈思盡量讓隨時(shí)可能發(fā)生變化的基本要求項(xiàng)目保持簡(jiǎn)潔,同時(shí)確保合理的用戶體驗(yàn)。下面是用戶需要遵循的基本應(yīng)用程序要求:
? 遵循基本的編碼方法指南,把進(jìn)程與不使用或訪問(wèn)全局變量的命令行參數(shù)配合使用。
? 在進(jìn)程內(nèi)包含基本文檔,用于描述進(jìn)程的功能、使用的命令行參數(shù)和返回的結(jié)果。
? 確保代碼通過(guò)語(yǔ)法檢查和Vivado設(shè)計(jì)套件提供的lint 工具的檢查。
? 對(duì)每個(gè)進(jìn)程至少進(jìn)行一次基本測(cè)試,確保代碼的運(yùn)行和行為基本符合預(yù)期。
GITHUB 上的TCL 庫(kù)
賽靈思Tcl 庫(kù)托管在名為GitHub.com的第三方網(wǎng)站上。該庫(kù)使用版本控制工具來(lái)保證分布開發(fā)工作以可控方式進(jìn)行。這個(gè)過(guò)程的關(guān)鍵就是Git,一種常見的開源分布式版本控制工具,常用于Linux。如果要訪問(wèn)Tcl 庫(kù)以提交和測(cè)試代碼,可以在GitHub.com上注冊(cè)一個(gè)免費(fèi)賬號(hào),安裝和設(shè)置Git。GitHub 提供供Windows PC 機(jī)使用的Git 工具安裝版本。Linux 機(jī)器一般已經(jīng)安裝有,或是可通過(guò)標(biāo)準(zhǔn)軟件包安裝。GitHub 提供輔導(dǎo)資料,幫助用戶入門Git。
用戶注冊(cè)得到GitHub 賬號(hào)后,就可以按下列步驟向Tcl 庫(kù)提供代碼:
1. 復(fù)制賽靈思Tcl 庫(kù)主庫(kù)。這樣可以在用戶的測(cè)試環(huán)境(Sandbox)中創(chuàng)建一個(gè)本地復(fù)本,便于用戶在本地開發(fā)和測(cè)試,避免給其他應(yīng)用程序造成影響。
2. 遵循按照應(yīng)用程序名稱及企業(yè)或GitHub 名稱確立的指引,把自己的新代碼放在正確的目錄中。使用標(biāo)準(zhǔn)Git 添加命令。
3. 使用本地庫(kù)中的Vi v a d o 設(shè)計(jì)套件, 調(diào)用注冊(cè)代碼和生成Catalog.xml 文件所需的命令。這是用戶所需的三個(gè)文件之一。另兩個(gè)是軟件包索引文件和Tcl 索引文件。
4. 在另一個(gè)位置打開Vivado 設(shè)計(jì)套件,轉(zhuǎn)到本地庫(kù),然后測(cè)試自己的應(yīng)用程序。運(yùn)行Linter 和本地測(cè)試,直至對(duì)所有運(yùn)行情況滿意為止。
5. 確認(rèn)修改,并提供信息簡(jiǎn)要介紹所做的改動(dòng)。
6. 發(fā)送申請(qǐng)?jiān)试S提交代碼到tclstore@xilinx.com 的電子郵件。說(shuō)明是否想要?jiǎng)?chuàng)建新應(yīng)用程序,準(zhǔn)備如何命名該新應(yīng)用程序。如果想要修改現(xiàn)有應(yīng)用程序或是把代碼提供給現(xiàn)有應(yīng)用程序,應(yīng)明確說(shuō)明。另外需要取得應(yīng)用程序負(fù)責(zé)人的許可。
7. 使用We b 瀏覽器轉(zhuǎn)到G i t H u b .com,發(fā)出拉請(qǐng)求。這樣會(huì)正式啟動(dòng)把用戶提供的代碼合并到庫(kù)中的流程。應(yīng)適當(dāng)與“守門員”和應(yīng)用程序負(fù)責(zé)人合作, 通過(guò)GitHub 和電子郵件解決任何問(wèn)題。
8. 恭喜!幫助大家是一件快樂(lè)的事情。
圖2 所示的是提交應(yīng)用程序的工作流程示意圖。
圖2—賽靈思Tcl庫(kù)提交應(yīng)用程序的工作流程歷經(jīng)幾個(gè)非連續(xù)步驟
細(xì)枝末節(jié)
賽靈思Tcl 庫(kù)屬于開源庫(kù),沒有為商業(yè)化提供的代碼或用提供的代碼收費(fèi)提供機(jī)制。提交給Tcl 庫(kù)的應(yīng)用程序可以通過(guò)開源項(xiàng)目中常用的BSD 許可證,供各類衍生作品免費(fèi)使用。為便于提供的代碼被大家接受和發(fā)布,向Tcl 庫(kù)提供的代碼應(yīng)包含BSD 許可證的版本。如果有企業(yè)或用戶不想把自己的知識(shí)產(chǎn)權(quán)發(fā)布到公共域,Vivado設(shè)計(jì)套件也可照搬發(fā)出拉請(qǐng)求前測(cè)試工作所采用的機(jī)制,為本地版本的Tcl 庫(kù)提供支持。
此外由于該項(xiàng)目使用GitHub 進(jìn)行托管,提交人在注冊(cè)賬號(hào)時(shí)必須同意GitHub 的服務(wù)條款,因?yàn)檫@屬于第三方服務(wù)。
應(yīng)用程序庫(kù)中的應(yīng)用程序由用戶社區(qū)開發(fā)和支持。這意味著賽靈思技術(shù)支持部未接受過(guò)與該功能有關(guān)的培訓(xùn),無(wú)法回答與Tcl 代碼有關(guān)的問(wèn)題。請(qǐng)直接把這些應(yīng)用程序的支持性問(wèn)題提交到賽靈思用戶論壇上。如果發(fā)現(xiàn)代碼段中存在的缺陷或問(wèn)題,可以直接在GitHub.com 項(xiàng)目中備案并跟蹤。由于這屬于開源開發(fā)模式,我們鼓勵(lì)用戶修改這些問(wèn)題,改善代碼質(zhì)量,為所有用戶造福,就如同Linux 一樣。
發(fā)展規(guī)劃
Vivado 2014.1 版本推出Tcl 庫(kù)只是一個(gè)開始。賽靈思今年將不斷改進(jìn)Tcl 庫(kù),落實(shí)其搜索應(yīng)用程序和進(jìn)程的能力,簡(jiǎn)化功能查找工作。賽靈思將
提供一種無(wú)需安裝應(yīng)用程序即可瀏覽和查看源代碼的途徑。此外賽靈思還考慮提供一種評(píng)價(jià)機(jī)制,用戶可評(píng)定一星到五星等級(jí),并可選擇提供書面評(píng)語(yǔ)。這樣便于人們?yōu)檩^受歡迎的代碼留下反饋意見。
賽靈思還準(zhǔn)備根據(jù)應(yīng)用類別提供篩選功能,實(shí)現(xiàn)更好的分類。例如按仿真、綜合、實(shí)現(xiàn)、項(xiàng)目和網(wǎng)表實(shí)用工具分類。隨著庫(kù)規(guī)模越來(lái)越大,賽靈思可能會(huì)增加分類數(shù)量,豐富應(yīng)用程序門類,以體現(xiàn)提交的代碼的多樣性。
賽靈思希望盡量簡(jiǎn)化應(yīng)用程序的提交工作,因此可能會(huì)探索讓用戶通過(guò)電子郵件提交Tcl 腳本的途徑,從而盡量減少支持工作量,避免繞道GitHub。這個(gè)過(guò)程的無(wú)控性質(zhì)與目前的安裝方案不對(duì)接,故只是作為例子介紹。
世界各地有成千上萬(wàn)的用戶在使用Vivado 設(shè)計(jì)套件,有數(shù)以百計(jì)的企業(yè)已經(jīng)采用UltraFast 設(shè)計(jì)方法。賽靈思Tcl 庫(kù)提供了一個(gè)新的開源項(xiàng)目,旨在讓賽靈思、賽靈思合作伙伴和客戶之間共享Tcl 腳本,從而可以進(jìn)一步提高設(shè)計(jì)人員生產(chǎn)力。
評(píng)論