來(lái),看看S家的第509525行PCIe代碼,一個(gè)寄存器在一個(gè)觸發(fā)信號(hào)里面賦值兩次,第一句所有bit直接全部賦值0,第二句部分低bit賦值,信號(hào)本身是9:0,第二句賦值那個(gè)是6:0的寬度。尊貴的ICer,您覺(jué)得這樣可以嗎?
作為當(dāng)代IC designer,看到這種代碼風(fēng)格首先視覺(jué)沖擊就很大,辣眼睛。估計(jì)就沒(méi)有做lint,是不是很像多驅(qū)動(dòng)的罪名?跑一下lint看看報(bào)錯(cuò)情況。
但必須說(shuō)明的是,這是S家的老版本代碼了,硬核功能OK的,仿真行為也正確。所以這種代碼風(fēng)格的設(shè)計(jì)意圖是后一句覆蓋前一句,前一句先把所有bit賦0,后一句再部分低位bit賦值,那么各家綜合工具編譯會(huì)理解錯(cuò)設(shè)計(jì)者意圖嗎?個(gè)人強(qiáng)烈不推薦這種寫(xiě)法,雖然SV語(yǔ)法也支持這種,各家綜合工具編譯結(jié)果可能有偏差,況且前面的高位賦0,綜合工具直接優(yōu)化掉0的部分,那寫(xiě)出來(lái)干嘛?為了接口位寬不變,只是里面用的部分按參數(shù)定義位寬嗎?還不如直接參數(shù)定義總位寬即可,這個(gè)就具體問(wèn)題具體分析,小編造一個(gè)簡(jiǎn)單實(shí)例:
實(shí)踐出真知,寫(xiě)一個(gè)代碼實(shí)踐下:
spyglass運(yùn)行l(wèi)int檢查:
代碼第45行報(bào)出來(lái)2個(gè)warning,我們來(lái)分別解析下兩個(gè)warning:
(一)第一個(gè)warning:STARC05-2.2.3.3,用以發(fā)現(xiàn)initial value assignments to flip-flops in always constructs,我們知道,……下文請(qǐng)移步知識(shí)星球。
審核編輯:湯梓紅
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121162 -
PCIe
+關(guān)注
關(guān)注
15文章
1260瀏覽量
83191 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69049 -
編譯
+關(guān)注
關(guān)注
0文章
661瀏覽量
33041
原文標(biāo)題:解析PCIe第50萬(wàn)行代碼的風(fēng)格
文章出處:【微信號(hào):全棧芯片工程師,微信公眾號(hào):全棧芯片工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論