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

);