【问题标题】:PyGears is not generating output HDL filesPyGears 不生成输出 HDL 文件
【发布时间】:2020-07-23 19:38:24
【问题描述】:

这是我运行的代码,它不会生成输出 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)

【问题讨论】:

    标签: python linux ubuntu windows-subsystem-for-linux pygears


    【解决方案1】:

    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() 可以在所有验证组件都存在的第一个示例中被调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多