天天看點

chisel相比verilog優勢之一:複用特性

0 緒論

世界由于人這個最大的無厘頭變量,還是比技術本身複雜難懂很多。各種技術的興起與發展總是有其背後的理由的。這篇文章是這個系列的第三篇文章,主要來說明Chisel比Verilog在某些方面具有優勢的理由。

換句話說。為什麼要用Chisel? 它相比于Verilog好在哪兒?

在我看來,Chisel相對于Verilog來講,最大的優勢特性有兩個:

  • Chisel的代碼複用
  • Chisel的設計參數化

分兩次講。這次主要講第一個原因:Chisel的代碼複用。對于數字電路來講,設計子產品主要就是設計兩個東西:端口與邏輯。

chisel相比verilog優勢之一:複用特性

這篇文章的思路也是從這兩個方面展開。如何在高效利用端口的複用提升效率與如何高效的複用邏輯提升效率。

一、端口的複用

在端口方面,verilog子產品在端口的定義與連接配接上異常繁瑣且易出錯。此處介紹在chisel中如何快速的處理該問題。chisel主要通過端口的嵌套、端口的繼承、端口的重載三個方面實作高效的端口代碼複用。

1.1 端口嵌套:實作子產品化端口連接配接

Chisel可以通過子產品化的端口大幅減少端口的定義與連接配接工作量。比如下列案例,Module A與Module B與Module C。

chisel相比verilog優勢之一:複用特性

此處可以定義以下端口。

chisel相比verilog優勢之一:複用特性

子產品A的端口可以利用PORT B與PORT C組合生成,隻需要使用Flipped()函數反向,組合起來即可。

chisel相比verilog優勢之一:複用特性

則三個module連接配接直接使用<>連接配接會節省大量工作量。

chisel相比verilog優勢之一:複用特性

當PORT B與PORT C足夠複雜時,該方法能夠節省大量工作量。

總結:子產品化的端口、靈活用Flipped() 、<>端口連接配接聯合使用可大幅提升端口連接配接效率。

1.2 端口繼承:快速擴充端口

例如,給PORT_CC加一個輸入端口c2.

chisel相比verilog優勢之一:複用特性

實作的verilog如下:

chisel相比verilog優勢之一:複用特性

總結:直接使用extends繼承端口可以快速擴充出新的端口。

1.3 端口重載:友善對端口資料進行改寫

如圖,再添加一個端口PORT_CD, 把c1的位寬改造為8位。

chisel相比verilog優勢之一:複用特性

生成的verilog如下:

chisel相比verilog優勢之一:複用特性

可以看到c1已經變為了8bit.

二、邏輯的複用

2.1 邏輯的繼承:子子產品直接繼承母子產品的邏輯

如下代碼,Module C實作一個加法,Helloworld繼承了ModuleC。雖然在Helloworld沒有實作加法行,但最後的邏輯中包含了加法。

chisel相比verilog優勢之一:複用特性
chisel相比verilog優勢之一:複用特性

總結:子產品内實作的邏輯是會被繼承下來的。一方面可以複用代碼。另一方面可能造成不希望被繼承的邏輯被繼承。

2.2 邏輯的重載:可以修改部分邏輯

例如在Helloworld子產品中重寫c2輸出邏輯,在子子產品的邏輯将會覆寫母子產品。

chisel相比verilog優勢之一:複用特性

實際上生産的verilog代碼如下,變成了減法器。加法不再存在。

chisel相比verilog優勢之一:複用特性

2.3 函數的繼承:顯式的繼承功能而不是繼承邏輯

如下圖所示,如果需要顯式的繼承邏輯功能,需要在Module C中定義一個函數而不是直接把加法實作在Module_C中。

chisel相比verilog優勢之一:複用特性

此時在HelloWorld中直接調用def的add函數即可實作需要的加法功能。

2.4 函數的重載:重行改寫函數

如下圖所示,直接在helloworld裡将add重載為減法(手動狗頭)

chisel相比verilog優勢之一:複用特性

最終生成的verilog如下:

chisel相比verilog優勢之一:複用特性

3 總結

Chisel在實作子產品内部邏輯時和verilog實作并無太大差異。但Chisel相比于verilog在可複用與參數化方面具有較大優勢。本文主要介紹chisel在可複用方面的性質。

總結起來,端口可以利用嵌套、繼承、重載實作最大限度的複用。邏輯也使用函數形式或者純邏輯的繼承與重載實作代碼複用。

個人認為邏輯複用似乎在實際工作中用途有限,但端口的複用機制可大幅減少端口聲明與子產品連接配接工作量。

終于寫的差不多了。下一講寫另一個方面的優勢:參數化。

繼續閱讀