BSACPLD 15 6 ноября, 2019 Опубликовано 6 ноября, 2019 · Жалоба Народ, подскажите, пожалуйста, как обновлять содержимое BRAM (ROM) без перекомпиляции проекта в Vivado. В ISE я это делал через BMM и TCL скрипт, а как это делать в Vivado? Особенно если память синтезируется из Verilog, а не через IP core. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 6 ноября, 2019 Опубликовано 6 ноября, 2019 · Жалоба как вариант https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842458/Understanding+MEMDATA+flow+and+how+to+manually+create+MMI+file Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 6 ноября, 2019 Опубликовано 6 ноября, 2019 · Жалоба Я правильно понял, что данный вариант работает только с microblaze и его нельзя применить для обычной памяти? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 30 6 ноября, 2019 Опубликовано 6 ноября, 2019 · Жалоба MicroZed Chronicles: Updating Block RAM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 6 ноября, 2019 Опубликовано 6 ноября, 2019 · Жалоба 1 hour ago, blackfin said: MicroZed Chronicles: Updating Block RAM С TCL скриптом понятно. Я не понимаю, откуда брать *.mmi файл. В скомпилированном проекте его нет. Память я задаю через Verilog, а не через IP. `timescale 1 ns / 1 ps module avr_cpu_prog_ram #( parameter DATA_SIZE = 4096, parameter DATA_WIDTH = 16, parameter INIT_FILE = "", parameter SIM_INIT = "FALSE" ) ( input clock_a, input clock_b, input addressstall_a, input addressstall_b, input [$clog2(DATA_SIZE)-1:0] address_a, input [$clog2(DATA_SIZE)-1:0] address_b, input [DATA_WIDTH-1:0] data_a, input [DATA_WIDTH-1:0] data_b, input wren_a, input wren_b, input enable_out_a, input enable_out_b, input aclr_out_a, input aclr_out_b, output reg [DATA_WIDTH-1:0] q_a, output reg [DATA_WIDTH-1:0] q_b ) ; reg [$clog2(DATA_SIZE)-1:0] address_reg_a ; wire [$clog2(DATA_SIZE)-1:0] address_mux_a ; reg [$clog2(DATA_SIZE)-1:0] address_reg_b ; wire [$clog2(DATA_SIZE)-1:0] address_mux_b ; reg [DATA_WIDTH-1:0] mem [DATA_SIZE-1:0] /* synthesis syn_ramstyle = "no_rw_check" */ ; initial begin #0.01 ; if (INIT_FILE != "") begin $readmemh (INIT_FILE, mem) ; end if (SIM_INIT == "TRUE") begin address_reg_a <= 0 ; address_reg_b <= 0 ; q_a <= 0 ; q_b <= 0 ; end end assign address_mux_a = (addressstall_a)? address_reg_a : address_a ; always @(posedge clock_a) begin address_reg_a <= address_mux_a ; if (wren_a) mem[address_mux_a] <= data_a ; end always @(posedge clock_a or posedge aclr_out_a) begin if (aclr_out_a) q_a <= 0 ; else if (enable_out_a) q_a <= mem[address_reg_a] ; end assign address_mux_b = (addressstall_b)? address_reg_b : address_b ; always @(posedge clock_b) begin address_reg_b <= address_mux_b ; if (wren_b) mem[address_mux_b] <= data_b ; end always @(posedge clock_b or posedge aclr_out_b) begin if (aclr_out_b) q_b <= 0 ; else if (enable_out_b) q_b <= mem[address_reg_b] ; end endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 11 ноября, 2019 Опубликовано 11 ноября, 2019 · Жалоба Сделал память через макрос, теперь *.mmi файл создается на этапе имплементации. Но возникла вторая проблема. После выполнения updatemem я получаю некорректные данные в случае если память задаваемая через макрос занимает более чем один BRAM (32768 бит). Причем применить updatemem к памяти размером более 32768 мне удалось только в 2019.2. В 2018.3 выдавалась ошибка о превышении размера 32768 бит. Если память задаваемая через макрос меньше одного BRAM, то обновление происходит корректно. Может быть можно как-то сконвертировать *.mmi в *.bmm и воспользоваться data2mem? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 11 ноября, 2019 Опубликовано 11 ноября, 2019 · Жалоба Откуда берется ошибка разобрался. UG898 Although bit-lane parity is defined in the MMI file, it is not supported by UpdateMEM. Теперь вопрос как заставить vivado не использовать parity при синтезе BRAM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KeisN13 11 3 декабря, 2019 Опубликовано 3 декабря, 2019 (изменено) · Жалоба не совсем без перекомпиляции, но обновление за несколько секунд без перетрассировки проекта. http://fpga-systems.ru/publ/xilinx/xilinx_vivado/eco_flow_v_vivado_ili_rabota_v_rezhime_redaktirovanija_netlista/8-1-0-86 Изменено 3 декабря, 2019 пользователем KeisN13 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться