我试图用不同的实例名称多次实例化verilog模块,以便它依赖于宏定义。它是这样的
`define CHAN_NO 0
mymodule #(.chan_no(`CHAN_NO)) inst<CHAN_NO> (
.Addr (ADDR_A )
,.Data (DATA_A )
,.Clk (CLK )
);
当然这是一个简化的例子,因为实例化和宏来自不同的文件 这是可能的,如果是的话,这种实例化的正确方法是什么。
答案 0 :(得分:2)
当然有可能。你应该使用generate block:
pages = [
{title: 'My Trips', component: TripsPage},
{title: 'Messages', component: MessagesPage},
{title: 'Profile', component: ProfilePage}
];
精化后树应该如下所示(例如CHAN_NO = 3):
genvar i;
generate
for (i = 0; i < `CHAN_NO; i=i+1)
begin : mymodule_instance
mymodule #(.chan_no(i)) mymodule_inst (
.Addr (ADDR_A )
,.Data (DATA_A )
,.Clk (CLK )
);
end
endgenerate
修改强> 如果您想拥有一个依赖于宏的实例名称,那么您可以这样做:
mymodule_instance[0]
mymodule_inst
mymodule_instance[1]
mymodule_inst
mymodule_instance[2]
mymodule_inst