高質(zhì)量6要素
高質(zhì)量的verilog代碼至少需要包含以下幾個(gè)要素:可讀性、功能、性能、標(biāo)準(zhǔn)化、穩(wěn)定性、可定位。
標(biāo)準(zhǔn)化:iterlaken MAC PCIE 這些模塊的設(shè)計(jì)必須要符合協(xié)議標(biāo)準(zhǔn),能夠與其他廠商的產(chǎn)品進(jìn)行正常對(duì)接。
可讀性:代碼是容易閱讀,是否容易理解原理
功能:功能是否正確,功能點(diǎn)是否全面,是否靈活可配置。
性能:讀寫、傳輸速率是否達(dá)標(biāo)
穩(wěn)定性:跨時(shí)鐘等是否處理細(xì)致,異常情況代碼是否能夠保持穩(wěn)定,是否能夠自恢復(fù),狀態(tài)機(jī)是否會(huì)卡住。
可定位:定位手段是否添加全面、遇到故障,是否能夠快速定位。
1、可讀性
代碼是否容易閱讀理解,需要注意代碼格式、關(guān)鍵信號(hào)命令、盡量多添加注釋。
代碼格式:代碼編寫需要采用普遍的格式、如空格的插入、if else的位置放置、特別是復(fù)雜的邏輯判斷,該斷行的需要斷行,該添加括號(hào)的地方添加括號(hào)。
信號(hào)命名:信號(hào)命名需要注意:如請(qǐng)求信號(hào)以req命令,響應(yīng)信號(hào)ack,流控信號(hào)fc,信號(hào)命令需要通俗易懂,采用常見(jiàn)的縮寫。
注釋清晰:一定要多寫注釋,很多代碼時(shí)間長(zhǎng)了,自己都看不明白了,就算能看明白,也需要花費(fèi)不少時(shí)間
2、功能達(dá)標(biāo)
代碼功能點(diǎn)是否全面。
各個(gè)功能是否能夠正常實(shí)現(xiàn)。
各功能是否靈活可配置,如是否具有使能開(kāi)關(guān)
3、性能達(dá)標(biāo)
模塊性能是否達(dá)標(biāo)。設(shè)計(jì)是否已考慮各項(xiàng)性能指標(biāo),如數(shù)據(jù)通路常見(jiàn)的指標(biāo)為BPS和PPS。
極限(最佳速率和最差速率)和正常場(chǎng)景下性能是否達(dá)標(biāo)。
特殊包長(zhǎng)場(chǎng)景是否已考慮。是否能夠及時(shí)處理突發(fā)數(shù)據(jù)。
4、標(biāo)準(zhǔn)化
模塊設(shè)計(jì)是否符合標(biāo)準(zhǔn)協(xié)議,如IEEE802.3 MAC 模塊設(shè)計(jì)是否符合標(biāo)準(zhǔn),PCIE 是否能夠與其他廠商的PCIE進(jìn)行對(duì)接傳輸數(shù)據(jù),且與主機(jī)相關(guān)的各項(xiàng)能力結(jié)構(gòu)能夠與主機(jī)正常交互。如interlaken接口是否能夠與FPGA的interlaken進(jìn)行正常對(duì)接。
5、穩(wěn)定性
代碼的穩(wěn)定性需要關(guān)注常見(jiàn)的spyglass lint cdc、跨時(shí)鐘信號(hào)、代碼是否能夠自恢復(fù)。
常見(jiàn)spyglass lint檢查:信號(hào)位寬是否匹配,技術(shù)是否會(huì)溢出、是否產(chǎn)生了latch等等
跨時(shí)鐘:跨時(shí)鐘的信號(hào)是否都進(jìn)行了同步處理、單bit、多bit信號(hào)是否正確同步。電平單bit、多bit數(shù)據(jù)、單bit脈沖、復(fù)位信號(hào)的同步方式各不相同,是否都正確同步了。信號(hào)同步的max_delay 延時(shí)是否符合要求。
自恢復(fù):異常情況下,模塊是否能夠自行恢復(fù),當(dāng)異常情況消失后,模塊是否夠能夠正常工作。異常情況有:
1)不符合規(guī)定的信號(hào)輸入:輸入信號(hào)eop_in/sop_in/vld_in/error_in的有效狀態(tài)有一定的規(guī)律,不符合規(guī)律的輸入信號(hào)是否會(huì)導(dǎo)致模塊無(wú)法正常處理后面正確的輸入數(shù)據(jù)。
2)狀態(tài)機(jī)沒(méi)有響應(yīng):狀態(tài)機(jī)跳轉(zhuǎn)信號(hào)沒(méi)有響應(yīng),是否會(huì)導(dǎo)致?tīng)顟B(tài)機(jī)卡死,無(wú)法跳轉(zhuǎn)到IDLE狀態(tài)。
3)關(guān)鍵信號(hào)異常跳變:偶發(fā)性強(qiáng)電磁反應(yīng)導(dǎo)致的信號(hào)跳變是否會(huì)導(dǎo)致模塊一直無(wú)法正常工作。
6、可定位
常見(jiàn)的定位手段是否添加全面,比如:各類統(tǒng)計(jì)計(jì)數(shù)、關(guān)鍵信號(hào)狀態(tài)是否可讀、中斷信號(hào)添加是否全面。
統(tǒng)計(jì)計(jì)數(shù):模塊進(jìn)入數(shù)據(jù)包多少,輸出數(shù)據(jù)包多少。完成了多少次xx操作。
關(guān)鍵信號(hào)可讀:狀態(tài)機(jī)當(dāng)前狀態(tài)要求可讀,關(guān)鍵信號(hào)要求可讀
中斷:fifo和ram的寫溢出、空讀、ECC、parity要求接入中斷。
教你如何書寫高質(zhì)量的Verilog代碼?
-
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110101 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1733瀏覽量
131483 -
編程
+關(guān)注
關(guān)注
88文章
3616瀏覽量
93738 -
中斷
+關(guān)注
關(guān)注
5文章
898瀏覽量
41502 -
代碼
+關(guān)注
關(guān)注
30文章
4788瀏覽量
68616
原文標(biāo)題:高質(zhì)量的verilog代碼是什么樣的
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論