關(guān)于Verilog代碼編寫的細(xì)節(jié)
引言
該文章基于汪文祥的《CPU設(shè)計(jì)實(shí)戰(zhàn)》總結(jié)
核心
Verilog編程的核心是面向硬件編程
寫Verilog就是在畫電路
面向硬件電路設(shè)計(jì)的思維: 數(shù)據(jù)通路 + 控制邏輯
CPU設(shè)計(jì)中需要遵守的規(guī)定
-
代碼中禁止出現(xiàn)
initial語句 -
代碼中禁止出現(xiàn)
casex,casez -
代碼中禁止用
#表達(dá)電路延遲 -
時(shí)鐘信號(hào)只能出現(xiàn)在
always語句塊中 -
代碼中帶復(fù)位的觸發(fā)器,要么全部是同步復(fù)位,要么全部是異步復(fù)位
問題錦集
- 出現(xiàn)信號(hào)為
ZRTL里聲明為wire型的變量未被賦值- 模塊調(diào)用的信號(hào)未連接導(dǎo)致信號(hào)懸空
- 信號(hào)為
XRTL里聲明為reg型的變量從未被賦值RTL里多驅(qū)動(dòng)的代碼有時(shí)候也可能導(dǎo)致這種類型的錯(cuò)誤
- 波形停止
- 波形停止是指仿真在某—時(shí)刻停止,再也無法前進(jìn)分毫’而仿真卻顯示仍然在運(yùn)行,這種錯(cuò)誤往往是RTL里存在組合環(huán)路導(dǎo)致的。
組合環(huán)路’是指信號(hào)A的組合邏輯表達(dá)式中某個(gè)產(chǎn)生因子為B’而B的組合邏輯表達(dá)式中又用到了信號(hào)A
- 越沿采樣
- 越沿采樣是指一個(gè)被采樣的信號(hào)在上升沿采樣到了其在上升沿后的值,一般認(rèn)為這是一個(gè)錯(cuò)誤
- 是
RTL里阻塞賦值=和非阻塞賦值<=使用不當(dāng)導(dǎo)致的

浙公網(wǎng)安備 33010602011771號(hào)