1,面對C語言比verilogHDL更加成熟,而且更加可靠,因為verilog
的編譯,查錯工具大都是商業軟件,因此沒有像C語言一樣得到廣泛的應用,各種缺陷也較C來說?較多。基于這樣的原因,在設計算法的硬件電路塊時,一般采用C語言和verilog相結合的方式,利用C語言完善的查錯和編譯環境,設計者可以先設計出一個功能正確的設計單元,以此作為設計比較的標準。然后,把C程序一段一段地改寫成用并型結構(類似于Verilog)描述的C程序,此時還是在C的環境里,使用的依然是C語言。如果運行結果都正確,就將C語言關鍵字用Verilog相應的關鍵字替換,進入Verilog的環境。將測試輸入同時加到C與Verilog兩個單元,將其輸出做比較。這樣很容易發現問題的所在,然后更正,再做測試,直至正確無誤。
2,C語言的代碼是一行一行執行的,屬于順序結構,而verilog是一種硬件描述語言,語句同時進行,屬于并行結構,并且verilog的仿真軟件大多都是順序結構的,所以有很多的問題沒有辦法發現。
3,verilog的輸入輸出函數較少,而C卻多種多樣,因此在轉化上存在很大的問題。C函數調用是沒有時間延時特性的,不同時間調用同一個函數的功能是一樣的,而Verilog中對模塊的不同調用是不同的,即使調用的是同一個模塊,必須用不同的名字來指定。Verilog的語法規則很死,限制很多,能用的判斷語句有限。仿真速度較慢,查錯功能差,錯誤信息不完整。仿真軟件通常也很昂貴,而且不一定可靠。C語言沒有時間關系,轉換后的Verilog程序必須要能做到沒有任何外加的人工延時信號,也就是必須表達為有限狀態機,即RTL級的Verilog,否則將無法使用綜合工具把Verilog源代碼轉化為門級邏輯。
4,verilog與C的常用關鍵字相互轉化如下: