警告:Xst:1290: - 块<top>中的分层块<uut2>未连接。它将从设计中删除</top> </uut2>

时间:2015-04-17 05:40:45

标签: verilog

这是我的顶级模块和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原理图中显示其余三个模块,模拟运行正常。

1 个答案:

答案 0 :(得分:0)

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

您的系统似乎是一个读取ROM并通过SPI发送其内容的控制器。 ROM在top中有效连接,但您的模块仅显示ROM连接到的一对总线(addressdata)。我们不知道那些公共汽车是否连接到其他地方。它们应该是,但如果ctrlspi不使用addressdata(例如,由于名称拼写错误),则ROM实际上将连接到不通。

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

`default_nettype none

您的ROM与设计断开连接的另一个原因是您提供的用于初始化它的文件不完整。如果您的ROM有1035个单元,则必须初始化所有ROM,否则合成器将丢弃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