Verilogはほとんど使用されていません。ここでは、MyHDLの簡単な紹介を示します。
このツールの目的は、PythonでVerilogコードを作成することです。もちろん、最初にPythonをインストールしてから、その拡張機能MYHDL(pip install myhdl)をインストールする必要があります。また、gtkWaveというツールも必要です。
公式ウェブサイトには多くの例があります。紹介するものを1つ選択してください。アドレスは、http://www.myhdl.org/docs/examples/flipflops.htmlです
。
簡単で簡単な紹介をしてください、他は同様の操作、ソースコードです(ファイル名はflip-flop_tb.pyです)
from myhdl import *
from random import randrange
def dff(q, d, clk):
@always(clk.posedge)
def logic():
q.next = d
return logic
def test_dff():
q, d, clk = [Signal(bool(0)) for i in range(3)]
dff_inst = dff(q, d, clk)
@always(delay(10))
def clkgen():
clk.next = not clk
@always(clk.negedge)
def stimulus():
d.next = randrange(2)
return dff_inst, clkgen, stimulus
def simulate(timesteps):
tb = traceSignals(test_dff)
sim = Simulation(tb)
sim.run(timesteps)
def convert():
q, d, clk = [Signal(bool(0)) for i in range(3)]
toVerilog(dff, q, d, clk)
simulate(2000)
convert()
簡単に言うと、simulateは、波形が正しいかどうかを確認するためのシミュレーションを実行することであり、実行時に
test_dff.vcdという名前の
波形ファイルがディレクトリに生成されます。
波形の表示は非常に簡単です。コマンドモードを使用する場合でも、グラフィカルインターフェイスを使用する場合でも、結果は同じです。使用したコマンドモードは次のとおりです。
gtkwave test_dff.vcd、
このとき、波形が開き、ズームアウトして調整すると、次のような結果が得られます。
Convertは、dffの定義をVerilogコードに変換することです。実行後、dff.vというファイルが生成されます。内容は次のとおりです。
// File: dff.v
// Generated by MyHDL 0.11
// Date: Tue Oct 13 14:52:37 2020
`timescale 1ns/10ps
module dff (
q,
d,
clk
);
output q;
reg q;
input d;
input clk;
always @(posedge clk) begin: DFF_LOGIC
q <= d;
end
endmodule