recursos relacionados con $ readmemh $ writememh
Pregunta
De repente, se me pide que investigue algún código de banco de pruebas de Verilog que usa mucho $ readmemh y $ writememh. Entendí que básicamente leía en la memoria y escribía en la memoria. Me alegrará si puede señalar algunos recursos relacionados con esas rutinas. PD: busqué en google sin éxito. (Soy muy ... muy nuevo en Verilog)
Solución
Estoy de acuerdo en que no es demasiado fácil encontrar algo sobre readmem / writemem. Puedes encontrar un poco aquí: http://fullchipdesign.com/index_files/readmemh.htm
De todos modos, no hay mucho que decir sobre estas funciones, la sintaxis es:
$readmem[hb]("File",ArrayName,StartAddr,EndAddr)
$writemem[hb]("File",ArrayName,StartAddr,EndAddr)
Verilog es muy exigente con el formato del archivo, la cantidad de bits en el archivo de texto debe coincidir con la cantidad de bits en la matriz.
Te recomiendo que juegues un poco definiendo una matriz, rellenándola con datos, escríbela con writememh / writememb e imprímela después.
Algo como esto debería ayudarlo a comenzar (¡no probado!).
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$writememb("memory_binary.txt", memory);
$writememh("memory_hex.txt", memory);
end
¡Salud!
Otros consejos
Leer el archivo HEX funcionaría así:
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$readmemh("memory_binary.txt", memory);
end