verilogを書くことになりそうなので。

CPU作るぞ〜っていうことでverilogを読むことになりそうなので、書いてみた(は?w)

使用したツール群

チュートリアル

インストールは省略

/* AndNand.v */
module ANDNAND(a, b, o1, o2);

input a,b;
output o1,o2;

and AndInstance(o1, a, b);
assign o2 = ~(a&b);

endmodule

o1 にand、o2 にnand。 assignとプリミティブモジュール?を使ってみたパターン。 バス幅とかは軽くみただけだからまだ何も言えないかなぁ。

/ * AndNandTb.v */
module ANDNANDTB;

reg a, b;
wire o1, o2;

ANDNAND mod (a, b, o1, o2);

initial begin
    $dumpfile("andnandtb.vcd");
    $dumpvars(0, ANDNANDTB);
    $monitor("%t: a = %b, b = %b, o1 = %b, o2 = %b", $time, a, b, o1, o2);
        a = 0; b = 0;
    #10 a = 1;
    #10 a = 0; b = 1;
    #10 a = 1;
    #10 a = 0; b = 0;
    #10 $finish;
end
endmodule

コンパイルのコマンド

% iverilog -d AndNandTb -s ANDNANDTB AndNand.v AndNandTb.v

gtkwaveがうまく入っていれば、openでシミュレーションがみれる。f:id:b1u3:20190125235951p:plain

% open andnandtb.vcd