PyGears hdlgen 生成带有 DTI 接口的顶级模块,Vivado 期望 Verilog 不支持此功能
PyGears hdlgen generates top level module with DTI interfaces, Vivado is expecting Verilog which does not support this feature
我让我的模块看起来像这样
from pygears import gear
from pygears.typing import Fixp, Tuple
from pygears.lib import add, qround, saturate, drv, collect
from pygears.sim import sim
from pygears.hdl import hdlgen
@gear
def adder(data: Tuple[Fixp[10, 32], Fixp[10, 32]]):
return add(data[0],data[1]) \
| qround (fract=21) \
| saturate(t=Fixp[11, 32])
hdlgen('/adder',outdir='./Example1/adder_hdl',copy_files='True')
现在,我的顶层模块接口是DTI接口
module adder(
input logic clk,
input logic rst,
dti.consumer data, // (q10.22, q10.22) (64)
dti.producer dout // q11.21 (32)
);
由于 Vivado 期望顶级包装器在 Verilog 中,有什么方法可以告诉 PyGears 将顶级接口转换为标准端口?
是的,有办法。
对 hdlgen 函数使用参数 toplang,对 Verilog 将其设置为 'v'。
像这样
hdlgen('/adder',outdir='./Example1/adder_hdl',copy_files='True',toplang='v')
这将生成名为 adder_v_wrap 的顶级 wrepper,接口将具有 Verilog 端口
module adder_v_wrap
(
input clk,
input rst,
output reg data_ready,
input wire data_valid,
input wire [63:0] data_data,
input wire dout_ready,
output reg dout_valid,
output wire [31:0] dout_data
);
我让我的模块看起来像这样
from pygears import gear
from pygears.typing import Fixp, Tuple
from pygears.lib import add, qround, saturate, drv, collect
from pygears.sim import sim
from pygears.hdl import hdlgen
@gear
def adder(data: Tuple[Fixp[10, 32], Fixp[10, 32]]):
return add(data[0],data[1]) \
| qround (fract=21) \
| saturate(t=Fixp[11, 32])
hdlgen('/adder',outdir='./Example1/adder_hdl',copy_files='True')
现在,我的顶层模块接口是DTI接口
module adder(
input logic clk,
input logic rst,
dti.consumer data, // (q10.22, q10.22) (64)
dti.producer dout // q11.21 (32)
);
由于 Vivado 期望顶级包装器在 Verilog 中,有什么方法可以告诉 PyGears 将顶级接口转换为标准端口?
是的,有办法。
对 hdlgen 函数使用参数 toplang,对 Verilog 将其设置为 'v'。 像这样
hdlgen('/adder',outdir='./Example1/adder_hdl',copy_files='True',toplang='v')
这将生成名为 adder_v_wrap 的顶级 wrepper,接口将具有 Verilog 端口
module adder_v_wrap
(
input clk,
input rst,
output reg data_ready,
input wire data_valid,
input wire [63:0] data_data,
input wire dout_ready,
output reg dout_valid,
output wire [31:0] dout_data
);