Giáo trình Verilog HDL | Trường Đại học sư phạm kỹ thuật TP Hồ Chí Minh

Chương1. Dẫn nhập thiết kế hệ thống với Verilog. Khi kích thước và độ phức tập của hệ thống thiết kế ngày càng tăng . Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

Giáo trình
Verilog HDL
Verilog Hardware Description Language
Lâm Đ Page 1 c Kh i University of Information Technology
N I DUNG
Chương1. Dn nh p thi t k h th ng s v i Verilog
Khi kích th c và ph c t p c a h th ng thi t k ngày càng t ng, ư ñ ă
nhiu công c h tr thi t k trên máy tính (CAD) c s d ñư ng vào quá
trình thi t k ph n c ñ ng. Th i u, nh ng công c ph ng t o ra
phn c ã a ra ph ng pháp thi t k , ki m tra, phân tích, t ng h p và ng ñ ñư ươ
t ñng t o ra ph n c ng m t cách ph c t p. S phát tri n không ng ng
ca nh ng công c thi t k m t cách t ng là do s phát tri n c a nh ng ñ
ngôn ng mô t ph n c ng (HDLs) và nh ng phương pháp thi t k d a trên
nhng ngôn ng này. D a trên nh ng ngôn ng mô t ph n c ng (HDLs),
nhng công c CAD trong thi t k h th ng s c phát tri n s d ng ñư
rng rãi b i nh ng k s thi t k ph n c ng. Hi n t i, ng i ta v n ang ĩ ư ư ñ
tip t c nghiên c u tìm ra nh ng ngôn ng t ph n c ng t t h n và ñ ơ
tru t ng h n. M t trong nh ng ngôn ng mô t ph n c c s d ng ư ơ ng ñư
rng rãi nh t ó ngôn ng Verilog HDL. Do c ch p nh n r ng rãi ñ ñư
trong ngành công nghi p thi t k s , Verilog ã tr thành m t ki n th c ñ
ñư ñ ñ ư ũ ưc òi hi ph i bi t i v i nh ng kĩ s c ng nh sinh viên làm vic
h!c t p trong l nh v c ph n c ng máy tính. ĩ
Trong ch ng này, ta s trình bày nh ng công c môi tr ng làm ươ " ư
vic s n t ng thích v i ngôn ng Verilog m t k s thi t k th # ươ ĩ ư
s d ng trong qui trình thi t k t ng c a mình giúp y nhanh ti n ñ ñ ñ$ ñ
thit k . Chúng ta s th o lu n t ng b c v thi t k phân c p, thi t k m c " ư
cao t vi c mô t thi t k b ng ngôn ng Verilog n vi c t o ra ph n c ng % ñ
ca thi t k ó. Nh ng qui trình và nh ng t khóa chuyên môn c ng s ñ ũ "
ñư ũ c minh h!a ph n này. K tip, chúng ta c ng s" tho lu n nh ng công
Verilog Hardware Description Language
Lâm Đ Page 2 c Kh i University of Information Technology
c CAD hi n t ng thích v i Verilog ch c n ươ ăng c a trong môi
trưng thit k t ng. Ph n cu i cùng c a ch ng này s nói v m t s ñ ươ "
ñ& ñư ĩ ưc tính ca Verilog khi n tr thành mt ngôn ng c nhi u k s
thit k ph n c ng l a ch n. !
1.1 Qui trình thi t k s
Trong thi t k m t h thng s s d ng môi tr ng thiư t k t ng, ñ
qui trình thi t k b t u b ng vi c t thi t k t i nhi u m c tr u ' ñ % ñ
tưng khác nhau k t thúc b ng vi c t o ra danh sách các linh ki n c ng % ũ
như các ñưng k t n i gi a các linh ki n v i nhau ( netlist) cho m t mch
tích h p v i ng d ng c th (ASIC), m ch in ( layout) cho m t m ch tích
hp theo yêu c u khách hàng ( custom IC), ho c m t ch ng trình cho m t & ươ
thit b logic kh n ng l p trình c (PLD). Hình 1.1 t t ng b c ( ă ñư ư
trong qui trình thi t k này.
Bưc u c a thi t k , m t thi t k s c t b i s h n h p ñ " ñư
gia t m c hành vi (behavioural) Verilog, s d ng nh ng gói ñ
(module) thi t k Verilog ã c thi t k s n, vi c gán h th ng các ñ ñư #
bus và wire liên k t các gói thi t k này thành m t h th ng hoàn ch nh. ñ )
Kĩ s thi t k c ng ph i trách nhi m t o ra d li u ki m tra ư ũ ñ
(testbench) xem thi t k úng ch c n ng hay ch a c ng nh dùng ki m ñ ă ư ũ ư ñ
tra thi t k sau khi t ng h p. Vi c ki m tra thi t k th th c hi n c ñư
b%ng vic phng, chèn nh ng k thu t ki m tra, ki m tra thông th ng ĩ ư
ho&c k t h p c ba ph ng pháp trên. Sau b c ki m tra ánh giá thi t k ( ươ ư ñ
bưc này c gñư !i ki m tra ti n t ng h p (presynthesis verification)),
thit k s c ti p t c b ng vi c t ng h p t o ra ph n c ng th c s " ñư % ñ
cho h th ng thi t k cu i cùng (ASIC, custom IC or FPLD,…). N u h
thng thi t k ASIC, thi t k s s c s n xu t b i nhà s n xu t khác; " " ñư
Verilog Hardware Description Language
Lâm Đ Page 3 c Kh i University of Information Technology
nu là custom IC, thi t k s c s n xu t tr c ti p; n u là FPLD, thi t k " ñư
s" ñưc n p lên thi t b l p trình c. Sau b c t ng h p tr c khi ( ñư ư ư
phn c ng th c s c t o ra, m t quá trình mô ph ng khác (h u t ng h p ñư
(postsynthesis)) ph i c th c hi n. Vi c mô ph ng này, ta có th s d ng ñư
testbench t ng t testbench ã s d ng trong ph ng ti n t ng h p ươ ñ
(presynthesis). B ng ph ng pháp này, hình thi t k m% ươ c hành vi ñ
và mô hình ph n c ng c a thi t k c ki m tra v i cùng d li u ngõ vào. ñư
S khác nhau gi a ph ng ti n t ng h p h u t ng h p ó m c ñ ñ
chi ti t có th ñt c t m i lo i mô ph ng. ñư
Verilog Hardware Description Language
Lâm Đ Page 4 c Kh i University of Information Technology
Nhng ph n ti p theo s mô t t m " ) ) v mi khi trong hình 1.1.
1.1.1 Dn nh p thi t k
Bưc u tiên trong thi t k h th ng s b c d n nh p thi t k . ñ ư
Trong b c này, thi t k c t b ng Verilog theo phong cách phân ư ñư %
cp t cao xu ng th p (top-down). M t thi t k hoàn ch nh có th) bao g m *
nhng linh ki n m c c ng ho c m c transistor, nh ng kh i (module) &
phn c ng ch c n ng ph c t p h n c t m c hành vi, ho c ă ơ ñư ñ &
nhng linh ki n c li t kê b i c u trúc bus. ñư
Do nh ng thi t k Verilog m c cao th ng c t m c ư ñư ñ
t i ó t h th ng nh ng thanh ghi s truy n d li u gi a ñ
nhng thanh ghi này thông qua h th ng bus, vi c mô t h th ng thi t k
mc này c xem nh là m c truy n d li u gi a các thanh ghi ñ ñư ư ñ
(RTL). M t thi t k hoàn ch nh c t nh v y s t o ra c ph n ) ñư ư " ñư
cng t ng ng th c s ràng. Nh ng c u trúc thi t k Verilog mươ ñc
RTL s d ng phát bi u qui trình (producedural statements), phép ng nh
gán liên t c (continuous assignments), và nh ng phát bi u g i s d i ! ng kh
(module) ã xây d ng s n. ñ #
Nhng phát bi u qui trình Verilog (procedural statements) c ñư
dùng mô t m c hành vi m c cao. M t h th ng ho c m t linh ki n ñ ñ &
ñư c t m c hành vi thì t ng t v i vi c t trong ngôn ng ñ ươ
phn m m. d , chúng ta th t m t linh ki n b ng vi c ki m tra %
ñ ñi ñ u kin ngõ vào c a nó, bt c hiu, ch cho n khi s ki n nào ó
xy ra, quan sát nh ng tín hi u b t tay và t o ra ngõ ra. Mô t h th ng m ' t
cách qui trình nh v y, c u trúc if-else, case c a Verilog c ng nh nh ng ư ũ ư
ngôn ng ph n m m khác u s d ng nh nhau. ñ ư
Verilog Hardware Description Language
Lâm Đ Page 5 c Kh i University of Information Technology
Nhng phép gán liên t c (continuous assignment) trong Verilog
nhng phép gán cho vi c th hi n ch c n ng nh ng kh i logic, nh ng phép ă
gán bus, t vi c k t n i gi a h th ng bus các chân ngõ vào
ngõ ra. K t h p v i nh ng hàm Boolean nh ng bi u th c u ki n, ñi
nhng c u trúc ngôn ng này th c t nh ng linh ki n h ñư ñ
thng theo nh ng phép gán thanh ghi và bus c a chúng.
Nhng phát bi u g i s d ng kh i Verilog ã c thi t k s n ! ñ ñư #
(instantiantion statements) c dùng cho nh ng linh ki n mñư c th p trong
mt thi t k m c cao h n. Thay vi t m c hành vi, ch c ñ ơ ñ
năng, ho c bus c a m& t h th ng, chúng ta có th mô t m t h th ng b ng %
Verilog b ng cách k t n i nh ng linh ki n m% ñ c th p hơn. Nh ng linh
kin này th nh nh m ư c c ng hay transistor, ho c th l n nh & ư
mt b vi x lí hoàn ch nh. )
1.1.2 Testbench trong Verilog
Mt h th ng c thi t k dùng Verilog ph i c ph ng ñư ñư
kim tra xem thi t k ã úng ch c n ng ch a tr c khi t o ra ph n c ng. ñ ñ ă ư ư
Trong quá trình ch y ph ng này, nh ng l i thi t k s không t ng ươ
thích gi a nh ng linh ki n dùng trong thi t k th c phát hi n. Ch y ñư
mô ph ng m t thi t k òi h i vi c t o ra m t d li u ngõ vào ki m tra ñ
quá trình quan sát k t qu sau khi ch y mô ph ng, d li u dùng ki m tra ñ
này c g i testbench. M t testbench s d ng c u trúc m c cao c a ñư !
Verilog t o ra d li u ki m tra, quan sát áp ng ngõ ra, c vi c b t ñ ñ '
tay gi a nh ng tín hi u trong thi t k . Bên trong testbench, h th ng thi t
k c n ch y mô ph ng s c g i ra (instantiate) trong testbench. D li u " ñư !
testbench cùng v i h th ng thi t k s t o ra m t mô hình mô ph ng mà s " "
ñư c s d ng b i m t công c mô ph ng Verilog.
Verilog Hardware Description Language
Lâm Đ Page 6 c Kh i University of Information Technology
1.1.3 Đánh giá thi t k
Mt nhiêm v quan tr ng trong b t thi t k s nào c ng c n ó ! ũ ñ
ñánh giá thi Đ ưt k. ánh gthit k quá trình ng i thit k s" kim
tra thi t k c a h sai sót nào th x y ra trong su t quá trình thi t k !
hay không. M t sai sót thi t k có th x y ra do s mô t thi t k m h , do ơ *
sai sót c a ng i thi t k , ho c s d úng nh ng kh i trong thi t ư & ng không ñ
k. ánh giá thi t k th th c hi n b ng ph ng, b ng vi c chèn Đ % %
nhng k thu t ki m tra, ho c ki m tra thông th ng. ĩ & ư
1.1.3.1 Mô ph ng
Chy ph ng dùng trong vi c ánh giá thi t k c th c hi n ñ ñư
trưc khi thi t k c t ng h p. B c ch y ph ng này c hi u nh ñư ư ñư ư
ph ng m c hành vi, m c RTL hay ti n t ng h p. m c ñ ñ , ñ
RTL, m * *t thi t k bao g m xung thi gian clock nh ng không bao gư m t
hoãn th i gian trên c ng dây k t n i (wire). Ch y ph ng m c ñ
này s chính xác theo xung clock. Th i gian c a vi c ch y ph ng "
mc RTL là theo tín hi u xung clock, không quan tâm n nh ng nguy ñ ñ
him ti m n th khi n thi t k b l i (hazards, glitch), hi n t ng ch y $ ( ư
ñua không kim soát gi a nh ng tín hi u (race conditions), nh ng vi phm
v th i gian setup và hold c a tín hi u ngõ vào, nh ng v n liên quan ñ
ñ ñ(n nh thi khác. Ưu ñim c a vi c ph ng này t c ch y ñ
phng nhanh so v i ch y mô ph m ng c c ng ho&c mc transistor.
Chy ph ng cho m t thi t k òi h i d li u ki m tra, thông ñ
thưng trong môi tr ng ph ng Verilog s cung c p nhi u ph ng ư " ươ
pháp khác nhau a d li u ki m tra này vào thi t k ki m tra. D ñ ñư ñ
liu ki m tra th c t o ra b h a s d ng nh ng công c so n ñư %ng ñ* !
tho d ng sóng, ho c b ng testbench. Hình 1.2 mô t hai cách khác nhau & % ñ
Verilog Hardware Description Language
Lâm Đ Page 7 c Kh i University of Information Technology
ñ( nh nghĩa d liu kim tra ngõ vào ca mt công c ph ng. Nh ng
ngõ ra c a công c ph ng là nh ng d ng sóng ngõ ra ( th quan sát
trc quan).
Đ chy phng vi Verilog testbench, trong testbench s" g!i h
thng thi t k ra ki m tra, lúc này h th ng thi t k c xem nh ñ ñư ư
mt ph n c a testbench, testbench s cung c p d li u ki m tra n ngõ vào " ñ
ca h th ng thi t k . Hình 1.3 t m t n code c a m ño t mch m, ñ
testbench c a nó, c ng nh k t qu ch y mô ph ng c a d i d ng sóng ũ ư ư
ngõ ra. Quan sát hình ta th y vi c ch y ph ng s ánh giá ch c n ng " ñ ă
ca mch m. V i m i xung clock thì ngõ ra b m sñ ñ " tăng lên 1. Chú ý
r%ng, theo bi u th i gian thì ngõ ra b m thay i t i c nh lên xung ñ* ñ ñ
clock và không th i gian trì hoãn do c ng c ng nh trì hoãn trên ng ũ ư ñư
truyn. K t qu ch y ph ng ch ra r ng ch c n ng c a m ch m ) % ă ñ
chính xác mà không c n quan tâm n t n s xung clock. ñ
Hin nhiên, nh ng linh ki n ph n c ng th c s s áp ng khác " ñ
nhau. D a trên nh th i th i gian trì hoãn c a nh ng kh i c s ñ( ñư
Verilog Hardware Description Language
Lâm Đ Page 8 c Kh i University of Information Technology
dng, th i gian t c nh lên xung clock n ngõ ra c ñ a b ñm s trì " ñ
hoãn khác không. H n n a, n u t n s xung clock c c p vào m ch th c ơ ñư
s quá nhanh so v i t c truy n tín hi u bên trong các c ng và transistor ñ
ca thi t k thì ngõ ra c a thi t k s không th bi t c. " ñư
Vic ph ng này không cung c p chi ti t v các v n nh th i ñ ñ(
ca h th ng thi t k c mô ph ng. Do ó, nh ng v n ti m n v nh ñư ñ ñ $ ñ(
thi c a ph n c ng do trì hoãn trên c ng s không th phát hi n c. ây " ñư Đ
là v n n hình c a quá tr nh mô ph ng ti n t ng h p ho c mô ph ng ñ ñi ) &
mc h nh vi. u bi t c trong hình 1.3 ó b m c a ta m s ñ Đi ñư ñ ñ ñ
nhi phân. Thi t k ho t ng nhanh ch m th nào, ho t ông c t n s ñ ñ ñư
nào ch có th bi) t c b ng vi c ki m tra thi t k sau tñư % ng hp.
Verilog Hardware Description Language
Lâm Đ Page 9 c Kh i University of Information Technology
1.1.3.2 Kĩ thu t chèn ki m tra (assertion)
Thay ph i theo k t qu ph ng b ng m t hay t o nh ng d % '
liu ki m tra testbench ph c t p, k thu t chèn thi t b giám sát có th c ĩ ( ñư
s d ng ki m tra tu n t nh ng c tính c a thi t k trong su t quá trình ñ ñ&
mô ph ng. Thi t b giám sát c t bên trong h th ng thi t k c mô ( ñư ñ& ñư
phng b i ng i thi t k . Ng i thi t k s quy t nh xem ch c n ng c a ư ư " ñ( ă
thit k úng hay sai, nh ng u ki n nào thi t k c n ph i th a mãn. ñ ñi
Nhng u ki n này ph i tuân theo nh c tính thi t k , và thi t b ñi ng ñ& (
giám sát c chèn vào h th ng thi t k m b o nh c tính này ñư ñ ñ ng ñ&
không b vi ph m. Chu i thi t b giám sát này s sai n u m t c tính nào ( ( " ñ&
ñó ñư ñ& ư c t vào bi ng i thi t k b( vi phm. Nó s c nh báo ng i thi t " ư
k r ng thi t k ã không úng ch c n ng nh mong i. Th vi n OVL ( % ñ ñ ă ư ñ ư
Open Verification Library) cung c p m t chu i nh ng thi t b giám sát ( ñ
chèn vào h th ng thi t k giám sát nh c tính thông th ng c a ñ ng ñ& ư
thit k . Ng i thi t k có th dùng nh ng k thu t giám sát c a riêng mình ư ĩ
ñ chèn vào thit k dùng chúng kt hp v i testbench trong vic kim
tra ánh giá thi t k . ñ
1.1.3.3 Kim tra thông th ng ư
Kim tra thông th ng quá trình ki m tra nh ng c tính b t ư ñ&
ca thi t k . Khi m t thi t k hoàn thành, ng i thi t kư s" xây d ng m t
chui nh c tính t ng ng v i hành vi c a thi t k . Công c ki m tra ng ñ& ươ
thông th ng s ki m tra thi t k m b o r ng nh ng c tính c mô ư " ñ ñ % ñ& ñư
t ñáp ng c t t c nh ng u ki n. N u m t c tính c phát ñư ñi ñ& ñư
hin không áp ng úng, c tính ó c xem nh vi ph m. c tính ñ ñ ñ& ñ ñư ư Đ&
ñ ñ& bao ph (coverage) ch) ra bao nhiêu ph n trăm c tính c a thit k ñã
ñưc kim tra.
Verilog Hardware Description Language
Lâm Đ Page 10 c Kh i University of Information Technology
1.1.4 Biên d ch và t ng h p thi t k
Tng h p là quá trình t o ra ph n c ng t ng t m t mô t thi t k ñ
phn c ng t ng ràng. M t t ph n c ng Verilog dùng t ng ương ñ
hp không th bao g m tín hi u t nh th i m c c ng, nh ng * ñ(
cu trúc ngôn ng khác mà không d ch sang nh ng ph ng trình logic tu n ( ươ
t ho c t h p. H n th n a, nh ng t phân c ng Verilog dùng cho & ơ
tng h p ph i tuân theo nh ng phong cách vi t code m t cách nh t nh ñ(
cho m ch t h p c ng nh m ch tu n t . Nh ng phong cách này c u ũ ư
trúc Verilog t ng ng c a chúng c nh ngh a trong vi c t ng h p ươ ñư ñ( ĩ
RTL.
Trong qui trình thi t k , sau khi m t thi t k c t hoàn thành ñư
và k t qu mô ph ng ti n t ng h p c a nó c ki m tra b i ng i thi t k , ñư ư
phi c biên d ch ti n g n h n n vi c t o thành ph n c ng ñư ( ñ ơ ñ
thc s trên silicon. B c thi t k này òi h i vi c t ph n c ng c a ư ñ
thit k ph i c nh n ra. d , chúng ta ph i ch n m ñư ) ñ t ASIC c th,
ho&c m t FPGA c th nh là thi t b ph n c ng m c ích c a thi t k . Khi ư ( ñ
thit b m c ích c ch ra, nh ng t p tin t v công ngh ( ñ ñư )
(technology files) c a ph n c ng ( ASIC, FPGA, ho c custom IC) s cung & "
cp chi ti t nh ng thông tin v ñ(nh th i t ch c n ng cho quá trình ă
biên d ch. Quá trình biên d ch s chuy n i nh ng ph n khác nhau c a ( ( " ñ
thit k ra m t nh d ng trung gian ( b c phân tích), k t n i t t c các ñ( ư
phn l i v i nhau, t o ra m ươ ư ' c logic t ng ng ( b c t ng hp), s p x p
kt n i ( place and route ) nh ng linh ki n trong thi t b ph n c ng m ( c
ñ ích l ñ ưi v i nhau th c hiên ch c năng nh thit k mong mu n và to ra
thông tin chi ti t v ñ( nh th i trong thi t k .
Verilog Hardware Description Language
Lâm Đ Page 11 c Kh i University of Information Technology
Hình 1.4 mô t quá trình biên d ch t hình nh k t qu ngõ ra (
ca m i b c biên d ch. Nh trên hình, ngõ vào c a b c này là m t mô t ư ( ư ư
phn c ng bao g m nh ng m c mô t khác nhau c a Verilog, và k t qu * ñ
ngõ ra c a m t ph n c ng chi ti t cho thi t b ph n c ng m c ích ( ñ
như FPLD hay s n xu t chip ASIC. ñ
1.1.4.1 Phân tích
Mt thi t k hoàn ch )nh ñưc mô t dùng Verilog có th bao g *m mô
t nhi u m c khác nhau nh m ñ ư c hành vi, h th ng bus và dây k t ñ
ni v i nh ng linh ki n Verilog khác. Tr c khi m t thi t k hoàn ch nh ư )
to ra ph n c ng, thi t k ph i c phân tích và t o ra m t nh d ng ñư ñ( ng ñ*
nht cho t t c các ph n trong thi t k . B c này c ng ki m tra pháp và ư ũ
ng ngh a c a mã ngõ vào Verilog. ĩ
1.1.4.2 To ph n c ng
Sau khi t o c m t d li u thi t k nh d ng nh t cho t t ñư ñ( ng ñ*
c các linh ki n trong thi t k, b c t ng h p s b t u b ng chuyư " ' ñ % n i ñ
d li u thi t k trên sang nh ng nh d ng ph n c ng thông th ng nh ñ( ư ư
mt chu i nh ng bi u th c Boolean hay mt netlist nh ng c ng c b n. ơ
Verilog Hardware Description Language
Lâm Đ Page 12 c Kh i University of Information Technology
1.1.4.3 Ti u logic ư
Bưc k ti p c a quá trình t ng h p, sau khi m t thi t k c ñư
chuyn i sang m t chu i nh ng bi u th c Boolean, b c t i u logic ñ ư ư
ñư ư c th c hin. B c này nh%m mc ñích làm gim nh ng biu th c v i
ngõ vào không i, lo i b nh u th c l p l i, t i thi u hai m c, t i ñ ng bi
thiu nhi u m c.
Đ ây quá trình tính toán r t hao tn thi gian công s c, mt s
công c cho phép ng i thi t k quy t nh m ư ñ( c t i u. K t qu ngõ ra ñ ư
ca b c này c ng d i d ng nh ng bi u th c Boolean, tư ũ ư logic d i ư
dng b ng, ho c netlist g m nh ng c ng c b n. & * ơ
Verilog Hardware Description Language
Lâm Đ Page 13 c Kh i University of Information Technology
1.1.4.4 Binding
Sau b c t i u logic, quá trình t ng h p s d ng thông tin t thi t ư ư
b( ph n c ng m c ích quyñ ñ t nh chính xác linh ki n logic nào và thiñ( t
b( nào c n hi n th c m ch thi t k . Quá trình này c g ñ ñư !i là binding và
kt qu ngõ ra c a c ch nh c th s d ñư ) ñ( ng cho FPLD, ASIC, hay
custom IC.
1.1.4.5 Sp x p và i dây liên k t ñ
B c s p x p và i dây lien k t s quy t nh vi c t v trí c a các ư ' ñ " ñ( ñ& (
linh ki n trên thi t b ph n c ng m c ích. Vi c k t n i các ngõ vào và ngõ ( ñ
ra c a nh ng linh ki n này dùng h th ng dây liên k t vùng chuy n
mch trên thi t b ph n c ng m c ích c quy t nh b i b c s p x p ( ñ ñư ñ( ư '
i dây liên k t này. K t qu ngõ ra c a b c này c a t i thi t b ñ ư ñư ñư (
phn c ng m c ñích, nh nư p lên FPLD, hay dùng s n xu t ASIC. ñ
Mt d minh h a v quá trình t ng h p c ch ra trên hình 1.5. ! ñư )
Trong hình này, m ch m mà ã c dùng ch y mô ph ng trong hình 1.3 ñ ñ ñư
ñư c t ng h p. Ngoài vic mô t ph n c ng thit k dùng Verilog, công c
tng h p òi h i nh ng thông tin mô t thi t b ph n c ng ích ti n hành ñ ( ñ ñ
quá trình t ng h p c a mình. K t qu ngõ ra c a công c t ng h p danh
sách các c ng flip-flop có s n trong thi t b ph n c ng ích h th ng # ( ñ
dây k t n i gi a chúng. Hình 5 c ng ch ra m t k t qu ngõ ra mang tính ũ )
trc quan ã c t o ra t ng b ng công c t ng h p c a Altera ñ ñư ñ %
Quartus II.
Verilog Hardware Description Language
Lâm Đ Page 14 c Kh i University of Information Technology
1.1.5 Mô ph ng sau khi t ng h p thi t k
Sau khi quá trình t ng h p hoàn thành, công c t ng h p s t o ra "
mt netlist hoàn ch nh ch a nh ng linh ki n c a thi t b ph n c ích ) ( ng ñ
các giá tr nh th i c a nó. Nh ng thông tin chi ti t v các c ng c dùng ( ñ( ñư
ñ ñư hi n th c thi t k cũng c t trong netlist này. Netlist này cũng
bao g m nh ng thông tin v trì hoãn trên ng dây nh ng tác ng * ñ ñư ñ
ca t i lên các c ng dùng trong quá trình h u t ng h p. Có nhi u nh d ng ñ(
netlist ngõ ra có th c t o ra bao g m c nh d ng Verilog. M t netlist ñư * ñ(
như v y th c dùng ph ng, ph ng này c g i ñư ñ ñư !
phng h u t ng h p. Nh ng v n v nh th i, v t n s xung clock, v ñ ñ(
hin t ng ch y ua không ki m soát, nh ng nguy hi m ti m n c a thi t ư ñ $
Verilog Hardware Description Language
Lâm Đ Page 15 c Kh i University of Information Technology
k ch th ki m tra b ng ph) % ng h u t ng h p th c hi n sau khi thi t
k ñưc tng h p. Nh trên hình 1.1, ta có th s d ư ng d li u ki m tra
ñã dùng cho quá trình ph ng ti n t ng h p dùng cho quá trình ñ
phng h u t ng h p.
Do trì hoãn trên ng dây các c ng, áp ng c a thi t k sau ñ ñư ñ
khi ch y ph ng h u t ng h p s khác v i áp ng c a thi t k " ñ
ngưi thi t k mong mu n. Trong tr ng h p này, ng i thi t k ph i s a ư ư
li thi t k c g ng tránh nh ng sai sót v nh th i hi n t ng ch y ' ñ( ư
ñua gi a nh ng tín hi u mà không th ki m soát.
1.1.6 Phân tích th i gian
Quan t trên h nh 1.1, b c phân tích th i gian m t ph n trong ) ư
quá trình biên d ch, ho c trong m t s công c thì b c phân tích th i gian ( & ư
này c th c hi n sau quá trình biên d ch. B c này s t o ra kh n ng ñư ( ư " ă
xu nh t v trì hoãn , t c xung clock, trì hoãn t c ñ ñ ñ ng này n ñ
cng khác, c ng nh th i gian cho vi c thi t l p gi tín hiũ ư u. K t qu
ca b c phân tích th i gian c thư ñư hin d i d ng b ng ho c biư & u . ñ*
Ngưi thi t k s d ng nh ng thông tin này xác nh t c xung clock, ñ ñ( ñ
hay nói cách khác là xác ñ( ñ nh tc ho t ñ ng c a m ch thi t k.
1.1.7 To linh ki n ph n c ng
Bưc cu i cùng trong qui trình thi t k t ng d a trên Verilog ó ñ ñ
là t o ra ph n c ng th c s cho thi t k . B c này có th t o ra m t netlist ư
dùng s n xu t ASIC, m t ch ng trình n p vào FPLD, hay m t m ch ñ ươ ñ
in cho mch IC.
Verilog Hardware Description Language
Lâm Đ Page 16 c Kh i University of Information Technology
1.2 Ngôn ng ph n c ng Verilog ( Verilog HDL)
Trong ph n tr c, ta ã trình bày t ng b c thi t k m c RTL ư ñ ư ñ
t m t mô t thi t k Verilog cho n vi c hi n th c ra m t ph n c ng th c ñ
s. Qui trình thi t k này ch th th c hi n c khi ngôn ng Verilog ) ñư
có th hi u c b i ng i thi t k h th ng, ng i thi t k m c RTL, ñư ư ư ñ
ngưi ki m tra, công c mô ph ng, công c t ng h p, và các máy móc liên
quan. B i t m quan tr ng c a trong qui trình thi t k , Verilog ã tr ! ñ
thành m t chu n qu c t IEEE. Chu n này c s d ng b i ng i thi t k $ $ ñư ư
cũng như ng i xây d ng công c thi t k . ư
1.2.1 Quá trình phát tri n Verilog
Verilog c ra i vào u n m 1984 b i Gateway Design ñư ñ ñ ă
Automation. Kh i u, ngôn ng u tiên c dùng nh m t công c ñ ñ ñư ư
mô ph ng và ki m tra. Sau th i gian u ngôn ng này c ch p nh n b i ñ ñư
ngành công nghi p n t , m t công c mô ph ng, m t công c phân tích ñi
thi gian, và sau này vào n m 1987, công c t ng h p ã c xây d ng và ă ñ ñư
phát tri n d a vào ngôn ng này. Gateway Design Automation nh ng
công c d a trên Verilog c a hang sau này c mua b i Cadence Design ñư
System. T sau ó, Cadence ñ ñóng vai trò ht s c quan tr !ng trong vi c phát
trin cũng như ph bi n ngôn ng mô t ph n c ng Verilog.
Vào n m 1987, VHDL tr thành m t chu n ngôn ng t ph n ă $
cng c a IEEE. B i do s h tr c a B qu c phòng (DoD), VHDL c ñư
s d ng nhi u trong nh ng d án l n c a chính ph M . Trong n l c ph .
bin Verilog, vào n m 1990, OVI ( Open Verilog International) c thành ă ñư
lp và Verilog chi m u th trong l nh v c công nghi p. u này ã t o ra ư ĩ Đi ñ
mt s quan tâm k l n t ng i dùng các nhà cung c p EDA t i ư
Verilog.
Verilog Hardware Description Language
Lâm Đ Page 17 c Kh i University of Information Technology
Vào n m 1993, nh ng n l c nh m chu n hóa ngôn ng Verilog ă % $
ñư ' ñc b t u. Verilog tr thành chu$n IEEE, IEEE Std 1364-1995, vào
năm 1995. V i nh ng công c phng, công c t ng h p, công c phân
tích th i gian, và nh ng công c thi t k d a trên Verilog ãs n, chu n ñ # $
Verilog IEEE này nhanh chóng c ch p nh n sâu r ng trong c ng ng ñư ñ*
thi it k ñ n t .
Mt phiên b n m i c a Verilog c ch p nh n b i IEEE vào n m ñư ă
2001. Phiên b n m i này c xem nh chuñư ư $n Verilog-2001 và c dùng ñư
bi h u h t ng i s d ng ng i phát tri n công c . Nh ng c m ư ư ñ& ñi
mi trong phiên b n m i ó cho phép bên ngoài kh n ng c ñ ă ñ!
ghi d li u, qu n th vi n, xây d ng c u hình thi t k , h tr nh ng c u ư
trúc m c tr u t ng cao h n, nh ng c u trúc t s l p l i, c ng ñ ư ơ & ũ
như thêm m t s c tính vào phiên b n này. Quá trình c i ti n chu n này ñ& $
vn ñang c ti p t c v i s tài tr cñư a IEEE.
1.2.2 Nhng c tính c a Verilog ñ
Verilog là m t ngôn ng mô t ph n c ng dùng c t ph n c ng ñ ñ&
t m c transistor n m ñ c hành vi. Ngôn ng này h tr nh ng c u trúc
ñ( ñ( ñnh th i cho vic phng nh th i m c chuyn mch và t c th i,
c ng kh n ng t ph n c ng t i m c thu t toán tr u t ng. ũ ă ñ ư
Mt t thi t k Verilog th bao g m s tr n l n gi a nh i * ng kh
(module) có m c tr u t ng khác nhau v i s khác nhau v m c chi ñ ư ñ
tit.
Verilog Hardware Description Language
Lâm Đ Page 18 c Kh i University of Information Technology
1.2.2.1 Mc chuy n m ch ñ
Nhng ñ&c m c a ngôn ng này khi n tr nên t ng trong ñi ư
vic hình hóa ph ng m c chuy n m ch bao g m kh n ng ñ * ă
chuyn m ch m t chi u c ng nh hai chi u v i nh ng thông s v t ũ ư ñ
hoãn l u tr n tích. Nh ng trì hoãn m ch n th c hình ư ñi ñi ñư
hóa nh là trì hoãn ng truy n, trì hoãn t th p lên cao hay t cao xu ng ư ñư
th ip. c m l u trĐ& ñi ư ñ n tích m c tr u t ng trong Verilog khi n ñ ư
kh n ng t nh ng m ch n v i linh ki n ng nh CMOS ă ñi ñ ư
hay MOS.
1.2.2.2 Mc c ng ñ
Nhng c ng c b n v i nh ng thông s c nh ngh a tr c s ơ ñư ñ( ĩ ư "
cung c p m t kh n ng thu n ti n trong vi c th hi n netlist và mô ph ng ă
mc c ng. i v i vi c ph ng m c c ng v i m c ích chi ti t c Đ ñ ñ&
bit, nh ng linh ki n c ng th c nh ngh a m c hành vi. ñư ñ( ĩ ñ
Verilog c ng cung c p nh ng công c cho vi c nh ngh a nh ng ph n t ũ ñ( ĩ
cơ bn v i nh ng ch c n ng c bi t. M t h ă ñ& th ng s logic 4 giá tr n ( ñơ
gin (0,1,x,z) c s d ng trong Verilog th hi n giá tr cho tín hi u. ñư ñ (
Tuy nhien, hình m c logic chính xác h n, nh ng tín hi u Verilog ñ ơ
g*m 16 m c giá tr v m ( ñ nh ñưc thêm vào 4 giá tr( ñơ n gi n trên.
1.2.2.3 Đ trì hoãn gi a pin n pin ñ
Mt ti n ích trong vi c mô t nh th i cho các linh ki n t i ngõ vào ñ(
và ngõ ra cũng ñư c cung c p trong Verilog. Ti n ích này có th c dùng ñư
ñ ñ( ñ ơ truy vn l i thông tin v nh thi trong mô t ti n thit k ban u. H n
na, ti n ích này c ũng cho phép ng i vi t hình hóa tinh ch nh hành vi ư )
ñ( nh th i ca mô hình d a trên hi n th c ph n c ng.
Verilog Hardware Description Language
Lâm Đ Page 19 c Kh i University of Information Technology
1.2.2.4 Mô t Bus
Nhng ti n ích v mô hình bus và thanh ghi c ng c cung c p b i ũ ñư
Verilog. i v i nhi u c u trúc bus khác nhau, Verilog h tr ch c n ng Đ ă
phân gi i bus wire v i h th ng logic 4 giá tr (0,1,x,z). V i s k t h p (
gia ch c n ng bus logic và ch c n ng phân gi i, nó cho phép mô hình hóa ă ă
ñư Đc hu ht các loi bus. i vi vic hình hóa thanh ghi, vic mô t
xung clock m ư ñ( ñư c cao và nh ng c u trúc ñiu khi n nh th i có th c s
dng t thanh ghi v i nh ng tín hi u xung clock tín hi u reset ñ
khác nhau.
1.2.2.5 Mc hành vi ñ
Nhng khi qui trình ( procedural blocks) c a Verilog cho phép
t thu t toán c a nh ng c u trúc ph n c ng. Nh ng c u trúc này t ng t ươ
vi ngôn ng l p trình ph n m m nh ng có khư n ng mô t phă n c ng.
1.2.2.6 Nhng ti n ích h th ng
Nhng tác v h th ng trong Verilog cung c p cho ng i thi t k ư
nhng công c trong vi c t o ra d li u ki m tra testbench, t p tin truy xu t
ñ! c, ghi, x d liu, t o d li u, nh hóa nh ng ph n c ng
chuyên d ng. Nh ng ti n ích h th ng dùng cho b nh c thi t b ñ! (
logic l p trình c (PLA) cung c p nh ng ph ng pháp thu n ti n cho ñư ươ
vic hình hóa nh ng thi t b này. Nh ng tác v hi n th I/O th ( (
ñư ñ c s dng ki m soát t t c nh ng ngõ vào ngõ ra d liu c a ng
dng và ph ng. Verilog cho phép vi c truy xu t c ghi ng u nhiên ñ!
ñn các tp tin.
| 1/87

Preview text:

Giáo trình Verilog HDL
Verilog Hardware Description Language NI DUNG
Chương1. Dn nhp thit k h thng s vi Verilog
Khi kích thưc và ñ phc tp ca h thng thit k ngày càng tăng,
nhiu công c h tr thit k trên máy tính (CAD) ñưc s dng vào quá
trình thit k phn cng. Thi kì ñu, nhng công c mô phng và to ra
phn cng ñã ñưa ra phương pháp thit k, kim tra, phân tích, tng hp và
t ñng to ra phn cng mt cách phc tp. S phát trin không ngng
ca nhng công c thit k mt cách t ñng là do s phát trin ca nhng
ngôn ng mô t phn cng (HDLs) và nhng phương pháp thit k da trên
nhng ngôn ng này. Da trên nhng ngôn ng mô t phn cng (HDLs),
nhng công c CAD trong thit k h thng s ñưc phát trin và s dng
rng rãi bi nhng kĩ sư thit k phn cng. Hin ti, ngưi ta vn ñang
tip tc nghiên cu ñ tìm ra nhng ngôn ng mô t phn cng tt hơn và
tru tưng hơn. Mt trong nhng ngôn ng mô t phn cng ñưc s dng
rng rãi nht ñó là ngôn ng Verilog HDL. Do ñưc chp nhn rng rãi
trong ngành công nghip thit k s, Verilog ñã tr thành mt kin thc
ñưc ñòi hi phi bit ñi vi nhng kĩ sư cũng như sinh viên làm vic và
h!c tp trong lĩnh vc phn cng máy tính.
Trong chương này, ta s" trình bày nhng công c và môi trưng làm
vic có s#n tương thích vi ngôn ng Verilog mà mt kĩ sư thit k có th
s dng trong qui trình thit k t ñng ca mình ñ giúp ñ$y nhanh tin ñ
thit k. Chúng ta s" tho lun tng bưc v thit k phân cp, thit k mc
cao t vic mô t thit k b%ng ngôn ng Verilog ñn vic to ra phn cng
ca thit k ñó. Nhng qui trình và nhng t khóa chuyên môn cũng s"
ñưc minh h!a  phn này. K tip, chúng ta cũng s" tho lun nhng công Lâm Đc Khi
University of Information Technology Page 1
Verilog Hardware Description Language
c CAD hin có tương thích vi Verilog và chc năng ca nó trong môi
trưng thit k t ñng. Phn cui cùng ca chương này s" nói v mt s
ñ&c tính ca Verilog khin nó tr thành mt ngôn ng ñưc nhiu kĩ sư
thit k phn cng la ch!n.
1.1 Qui trình thit k s
Trong thit k mt h thng s s dng môi trưng thit k t ñng,
qui trình thit k b't ñu b%ng vic mô t thit k ti nhiu mc ñ tru
tưng khác nhau và kt thúc b%ng vic to ra danh sách các linh kin cũng
như các ñưng kt ni gia các linh kin vi nhau ( netlist) cho mt mch
tích hp vi ng dng c th (ASIC), mch in ( layout) cho mt mch tích
hp theo yêu cu khách hàng ( custom IC), ho&c mt chương trình cho mt
thit b( logic có kh năng lp trình ñưc (PLD). Hình 1.1 mô t tng bưc
trong qui trình thit k này.
Bưc ñu ca thit k, mt thit k s" ñưc mô t bi s hn hp
gia mô t  mc ñ hành vi (behavioural) Verilog, s dng nhng gói
(module) thit k Verilog ñã ñưc thit k s#n, và vic gán h thng các
bus và wire ñ liên kt các gói thit k này thành mt h thng hoàn ch)nh.
Kĩ sư thit k cũng phi có trách nhim to ra d liu ñ kim tra
(testbench) xem thit k ñúng chc năng hay chưa cũng như dùng ñ kim
tra thit k sau khi tng hp. Vic kim tra thit k có th thc hin ñưc
b%ng vic mô phng, chèn nhng kĩ thut kim tra, kim tra thông thưng
ho&c kt hp c ba phương pháp trên. Sau bưc kim tra ñánh giá thit k (
bưc này ñưc g!i là kim tra tin tng hp (presynthesis verification)),
thit k s" ñưc tip tc b%ng vic tng hp ñ to ra phn cng thc s
cho h thng thit k cui cùng (ASIC, custom IC or FPLD,…). Nu h
thng thit k là ASIC, thit k s" s" ñưc sn xut bi nhà sn xut khác; Lâm Đc Khi
University of Information Technology Page 2
Verilog Hardware Description Language
nu là custom IC, thit k s" ñưc sn xut trc tip; nu là FPLD, thit k
s" ñưc np lên thit b( lp trình ñưc. Sau bưc tng hp và trưc khi
phn cng thc s ñưc to ra, mt quá trình mô phng khác (hu tng hp
(postsynthesis)) phi ñưc thc hin. Vic mô phng này, ta có th s dng
testbench tương t testbench ñã s dng trong mô phng tin tng hp
(presynthesis). B%ng phương pháp này, mô hình thit k  mc ñ hành vi
và mô hình phn cng ca thit k ñưc kim tra vi cùng d liu ngõ vào.
S khác nhau gia mô phng tin tng hp và hu tng hp ñó là mc ñ
chi tit có th ñt ñưc t mi loi mô phng. Lâm Đc Khi
University of Information Technology Page 3
Verilog Hardware Description Language
Nhng phn tip theo s" mô t t) m) v mi khi trong hình 1.1.
1.1.1 Dn nhp thit k
Bưc ñu tiên trong thit k h thng s là bưc dn nhp thit k.
Trong bưc này, thit k ñưc mô t b%ng Verilog theo phong cách phân
cp t cao xung thp (top-down). Mt thit k hoàn ch)nh có th bao g*m
nhng linh kin  mc cng ho&c mc transistor, nhng khi (module)
phn cng có chc năng phc tp hơn ñưc mô t  mc ñ hành vi, ho&c
nhng linh kin ñưc lit kê bi cu trúc bus.
Do nhng thit k Verilog  mc cao thưng ñưc mô t  mc ñ
mà ti ñó nó mô t h thng nhng thanh ghi và s truyn d liu gia
nhng thanh ghi này thông qua h thng bus, vic mô t h thng thit k 
mc ñ này ñưc xem như là mc ñ truyn d liu gia các thanh ghi
(RTL). Mt thit k hoàn ch)nh ñưc mô t như vy s" to ra ñưc phn
cng tương ng thc s rõ ràng. Nhng cu trúc thit k Verilog  mc ñ
RTL s dng nhng phát biu qui trình (producedural statements), phép
gán liên tc (continuous assignments), và nhng phát biu g!i s dng khi
(module) ñã xây dng s#n.
Nhng phát biu qui trình Verilog (procedural statements) ñưc
dùng ñ mô t mc ñ hành vi  mc cao. Mt h thng ho&c mt linh kin
ñưc mô t  mc ñ hành vi thì tương t vi vic mô t trong ngôn ng
phn mm. Ví d, chúng ta có th mô t mt linh kin b%ng vic kim tra
ñiu kin ngõ vào ca nó, bt c hiu, ch cho ñn khi có s kin nào ñó
xy ra, quan sát nhng tín hiu b't tay và to ra ngõ ra. Mô t h thng mt
cách qui trình như vy, cu trúc if-else, case ca Verilog cũng như nhng
ngôn ng phn mm khác ñu s dng như nhau. Lâm Đc Khi
University of Information Technology Page 4
Verilog Hardware Description Language
Nhng phép gán liên tc (continuous assignment) trong Verilog là
nhng phép gán cho vic th hin chc năng nhng khi logic, nhng phép
gán bus, và mô t vic kt ni gia h thng bus và các chân ngõ vào và
ngõ ra. Kt hp vi nhng hàm Boolean và nhng biu thc có ñiu kin,
nhng cu trúc ngôn ng này có th ñưc ñ mô t nhng linh kin và h
thng theo nhng phép gán thanh ghi và bus ca chúng.
Nhng phát biu g!i s dng khi Verilog ñã ñưc thit k s#n
(instantiantion statements) ñưc dùng cho nhng linh kin mc thp trong
mt thit k  mc ñ cao hơn. Thay vi mô t  mc ñ hành vi, chc
năng, ho&c bus ca mt h thng, chúng ta có th mô t mt h thng b%ng
Verilog b%ng cách kt ni nhng linh kin  mc ñ thp hơn. Nhng linh
kin này có th nh như là mc cng hay transistor, ho&c có th ln như là
mt b vi x lí hoàn ch)nh.
1.1.2 Testbench trong Verilog
Mt h thng ñưc thit k dùng Verilog phi ñưc mô phng và
kim tra xem thit k ñã ñúng chc năng chưa trưc khi to ra phn cng.
Trong quá trình chy mô phng này, nhng li thit k và s không tương
thích gia nhng linh kin dùng trong thit k có th ñưc phát hin. Chy
mô phng mt thit k ñòi hi vic to ra mt d liu ngõ vào kim tra và
quá trình quan sát kt qu sau khi chy mô phng, d liu dùng ñ kim tra
này ñưc g!i là testbench. Mt testbench s dng cu trúc mc cao ca
Verilog ñ to ra d liu kim tra, quan sát ñáp ng ngõ ra, và c vic b't
tay gia nhng tín hiu trong thit k. Bên trong testbench, h thng thit
k cn chy mô phng s" ñưc g!i ra (instantiate) trong testbench. D liu
testbench cùng vi h thng thit k s" to ra mt mô hình mô phng mà s"
ñưc s dng bi mt công c mô phng Verilog. Lâm Đc Khi
University of Information Technology Page 5
Verilog Hardware Description Language
1.1.3 Đánh giá thit k
Mt nhiêm v quan tr!ng trong bt kì thit k s nào cũng cn ñó là
ñánh giá thit k. Đánh giá thit k là quá trình mà ngưi thit k s" kim
tra thit k ca h! có sai sót nào có th xy ra trong sut quá trình thit k
hay không. Mt sai sót thit k có th xy ra do s mô t thit k mơ h*, do
sai sót ca ngưi thit k, ho&c s dng không ñúng nhng khi trong thit
k. Đánh giá thit k có th thc hin b%ng mô phng, b%ng vic chèn
nhng kĩ thut kim tra, ho&c kim tra thông thưng. 1.1.3.1 Mô phng
Chy mô phng dùng trong vic ñánh giá thit k ñưc thc hin
trưc khi thit k ñưc tng hp. Bưc chy mô phng này ñưc hiu như
mô phng  mc ñ hành vi, mc ñ RTL hay tin tng hp. , mc ñ
RTL, mt thit k bao g*m xung thi gian clock nhưng không bao g*m trí
hoãn thi gian trên cng và dây kt ni (wire). Chy mô phng  mc ñ
này s" chính xác theo xung clock. Thi gian ca vic chy mô phng 
mc ñ RTL là theo tín hiu xung clock, không quan tâm ñn nhng nguy
him tim $n có th khin thit k b( li (hazards, glitch), hin tưng chy
ñua không kim soát gia nhng tín hiu (race conditions), nhng vi phm
v thi gian setup và hold ca tín hiu ngõ vào, và nhng vn ñ liên quan
ñn ñ(nh thi khác. Ưu ñim ca vic mô phng này là tc ñ chy mô
phng nhanh so vi chy mô phng  mc cng ho&c mc transistor.
Chy mô phng cho mt thit k ñòi hi d liu kim tra, thông
thưng trong môi trưng mô phng Verilog s" cung cp nhiu phương
pháp khác nhau ñ ñưa d liu kim tra này vào thit k ñ kim tra. D
liu kim tra có th ñưc to ra b%ng ñ* h!a s dng nhng công c son
tho dng sóng, ho&c b%ng testbench. Hình 1.2 mô t hai cách khác nhau ñ Lâm Đc Khi
University of Information Technology Page 6
Verilog Hardware Description Language
ñ(nh nghĩa d liu kim tra ngõ vào ca mt công c mô phng. Nhng
ngõ ra ca công c mô phng là nhng dng sóng ngõ ra ( có th quan sát trc quan).
Đ chy mô phng vi Verilog testbench, trong testbench s" g!i h
thng thit k ra ñ kim tra, lúc này h thng thit k ñưc xem như là
mt phn ca testbench, testbench s" cung cp d liu kim tra ñn ngõ vào
ca h thng thit k. Hình 1.3 mô t mt ñon code ca mt mch ñm,
testbench ca nó, cũng như kt qu chy mô phng ca nó dưi dng sóng
ngõ ra. Quan sát hình ta thy vic chy mô phng s" ñánh giá chc năng
ca mch ñm. Vi mi xung clock thì ngõ ra b ñm s" tăng lên 1. Chú ý
r%ng, theo biu ñ* thi gian thì ngõ ra b ñm thay ñi ti cnh lên xung
clock và không có thi gian trì hoãn do cng cũng như trì hoãn trên ñưng
truyn. Kt qu chy mô phng ch) ra r%ng chc năng ca mch ñm là
chính xác mà không cn quan tâm ñn tn s xung clock.
Hin nhiên, nhng linh kin phn cng thc s s" có ñáp ng khác
nhau. Da trên ñ(nh thi và thi gian trì hoãn ca nhng khi ñưc s Lâm Đc Khi
University of Information Technology Page 7
Verilog Hardware Description Language
dng, thi gian t cnh lên xung clock ñn ngõ ra ca b ñm s" có ñ trì
hoãn khác không. Hơn na, nu tn s xung clock ñưc cp vào mch thc
s quá nhanh so vi tc ñ truyn tín hiu bên trong các cng và transistor
ca thit k thì ngõ ra ca thit k s" không th bit ñưc.
Vic mô phng này không cung cp chi tit v các vn ñ ñ(nh thi
ca h thng thit k ñưc mô phng. Do ñó, nhng vn ñ tim $n v ñ(nh
thi ca phn cng do trì hoãn trên cng s" không th phát hin ñưc. Đây
là vn ñ ñin hình ca quá tr)nh mô phng tin tng hp ho&c mô phng 
mc ñ hnh vi. Điu bit ñưc trong hình 1.3 ñó là b ñm ca ta ñm s
nhi phân. Thit k hot ñng nhanh chm th nào, hot ñông ñưc  tn s
nào ch) có th bit ñưc b%ng vic kim tra thit k sau tng hp. Lâm Đc Khi
University of Information Technology Page 8
Verilog Hardware Description Language
1.1.3.2 Kĩ thut chèn kim tra (assertion)
Thay vì phi dò theo kt qu mô phng b%ng m't hay to nhng d
liu kim tra testbench phc tp, kĩ thut chèn thit b( giám sát có th ñưc
s dng ñ kim tra tun t nhng ñ&c tính ca thit k trong sut quá trình
mô phng. Thit b( giám sát ñưc ñ&t bên trong h thng thit k ñưc mô
phng bi ngưi thit k. Ngưi thit k s" quyt ñ(nh xem chc năng ca
thit k ñúng hay sai, nhng ñiu kin nào thit k cn phi tha mãn.
Nhng ñiu kin này phi tuân theo nhng ñ&c tính thit k, và thit b(
giám sát ñưc chèn vào h thng thit k ñ ñm bo nhng ñ&c tính này
không b( vi phm. Chui thit b( giám sát này s" sai nu mt ñ&c tính nào
ñó ñưc ñ&t vào bi ngưi thit k b( vi phm. Nó s" cnh báo ngưi thit
k r%ng thit k ñã không ñúng chc năng như mong ñi. Thư vin OVL (
Open Verification Library) cung cp mt chui nhng thit b( giám sát ñ
chèn vào h thng thit k ñ giám sát nhng ñ&c tính thông thưng ca
thit k. Ngưi thit k có th dùng nhng kĩ thut giám sát ca riêng mình
ñ chèn vào thit k và dùng chúng kt hp vi testbench trong vic kim tra ñánh giá thit k.
1.1.3.3 Kim tra thông th n ư g
Kim tra thông thưng là quá trình kim tra nhng ñ&c tính bt kì
ca thit k. Khi mt thit k hoàn thành, ngưi thit k s" xây dng mt
chui nhng ñ&c tính tương ng vi hành vi ca thit k. Công c kim tra
thông thưng s" kim tra thit k ñ ñm bo r%ng nhng ñ&c tính ñưc mô
t ñáp ng ñưc tt c nhng ñiu kin. Nu có mt ñ&c tính ñưc phát
hin là không ñáp ng ñúng, ñ&c tính ñó ñưc xem như vi phm. Đ&c tính
ñ bao ph (coverage) ch) ra bao nhiêu phn trăm ñ&c tính ca thit k ñã ñưc kim tra. Lâm Đc Khi
University of Information Technology Page 9
Verilog Hardware Description Language
1.1.4 Biên dch và tng hp thit k
Tng hp là quá trình to ra phn cng t ñng t mt mô t thit k
phn cng tương ng rõ ràng. Mt mô t phn cng Verilog dùng ñ tng
hp không th bao g*m tín hiu và mô t ñ(nh thi  mc cng, và nhng
cu trúc ngôn ng khác mà không d(ch sang nhng phương trình logic tun
t ho&c t hp. Hơn th na, nhng mô t phân cng Verilog dùng cho
tng hp phi tuân theo nhng phong cách vit code mt cách nht ñ(nh
cho mch t hp cũng như mch tun t. Nhng phong cách này và cu
trúc Verilog tương ng ca chúng ñưc ñ(nh nghĩa trong vic tng hp RTL.
Trong qui trình thit k, sau khi mt thit k ñưc mô t hoàn thành
và kt qu mô phng tin tng hp ca nó ñưc kim tra bi ngưi thit k,
nó phi ñưc biên d(ch ñ nó tin gn hơn ñn vic to thành phn cng
thc s trên silicon. Bưc thit k này ñòi hi vic mô t phn cng ca
thit k phi ñưc nhn ra. Ví d, chúng ta phi ch) ñn mt ASIC c th,
ho&c mt FPGA c th như là thit b( phn cng mc ñích ca thit k. Khi
thit b( mc ñích ñưc ch) ra, nhng tp tin mô t v công ngh
(technology files) ca phn cng ( ASIC, FPGA, ho&c custom IC) s" cung
cp chi tit nhng thông tin v ñ(nh thi và mô t chc năng cho quá trình
biên d(ch. Quá trình biên d(ch s" chuyn ñi nhng phn khác nhau ca
thit k ra mt ñ(nh dng trung gian ( bưc phân tích), kt ni tt c các
phn li vi nhau, to ra mc logic tương ng ( bưc tng hp), s'p xp và
kt ni ( place and route ) nhng linh kin trong thit b( phn cng mc
ñích li vi nhau ñ thc hiên chc năng như thit k mong mun và to ra
thông tin chi tit v ñ(nh thi trong thit k. Lâm Đc Khi
University of Information Technology Page 10
Verilog Hardware Description Language
Hình 1.4 mô t quá trình biên d(ch và mô t hình nh kt qu ngõ ra
ca mi bưc biên d(ch. Như trên hình, ngõ vào ca bưc này là mt mô t
phn cng bao g*m nhng mc ñ mô t khác nhau ca Verilog, và kt qu
ngõ ra ca nó là mt phn cng chi tit cho thit b( phn cng mc ñích
như FPLD hay ñ sn xut chip ASIC. 1.1.4.1 Phân tích
Mt thit k hoàn ch)nh ñưc mô t dùng Verilog có th bao g*m mô
t  nhiu mc ñ khác nhau như mc ñ hành vi, h thng bus và dây kt
ni vi nhng linh kin Verilog khác. Trưc khi mt thit k hoàn ch)nh
to ra phn cng, thit k phi ñưc phân tích và to ra mt ñ(nh dng ñ*ng
nht cho tt c các phn trong thit k. Bưc này cũng kim tra cú pháp và
ng nghĩa ca mã ngõ vào Verilog.
1.1.4.2 To phn cng
Sau khi to ñưc mt d liu thit k có ñ(nh dng ñ*ng nht cho tt
c các linh kin trong thit k, bưc tng hp s" b't ñu b%ng chuyn ñi
d liu thit k trên sang nhng ñ(nh dng phn cng thông thưng như
mt chui nhng biu thc Boolean hay mt netlist nhng cng cơ bn. Lâm Đc Khi
University of Information Technology Page 11
Verilog Hardware Description Language
1.1.4.3 Ti ưu logic
Bưc k tip ca quá trình tng hp, sau khi mt thit k ñưc
chuyn ñi sang mt chui nhng biu thc Boolean, bưc ti ưu logic
ñưc thc hin. Bưc này nh%m mc ñích làm gim nhng biu thc vi
ngõ vào không ñi, loi b nhng biu thc lp li, ti thiu hai mc, ti thiu nhiu mc.
Đây là quá trình tính toán rt hao tn thi gian và công sc, mt s
công c cho phép ngưi thit k quyt ñ(nh mc ñ ti ưu. Kt qu ngõ ra
ca bưc này cũng dưi dng nhng biu thc Boolean, mô t logic dưi
dng bng, ho&c netlist g*m nhng cng cơ bn. Lâm Đc Khi
University of Information Technology Page 12
Verilog Hardware Description Language 1.1.4.4 Binding
Sau bưc ti ưu logic, quá trình tng hp s dng thông tin t thit
b( phn cng mc ñích ñ quyt ñ(nh chính xác linh kin logic nào và thit
b( nào cn ñ hin thc mch thit k. Quá trình này ñưc g!i là binding và
kt qu ngõ ra ca nó ñưc ch) ñ(nh c th s dng cho FPLD, ASIC, hay custom IC.
1.1.4.5 Sp xp và ñi dây liên kt
Bưc s'p xp và ñi dây lien kt s" quyt ñ(nh vic ñ&t v( trí ca các
linh kin trên thit b( phn cng mc ñích. Vic kt ni các ngõ vào và ngõ
ra ca nhng linh kin này dùng h thng dây liên kt và vùng chuyn
mch trên thit b( phn cng mc ñích ñưc quyt ñ(nh bi bưc s'p xp
và ñi dây liên kt này. Kt qu ngõ ra ca bưc này ñưc ñưa ti thit b(
phn cng mc ñích, như np lên FPLD, hay dùng ñ sn xut ASIC.
Mt ví d minh h!a v quá trình tng hp ñưc ch) ra trên hình 1.5.
Trong hình này, mch ñm mà ñã ñưc dùng chy mô phng trong hình 1.3
ñưc tng hp. Ngoài vic mô t phn cng thit k dùng Verilog, công c
tng hp ñòi hi nhng thông tin mô t thit b( phn cng ñích ñ tin hành
quá trình tng hp ca mình. Kt qu ngõ ra ca công c tng hp là danh
sách các cng và flip-flop có s#n trong thit b( phn cng ñích và h thng
dây kt ni gia chúng. Hình 5 cũng ch) ra mt kt qu ngõ ra mang tính
trc quan mà ñã ñưc to ra t ñng b%ng công c tng hp ca Altera Quartus II. Lâm Đc Khi
University of Information Technology Page 13
Verilog Hardware Description Language
1.1.5 Mô phng sau khi tng hp thit k
Sau khi quá trình tng hp hoàn thành, công c tng hp s" to ra
mt netlist hoàn ch)nh cha nhng linh kin ca thit b( phn cng ñích và
các giá tr( ñ(nh thi ca nó. Nhng thông tin chi tit v các cng ñưc dùng
ñ hin thc thit k cũng ñưc mô t trong netlist này. Netlist này cũng
bao g*m nhng thông tin v ñ trì hoãn trên ñưng dây và nhng tác ñng
ca ti lên các cng dùng trong quá trình hu tng hp. Có nhiu ñ(nh dng
netlist ngõ ra có th ñưc to ra bao g*m c ñ(nh dng Verilog. Mt netlist
như vy có th ñưc dùng ñ mô phng, và mô phng này ñưc g!i là mô
phng hu tng hp. Nhng vn ñ v ñ(nh thi, v tn s xung clock, v
hin tưng chy ñua không kim soát, nhng nguy him tim $n ca thit Lâm Đc Khi
University of Information Technology Page 14
Verilog Hardware Description Language
k ch) có th kim tra b%ng mô phng hu tng hp thc hin sau khi thit
k ñưc tng hp. Như trên hình 1.1, ta có th s dng d liu kim tra mà
ñã dùng cho quá trình mô phng tin tng hp ñ dùng cho quá trình mô phng hu tng hp.
Do ñ trì hoãn trên ñưng dây và các cng, ñáp ng ca thit k sau
khi chy mô phng hu tng hp s" khác vi ñáp ng ca thit k mà
ngưi thit k mong mun. Trong trưng hp này, ngưi thit k phi sa
li thit k và c g'ng tránh nhng sai sót v ñ(nh thi và hin tưng chy
ñua gia nhng tín hiu mà không th kim soát.
1.1.6 Phân tích thi gian
Quan sát trên h)nh 1.1, bưc phân tích thi gian là mt phn trong
quá trình biên d(ch, ho&c trong mt s công c thì bưc phân tích thi gian
này ñưc thc hin sau quá trình biên d(ch. Bưc này s" to ra kh năng
xu nht v ñ trì hoãn , tc ñ xung clock, ñ trì hoãn t cng này ñn
cng khác, cũng như thi gian cho vic thit lp và gi tín hiu. Kt qu
ca bưc phân tích thi gian ñưc th hin dưi dng bng ho&c biu ñ*.
Ngưi thit k s dng nhng thông tin này ñ xác ñ(nh tc ñ xung clock,
hay nói cách khác là xác ñ(nh tc ñ hot ñng ca mch thit k.
1.1.7 To linh kin phn cng
Bưc cui cùng trong qui trình thit k t ñng da trên Verilog ñó
là to ra phn cng thc s cho thit k. Bưc này có th to ra mt netlist
dùng ñ sn xut ASIC, mt chương trình ñ np vào FPLD, hay mt mch in cho mch IC. Lâm Đc Khi
University of Information Technology Page 15
Verilog Hardware Description Language
1.2 Ngôn ng phn cng Verilog ( Verilog HDL)
Trong phn trưc, ta ñã trình bày tng bưc thit k  mc ñ RTL
t mt mô t thit k Verilog cho ñn vic hin thc ra mt phn cng thc
s. Qui trình thit k này ch) có th thc hin ñưc khi ngôn ng Verilog
có th hiu ñưc bi ngưi thit k h thng, ngưi thit k  mc ñ RTL,
ngưi kim tra, công c mô phng, công c tng hp, và các máy móc liên
quan. Bi vì tm quan tr!ng ca nó trong qui trình thit k, Verilog ñã tr
thành mt chu$n quc t IEEE. Chu$n này ñưc s dng bi ngưi thit k
cũng như ngưi xây dng công c thit k.
1.2.1 Quá trình phát trin Verilog
Verilog ñưc ra ñi vào ñu năm 1984 bi Gateway Design
Automation. Khi ñu, ngôn ng ñu tiên ñưc dùng như là mt công c
mô phng và kim tra. Sau thi gian ñu ngôn ng này ñưc chp nhn bi
ngành công nghip ñin t, mt công c mô phng, mt công c phân tích
thi gian, và sau này vào năm 1987, công c tng hp ñã ñưc xây dng và
phát trin da vào ngôn ng này. Gateway Design Automation và nhng
công c da trên Verilog ca hang sau này ñưc mua bi Cadence Design
System. T sau ñó, Cadence ñóng vai trò ht sc quan tr!ng trong vic phát
trin cũng như ph bin ngôn ng mô t phn cng Verilog.
Vào năm 1987, VHDL tr thành mt chu$n ngôn ng mô t phn
cng ca IEEE. Bi do s h tr ca B quc phòng (DoD), VHDL ñưc
s dng nhiu trong nhng d án ln ca chính ph M.. Trong n lc ph
bin Verilog, vào năm 1990, OVI ( Open Verilog International) ñưc thành
lp và Verilog chim ưu th trong lĩnh vc công nghip. Điu này ñã to ra
mt s quan tâm khá ln t ngưi dùng và các nhà cung cp EDA ti Verilog. Lâm Đc Khi
University of Information Technology Page 16
Verilog Hardware Description Language
Vào năm 1993, nhng n lc nh%m chu$n hóa ngôn ng Verilog
ñưc b't ñu. Verilog tr thành chu$n IEEE, IEEE Std 1364-1995, vào
năm 1995. Vi nhng công c mô phng, công c tng hp, công c phân
tích thi gian, và nhng công c thit k da trên Verilog ñã có s#n, chu$n
Verilog IEEE này nhanh chóng ñưc chp nhn sâu rng trong cng ñ*ng thit k ñin t.
Mt phiên bn mi ca Verilog ñưc chp nhn bi IEEE vào năm
2001. Phiên bn mi này ñưc xem như chu$n Verilog-2001 và ñưc dùng
bi hu ht ngưi s dng và ngưi phát trin công c. Nhng ñ&c ñim
mi trong phiên bn mi ñó là nó cho phép bên ngoài có kh năng ñ!c và
ghi d liu, qun lí thư vin, xây dng cu hình thit k, h tr nhng cu
trúc có mc ñ tru tưng cao hơn, nhng cu trúc mô t s l&p li, cũng
như thêm mt s ñ&c tính vào phiên bn này. Quá trình ci tin chu$n này
vn ñang ñưc tip tc vi s tài tr ca IEEE.
1.2.2 Nhng ñc tính ca Verilog
Verilog là mt ngôn ng mô t phn cng dùng ñ ñ&c t phn cng
t mc transistor ñn mc hành vi. Ngôn ng này h tr nhng cu trúc
ñ(nh thi cho vic mô phng ñ(nh thi  mc ñ chuyn mch và tc thi,
nó cũng có kh năng mô t phn cng ti mc ñ thut toán tru tưng.
Mt mô t thit k Verilog có th bao g*m s trn ln gia nhng khi
(module) có mc ñ tru tưng khác nhau vi s khác nhau v mc ñ chi tit. Lâm Đc Khi
University of Information Technology Page 17
Verilog Hardware Description Language
1.2.2.1 Mc ñ chuyn mch
Nhng ñ&c ñim ca ngôn ng này khin nó tr nên lí tưng trong
vic mô hình hóa và mô phng  mc ñ chuyn mch bao g*m kh năng
chuyn mch mt chiu cũng như hai chiu vi nhng thông s v ñ trì
hoãn và lưu tr ñin tích. Nhng trì hoãn mch ñin có th ñưc mô hình
hóa như là trì hoãn ñưng truyn, trì hoãn t thp lên cao hay t cao xung
thp. Đ&c ñim lưu tr ñin tích  mc ñ tru tưng trong Verilog khin
nó có kh năng mô t nhng mch ñin vi linh kin ñng như là CMOS hay MOS.
1.2.2.2 Mc ñ cng
Nhng cng cơ bn vi nhng thông s ñưc ñ(nh nghĩa trưc s"
cung cp mt kh năng thun tin trong vic th hin netlist và mô phng 
mc cng. Đi vi vic mô phng mc cng vi mc ñích chi tit và ñ&c
bit, nhng linh kin cng có th ñưc ñ(nh nghĩa  mc ñ hành vi.
Verilog cũng cung cp nhng công c cho vic ñ(nh nghĩa nhng phn t
cơ bn vi nhng chc năng ñ&c bit. Mt h thng s logic 4 giá tr( ñơn
gin (0,1,x,z) ñưc s dng trong Verilog ñ th hin giá tr( cho tín hiu.
Tuy nhien, ñ mô hình mc logic chính xác hơn, nhng tín hiu Verilog
g*m 16 mc giá tr( v ñ mnh ñưc thêm vào 4 giá tr( ñơn gin  trên.
1.2.2.3 Đ trì hoãn gia pin ñn pin
Mt tin ích trong vic mô t ñ(nh thi cho các linh kin ti ngõ vào
và ngõ ra cũng ñưc cung cp trong Verilog. Tin ích này có th ñưc dùng
ñ truy vn li thông tin v ñ(nh thi trong mô t tin thit k ban ñu. Hơn
na, tin ích này cũng cho phép ngưi vit mô hình hóa tinh ch)nh hành vi
ñ(nh thi ca mô hình da trên hin thc phn cng. Lâm Đc Khi
University of Information Technology Page 18
Verilog Hardware Description Language 1.2.2.4 Mô t Bus
Nhng tin ích v mô hình bus và thanh ghi cũng ñưc cung cp bi
Verilog. Đi vi nhiu cu trúc bus khác nhau, Verilog h tr chc năng
phân gii bus và wire vi h thng logic 4 giá tr( (0,1,x,z). Vi s kt hp
gia chc năng bus logic và chc năng phân gii, nó cho phép mô hình hóa
ñưc hu ht các loi bus. Đi vi vic mô hình hóa thanh ghi, vic mô t
xung clock mc cao và nhưng cu trúc ñiu khin ñ(nh thi có th ñưc s
dng ñ mô t thanh ghi vi nhng tín hiu xung clock và tín hiu reset khác nhau.
1.2.2.5 Mc ñ hành vi
Nhng khi qui trình ( procedural blocks) ca Verilog cho phép mô
t thut toán ca nhng cu trúc phn cng. Nhng cu trúc này tương t
vi ngôn ng lp trình phn mm nhưng có kh năng mô t phn cng.
1.2.2.6 Nhng tin ích h thng
Nhng tác v h thng trong Verilog cung cp cho ngưi thit k
nhng công c trong vic to ra d liu kim tra testbench, tp tin truy xut
ñ!c, ghi, x lí d liu, to d liu, và mô hình hóa nhng phn cng
chuyên dng. Nhng tin ích h thng dùng cho b nh ñ!c và thit b(
logic lp trình ñưc (PLA) cung cp nhng phương pháp thun tin cho
vic mô hình hóa nhng thit b( này. Nhng tác v hin th( và I/O có th
ñưc s dng ñ kim soát tt c nhng ngõ vào và ngõ ra d liu ca ng
dng và mô phng. Verilog cho phép vic truy xut ñ!c và ghi ngu nhiên ñn các tp tin. Lâm Đc Khi
University of Information Technology Page 19