MaratZuev 0 30 января, 2020 Опубликовано 30 января, 2020 · Жалоба Доброго всем. Прошу простить за кому-то очевидный вопрос, но мне хотел бы прояснить... Я переписал доставшийся мне по наследству кусок кода always_ff @(posedge clk_orig or posedge RST_orig) if (RST_orig) count_echo_orig <= 2'h0; else if (end_frame_orig) if (TSR_orig) count_echo_orig <= 2'h0; else if (count_echo_orig <= 2'd2) count_echo_orig <= count_echo_orig + 2'd1; В таком виде: always @(posedge clk_cmp or posedge RST_cmp) count_echo_cmp <= RST_cmp ? 2'h0 : end_frame_cmp && TSR_cmp ? 2'h0 : count_echo_cmp <= 2'd2 ? count_echo_cmp + 2'd1 : count_echo_cmp; Но гложут сомнения, что не всё чисто. Попробовал спросить Quartus RTL-Viewer отобразить всё сразу: module cmp ( input logic clk_orig, clk_cmp, input logic RST_orig, RST_cmp, input logic end_frame_orig, end_frame_cmp, input logic TSR_orig, TSR_cmp, output logic [1:0] count_echo_orig, count_echo_cmp ); always_ff @(posedge clk_orig or posedge RST_orig) if (RST_orig) count_echo_orig <= 2'h0; else if (end_frame_orig) if (TSR_orig) count_echo_orig <= 2'h0; else if (count_echo_orig <= 2'd2) count_echo_orig <= count_echo_orig + 2'd1; always @(posedge clk_cmp or posedge RST_cmp) count_echo_cmp <= RST_cmp ? 2'h0 : end_frame_cmp && TSR_cmp ? 2'h0 : count_echo_cmp <= 2'd2 ? count_echo_cmp + 2'd1 : count_echo_cmp; endmodule : cmp Но то, что я увидел сразу понять не могу: то это или не то. Посему прошу помощи зала .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 30 января, 2020 Опубликовано 30 января, 2020 · Жалоба 1. проверка по RTL-Viewer это как гадание на кофейной гуще, особенно с учетом того факта, что у квартуса он, мягко говоря, оторван от железа и это именно Register Transfer Level Viewer. 2. Автору первого кода мозг вправить на предмет более читаемого Coding Styles 3. Автору второго кода, руки оторвать, простите за прямоту. Код абсолютно не читаем, сложно сопровождаем и более того, на некоторых синтезаторах, работающих по шаблонам синтеза, может работать не корректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 30 января, 2020 Опубликовано 30 января, 2020 · Жалоба В текстовом редакторе строки экономите? =) Их там в запасе много. Вечером на половине такой конструкции уже внимание теряется. Так вроде сходу одинаково Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 30 января, 2020 Опубликовано 30 января, 2020 · Жалоба Код не эквивалентный. 2й должен быть таким: always @(posedge clk_cmp or posedge RST_cmp) count_echo_cmp <= RST_cmp ? 2'h0 : end_frame_cmp && TSR_cmp ? 2'h0 : end_frame_orig && count_echo_cmp <= 2'd2 ? count_echo_cmp + 2'd1 : count_echo_cmp; Но писать так не стоит :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 30 января, 2020 Опубликовано 30 января, 2020 · Жалоба Как по мне, так первый вариант кода лучше.Сделать нормальное форматирование. Добавить чутка комментариев - и будет норм. Второй вариант - абсолютно нечитаем. Чем проще написано - тем лучше читать и сопровождать. Есть даже принцип кодинга - KISS https://ru.wikipedia.org/wiki/KISS_(принцип) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 30 января, 2020 Опубликовано 30 января, 2020 · Жалоба count_echo_orig <= RST_cmp ? 2'h0 : end_frame_orig ? TSR_orig ? 2'h0 : count_echo_orig <= 2'd2 ? count_echo_orig + 2'd1 : count_echo_orig : count_echo_orig ; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба Всем спасибо, пошёл душиться ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба "Причесал" исходный код насколько возможно согласно воззрениям большинства: always_ff @(posedge clk_cmp or posedge RST_cmp) if (RST_cmp) count_echo_cmp <= 2'h0; else if (end_frame_cmp) if (TSR_cmp) count_echo_cmp <= 2'h0; else if (count_echo_cmp <= 2'd2) count_echo_cmp <= count_echo_cmp + 2'd1; else count_echo_cmp <= count_echo_cmp; И RTL-Viewer показал то, что требовалось: Но вот вопрос: если у меня не код, а два чёрных ящика: как мне понять, эквивалентны ли они или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба Приветствую! 17 minutes ago, MaratZuev said: Но вот вопрос: если у меня не код, а два чёрных ящика: как мне понять, эквивалентны ли они или нет? В такой постановке задача в общем случае не разрешима. Вы можете лишь с какой-то долей вероятности утверждать что поведение чёрных ящиков похоже при одинаковых начальных условиях и воздействиях. Но эквивалентны ли они сказать не сможете. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Avex 1 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба Два черных ящика можно сравнить только по интерфейсам. А два куска кода сравнить ... вообще это называется LEC - logical equivalence check, и для этой процедуры есть специальные тулы (conformal, formality и т.д.). На мой взгляд, в первом посте допущена только одна ошибка - в оригинале сброс асинхронный, а во втором куске кода уже синхронный. В остальном разве только читабельность страдает, как писали выше. А, и наверно tsr-orig это tsr-cmp, опечатка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 1 февраля, 2020 Опубликовано 1 февраля, 2020 · Жалоба Проблема сопоставления кода всегда включает в себя человеческий фактор, поэтому только formality и ему подобное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 1 февраля, 2020 Опубликовано 1 февраля, 2020 · Жалоба 12 часов назад, MaratZuev сказал: "Причесал" исходный код насколько возможно согласно воззрениям большинства К какому if относится последний else? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 1 февраля, 2020 Опубликовано 1 февраля, 2020 · Жалоба 14 hours ago, MaratZuev said: "Причесал" исходный код насколько возможно согласно воззрениям большинства: уже лучше, но лет через 5, вам придет понимание, что рекомендация, а в некоторых, корпоративных случаях, обязательное требование использования операторных скобок, имеет под собой веские основания) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 2 февраля, 2020 Опубликовано 2 февраля, 2020 · Жалоба On 2/1/2020 at 8:06 AM, andrew_b said: К какому if относится последний else? Правильный вопрос. Посыпаю голову. Недописал. On 2/1/2020 at 9:41 AM, des00 said: уже лучше, но лет через 5, вам придет понимание, что рекомендация, а в некоторых, корпоративных случаях, обязательное требование использования операторных скобок, имеет под собой веские основания) Да мне уже сейчас пришло, судя по выше"скорректированному"мною коду и комментарию вашему и вопросу andrew_b ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба https://en.wikipedia.org/wiki/Formal_equivalence_checking Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться