TOM TAT KHÓA LUẬN
Chương 5. Mô phỏng và đánh giá kết quả
5.1. Mô phỏng bộ xử lý RISC-V
3.1.1. Tập lệnh
37 lệnh của tập lệnh RV32I và 4 lệnh Floating point trong tập lệnh RVF được thực hiện như trong bảng dưới.
Bảng 5.1: Tập lệnh được thực hiện trên thiết kế
Nhóm lệnh Loại lệnh Lệnh
Arithmetic R add, sub, sll, slt, sltu, xor, srl, sra,
or, and
Imm I addi, slti, sltiu, xori, ori, andi, slli,
srli, srai
Load I Ib, lh, lw, Ibu, Thu
Store S sb, sh, sw Branch B beq, bne, blt, bge, bltu, bgeu
Lui U
Auipc U
JAL J
JALR I
Float F fadd, fsub, fmul, fdiv
5.1.2. Tap lệnh mô phỏng
Ta khởi tao giá trị ban đầu:
o Dé thuận tiện cho việc thực hiện cũng như kiêm tra các lệnh, nhóm
thực hiện gán các giá trị ban đầu cho 32 thanh ghi như bảng 5.2.
41
Bảng 5.2: Khởi tạo giá trị ban đầu cho các thanh ghi
Tên thanh ghi Chỉ số thanh ghi Giá trị Hex
Zero 0 00000000
ra 1 00000001
sp 2 00000002
gp 3 00000003
tp 4 00000004 t0 5 00000005
tl 6 00000006
2 7 00000007 s0 8 00000008
sl 9 00000009 a0 10 0000000a
al 11 0000000b a2 12 0000000c a3 13 0000000d a4 14 0000000e a5 15 0000000f a6 16 00000010 a7 17 00000011 s2 18 00000012 s3 19 00000013 s4 20 00000014
số 21 00000015 s6 22 00000016 s7 23 00000017
38 24 00000018 s0 25 00000019 s10 26 42153524 sll 27 42c8§e993 t3 28 0000001c t4 29 0000001d t5 30 0000001e t6 31 0000001f
42
© Đoạn lệnh mô phỏng được thé hiện như bảng 5.3.
Bảng 5.3: Bảng mã khởi tạo giá trị ban đầu cho các thanh ghi
Lệnh Mã lệnh Binary
addi ra,zero, 1 00000000000100000000000010010011 addi sp,zero,2 00000000001000000000000100010011 addi gp,zero,3 00000000001 1000000000001 10010011 addi tp,zero,4 000000000 10000000000001000010011 addi t0,zero,5 00000000010100000000001010010011 addi t1,zero,6 0000000001 1000000000001 100010011 addi t2,zero,7 0000000001 1 100000000001110010011 addi sO,zero,8 00000000 100000000000010000010011 addi s1,zero,9 00000000100100000000010010010011 addi a0,zero,10 00000000101000000000010100010011 addi al,zero,11 00000000101 100000000010110010011 addi a2,zero, 12 000000001 1000000000001 1000010011 addi a3,zero, 13 000000001 10100000000011010010011 addi a4,zero, 14 000000001 1 1000000000011100010011 addi a5,zero, 15 000000001 11100000000011110010011 addi a6,zero, 16 0000000 1000000000000100000010011 addi a7,zero,17 00000001000100000000100010010011 addi s2,zero,18 00000001001000000000100100010011 addi s3,zero,19 00000001001 100000000100110010011 addi s4,zero,20 00000001010000000000101000010011 addi s5,zero,21 00000001010100000000101010010011 addi s6,zero,22 0000000101 1000000000101100010011 addi s7,zero,23 00000001011100000000101110010011 addi s8,zero,24 00000001 1000000000001 10000010011
43
addi s9,zero,25 00000001 1001000000001 10010010011
Iw s10,0(zero) 00000001 10100000001000000010001 1
Iw s11,1(zero) 00000001 10110000001000001010001 1 addi t3,zero,28 00000001 1 1000000000011 1000010011 addi t4,zero,29 00000001 110100000000111010010011 addi t5,zero,30 00000001 111000000000111100010011 addi t6,zero,31 00000001 111100000000111110010011 addi ra,zero, | 0000000000010000000000001001001 1 addi sp,zero,2 0000000000100000000000010001001 1 addi gp,zero,3 00000000001 1000000000001 10010011 addi tp,zero,4 00000000010000000000001000010011 addi t0,zero,5 00000000010100000000001010010011 addi t1,zero,6 0000000001 1000000000001 100010011 addi t2,zero,7 0000000001 1 100000000001 110010011 addi s0,zero,8 00000000100000000000010000010011 addi s1,zero,9 00000000100100000000010010010011
addi a0,zero, 10 00000000101000000000010100010011
o Kết quả chạy trên phần mềm RARS 1.5 như hình 5.1.
“Edit | Execute j( Registers | Floating Point / Control and Status
Blpt| Address | Code Basic ra F 0x00000001|zero
| TL | 0x00400044| 0x01200913jađđi x1ê,x0,0x00000012 18: ),Zero, 18 l Isp 2 ‘oxoo000002|
LÍ | 0300400043] 001300988.ađđ1 x19, x0, 0x00000013 a 3 000000003
By | 0x0040004e| 0x01400a13Ìađ4i x20, x0, 0x00000014 20: 2650) m 4 ‘ox00000008
[| 000400050 oxo1s00893|addi_x21, x0, 0x00000015 2219, tô 3 0x00000008|
Cy | 000400054 0z01690513lađđi x22,x0,0x09000016 ,5EO, ie § ‘0x00000006|
L] | 0x00400059 0x01700b93|addi x23, x0, 0x00000017 ),zero, v2 7 0x00000007}
(| 040040005c| 0x01800c13.ađồ: x24, x0, 0x0000001 2820, ao a ‘ox00000008|
Lj | 0x0040000| Ox01800¢93|addi_x25, x0, 0200000019 1, 2€20, al 9) 0x00000009|
Ly | 000400064 0x01c00e13lađđ+ x28, x0, 0x0000001¢ 8 lao io] 0x0000000a|
L] | 09040069) 0x01đ00e93jadđi x29,x0,0x00000014, i 7 m | 0x00000000|
Ly | 0z0040006c| 0x01e00f13laddi x30, x0, 0x0000001e |29: a a2 12 .0x0000000c| L] | 0400490770 0g01£00f93|addi x31,x0,0x0000001f |29: addi té, zero, 31 a3 13| .0x0000000d|
5 15) 0x0000000f|
= la 16 0x00000010|
E pata segment oe far Ty 0x00000011|
Address Value (+0) Value (+4) Value (+8) Value (xe) Value (+10) Value (+14) Value (+18) Value (+1c) 32 18) 0400000012]
010010000) 000000000 0x00000000| 0x00000000) 0x00000000| 000000000, 000000000) 0x00000000| 000000000) s3 18 409009013) 0x10010020) .0x00000000)| 000000000) 0x00000000' 000000000] 0x00000000) .0x00000000| 000000000] 0z00000000| sd 20 2509909014 0x10010040) .0x00000000/ 0x00000000| 0x00000000) 0x00000000| 0x00000000) .0x00000000)| 0z00000000| 0z00090000| iss 21 289959015)
0z10010060 0x00000000) 000000000 000000000) 000000000 0z00000000) 0x00000000) 000000000 0x00000000| _ | |s6 2 9400089016
010010080] 00000000 0500000000 000000000) 0500000000 0500000000. 000000000 0500000000 oxo0000000) || |=? 23 0x00000017
010010040) 000000000) 0x00000000] ‘ox00000000) 0x00000000| 000000000) 000000000) 0x00000000| 000000000)| sẽ 24 0400009018 0x100100c0) .0x00000000/ 000000000 0x00000000. 0x00000000| 000000000. .0x00000000| 000000000 0z00000000| iso 25| 2509909013) 0x100100e0) .0x0000000)| 000000000) 0x00000000' 000000000] 000000000) .0x0000000| 000000000] 0z00090000| s10 26 209909080.
0z10010100 '0x00000000) 0z00000000| 0z00000000, 0z00000000| 0z00000000) 0x00000000) 0x00000000| 0x0ong0non| || [s1! Bị 2809089000 0z10010120 0400000000) 0x00000000 0400000000, 00000000 0z00000000) 0x00000000| 000000000 0x0onpono|_ || [ts 20 pane
ủ1n140L 0nani — — nx0n00nnnni ủx00nnnnnn: oxnnnnnnna| oxannonnnnl oxnnononoal oxnnnnnnna| .0x0010000n) Bỡ 29) 0x0000001d)
ID ics 30) .0x0000001e|
| tờ | |ox10010000(data) |v| (v] Hexadecimal Addresses #jHexadecimalValues []ASCI 0x00400074|
Hình 5.1: Kết quả chạy khởi tạo trên phan mềm RARS 1.5
44
o_ Kết quả mô phỏng:
o Kết quả mô phỏng thu được giống với kết quả thực hiện chạy trên
phân mém RARS 1.5.
Thực thi 37 lệnh RV32I và 4 lệnh Float:
o Doan lệnh mô phỏng như bảng 5.4.
Bảng 5.4: Bảng mã thực thi 37 lệnh RV32I và 4 lệnh Float
Lệnh Mã lệnh Binary
add tp,gp,ra 0000000000010001 10000010001 10011
sub a2,t1,s2 010000010010001 10000011000110011
sll s0,ứp,sp 00000000001000011001010000110011
slt a3,s6,a0 00000000101010110010011010110011
sltu a3,a6,a0 00000000101010000011011010110011
xor t0,tl,sp 00000000001000110100001010110011
srl zero,tp,gp 00000000001 100100101000000110011
sra zero,tp,gp 01000000001 1001001010000001 10011
45
or ra,tl,sp 00000000001000110110000010110011 and t2,tp,gp 00000000001100100111001110110011
addi s5,s1,12 000000001 10001001000101010010011
slti a6,s4, 10 00000000101010100010100000010011 sltiu a6,s4, 10 00000000101010100011100000010011
xori s6,a2,32 00000010000001100100101100010011
ori s11,t5,4 00000000010011110110110110010011
andi s4,s8,6 0000000001 1011000111101000010011
slli s2,t2,11 00000000101100111001100100010011 srli s9,s7,26 00000001 101010111101110010010011
srai sl, a2, 20 01000001010001100101010010010011
Ib s7,0(a0) 00000000000001010000101 110000011
Th s3,3(a6) 00000000001 110000001 100110000011
Iw s4,3(a7) 00000000001 11000101010100000001 1
Ibu t3,21(t4) 00000001010111101100111000000011
Thu t6,6(t5) 00000000011011110101111110000011
sb s4,25(a0) 00000001010001010000110010100011
sh s8,20(a4) 00000001 100001110001101000100011
sw s10,20(a5) 00000001 101001111010101000100011
beq t0,ra 00000000000100101000001001100011
bne t0,ra 00000000000100101001001001100011
blt t2,ra 00000000000100111100001001100011
46
bge 2, zer 00000000000000111101001001100011 bltu t2, zero 000000000000001 11110000001 100011
bgeu t2, zero 00000000000000111111001001100011
lui s10,20 00000000000000010100110100110111 auipc s8,20 00000000000000010100110000010111
Jalr a7,s5,68 00000100010010101000100011100111
jal float 00000000010000000000000011101111
fadd.s ft1, ft2, ft3 00000000001100010111000011010011
fsub.s ft4, f2, ft3 00001000001100010111001001010011 fmul.s ft5, ft2, ft3 00010000001100010111001011010011
fdiv.s ft6, ft2, ft3 00011000001 100010111001101010011
o Kết quả chạy trên phan mềm RARS 1.5 như hình 5.3.
Registers | Floating Point | Control and Status |
Name ‘Number Vaue zero D 000000080) Code Basic ra 1 ‘0x00000096|
Se) 0x00236003 or x1,xẽ, x2 5 2 ‘ox00000002]
0| 0x003273b3|and x7,x4,xã sp 3 0x00000003|
Oxd0cdeaSsladds 4 3 0z00000004|
a9 0x90aa281315 0 5 0x00000004|
lac| 0x00aa3813ls mm đ 0z00000006|
sẽ 1 920009090)
so s 00000000]
a0 10 0z0000000a|
al 11 ox00000008]
a2 1 oneseeeees
ai 38 9x00000090| Số: 1h s3,3(a€) ad 14 0z0000000e|
as 15 ‘ox0000000¢|
a 16 0z00000000|
si 17 0z00000011|
Address Value (+0) Value (+4) Value (+8) Value (+c) Value (+10) Value (+14) Value (+18) Value (+1c) | = 18| 000000000)
'0x00000000) 0x00000000/ 0z00000000| 0z00000000| 0x00000000/ 0500000000. '0500000000) 0x000nnnnn|ằ || |s3 1 0x00000013|
'0x09000000) 0x00000000| 0x00000000| ‘0x00000000) ‘0x00000000) ‘0x00000000) ‘0x00000000] 0x00000000| at 29 —
‘ox00000000 x00000000] 0z00000000| 0z00000000| 0z00000000) 0z00000000) ‘ox00000000 exon000000) | |25 21) ox00000015|
‘9x00000000] 0x00000000) 0x00009000) 0x00000900) 0x00000000) 000000000) ‘9x00000000] 0x00000000| lj) |s6 2 0XE£££££dd|
.0x00000090) 000000000) 000000000] 0x00000900) .0x00000900) .0x00000000. 0x00000000| 000000000] | tHã 23) 0x00000017] 0x00000000| 009009096) 0x00000000| 0x00900900] .0x00000900) 0x00000000) 0x00000000| 9x00000000| jee 24|
.0x00000000 000000000) 000000060] 0x00000000| .0x00000000) .0x00000000. 0x00000000| x00000000} so 25|
0x00000000) 9x00000000| 0x00000000| 0x00000900) .0x00000000) 0x00000000) 0x00000000) 9x00000000] }s20 26|
'0x00000000| 0x00000000| ‘0x00000000] ‘0x00000000] ‘ox00000000) ‘ox00000000) '0x00000000| 0x00000000| sil 2
.0x00000000| 000000096) 0x00000000| ‘0x00000000| 0x00000000| 0x00000000) 0x00000000) 0x00000000| |r3 28| 9x0000001¢} .ix0annannni nxnaannnani nxnnananna| ——— nxanaannni .0x00000An0ˆ .0x0annanan_ .ix0annannni 0xnanaanna| Y Jed 29) .0x0000001đ|
a iL [E1 30 9z0000001e|
E 31 0z00000011|
ẽ | ‡@ |ÍOxf0010000(daia) |v | [| Hexadecimal Addresses |v) Hexadecimal Values [_] ASCI bc '0x004000c§|
Hình 5.3: Kết quả chạy 37 lệnh RV32I và 4 lệnh Float trên phan mềm RARS 1.5
47
Hình 5.4: Kết quả mô phỏng 37 lệnh RV32I và 4 lệnh Float
o_ Kết quả mô phỏng thu được giống với kết quả thực hiện chạy trên
phân mêm RARS 1.5.
Thực thi chuỗi lệnh theo OoO:
o Đoạn lệnh mô phỏng như bảng 5.5.
Bảng 5.5: Bảng lệnh thực thi chuỗi lệnh theo OoO
Lệnh Mã lệnh Binary
Iw ra, 1(sp) 00000000000 10001001000001000001 1
add gp, ra, tp 00000000010000001000000110110011
sw t0, 2(gp) 00000000010100011010000100100011
sub t1, tl, t2 01000000011 1001 10000001100110011
Iw sO, 3(t1) 00000000001 1001 1001001000000001 1
48
can | eo | “Resists | Floating Point | Control and Status
Ey text Segment aa Name ‘Number Value
ro 9 9z90000000| Bkot| Address Code Basic Source ra 7 000000000]
‘ox004 (0x00112083|2w x1,0x00000001 (x2) 1w ra, LŒp) ~ 3 Care IE] 0x004081b3/ađ4 x3,x1,x4 ‘add gp, ra, ep 3 '0x10008000|
Gg (Ox00S1a123|aw x5, 0x00000992(x3) t0, 2(gp) a aman
(0x40730333|sub x6, xế, x7 sub tl, tl, 5 000000000] (0x00332403|2w x2, 0x00000003(xé) |5: 3w s9, 3(t1) é ‘0x00000000)
7 0x00000000|
Ũ ‘0x00000000)
3 '0x00000000]
rT) ‘0x00000000|
11 10000000]
12) 9z00000000|
13 0x00000000|
E 14 0x00000000|
g 1s 0x00000000|
16 '0x00000000|
E, deta soument Fr) 0000000
Address Value (+0) Value (+4) Value (+8) Value (+10) Value (+14) Value (+18) 13) ‘0x00000000)
910000 0x00000000) 0z0000001 0x00000000) 0z000 (000000000) 0x00000000) (0x00000000) ix00000000) ^ | 13 9x00000000)
010020 000000000) 000000000) 0x00000000) 0x00000000) 000000000) 0x00000000) 000000000) 000000000] 20 0x00000000|
0510010040 000000000) 0500000000, 0x00000000) 0x00000000, '0x00000000| 0x00000000) '0x00000000) 000000000) ơ 9590890090) 0x10010060 0x00000000) 0x00000000) 0x00000000) 0x0000000) 0x00000000| 000000000) 0x00000000| 0x00000000] 22 9590890090) 0x10010080 0x00000000) 0x00000000) 0x00000000) (000000000) '0x00000000] (0x00000000) '0x00000000) 0x00000009] 23 20000] 0x100100a0 0x00000000] 0z0000001 0x00000000) 000000) 0x0000 '0x00000000) 3x00000000] 2 9x90000000|
01000 0x00000000) 0x000000 000000) 0x0000) ‘0x00000000] 'x00000000| 25 9x00000000)
01000 000000000) 0x0000000! 0x00000000) 0x00000000| 0x0000) 0x00000000) 'x00000000| 2E 9500090000) 0x10010100 000000000) 0x0000001 0x00000000) 0x00000000| 0x0000 0x00000000| 000000000) 27 9399890090) 0x10010120 0x00000000) 0x0000000/ 0x00000000) 000000000) 0x00000000| 0x0000) 000000000) 0x00000000] 28 9590890090) 0x108101ỏ0 ủx0nnnarnnni ủx0nn00nn' ủx0aannnn! 0x0naanna' 'ủx0nnnannni 0xnnaannn! 'ax0nnnaanni nxnnnnnnan| 29 90009090]
‹ › 3) 9x00000000|
Tw IlEionnaaram I~] 31 0x00000000|® (|0x10010000(đata) | ~| (| Hexadecimal Addresses [7] Hexadecimal Values ( ]ASCH EEnontrrn|
66112083 y/00008 1ủ 4030.
80408 3/0051
80008, 40730 00330
'89510 3/0730 00320
66090881... Y68908 4288,
4ee9aga3 00000 = ‘0000
44444444444 0160.0888 y 8832 X O12 5101
Hình 5.6 Kết quả mô phỏng chuỗi lệnh
5.2. Mô phỏng đơn vị xử lý Floating point
5.2.1. Mô phỏng phép cộng
49
Hình 5.7 thé hiện dạng sống mô phỏng phép cộng ở mức RTL. Hai toán hang ngõ vào A và B có giá trị lần lượt là 32'h4DB75F4B và 32'hC969B0C2, opcode là
4°d10. Ta được kết qua là 32’h4DB6EA73.
5.2.2. Mô phỏng phép trừ
50
Hình 5.8: Dạng sóng mô phỏng kết quả phép trừ ở mức RTL Hình 5.8 thé hiện dang sống mô phỏng phép cộng ở mức RTL. Hai toán hang ngõ vào A và B có giá trị lần lượt là 32'h4DB75F4B và 32'hC969B0C2, opcode là
4°d3. Ta được kết quả là 32'h4DB7D423.
5.2.3. M6 phỏng phép nhân
Hình 5.9 thể hiện dạng sóng mô phỏng phép nhân ở mức RTL. Hai toán hạng ngõ vào A và B có giá trị lần lượt là 32'h4DB75F4B và 32'hC969B0C2, opcode là
4°d1. Ta được kết quả là 32*HdD7A76458.
51
5.2.4. Mô phỏng phép chia
Hình 5.10 thé hiện dạng sống mô phỏng phép chia ở mức RTL. Hai toán hạng ngõ vào A và B có giá trị lần lượt là 32h4DB75F4B và 32hC969B0C2,
opcode là 4’d2. Ta được kết qua là 32’HC3C8E04C.
52
Hình 5.10: Dang sóng mô phỏng kết quả phép chia ở mức RTL
5.3. Kết quả Post-synthesis
Báo cáo tông hợp Timing được thể hiện trong hình 5.11 và 5.12
Design Timing Summary
Setup Hold Pulse Width
Worst Negative Slack (WNS): 0.551ns Worst Hold Slack (WHS): 0.066 ns Worst Pulse Width Slack (WPWS): 2.400 ns Total Negative Slack (TNS): 0.000 ns Total Hold Slack (THS): 0.000 ns Total Pulse Width Negative Slack (TPWS): 0.000 ns Number of Failing Endpoints: 0 Number of Failing Endpoints: 0 Number of Failing Endpoints: 0
Total Number ofEndpoints: 2675 Total Number ofEndpoints: 2675 Total Number of Endpoints: 1672
All user specified timing constraints are met.
Hình 5.11: Tổng hop Timing thiết kế chưa tích hợp khối tính toán Floating Point
53
Design Timing Summary
Setup Hold Pulse Width
Worst Negative Slack (WNS): 0.357 ns Worst Hold Slack (WHS): 0.066 ns Worst Pulse Width Slack (WPWS): 48.400 ns Total Negative Slack (TNS): 0.000ns Total Hold Slack (THS): 0.000 ns Total Pulse Width Negative Slack (TPWS): 0.000 ns Number of Failing Endpoints: 0 Number of Failing Endpoints: 0 Number of Failing Endpoints: 0
Total Number of Endpoints: 2684 Total Number of Endpoints: 2684 Total Number of Endpoints: 1683 All user specified timing constraints are met.
Hình 5.12: Tổng hop Timing thiết kế tích hợp khối tính toán Floating Point
-_ Báo cáo tông hợp tài nguyên cho thiết kế được thể hiện trong hình 5.13
Summary
Power estimation from Synthesized netlist. Activity On-Chip Power
derived from constraints files, simulation files or
vectorless analysis. Note: these early estimates can {| Dynamic: 05B7W_ (70%)
change after implementation.
Clocks: 0.031W = (5%)
Total on-enip Power: ieee - | Signals: 0.101W (18%)
Design Power Budget: y W Logic: O.073W (13%)
Power Budget Margin: Zz; L1uo: 0.362W (64%)
Junction Temperature: 25.9°C
Thermal Margin: aap Oey) [ll Device Static 0248W_ (30%)
Effective SJA: 1.1°CW
Power supplied to off-chip devices: 0W
Confidence level: Low
Launch Power Constraint Advisor to find and fix
invalid switching activity
Hình 5.13: Tổng hop tài nguyên
54