PyGears 只会在仿真需要或通过hdlgen() 函数直接指示生成 HDL 文件时(参见下面的示例)生成 HDL 文件。在您的情况下,您确实指定应使用 Verilator HDL 模拟器模拟 gain 模块,但您从未调用模拟器来执行。换句话说,您需要在脚本末尾调用sim() 函数,您应该像这样导入它:from pygears import sim
但是,当 PyGears 没有提供存储文件的文件夹时,它会自动在您的操作系统的临时文件夹中创建一个(/tmp 用于 Ubuntu)。为了生成脚本的本地文件,您应该通过sim() 函数的resdir 参数指定它:
from pygears import gear
from pygears.typing import Ufixp, Uint
from pygears.sim import sim
from pygears.lib import drv, collect
@gear
def gain(din: Uint[8], *, val) -> Uint[8]:
return din * Ufixp[0, 8](val)
res = []
drv_din = drv(t=Uint[8], seq=[3, 2, 5])
gain(drv_din, val=0.5, __sim__='verilator') \
| collect(result=res)
sim(resdir='./output')
另一方面,如果您只对 HDL 文件感兴趣,而不需要运行仿真,则可以直接调用 hdlgen()(在前面的示例中也称为幕后):
from pygears import gear, Intf
from pygears.typing import Ufixp, Uint
from pygears.hdl import hdlgen
@gear
def gain(din: Uint[8], *, val) -> Uint[8]:
return din * Ufixp[0, 8](val)
gain(Intf(Uint[8]), val=0.5)
hdlgen('/gain', outdir='./output')
请注意我是如何删除所有验证组件(drv()、collect() 等)的,因为我没有使用此脚本模拟任何内容。这只是为了提供一个最小的示例,hdlgen() 可以在所有验证组件都存在的第一个示例中被调用。