Индивидуальная привязка для распакованных элементов массива в SystemVerilog - PullRequest
0 голосов
/ 16 ноября 2018

В синтезируемом SystemC я могу связывать каждый элемент вектора портов индивидуально:

SC_MODULE(submodule)
{
    sc_vector<sc_in<int> >  SC_NAMED(in_vec, 3);  
};

SC_MODULE(top) {
    submodule               SC_NAMED(submod_inst);
    sc_signal<int>          SC_NAMED(a);
    sc_signal<int>          SC_NAMED(b);
    sc_signal<int>          SC_NAMED(c);

    SC_CTOR(top) {
        submod_inst.in_vec[0].bind(a);
        submod_inst.in_vec[1].bind(b);
        submod_inst.in_vec[2].bind(c);
    }
};

Есть ли способ сделать то же самое в синтезируемом SystemVerilog?

module submodule (
    input logic[31:0]   in_vec[3];
);

endmodule

module top ();

    logic [31:0] a;
    logic [31:0] b;
    logic [31:0] c;

    submodule submod_inst (
//        What should I put here?
//        .in_vec[0] (a),  /// ERROR!!
//        .in_vec[1] (b),
//        .in_vec[2] (c)
    );


endmodule

1 Ответ

0 голосов
/ 16 ноября 2018

Вы пробовали

.in_vec('{a, b, c})

Или вы можете создать массив и присвоить ему индивидуальное значение.Затем свяжите сигнал массива с субмодулем.

...