Как просмотреть форму волны памяти?
Я не могу посмотреть memory
используя gtkwave:
module internal_memory(
output [31:0] hrdata,
input mem_enable,
input [31:0] haddr,
input [31:0] hwdata,
input hwrite,
input hreset,
input hclk
);
reg [31:0] memory [0:1023]; // <-------------- can't find its waveform
reg [31:0] internal_hrdata;
always @(posedge hclk, hreset) begin
if (!hreset) begin
internal_hrdata <= 32'h0000_0000;
end
else begin
if (mem_enable) begin
if (hwrite) begin
memory[haddr] <= hwdata;
end
else begin
internal_hrdata <= memory[haddr];
end
end
end
end
assign hrdata = internal_hrdata;
endmodule
Что вы можете предложить для просмотра формы волны memory
?
Или как отобразить двумерный массив в gtkwave или в любом.vcd/ Waveform Viewer?
2 ответа
Вы должны сначала сбросить память в файл VCD. Два симулятора, с которыми я знаком, требуют дополнительных опций симуляции для сброса памяти в VCD; возможно, ваш тоже.
Я знаю, что это старый вопрос, но мне недавно пришлось просматривать смоделированную память с помощью Icarus/GTKWave для финального проекта курса, и я хотел ответить на него всем, кто читает этот вопрос. Мне удалось найти ответ в заметках о переносимости Icarus Verilog (см. Источник).
В Icarus вам нужно выгрузить каждое слово массива (место в памяти), которое вы хотите просмотреть явно:
module top;
reg [7:0] array [2:0];
initial begin
$dumpvars(0, array[0], array[1]);
...
end
endmodule
Вы можете автоматизировать сброс всех ячеек в массиве с помощью цикла for:
module top;
integer idx; // need integer for loop
reg [7:0] array [2:0];
initial begin
for (idx = 0; idx < 2; idx = idx + 1) $dumpvars(0, array[idx]);
...
end
endmodule
Источник: http://iverilog.wikia.com/wiki/Verilog_Portability_Notes (Сброс слов массива)