Quartus从VHDL源为每个实体设置优化选项

问题描述

我想为Quartus中的各个实体设置不同的综合设置。具体来说,我想更改Auto Resource Sharing选项。我设法使用工作分配编辑器为单个组件更改了此设置。这会将以下行添加到QSF:

set_instance_assignment -name AUTO_RESOURCE_SHARING OFF -to "adder:inst73"

虽然这将起作用,但是很难在项目中维护这些设置。我宁愿直接在组件的VHDL源中分配此设置。我尝试了以下属性,但似乎没有什么不同。

entity adder is
    -- ...
end entity;

architecture behavIoUr of adder is
    attribute altera_attribute : string;
    attribute altera_attribute of adder : entity is "-name AUTO_RESOURCE_SHARING OFF";
    attribute altera_attribute of behavIoUr : architecture is "-name AUTO_RESOURCE_SHARING OFF";
begin
    -- ...
end behavIoUr;

有人知道是否可以通过VHDL属性更改此设置吗?

解决方法

据此https://www.intel.com/content/www/us/en/programmable/quartushelp/17.0/hdl/vhdl/vhdl_file_dir_attribute.htm,这可能适用于实体,但不适用于体系结构:altera_attribute仅可以分配给实体,实例,端口和寄存器。

如果应用于任何其他对象,则忽略合成属性。

此: https://courses.cs.washington.edu/courses/cse467/08au/labs/Resources/Quartus%20II%20IntegratedSynthesis.pdf

明确显示了一个在体系结构上设置属性的示例,因此尽管上面的文档似乎另有说明,但据说可以支持该属性。

我的猜测是-尽管您在架构上设置了属性-但您必须明确声明要表示的实体实例:

attribute altera_attribute : string;
attribute altera_attribute of <architecture name>: architecture is "-name AUTO_RESOURCE_SHARING OFF -to ""<entity_name>:<instance_name>""";

当我这样分配属性时,它至少会被接受并列在“分析与综合->源分配”下