微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

测试台不工作 modelsim 中的 z 和 x 状态

如何解决测试台不工作 modelsim 中的 z 和 x 状态

我在 verilog 上实现了冒泡排序代码。没有任何综合错误,但测试台在modelsim中不起作用。它显示 x 和 z 状态

model.add(Dense(1))

测试平台

module sort #(
    parameter NUM_VALS = 5,parameter SIZE     = 16
)(  input  wire clk,input  wire [NUM_VALS*SIZE-1:0] in,output reg  [NUM_VALS*SIZE-1:0] out
);
    reg [NUM_VALS*SIZE-1:0] sorted_bus;
    always @(posedge clk) begin
        out <= sorted_bus;
    end

    integer i,j;
    reg [SIZE-1:0] temp;
    reg [SIZE-1:0] array [1:NUM_VALS];
    always @* begin
        for (i = 0; i < NUM_VALS; i = i + 1) begin
            array[i+1] = in[i*SIZE +: SIZE];
        end

        for (i = NUM_VALS; i > 0; i = i - 1) begin
            for (j = 1 ; j < i; j = j + 1) begin
                if (array[j] < array[j + 1]) begin
                    temp         = array[j];
                    array[j]     = array[j + 1];
                    array[j + 1] = temp;
                end 
            end
        end

       for (i = 0; i < NUM_VALS; i = i + 1) begin
            sorted_bus[i*SIZE +: SIZE] = array[i+1];
       end
    end
endmodule

enter image description here

解决方法

@dduy_le,我只是看着你的 ModelSim 屏幕,在我看来你还没有真正开始模拟。我认为它是说,一切都编译成功,并且它位于时间 = 0。如果您将时钟放在波形上,(右键单击时钟并发送到 Waves),您将能够验证是否是这种情况或不是。如果它确实表明您还没有脉冲时钟,您可以点击运行(在 0 PS 时间框旁边),这应该会启动 sim。然后,您需要确保运行时间足够长以查看时钟的上升沿。根据测试台中的posedge时钟语句,该时钟沿应将您的 IN 值设置为有效值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。