3.14 0 12 сентября, 2005 Опубликовано 12 сентября, 2005 · Жалоба А вот с этого места подробнее, пожалуйста. Мне пришлось применить переход к другому клоковому домену с близкой частотой (100 -> 85 МГц). Как сделать, чтобы Моделсим не выдавал неопределенность, после которой все дальнейшее поведение становится тоже неопределенным? Другими словами, какие они, Ваши специальные меры? По умолчанию симуляторы, в случае нарушения setup/hold для регистра устанавливают его в X значение. После этого весь автомат рушится. Иногда это становится (твкой способ обработки ошибок) занозой в з... В случае, если симулируете в VHDL, ModelSim может глобально отключить подстановку Х, взамен оставляет старое значение регистра. В случае с Verilog возможно только указать через файл ограничений какие регистры не учитывать при нарушения зазоров (предполагается, что они первые в цепи антиметастабильности). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gorby 6 12 сентября, 2005 Опубликовано 12 сентября, 2005 · Жалоба А вот с этого места подробнее, пожалуйста. Мне пришлось применить переход к другому клоковому домену с близкой частотой (100 -> 85 МГц). Как сделать, чтобы Моделсим не выдавал неопределенность, после которой все дальнейшее поведение становится тоже неопределенным? Другими словами, какие они, Ваши специальные меры? По умолчанию симуляторы, в случае нарушения setup/hold для регистра устанавливают его в X значение. После этого весь автомат рушится. Иногда это становится (твкой способ обработки ошибок) занозой в з... В случае, если симулируете в VHDL, ModelSim может глобально отключить подстановку Х, взамен оставляет старое значение регистра. В случае с Verilog возможно только указать через файл ограничений какие регистры не учитывать при нарушения зазоров (предполагается, что они первые в цепи антиметастабильности). <{POST_SNAPBACK}> DefaultForceKind = freeze Это оно? Или где? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3.14 0 12 сентября, 2005 Опубликовано 12 сентября, 2005 · Жалоба DefaultForceKind = freeze Это оно? Или где? <{POST_SNAPBACK}> Когда моделька рождается в VHDL, галка глобального отключения "Global disable X-generation for simulation". Ну а констрейн называется ASYNC_REG, например INST "I_MK_module/WEa[*]" ASYNC_REG = TRUE; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gorby 6 12 сентября, 2005 Опубликовано 12 сентября, 2005 · Жалоба DefaultForceKind = freeze Это оно? Или где? <{POST_SNAPBACK}> Когда моделька рождается в VHDL, галка глобального отключения "Global disable X-generation for simulation". Ну а констрейн называется ASYNC_REG, например INST "I_MK_module/WEa[*]" ASYNC_REG = TRUE; <{POST_SNAPBACK}> Спасибо. Нашел. В детстве шарады у меня хорошо разгадывать получалось... Это ж ведь и не в Моделсиме вовсе. :a14: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 22 сентября, 2005 Опубликовано 22 сентября, 2005 · Жалоба DefaultForceKind = freeze Это оно? Или где? <{POST_SNAPBACK}> Когда моделька рождается в VHDL, галка глобального отключения "Global disable X-generation for simulation". Ну а констрейн называется ASYNC_REG, например INST "I_MK_module/WEa[*]" ASYNC_REG = TRUE; <{POST_SNAPBACK}> Спасибо. Нашел. В детстве шарады у меня хорошо разгадывать получалось... Это ж ведь и не в Моделсиме вовсе. :a14: <{POST_SNAPBACK}> Возможно, что это то самое... --8<--- To prevent "x" from propagating in your simulation, use the "+no_notifier" option to vsim command when using ModelSim Simulator (MTI) --8<--- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3.14 0 22 сентября, 2005 Опубликовано 22 сентября, 2005 · Жалоба Возможно, что это то самое... --8<--- To prevent "x" from propagating in your simulation, use the "+no_notifier" option to vsim command when using ModelSim Simulator (MTI) --8<--- <{POST_SNAPBACK}> Оно самое. Но сами понимаете, что этим лучше пользоваться только в исключительных случаях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
popeye 0 26 сентября, 2005 Опубликовано 26 сентября, 2005 · Жалоба По умолчанию симуляторы, в случае нарушения setup/hold для регистра устанавливают его в X значение. После этого весь автомат рушится. Иногда это становится (твкой способ обработки ошибок) занозой в з... :) В случае, если симулируете в VHDL, ModelSim может глобально отключить подстановку Х, взамен оставляет старое значение регистра. В случае с Verilog возможно только указать через файл ограничений какие регистры не учитывать при нарушения зазоров (предполагается, что они первые в цепи антиметастабильности). Получается, что работу собственно схемы борьбы с метастабильностью проверить в симуляторе нельзя. Либо мы запрещаем метастабильность для входных регистров этих схем путем игнорирования нарушения setup/hold, либо неопределенное состояние так и пройдет дальше, нарушая работу модели, чего в железе как раз и не произойдет. И еще возникает вопрос: а разве в модели регистра невозможно учесть время метастабильности и передавать его через SDF? Я понимаю, что это время не посчитать точно, но можно было бы задать какую-то оценку, и симулятор работал бы более наглядно: вот состояние неопределено, а вот устаканилось... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3.14 0 26 сентября, 2005 Опубликовано 26 сентября, 2005 · Жалоба Получается, что работу собственно схемы борьбы с метастабильностью проверить в симуляторе нельзя. Либо мы запрещаем метастабильность для входных регистров этих схем путем игнорирования нарушения setup/hold, либо неопределенное состояние так и пройдет дальше, нарушая работу модели, чего в железе как раз и не произойдет.Дык вот в том то и дело, что в железе это будет работать (например 999 раз из 1000), а симулятор это сразу заметит и укажет. И потом, мы ведь выключаем детектор метастабильности только для первого регистра, так что все "чинно, благородно". И еще возникает вопрос: а разве в модели регистра невозможно учесть время метастабильности и передавать его через SDF? Я понимаю, что это время не посчитать точно, но можно было бы задать какую-то оценку, и симулятор работал бы более наглядно: вот состояние неопределено, а вот устаканилось... <{POST_SNAPBACK}> Может я чего не понял, но в симуляторах все так и работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
popeye 0 26 сентября, 2005 Опубликовано 26 сентября, 2005 · Жалоба 3.14: Наверно, это я чего-то недопонял. :) Поясните, пожалуйста, это: Дык вот в том то и дело, что в железе это будет работать (например 999 раз из 1000), а симулятор это сразу заметит и укажет. Что нам сразу заметит и укажет симулятор, что нарушено время setup/hold? И выставит "x" или просто напишет "Error..."? Так ведь мы и планируем нарушить времянку и посмотреть что будет, если хотим бороться с метастабильностью. Так что в железе должно работать 1000 раз из 1000, а иначе грош цена схеме антиметастабильности. Здорово было бы, если бы ножки ПЛИС делались красного цвета (как в ModelSim'е "x" по умолчанию), а тестер/осциллограф писали бы "x", как бы тогда отладка упростилась. :) Может я чего не понял, но в симуляторах все так и работает. Насколько я понимаю, если триггер встал в неопределенное состояние, то он в нем так и останется по крайней мере до следующего фронта клока. У меня ModelSim так работает с альтеровскими "атомами", может у Xilinx'а иначе, но что-то не верится. А ведь в железе триггер в состоянии метастабильности пробудет какое-то конечное время, порядка 1 нс, насколько я представляю, а потом станет стабильным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3.14 0 27 сентября, 2005 Опубликовано 27 сентября, 2005 · Жалоба 2 popeye Когда я говорил "Дык вот в том то и дело, что в железе это будет работать (например 999 раз из 1000), а симулятор это сразу заметит и укажет." я подразумевал работу схемы без антиметастабилизатора. Говорим то об одном и том же :), просто меня смутило, почему нельзя считать, что можно симулировать работу антиметастабилизатора при отключенном детекторе метастабильности на первом регистре. Это и работать будет и симулировать можно без угрызения совести если тактовый сидит на глобальной линии. Далее по тексту, сори, это я упустил Вашу фразу "учесть время метастабильности и передавать", мне то же не понятно, что производителю мешает это сделать, наверное большаея нестабильность времени метастабильности от кучи факторов (время нарушения, температура, питание и т.п.). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
popeye 0 28 сентября, 2005 Опубликовано 28 сентября, 2005 · Жалоба Возвращаясь к теме. Недавно прочитал довольно интересную доку по поводу несовпадения функциональной модели и логики после синтеза. Вещи там на мой взгляд написаны довольно очевидные, но все равно полезные. RTL Coding Styles That Yield Simulation and Synthesis Mismatches Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться