2

考虑一个具有两个 IP 内核的设计ip1.vip2.v每个内核声明一个(不同的)具有相同名称的模块。

例如,内容ip1.v

module ip1 (input A, B, C, output X);
  wire T;
  mygate gate_0 (.I0(A), .I1(B), .O(T));
  mygate gate_1 (.I0(T), .I1(C), .O(X));
endmodule

module mygate (input I0, I1, output O);
  assign O = I0 & I1;
endmodule

和内容ip2.v

module ip2 (input A, B, C, output X);
  wire T;
  mygate gate_0 (.I0(A), .I1(B), .O(T));
  mygate gate_1 (.I0(T), .I1(C), .O(X));
endmodule

module mygate (input I0, I1, output O);
  assign O = I0 | I1;
endmodule

然后是使用两个 IP 核的顶级模块 ( top.v):

module top (input A, B, C, output X, Y);
  ip1 ip1_inst (.A(A), .B(B), .C(C), .X(X));
  ip2 ip2_inst (.A(A), .B(B), .C(C), .X(Y));
endmodule

我怎样才能处理这样的设计,以便每个 IP 内核都能看到它自己的版本mygate

4

1 回答 1

2

对于这种情况,有必要将两个 IP 核作为单独的设计进行阅读和阐述,然后通过将各个 IP 核的两个设计“导入”到顶层设计中将它们全部链接在一起:

# Read IP core 1
read_verilog ip1.v
hierarchy -top ip1
design -stash ip1

# Read IP core 2
read_verilog ip2.v
hierarchy -top ip2
design -stash ip2

# Read top level and link design
read_verilog top.v
design -import ip1
design -import ip2
synth -top top

该命令design -import ip1将导入模块ip1mygateip1设计中导入,但它会重命名mygateip1.mygate. 同样design -import ip1将重命名mygate为。ip2ip2.mygate

于 2017-06-30T17:20:13.697 回答