PyGears hdlgen生成具有DTI接口的顶级模块,Vivado期望Verilog不支持此功能

问题描述

我让我的模块看起来像这样

__mro__

现在,我的顶级模块接口是DTI接口

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')

既然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

);