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

Koluchiy

Свой
  • Постов

    1 084
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Koluchiy

  • Звание
    Профессионал
    Профессионал

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

5 175 просмотров профиля
  1. Приветствую. В некоем проекте (Аррия-10) есть модуль 2хпортовой памяти. Порты синхронны (работают на 1 частоте). В порт а ведется запись, из порта b производится чтение. Никаких clock enable нет (=1). В чем проблема. Есть в altsyncram параметр: clock_enable_output_b . И вот при изменении этого параметра (NORMAL или BYPASS) задержка выходных данных при чтении из порта b изменяется на 1 такт 😲. (при NORMAL - задержка больше). Прошерстил документацию, и нигде не увидел, чтобы было написано, как этот параметр влияет на задержку и почему. Кто-нибудь может пояснить, что происходит? Всем заранее спасибо. altsyncram# ( .operation_mode ("DUAL_PORT"), //////////////////////////// // port a parameters // //////////////////////////// .width_a (18), .widthad_a (10), .numwords_a (1024), // registering parameters .outdata_reg_a ("CLOCK0"), // clearing parameters .address_aclr_a ("NONE"), .outdata_aclr_a ("NONE"), .wrcontrol_aclr_a ("NONE"), .indata_aclr_a ("NONE"), .byteena_aclr_a ("NONE"), //////////////////////////// // port B // //////////////////////////// .width_b (18), .widthad_b (10), .numwords_b (1024), // registering parameters .indata_reg_b ("CLOCK1"), .wrcontrol_wraddress_reg_b ("CLOCK1"), .rdcontrol_reg_b ("CLOCK1"), .address_reg_b ("CLOCK1"), .outdata_reg_b ("CLOCK1"), .byteena_reg_b ("CLOCK1"), // clearing parameters .indata_aclr_b ("NONE"), .wrcontrol_aclr_b ("NONE"), .address_aclr_b ("NONE"), .outdata_aclr_b ("NONE"), .rdcontrol_aclr_b ("NONE"), .byteena_aclr_b ("NONE"), // byte enable parameters .width_byteena_a (2), .width_byteena_b (2), // ram block type choices are )"AUTO"), )SMALL), )MEDIUM) and )LARGE) .ram_block_type ("AUTO"), // width of a byte for byte enables .byte_size (9), // Mixed port feed through mode choices are // OLD_DATA and DONT_CARE .read_during_write_mode_mixed_ports ("DONT_CARE"), .read_during_write_mode_port_a ("NEW_DATA_NO_NBE_READ"), .read_during_write_mode_port_b ("NEW_DATA_NO_NBE_READ"), // General operation parameters .init_file ("UNUSED"), .init_file_layout ("PORT_A"), .maximum_depth (0), .clock_enable_input_a ("NORMAL"), // choices are normal and bypass not valid for Stratix .clock_enable_input_b ("NORMAL"), // choices are normal and bypass not valid for Stratix .clock_enable_output_a ("BYPASS"), // choices are normal and bypass not valid for Stratix .clock_enable_output_b ("BYPASS"), // choices are normal and bypass not valid for Stratix .clock_enable_core_a ("USE_INPUT_CLKEN"), .clock_enable_core_b ("USE_INPUT_CLKEN"), .enable_ecc ("FALSE"), .ecc_pipeline_stage_enabled ("FALSE"), .width_eccstatus (3), .intended_device_family ("Arria V")//, //.cbxi_parameter ("NOTHING") ) altsyncram0 ( .aclr0 (Reset),// = 0, //.aclr1 (Reset),// = 0, .aclr1 (0),// = 0, .clock0 (Clk),// = 1, .clocken0 (ClkEna0),// = 1, .address_a (WrAddr ),// = 0, .rden_a (1'b0 ),// = 1, .q_a (), .data_a (WrData ),// = 1, .wren_a (WrEna ),// = 0, .byteena_a (2'b11 ),// = 1, .clock1 (Clk),// = 1, .clocken1 (ClkEna1),// = 1, .address_b (RdAddr ),// = 1, .rden_b (1),// = 1, .q_b (RdData ), .data_b (),// = 1, .wren_b (0), .byteena_b (0)// = 1, );
  2. Спасибо! Сделал вот так: forever begin @(posedge clk) begin if (fas && val) break; end end Тоже работает.
  3. Приветствую. Пилю тестбенч. На одном симуляторе работает нормально, на другом нет. Подскажите, что я делаю не так и как правильно? repeat (8) begin wait (fas && val); @(posedge clk) error_insertion <= 1; end wait (fas && val); @(posedge clk) error_insertion <= 0; В чем идея. Есть поток фреймов, которые начинаются, когда fas && val == 1 . Нужно включить error_insertion на заданное количество фреймов (в тексте выше - 8). На практике, в одном из симуляторов работает как надо, в другом считает фреймы в 2 раза быстрее, т.е. выходит из цикла уже после 4 фреймов. Предполагаю, что проблема в том, что wait работает по уровню, а нужно чтобы данная пауза работала по фронту @(posedge clk). Как написать wait (или не wait) так, чтобы работало как мне надо? Всем спасибо за помощь.
  4. А я бы предложил найти другой мост "in production" и не заниматься переделкой. Если, конечно, больше нечем заняться - тогда да.
  5. Приветствую. Quartus Standard edition 18. Симуляция - Questa, запускаю через NativeLink, т.е. Tools/Run simulation Tool/RTL Simulation Не могу понять, как для этого варианта задать глобальный define для проекта. Для синтеза в Quartus знаю, где задать. Но для симуляции "мышкой из Quartus" это не работает.
  6. Какие требования нужно предьявлять к компьютеру, на котором будет только Hardware Server из 22.1 ?
  7. Будет ли нормально работать Vivado 19.1 (среда проекта) с Hardware Server из 22.1 (есть такой дистриб, и в нем есть Hardware Server) ?
  8. Приветствую. Нужно отлаживать плату в дальней комнатенке. В комнатенке шумно и холодно, поэтому тащить туда ящик не вариант. В общем, мне нужна удаленная отладка. Поставить какой-нибудь ящичек попроще, подключить к нему JTAG и сетку и настроить для удаленной отладки. На сайте Xilinx написано про Vivado Hardware Server, но где его взять - не очень понятно. В настройках установки Vivado настройки "только Vivado Hardware Server" нету. Если залогиниться на сайте Xilinx с нерусского аккаунта - даст скачать? Ну т.е. понятно, что если поставить на ящичек в комнатенке полноценный Vivado, то скорее всего все это настроить будет не проблема. Проблема в том, что ящичек будет уже не попроще. В общем, направьте в нужном направлении?
  9. Подскажите, можно ли передавать имя таска в качестве входного параметра другого таска? Для использования в конструкции disable task_name; Т.е. есть повторяющийся кусок кода, в котором есть выход из таска. Чтобы можно было этот повторяющийся кусок кода вынести в таск, нужно туда передавать ссылку на таск, который нужно закрывать. Да, и можно ли закрывать не текущий таск, а вышестоящий? Закроется ли при этом автоматически текущий таск?
  10. Подскажите, а почему именно на эту версию? А не на 2022 например?
  11. ================== (следующий пост, форум наверное опять склеит) Промежуточные итоги. 1) Убирание mark_debug в открытой части кода видимых результатов не принесло. Возможно, по причине отсутствия проблем с времянками в этой части кода. 😁 2) Запустил 30! стратегий на ночь. 2 из них развелись 🙂. WNS +0.001 и +0.013 нс. Можно было бы на этом и остановиться, но вообще хотелось бы более лучший результат.
  12. Писал в корневом посте, читайте внимательнее. Если бы времянки не сходились в своем коде, вопросов бы не было, чем можно заняться в этом проекте :). ========================== (тут начинался следующий пост, но форум склеил) Что касается рисования pblockов. Рисовать их, конечно, можно, но тут есть 2 проблемы: 1) Нужно ввалить довольно существенное рабочее время в реверс-инжиниринг блока по нетлисту. Т.е. понять, чего там есть внутри и как оно хотя бы примерно работает, чтобы не рисовать квадратики наобум. В данном случае мне бы хотелось вместо этого ввалить вычислительные мощности и календарное время сервера, чтобы за счет перебора вариантов получать требуемый результат. А квадратики чтобы рисовали разработчики закрытого блока, как и выполняли прочие оптимизации. Но тут уже вопрос переходит из технической в административную область. 2) Я не знаю, у кого как, а у меня с квадратиками в Вивадо пока посложнее, чем в Квартусе или раньше в ISE. В том плане, что вероятность получить результат типа "не могу развести, не скажу почему" довольно большая. Поэтому тем более заниматься этим в закрытом блоке не очень хочется.
  13. Спрашивали - отвечаем. Частота 240 4 уровня логики фанаут 24 logic/net 1.4/2.5 Это путь с самым большим слаком (в текущем варианте - 0.408 нс). Но путей со слаками в этом варианте компиляции - много.
×
×
  • Создать...