1 for循環方式例化方法
先給出 sub_module
module sub(
input [7:0] din,
output logic [7:0] dout
);
assign dout = din;
endmodule
要將這個module分別例化成u_sub_0
和u_sub_1
,并且每個都例化四次
for循環的實現方式如下
module top(
input [8*4-1 : 0] din0,
input [8*4-1 : 0] din1,
output logic [8*4-1 : 0] dout0,
output logic [8*4-1 : 0] dout1
);
genvar i;
generate for(i=0; i<4; i++) begin:inst
sub u_sub_0 (
//output
.dout(dout0[i*8 +: 8]),
//input
.din(din0[i*8 +: 8])
);
sub u_sub_1 (
//output
.dout(dout1[i*8 +: 8]),
//input
.din(din1[i*8 +: 8])
);
end
endgenerate
endmodule
來看看例化后的效果
可以看到,總共4組inst,每組inst中存在兩個u_sub
接下來點開inst[0]
中的u_sub_0
,看看它的信號是什么樣的
依次點擊,然后到shell界面粘貼內容
此時可以清晰的看到,這個din
信號是來自哪里,這也體現了,在begin
后命名block的重要性
2 數組的方式例化
同樣的 sub_module,同樣的例化要求,這次改用數組的方式進行例化
module top(
input [8*4-1 : 0] din0,
input [8*4-1 : 0] din1,
output logic [8*4-1 : 0] dout0,
output logic [8*4-1 : 0] dout1
);
sub u_sub_0 (
//output
.dout(dout0),
//input
.din(din0)
);
sub u_sub_1 (
//output
.dout(dout1),
//input
.din(din1)
);
endmodule
來看看這次的例化效果
在打印出這種方式的層次化結構
同樣有清晰的辨識效果
4 一些其他的技巧
對于二維數組而言,如果想在verdi中將二維數組展開,那么我們需要在dump波形是加上這句話
$fsdbDumpMDA;
這樣就可以在verdi中展開二維數組
當一個數組范圍比較大不方便分析,可以將數組進行分段,操作如下
比如我要將32 bits位寬的din0信號分成8 bits位寬,可以這樣設置
效果如下
實現了對信號的拆分
對于一些信號,在這種例化方式下拉信號的波形不是很容易(這個例子一時沒想起來 >_<)
要拉出確定的波形可以這樣操作
在波形界面按g
,會彈出下面這個框
讓后需要哪個信號選中即可添加
-
Shell
+關注
關注
1文章
366瀏覽量
23475 -
dump
+關注
關注
0文章
13瀏覽量
9525 -
Verilog設計
+關注
關注
0文章
20瀏覽量
6551
發布評論請先 登錄
相關推薦
開關量和模擬量是PLC初期使用最多的兩種輸入輸出方式?
兩種verilog語言寫法的實現問題!求解答~
請問IC設計中讀寫電路的設計中如何實現讀寫和連續讀寫兩種方式?
SQL語言的兩種使用方式
兩種穿戴健身記錄儀的方式
淺析標準的Verilog對語句有兩種分組方式
![淺析標準的<b class='flag-5'>Verilog</b>對語句有<b class='flag-5'>兩種</b>分組<b class='flag-5'>方式</b>](https://file.elecfans.com/web2/M00/69/44/pYYBAGMhRGCAPrwvAAHJBx5m7Ls680.jpg)
評論