很多人認為,IC/FPGA屬于設(shè)計范疇。設(shè)計是一個需要設(shè)計師自由創(chuàng)作的過程,怎么可能被一些條條框框所局限呢?其實,設(shè)計規(guī)范化與自由創(chuàng)作之間沒有任何矛盾。它只是制約了那些可能出錯或者低效的行為,令設(shè)計思路更加明朗、設(shè)計效率得到提高、設(shè)計質(zhì)量充分保證。還有人認為,目前在IC/FPGA設(shè)計方面,并沒有類似工業(yè)ISO質(zhì)量管理體系的國際通用標準規(guī)范體系,到底有沒有這樣的規(guī)范呢?
其實這是一個創(chuàng)造、發(fā)展、完善、規(guī)范的過程。比如ISO,就是在現(xiàn)代工業(yè)發(fā)展很多年后,才建立并逐步完善起來,又經(jīng)過一段時間才大規(guī)模的推廣使用。相比較之下,F(xiàn)PGA,甚至整個IT產(chǎn)業(yè),都還屬于正處于高速發(fā)展期,尚未完全成熟。其二,任何大型國際通用規(guī)范體系的雛形,都是由一些企業(yè)內(nèi)部規(guī)范、行業(yè)內(nèi)部規(guī)范逐步整合發(fā)展而成。目前有少量企業(yè)、研究所都有其相應(yīng)的標準,成為通用規(guī)范需要一個過程。
來看一份計數(shù)器規(guī)范:
逐一考慮初值、加1條件、結(jié)束值三要素,且初值必須為0;
使用某一計數(shù)值,須同時滿足加1條件;
結(jié)束條件必須同時滿足加1條件,且結(jié)束值必須是結(jié)束值-1形式(計數(shù)是從0開始的);
取某個數(shù)時,assign形式必須為:(加1條件)&&(cnt==計數(shù)值-1);
每輪計數(shù)周期結(jié)束,計數(shù)器必須歸0;
若要限定范圍,推薦>=和<兩種符號;
先寫always段,條件用名字代替;再assign寫加1條件;最后assign寫結(jié)束條件;
加1條件必須與計數(shù)器嚴格對齊,其它信號一律向計數(shù)器對齊;
命名規(guī)范。如:add_cnt表示加1條件;end_cnt表示結(jié)束條件。
在實際設(shè)計中,考慮邊界值通常要認真思考,而且很容易出錯。在這條規(guī)則中,需要限定范圍推薦使用“>=”和“<”兩種符號。這里嚴格限制一定是“大于或等于”和“小于”,而不能用“大于”“小于或等于”。如要取前8位數(shù),就取cnt>=0 && cnt<8。
該規(guī)則參考編程里的for循環(huán)語句。假如要循環(huán)8次,for循環(huán)的條件通常寫成“i=0;i<8;i++”,前面的0表示開始值,后面的8表示循環(huán)次數(shù)。當然,也可以寫成“i=0;i<=7;i++”,但是這些數(shù)字的意義令人費解。盡管7是從8-1得來,但是多一個-1的思考,完全是畫蛇添足。代碼不夠簡明,而且容易出現(xiàn)混亂。
在這份規(guī)范中,每一條原則都有其內(nèi)在的原因,是從實際工作中凝練而出的,可以用于指導以后工作中通用需求的依據(jù)。
規(guī)范的意義不止于此,更重要的是對于學習者而言是一條捷徑。在初期,不必過多的去糾結(jié)其原因,也就是說你不必去想“規(guī)則是怎么來的”,只需要按照規(guī)則要求去做,即可避免自己慢慢摸索所需要走的彎路。至于規(guī)則的原理,在長期的使用中慢慢就會理解并體會。按照正確的方法在實際中運用,接著在實際工作中反過來加深理解。這是“在戰(zhàn)爭中學習戰(zhàn)爭”的精髓。
-
FPGA
+關(guān)注
關(guān)注
1624文章
21539瀏覽量
600530
原文標題:FPGA規(guī)范化的重要性
文章出處:【微信號:ALIFPGA,微信公眾號:FPGA極客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論