編 者 按
當(dāng)在SpinalHDL中調(diào)用別人的RTL代碼時(shí),需要采用BlackBox進(jìn)行封裝。對于大多數(shù)場景,想必小伙伴們都已輕車熟路。今天著重來看下當(dāng)RTL代碼的接口中存在數(shù)組形式的接口時(shí)如何處理。
合并數(shù)組和非合并數(shù)組 在開始之前先了解兩個(gè)概念:合并數(shù)組與非合并數(shù)組。在SystemVerilog中,關(guān)于可綜合的數(shù)組存在兩種形式:
wire [1:0][7:0] data0; //合并數(shù)組 wire [7:0] data1[1:0]; //非合并數(shù)組 ? 在仿真方面,合并數(shù)組是緊密排列的,而非合并數(shù)組則是按照內(nèi)存對齊的形式進(jìn)行排列(電路綜合中則無需考慮):
相應(yīng)的,合并數(shù)組則可以作為一個(gè)整體進(jìn)行賦值,而非合并數(shù)組則不可以:
而合并數(shù)組與非合并數(shù)組,則可以通過SystemVerilog中所提供的流操作符進(jìn)行相互轉(zhuǎn)換處理(是可以綜合的):
? ?
》BlackBox封裝
在了解了上面的背景知識之后,再來看如何這種數(shù)組類場景如何封裝至BlackBox。兩條規(guī)則:
1、BlackBox封裝針對數(shù)組類接口僅能支持合并數(shù)組類型。
2、當(dāng)接口中存在非合并數(shù)組接口時(shí)則需手動封裝一層通過流操作符將非合并數(shù)組轉(zhuǎn)換為合并數(shù)組。
基于上面的規(guī)則,可以進(jìn)行數(shù)組接口的BlackBox封裝。
看下面的RTL代碼示例:
該模塊輸入,輸出均為一個(gè)合并數(shù)組,實(shí)現(xiàn)功能為兩個(gè)元素的數(shù)據(jù)交換。我們在進(jìn)行封裝BlackBox時(shí)可采用下面的封裝形式:
這里我們在BlackBox中定義接口時(shí)將合并數(shù)組data_in,data_out均定義為Bits類型,寬度為合并數(shù)組中所有元素的位寬總和(2*8).
(這里面的setInlineVerilog也可不寫,主要是懶得再創(chuàng)建一個(gè)SV文件了。關(guān)于這部分功能可參見《彩——看blackBox的inline功能》)
在進(jìn)行調(diào)用時(shí)就可以和其他調(diào)用沒有區(qū)別了:
進(jìn)行仿真:
結(jié)果非常符合預(yù)期:
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8944瀏覽量
153206 -
封裝
+關(guān)注
關(guān)注
128文章
8509瀏覽量
144798 -
RTL
+關(guān)注
關(guān)注
1文章
388瀏覽量
60668 -
代碼
+關(guān)注
關(guān)注
30文章
4887瀏覽量
70259 -
數(shù)組
+關(guān)注
關(guān)注
1文章
419瀏覽量
26373
原文標(biāo)題:驚!原來SpinalHDL中BlackBox封裝數(shù)組接口如此簡單
文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在SpinalHDL里實(shí)現(xiàn)優(yōu)雅的添加待跟蹤波形信號
在SpinalHDL的設(shè)計(jì)中集成現(xiàn)有RTL設(shè)計(jì)(IP)的渠道——BlackBox
關(guān)于SpinalHDL中的驗(yàn)證覆蓋率收集簡單說明
聊一聊SpinalHDL 1.6.1引入的blackbox inline功能
聊聊SpinalHDL中的FIFO
SpinalHDL是如何讓仿真跑起來的
記錄一個(gè)在使用BlackBox中parameter踩到的坑
在SpinalHDL中的對應(yīng)關(guān)系及聲明形式
SpinalHDL BlackBox時(shí)鐘與復(fù)位

當(dāng)RTL代碼的接口中存在數(shù)組形式的接口時(shí)如何處理?

Verilog代碼封裝后門訪問

評論