zxazx 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба раньше работал со встроенным симулятором, но он наконец-то сошёл сума от строки: RShift8 <= countRegen(7 downto 0) WHEN countDigTimeAdr ="0000" ELSE countRegen(8 downto 1) WHEN countDigTimeAdr ="0001" ELSE countRegen(9 downto 2) WHEN countDigTimeAdr ="0010" ELSE countRegen(10 downto 3) WHEN countDigTimeAdr ="0011" ELSE countRegen(11 downto 4) WHEN countDigTimeAdr ="0100" ELSE countRegen(12 downto 5) WHEN countDigTimeAdr ="0101" ; теперь пытаюсь освоить модельсим. В Integrated Tools добавил модельсим. Вопросы: 1)В ИСЕ в свойствах проекта при выборе симулятора появились строчки: Modelsim-SE VHDL, Modelsim-PE VHDL, Modelsim-XE VHDL. Что нужно выбирать. 2)Модельсим ругается: # ** Error: closk1.vhd(26): Library unisim not found. # ** Error: closk1.vhd(27): (vcom-1136) Unknown identifier "unisim". где взять библиотеку? 3)Как в модельсиме вывести на экран внутренние сигналы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sefo 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба 1) Очевидно, что выбирать нужно ту редакцию МоделСима, которую Вы установили. 2)А что у Вас в этих строчках написано? 3)Если через графич. оболочку, то после инициализации симуляции в окне workspace активируйте вкладку sim. Там будет иерархия проекта. Находите нужный модуль и через меню правой кнопки добавляете сигналы в wave. Моделсим добавит все доступные для наблюдения сигналы. Если при активном окне Wave выполнить File\Save, то получите образец скрипта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 ноября, 2009 Опубликовано 16 ноября, 2009 · Жалоба Модельсим ругается:Если у вас не Modelsim-XE, то ему надо скомпилировать библиотеки (в ISE) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zxazx 0 23 ноября, 2009 Опубликовано 23 ноября, 2009 · Жалоба спасибо за ответы. от себя добавлю, что если используются cores, то нужно в функциональной модели выбрать VHDL(у меня по умолчанию Verilog) сейчас проект, грузится без ошибок, но во вкладке SIM есть только тестовый модуль(test_add1), тестируемого модуля(add1) нет, сигналов нет. если из ISE запускать симуляцию тестируемого модуля(add1) без модуля с тестовыми воздействиями(test_add1), то появляются сигналы, но, естественно, воздействий нет. встроенный симулятор ISE работает, как и должен. помогите запустить симуляцию в моделсим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zxazx 0 26 ноября, 2009 Опубликовано 26 ноября, 2009 · Жалоба есть подозрение, что встроенный симулятор ISE Xilinx использует "упрощённую" структуру тест бенча, которую моделсим не понимает... пример тест бенча для моделсим кто-нибудь приведёт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 26 ноября, 2009 Опубликовано 26 ноября, 2009 · Жалоба Тестбенч простой - устанавливаешь тестируемое устройство, пишешь генерацию сигналов и проверку того, что идет от устройства. Вот пример (resync - тестируемое устройство) `timescale 1ns / 1ps module ut_resync; wire s_dv; wire [4:0] s_rxd; wire ph_ovr; reg clk = 0, clk4 = 0; reg rx_clk =0; reg rx_dv = 0; reg [4:0] rxd = 0; // Test bench vars integer err_count = 0; reg [4:0] data_buf [3000:0]; integer wr_ptr = 0; integer rd_ptr = 0; reg [4:0] last_data; reg [4:0] last_pump_read, last_pump_write; // Data pump always @(negedge rx_clk) begin last_data = $random(); rxd = last_data; end always @(posedge rx_clk) if (rx_dv) begin last_pump_write = last_data; data_buf[wr_ptr]=last_data; wr_ptr=wr_ptr+1; if (wr_ptr<=rd_ptr) begin $display("*** (%0t) Error: Data pump overwrite: WR_PTR=%0d, RD_PTR=%0d",$time,wr_ptr,rd_ptr); err_count=err_count+1; end end always @(posedge clk) if (s_dv) begin last_pump_read = data_buf[rd_ptr]; if (last_pump_read!=s_rxd) begin $display("*** (%0t) Error: Data integrity error: Wrong byte at %0d: %h (should be %h)",$time,rd_ptr,s_rxd,last_pump_read); err_count=err_count+1; end if (ph_ovr) begin $display("*** (%0t) Error: Phase error (at byte %0d)",$time,rd_ptr); err_count=err_count+1; end rd_ptr = rd_ptr+1; end task RunTest; integer len; begin rd_ptr=0; wr_ptr=0; len = 100+($unsigned($random) % 2900); $display("(%0t) - Run for %0d nibbles",$time,len); @(negedge rx_clk); rx_dv <= 1; repeat(len) @(negedge rx_clk); rx_dv <= 0; @(negedge s_dv); @(posedge clk); if (rd_ptr!=wr_ptr) begin $display("*** (%0t) Error: Read/Write counters missmatch: WR_PTR=%0d (%h), RD_PTR=%0d (%h)",$time,wr_ptr,last_pump_write,rd_ptr,last_pump_read); err_count=err_count+1; end end endtask always #5 clk4 <= ~clk4; always begin @(posedge clk4); clk <= 1; repeat(2) @(posedge clk4); clk <= 0; @(posedge clk4); end always //@* rx_clk <= clk; #20.01 rx_clk <= ~rx_clk; initial begin $timeformat ( -9,0," ns",15); #2000; repeat(100000) begin RunTest; #1000; end #2000; $display("Total errors - %0d", err_count); $stop; end ResyncBlock resync( .clk(clk), .clk4(clk4), // clk*4 // Input section .clk_in(rx_clk), .en_in(rx_dv), // Enable signal .d_in(rxd), // Input data // Output section .en_out(s_dv), // Enable signal .d_out(s_rxd), // Data // Error indicator .phase_overflow_err(ph_ovr) // Phase lock lost (not enough phase marging) ); endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zxazx 0 27 ноября, 2009 Опубликовано 27 ноября, 2009 · Жалоба 2 XVR много непонятных символов :) это, наверное не VHDL? с тестбенчем разобрался встроенных симулятор ise xilinx компилит такой код: ENTITY t_add_vhd IS END t_add_vhd; ARCHITECTURE behavior OF t_add_vhd IS .......... SIGNAL z : std_logic; .......... для моделсима нужно писать так: entity t_add_vhd is port ( z : OUT std_logic); end t_add_vhd; ................. второй вариант логичнее... три дня этот баг искал! интересно узнать причину таких расхождений! где можно почитать про структуру тестбенча vhdl. может, ise xilinx ещё что-то упрощает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 27 ноября, 2009 Опубликовано 27 ноября, 2009 · Жалоба 2 XVR много непонятных символов :) это, наверное не VHDL? Verilog с тестбенчем разобрался встроенных симулятор ise xilinx компилит такой код: ENTITY t_add_vhd IS END t_add_vhd; ARCHITECTURE behavior OF t_add_vhd IS .......... SIGNAL z : std_logic; .......... для моделсима нужно писать так: entity t_add_vhd is port ( z : OUT std_logic); end t_add_vhd; ................. второй вариант логичнее... три дня этот баг искал! интересно узнать причину таких расхождений! Обе записи практически эквивалентны. Xilinx не стал выводить никаких портов из top-level теста, видимо Modelsim не стал ничего показывать (хотя у меня на Verilog'е тоже ничего не выводится, однако переменные top модуля он все же показывает). В любом случае в Modelsim'е можно явно задать, что смотреть. Так что особой разницы быть не должно :rolleyes: где можно почитать про структуру тестбенча vhdl. может, ise xilinx ещё что-то упрощает?Да нету у него никакой специальной структуры - обычная модель (функциональная) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zxazx 0 30 ноября, 2009 Опубликовано 30 ноября, 2009 · Жалоба спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться