WARNING:Xst:1290:- 分层块 <uut2> 在块 <top> 中未连接。它将从设计中删除

WARNING:Xst:1290: - Hierarchical block <uut2> is unconnected in block <top>. It will be removed from the design

这是我的top模块和rom模块的代码。我没有发现任何错误,但它显示了这个错误,我不知道为什么。

module top (clk,clr, ss, mosi,sck);
  input clk;
  input clr;
  output ss;
  output mosi;
  output sck;

  wire [10:0]address;
  wire[7:0]data;
  wire done,start,mclk,clk_out;

  clock uut1(.clr(clr),.mclk(clk),.clk_out(clk_out)); 
  ROM_Memory uut2(.address(address),.data(data));
  ctrl uut3 (.clr(clr),.clk(clk_out),.address(address),.data(data),.start(start),.done(done)); 
  spi uut4 (.clk(clk_out),.clr(clr),.data(data),.start(start),.done(done),.ss(ss),.mosi(mosi),.sck(sck));
endmodule

ROM模块-

module ROM_Memory(address,data);
  input [10:0] address;
  output [7:0] data;

  reg [7:0]ROM[0:1034];

  initial begin
    $readmemh("preeti.txt",ROM);
  end

  assign data = ROM[address];
endmodule

在 RTL 原理图中显示其余三个模块,仿真也 运行 正常。

您的 top 模块用作将事物相互连接的框架。

您的系统似乎是一个读取 ROM 并通过 SPI 发送其内容的控制器。 ROM在top中有效连接,但是你的模块只显示ROM连接到一对总线(addressdata)。我们不知道这些巴士是否连接到其他地方。它们应该是,但是如果 ctrlspi 不使用 addressdata(例如,因为名称拼写错误),ROM 实际上将连接到无处可去

将此添加到设计中每个 Verilog 文件的开头,这样您就可以捕获由拼写错误的信号名称引起的任何错误:

`default_nettype none

您的 ROM 与您的设计断开连接的另一个原因是您提供的用于初始化它的文件不完整。如果您的 ROM 有 1035 个单元,则必须将它们全部初始化,否则,合成器将丢弃 ROM 寄存器,因此,完整的 ROM_Memory 模块也将被丢弃。

为确保您的 ROM 已完全初始化,请修改您的初始块以添加以下行:

integer i;
initial begin
  for (i=0;i<=1034;i=i+1)  // Prefill all the ROM, so you can use an incomplete file later
    ROM[i] = 8'h00;
  $readmemh("preeti.txt",ROM);  // Initialize up to 1035 cells from preeti.txt
end