Provided by: srecord_1.55-1_i386 bug

NAME

       srec_mif - Memory Initialization File (MIF) format

DESCRIPTION

       This format was invented by Altera.

       An ASCII text file (with the extension .mif) that specifies the initial
       content of a memory block (CAM, RAM, or  ROM),  that  is,  the  initial
       values  for  each address. This file is used during project compilation
       and/or simulation. You can create a Memory Initialization File  in  the
       Memory  Editor,  the In‐System Memory Content Editor, or the Quartus II
       Text Editor.

       A Memory Initialization  File  serves  as  an  input  file  for  memory
       initialization  in  the  Compiler  and  Simulator.  You  can also use a
       Hexadecimal (Intel‐Format) File (.hex) to provide memory initialization
       data.

       A  Memory  Initialization  File  contains  the  initial values for each
       address in the memory. A separate file  is  required  for  each  memory
       block.  In  a  Memory  Initialization File, you must specify the memory
       depth and width values. In addition, you can specify  data  radixes  as
       binary  (BIN), hexadecimal (HEX), octal (OCT), signed decimal (DEC), or
       unsigned decimal (UNS) to display  and  interpret  addresses  and  data
       values. Data values must match the specified data radix.

       When  creating  a  Memory  Initialization  File  in the Quartus II Text
       Editor, you  must  start  with  the  DEPTH,  WIDTH,  ADDRESS_RADIX  and
       DATA_RADIX  keywords.  You  can  use Tab "" and Space " " characters as
       separators, and insert multiple lines of comments with the percent  "%"
       character,  or  a  single  comment  with  double  dash "--" characters.
       Address:data pairs  represent  data  contained  inside  certain  memory
       addresses  and  you  must  place them between the CONTENT BEGIN and END
       keywords, as shown in the following examples.
              %  multiple‐line comment
              multiple‐line comment  %
              -- single‐line comment
              DEPTH = 32;                   -- The size of data in bits
              WIDTH = 8;                    -- The size of memory in words
              ADDRESS_RADIX = HEX;          -- The radix for address values
              DATA_RADIX = BIN;             -- The radix for data values
              CONTENT                       -- start of (address : data pairs)
              BEGIN
              00 : 00000000;                -- memory address : data
              01 : 00000001;
              02 : 00000010;
              03 : 00000011;
              04 : 00000100;
              05 : 00000101;
              06 : 00000110;
              07 : 00000111;
              08 : 00001000;
              09 : 00001001;
              0A : 00001010;
              0B : 00001011;
              0C : 00001100;
              END;

       There are several ways to specify the address and data, as seen in  the
       following table:

       Notation            Interpretation        Example
       A : D;              Addr[A] = D           2 : 4
                                                 Address: 01234567
                                                 Data:    00400000
       [A0..A1] : D;       Addr[A0]   to  [A1]   [0..7] : 6
       (See note below.)   contain data D        Address: 01234567
                                                 Data:    66666666
       [A0..A1] : D0 D1;   Addr[A0] = D0,        [0..7] : 5 6
       (See note below.)   Addr[A0+1] = D1,      Address: 01234567
                           Add [A0+2] = D0,      Data:    56565656
                           Addr[A0+3] = D1,
                           until A0+n = A1
       A : D0 D1 D2;       Addr[A] = D0,         2 : 4 5 6
                           Addr[A+1] = D1,       Address: 01234567
                           Addr[A+2] = D2        Data:    00456000

       Note: The address range forms are limited in SRecord, the range must be
       less than 255 bytes.  SRecord will never write an address range.

       Note:  When  reading MIF file, SRecord will round up the number of bits
       in the WIDTH to be a multiple of 8.  Multi‐byte  values  will  be  laid
       down in memory as big‐endian.

       An ASCII text file (with the extension .mif) that specifies the initial
       content of a memory block (CAM, RAM, or  ROM),  that  is,  the  initial
       values  for each address.  This file is used during project compilation
       and/or simulation.  A MIF contains the initial values for each  address
       in  the  memory.  In a MIF, you are also required to specify the memory
       depth and width values.  In addition, you can specify the radixes  used
       to display and interpret addresses and data values.

SIZE MULTIPLIER

       In  general,  binary  data  will  expand in sized by approximately 3.29
       times when 8‐bit data is represented with this format (16 bit  =  2.75,
       32 bit = 2.47, 64 bit = 2.34).

EXAMPLE

       Following is a sample MIF:
              DEPTH = 32; % Memory depth and width are required %
              % DEPTH is the number of addresses %
              WIDTH = 14; % WIDTH is the number of bits of data per word %
              % DEPTH and WIDTH should be entered as decimal numbers %
              ADDRESS_RADIX = HEX; % Address and value radixes are required %
              DATA_RADIX = HEX; % Enter BIN, DEC, HEX, OCT, or UNS; unless %
                                % otherwise specified, radixes = HEX %
               --Specify values for addresses, which can be single address or range
              CONTENT
              BEGIN
              [0..F]: 3FFF;     % Range: Every address from 0 to F = 3FFF %
              6     :    F;     % Single address: Address 6 = F %
              8     :    F E 5; % Range starting from specific address %
              --                % Addr[8] = F, Addr[9] = E, Addr[A] = 5 %
              END;

REFERENCE

       The   above   information  was  gleaned  from  the  following  sources:
       http://www.altera.com/support/software/nativelink/quartus2/‐
       glossary/def_mif.html
       http://www.mil.ufl.edu/4712/docs/mif_help.pdf

COPYRIGHT

       srec_mif version 1.55
       Copyright  (C)  1998,  1999,  2000, 2001, 2002, 2003, 2004, 2005, 2006,
       2007, 2008, 2009, 2010 Peter Miller

       The srec_mif program comes with ABSOLUTELY NO WARRANTY; for details use
       the ’srec_mif -VERSion License’ command.  This is free software and you
       are welcome to redistribute it under certain  conditions;  for  details
       use the ’srec_mif -VERSion License’ command.

AUTHOR

       Peter Miller   E‐Mail:   pmiller@opensource.org.au
       /\/\*             WWW:   http://miller.emu.id.au/pmiller/