| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .definition | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | add =     [0000000..........000.....0110011] | 
					
						
							|  |  |  | addi =    [.................000.....0010011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | sub =     [0100000..........000.....0110011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | and =     [0000000..........111.....0110011] | 
					
						
							|  |  |  | andi =    [.................111.....0010011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | or   =    [0000000..........110.....0110011] | 
					
						
							|  |  |  | ori =     [.................110.....0010011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | xor =     [0000000..........100.....0110011] | 
					
						
							|  |  |  | xori =    [.................100.....0010011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | sll =     [0000000..........001.....0110011] | 
					
						
							|  |  |  | slli =    [0000000..........001.....0010011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | sra =     [0100000..........101.....0110011] | 
					
						
							|  |  |  | srai =    [0100000..........101.....0010011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | srl  =    [0000000..........101.....0110011] | 
					
						
							|  |  |  | srli =    [0000000..........101.....0010011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lui =     [.........................0110111] | 
					
						
							|  |  |  | auipc=    [.........................0010111] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | slt =     [0000000..........010.....0110011] | 
					
						
							|  |  |  | sltu =    [0000000..........011.....0110011] | 
					
						
							|  |  |  | slti =    [.................010.....0010011] | 
					
						
							|  |  |  | sltiu=    [.................011.....0010011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | beq =     [.................000.....1100011] | 
					
						
							|  |  |  | bne =     [.................001.....1100011] | 
					
						
							|  |  |  | bge =     [.................101.....1100011] | 
					
						
							|  |  |  | blt  =    [.................100.....1100011] | 
					
						
							|  |  |  | bgeu =    [.................111.....1100011] | 
					
						
							|  |  |  | bltu =    [.................110.....1100011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | jal =     [.........................1101111] | 
					
						
							|  |  |  | jalr =    [.................000.....1100111] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | lb =      [.................000.....0000011] | 
					
						
							|  |  |  | lh =      [.................001.....0000011] | 
					
						
							|  |  |  | lw =      [.................010.....0000011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | sb =      [.................000.....0100011] | 
					
						
							|  |  |  | sh =      [.................001.....0100011] | 
					
						
							|  |  |  | sw =      [.................010.....0100011] | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | lbu =     [.................100.....0000011] | 
					
						
							|  |  |  | lhu =     [.................101.....0000011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | fence =   [0000........00000000000000001111] | 
					
						
							|  |  |  | fence.i = [00000000000000000001000000001111] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ebreak  = [00000000000100000000000001110011] | 
					
						
							|  |  |  | ecall  =  [00000000000000000000000001110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | mret   =  [00110000001000000000000001110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | wfi    =  [00010000010100000000000001110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | csrrc_ro  =  [............00000011.....1110011] | 
					
						
							|  |  |  | csrrc_rw0 =  [............1....011.....1110011] | 
					
						
							|  |  |  | csrrc_rw1 =  [.............1...011.....1110011] | 
					
						
							|  |  |  | csrrc_rw2 =  [..............1..011.....1110011] | 
					
						
							|  |  |  | csrrc_rw3 =  [...............1.011.....1110011] | 
					
						
							|  |  |  | csrrc_rw4 =  [................1011.....1110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | csrrci_ro  = [............00000111.....1110011] | 
					
						
							|  |  |  | csrrci_rw0 = [............1....111.....1110011] | 
					
						
							|  |  |  | csrrci_rw1 = [.............1...111.....1110011] | 
					
						
							|  |  |  | csrrci_rw2 = [..............1..111.....1110011] | 
					
						
							|  |  |  | csrrci_rw3 = [...............1.111.....1110011] | 
					
						
							|  |  |  | csrrci_rw4 = [................1111.....1110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | csrrs_ro  =  [............00000010.....1110011] | 
					
						
							|  |  |  | csrrs_rw0 =  [............1....010.....1110011] | 
					
						
							|  |  |  | csrrs_rw1 =  [.............1...010.....1110011] | 
					
						
							|  |  |  | csrrs_rw2 =  [..............1..010.....1110011] | 
					
						
							|  |  |  | csrrs_rw3 =  [...............1.010.....1110011] | 
					
						
							|  |  |  | csrrs_rw4 =  [................1010.....1110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | csrrsi_ro  = [............00000110.....1110011] | 
					
						
							|  |  |  | csrrsi_rw0 = [............1....110.....1110011] | 
					
						
							|  |  |  | csrrsi_rw1 = [.............1...110.....1110011] | 
					
						
							|  |  |  | csrrsi_rw2 = [..............1..110.....1110011] | 
					
						
							|  |  |  | csrrsi_rw3 = [...............1.110.....1110011] | 
					
						
							|  |  |  | csrrsi_rw4 = [................1110.....1110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | csrw  =       [.................001000001110011] | 
					
						
							|  |  |  | csrrw0 =      [.................001....11110011] | 
					
						
							|  |  |  | csrrw1 =      [.................001...1.1110011] | 
					
						
							|  |  |  | csrrw2 =      [.................001..1..1110011] | 
					
						
							|  |  |  | csrrw3 =      [.................001.1...1110011] | 
					
						
							|  |  |  | csrrw4 =      [.................0011....1110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | csrwi   =     [.................101000001110011] | 
					
						
							|  |  |  | csrrwi0 =     [.................101....11110011] | 
					
						
							|  |  |  | csrrwi1 =     [.................101...1.1110011] | 
					
						
							|  |  |  | csrrwi2 =     [.................101..1..1110011] | 
					
						
							|  |  |  | csrrwi3 =     [.................101.1...1110011] | 
					
						
							|  |  |  | csrrwi4 =     [.................1011....1110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | mul =        [0000001..........000.....0110011] | 
					
						
							|  |  |  | mulh =       [0000001..........001.....0110011] | 
					
						
							|  |  |  | mulhsu =     [0000001..........010.....0110011] | 
					
						
							|  |  |  | mulhu =      [0000001..........011.....0110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | div =        [0000001..........100.....0110011] | 
					
						
							|  |  |  | divu =       [0000001..........101.....0110011] | 
					
						
							|  |  |  | rem =        [0000001..........110.....0110011] | 
					
						
							|  |  |  | remu =       [0000001..........111.....0110011] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | .input | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | rv32i = { | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  |         i[31] | 
					
						
							|  |  |  |         i[30] | 
					
						
							|  |  |  |         i[29] | 
					
						
							|  |  |  |         i[28] | 
					
						
							|  |  |  |         i[27] | 
					
						
							|  |  |  |         i[26] | 
					
						
							|  |  |  |         i[25] | 
					
						
							|  |  |  |         i[24] | 
					
						
							|  |  |  |         i[23] | 
					
						
							|  |  |  |         i[22] | 
					
						
							|  |  |  |         i[21] | 
					
						
							|  |  |  |         i[20] | 
					
						
							|  |  |  |         i[19] | 
					
						
							|  |  |  |         i[18] | 
					
						
							|  |  |  |         i[17] | 
					
						
							|  |  |  |         i[16] | 
					
						
							|  |  |  |         i[15] | 
					
						
							|  |  |  |         i[14] | 
					
						
							|  |  |  |         i[13] | 
					
						
							|  |  |  |         i[12] | 
					
						
							|  |  |  |         i[11] | 
					
						
							|  |  |  |         i[10] | 
					
						
							|  |  |  |         i[9] | 
					
						
							|  |  |  |         i[8] | 
					
						
							|  |  |  |         i[7] | 
					
						
							|  |  |  |         i[6] | 
					
						
							|  |  |  |         i[5] | 
					
						
							|  |  |  |         i[4] | 
					
						
							|  |  |  |         i[3] | 
					
						
							|  |  |  |         i[2] | 
					
						
							|  |  |  |         i[1] | 
					
						
							|  |  |  |         i[0] | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .output | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i = { | 
					
						
							|  |  |  |       alu | 
					
						
							|  |  |  |       rs1 | 
					
						
							|  |  |  |       rs2 | 
					
						
							|  |  |  |       imm12 | 
					
						
							|  |  |  |       rd | 
					
						
							|  |  |  |       shimm5 | 
					
						
							|  |  |  |       imm20 | 
					
						
							|  |  |  |       pc | 
					
						
							|  |  |  |       load | 
					
						
							|  |  |  |       store | 
					
						
							|  |  |  |       lsu | 
					
						
							|  |  |  |       add | 
					
						
							|  |  |  |       sub | 
					
						
							|  |  |  |       land | 
					
						
							|  |  |  |       lor | 
					
						
							|  |  |  |       lxor | 
					
						
							|  |  |  |       sll | 
					
						
							|  |  |  |       sra | 
					
						
							|  |  |  |       srl | 
					
						
							|  |  |  |       slt | 
					
						
							|  |  |  |       unsign | 
					
						
							|  |  |  |       condbr | 
					
						
							|  |  |  |       beq | 
					
						
							|  |  |  |       bne | 
					
						
							|  |  |  |       bge | 
					
						
							|  |  |  |       blt | 
					
						
							|  |  |  |       jal | 
					
						
							|  |  |  |       by | 
					
						
							|  |  |  |       half | 
					
						
							|  |  |  |       word | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  |       csr_read | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  |       csr_clr | 
					
						
							|  |  |  |       csr_set | 
					
						
							|  |  |  |       csr_write | 
					
						
							|  |  |  |       csr_imm | 
					
						
							|  |  |  |       presync | 
					
						
							|  |  |  |       postsync | 
					
						
							|  |  |  |       ebreak | 
					
						
							|  |  |  |       ecall | 
					
						
							|  |  |  |       mret | 
					
						
							|  |  |  |       mul | 
					
						
							|  |  |  |       rs1_sign | 
					
						
							|  |  |  |       rs2_sign | 
					
						
							|  |  |  |       low | 
					
						
							|  |  |  |       div | 
					
						
							|  |  |  |       rem | 
					
						
							|  |  |  |       fence | 
					
						
							|  |  |  |       fence_i | 
					
						
							|  |  |  |       pm_alu | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .decode | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[mul]    = { mul rs1 rs2 rd low } | 
					
						
							|  |  |  | rv32i[mulh]   = { mul rs1 rs2 rd rs1_sign rs2_sign } | 
					
						
							|  |  |  | rv32i[mulhu]  = { mul rs1 rs2 rd                   } | 
					
						
							|  |  |  | rv32i[mulhsu] = { mul rs1 rs2 rd rs1_sign          } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[div]    =  { div rs1 rs2 rd        presync postsync} | 
					
						
							|  |  |  | rv32i[divu]    = { div rs1 rs2 rd unsign presync postsync} | 
					
						
							|  |  |  | rv32i[rem]    =  { div rs1 rs2 rd        presync postsync rem} | 
					
						
							|  |  |  | rv32i[remu]    = { div rs1 rs2 rd unsign presync postsync rem} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[add]   = { alu rs1 rs2   rd add pm_alu } | 
					
						
							|  |  |  | rv32i[addi]  = { alu rs1 imm12 rd add pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[sub]  =  { alu rs1 rs2   rd sub pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[and]   = { alu rs1 rs2   rd land pm_alu } | 
					
						
							|  |  |  | rv32i[andi]  = { alu rs1 imm12 rd land pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[or]   =  { alu rs1 rs2   rd lor pm_alu } | 
					
						
							|  |  |  | rv32i[ori]  =  { alu rs1 imm12 rd lor pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[xor]  =  { alu rs1 rs2   rd lxor pm_alu } | 
					
						
							|  |  |  | rv32i[xori]  = { alu rs1 imm12 rd lxor pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[sll]  =  { alu rs1 rs2    rd sll pm_alu } | 
					
						
							|  |  |  | rv32i[slli]  = { alu rs1 shimm5 rd sll pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[sra]  =  { alu rs1 rs2    rd sra pm_alu } | 
					
						
							|  |  |  | rv32i[srai]  = { alu rs1 shimm5 rd sra pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[srl]  =  { alu rs1 rs2    rd srl pm_alu } | 
					
						
							|  |  |  | rv32i[srli]  = { alu rs1 shimm5 rd srl pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[lui]    =  { alu imm20    rd lor pm_alu } | 
					
						
							|  |  |  | rv32i[auipc]  =  { alu imm20 pc rd add pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[slt] =     { alu rs1 rs2    rd sub slt        pm_alu } | 
					
						
							|  |  |  | rv32i[sltu] =    { alu rs1 rs2    rd sub slt unsign pm_alu } | 
					
						
							|  |  |  | rv32i[slti] =    { alu rs1 imm12  rd sub slt        pm_alu } | 
					
						
							|  |  |  | rv32i[sltiu] =   { alu rs1 imm12  rd sub slt unsign pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[beq] =     { alu rs1 rs2 sub condbr beq } | 
					
						
							|  |  |  | rv32i[bne] =     { alu rs1 rs2 sub condbr bne } | 
					
						
							|  |  |  | rv32i[bge] =     { alu rs1 rs2 sub condbr bge } | 
					
						
							|  |  |  | rv32i[blt] =     { alu rs1 rs2 sub condbr blt } | 
					
						
							|  |  |  | rv32i[bgeu] =    { alu rs1 rs2 sub condbr bge unsign } | 
					
						
							|  |  |  | rv32i[bltu] =    { alu rs1 rs2 sub condbr blt unsign } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[jal] =     { alu imm20 rd pc    jal } | 
					
						
							|  |  |  | rv32i[jalr] =    { alu rs1   rd imm12 jal } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[lb] =      { lsu load rs1 rd by    } | 
					
						
							|  |  |  | rv32i[lh] =      { lsu load rs1 rd half  } | 
					
						
							|  |  |  | rv32i[lw] =      { lsu load rs1 rd word  } | 
					
						
							|  |  |  | rv32i[lbu] =     { lsu load rs1 rd by   unsign  } | 
					
						
							|  |  |  | rv32i[lhu] =     { lsu load rs1 rd half unsign  } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[sb] =      { lsu store rs1 rs2 by   } | 
					
						
							|  |  |  | rv32i[sh] =      { lsu store rs1 rs2 half } | 
					
						
							|  |  |  | rv32i[sw] =      { lsu store rs1 rs2 word } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[fence] =   { alu lor fence presync} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # fence.i has fence effect in addtion to flush I$ and redirect | 
					
						
							|  |  |  | rv32i[fence.i] = { alu lor fence fence_i presync postsync} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # nops for now | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[ebreak] = {  alu rs1 imm12 rd lor ebreak postsync} | 
					
						
							|  |  |  | rv32i[ecall] =  {  alu rs1 imm12 rd lor ecall  postsync} | 
					
						
							|  |  |  | rv32i[mret] =   {  alu rs1 imm12 rd lor mret   postsync} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[wfi] =    {  alu rs1 imm12 rd lor pm_alu } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # csr means read | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # csr_read - put csr on rs2 and rs1 0's | 
					
						
							|  |  |  | rv32i[csrrc_ro] =        { alu rd csr_read lor } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # put csr on rs2 and make rs1 0's into alu.  Save rs1 for csr_clr later | 
					
						
							|  |  |  | rv32i[csrrc_rw{0-4}] =   { alu rd csr_read rs1 csr_clr            lor presync postsync } | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrci_ro] =       { alu rd csr_read lor } | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrci_rw{0-4}] =  { alu rd csr_read rs1 csr_clr   csr_imm  lor presync postsync } | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrs_ro] =        { alu rd csr_read lor } | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrs_rw{0-4}] =   { alu rd csr_read rs1 csr_set            lor presync postsync } | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrsi_ro] =       { alu rd csr_read lor } | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrsi_rw{0-4}] =  { alu rd csr_read rs1 csr_set   csr_imm lor presync postsync } | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrw{0-4}] =     { alu rd csr_read rs1 csr_write         lor presync postsync } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-20 10:25:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 22:57:48 +08:00
										 |  |  | rv32i[csrrwi{0-4}] =         { alu rd csr_read rs1 csr_write csr_imm lor presync postsync } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # optimize csr write only - pipelined | 
					
						
							|  |  |  | rv32i[csrw] =                { alu rd rs1 csr_write           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rv32i[csrwi]       =         { alu rd     csr_write csr_imm   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .end | 
					
						
							|  |  |  | 
 |