yosys - 如何在 Yosys 中使用多个包含同名模块的 IP 核

标签 yosys

考虑一个具有两个 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 版本?

最佳答案

对于这种情况,有必要将两个 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将从ip1设计中导入模块ip1mygate,但是它将把mygate重命名为ip1.mygate。同样,design -import ip1 会将 mygateip2 重命名为 ip2.mygate

关于yosys - 如何在 Yosys 中使用多个包含同名模块的 IP 核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851894/

相关文章:

yosys - Vivado 无法识别 Yosys 生成的 EDIF 文件中的单元

verilog - 如何在 Yosys 的初始 block 中分配 RAM 值?

yosys - 了解为 iCE40 I/O block 生成的比特流

yosys - 如何使用 IceStorm iCE40 FPGA 流程运行综合后仿真

verilog - Yosys 中计算的 verilog 参数

verilog - 用 Yosys 生成 TIE 细胞?

yosys - 使用 yosys 进行门级解析

fpga - iCEstick + yosys - 使用全局设置/重置 (GSR)