我如何使用多个 IP 核,它们都包含与 Yosys 同名的模块
How can I use multiple IP cores that both contain modules with the same names with Yosys
考虑一个具有两个 IP 内核 ip1.v
和 ip2.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
版本?
对于这种情况,有必要将两个 IP 核作为单独的设计进行阅读和阐述,然后 link 通过 "importing" 将各个 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
将从ip1
设计中导入模块ip1
和mygate
,但会将mygate
重命名为ip1.mygate
.同样,design -import ip1
会将 mygate
从 ip2
重命名为 ip2.mygate
。
考虑一个具有两个 IP 内核 ip1.v
和 ip2.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
版本?
对于这种情况,有必要将两个 IP 核作为单独的设计进行阅读和阐述,然后 link 通过 "importing" 将各个 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
将从ip1
设计中导入模块ip1
和mygate
,但会将mygate
重命名为ip1.mygate
.同样,design -import ip1
会将 mygate
从 ip2
重命名为 ip2.mygate
。