Generics 使用Lattice Synthesis Engine(LSE)时,如何将字符串作为通用参数传递给VHDL顶级实体?

Generics 使用Lattice Synthesis Engine(LSE)时,如何将字符串作为通用参数传递给VHDL顶级实体?,generics,vhdl,lattice-diamond,Generics,Vhdl,Lattice Diamond,我是莱迪思钻石的新手,但我对Xilinx ISE、Vivado和Quartus有经验:) 我发现,就像Xilinx ISE一样,Lattice Synthesis Engine(LSE)支持顶级实体的通用参数。(右键单击“impl1”->Properties=>HDL参数) 我用整数参数测试了它,它成功了:A_BITS=10;D_位=32 但是如何传递字符串参数呢 我的测试: A_位=10;D_位=32;FILENAME=ocram\u sdp.mem 这将导致未知文字值错误 错误-D:/git

我是莱迪思钻石的新手,但我对Xilinx ISE、Vivado和Quartus有经验:)

我发现,就像Xilinx ISE一样,Lattice Synthesis Engine(LSE)支持顶级实体的通用参数。(右键单击“impl1”->Properties=>HDL参数)

我用整数参数测试了它,它成功了:
A_BITS=10;D_位=32

但是如何传递字符串参数呢

我的测试:

  • A_位=10;D_位=32;FILENAME=ocram\u sdp.mem

    这将导致未知文字值错误

    错误-D:/git/PoC/src/mem/ocram/ocram_tdp.vhdl(82,3-82,11)(vhdl-1241)未声明ocram_sdp.mem
    错误-D:/git/PoC/src/mem/ocram/ocram_tdp.vhdl(82,3-82,11)(vhdl-1363)忽略通用文件名的未知实际通用文本值ocram_sdp.mem
    错误-D:/git/PoC/src/mem/ocram/ocram_tdp。vhdl(82,3-82,11)(vhdl-1081)正式文件名没有实际值或默认值
    信息-D:/git/PoC/src/mem/ocram/ocram_-tdp.vhdl(78,8-78,17)(vhdl-1067)阐述ocram_-tdp(rtl)
    信息-D:/git/PoC/src/mem/ocram/ocram_tdp。实体ocram_tdp的vhdl(78,8-78,17)(vhdl-1068)细化失败

    当我用
    \
    逃离圆点时也是一样的

  • A_位=10;D_位=32;FILENAME=“ocram\u sdp.mem”

    这将导致错误的参数数错误

    -sdc选项:未使用sdc文件输入。
    -lpf选项:输出文件选项已打开。
    错误-hdl_参数的参数数目错误。必须有对。
    完成:错误代码2

  • 仅设置
    A_位=10;通过HDL参数设置D_BITS=32
    ,并通过通用部分中的默认值设置
    文件名
    ,效果良好

  • 没有提及关键词“HDL”和/或“参数(eter)”

    • 如果可能,如何将字符串传递给顶级实体?
    • 是否有单独的LSE用户指南?

    第一个问题:如果将文件名直接嵌入代码中,Lattice是否支持它?(大概是在合成过程中从该文件初始化ROM)。如果不是,它就不必支持字符串作为泛型…如果我在泛型部分将文件名设置为默认值,那么就没有问题了。LSE可以读取文件并为我的ocram生成内存初始化矩阵。好的,很好。还有两个想法。。。(1) 字符串泛型和断言/报告的最简单测试用例。如果可以显示默认值有效,但覆盖无效。。。webcase,感觉像是一个工具错误。(2) 实际上,还有3点想法。。。覆盖是否在包装器VHDL文件中有效,但在命令行选项中无效?只是为了在网络上定位问题。(3)在某个时刻,放弃并解决。。。例如,从一个小的包而不是一个通用的导出字符串。如果它不起作用或者我找不到解决方法,我不会哭泣。。。这只是一个想法:)。最后一条错误消息指出需要一对,我有点困惑。它只是C++、爪哇、C或是我的语法错误的内部键值符号吗?我尝试了其他分隔符和其他逃生标志,但都不起作用,有些让钻石崩溃了。莱迪思LSE报告中报告的正确参数如下:
    -hdl_参数:name=A_位,value=10
    IEEE Std 1076-2008 14.2设计层次的细化第7段“一个实现可以允许,但不要求允许设计层次结构根的设计实体具有泛型和端口。如果一个实现允许这些顶级接口对象,它可能会限制它们允许的形式(即,它们是否允许是接口类型、子程序、包或对象),如果是接口对象,则以实现定义的方式限制它们允许的类型和模式。”(是,综合).没有什么理由支持字符串进行合成,这不是一个bug。