我想設置一個總線等於一個結構的位,爲一個結構數組(s.t.數組大小==總線大小)。我的結構看上去像verilog設置總線等於結構位數組
typedef struct {
//other stuff
logic valid;
} BFRAME_OUTPUT;
而且我已經聲明結構的陣列和公交車一樣
BFRAME_OUTPUT bframe_outs[`BSTACK_SIZE-1:0];
logic [`BSTACK_SIZE-1:0] valid;
我要像做任何的這些簡單地使有效總線等於有效位爲結構數組。
assign valid[`BSTACK_SIZE-1:0] = bframe_outs[`BSTACK_SIZE-1:0].valid;
//
// or
//
for(int i = 0; i < `BSTACK_SIZE; ++i) begin
assign[i] = bframe_outs[i].valid;
end
但是我在嘗試使用VCS模擬時的錯誤:
Error-[XMRE] Cross-module reference resolution error
/modules/branch_stack.sv, 87
Error found while trying to resolve cross-module reference.
token 'bframe_outs'. Originating module 'branch_stack'.
Source info: assign valid[(16 - 1):0] = bframe_outs[(16 - 1):0].valid;
很好的解釋..! –
順便說一句,在SystemVerilog中'Always_comb'優於'always @ *'以處理常量傳播邏輯 –
是的,由於零時間執行保證和其他一些差異,'always_comb'更可取。感謝指針@ dave_59。 – sharvil111