PyGears 不生成输出 HDL 文件
PyGears is not generating output HDL files
这是我 运行 的代码,它不会生成输出 HDL 文件:
from pygears import gear
from pygears.typing import Ufixp, Uint
from pygears.sim import call
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)
PyGears 仅在仿真需要时或通过 hdlgen()
函数直接指示这样做时才会生成 HDL 文件(参见下面的示例)。在您的情况下,您确实指定了 gain
模块应该使用 Verilator HDL 模拟器进行模拟,但您从未调用模拟器来执行。换句话说,您需要在脚本末尾调用 sim()
函数,您应该像这样导入:from pygears import sim
但是,当 PyGears 没有指定用于存储文件的文件夹时,它会自动在 OS 的临时文件夹中创建一个(Ubuntu 为 /tmp
)。为了生成脚本的本地文件,您应该通过 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()
可以在第一个示例中调用,所有验证组件都存在。
这是我 运行 的代码,它不会生成输出 HDL 文件:
from pygears import gear
from pygears.typing import Ufixp, Uint
from pygears.sim import call
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)
PyGears 仅在仿真需要时或通过 hdlgen()
函数直接指示这样做时才会生成 HDL 文件(参见下面的示例)。在您的情况下,您确实指定了 gain
模块应该使用 Verilator HDL 模拟器进行模拟,但您从未调用模拟器来执行。换句话说,您需要在脚本末尾调用 sim()
函数,您应该像这样导入:from pygears import sim
但是,当 PyGears 没有指定用于存储文件的文件夹时,它会自动在 OS 的临时文件夹中创建一个(Ubuntu 为 /tmp
)。为了生成脚本的本地文件,您应该通过 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()
可以在第一个示例中调用,所有验证组件都存在。