Перейти к содержанию
    

ViKo

Модератор
  • Постов

    12 216
  • Зарегистрирован

Весь контент ViKo


  1. Нет смысла махать кулаками после драки, но давайте попробуем. Что в вашем ответе понимается под синтезатором - Quartus или ModelSim? Надо думать - Quartus. Кто его просил синтезировать тестбенч? Который, кстати, обрамлен атрибутами не синтезировать? Почему он "проигнорировал" задержки? И почему задержки не "игнорируются", если тестбенч находится в другом файле? Я понимаю так, что это ModelSim перекомпилировал устройство_под_тестом, потому что оно находилось в том же файле. При этом он переписал рабочую библиотеку, и задержки исчезли, так как не были подключены альтеровские библиотеки. Я думаю, если бы я их подключил, задержки бы были. Когда же устройство_под_тестом отсутствовало, ModelSim использовал уже готовую библиотеку, полученную от Quartus'а. Также и когда модули были переставлены местами в скрипте - ModelSim для второго модуля получил уже "готовое". В терминах могу путаться...
  2. Я читал: Гербердт Шилдт. Полный справочник по C Как-то полегче, чем Керниган и Ричи, системнее, что ли. Потом уже их книгу проштудировал, вникая во все нюансы.
  3. Моя идея (не совсем по теме, правда) - не ставить точку с запятой после объявления модуля, как принято при определении функций в языке C. Есть же module ... endmodule - все однозначно определяет начало и конец. В-общем, сблизить с языком C по-максимуму.
  4. Кажется, вы не до конца разобрались в моем вопросе, и в способе его решения.
  5. Спасибо! "Проканало!" Теперича придется и в скрипты погрузиться :) # Reading C:/Programs/Altera/91/modelsim_ase/tcl/vsim/pref.tcl # do exGlitch_run_msim_gate_verilog.do # if {[file exists gate_work]} { # vdel -lib gate_work -all # } # vlib gate_work # vmap work gate_work # Copying C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini # Modifying modelsim.ini # ** Warning: Copied C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini. # Updated modelsim.ini. # # vlog -vlog01compat -work work +incdir+. {exGlitch_8_1200mv_85c_slow.vo} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch # # Top level modules: # exGlitch # # vlog -sv -work work +incdir+D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch {D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch # -- Compiling module exGlitch_tb # # Top level modules: # exGlitch_tb # # vsim -t 1ps +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs="+acc" exGlitch_tb # vsim +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs=\"+acc\" -t 1ps exGlitch_tb # Loading sv_std.std # Loading work.exGlitch_tb # Loading work.exGlitch # # do D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.tcl # if {[file exists gate_work]} { # vdel -lib gate_work -all # } # vlib gate_work # vmap work gate_work # Modifying modelsim.ini # # vlog -sv -work work +incdir+D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch {D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch # -- Compiling module exGlitch_tb # # Top level modules: # exGlitch_tb # vlog -vlog01compat -work work +incdir+. {exGlitch_8_1200mv_85c_slow.vo} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch # # Top level modules: # exGlitch # # vsim -t 1ps +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs="+acc" exGlitch_tb # vsim +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs=\"+acc\" -t 1ps exGlitch_tb # Loading sv_std.std # Loading work.exGlitch_tb # Loading work.exGlitch # Loading cycloneiii_ver.cycloneiii_routing_wire # Loading cycloneiii_ver.cycloneiii_io_obuf # Loading cycloneiii_ver.cycloneiii_io_ibuf # Loading cycloneiii_ver.cycloneiii_lcell_comb # Loading altera_ver.dffeas # Loading instances from exGlitch_8_1200mv_85c_v_slow.sdo # Loading altera_ver.PRIM_GDFF_LOW # Loading timing data from exGlitch_8_1200mv_85c_v_slow.sdo # ** Note: (vsim-3587) SDF Backannotation Successfully Completed. # Time: 0 ps Iteration: 0 Region: /exGlitch_tb File: D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv # # add wave * # run 120 ns
  6. Если подскажете скрипт для ModelSim, с помощью которого можно не симулировать exGlitch, скажу спасибо. Для него в NativeLink settings и место есть.
  7. Тогда вам нужны АЦП, созданные по flash технологии (не путать с flash памятью), сильно жрущие, дорогие. Может быть, лучше сделать "интеллектуальный драйвер" аналоговый?
  8. не до конца :) Допустим, будет у меня определение SIMULATE (или не будет). Если я запрещу компилировать свой модуль, что же мне тогда симулировать? Нужно, чтобы Quartus скомпилировал, а ModelSim - нет. А какой смысл имеет "Design Instance name in test bench" в NativeLink settings? Уделал! /* Проверка симуляции иголок */ `timescale 1 ns / 1 ps `define NOSIMULATE `ifdef NOSIMULATE /* example of glitch */ module exGlitch (input wire clk, output logic a = 1, b, c); always_ff @(posedge clk) a = !a; always_comb begin b = a & clk; c = a ^ b; end endmodule `else module exGlitch_tb; logic clk, a, b, c; exGlitch eG(clk, a, b, c); initial clk = 1; always #5 clk = !clk; endmodule `endif Сначала компилирую в Quartus'е, потом комментирую `define NOSIMULATE, сохраняю, и запускаю EDA Gate Level Simulation. Как-то все-же хреновато...
  9. Да, именно, этого я и хочу. По файлам разносить - это у меня уже есть. Компилировать устройство после тестбенча из Quartus не получается. Другое имя - аналогично. А вот 4-й пункт - как это? Как заставить ModelSim не компилировать весь файл, а только тот тестбенч.
  10. Да, верно. Еще один экспериментик провел - добавил в файл с тестбенчем тестируемый модуль. А чтобы не синтезировался (иначе Quartus ругается на две копии модуля), обложил матюками упомянутыми атрибутами. И Gate симуляция с использованием внешнего файла (в котором уже есть копия тестируемого модуля) потеряла задержки. Нельзя ли заставить ModelSim компилировать с учетом задержек? Библиотеки подключить?
  11. Я неясно выразился, наверное. Конечно, проект перекомпилировался, было бы там чего компилировать. Но на результатах это не сказывается. "Ты скажи, какая вина на мне, боярин?!" (с) Иван Васильевич. По поводу скриптов - коль из отдельного файла тот же тестбенч симулируется нормально, то... ? По-моему, и скрипты в логах имеются.
  12. В скриптах не разбираюсь. Вот что было в окне Transcript в ModelSim при тестбенче из того же файла: # Reading C:/Programs/Altera/91/modelsim_ase/tcl/vsim/pref.tcl # do exGlitch_run_msim_gate_verilog.do # if {[file exists gate_work]} { # vdel -lib gate_work -all # } # vlib gate_work # vmap work gate_work # Copying C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini # Modifying modelsim.ini # ** Warning: Copied C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini. # Updated modelsim.ini. # # vlog -vlog01compat -work work +incdir+. {exGlitch_8_1200mv_85c_slow.vo} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch # # Top level modules: # exGlitch # # vlog -sv -work work +incdir+D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch {D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch.sv} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch # -- Compiling module exGlitch_tb # # Top level modules: # exGlitch_tb # # vsim -t 1ps +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs="+acc" exGlitch_tb # vsim +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs=\"+acc\" -t 1ps exGlitch_tb # Loading sv_std.std # Loading work.exGlitch_tb # Loading work.exGlitch # # add wave * # view structure # .main_pane.structure.interior.cs.body.struct # view signals # .main_pane.objects.interior.cs.body # run 120 ns А вот что, когда тестбенч в отдельном файле # Reading C:/Programs/Altera/91/modelsim_ase/tcl/vsim/pref.tcl # do exGlitch_run_msim_gate_verilog.do # if {[file exists gate_work]} { # vdel -lib gate_work -all # } # vlib gate_work # vmap work gate_work # Copying C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini # Modifying modelsim.ini # ** Warning: Copied C:\Programs\Altera\91\modelsim_ase\win32aloem/../modelsim.ini to modelsim.ini. # Updated modelsim.ini. # # vlog -vlog01compat -work work +incdir+. {exGlitch_8_1200mv_85c_slow.vo} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch # # Top level modules: # exGlitch # # vlog -sv -work work +incdir+D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch {D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch_tb.sv} # Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009 # -- Compiling module exGlitch_tb # # Top level modules: # exGlitch_tb # # vsim -t 1ps +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs="+acc" exGlitch_tb # vsim +transport_int_delays +transport_path_delays -L altera_ver -L cycloneiii_ver -L gate_work -L work -voptargs=\"+acc\" -t 1ps exGlitch_tb # Loading sv_std.std # Loading work.exGlitch_tb # Loading work.exGlitch # Loading cycloneiii_ver.cycloneiii_routing_wire # Loading cycloneiii_ver.cycloneiii_io_obuf # Loading cycloneiii_ver.cycloneiii_io_ibuf # Loading cycloneiii_ver.cycloneiii_lcell_comb # Loading altera_ver.dffeas # SDF 6.5b Compiler 2009.10 Oct 1 2009 # # Loading instances from exGlitch_8_1200mv_85c_v_slow.sdo # Loading altera_ver.PRIM_GDFF_LOW # Loading timing data from exGlitch_8_1200mv_85c_v_slow.sdo # ** Note: (vsim-3587) SDF Backannotation Successfully Completed. # Time: 0 ps Iteration: 0 Region: /exGlitch_tb File: D:/ViKo/Projects/Quartus_Projects/Quartus_exGlitch/exGlitch_tb.sv # # add wave * # view structure # .main_pane.structure.interior.cs.body.struct # view signals # .main_pane.objects.interior.cs.body # run 120 ns Сейчас сам почитаю :) Чтобы он не компилировался, я его обложил атрибутами. Похоже, атрибуты synthesis translate_off Quartus'у до лампочки. Если задаю топ-модуль exGlitch_tb, получаю ошибку: Error: Can't synthesize current design -- Top partition does not contain any logic Вижу по логам, что библиотеки не прилепились, правильно?
  13. Все равно, компилирую проект заново, или нет. не нужно. Не имеет значения. одинаковые. Не имеет значения. Когда задаю тестбенч в том же файле, Quatrus это принимает.
  14. Имею учебный проект, в котором есть файл со следующим содержимым (из темы про палки в RTL симуляции). /* Проверка симуляции иголок */ `timescale 1 ns / 1 ps /* example of glitch */ module exGlitch (input wire clk, output logic a = 1, b, c); always_ff @(posedge clk) a = !a; always_comb begin b = a & clk; c = a ^ b; end endmodule /* synthesis translate_off */ module exGlitch_tb; logic clk, a, b, c; exGlitch eG(clk, a, b, c); initial clk = 1; always #5 clk = !clk; endmodule /* synthesis translate_on */ Тот же exGlitch_tb имею в отдельном файле. Когда запускаю gate симуляцию из Quartus в ModelSim (с помощью NativeLink), и указываю тестбенч из отдельного файла, все симулируется нормально. Когда же указываю тестбенч в том же файле, где и сам пример, то симуляция работает как RTL, без учета задержек. Кто виноват? и Что делать? Обложил exGlitch_tb матюками атрибутами - пустое дело.
  15. Хотелось бы докопаться до истины в данном вопросе. Можно было бы поотключать поочереди сигналы, объединяемые по AND и посмотреть на результирующий сигнал сброса.
  16. http://electronix.ru/index.php?pid=2 см. последний пункт. 50 сообщений, попроситесь в "свои"...
  17. Это как? У вас напряжения питания насколько дергалось (или проседало постоянно) до того, как "поддали"?
  18. Для прояснения - always нужно задать список чувствительности, т.е. по какому событию будут выполняться операторы в блоке. Например, always @(posedge clk) срабатывает по фронту тактовой частоты. В блоке always_comb эта чувствительность подразумевается ко всем входящим в блок сигналам. Можно было написать always @*. От always_comb есть отличия, в стандарте описаны.
  19. Не понимаю! Когда в настройках Quartus NativeLink задаю тестбенч из отдельного файла (модуль Test из сообщения №37 скопировал в файл), gate симуляция работает правильно. Когда же задаю этот же модуль Test из файла, общего с тестируемым (как в сообщении №37), gate симуляция не отличается от RTL. Почему?
  20. У меня были FLEX10K, ACEX, Cyclone II. Терминаторов не было. Перед предыдущим ответом я задал в книге по Quartus поиск слова terminator. Поиск не дал результатов. Потому и написал, с примечанием "вроде". Возможно, я не прав. Терминаторы включатся автоматически при выборе интерфейса, на который рассчитана ножка. А диоды - задайте для пина свойство PCI-compliant - вот вам и диоды.
  21. Для Clamp Diode смотрите PCI-Clamp Diode. А терминаторов, вроде, отродясь не было.
  22. Достал со шкафа альтеровскую Data Book 1996. На обложке картинка FLEX10K100 - керамический корпус с золоченой крышкой - теплоотводом. В начале раздела семейства FLEX 10K картинка - 7 микросхем разной емкости. У 10K40, 10K50, 10K70 корпуса точно такие, как на левой показанной выше "подозрительной" картинке. У 10K20, 10K30 - центральная часть не 8-гранная, а углы квадрата сглажены дугами. У 10К10 просто белая маркировка краской на корпусе. А в центре 10K100 - в том керамическом корпусе, что уже описал. За подлинность книги ручаюсь :) Могу повторить слова из песни... но уже громче!
×
×
  • Создать...