Jump to content

    

honinbo

Свой
  • Content Count

    260
  • Joined

  • Last visited

Community Reputation

0 Обычный

About honinbo

  • Rank
    Местный

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

2370 profile views
  1. MBIST только запускается через JTAG (если вы выбрали этот способ) и выдает результат теста. Алгоритмы (те, что вы выбрали из стандартных или описали свой) теста прошиты внутри MBIST.
  2. С Tessent когда-то у меня не опыт, а скорее проба была. Заняла неделю (неспешно) с 0 до моделирования нетлиста со вставленным MBIST. И еще время ушло на перегон части исходников (тех, где память вставляется и что задействуются для доступа к ней по иерархии до топа) с VHDL в verilog. Tessent вставляет свой код на verilog. Дальше обычный синтез с DFT или без. Управление MBIST можно через JTAG организовать, если есть.
  3. ATPG вместо MBIST - это как? Память у Вас в каком виде? На регистрах в исходниках и синтезируется вместе с остальным кодом? Или таки аналоговый IP? А разбраковывали как? 100% покрытие функциональными тестами или уже в приборе?
  4. Если пользуете скрипты напрямую, то читать лучше документацию на 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, то ничего не наложится, задержки останутся теми, что указаны в библиотеке элементов. Так, что читать лог и смотреть что и куда подключилось/наложилось обязательно.
  5. Для полноты картины, это не верно. По умолчанию, значение для setup будет. Для hold все равно явно задавать надо. Иначе, да : Будет. Но позже, когда до расчета hold дело дойдет. В нашем эксперименте до него и не дошло еще.
  6. Видно, синтезатор оптимизирует логику только когда не вписывается в констрейны. Во 2 и 3 случаях логика сравнения вписывается в требования и в пути от flag к data то, что хотел видеть топикстартер. В его проекте видимо "собака порылась" где-то еще ))
  7. Раз уж ввязался - вот полный отчет об эксперименте. 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
  8. виноват, у меня без ключа -setup было. По умолчанию это 4 для setup и 3 для hold.
  9. Как я понимаю синтезатор просто замешивает 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*}
  10. А они (параметры) не пропадают, а принимают уже вполне конкретные значения при синтезе. Нетлист - это ж принципиальная схема устройства (если по старому), а не настраиваемой модели, какие уж тут параметры?
  11. скорее есть способ "правильной" настроки софта. Смотрите EDA Tool Settings/Simulation/More EDA Netlist Writer Settings А так в Quartus 17 и sv можно нетлист писать.
  12. Если бы только, а то ведь еще и требования к стабильности формы клока. По одному фронту - важен наклон активного фронта и период. Наклон второго фронта не важен, форма строго 50/50 тоже не важна. А по двум? :crying:
  13. пдф есть в закромах. А вот про covergroups, coverpoints в UVM Primer отсыл к другой книжке того же автора "I provide an introduction to covergroups in the books FPGA Simulation". Вот эту FPGA Simulation удалось найти только в виде фоток разворотов. Отправил в закрома.