blocklyでverilog その5

# 概要
blocklyでverilog、やってみた。
練習問題、やってみた。

# 練習問題
7segmentLEDのデコーダーを書いて、iverilogで検証せよ。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/2cf673ac-0eef-c7ca-51ed-52e5c8681286.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/96f24782-fadc-4bc4-5400-bf6e90f63a8e.png)

# 生成したコード

```
module x (input [3:0] data, output [6:0] code);
reg [6:0] code;
wire [3:0] data;
always @ (data)
begin
  if (data == 0) 	begin
    code = (7'h7e);
   end  else 	begin
     if (data == 1) 	begin
      code = (6'h30);
     end  else 	begin
       if (data == 2) 	begin
        code = (7'h6b);
       end  else 	begin
         if (data == 3) 	begin
          code = (7'h79);
         end  else 	begin
           if (data == 4) 	begin
            code = (6'h33);
           end  else 	begin
             if (data == 5) 	begin
              code = (7'h5b);
             end  else 	begin
               if (data == 6) 	begin
                code = (7'h5f);
               end  else 	begin
                 if (data == 7) 	begin
                  code = (7'h72);
                 end  else 	begin
                   if (data == 8) 	begin
                    code = (7'h7f);
                   end  else 	begin
                     if (data == 9) 	begin
                      code = (7'h7b);
                     end  else 	begin
                      end
                   end
                 end
               end
             end
           end
         end
       end
     end
   end

end
endmodule


```

# テストベンチを書く。

```

module testbench;
    reg [3:0] data;
    wire [6:0] code;
    x u(.data(data), .code(code));
    initial
    begin
        $display(" data code");
        $monitor( "%h  %h", data, code);
        data = 4'h0; #10;
        data = 4'h1; #10;
        data = 4'h2; #10;
        data = 4'h3; #10;
        data = 4'h4; #10;
        data = 4'h5; #10;
        data = 4'h6; #10;
        data = 4'h7; #10;
        data = 4'h8; #10;
        data = 4'h9; #10;
        $finish;
    end
endmodule





```

# iverilogでコンパイル実行

```
>iverilog block3.v

>vvp a.out
 data code
0  7e
1  30
2  6b
3  79
4  33
5  5b
6  5f
7  72
8  7f
9  7b
block3.v:70: $finish called at 100 (1s)
```

# 生成したフローのxml

```
<xml xmlns="http://www.w3.org/1999/xhtml">
  <variables>
    <variable type="" id="US6mg:+!q~Nw!qA4u~S)">code</variable>
    <variable type="" id="3u#X/85:7dR8:}JhJkw~">data</variable>
  </variables>
  <block type="module_dec" id="4SExhY1)y(jwDTBa0Nj+" x="-167" y="36">
    <field name="modName">x</field>
    <field name="varNames">input data, input code</field>
    <next>
      <block type="reg_block" id="%%NZSxTnMV?80hd$I8S3">
        <field name="NAME">code</field>
        <value name="size">
          <block type="math_number" id="4%-cI7S*Y@7Wo^@w)hQ6">
            <field name="NUM">7</field>
          </block>
        </value>
        <next>
          <block type="wire_block" id="@M^qy`,A_Kt8!l88SLjC">
            <field name="NAME">data</field>
            <value name="size">
              <block type="math_number" id="3s+EQqGns=HTP7|?ID?V">
                <field name="NUM">4</field>
              </block>
            </value>
            <next>
              <block type="always_blk" id="X.%crG1aeb@/ku#rB(En">
                <value name="condition">
                  <block type="variables_get" id="9ye0;eqxhJ(yr`LZYRFp">
                    <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                  </block>
                </value>
                <statement name="body">
                  <block type="controls_ifelse" id="O_Ean88EKpn+2v|?fd0V">
                    <value name="IF0">
                      <block type="logic_compare" id="^n[2MWd,t`F~9d%_1/KB">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="variables_get" id="2x1~oBs/P0~-txb%*R7S">
                            <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="y4uQ[19|FU{}8w{E4U5(">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="variables_set" id="p;u#b8P$vjmye)kAhAT(">
                        <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                        <value name="VALUE">
                          <block type="decimal_hexa_return" id="O*tq=$hZj|jE01nQ0R%)">
                            <value name="number">
                              <block type="math_number" id="Xy2=:ys-0xPd//[+kh`I">
                                <field name="NUM">126</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="controls_ifelse" id="#,|h|b%%V7hkWHjUxAAZ">
                        <value name="IF0">
                          <block type="logic_compare" id="r(!|HoyOGN|#7?$9j{;M">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="variables_get" id="b52e1yYFdtZQ~!mmabXv">
                                <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_number" id="t?3g2CH[P.doDH]/,Qk*">
                                <field name="NUM">1</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="variables_set" id="*7#nDzQ+Ghf|I`:EYc7R">
                            <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                            <value name="VALUE">
                              <block type="decimal_hexa_return" id="?-:`KH]EHYp^GHOArBpL">
                                <value name="number">
                                  <block type="math_number" id=",S~fS]oumoK:5w:C4tNr">
                                    <field name="NUM">48</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                          </block>
                        </statement>
                        <statement name="ELSE">
                          <block type="controls_ifelse" id="}YEb(fm(5.B7E?h:m958">
                            <value name="IF0">
                              <block type="logic_compare" id="*GT*pkw7U:hz.wWge0$N">
                                <field name="OP">EQ</field>
                                <value name="A">
                                  <block type="variables_get" id=")-`GF[ggTRW*coG!C5-e">
                                    <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_number" id="9ReS06sc2SZs.-v{wL+u">
                                    <field name="NUM">2</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="variables_set" id="N,SOH)NB`4R9?$LDdf`^">
                                <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                <value name="VALUE">
                                  <block type="decimal_hexa_return" id="T|Q5f.k[:m8Y2+p8Ft2`">
                                    <value name="number">
                                      <block type="math_number" id="VZZ-[bp#t1$EK^7$xMS;">
                                        <field name="NUM">107</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </statement>
                            <statement name="ELSE">
                              <block type="controls_ifelse" id="R?veq;.,WSLljI#`t0L$">
                                <value name="IF0">
                                  <block type="logic_compare" id="$0Y%3m0.GM#Ho!`+[v0*">
                                    <field name="OP">EQ</field>
                                    <value name="A">
                                      <block type="variables_get" id="k@N1RFNwI`k-Kc3gHD`5">
                                        <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <block type="math_number" id="?(_}~GHY$vYndkem14*[">
                                        <field name="NUM">3</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="variables_set" id="J-,$UunS8G3t`-]i6q}k">
                                    <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                    <value name="VALUE">
                                      <block type="decimal_hexa_return" id="9zpD=k9-#JY+(h88d(-r">
                                        <value name="number">
                                          <block type="math_number" id="9|7H/CgX$02mf(uX4+9k">
                                            <field name="NUM">121</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                  </block>
                                </statement>
                                <statement name="ELSE">
                                  <block type="controls_ifelse" id="qR$~7)Le_J*GQE/ZK$db">
                                    <value name="IF0">
                                      <block type="logic_compare" id=":l9V`gP/4isYKUm`FX6/">
                                        <field name="OP">EQ</field>
                                        <value name="A">
                                          <block type="variables_get" id="/g(nh:]v*LE|lI!p+Y,S">
                                            <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <block type="math_number" id="t#[9(|=2hGoM-PT3zmqx">
                                            <field name="NUM">4</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="variables_set" id="DCNVo?OA(5eetz^N5F/_">
                                        <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                        <value name="VALUE">
                                          <block type="decimal_hexa_return" id="n*Gp#44rVOeP6{!-b#c3">
                                            <value name="number">
                                              <block type="math_number" id="UKM]BIbkB$%*Fik56s*g">
                                                <field name="NUM">51</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                      </block>
                                    </statement>
                                    <statement name="ELSE">
                                      <block type="controls_ifelse" id="Hf(lg[2oSe;ArnOxIKzT">
                                        <value name="IF0">
                                          <block type="logic_compare" id="!$Dgel)bS66+af1~MA0/">
                                            <field name="OP">EQ</field>
                                            <value name="A">
                                              <block type="variables_get" id="Q!xQc*q%)+19:5K4sDGG">
                                                <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="math_number" id="`GJj/j$i.+{H[K=$3}gZ">
                                                <field name="NUM">5</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="variables_set" id="i;$bjQk8Ltbx%a26);qR">
                                            <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                            <value name="VALUE">
                                              <block type="decimal_hexa_return" id="Gx$}h~(L^iEi^D}9?AZ$">
                                                <value name="number">
                                                  <block type="math_number" id="qFKjuCyljIc=@]pUYs8K">
                                                    <field name="NUM">91</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </statement>
                                        <statement name="ELSE">
                                          <block type="controls_ifelse" id="6EozhEPsz%cf.O]AYs#@">
                                            <value name="IF0">
                                              <block type="logic_compare" id="[Cv?:$z_q[ulNDMn2gqF">
                                                <field name="OP">EQ</field>
                                                <value name="A">
                                                  <block type="variables_get" id="0v/~pf)YljY.-d{3:7nG">
                                                    <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <block type="math_number" id="`D_@Bau8To,g]hv3||SH">
                                                    <field name="NUM">6</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="variables_set" id="r/c(}jK9]7ez%QVl%8X+">
                                                <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                                <value name="VALUE">
                                                  <block type="decimal_hexa_return" id="dHie_bV:8F{#}`QHcGnK">
                                                    <value name="number">
                                                      <block type="math_number" id="weebI[{m|Km:)b$#|cQE">
                                                        <field name="NUM">95</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                              </block>
                                            </statement>
                                            <statement name="ELSE">
                                              <block type="controls_ifelse" id="!+|=5v$o@9d-_lixiFms">
                                                <value name="IF0">
                                                  <block type="logic_compare" id="F1YK]r,%`MU(h}*Z!j7{">
                                                    <field name="OP">EQ</field>
                                                    <value name="A">
                                                      <block type="variables_get" id="Vua5JiL=9,915XQ1K)?/">
                                                        <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                                      </block>
                                                    </value>
                                                    <value name="B">
                                                      <block type="math_number" id="cu!H0=$5tNC323Cz~N(A">
                                                        <field name="NUM">7</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <statement name="DO0">
                                                  <block type="variables_set" id="9+$)~9_P1DsiPlBHVW%t">
                                                    <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                                    <value name="VALUE">
                                                      <block type="decimal_hexa_return" id="?z#(nK[[=?qR4=;e~m?5">
                                                        <value name="number">
                                                          <block type="math_number" id="}VHzqtpi9ExSPj?o6({U">
                                                            <field name="NUM">114</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </statement>
                                                <statement name="ELSE">
                                                  <block type="controls_ifelse" id="NIM2XxKMFNnW;V~PY%-B">
                                                    <value name="IF0">
                                                      <block type="logic_compare" id="R[/YAQgpkdfYo|!zG=,9">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="variables_get" id="!IRG?`QoXs5x@T*yjlOh">
                                                            <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="math_number" id="WpL2=]{RlKjlgakgt~m=">
                                                            <field name="NUM">8</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="variables_set" id="nFIA(VX/B6.oQN9978rh">
                                                        <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                                        <value name="VALUE">
                                                          <block type="decimal_hexa_return" id="phn`%fNH|;[#%i-F5po@">
                                                            <value name="number">
                                                              <block type="math_number" id="0SjTb8Y(3l_Nc1-qHREq">
                                                                <field name="NUM">127</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <statement name="ELSE">
                                                      <block type="controls_ifelse" id="6)|DBg!hCTKewug(Jatr">
                                                        <value name="IF0">
                                                          <block type="logic_compare" id="ve~^fxOIb;zf61E0g]K.">
                                                            <field name="OP">EQ</field>
                                                            <value name="A">
                                                              <block type="variables_get" id="ilR0(nr=xZ`pezGpBr5x">
                                                                <field name="VAR" id="3u#X/85:7dR8:}JhJkw~" variabletype="">data</field>
                                                              </block>
                                                            </value>
                                                            <value name="B">
                                                              <block type="math_number" id="{I_InkI4YTGT*5=*{Z13">
                                                                <field name="NUM">9</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <statement name="DO0">
                                                          <block type="variables_set" id="p.bul![|xlD^y7X2ad?Y">
                                                            <field name="VAR" id="US6mg:+!q~Nw!qA4u~S)" variabletype="">code</field>
                                                            <value name="VALUE">
                                                              <block type="decimal_hexa_return" id="uC;.8F{W:[eic!zU+Du+">
                                                                <value name="number">
                                                                  <block type="math_number" id="$%x*F!)+q(v^I%G.OVgB">
                                                                    <field name="NUM">123</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </statement>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </statement>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                          </block>
                        </statement>
                      </block>
                    </statement>
                  </block>
                </statement>
                <next>
                  <block type="end_module" id="ODsu=)XrOwDd2b~P;iY-"></block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>
```


以上。