之后會漸漸地更新一些關(guān)于Verilog語法,相應(yīng)的Debug的方法和寫程序的方法和注意的事項夫否,大概分三類慢慢進行彻犁,最近一段時間工作比較忙,總結(jié)更新會更貼切實際凰慈,可能沒那么頻繁汞幢。這次說一點Debug的問題,由于同樣的結(jié)果可能會是不同的原因?qū)е碌奈⑽剑@里會說是可能是哪些因素森篷,之后也會慢慢補充總結(jié)。
Debug問題:
1)expect? a? comma豺型,一般是定義的時候少了相應(yīng)的仲智;
比如說,wire【15:0】dout沒有加上姻氨;就會出現(xiàn)這種錯誤钓辆;
2)A net is not a legal lvalue in this context.定義類型錯誤,將wire型定義成了reg型的肴焊,
3)?reg ‘out_valid’ declared in a module/macromodule,cannot also be declaredinput or inout;
這種類型應(yīng)該是模塊之間的定義出現(xiàn)了錯誤岩馍,需要檢查連接模塊之間的連線是否定義成了一樣
4)? SystemVerilognamed argument: use –sv switch to enable this SystemVerilog construct.
一般是在調(diào)用module的時候會出現(xiàn)這種情況;注意在時序
5)?expecting an ’=’ or ‘<=’ sign in an assignment
可能是因為定義錯誤導(dǎo)致的抖韩,時序電路和組合邏輯采用的賦值方式不同,分別采用阻塞賦值和非阻塞賦值等方式疫铜。
6)‘inn1’: undeclaredidentifier沒有聲明相應(yīng)的變量為wire型還是reg型的
7)input/output/inout‘a(chǎn)vg’ declared as vector or array, then redeclared as scalar.(無向量結(jié)構(gòu))
是以下的錯誤茂浮,定義input【15:0】avg;wire?? avg壳咕;沒有加上范圍向量席揽。
8)Part-selectoperator cannot be applied to scalar.
avg <= sum[18:3] + {15’b0, sum[2]} ;這種錯誤,選擇部分的的內(nèi)容也不可以加到向量中去谓厘。前一部分可以采用移位的方式來實現(xiàn)選位的功能幌羞;也可能是由于sum的位寬定義錯誤;(可能都沒有定義位寬竟稳,默認(rèn)為1)
9)bit-select operatorcannot be applied to scalar;單個bit的運算不可以加到向量中去属桦。第8)9)問題可能有sum定義的位寬不對導(dǎo)致(可能都沒有定義位寬熊痴,默認(rèn)為1);也可能是由于verilog不提供相應(yīng)的解決的選定位數(shù)的方法導(dǎo)致的聂宾;
10)port sizes differin port connection.位寬不一致導(dǎo)致的邏輯錯誤果善。
11)illegal out(或者output)port specification.定義輸出的屬性錯誤
12)expecting a rightparenthesis (‘)’)是指少了右括號);相應(yīng)的expecting a semicolon (‘:’)是指少了分號系谐〗砩拢可能是由于在if判斷語句中寫如if ( a= b ),導(dǎo)致的錯誤,對的應(yīng)該為if ( a == b)
13 ) illegal expression primary.可能是類似于將always寫成always這樣的語法錯誤纪他。
14)A Verilog? keyword was found where an identifier wasexpected.程序中出現(xiàn)了相應(yīng)的Verilog的關(guān)鍵字鄙煤,有一個關(guān)鍵字列表,是一些不可以被定義為變量的名字的列表茶袒,這個需要注意梯刚。