Jump to content

    

Search the Community

Showing results for tags 'modelsim'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Neural networks and machine learning (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCs)
    • Cредства разработки для МК
    • ARM
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
  • Аналоговая и цифровая техника, прикладная электроника
  • Силовая Электроника - Power Electronics
  • Интерфейсы
  • Поставщики компонентов для электроники
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
  • Дополнительные разделы - Additional sections

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники

Found 15 results

  1. Всем добра! Отмоделировав уже много, но, наверное, бездумно (в какой-то части) столкнулся наконец-то с тем, что не понимаю, почему один из проектов моделируется сравнительно долго (да, для меня и 4 минуты долго для сравнительно пустякового проекта). Меня смущают вот эти фемтосекунды: Хотя поиском по всему проекту я не нашёл директив "меньше", чем `timescale 1ns / 100ps Классическая дилогия: кто виноват и что делать? Прошу пнуть в нужном направлении.
  2. Имеется 4 компонента сгенеренных в цикле genvar i ; // Pad out the input data bus with 0's to 8 bits to avoid errors generate for (i = 0 ; i < (CH_NUMBERS) ; i = i + 1) begin : loop_data_chanel input_channel i_channel( .clk_fabric (clock_x1), .clk_fabric_x2 (clock_x2), .clk_input (clock_x12), .serdes_strobe (serdes_strobe), .tmds_p (LVDS_p[i]), .tmds_n (LVDS_n[i]), .data_out (data_out[11+i*12 : i*12]), .frame (frame) ); end endgenerate Пытаюсь в тестбенче "вывести на картинку" сигнал wire every_other = HG_KG.dvi_decoder.i_channel.i_gearbox.every_other; Modelsim требует указать порядковый номер i_channel. Пробовал квадратные скобки - не пропускает. Почитал документацию на Modelsim. Написано что для VHDL нужно кругные скобки. Попробовал - все равно не подходит.
  3. Добрый день. Возник вопрос, как в модельсим передать между модулями упакованную структуру одно поле которой параметризировано? Если пишу так, то он ругается на то что структура не определена (логично): module input_processing #( parameter WORK_WIDTH = 18 )( input logic ireset, input logic iclk, output st_TAG port_tag, ); typedef struct packed{ logic throw; logic R_pack; logic H_pack; logic [$clog2(WORK_WIDTH)-1:0] pad; logic [15:0] slice_len; } st_TAG; ** Error: near "port_tag": syntax error, unexpected IDENTIFIER, expecting ')'. Если так, то говорит, что не определен параметр (тоже логичо): typedef struct packed{ logic throw; logic R_pack; logic H_pack; logic [$clog2(WORK_WIDTH)-1:0] pad; logic [15:0] slice_len; } st_TAG; module input_processing #( parameter WORK_WIDTH = 18 )( input logic ireset, input logic iclk, output st_TAG port_tag, ); ** Error: (vsim-3043) Unresolved reference to 'WORK_WIDTH' in $root.WORK_WIDTH. На самом деле у меня уже возникала похожая проблема, только не со структурой, а с функцией. Возникала ошибка, когда я пытался рассчитать размерность порта с помощью функции определенной в теле модуля. Я нахожу логику в ошибках modelsim, но если он запрещает заходить в тело модуля при объявлении портов, то должна быть возможность определить структуру/функцию в описании портов, чтобы использовать их там. Или нет? Забавно, что Quartus ошибку не выдает (по крайней мере с функциями), то есть там получается другая область видимости. Вы не находите странным такую разницу в подходах Quartus 17 и Modelsim 10.4b? Да я в принципе могу определить выход просто как разрядность и в теле присвоить ему упакованную структуру, но потом при изменении структуры мне разрядность этого выхода придется постоянно менять.
  4. Всем добра! Исполняю в командной строке ModelSim-а ModelSim> if {1} {puts "111"} Получаю, как и ожидал # 111 Исполняю тоже самое в командной строке Active-HDL-а: if {1} {puts "111"} Получаю # Error: missing endif for if in line 1 Причём всякие добавления endif в виде if {1} {puts "111"} endif Дают ту же самую ошибку. ЧЯДНТ?!
  5. Всем добра! Есть dut (простейший D-триггер) и его testbench, которые я хочу смоделировать, скажем, ModelSim-ом. Файлы проекта и скрипты моделирования я разложил так: MainFolder - главная папка, в которой будет лежать вообще всё MainFolder\Project - папка, в которой лежит проект (dut и testbench) MainFolder\Project\General - папка, в которой лежит единственный файл dut - dff.sv MainFolder\Project\TestBench - папка, в которой лежит файл testbench - dff_tb.sv и файл данных data.dat, используемых этим testbench-ем MainFolder\Project\ModelSim\Functional - папка, в которой лежат файлы для моделирования: clear.bat - скрипт очистки каталога от остатков после работы ModelSim-а functional_run.bat - скрипт запуска моделирования ModelSim-а functional.tcl - скрипт конфигурации работы ModelSim-а Итого вопрос: если в dff_tb.sv я читаю из файла data.dat данные таким образом: $readmemb("data.dat", data);, что казалось бы логичным, то ModelSim ругается на то, что не может найти этот data.dat, но если я ставлю путь к нему относительно каталога MainFolder\Project\ModelSim\Functional, т.е. $readmemb("../../Project/TestBench/data.dat", data); то всё проходит без сучка без задоринки. Вопрос: почему?! И что мне надо (если можно) поправить в скрипте functional.tcl, чтобы я мог оставлять в dff_tb.sv вызов $readmemb("data.dat", data)? Проект, как обычно, прилагаю. В нём есть ещё каталог для Active-HDL: на него просьба не обращать внимание )) Заранее спасибо! MainFolder.zip
  6. Всем добра! Всю свою сознательную жизнь сидел на Mentor-e, но пришла пора квалификации инструмента, для чего требуется сравнение результатов оного (ModelSim-a) с альтернативным ПО. Разумным решением представляется Aldec с его Active-HDL. Работая с ModelSim использовал его в основном в пакетном режиме, т.е. по запуску единственного командного файла, инициирующего обработку проекта, на выходе получал готовую временную диаграмму, которую потом успешно копировал в отчёт. Избаловавшись подобным подходом, захотелось применить оный и на новом инструменте, однако столкнулся с непреодолимыми (пока) для меня сложностями. Вопрос в следующем: возможно ли средствами Active-HDL проделать то же, что я проделывал с ModelSim? Есть ли у кого готовый пример этого (довольно подробный поиск в сети ничего, что дало хоть какие-то результаты, не принёс)? Для примера прилагаю свои изыскания, где я попробовал максимально подробно изложить своё видение маршрутов проектирования для упомянутых выше инструментов (для Active-HDL существует два маршрута, но ни на одном из них мне не улыбнулась удача): ЧЯДНТ? CompareDesignRoute.zip
  7. Всем добра! Разбираюсь с чужим проектом на чужом мне языке. При моделировании ModelSim произносит несколько ругательств, суть которых, как (если) я правильно понимаю сводится к тому, что некоторые сигналы в проекте не заданы в testbench-е. Начинаю смотреть по проекту и вижу, что один сигнал интересующего меня модуля отсутствует как класс: нет, он есть в файле (библиотечном, который сам ModelSim сгенерировал из Quartus-овских исходников или как там это правильно называть?), но, вот, в списке сигналов ModelSim-а этот сигнал отсутствует! Почему и куда он делся?! Речь про enable. Картинка, на которой всё:
  8. Добра всем! Поискал в форуме в разных ветках, но сразу не нашёл ответа на такой вопрос: поставлена задача для наших проектов доказать соответствие оных директивам DO-254 и иже с ними. Проекты написаны как на VHDL и Verilog (SV), так и в схематике. Причём ПЛИС Actel и Altera. Вопрос: откуда нам, первый раз столкнувшимся со словами Code Coverage, начать сей нелёгкий и тернистый путь? Всё комментарии, а тем паче, ссылки, книги и прочее, приветствуются. Оптимально Mentor (ModelSim и QuestaSim), но и Aldec пойдёт, если он умеет это лучше.
  9. Всем добра! Столкнулся с такой проблемой: есть dut, например такого вида (dut.sv): module dut ( input logic clk, input logic res, input logic data, input logic ena, output logic q, output logic w ); always_ff @(posedge clk) if (res) q <= 1'b0; else if (ena) q <= data; else q <= q; enum {DUT_IDLE, DUT_START, DUT_PROC, DUT_END} dut_state; always_ff @(posedge clk) if (res) dut_state <= DUT_IDLE; else case (dut_state) DUT_IDLE : dut_state <= ena ? DUT_START : DUT_IDLE; DUT_START : dut_state <= DUT_PROC; DUT_PROC : dut_state <= DUT_END; DUT_END : dut_state <= DUT_END; default : dut_state <= DUT_IDLE; endcase assign w = dut_state == DUT_PROC; endmodule : dut и есть узурпирующий его test bench вида, например, такого (tb.sv): `timescale 1ns/100ps module tb; logic clk; logic res; logic data; logic ena_tb; logic ena; logic q; logic w; dut dut(.*); initial begin clk = 0; forever #10ns clk = !clk; end; initial begin res = 0; #20ns res = 1; #20ns res = 0; end initial begin data = 0; forever #30ns data = !data; end; initial begin ena_tb = 0; #70ns ena_tb = 1; #80ns ena_tb = 0; end enum {TB_IDLE, TB_START, TB_PROC, TB_END} tb_state; always_ff @(posedge clk) if (res) tb_state <= TB_IDLE; else case (tb_state) TB_IDLE : tb_state <= TB_START; TB_START : tb_state <= ena_tb ? TB_PROC : TB_START; TB_PROC : tb_state <= !ena_tb ? TB_END : TB_PROC; TB_END : tb_state <= TB_END; default : tb_state <= TB_IDLE; endcase assign ena = tb_state == TB_PROC; endmodule : tb есть tcl-скрипт (proc_tb.tcl), запускающийся в Mentore (ModesSim или QuestaSim) обрабатывающий упомянутые выше tb и dut вида # create library if [file exists work] { vdel -all } vlib work vlog -O0 +fcover +acc *.sv set top_module tb # set top_module dut set top_module_opt $top_module append top_module_opt "_opt" set coverage_letters_string "sf" # optimize design vopt +cover=$coverage_letters_string $top_module -o $top_module_opt vsim -cvgperinstance -c -coverage work.$top_module_opt # go run 200ns # make coverage report if {$top_module == "tb"} { coverage save $top_module.ucdb -instance /tb/dut coverage exclude -src tb.sv } else { coverage save $top_module.ucdb } coverage report -html $top_module.ucdb -code $coverage_letters_string # config instance window view instance source ColumnConfig_instance.tcl который, несмотря на наличии в нём строк вида coverage save $top_module.ucdb -instance /tb/dut coverage exclude -src tb.sv которые мы выполняем при моделировании с взятием в качестве модуля верхнего уровня test bench-а рисует на главной странице html отчёта картинку вида Картинка хорошая, но нам не нужен сам tb ни в дереве, ни в каких других таблицах! Нужен dut и всё, что ниже! Т.е. картина, которая нужна, получается при замене (в proc_tb.tcl) строки set top_module tb на set top_module dut что даёт Т.е. всё дерево слева и всё, относящееся к нему справа, стало, как доктор прописал, но покрытие теперь в нём стало минимальным! Test bench не сработал? ЧЯДНТ? Просьба ткнуть носом ) Как обычно, прикладываю проект. test_coverage_el.zip
  10. Всем добра! Пытаюсь промоделировать результаты компиляции модуля dut.sv quartus-a Modelsim-ом. В папке с результатами симуляции, среди прочих, имею файлы dut_v.sdo, dut_v_fast.sdo, dut.vo и dut_fast.vo В скрипте, который запускается при моделировании, вызываются, среди прочих, следующие команды vlog dut.vo vsim -sdfmin /dut=dut_v.sdo Но, вместо dut.vo я могу подставить dut_fast.vo, а вместо -sdfmin - -sdfmax и -sdftyp, и вместо dut_v.sdo - dut_fast.vo! Помогите, плиз, разобраться в этой путанице! Или кто носом ткнёт: что и где почитать. FM не помогло: я оттуда ничего толкового не вынес.
  11. Доброго всем! Использую // megafunction wizard: %RAM: 2-PORT% // GENERATION: STANDARD // VERSION: WM1.0 // MODULE: altsyncram // ============================================================ // File Name: ram.v // Megafunction Name(s): // altsyncram // // Simulation Library Files(s): // altera_mf с одним из параметров defparam altsyncram_component.read_during_write_mode_mixed_ports = "DONT_CARE" а также в комментариях // ============================================================ // CNX file retrieval info // ============================================================ // Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" // Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_MIXED_PORTS STRING "DONT_CARE" При моделировании Modelsim говорит: # Warning: read_during_write_mode_mixed_ports is assumed as OLD_DATA # Time: 0.00 ns Instance: top_tb.top_inst.ram_inst.altsyncram_component Меняю мегафункцию defparam altsyncram_component.read_during_write_mode_mixed_ports = "OLD_DATA" а также в комментариях // ============================================================ // CNX file retrieval info // ============================================================ // Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "1" // Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_MIXED_PORTS STRING "OLD_DATA" Modelsim уже предупреждения не выдаёт. В первом случае, он мне говорит, что раз мне всё равно, он будет мне при чтении во время записи по одному и тому же адресу выдавать старые данные, как и во втором, в котором я сам так захотел, и мне об этом сообщать не следует? Просьба подтвердить или опроврегнуть оное умозаключение )
  12. Доброго всем! Работаю с Cyclone II (его русским аналогом), моделирую в Modelsim-e 10.1d (из Quartus-a 13.0sp1). Хочется взять Modelsim посвежее, тем более, что на сайте есть слова: Device support All Intel® FPGA devices (Including Intel® MAX® CPLDs, Intel® Arria®, Intel® Cyclone®, and Intel® Stratix® series Intel® FPGAs) Так вот вопрос: тварь ли я дрожащая или право имею?
  13. Приветствую уважаемые посетители форума. Решил изучить verilog(SystemVerilog) на уровне большем чем "читаю и плачу". Написал простенький проектик, запустил проверку синтаксиса в modelsim. И с ужасом обнаружил у себя ошибку. И ужаснулся я не от того, что у меня ошибка ( в конце концов я не волшебник, а только учусь). А ужаснулся я от того, что у меня один сигнал имел несколько драйверов, и modelsim даже не пискнул об этом, гад такой. В vhdl можно было применить unresolved тип, и горя не знать. Хотя в последнее время, применение любого типа, отличного от std_logic_vector - это потенциальные проблемы, т.к почти все, сгенерированное vivado, понимает только этот гадский тип, посему всю красоту строгой типизации в vhdl можно даже и не пытаться применять, т.к написание " прокладок" занимает неадекватно много времени... Так, вот если по теме: как такие ошибки(несколько драйверов у сигнала) обнаружить в verilog, ну или на худой конец как заставить modelsim истошно вопить об этом ? P.S. За орфографию сильно не ругайте, тыкаю одним пальцем в телефон, трясясь в автобусе...
  14. Потратил несколько часов в попытках установить Modelsim 10.2c SE в современном 64-битном Linux (multilib). Прилагаю решение на случай, если кто-то захочет поставить относительно старую версию Modelsim SE. При запуске install.linux, установщик, написанный на Java падает с такой ошибкой: # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0xf7eee475, pid=13257, tid=4144433984 # # JRE version: 6.0_21-b06 # Java VM: Java HotSpot(TM) Server VM (17.0-b16 mixed mode linux-x86 ) # Problematic frame: # C [libpthread.so.0+0xd475] pthread_cond_wait+0x95 # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # Установщик идет со своей JRE, причем сами jar-ы на 7.x/8.x-версиях JRE уже не запускаются. Пляски с бубном (исследование пожеланий JRE с помощью ldd и strace, подсовывание старых версий библиотек через LD_PRELOAD) быстрого результата не принесли, в интернетах сведений о такой ошибки также не нашлось. В итоге было найдено следующее решение: заменяем 32-битную JRE, идущую в комплекте установщика, на 64-битную версию. 1. Ищем и скачиваем jre-6u45-linux-x64.bin. 2. Распаковываем: chmod +x jre-6u45-linux-x64.bin ./jre-6u45-linux-x64.bin 3. Копируем содержимое только что распакованной папки jre1.6.0_45 в папку ~/mgc/install.ixl/JRE (ее нам создал install.linux). 4. Запускаем установщик вручную: ~/mgc/install.ixl/mgc_install 5. Подсказываем установщику путь к modelsim-base.mis и другим .mis-файлам. Остальные телодвижения со старыми версиями 32-битных библиотек для запуска самого vsim остаются в силе.
  15. Есть простой record с 32-битными данными (float32) и стробом: type FL32_T is record fl32 : std_logic_vector(31 downto 0); -- single precision valid : std_logic; -- valid, strobe, enable, etc... end record; Когда отображаем это в waveform, отдельно сигнал данных fl32 можно отобразить в формате float32, а вот в группе рисуется просто как hex: Может можно как-то отображать значения float32 и в группе сигналов? По идее что-то похожее можно делать используя virtual types, но там получается только один сигнал сделать виртульаным (а не 2 или больше), да и так можно только какой-то заранее известный фискированный поднабор float32 "переиминовать". Может есть какой-то универсальный способ решения такой проблемы?