仅对英特尔可见 — GUID: igx1538598002529
Ixiasoft
仅对英特尔可见 — GUID: igx1538598002529
Ixiasoft
1.5.2. PR文件管理
方法1 (首选):指定每个角色的唯一实体和文件名
为了说明这些方法,请考虑一个包含两个PR区域的设计,每个区域都有可能的apple、orange和banana角色。在PR文件管理方法1中,指定工程中每个角色的唯一实体和文件名对。例如:
- 在apple.sv文件中定义apple角色
- 在orange.sv文件中定义orange角色
- 在banana.sv文件中定义banana角色
在基本PR revision RTL中,对两个PR区域指定"apple"为PR角色:
通过将u_fruit_0和u_fruit_1设置为PR分区和区域,将基本角色设置为 [apple, apple]时,通过使用Design Partitions Window中的Entity Rebinding (ENTITY_REBINDING)选项或者直接编辑.qsf很容易对占用PR区域的角色进行更改,如下例所示:
对PR实现(impl)修订版指定orange角色:
set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_1
对PR实现(impl)修订版指定banana角色:
set_instance_assignment -name ENTITY_REBINDING banana -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING banana -to u_fruit_1
对每个PR区域指定不同的角色:
set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING banana -to u_fruit_1
对于每个实现修订版,必须确保在工程中包含相应的源文件(Project > Add/Remove Files in Project)。
方法2:将单个文件参数化为PR Persona
在PR文件管理方法2中,使用一个封装(wrapper)文件和参数来参数化定义所有角色的单个文件。例如,考虑方法1描述的相同设计,其中有两个PR区域,每个PR区域都有三个可能的角色。
在下列中,u_fruit_0和u_fruit_1设置为基本编译中的PR分区和区域。值为0的FRUIT_TYPE参数会生成这两个PR角色的apple实体。
然后,您可以通过更改参数值来更改角色。例如,对两个PR区域都指定orange角色,将FRUIT_TYPE参数设置为1: (FRUIT_TYPE=1)
除了对RTL的这些更改之外,在使用方法2更新.qsf时,还必须遵循以下这些额外步骤:
- 创建fruit.sv文件的一个副本。使用唯一的名称命名此文件,例如:x_fruit.sv。也要重命名实体以匹配.sv文件。
- 将FRUIT_TYPE的默认参数设置为一个Verilog macro,在这种情况下为`X_FRUIT_TYPE。
图 9. 另存为x_fruit.sv的fruit.sv的副本
- 将x_fruit.sv添加到工程中(Project > Add/Remove Files in Project)。
- 在Specify the following in the PR实现修订版的.qsf文件中指定以下设置:
- 添加下面的命令行,将`X_FRUIT_TYPE Verilog macro设置成1,对"fruit"指定适当的参数,例化正确的FRUIT_TYPE:
set_global_assignment -name VERILOG_MACRO "X_FRUIT_TYPE=1"
- 指定实体重新绑定assignment,将新的x_fruit实体与u_fruit_0和u_fruit_1实例相关联:
set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_1
这些.qsf变更将orange设置为这两个PR区域的新角色。
- 添加下面的命令行,将`X_FRUIT_TYPE Verilog macro设置成1,对"fruit"指定适当的参数,例化正确的FRUIT_TYPE:
- 方法2的一个缺点是.qsf文件中的设置的Verilog macro是全局的。因此,工程中的`X_FRUIT_TYPE的每个实例的默认值都为1。如果您希望两个PR角色都属于同一类型,那么此结果可能是合适的。然而,如果要在一个PR实现编译中对一个角色指定“orange”,对另一个角色指定“banana”,那么必须使用唯一名称和Verilog macro创建fruit.sv文件的另一个副本:
图 10. Copy of x_fruit.sv Saved as y_fruit.sv
- 在PR实现修订版的.qsf文件中指定以下设置:
- 添加下面的命令行,将`X_FRUIT_TYPE Verilog macro设置成1,对"fruit"指定适当的参数,例化正确的FRUIT_TYPE:
set_global_assignment -name VERILOG_MACRO "X_FRUIT_TYPE=1" set_global_assignment -name VERILOG_MACRO "Y_FRUIT_TYPE=2"
- 指定实体重新绑定assignment,将新的x_fruit实体与u_fruit_0的实例相关联,将新的y_fruit和u_fruit_1实例相关联:
set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_1
这些.qsf变更将orange指定为第一个PR区域的角色,将banana指定为第二个PR区域的角色。
- 添加下面的命令行,将`X_FRUIT_TYPE Verilog macro设置成1,对"fruit"指定适当的参数,例化正确的FRUIT_TYPE: