OLD_SHURiK 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба Всем привет! Active-HDL 10.3 64bit. библиотека "Active-HDL_10.3.3558.6081_x64_for_Xilinx_VIVADO_2016.4_VHDL_Libraries" Сделана память с использованием BRAM_SDP_MACRO. Моделирование записи и чтения проходит нормально! Но ! При попытке инициализировать память из файла *.coe происходит ошибка ! # ELAB2: Create instances ... # RUNTIME: Fatal Error: RUNTIME_0047 RAMB18E1.vhd (1115): Index 2 out of range (1 to 1). # KERNEL: Time: 0 ps, Iteration: 0, TOP instance. # ELAB2: Last instance before error: /xil_bram_1k_16/BRAM_SDP_MACRO_inst/sdp_bl/ramb18_dp_bl/ram18_bl/TDP/RAMB18E1_TDP_inst # KERNEL: Error: E8005 : Kernel process initialization failed. # VSIM: Error: Simulation initialization failed. Где порылась собака?! Кто подскажет ? Memory Spoiler ---------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 27.11.2020 11:03:06 -- Design Name: -- Module Name: xil_bram_8k_4 - Behavioral -- Project Name: -- Target Devices: -- Tool Versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- ---------------------------------------------------------------------------------- Library UNISIM; use UNISIM.vcomponents.all; Library UNIMACRO; use UNIMACRO.vcomponents.all; library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx leaf cells in this code. --library UNISIM; --use UNISIM.VComponents.all; entity xil_bram_1k_16 is port ( clk : in std_logic; di : in std_logic_vector(15 downto 0); wen : in std_logic_vector(1 downto 0); wraddr : in std_logic_vector(9 downto 0); rdaddr : in std_logic_vector(9 downto 0); do : out std_logic_vector(15 downto 0) ); end xil_bram_1k_16; architecture Behavioral of xil_bram_1k_16 is begin --BRAM_SDP_MACRO : In order to incorporate this function into the design, -- VHDL : the following instance declaration needs to be placed -- instance : in the architecture body of the design code. The -- declaration : (BRAM_SDP_MACRO_inst) and/or the port declarations -- code : after the "=>" assignment maybe changed to properly -- : reference and connect this function to the design. -- : All inputs and outputs must be connected. -- Library : In addition to adding the instance declaration, a use -- declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library -- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation. -- Copy the following four statements and paste them before the -- Entity declaration, unless they already exist. -- <-----Cut code below this line and paste into the architecture body----> -- BRAM_SDP_MACRO: Simple Dual Port RAM -- Artix-7 -- Xilinx HDL Language Template, version 2018.2 -- Note - This Unimacro model assumes the port directions to be "downto". -- Simulation of this model with "to" in the port directions could lead to erroneous results. ----------------------------------------------------------------------- -- READ_WIDTH | BRAM_SIZE | READ Depth | RDADDR Width | -- -- WRITE_WIDTH | | WRITE Depth | WRADDR Width | WE Width -- -- ============|===========|=============|==============|============-- -- 37-72 | "36Kb" | 512 | 9-bit | 8-bit -- -- 19-36 | "36Kb" | 1024 | 10-bit | 4-bit -- -- 19-36 | "18Kb" | 512 | 9-bit | 4-bit -- -- 10-18 | "36Kb" | 2048 | 11-bit | 2-bit -- ---------------+-----------+-------------+--------------+-------------- -- 10-18 | "18Kb" | 1024 | 10-bit | 2-bit -- 1024x18 ---------------+-----------+-------------+--------------+-------------- -- 5-9 | "36Kb" | 4096 | 12-bit | 1-bit -- -- 5-9 | "18Kb" | 2048 | 11-bit | 1-bit -- -- 3-4 | "36Kb" | 8192 | 13-bit | 1-bit -- -- 3-4 | "18Kb" | 4096 | 12-bit | 1-bit -- -- 2 | "36Kb" | 16384 | 14-bit | 1-bit -- -- 2 | "18Kb" | 8192 | 13-bit | 1-bit -- -- 1 | "36Kb" | 32768 | 15-bit | 1-bit -- -- 1 | "18Kb" | 16384 | 14-bit | 1-bit -- ----------------------------------------------------------------------- BRAM_SDP_MACRO_inst : BRAM_SDP_MACRO generic map ( -- Target BRAM, "18Kb" or "36Kb" BRAM_SIZE => "18Kb", -- Target device: "VIRTEX5", "VIRTEX6", "7SERIES", "SPARTAN6" DEVICE => "7SERIES", -- Valid values are 1-72 (37-72 only valid when BRAM_SIZE="36Kb") WRITE_WIDTH => 16, -- Valid values are 1-72 (37-72 only valid when BRAM_SIZE="36Kb") READ_WIDTH => 16, -- Optional output register (0 or 1) DO_REG => 1, -- Collision check enable "ALL", "WARNING_ONLY", "GENERATE_X_ONLY" or "NONE" SIM_COLLISION_CHECK => "WARNING_ONLY", -- Set/Reset value for port output SRVAL => X"000000000000000000", -- Specify "READ_FIRST" for same clock or synchronous clocks -- Specify "WRITE_FIRST for asynchrononous clocks on ports WRITE_MODE => "READ_FIRST", -- Initial values on output port INIT_FILE => "blkmem.coe", INIT => X"000000000000000000" ) port map ( DO => DO, -- Output read data port, width defined by READ_WIDTH parameter DI => DI, -- Input write data port, width defined by WRITE_WIDTH parameter RDADDR => RDADDR, -- Input read address, width defined by read port depth RDCLK => CLK, -- 1-bit input read clock RDEN => '1', -- 1-bit input read port enable REGCE => '1', -- 1-bit input read output register enable RST => '0', -- 1-bit input reset WE => wen, -- Input write enable, width defined by write port depth WRADDR => WRADDR, -- Input write address, width defined by write port depth WRCLK => CLK, -- 1-bit input write clock WREN => '1' -- 1-bit input write port enable ); -- End of BRAM_SDP_MACRO_inst instantiation end Behavioral; *.coe Spoiler ;Sample memory initialization file for Single Port Block Memory memory_initialization_radix=16; memory_initialization_vector= 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, 0008, 0009, 000A, 000B, 000C, 000D, 000E, 000F, 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017, 0018, 0019, 001A, 001B, 001C, 001D, 001E, 001F, 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027, 0028, 0029, 002A, 002B, 002C, 002D, 002E, 002F, 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037, 0038, 0039, 003A, 003B, 003C, 003D, 003E, 003F, 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, 0048, 0049, 004A, 004B, 004C, 004D, 004E, 004F, 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057, 0058, 0059, 005A, 005B, 005C, 005D, 005E, 005F, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067, 0068, 0069, 006A, 006B, 006C, 006D, 006E, 006F, 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077, 0078, 0079, 007A, 007B, 007C, 007D, 007E, 007F, 0080, 0081, 0082, 0083, 0084, 0085, 0086, 0087, 0088, 0089, 008A, 008B, 008C, 008D, 008E, 008F, 0090, 0091, 0092, 0093, 0094, 0095, 0096, 0097, 0098, 0099, 009A, 009B, 009C, 009D, 009E, 009F, 00A0, 00A1, 00A2, 00A3, 00A4, 00A5, 00A6, 00A7, 00A8, 00A9, 00AA, 00AB, 00AC, 00AD, 00AE, 00AF, 00B0, 00B1, 00B2, 00B3, 00B4, 00B5, 00B6, 00B7, 00B8, 00B9, 00BA, 00BB, 00BC, 00BD, 00BE, 00BF, 00C0, 00C1, 00C2, 00C3, 00C4, 00C5, 00C6, 00C7, 00C8, 00C9, 00CA, 00CB, 00CC, 00CD, 00CE, 00CF, 00D0, 00D1, 00D2, 00D3, 00D4, 00D5, 00D6, 00D7, 00D8, 00D9, 00DA, 00DB, 00DC, 00DD, 00DE, 00DF, 00E0, 00E1, 00E2, 00E3, 00E4, 00E5, 00E6, 00E7, 00E8, 00E9, 00EA, 00EB, 00EC, 00ED, 00EE, 00EF, 00F0, 00F1, 00F2, 00F3, 00F4, 00F5, 00F6, 00F7, 00F8, 00F9, 00FA, 00FB, 00FC, 00FD, 00FE, 00FF, 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0108, 0109, 010A, 010B, 010C, 010D, 010E, 010F, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0118, 0119, 011A, 011B, 011C, 011D, 011E, 011F, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0128, 0129, 012A, 012B, 012C, 012D, 012E, 012F, 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137, 0138, 0139, 013A, 013B, 013C, 013D, 013E, 013F, 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0148, 0149, 014A, 014B, 014C, 014D, 014E, 014F, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0158, 0159, 015A, 015B, 015C, 015D, 015E, 015F, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0168, 0169, 016A, 016B, 016C, 016D, 016E, 016F, 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177, 0178, 0179, 017A, 017B, 017C, 017D, 017E, 017F, 0180, 0181, 0182, 0183, 0184, 0185, 0186, 0187, 0188, 0189, 018A, 018B, 018C, 018D, 018E, 018F, 0190, 0191, 0192, 0193, 0194, 0195, 0196, 0197, 0198, 0199, 019A, 019B, 019C, 019D, 019E, 019F, 01A0, 01A1, 01A2, 01A3, 01A4, 01A5, 01A6, 01A7, 01A8, 01A9, 01AA, 01AB, 01AC, 01AD, 01AE, 01AF, 01B0, 01B1, 01B2, 01B3, 01B4, 01B5, 01B6, 01B7, 01B8, 01B9, 01BA, 01BB, 01BC, 01BD, 01BE, 01BF, 01C0, 01C1, 01C2, 01C3, 01C4, 01C5, 01C6, 01C7, 01C8, 01C9, 01CA, 01CB, 01CC, 01CD, 01CE, 01CF, 01D0, 01D1, 01D2, 01D3, 01D4, 01D5, 01D6, 01D7, 01D8, 01D9, 01DA, 01DB, 01DC, 01DD, 01DE, 01DF, 01E0, 01E1, 01E2, 01E3, 01E4, 01E5, 01E6, 01E7, 01E8, 01E9, 01EA, 01EB, 01EC, 01ED, 01EE, 01EF, 01F0, 01F1, 01F2, 01F3, 01F4, 01F5, 01F6, 01F7, 01F8, 01F9, 01FA, 01FB, 01FC, 01FD, 01FE, 01FF, 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207, 0208, 0209, 020A, 020B, 020C, 020D, 020E, 020F, 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217, 0218, 0219, 021A, 021B, 021C, 021D, 021E, 021F, 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227, 0228, 0229, 022A, 022B, 022C, 022D, 022E, 022F, 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237, 0238, 0239, 023A, 023B, 023C, 023D, 023E, 023F, 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247, 0248, 0249, 024A, 024B, 024C, 024D, 024E, 024F, 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257, 0258, 0259, 025A, 025B, 025C, 025D, 025E, 025F, 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267, 0268, 0269, 026A, 026B, 026C, 026D, 026E, 026F, 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277, 0278, 0279, 027A, 027B, 027C, 027D, 027E, 027F, 0280, 0281, 0282, 0283, 0284, 0285, 0286, 0287, 0288, 0289, 028A, 028B, 028C, 028D, 028E, 028F, 0290, 0291, 0292, 0293, 0294, 0295, 0296, 0297, 0298, 0299, 029A, 029B, 029C, 029D, 029E, 029F, 02A0, 02A1, 02A2, 02A3, 02A4, 02A5, 02A6, 02A7, 02A8, 02A9, 02AA, 02AB, 02AC, 02AD, 02AE, 02AF, 02B0, 02B1, 02B2, 02B3, 02B4, 02B5, 02B6, 02B7, 02B8, 02B9, 02BA, 02BB, 02BC, 02BD, 02BE, 02BF, 02C0, 02C1, 02C2, 02C3, 02C4, 02C5, 02C6, 02C7, 02C8, 02C9, 02CA, 02CB, 02CC, 02CD, 02CE, 02CF, 02D0, 02D1, 02D2, 02D3, 02D4, 02D5, 02D6, 02D7, 02D8, 02D9, 02DA, 02DB, 02DC, 02DD, 02DE, 02DF, 02E0, 02E1, 02E2, 02E3, 02E4, 02E5, 02E6, 02E7, 02E8, 02E9, 02EA, 02EB, 02EC, 02ED, 02EE, 02EF, 02F0, 02F1, 02F2, 02F3, 02F4, 02F5, 02F6, 02F7, 02F8, 02F9, 02FA, 02FB, 02FC, 02FD, 02FE, 02FF, 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, 0308, 0309, 030A, 030B, 030C, 030D, 030E, 030F, 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317, 0318, 0319, 031A, 031B, 031C, 031D, 031E, 031F, 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327, 0328, 0329, 032A, 032B, 032C, 032D, 032E, 032F, 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337, 0338, 0339, 033A, 033B, 033C, 033D, 033E, 033F, 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347, 0348, 0349, 034A, 034B, 034C, 034D, 034E, 034F, 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357, 0358, 0359, 035A, 035B, 035C, 035D, 035E, 035F, 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367, 0368, 0369, 036A, 036B, 036C, 036D, 036E, 036F, 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377, 0378, 0379, 037A, 037B, 037C, 037D, 037E, 037F, 0380, 0381, 0382, 0383, 0384, 0385, 0386, 0387, 0388, 0389, 038A, 038B, 038C, 038D, 038E, 038F, 0390, 0391, 0392, 0393, 0394, 0395, 0396, 0397, 0398, 0399, 039A, 039B, 039C, 039D, 039E, 039F, 03A0, 03A1, 03A2, 03A3, 03A4, 03A5, 03A6, 03A7, 03A8, 03A9, 03AA, 03AB, 03AC, 03AD, 03AE, 03AF, 03B0, 03B1, 03B2, 03B3, 03B4, 03B5, 03B6, 03B7, 03B8, 03B9, 03BA, 03BB, 03BC, 03BD, 03BE, 03BF, 03C0, 03C1, 03C2, 03C3, 03C4, 03C5, 03C6, 03C7, 03C8, 03C9, 03CA, 03CB, 03CC, 03CD, 03CE, 03CF, 03D0, 03D1, 03D2, 03D3, 03D4, 03D5, 03D6, 03D7, 03D8, 03D9, 03DA, 03DB, 03DC, 03DD, 03DE, 03DF, 03E0, 03E1, 03E2, 03E3, 03E4, 03E5, 03E6, 03E7, 03E8, 03E9, 03EA, 03EB, 03EC, 03ED, 03EE, 03EF, 03F0, 03F1, 03F2, 03F3, 03F4, 03F5, 03F6, 03F7, 03F8, 03F9, 03FA, 03FB, 03FC, 03FD, 03FE, 03FF; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 34 minutes ago, OLD_SHURiK said: # RUNTIME: Fatal Error: RUNTIME_0047 RAMB18E1.vhd (1115): Index 2 out of range (1 to 1). открыть сорцы либы на этом месте и посмотреть что ему не нравиться. ЕМНП не всякая модель кое файлы ест, их надо в хекс конвертировать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 16 марта, 2021 Опубликовано 16 марта, 2021 (изменено) · Жалоба на файл он не ругается ! ошибка указывет строку : Spoiler if (INIT_FILE /= "NONE") then file_open(open_status, int_infile, INIT_FILE, read_mode); while not endfile(int_infile) loop readline(int_infile, data_line); while (data_line /= null and data_line'length > 0) loop if (data_line(data_line'low to data_line'low + 1) = "//") then deallocate(data_line); elsif ((data_line(data_line'low to data_line'low + 1) = "/*") and (data_line(data_line'high-1 to data_line'high) = "*/")) then deallocate(data_line); elsif (data_line(data_line'low to data_line'low + 1) = "/*") then deallocate(data_line); ignore_line := true; elsif (ignore_line = true and data_line(data_line'high-1 to data_line'high) = "*/") then deallocate(data_line); ignore_line := false; это анализ коментария ! куда дальше ?! P.S. VIVADO зависает при моделировании, если указать файл инициализации !!! Изменено 16 марта, 2021 пользователем OLD_SHURiK Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 11 minutes ago, OLD_SHURiK said: ошибка указывет строку : Hide contents if (INIT_FILE /= "NONE") then file_open(open_status, int_infile, INIT_FILE, read_mode); while not endfile(int_infile) loop readline(int_infile, data_line); while (data_line /= null and data_line'length > 0) loop if (data_line(data_line'low to data_line'low + 1) = "//") then deallocate(data_line); elsif ((data_line(data_line'low to data_line'low + 1) = "/*") and (data_line(data_line'high-1 to data_line'high) = "*/")) then deallocate(data_line); elsif (data_line(data_line'low to data_line'low + 1) = "/*") then deallocate(data_line); ignore_line := true; elsif (ignore_line = true and data_line(data_line'high-1 to data_line'high) = "*/") then deallocate(data_line); ignore_line := false; это анализ коментария ! куда дальше ?! это не анализ, это код. ну вот из кода и вытаскивайте какой файл он ест. судя по приведенному коду Quote ЕМНП не всякая модель кое файлы ест, их надо в хекс конвертировать обработчик написан не для coe файлов. Более точно надо смотреть код. Можно точку остановки на это место поставить и посмотреть что именно он читает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 1. не останавливается. Наверно потому что это происходит в процессе инициализации симулятора. 2. что *.hex , что *.coe результат один и тот же ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 50 minutes ago, OLD_SHURiK said: на файл он не ругается ! ошибка указывет строку : Reveal hidden contents if (INIT_FILE /= "NONE") then file_open(open_status, int_infile, INIT_FILE, read_mode); while not endfile(int_infile) loop readline(int_infile, data_line); while (data_line /= null and data_line'length > 0) loop if (data_line(data_line'low to data_line'low + 1) = "//") then deallocate(data_line); elsif ((data_line(data_line'low to data_line'low + 1) = "/*") and (data_line(data_line'high-1 to data_line'high) = "*/")) then deallocate(data_line); elsif (data_line(data_line'low to data_line'low + 1) = "/*") then deallocate(data_line); ignore_line := true; elsif (ignore_line = true and data_line(data_line'high-1 to data_line'high) = "*/") then deallocate(data_line); ignore_line := false; это анализ коментария ! куда дальше ?! P.S. VIVADO зависает при моделировании, если указать файл инициализации !!! Похоже что симулятору что-то не нравится в файле *.coe. Моделирование проходит в Vivado или в Aldec? Если в Aldec, то там можно посмотреть дамп памяти. Возможно по нему что-то прояснится. Как вариант ещё можно уменьшить размер *.coe и посмотреть, как симулятор на него отреагирует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 3 hours ago, OLD_SHURiK said: Всем привет! Active-HDL 10.3 64bit. библиотека "Active-HDL_10.3.3558.6081_x64_for_Xilinx_VIVADO_2016.4_VHDL_Libraries" Сделана память с использованием BRAM_SDP_MACRO. Моделирование записи и чтения проходит нормально! Но ! При попытке инициализировать память из файла *.coe происходит ошибка ! # ELAB2: Create instances ... # RUNTIME: Fatal Error: RUNTIME_0047 RAMB18E1.vhd (1115): Index 2 out of range (1 to 1). # KERNEL: Time: 0 ps, Iteration: 0, TOP instance. # ELAB2: Last instance before error: /xil_bram_1k_16/BRAM_SDP_MACRO_inst/sdp_bl/ramb18_dp_bl/ram18_bl/TDP/RAMB18E1_TDP_inst # KERNEL: Error: E8005 : Kernel process initialization failed. # VSIM: Error: Simulation initialization failed. Где порылась собака?! Может .coe не находит ? В Ahdl 10.5 и Ahdl 11.1 работают с .mif ok Можеть, вместо .coe - .mif ему указать ? Vivado их генерирует. c_mem_init_file => "mem_8x256.mif" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 1 hour ago, attaboy said: Похоже что симулятору что-то не нравится в файле *.coe. Моделирование проходит в Vivado или в Aldec? Если в Aldec, то там можно посмотреть дамп памяти. Возможно по нему что-то прояснится. Как вариант ещё можно уменьшить размер *.coe и посмотреть, как симулятор на него отреагирует. моделируется в Active-HDL. Vivado вообще зависает если указать файл инициализации. до симуляции дело не доходит. всё валится на этапе инициализации симулятора ! пробовал .нех , то же самое ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба Сгенерировать RAM IP c .coe - и в ее в Aldec ? Есть ошибки ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 18 minutes ago, OLD_SHURiK said: моделируется в Active-HDL. Vivado вообще зависает если указать файл инициализации. до симуляции дело не доходит. всё валится на этапе инициализации симулятора ! пробовал .нех , то же самое ! Приведенный в начале темы *.coe файл заканчивается на ; Я проверил несколько своих, у них нет ; в конце. Может быть в этом проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 40 minutes ago, gosha said: Сгенерировать RAM IP c .coe - и в ее в Aldec ? Есть ошибки ? есть !!! файл генерировался и IP core и самостоятельно и брался "example", всё едино !! 33 minutes ago, attaboy said: Приведенный в начале темы *.coe файл заканчивается на ; Я проверил несколько своих, у них нет ; в конце. Может быть в этом проблема? так должно быть ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 25 minutes ago, OLD_SHURiK said: есть !!! файл генерировался и IP core и самостоятельно и брался "example", всё едино !! так должно быть ! Ну выложите упрощенный testbench AHDL: ram, к ним .coe и .mif По-пробую в AHDL 11.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OLD_SHURiK 0 16 марта, 2021 Опубликовано 16 марта, 2021 · Жалоба 53 minutes ago, gosha said: Ну выложите упрощенный testbench AHDL: ram, к ним .coe и .mif По-пробую в AHDL 11.1 исходник ram and *.coe вверху. tb Spoiler Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; library unimacro; use unimacro.VCOMPONENTS.all; library unisim; use unisim.VCOMPONENTS.all; -- Add your library and packages declaration here ... entity xil_bram_1k_16_tb is end xil_bram_1k_16_tb; architecture TB_ARCHITECTURE of xil_bram_1k_16_tb is -- Component declaration of the tested unit component xil_bram_1k_16 port( clk : in STD_LOGIC; di : in STD_LOGIC_VECTOR(15 downto 0); wen : in STD_LOGIC_VECTOR(1 downto 0); wraddr : in STD_LOGIC_VECTOR(9 downto 0); rdaddr : in STD_LOGIC_VECTOR(9 downto 0); do : out STD_LOGIC_VECTOR(15 downto 0) ); end component; -- Stimulus signals - signals mapped to the input and inout ports of tested entity signal clk : STD_LOGIC := '0'; signal di : STD_LOGIC_VECTOR(15 downto 0) := (others => '0'); signal wen : STD_LOGIC_VECTOR(1 downto 0) := (others => '0'); signal wraddr : STD_LOGIC_VECTOR(9 downto 0) := (others => '0'); signal rdaddr : STD_LOGIC_VECTOR(9 downto 0) := (others => '0'); -- Observed signals - signals mapped to the output ports of tested entity signal do : STD_LOGIC_VECTOR(15 downto 0); -- Add your code here ... begin -- Unit Under Test port map UUT : xil_bram_1k_16 port map ( clk => clk, di => di, wen => wen, wraddr => wraddr, rdaddr => rdaddr, do => do ); -- Add your stimulus here ... process begin wait for 20ns; clk <= '1'; wait for 20ns; clk <= '0'; end process; -- process begin wait for 1us; -- write wait until rising_edge(clk); wraddr <= conv_std_logic_vector(50, wraddr'length) after 1ns; wen <= "11" after 1ns; di <= x"1278" after 1ns; wait for 40ns; wraddr <= conv_std_logic_vector(0, wraddr'length) after 1ns; wen <= "00" after 1ns; di <= x"0000" after 1ns; -- read wait for 1us; wait until rising_edge(clk); rdaddr <= conv_std_logic_vector(50, wraddr'length) after 1ns; wait for 40ns; rdaddr <= conv_std_logic_vector(0, wraddr'length) after 1ns; end process; end TB_ARCHITECTURE; configuration TESTBENCH_FOR_xil_bram_1k_16 of xil_bram_1k_16_tb is for TB_ARCHITECTURE for UUT : xil_bram_1k_16 use entity work.xil_bram_1k_16(behavioral); end for; end for; end TESTBENCH_FOR_xil_bram_1k_16; заранее благодарен !! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha 0 17 марта, 2021 Опубликовано 17 марта, 2021 · Жалоба 15 hours ago, OLD_SHURiK said: исходник ram and *.coe вверху. tb Reveal hidden contents Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; library unimacro; use unimacro.VCOMPONENTS.all; library unisim; use unisim.VCOMPONENTS.all; -- Add your library and packages declaration here ... entity xil_bram_1k_16_tb is end xil_bram_1k_16_tb; architecture TB_ARCHITECTURE of xil_bram_1k_16_tb is -- Component declaration of the tested unit component xil_bram_1k_16 port( clk : in STD_LOGIC; di : in STD_LOGIC_VECTOR(15 downto 0); wen : in STD_LOGIC_VECTOR(1 downto 0); wraddr : in STD_LOGIC_VECTOR(9 downto 0); rdaddr : in STD_LOGIC_VECTOR(9 downto 0); do : out STD_LOGIC_VECTOR(15 downto 0) ); end component; -- Stimulus signals - signals mapped to the input and inout ports of tested entity signal clk : STD_LOGIC := '0'; signal di : STD_LOGIC_VECTOR(15 downto 0) := (others => '0'); signal wen : STD_LOGIC_VECTOR(1 downto 0) := (others => '0'); signal wraddr : STD_LOGIC_VECTOR(9 downto 0) := (others => '0'); signal rdaddr : STD_LOGIC_VECTOR(9 downto 0) := (others => '0'); -- Observed signals - signals mapped to the output ports of tested entity signal do : STD_LOGIC_VECTOR(15 downto 0); -- Add your code here ... begin -- Unit Under Test port map UUT : xil_bram_1k_16 port map ( clk => clk, di => di, wen => wen, wraddr => wraddr, rdaddr => rdaddr, do => do ); -- Add your stimulus here ... process begin wait for 20ns; clk <= '1'; wait for 20ns; clk <= '0'; end process; -- process begin wait for 1us; -- write wait until rising_edge(clk); wraddr <= conv_std_logic_vector(50, wraddr'length) after 1ns; wen <= "11" after 1ns; di <= x"1278" after 1ns; wait for 40ns; wraddr <= conv_std_logic_vector(0, wraddr'length) after 1ns; wen <= "00" after 1ns; di <= x"0000" after 1ns; -- read wait for 1us; wait until rising_edge(clk); rdaddr <= conv_std_logic_vector(50, wraddr'length) after 1ns; wait for 40ns; rdaddr <= conv_std_logic_vector(0, wraddr'length) after 1ns; end process; end TB_ARCHITECTURE; configuration TESTBENCH_FOR_xil_bram_1k_16 of xil_bram_1k_16_tb is for TB_ARCHITECTURE for UUT : xil_bram_1k_16 use entity work.xil_bram_1k_16(behavioral); end for; end for; end TESTBENCH_FOR_xil_bram_1k_16; заранее благодарен !! IP RAM c инициализацией ram .mif файлом (прикрепленный файл) - моделируется ok. Cудя по исходнику RAMB18E1.vhd из комплекта Vivado (в котором считывается файл инициализации RAM) (на который ругается при simulation_init (сообщение об ошибке в Вашем первом посте)) - формат файла инициализации , вроде бы не .coe if (INIT_FILE /= "NONE") then file_open(open_status, int_infile, INIT_FILE, read_mode); while not endfile(int_infile) loop readline(int_infile, data_line); while (data_line /= null and data_line'length > 0) loop if (data_line(data_line'low to data_line'low + 1) = "//") then deallocate(data_line); elsif ((data_line(data_line'low to data_line'low + 1) = "/*") and (data_line(data_line'high-1 to data_line'high) = "*/")) then deallocate(data_line); elsif (data_line(data_line'low to data_line'low + 1) = "/*") then deallocate(data_line); ignore_line := true; elsif (ignore_line = true and data_line(data_line'high-1 to data_line'high) = "*/") then deallocate(data_line); ignore_line := false; elsif (ignore_line = false and data_line(data_line'low) = '@') then read(data_line, char_tmp); hread(data_line, init_addr_slv, good_data); i := SLV_TO_INT(init_addr_slv); elsif (ignore_line = false) then hread(data_line, input_initf_tmp(i), good_data); input_initf(i)(slv_width - 1 downto 0) := input_initf_tmp(i)(slv_width - 1 downto 0); if (good_data = true) then i := i + 1; end if; else deallocate(data_line); end if; end loop; end loop; end if; return input_initf; end; test_ram_mif.zip RAMB18E1.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha 0 17 марта, 2021 Опубликовано 17 марта, 2021 · Жалоба 16 hours ago, OLD_SHURiK said: исходник ram and *.coe вверху. tb Reveal hidden contents Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; library unimacro; use unimacro.VCOMPONENTS.all; library unisim; use unisim.VCOMPONENTS.all; -- Add your library and packages declaration here ... entity xil_bram_1k_16_tb is end xil_bram_1k_16_tb; architecture TB_ARCHITECTURE of xil_bram_1k_16_tb is -- Component declaration of the tested unit component xil_bram_1k_16 port( clk : in STD_LOGIC; di : in STD_LOGIC_VECTOR(15 downto 0); wen : in STD_LOGIC_VECTOR(1 downto 0); wraddr : in STD_LOGIC_VECTOR(9 downto 0); rdaddr : in STD_LOGIC_VECTOR(9 downto 0); do : out STD_LOGIC_VECTOR(15 downto 0) ); end component; -- Stimulus signals - signals mapped to the input and inout ports of tested entity signal clk : STD_LOGIC := '0'; signal di : STD_LOGIC_VECTOR(15 downto 0) := (others => '0'); signal wen : STD_LOGIC_VECTOR(1 downto 0) := (others => '0'); signal wraddr : STD_LOGIC_VECTOR(9 downto 0) := (others => '0'); signal rdaddr : STD_LOGIC_VECTOR(9 downto 0) := (others => '0'); -- Observed signals - signals mapped to the output ports of tested entity signal do : STD_LOGIC_VECTOR(15 downto 0); -- Add your code here ... begin -- Unit Under Test port map UUT : xil_bram_1k_16 port map ( clk => clk, di => di, wen => wen, wraddr => wraddr, rdaddr => rdaddr, do => do ); -- Add your stimulus here ... process begin wait for 20ns; clk <= '1'; wait for 20ns; clk <= '0'; end process; -- process begin wait for 1us; -- write wait until rising_edge(clk); wraddr <= conv_std_logic_vector(50, wraddr'length) after 1ns; wen <= "11" after 1ns; di <= x"1278" after 1ns; wait for 40ns; wraddr <= conv_std_logic_vector(0, wraddr'length) after 1ns; wen <= "00" after 1ns; di <= x"0000" after 1ns; -- read wait for 1us; wait until rising_edge(clk); rdaddr <= conv_std_logic_vector(50, wraddr'length) after 1ns; wait for 40ns; rdaddr <= conv_std_logic_vector(0, wraddr'length) after 1ns; end process; end TB_ARCHITECTURE; configuration TESTBENCH_FOR_xil_bram_1k_16 of xil_bram_1k_16_tb is for TB_ARCHITECTURE for UUT : xil_bram_1k_16 use entity work.xil_bram_1k_16(behavioral); end for; end for; end TESTBENCH_FOR_xil_bram_1k_16; заранее благодарен !! Если из Вашего .coe удалить ВСЕ содержимое - симуляция ok. (пустой файл) Думаю, формат файла нужен не .coe Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться