補足というか、このコードが何の処理をしている部分か説明

これはRISC-Vの機械語からどういう演算をすべきか決める回路のコード

RISC-Vの命令フォーマットはR-type、I-type,S-type, U-typeの4種類で、S-typeとU-typeは
即値のフォーマットにより、それぞれS-formatとSB-format、U-formatとUJ-formatに分けられる

32bitの命令instのうち最下位7bit(inst[6:0])がopcode
7bitだと命令数が足らなくなるので、U-type以外中央の3bit(inst[14:12])が追加のopcode(Funct3)
レジスタ間演算命令のR-typeでは最上位ビットから7bit分(inst[31:25])がさらに追加のopcode(Funct7)
I-typeは基本的に最上位ビットから12bit分(inst[31:20])は即値だけど、シフト命令は32bitの場合
5bitでシフト量の指定ができるから、余ったbitのinst[30]をopcodeとして使う命令がある

実際にRV32Iの範囲でFunct7のinst[30]を利用する命令は、R-typeの加算命令ADD(Funct3=000)に
対する減算命令SUB命令、論理右シフトSRL(Funct3=101)に対する算術右シフトSRA、I-typeの
即値論理右シフトSRLI(Funct3=101)に対する算術右シフトSRAI

このことを理解していれば、ALUに対して加算命令か減算命令かやシフト命令かそうでないかの
信号を送らないといけないわけで、alu_ctl[0]は加算か減算かの信号線で、alu_ctl[2]はシフト命令か
どうかの信号線って推測できるから、どちらもinst[30]がないと区別できないことがわかるはず

だとするとなんでinst[30]がいらないって発想になるんだろう?こちらがなんか勘違いしている?