RTL код помилки?

M

MediaTek

Guest
Це Verilog, які можуть виконувати функції ЦКТ (див. докласти файл хвилі)

Дріт QQ_set; призначити QQ_set = WR1 і і (ADDR == 8 НАА);
завжди @ (posedge QQ_CLK або ZRST negedge або posedge QQ_set)
якщо (! ZRST) QQ <= 8 H0;
/ / Скидання сигналу
інше, якщо (QQ_set) QQ <= DATA;
/ / Asynchronous навантаження
ще QQ <= QQ 1;

Я використовую DC до синтезу
після моделювання
здається, це неправильний сигнал, що я хочу!
Будь-яке Verilog майстер може навчити мене якийсь Verilog RTL коду можна реалізувати
ЦКТ, що я хочу!
ТКС заздалегідь!
Вибачте, але Ви повинні увійти, щоб переглянути це вкладення

 
Існує немає поняття асинхронних навантаження в реєстрі (за винятком заданих контактний).Так що, хоча синтез DC вважає QQ_set як синхронні дозволити.але коли QQ_set стає один, немає годин працює так ур результати моделювання Netlist помиляєтеся.

Я не understnad чому QQ_clock відбувається, не періодично.Якщо ви строб годинник з сигналом, її краще робити автоматичні годинник строб потужністю компілятора.

Якщо ворота ваші годинники просто с і воріт, косих та комбінаційних збої можуть виникнути проблеми для вас пізніше у розробці потоку.

 
Велике спасибі whizkid
але я не знаю, дуже чітко відповісти на ваші про:

Q1,
Існує немає поняття асинхронних навантаження до реєстру
==> Чому в ПРОДАНА версії 2001,08 серпня 2001
HDL компілятор (Presto Verilog) довідник
З 4-27, я вважаю, D Filp-Flop з прикладами навантаження асинхронного?

Q2.Так "QQ_clock є воротами годинник, не могли б ви розповісти мені більш докладно про те, як робити
"Автоматичного годин строб потужністю компілятора.
", Є будь-яких матеріалів посилання на електронну книгу або посилання?

Q3 Якщо немає годин між MCU I / F з облікової дизайн блок (тільки для CS (чіп SEL), R / W, ALE), чи є кращий спосіб (довідкові матеріали / книга ..) здійснювати aync ЦКТ виконувати ЗАРЕЄСТРУВАТИСЯ R / W і MEM R / W функція, тому що я зустрічаю багатьох збоїв проблеми після синтезу, і це буде, нехай моя зареєструватися / мкм даних ж / д помилку?

Дякуємо за вашу допомогу знову!

 
Привіт там,

Я не майстер Verilog, проте, я намагаюся зрозуміти вашу проблему.

Для загального дизайну Verilog, всі FF буде автоматично зіставлений з FF в синхронних навантаження, при синтезі інструменти я думаю.Для реалізації асинхронного завантажених ДФФ, ви повинні сказати синтезу інструмент для відображення ваших конкретних шматок коду до неї, і ви повинні бути завантажений асинхронно ДФФ в Tech-бібліотеки.

Я не знаю, як це зробити точно (cauze я ніколи не потрібно), ви можете знайти в керівництві синтезатор або задати їх безпосередньо для підтримки.

Бажаємо успіху!

Rprince006

 
Ось що ви шукаєте ....
Цей код буде синтезувати ...
Але я не знаю, чи буде вона працювати на кремнії чи ні!
Використовуйте її на ур страх і ризик!

Код:Модуль клямку (reset_n, гвалт, Даут, е ");

вхід reset_n, єп;

вхід [7:00] шум;

потужність [7:00] Даут;

р [7:00] Даут;

завжди @ (DIN або EN або reset_n)

якщо (! reset_n)

Даут = 1'b0;

інше, якщо (EN)

Даут = DIN;

endmodule / / засувкиМодуль лічильника (ZRST, WR1, ADDR, DATA, QQ_CLK, QQ);

вхід [7:00] ADDR, DATA;

вхід ZRST, WR1, QQ_CLK;

потужність [7:00] QQ;

дроту [7:00] QQ_latch;

Дріт ан = (ADDR == 8'haa)?
WR1: QQ_CLK;

дроту [7:00] дин = (ADDR == 8'haa)?
ДАНІ: QQ_latch 1;

засувки latch0 (ZRST, гвалт, QQ, е ");

засувки latch1 (ZRST, QQ, QQ_latch, ~ EN);

endmodule / / лічильникМодуль counter_test ();

р [7:00] ADDR; / / Щоб лічильник counter.v

р [7:00] DATA / / Щоб лічильник counter.v

р QQ_CLK; / / Щоб лічильник counter.v

р WR1; / / Щоб лічильник counter.v

р ZRST; / / Щоб лічильник counter.v

дроту [7:00] QQ; / / Від лічильник counter.v

/ / Кінець автоматики

Лічильник Лічильник (/ * * AUTOINST /

/ / Виведе

. QQ (QQ [7:00]),

/ / Входи

. ADDR (ADDR [7:00]),

. DATA (DATA [7:00]),

. ZRST (ZRST),

. WR1 (WR1),

. QQ_CLK (QQ_CLK));початковий почати

Shm_open $ (". / Сигнал");

$ Shm_probe (counter_test, "AS");

ADDR = 8'haa;

DATA = 8'h55;

QQ_CLK = 1'b0;

WR1 = 1'b0;

ZRST = 1'b0;

# 10;

ZRST = 1'b1;

# 100;

WR1 = 1'b1;

№ 2;

WR1 = 1'b0;

# 10;

ADDR = 8'hbb;

# 40;

QQ_CLK = 1'b1;

№ 2;

QQ_CLK = 1'b0;

# 40;

WR1 = 1'b1;

№ 2;

WR1 = 1'b0;

# 40;

QQ_CLK = 1'b1;

№ 2;

QQ_CLK = 1'b0;

# 40;

DATA = 8'hCC;

# 40;

QQ_CLK = 1'b1;

№ 2;

QQ_CLK = 1'b0;

# 40;

QQ_CLK = 1'b1;

№ 2;

QQ_CLK = 1'b0;

# 200;

$ Оздоблення;

кінецьendmodule / / counter_test
 
Цитата:

Q1,

Існує немає поняття асинхронних навантаження до реєстру

==> Чому в ПРОДАНА версії 2001,08 серпня 2001

HDL компілятор (Presto Verilog) довідник

З 4-27, я вважаю, D Filp-Flop з прикладами навантаження асинхронного?
 
Привіт whizkid:
Вкласти файл є HDL довідкове керівництво (v2003.03)
Ви можете знайти Asyn навантаження в p6-34 ~ 6-35
Вибачте, але Ви повинні увійти, щоб переглянути це вкладення

 
Може бути, ви краще перевірити `терміни директиви, щоб переконатися, що вибраний правильний точність часу, щоб уникнути різних негативних і позитивних ширина годин сигналу.Перед тим, як синтезувати коди, перевірити технічної бібліотеки перше, щоб підтвердити, що ця бібліотека містить асинхронного скидання і набір регістрів (якщо надійний, він завжди має).Якщо бібліотека має, то кодування Ви описали дійсно може працювати, а іноді такі атрибути Verilog можуть допомогти правильно синтезувати:
Verilog атрибути для набору і скидання є:

/ / Synopsys async_set_reset
/ / Synopsys sync_set_reset
/ / Synopsys async_set_reset_local
/ / Synopsys sync_set_reset_local
/ / Synopsys async_set_reset_local_all
/ / Synopsys sync_set_reset_local_allПриклад Verilog код одержуємо набір синхронних тригерів і синхронний скидання тригера:
-------------------------------------------------- --------------------------------------

Модуль sync_set_reset (CLK, скидання, набір, d1, d2, у, т);
вхід CLK, скидання, набір, d1, d2;
вихід у, т;
/ / Synopsys sync_set_reset "перезавантаження, встановіть"
р у, т;
завжди @ (posedge CLK)
почати: synchronous_reset
якщо (скидання)
у = 1'b0 / / синхронний скидання
ще
у = d1;
кінець
завжди @ (posedge CLK)
почати: synchronous_set
якщо (комплект)
T = 1'b1 / / синхронний набір
ще
Т = Д-2;
кінець
endmoduleПеревірка того, що атрибути правильного застосування
-------------------------------------------------- -

Перед тим як прочитати код HDL, встановити змінну Компілятор дизайн

hdlin_report_inferred_modules = багатослівний

щоб отримати повний звіт виведення послідовних комірок.Після того як ви
читати в HDL, перевірити висновки доповіді, щоб побачити, що атрибути
були правильно застосовувати.

 

Welcome to EDABoard.com

Sponsor

Back
Top