PSL(VHDL) 中的可重用代码
目前我正在使用 PSL 编写断言(RTL 在 VHDL 中)。总共有 30 多个 IP 我想为所有模块重用同一个 psl 文件
vunit IP1_assert ip1_top() {
signal reg_1 :std_uloic_vector(15 downto 0);
reg_1 : <= signal ip_1.inst_1.inst_2.clk_reg : std_ulogic_vector(15 downto 0)>>;
}
vunit IP2_assert ip2_top() {
signal reg_1 :std_uloic_vector(15 downto 0);
reg_1 : <= signal ip_2.inst_1.inst_2.clk_reg : std_ulogic_vector(15 downto 0)>>;
}
如何将上面的文件更改为可重用的文件(即 2 个 Vunit 变为 1 个)。
换句话说,任何想法:
- 要将路径名 ip_1 和 ip_2 替换为通用路径名,
- 我们可以将实体名称作为参数传递给 PSL Vunit 吗?
Currently I'm writing assertions using PSL (RTL is in VHDL). Totally 30 + IPs are there I want to reuse the same psl file for all the modules
vunit IP1_assert ip1_top() {
signal reg_1 :std_uloic_vector(15 downto 0);
reg_1 : <= signal ip_1.inst_1.inst_2.clk_reg : std_ulogic_vector(15 downto 0)>>;
}
vunit IP2_assert ip2_top() {
signal reg_1 :std_uloic_vector(15 downto 0);
reg_1 : <= signal ip_2.inst_1.inst_2.clk_reg : std_ulogic_vector(15 downto 0)>>;
}
How to change the above one as reusable one (i.e 2 Vunits into one).
In other words any ideas:
- to replace the pathnames ip_1 and ip_2 as generic one,
- can we pass entity name as a parmeter to PSL Vunit?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
vunit 扩展了架构。例如,您的 vunit IP1_assert 扩展了实体 ip1_top() 的(未命名)架构。您可以使用 ip1_top() 更加具体并仅扩展特定的架构。因此您不能对所有模块使用相同的 PSL 文件。但是您可以创建一个包含 PSL 代码的新模块(带有实体和架构),并在所有 PSL 文件中实例化和连接该模块。因此,您的每个模块都会有单独的 PSL 文件,但您只有 1 个包含 PSL 代码的模块。您还可以尝试将 PSL 放入您在包中定义的函数中,然后从每个 PSL 文件中“使用”该包,但我从未尝试过这样做。
A vunit extends an architecture. For example your vunit IP1_assert extends the (not named) architecture of your entity ip1_top(). You can be even more specific and extend only a specific arcitecture by using ip1_top(). So you cannot use the same PSL file for all your modules. But you could create a new module (with entity and architecure) which contains your PSL code and instantiate and connect this module in all your PSL files. So you would have individual PSL-files for each of your modules, but you would have only 1 module which contains the PSL code. You also could try to put your PSL into a function which you define in a package and then "use" this package from each of your PSL files, but I never tried this.