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.

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