Является ли $readmem синтезируемым в Verilog?

Я пытаюсь реализовать микроконтроллер на FPGA, и мне нужно дать ему ПЗУ для его программы. Если я использую $readmemb, будет ли это правильно синтезировано в ПЗУ? Если нет, то каков стандартный способ сделать это?

1 ответов


Я бы изменил ответ Джорджа, чтобы сказать, что это зависит от инструмента синтеза, или нет $readmemb это синтезируемых.

"Альтере"рекомендуемые стили кодирования HDL руководство включает пример 10-31 (стр. 10-38), который демонстрирует ПЗУ, выведенное из $readmemb (приводится ниже):

module dual_port_rom (
   input [(addr_width-1):0] addr_a, addr_b,
   input clk, 
   output reg [(data_width-1):0] q_a, q_b
);
   parameter data_width = 8;
   parameter addr_width = 8;
   reg [data_width-1:0] rom[2**addr_width-1:0];
   initial // Read the memory contents in the file
           // dual_port_rom_init.txt. 
   begin
      $readmemb("dual_port_rom_init.txt", rom);
   end
   always @ (posedge clk)
   begin
      q_a <= rom[addr_a];
      q_b <= rom[addr_b];
   end
endmodule

аналогично, фирмы Xilinx в XST руководство пользователя гласит:

The $readmemb и