記錄一下verilog重復(fù)例化的兩種方式
0 前言
這段時(shí)間例化了挺多mem,過(guò)程中也了解到了一些新的東西,在這里記錄一下
1 for循環(huán)方式例化方法
先給出 sub_module
要將這個(gè)module分別例化成u_sub_0
和u_sub_1
,并且每個(gè)都例化四次
for循環(huán)的實(shí)現(xiàn)方式如下
來(lái)看看例化后的效果

可以看到,總共4組inst,每組inst中存在兩個(gè)u_sub
接下來(lái)點(diǎn)開(kāi)inst[0]
中的u_sub_0
,看看它的信號(hào)是什么樣的

依次點(diǎn)擊,然后到shell界面粘貼內(nèi)容

此時(shí)可以清晰的看到,這個(gè)din
信號(hào)是來(lái)自哪里,這也體現(xiàn)了,在begin
后命名block的重要性
2 數(shù)組的方式例化
同樣的 sub_module,同樣的例化要求,這次改用數(shù)組的方式進(jìn)行例化
來(lái)看看這次的例化效果

在打印出這種方式的層次化結(jié)構(gòu)


同樣有清晰的辨識(shí)效果
4 一些其他的技巧
對(duì)于二維數(shù)組而言,如果想在verdi中將二維數(shù)組展開(kāi),那么我們需要在dump波形是加上這句話
$fsdbDumpMDA;
這樣就可以在verdi中展開(kāi)二維數(shù)組
當(dāng)一個(gè)數(shù)組范圍比較大不方便分析,可以將數(shù)組進(jìn)行分段,操作如下

比如我要將32 bits位寬的din0信號(hào)分成8 bits位寬,可以這樣設(shè)置

效果如下

實(shí)現(xiàn)了對(duì)信號(hào)的拆分
對(duì)于一些信號(hào),在這種例化方式下拉信號(hào)的波形不是很容易(這個(gè)例子一時(shí)沒(méi)想起來(lái) ?>_<)
要拉出確定的波形可以這樣操作
在波形界面按g
,會(huì)彈出下面這個(gè)框

讓后需要哪個(gè)信號(hào)選中即可添加

