Forum Discussion

BrianHG's avatar
BrianHG
Icon for Occasional Contributor rankOccasional Contributor
5 years ago
Solved

How do I make modelsim fwrite/dump an 8 bit array literally in binary.

I'm having trouble finding the right way to dump a memory array from my System Verilog testbench into a file. This is as close as I can get, but, it has 2 problems.

Anytime I try to write character 8'h00, it gets replaced with character 8'h20.

Anytime I try to write character 8'h0A, 2 characters come out, first 8'h0D, then 8'h0A.

Code:

integer fout_pointer;

fout_pointer= $fopen("test_file.bin","w");

for (int i=0;i<256;i++) $fwrite(fout_pointer,"%s",8'(i)) ;

$fclose(fout_pointer);

This code is supposed to generate a file where if I analyze it with a hex editor, it should go from 8'h00 the 8'hFF. But, the 8'h00 position has an 8'h20 and the 8'h0A position has a 8'h0D, then the 8'h0A comes next.

Or, if I made an array:

logic [7:0] array_table [0:255] = '{8'h00, 8'h01, 8'h03, ..... };

Is there a way to binary dump/write that array into a file. And I do not mean an ascii file with binary or hex values in it.

2 Replies