Trong bμi báo nμy chúng tôi hình thức hoá ngữ nghĩa sự kiện của ngôn ngữ mô tả phần cứng dưới dạng các quan hệ vμ sử dụng các quan hệ đó để chứng minh một số tính chất của các chương trì
Trang 1ngữ nghĩa quan hệ
của các chương trình tổ hợp
TS trần văn dũng
Bộ môn Toán - ĐH GTVT
Tóm tắt: Các thao tác của các thiết bị dùng để cμi đặt cho hệ thống điều khiển có thể được mô
phỏng bởi chương trình, điều đó cho phép phần cứng được kiểm chứng bằng các công cụ phần mềm chuẩn Trong bμi báo nμy chúng tôi hình thức hoá ngữ nghĩa sự kiện của ngôn ngữ mô tả phần cứng dưới dạng các quan hệ vμ sử dụng các quan hệ đó để chứng minh một số tính chất của các chương trình tổ hợp, mμ mỗi chu trình hoạt động của nó lμ một vòng lặp có điều kiện của một số các phép gán song song
Summary: The actual behaviour of hardware devices available for installation of a control system can be simulated by a program, and this allows the hardware to be proved correct by standard software techniques In this paper we formalise event semantics of Hardware Description Language in the form of relations and use relation calculus to prove properties (including termination and stability and uniqueness of final state) of combined programs, each operational cycle of which is defined as a conditional loop of non-deterministic choices among generalised parallel assignments.
1 Mở đầu
Chương trình VERILOG [6] được sử dụng
rộng rãi để mô hình cấu trúc và hành vi của các
thiết bị phần cứng từ các thiết bị đơn giản đến các
mạng máy tính Ngữ nghĩa mô phỏng định hướng
của sự kiện đã được đề cập nghiên cứu trong [3],
tuy nhiên khi mô tả hoạt động không đồng bộ của
hệ thống gồm nhiều thiết bị song song, nó rẽ
nhánh dẫn đến nhiều kết quả khác nhau Vì vậy
ngữ nghĩa đó không hỗ trợ việc kiểm chứng các
thiết bị phần cứng Do đó cần phải có phương
pháp hình thức hoá ngữ nghĩa sự kiện Bài báo
này tổng quát hoá ngữ nghĩa mô phỏng bằng
cách đưa ra mô hình quan hệ cho VERILOG dựa
trên quan hệ của các trạng thái kết thúc Bài báo
này xem xét ba lớp chương trình mô tả hoạt động
của các mạch tổ hợp
Hai phần đầu của Bài báo hình thức hoá ngữ
nghĩa sự kiện của VERILOG Phần sau cùng
dành cho việc nghiên cứu các chương trình tổ
hợp
2 Ngôn ngữ mô tả VERILOG
Các chương trình VERILOG được sinh ra bới các qui tắc cú pháp sau:
1 Một chương trình tuần tự được tạo nên từ các phép gán song song với các phép ghép, chọn có điều kiện, chọn không tất định:
2 Các hàm tuần tự đang xem xét được đánh
số thứ tự Giả sử ta có m các chương trình tuần
Giả sử index là hàm dùng để đánh số thứ tự các
chương trình Mọi phép gán nằm trong chương trình tuần tự đều có chỉ số như chương trình đó
3 Biến Bool tín hiệu ~ x được dùng để đánh dấu sự thay đổi của biến Bool x trong quá trình thực hiện Nếu biến Bool x thay đổi, thì gán ~ x là
Trang 2Chương trình có số thứ tự i được liên kết với thành
phần thứ i của biến tín hiệu (~x)[i]
4 Điều khiển sự kiện g(S) ghi nhận sự thay
đổi của các biến trong chương trình S được định
nghĩa như sau:
• Nếu S = P op Q, trong đó op ∈{ ;, ∩, < b >},
thì
index(P op Q) = df index(P) ∪ index (Q)
index(g(P) →P) = index(P)
• Phép ghép hai chương trình song song có
tập index rời nhau được định nghĩa như sau:
Phép ghép song song có tính chất giao
hoán, kết hợp và phân phối với phép chọn không
tất định và phép chọn có điều kiện
•VERILOG chương trình có dạng @ g(S) S,
chương trình tuần tự hoặc các chương trình
VERILOG có các tập index nhau
một nhánh Nếu sự thay đổi của biến x làm cho
Bổ đề 1
(a) g(P||Q) = g(P) ∨ g(Q)
Hành vi của một chương trình phần cứng
được mô tả bởi một dãy vô hạn các bước mô phỏng sau
1 Tại thời điểm ban đầu của mỗi bước mô phỏng cho đầu vào một giá trị xác định Giá trị mới của đầu vào có thể kích hoạt một số các điều khiển sự kiện Các nhánh tương ứng sẽ được kích hoạt và có thể hoạt động
2 Môi trường sẽ chọn không tất định một trong các nhánh được kích hoạt để thực hiện
3 Việc thực hiện một nhánh được kích hoạt
thao tác nhỏ sau:
nhánh đó đã thực hiện
• Truyền sự thay đổi của các biến tạo nên
4 Khi không có nhánh nào kích hoạt nữa, thì bước mô phỏng đang xét dừng và chờ nhập giá trị mới cho đầu vào Nếu luôn luôn có một nhánh
được kích hoạt sau mỗi bước cơ sở thì bước mô phỏng đó không dừng
3 Ngữ nghĩa quan hệ
Hành vi của mỗi bước mô phỏng có thể mô hình bởi một phép lặp của một phép ghép không tất định một số các nhánh song song kết hợp với một số thao tác phụ sau mỗi bước cơ sở như xóa hoặc ghi nhận sự thay đổi của các biến,
Định nghĩa 1 (Ngữ nghĩa sự kiện) Giả sử
(@g(S) S) là một chương trình VERILOG với các
nhánh P có tập chỉ số là I Ngữ nghĩa sự kiện với tập chỉ số I được định nghĩa như sau:
trong đó
1 Biểu thức Bool g[I] nhận được bằng cách thay thế các biến ~ x trong g(S) với chỉ số I bằng
Trang 3thành phần thứ I tương ứng của véc tơ tín hiệu
(~x)[i]
rời nhau của hai chương trình P và Q [5], ở đó
chúng không có đầu ra chung
4 Chương trình event (P) được dùng để xoá
các điều khiển sự kiện đã dùng khi P được thực
hiện và truyền sự thay đổi của các biến cho các
nhánh khác trong chương trình
event(R,I) = df ∃ v1’, , vn’• R ∧∀k : 1 ≤ k ≤ n •
Bổ đề 2
1 event (P < b > Q,I) = event(P, I)< b >
event(Q, I)
2 event (P ΠQ,I) = event(P, I) Π event(Q, I)
3 event (v1,v2:= e1,e2,I) =
3 event (v:= e,I) = ∀k : 1≤ k ≤ n •
⎟
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎜
⎝
⎛
→
= Δ
→
=
∧
≠ Δ
→
=
∧
≠ Δ
fi SKIP e
x
tt ::
x
~ 0 e 0 x
tt ::
x
~ 1 e 1 x if
m m
Định nghĩa 2 (Bước mô phỏng) Giả sử
@ g(S) S là chương trình VERILOG, trong đó
S = P|| … || Q và v
chúng Giả sử P, …, Q có các tập chỉ số rời nhau
I, …, J, tương ứng Ta định nghĩa bước lặp mô
phỏng là bước lặp sau:
end ~ v1,~v2, , ~vn
mới khác với giá trị cũ
4 Các chương trình tổ hợp
Trong phần này chúng ta nghiên cứu các chương trình, mà các nhánh của chúng là các phép gán song song Đây là lớp các chương trình phần cứng mô tả hoạt động của các mạch tổ hợp,
sung
Định nghĩa 3 Chương trình tổ hợp là một
chương trình VERILOG dạng @g(P) P, trong đó
nào xuất hiện nhiều hơn một lần ở vế trái các phép gán
Định nghĩa 4 (Trạng thái ổn định) Cho
chương trình tổ hợp như đã định nghĩa trong Định nghĩa 3 Giả sử VAR là tập tất cả các biến và
STATE: VAR → {0, 1}
• Trạng thái s ∈ STATE được gọi là ổn định
tại trạng thái s
• Hàm kiểm tra tính ổn định d(P) và điều kiện ổn định c(P) của các trạng thái của chương trình Comb P là các hàm logic sau:
Các chương trình tổ hợp biến đổi từ trạng thái ổn định này sang trạng thái ổn định khác
Định lý 1
c(P)T ; Comb P = c(P)T; Comb P; d(P)⊥
và ⊥ là chương trình ABORT
Ta có thể bổ sung việc kiểm tra tính ổn định vào trong điều kiện của phép lặp mà không ảnh hưởng đến hành vi của chương trình
Trang 4Định lý 2
5 Các chương trình tổ hợp luỹ đẳng
Trong mục này chúng ta nghiên cứu một lớp
các chương trình con, mà mỗi phép gán của nó
lũy đẳng
Định nghĩa 5 Chương trình P được gọi là
lũy đẳng, nếu P; P = P
Bổ đề 3 Mọi chương trình tổ hợp đều lũy
đẳng
Định nghĩa 6 Chương trình tổ hợp được gọi
là lũy đẳng theo thành phần nếu mọi nhánh của
nó là lũy đẳng
Bắt đầu từ một trạng thái ổn định một
chương trình tổ hợp lũy đẳng theo thành phần
gồm hai nhánh có thể bắt đầu từ một nhánh, sau
đó thực hiện nhánh kia và cứ tiếp tục như vậy cho
đến khi đạt được trạng thái ổn định
Định lý 3 Nếu P = Q || R và Q, R là hai
chương trình lũy đẳng, thì
c(P)T ; Comb P; end ~ x, ~ z= c(P)T;
Định nghĩa 7 Chương trình P được gọi là
X
[4] C Delgado Kloos and P T Breuer Formal
Semantics for VHDL Kluwer Academic Publisher, (1995)
Khi chu trình mô phỏng của chương trình tổ
hợp kết thúc, trạng thái của nó thường không
được xác định một cách duy nhất Đối với chương
trình lũy đẳng có thể dễ dàng kiểm tra tính dừng
và tính duy nhất của trạng thái kết
Định lý 4 Nếu P = Q || R và Q, R là hai
chương trình lũy đẳng, sao cho P;Q và Q;R là hai
chương trình không mở rộng, thì khi đó Comb P
luôn luôn dừng khi xuất phát từ trạng thái ban đầu
thỏa mãn điều kiện c(P)
6 Kết luận
Bài báo cung cấp cho ngôn ngữ mô tả phần cứng ngữ nghĩa sự kiện dựa trên mô hình quan
hệ Ban đầu các chương trình tổ hợp ở trạng thái
ổn định và được kích hoạt bởi các giá trị mới cung cấp cho các thiết bị đầu vào Các nhánh kích hoạt của chương trình sẽ được lụa chọn một cách không tất định để thực hiện Bài báo chứng tỏ rằng một chương trình phần cứng tương đương với một phép lặp của phép lựa chọn không tất
định của một số các chương trình tuần tự có chung các biến Nếu chương trình được thiết kế tốt, thì chúng sẽ luôn luôn dừng và đạt trạng thái kết thúc duy nhất Đối với một lớp các chương trình lũy đẳng bài báo đưa ra thuật toán hữu hiệu xét tính dừng của nó Việc nghiên cứu các tính chất dừng và trạng thái kết duy nhất của một số lớp chương trình khác là đề tài nghiên cứu tiếp theo
Tài liệu tham khảo
[1] K C Davis A denotational definition of the VHDL
simulation Kernel University of Cincinnati
[2] M Gordon Why higher-order logic is a good
formalsm for specifying and verifying hardware Formal Aspect of VLSI Design, 153-177, (1986)
[3] M Gordon Event and Cycle Semantics of
Hardware Description Languages University of Cambridge Computer Laboratory, (1998)
[5] C A R Hoare and He Jifeng Unifying Theory of
Programing Prentice – Hall, (1998)
[6] Open VERILOG International VERILOG Hardware Description Language Reference Manual, Version 1.0
[7] D E Thomas and P R Mooby The VERILOG
Hardware Description Language Kluwer Academic Publishers, (1995)
[8] Tran Van Dung and He JiFeng A Theory of
Combinational Programs UNU/IIST Report No 162Ă