Jump to content

    

honinbo

Свой
  • Content Count

    259
  • Joined

  • Last visited

Community Reputation

0 Обычный

About honinbo

  • Rank
    Местный

Контакты

  • Сайт
    http://
  • ICQ
    0

Recent Profile Visitors

2256 profile views
  1. Если пользуете скрипты напрямую, то читать лучше документацию на modelsim. Обычно в папке doc/pdfdocs. Reference manual - описание команд и их ключей. vlog dut.vo - компилит верилог нетлист модуля dut vsim -sdfmin /dut=dut_v.sdo - запускает симуляцию (какого модуля у вас опущено )) ) и подключает миинимальные задержки на модуль dut из файла dut_v.sdo (sdf-формат). ключ- sdfmin можно заменить на -sdfmax или -sdftyp, но при этом файл *.sdo должен содержать эти задержки, или заменить и имя файла на содержащие задержки. Задержки в sdf - три значения в круглых скобках, наличие всех трех необязательно, возможно и два (min и max) и одно (любое). Последовательность min, typ, max. Если поставите ключ -sdftyp, а в файле *.sdo есть только min и max, то ничего не наложится, задержки останутся теми, что указаны в библиотеке элементов. Так, что читать лог и смотреть что и куда подключилось/наложилось обязательно.
  2. Для полноты картины, это не верно. По умолчанию, значение для setup будет. Для hold все равно явно задавать надо. Иначе, да : Будет. Но позже, когда до расчета hold дело дойдет. В нашем эксперименте до него и не дошло еще.
  3. Видно, синтезатор оптимизирует логику только когда не вписывается в констрейны. Во 2 и 3 случаях логика сравнения вписывается в требования и в пути от flag к data то, что хотел видеть топикстартер. В его проекте видимо "собака порылась" где-то еще ))
  4. Раз уж ввязался - вот полный отчет об эксперименте. DC 2014.09 Репорт без multi_cycle_path **************************************** Report : timing -path full -delay max -max_paths 1 Design : test Version: J-2014.09-SP3 Date : Fri Feb 8 15:01:51 2019 **************************************** Operating Conditions: slow Library: BMK_040_slow Wire Load Model Mode: top Startpoint: flag_reg[3] (rising edge-triggered flip-flop clocked by CLK) Endpoint: data_reg (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path ----------------------------------------------------------- clock CLK (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 flag_reg[3]/c (dfrrqx1) 0.00 0.00 r flag_reg[3]/q (dfrrqx1) <- 1.40 1.40 r U45/q (inx1) 0.18 1.59 f U43/q (inx1) 0.15 1.74 r U42/q (no2i1x1) 0.36 2.09 r U41/q (na2x1) 0.30 2.39 f U46/q (na2i1x1) 0.21 2.60 r data_reg/d (dfrrqx1) 0.00 2.60 r data arrival time 2.60 clock CLK (rise edge) 4.00 4.00 clock network delay (propagated) 0.00 4.00 data_reg/c (dfrrqx1) 0.00 4.00 r library setup time -0.29 3.71 data required time 3.71 ----------------------------------------------------------- data required time 3.71 data arrival time -2.60 ----------------------------------------------------------- slack (MET) 1.10 1 report_timing -to data_reg/d -from *data_a_reg[3]/q **************************************** Report : timing -path full -delay max -max_paths 1 Design : test Version: J-2014.09-SP3 Date : Fri Feb 8 15:01:51 2019 **************************************** Operating Conditions: slow Library: BMK_040_slow Wire Load Model Mode: top Startpoint: data_a_reg[3] (rising edge-triggered flip-flop clocked by CLK) Endpoint: data_reg (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path ----------------------------------------------------------- clock CLK (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 data_a_reg[3]/c (dfrrqx1) 0.00 0.00 r data_a_reg[3]/q (dfrrqx1) <- 1.62 1.62 f U22/q (eo2x1) 0.45 2.07 f U30/q (or8x1) 0.95 3.03 f U44/q (no2x1) 0.33 3.36 r U41/q (na2x1) 0.30 3.66 f U46/q (na2i1x1) 0.21 3.87 r data_reg/d (dfrrqx1) 0.00 3.87 r data arrival time 3.87 clock CLK (rise edge) 4.00 4.00 clock network delay (propagated) 0.00 4.00 data_reg/c (dfrrqx1) 0.00 4.00 r library setup time -0.29 3.71 data required time 3.71 ----------------------------------------------------------- data required time 3.71 data arrival time -3.87 ----------------------------------------------------------- slack (VIOLATED) -0.16 1 Репорт с multicycle_path create_clock -name CLK -period 4 -waveform "0 2" [get_ports clk] 1 set_input_delay -max -clock CLK 1 [remove_from_collection [all_inputs] [get_ports "clk"]] 1 set_input_delay -min -clock CLK 0 [remove_from_collection [all_inputs] [get_ports "clk"]] 1 set_output_delay -max -clock CLK 1 [all_outputs] 1 set_input_transition -max 2 [all_inputs] 1 set_input_transition -min 0 [all_inputs] 1 set_load 0.4 [all_outputs] 1 set_multicycle_path 4 -end -setup -from CLK -thr {\data_a_reg*} -to CLK 1 set_multicycle_path 4 -end -setup -from CLK -thr {\data_b_reg*} -to CLK 1 set_multicycle_path 3 -end -hold -from CLK -thr {\data_a_reg*} -to CLK 1 set_multicycle_path 3 -end -hold -from CLK -thr {\data_b_reg*} -to CLK 1 set_propagated_clock [all_clocks] Information: set_input_delay values are added to the propagated clock skew. (TIM-113) 1 compile -map_effort high -incr ... Optimization Complete --------------------- 1 report_timing -to data_reg/d -from *flag_reg[3]/q **************************************** Report : timing -path full -delay max -max_paths 1 Design : test Version: J-2014.09-SP3 Date : Fri Feb 8 15:04:02 2019 **************************************** Operating Conditions: slow Library: BMK_040_slow Wire Load Model Mode: top Startpoint: flag_reg[3] (rising edge-triggered flip-flop clocked by CLK) Endpoint: data_reg (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path ----------------------------------------------------------- clock CLK (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 flag_reg[3]/c (dfrrqx1) 0.00 0.00 r flag_reg[3]/q (dfrrqx1) <- 1.40 1.40 r C164/q (and2x1) 0.44 1.84 r C163/q (or2x1) 0.31 2.15 r data_reg/d (dfrrqx4) 0.00 2.15 r data arrival time 2.15 clock CLK (rise edge) 4.00 4.00 clock network delay (propagated) 0.00 4.00 data_reg/c (dfrrqx4) 0.00 4.00 r library setup time -0.29 3.71 data required time 3.71 ----------------------------------------------------------- data required time 3.71 data arrival time -2.15 ----------------------------------------------------------- slack (MET) 1.56 1 report_timing -to data_reg/d -from *data_a_reg[3]/q **************************************** Report : timing -path full -delay max -max_paths 1 Design : test Version: J-2014.09-SP3 Date : Fri Feb 8 15:04:02 2019 **************************************** Operating Conditions: slow Library: BMK_040_slow Wire Load Model Mode: top Startpoint: data_a_reg[3] (rising edge-triggered flip-flop clocked by CLK) Endpoint: data_reg (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path ----------------------------------------------------------- clock CLK (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 data_a_reg[3]/c (dfrrqx1) 0.00 0.00 r data_a_reg[3]/q (dfrrqx1) <- 1.62 1.62 f U22/q (eo2x1) 0.45 2.07 f U30/q (or8x1) 0.96 3.03 f U40/q (no3x1) 0.47 3.50 r C164/q (and2x1) 0.47 3.97 r C163/q (or2x1) 0.31 4.28 r data_reg/d (dfrrqx4) 0.00 4.28 r data arrival time 4.28 clock CLK (rise edge) 16.00 16.00 clock network delay (propagated) 0.00 16.00 data_reg/c (dfrrqx4) 0.00 16.00 r library setup time -0.29 15.71 data required time 15.71 ----------------------------------------------------------- data required time 15.71 data arrival time -4.28 ----------------------------------------------------------- slack (MET) 11.43 1 Репорт с пониженной частотой create_clock -name CLK -period 8 -waveform "0 4" [get_ports clk] 1 set_input_delay -max -clock CLK 1 [remove_from_collection [all_inputs] [get_ports "clk"]] 1 set_input_delay -min -clock CLK 0 [remove_from_collection [all_inputs] [get_ports "clk"]] 1 set_output_delay -max -clock CLK 1 [all_outputs] 1 set_input_transition -max 2 [all_inputs] 1 set_input_transition -min 0 [all_inputs] 1 set_load 0.4 [all_outputs] 1 #set_multicycle_path 4 -end -setup -from CLK -thr {\data_a_reg*} -to CLK #set_multicycle_path 4 -end -setup -from CLK -thr {\data_b_reg*} -to CLK #set_multicycle_path 3 -end -hold -from CLK -thr {\data_a_reg*} -to CLK #set_multicycle_path 3 -end -hold -from CLK -thr {\data_b_reg*} -to CLK set_propagated_clock [all_clocks] Information: set_input_delay values are added to the propagated clock skew. (TIM-113) 1 compile -map_effort high -incr Optimization Complete --------------------- 1 report_timing -to data_reg/d -from *flag_reg[3]/q Information: Updating design information... (UID-85) Information: Input delay ('fall') on clock port 'CLK' will be added to the clock's propagated skew. (TIM-112) Information: Input delay ('rise') on clock port 'CLK' will be added to the clock's propagated skew. (TIM-112) **************************************** Report : timing -path full -delay max -max_paths 1 Design : test Version: J-2014.09-SP3 Date : Fri Feb 8 15:22:41 2019 **************************************** Operating Conditions: slow Library: BMK_040_slow Wire Load Model Mode: top Startpoint: flag_reg[3] (rising edge-triggered flip-flop clocked by CLK) Endpoint: data_reg (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path ----------------------------------------------------------- clock CLK (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 flag_reg[3]/c (dfrrqx1) 0.00 0.00 r flag_reg[3]/q (dfrrqx1) <- 1.40 1.40 r C164/q (and2x1) 0.44 1.84 r C163/q (or2x1) 0.31 2.15 r data_reg/d (dfrrqx4) 0.00 2.15 r data arrival time 2.15 clock CLK (rise edge) 8.00 8.00 clock network delay (propagated) 0.00 8.00 data_reg/c (dfrrqx4) 0.00 8.00 r library setup time -0.29 7.71 data required time 7.71 ----------------------------------------------------------- data required time 7.71 data arrival time -2.15 ----------------------------------------------------------- slack (MET) 5.56 1 report_timing -to data_reg/d -from *data_a_reg[3]/q **************************************** Report : timing -path full -delay max -max_paths 1 Design : test Version: J-2014.09-SP3 Date : Fri Feb 8 15:22:41 2019 **************************************** Operating Conditions: slow Library: BMK_040_slow Wire Load Model Mode: top Startpoint: data_a_reg[3] (rising edge-triggered flip-flop clocked by CLK) Endpoint: data_reg (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path ----------------------------------------------------------- clock CLK (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 data_a_reg[3]/c (dfrrqx1) 0.00 0.00 r data_a_reg[3]/q (dfrrqx1) <- 1.62 1.62 f U22/q (eo2x1) 0.45 2.07 f U30/q (or8x1) 0.96 3.03 f U40/q (no3x1) 0.47 3.50 r C164/q (and2x1) 0.47 3.97 r C163/q (or2x1) 0.31 4.28 r data_reg/d (dfrrqx4) 0.00 4.28 r data arrival time 4.28 clock CLK (rise edge) 8.00 8.00 clock network delay (propagated) 0.00 8.00 data_reg/c (dfrrqx4) 0.00 8.00 r library setup time -0.29 7.71 data required time 7.71 ----------------------------------------------------------- data required time 7.71 data arrival time -4.28 ----------------------------------------------------------- slack (MET) 3.43 1
  5. виноват, у меня без ключа -setup было. По умолчанию это 4 для setup и 3 для hold.
  6. Как я понимаю синтезатор просто замешивает flag_reg в логику формирования функции в процессе оптимизации, вот только с какой целью, делал синтез на разных частотах, результат не меняется, наличие/отсутствие multicycle_path в sdc тоже влияния не оказывает. В данном случае принципиально, чтобы по данному пути было минимальное количество элементов. Раз нет разницы с multicycle_path и без него логичен вопрос - А multicycle_path применился ли вообще так ка ВЫ задумали? Что в логе по этому поводу? Можно еще командой report_timing_requarements явно посмотреть. Провел эксперимент ради спортивного интереса. Все нормально отработало в DC 2016.03. Задираешь частоту - логика примешивается к flag, чтобы слэк негативный уменьшить. Применяешь multicycle_path - все становится на свои места: и констрейны выполняются, и лишней логики нет от flag к data. Только multicycle_path я задавал так (как у Вас - DC говорит: Can't find object ...): create_clock -name clk ... [get_port clk] set_multicycle_path 4 -end -setup -from clk -to clk -thr {\data_a_reg*}
  7. А они (параметры) не пропадают, а принимают уже вполне конкретные значения при синтезе. Нетлист - это ж принципиальная схема устройства (если по старому), а не настраиваемой модели, какие уж тут параметры?
  8. скорее есть способ "правильной" настроки софта. Смотрите EDA Tool Settings/Simulation/More EDA Netlist Writer Settings А так в Quartus 17 и sv можно нетлист писать.
  9. Если бы только, а то ведь еще и требования к стабильности формы клока. По одному фронту - важен наклон активного фронта и период. Наклон второго фронта не важен, форма строго 50/50 тоже не важна. А по двум? :crying:
  10. Цитата(_Ivan_33 @ Mar 6 2018, 15:20) посмотрите книгу UVM Primer - не знаю есть ли в пдф, но на амазоне всего 40 баксов, сам купил Или же есть еще репозиторий их https://github.com/rdsalemi/uvmprimer - там тоже можно поизучать пдф есть в закромах. Цитата(Mad_max @ Mar 6 2018, 10:12) Еще UVM хорошо тем, что есть удобный механизм добавления monitors с различными covergroups, coverpoints, etc. Что дает численную метрику прогресса и качества верификации модуля. А вот про covergroups, coverpoints в UVM Primer отсыл к другой книжке того же автора "I provide an introduction to covergroups in the books FPGA Simulation". Вот эту FPGA Simulation удалось найти только в виде фоток разворотов. Отправил в закрома.
  11. А при отключенной оптимизации (ключик -novopt) тоже ругается?
  12. Цитата(LiNED @ Feb 10 2012, 17:12) ... по одной и той же схеме САПР сразу делает нетлист и sdf, и они не вяжутся друг с другом никак. Нетлист с sdf вяжется. Они на основе одного источника - библиотеки для синтеза. Не вяжется sdf и verilog-ом библиотечных элементов. Цитата(Shivers @ Feb 10 2012, 16:05) >Failed to find matching specify timing constraint. внутри вашего модуля ао22 действительно пропущена конструкция specify - endspecify с описанием всех констрейнов (сетапов, холдов и задержек путей). Возможно, это корень обеих проблем, ведь фактически вы используете неотхарактеризованный библиотечный элемент. Данные из sdf должны замещать соответствующие им данные конструкции specify - endspecify. А если этой конструкции нет или она описана "слегка не так" как в библиотеке для синтеза, то и получите Failed to find matching specify timing constraint.